Age | Commit message (Collapse) | Author | Files | Lines |
|
grep must work, not matter the line length.
Signed-off-by: Oliver Neukum <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
This patch remove the function klsi_105_tiocmset which was only
returning -EINVAL. It also removes the function prototype and
the .tiocmset entry in the struct usb_serial_driver.
Verified by compilation only.
Signed-off-by: Peter Senna Tschudin <[email protected]>
Signed-off-by: Johan Hovold <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
Resuming a powered down port sometimes results in the port state being
stuck in the training sequence.
hub 3-0:1.0: debounce: port 1: total 2000ms stable 0ms status 0x2e0
port1: can't get reconnection after setting port power on, status -110
hub 3-0:1.0: port 1 status 0000.02e0 after resume, -19
usb 3-1: can't resume, status -19
hub 3-0:1.0: logical disconnect on port 1
In the case above we wait for the port re-connect timeout of 2 seconds
and observe that the port status is USB_SS_PORT_LS_POLLING (although it
is likely toggling between this state and USB_SS_PORT_LS_RX_DETECT).
This is indicative of a case where the device is failing to progress the
link training state machine.
It is resolved by issuing a warm reset to get the hub and device link
state machines back in sync.
hub 3-0:1.0: debounce: port 1: total 2000ms stable 0ms status 0x2e0
usb usb3: port1 usb_port_runtime_resume requires warm reset
hub 3-0:1.0: port 1 not warm reset yet, waiting 50ms
usb 3-1: reset SuperSpeed USB device number 2 using xhci_hcd
After a reconnect timeout when we expect the device to be present, force
a warm reset of the device. Note that we can not simply look at the
link status to determine if a warm reset is required as any of the
training states USB_SS_PORT_LS_POLLING, USB_SS_PORT_LS_RX_DETECT, or
USB_SS_PORT_LS_COMP_MOD are valid states that do not indicate the need
for warm reset by themselves.
Cc: Alan Stern <[email protected]>
Cc: Kukjin Kim <[email protected]>
Cc: Vincent Palatin <[email protected]>
Cc: Lan Tianyu <[email protected]>
Cc: Ksenia Ragiadakou <[email protected]>
Cc: Vivek Gautam <[email protected]>
Cc: Douglas Anderson <[email protected]>
Cc: Felipe Balbi <[email protected]>
Cc: Sunil Joshi <[email protected]>
Cc: Hans de Goede <[email protected]>
Acked-by: Julius Werner <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
Acked-by: Alan Stern <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
When a USB device is disconnected, usb_unbind_interface is called, which
tries to enable and disable LPM. usb_enable_lpm also try to send a
control command SET SEL to the device.
Since device is already disconnected, therefore it does not make sense
to execute usb_(en/dis)able_lpm.
This patch returns from usb_(en/dis)able_lpm, if device was not in
default state atleast.
Signed-off-by: Pratyush Anand <[email protected]>
Tested-by: Aymen Bouattay <[email protected]>
Signed-off-by: Mathias Nyman <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
All dwc3 based xhci host controller supports USB3.0 LPM functionality.
Therefore enable it in platform data for all dwc3 based xhci device if
DWC3_HOST_USB3_LPM_ENABLE is selected in Kconfig.
Signed-off-by: Pratyush Anand <[email protected]>
Signed-off-by: Mathias Nyman <[email protected]>
Signed-of-by: Felipe Balbi <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
If an xhci platform supports USB3 LPM capability then enable
XHCI_LPM_SUPPORT quirk flag.
Signed-off-by: Pratyush Anand <[email protected]>
Signed-off-by: Mathias Nyman <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
To use auto U0-U1/U2 transition by xhci platform device add
(en/dis)able_usb3_lpm_timeout function to the xhci_plat_xhci_driver struct.
Signed-off-by: Pratyush Anand <[email protected]>
Tested-by: Aymen Bouattay <[email protected]>
Signed-off-by: Mathias Nyman <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
As best case, a host controller should support U0 to U1 switching for
the devices connected below any tier of hub level supported by usb
specification. Therefore xhci_check_tier_policy should always return
success as default implementation.
A host should be able to issue LGO_Ux after the timeout calculated as
per definition of system exit latency defined in C.1.5.2. Therefore
xhci_calculate_ux_timeout returns ux_params.sel as the default
implementation.
Use default calculation in absence of any vendor specific limitations.
Signed-off-by: Pratyush Anand <[email protected]>
Tested-by: Aymen Bouattay <[email protected]>
Signed-off-by: Mathias Nyman <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
'err' is uninitialized, rather print the error code directly.
This also fixes following warning.
drivers/usb/misc/usb3503.c: In function ‘usb3503_probe’:
drivers/usb/misc/usb3503.c:195:11: warning: ‘err’ may be used uninitialized
in this function [-Wmaybe-uninitialized]
dev_err(dev, "unable to request refclk (%d)\n", err);
Signed-off-by: Tushar Behera <[email protected]>
Acked-by: Marek Szyprowski <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
We want the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
This patch remove the function klsi_105_tiocmset which was only
returning -EINVAL. It also removes the function prototype and
the .tiocmset entry in the struct usb_serial_driver.
Verified by compilation only.
Signed-off-by: Peter Senna Tschudin <[email protected]>
Signed-off-by: Johan Hovold <[email protected]>
|
|
Add ID of the Telewell 4G v2 hardware to option driver to get legacy
serial interface working
Signed-off-by: Bernd Wachter <[email protected]>
Cc: <[email protected]>
Signed-off-by: Johan Hovold <[email protected]>
|
|
Corsair USB Dongles are shipped with Corsair AXi series PSUs.
These are cp210x serial usb devices, so make driver detect these.
I have a program, that can get information from these PSUs.
Tested with 2 different dongles shipped with Corsair AX860i and
AX1200i units.
Signed-off-by: Andras Kovacs <[email protected]>
Cc: <[email protected]>
Signed-off-by: Johan Hovold <[email protected]>
|
|
Cc: Johan Hovold <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: [email protected]
Signed-off-by: Fabian Frederick <[email protected]>
Signed-off-by: Johan Hovold <[email protected]>
|
|
Remove redundant mtxorb quirk used to fix up incorrect wMaxPacketSize,
which was added before 895f28badce9 ("USB: ftdi_sio: fix hi-speed device
packet size calculation") which does the same thing for all devices.
Signed-off-by: Johan Hovold <[email protected]>
|
|
Code and comment style clean ups of ftdi_set_max_packet_size().
Signed-off-by: Johan Hovold <[email protected]>
|
|
Promote max-packet-size-override message to warning level and use the
port device for logging, while using actual endpoint numbers in the
message itself.
Signed-off-by: Johan Hovold <[email protected]>
|
|
There's no need to print the number of endpoints per interface or
endpoint wMaxPacketSize during port probe. This information is readily
available using lsusb should it ever be needed.
Note that this also fixes the wMaxPacketSize being incorrectly reported
on big-endian systems due to a missing le16_to_cpu().
Signed-off-by: Johan Hovold <[email protected]>
|
|
We need to delete un-finished td from current request's td list
at ep_dequeue API, otherwise, this non-user td will be remained
at td list before this request is freed. So if we do ep_queue->
ep_dequeue->ep_queue sequence, when the complete interrupt for
the second ep_queue comes, we search td list for this request,
the first td (added by the first ep_queue) will be handled, and
its status is still active, so we will consider the this transfer
still not be completed, but in fact, it has completed. It causes
the peripheral side considers it never receives current data for
this transfer.
We met this problem when do "Error Recovery Test - Device Configured"
test item for USBCV2 MSC test, the host has never received ACK for
the IN token for CSW due to peripheral considers it does not get this
CBW, the USBCV test log like belows:
--------------------------------------------------------------------------
INFO
Issuing BOT MSC Reset, reset should always succeed
INFO
Retrieving status on CBW endpoint
INFO
CBW endpoint status = 0x0
INFO
Retrieving status on CSW endpoint
INFO
CSW endpoint status = 0x0
INFO
Issuing required command (Test Unit Ready) to verify device has recovered
INFO
Issuing CBW (attempt #1):
INFO
|----- CBW LUN = 0x0
INFO
|----- CBW Flags = 0x0
INFO
|----- CBW Data Transfer Length = 0x0
INFO
|----- CBW CDB Length = 0x6
INFO
|----- CBW CDB-00 = 0x0
INFO
|----- CBW CDB-01 = 0x0
INFO
|----- CBW CDB-02 = 0x0
INFO
|----- CBW CDB-03 = 0x0
INFO
|----- CBW CDB-04 = 0x0
INFO
|----- CBW CDB-05 = 0x0
INFO
Issuing CSW : try 1
INFO
CSW Bulk Request timed out!
ERROR
Failed CSW phase : should have been success or stall
FAIL
(5.3.4) The CSW status value must be 0x00, 0x01, or 0x02.
ERROR
BOTCommonMSCRequest failed: error=80004000
Cc: Andrzej Pietrasiewicz <[email protected]>
Cc: [email protected]
Signed-off-by: Peter Chen <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
This patch makes the msm ehci driver available to use on QCOM SOCs,
which have the same IP.
Signed-off-by: Srinivas Kandagatla <[email protected]>
Acked-by: Felipe Balbi <[email protected]>
Acked-by: Alan Stern <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
Some buggy JMicron USB-ATA bridges don't know how to translate the FUA
bit in READs or WRITEs. This patch adds an entry in unusual_devs.h
and a blacklist flag to tell the sd driver not to use FUA.
Signed-off-by: Alan Stern <[email protected]>
Reported-by: Michael Büsch <[email protected]>
Tested-by: Michael Büsch <[email protected]>
Acked-by: James Bottomley <[email protected]>
CC: Matthew Dharm <[email protected]>
CC: <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus
Felipe writes:
usb: fixes for v3.16-rc4
A few more fixes for this RC cycle. There's a revert of a previous patch
which ended up being the wrong version, so we reverted that commit and
applied a better fix.
CPPI41 got a race condition fix which was found by Thomas Gleixner.
The MSM PHY driver got a runtime pm usage fix so that it wouldn't
kill the PHY while it was still being used.
We also have a fix for a panic caused when removing musb_am335x driver.
Other than that, a few other minor fixes.
Signed-of-by: Felipe Balbi <[email protected]>
|
|
Use clk_prepare_enable/clk_disable_unprepare to make the driver
work properly with common clock framework.
Signed-off-by: Vasily Khoruzhick <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
The musb/cppi41 code installs a hrtimer to work around DMA completion
interrupts that have fired too early on AM335x hardware. This timer
is currently programmed to first fire 140 microseconds after the DMA
completion callback. According to the commit which introduced it
(a655f481d83, "usb: musb: musb_cppi41: handle pre-mature TX complete
interrupt"), that value is is considered a 'rule of thumb' that worked
well with the test case described in the commit log.
Test show, however, that for USB audio devices and much smaller packet
sizes, the timer has to fire earlier in order to correctly handle the audio
stream. The original test case had output transfer sizes of 1514 bytes, and
a delay of 140 microseconds. For audio devices with 24 bytes channel size, 3
microseconds seem to work well.
Hence, let's assume that the time it takes to clear the bit correlates with
the number of bytes transferred. The referenced commit log mentions such a
suspicion as well. Let the timer fire in cppi41_channel->total_len/10
microseconds to correctly handle both cases.
Also, shorten the interval in which the timer fires again in case of
a non-empty early_tx list.
With these changes in place, both FS and HS audio devices appear to work
well on AM335x hardware.
Signed-off-by: Daniel Mack <[email protected]>
Reported-by: Sebastian Reimers <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
hrtimer."
This reverts commit 1af54b7a4.
The commit tried to address cases in which isochronous transfers are 'not
reliable', most probably in the tests conducted, polling for the
MUSB_TXCSR_TXPKTRDY bit in MUSB_TXCSR is done too late.
Hence, it installs a work struct which basically busy-polls for the bit in a
rather agressive way by rescheduling the work if the FIFO is not empty. With
USB audio devices, tests have shown that it takes approximately 100
iterations of the asynchronous worker until the FIFO signals completion,
which leads to 100% CPU loads when streaming audio.
The issue the patch tried to address can be handled differently, which is
what the next patch does.
Signed-off-by: Daniel Mack <[email protected]>
Reported-by: Sebastian Reimers <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Just a cosmetic cleanup with no functional change.
Signed-off-by: Daniel Mack <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Before accessing any of an endpoint's CSR registers, make sure the
correct endpoint is selected. Otherwise, data read from or written to
the registers is likely to affect the wrong endpoint as long as the
connected device has more than one endpoint.
This, of course, leads to all sorts of strange effects such as stream
starvation and driver internal state machine confusion due to spurious
interrupts.
Signed-off-by: Daniel Mack <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
The musb/cppi41 glue layer is capable of handling transactions that span
over more than one USB packet by reloading the DMA descriptors
partially. An urb is considered completed when either its transfer
buffer has been filled entirely (actual_length ==
transfer_buffer_length) or if a packet in the stream has less bytes than
the endpoint's wMaxPacketSize.
Once one of the above conditions is met, musb_dma_completion() is called
from cppi41_trans_done(). However, the final decision whether or not to
return the urb to its owner is made by the core and its determination of
the variable 'done' in musb_host_rx(). This code has currently no way of
knowing what the size of the last packet was, and whether or not to
give back the urb due to a short read.
Fix this by introducing a new boolean flag in 'struct dma_channel', and
set it from musb_cppi41.c. If set, it will make the core do what the
DMA layer decided and complete the urb.
Signed-off-by: Daniel Mack <[email protected]>
Acked-by: George Cherian <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
The datasheet says that MUSB_TXCSR_FLUSHFIFO is only valid when
MUSB_TXCSR_TXPKTRDY is set as well.
With this patch applied, the warning in this function does no longer
kick in when an USB soundcard is unplugged while the stream is active.
Signed-off-by: Daniel Mack <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
On AM33xx platforms, unplugging a device in the middle of an active
transfer leads to a drop of MUSB_DEVCTL_HM in MUSB_DEVCTL before the
system is informed about a disconnect. This consequently makes the musb
core call the gadget code to handle the interrupt request, which then
crashes the kernel because the relevant pointers haven't been set up
for gadget mode.
To fix this, use is_host_active() rather than (devctl & MUSB_DEVCTL_HM)
in musb_interrupt() and musb_dma_completion() to detect whether the
controller is in host or peripheral mode. This information is provided
by the driver logic and does not rely on register contents.
Signed-off-by: Daniel Mack <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Just a little cleanup that removes unnecessary casts.
Signed-off-by: Daniel Mack <[email protected]>
Acked-by: George Cherian <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
commit 943c13971c08 "usb: musb: dsps: implement ->set_mode()"
should have made it possible to use the driver with boards that have
the USBID pin unconnected. This doesn't actually work, since the
driver uses the wrong base address to access the mode register.
Furthermore it uses different base addresses in different places to
access the same register (phy_utmi).
Signed-off-by: Lothar Waßmann <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
found.
Syscall mount returns -ENODEV error if requested FS type
has not been found. Returning the same error from FFS mount
callback makes value returned to userspace misleading.
Other file systems returns -ENOENT if requested device
has not been found. Adjust FFS to this convention to make
error codes meaningfull.
Acked-by: Michal Nazarewicz <[email protected]>
Signed-off-by: Krzysztof Opasiak <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
It has already been covered by udc core
Signed-off-by: Peter Chen <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
It has already been covered by udc core, besides, we do not
need unbind at .udc_start
Signed-off-by: Peter Chen <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
It has already been covered by udc core
Signed-off-by: Peter Chen <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
It has already been covered by udc core
Signed-off-by: Peter Chen <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
It has already been covered by udc core
Signed-off-by: Peter Chen <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Use case is when the phy is configured in host mode and a usb device is
attached to board before bootup. On bootup, with the existing code and
runtime pm enabled, the driver would decrement the pm usage count
without checking the current state of the phy. This pm usage count
decrement would trigger the runtime pm which than would abort the
usb enumeration which was in progress. In my case a usb stick gets
detected and then immediatly the driver goes to low power mode which is
not correct.
log:
[ 1.631412] msm_hsusb_host 12520000.usb: EHCI Host Controller
[ 1.636556] msm_hsusb_host 12520000.usb: new USB bus registered, assigned bus number 1
[ 1.642563] msm_hsusb_host 12520000.usb: irq 220, io mem 0x12520000
[ 1.658197] msm_hsusb_host 12520000.usb: USB 2.0 started, EHCI 1.00
[ 1.659473] hub 1-0:1.0: USB hub found
[ 1.663415] hub 1-0:1.0: 1 port detected
...
[ 1.973352] usb 1-1: new high-speed USB device number 2 using msm_hsusb_host
[ 2.107707] usb-storage 1-1:1.0: USB Mass Storage device detected
[ 2.108993] scsi0 : usb-storage 1-1:1.0
[ 2.678341] msm_otg 12520000.phy: USB in low power mode
[ 3.168977] usb 1-1: USB disconnect, device number 2
This issue was detected on IFC6410 board.
This patch fixes the intial runtime pm trigger by checking the phy
state and decrementing the pm use count only when the phy state is IDLE.
Signed-off-by: Srinivas Kandagatla <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
This patch makes the phy reset clk and reset line optional as this clk
is not available on boards like IFC6410 with APQ8064.
Signed-off-by: Srinivas Kandagatla <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Add clock prepare and unprepare as required by clock framework.
Signed-off-by: Robert Jarzmik <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Use of quirks improve readability and will be easier to add new devices
to this driver.
Suggested-by: Alan Stern <[email protected]>
Signed-off-by: Ricardo Ribalda Delgado <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Driver was using custom functions WARNING, ERROR, DEBUG, instead of
pr_err, pr_dgb...
New ep_* macros have been created that use standard pr_* functions.
Signed-off-by: Ricardo Ribalda Delgado <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
- Move logical continuations to end of line
- Improve spacing
Signed-off-by: Ricardo Ribalda Delgado <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Fix Code Style using checkpatch.pl criteria
Signed-off-by: Ricardo Ribalda Delgado <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Replace a long and ugly expresion with an already available function.
Signed-off-by: Ricardo Ribalda Delgado <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Signed-off-by: Ricardo Ribalda Delgado <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
For bool variables
Signed-off-by: Ricardo Ribalda Delgado <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Improves readability of the code
Signed-off-by: Ricardo Ribalda Delgado <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|
|
Instead of using magic numbers use #defines
Signed-off-by: Ricardo Ribalda Delgado <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
|