'Commit c9cabb7ee02bcb0c ("usb: xhci: clean up command queue when
halting"); fixes deadlock condition when some commands are pending
at the time of usb_remove_hcd() or when controller is halted.
That change cleans up command queue if halting of controller is
successful. But, this deadlock may still be seen in case if due
to some reason halting of controller fails. To handle that scenario
as well cleanup command queue irrespective of controller halt
succeeds or fails.
Change-Id: I2c88fca3614af7fe58bc858898449d47546da247
Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
Add additional verbiage to the info logs to help
determine the type of source cable connected: default,
medium or high current. Similarly, if a sink is attached,
indicate whether it is with a powered cable or not.
Change-Id: I0687365827cdbb8a1b7168a2b676b1afd2f576f6
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Fix the bug introduced by commit 82d4ec9778
("usb: Add support for reset controller framework") which
overrides the core clock rate from device tree.
Change-Id: Ic3ef2229fa8552301e09dfb912e79e044a81324f
Signed-off-by: Vamsi Krishna Samavedam <vskrishn@codeaurora.org>
Driver sets the speed using extcon cable state flag. This
allows to start host or peripheral in selected speed.
By default start peripheral in super speed mode. However,
starting host in super speed consumes more power so to
achieve lower consumption default it to high speed only.
Add module params to override the default behavior as follows:
# echo Y|N > /sys/module/policy_engine/parameters/ss_dev
# echo Y|N > /sys/module/policy_engine/parameters/ss_host
Change-Id: I2a45a4149f593a129b4dd123df730405169404f9
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Allow callers of devm_usbpd_get_by_phandle() to distinguish
between different errors depending on what failure is encountered.
For instance, return -EPROBE_DEFER if the device is available
but not yet probed, which allows callers to appropriately try
again later.
Change-Id: I96b03d0a4c2a04a405af5a40f9f713443bc5769b
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Fix possible NULL pointer dereference issue as strrchr() API can
return NULL if there is no port_num found as part of passed string.
Change-Id: I410e58361282f175e46b68cbfaf4824e386454f8
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
func_name and port_num attributes related information is already
available as part of created driver instance name itself. These
attributes don't give any valuable information. Hence remove both
attributes and related functionality. Add check against length of
func_name.
CRs-Fixed: 1069476
Change-Id: Ibfc050cda62cfc7e5838949ae833a9d7c0a59303
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
func_name related memory is allocated on creating instance of driver with
cser_set_inst_name() API with usage of kstrndup(). If cser_set_inst_name()
returns non-zero value or driver instance is released, this func_name
related memory is not freed. Fix this memory leak by freeing func_name from
cser_free_inst() API.
CRs-Fixed: 1070060
Change-Id: I7ba4c5a65bb01d056b4d2690fe30f7cbe47ba311
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Using %lu for size_t gives compilation error on 32bit system.
Replace this with %zu which should be used to print size_t on
both 32bit and 64bit machines.
Change-Id: Id8a42dec3e081187054cb2353ba3473bae9dd547
CRs-fixed: 1069970
Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
cdev->config is checked for null pointer at above code, so cdev->config
might be null, fix it by adding null pointer check.
Change-Id: Ie919a2a886924f1b1e01415bfdaa53f74046f5b0
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Git-commit: c526c62d565ea5a5bba9433f28756079734f430d
Git-repo: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Commit fd115e68971b ("dwc3: core: Don't perform controller and PHYs
soft reset") removed clearing DELAYP1TRANS. It is recommended to clear
DELAYP1TRANS bit with USB3PIPECTL register which controls USB
controller allowing USB QMP PHY low power transitions.
Change-Id: I54ba694f4c997bf5ecc540cee274e2cb07b77446
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Check that a valid pointer was passed in addition to non-zero
length to avoid dereferencing NULL pointers in functions
where data is copied from policy engine to the PD PHY.
Issues were identified with static analysis tool.
Change-Id: Ib42aad9e0d838eda4653e0bab9f074b3031983dd
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Currently L1 suspend is disabled. Superspeed capable
device needs to support L1 suspend in HS/FS/LS mode.
Also, add module parameter to disable L1 suspend in
High speed mode.
Change-Id: Ie8e7f3949d276325305799640f2775343bd6b9da
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Use extcon notification to select the maximum speed for host as well
as for peripheral mode. Notification handler sets maximum speed based
on the extcon cable state flag. This provides an option to start host
or peripheral in high speed only mode and leave ss phy suspended.
Change-Id: Ic48c661e68a293822d30cbd491e0fe6e46d385c9
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Reset the clock mux when cable is disconnected and suspended
to avoid leakage on vdd rail. Also, add missing clock reset
when usb cable connect is notified.
Change-Id: If5485379934a222f19f5dd20b8d4f44769470e8d
Signed-off-by: Vamsi Krishna Samavedam <vskrishn@codeaurora.org>
It is recommended to use NUM_OF_TRB greater than USB controller's
TRB cache size. Currently USB controller's TRB cache size on GSI
available platform is 12. TRB ring base address must be aligned to
TRB ring length rounded to power of two. Hence set NUM_OF_TRB as
15 for both IN and OUT GSI endpoints.
CRs-Fixed: 1067833
Change-Id: Iab8b0bc6fd17183fc6056f06a90421cde24987c8
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
This reverts commit <fae741edccb> ("usb: gsi: Queue control
notification on gsi_resume") as expected notification is not
queued resulting into mismatch of QMI transaction packet.
CRs-Fixed: 1067006
Change-Id: I4abdd79699d47054e268978aae9199f1d5d1ddcb
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
commit <5b42bd749e8c> ("usb: gadget: gsi: Optimize TRB's buffer
allocation functionality") is kicking ipa_work_handler state
machine as part of set_alt() for RNDIS function which results
into giving max_xfer_size_bytes_to_host value as zero as
RNDIS_INIT_MSG from host may not have received here. This results
into low throughput due to device is sending more than accepted
aggregated bytes as part of one USB transfer to host. Fix this
issue by delaying RNDIS IPA initialization till MESSAGE_PACKET_FILTER
is received from host which makes sure that proper aggregation
parameters are passed to IPA driver to configure hardware
accerlerated path.
For non-rndis tethered interface, ipa_usb_notify_cb() posts EVT_CONNECTED
to enable IPA GSI data path (i.e. calling ipa_data_path_enable() API).
CRs-Fixed: 1065003
Change-Id: I4ce62745c82b4488cb1370248ab64951497493cd
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
This reverts commit 1d6a39186b ("usb:
dwc3: gadget: start requests as soon as they come"). Queuing request
as soon as they come without waiting for XFER_NOT_READY event resulting
into usb transfer stall.
Change-Id: Ic08b2da2983a520a07a0b225254c068d499a67cc
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
This reverts commit 8a1a9c9e45
("usb: dwc3: gadget: start transfer on XFER_COMPLETE"). This
optimization is resulting into transfer stall for an endpoint.
Hence start transfer only from XFER_NOT_READY event.
Change-Id: Idcd7ae3de3cb85b84c3db7f367b56b097561b2dd
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
* tmp-bab1564:
ANDROID: mmc: Add CONFIG_MMC_SIMULATE_MAX_SPEED
android: base-cfg: Add CONFIG_INET_DIAG_DESTROY
cpufreq: interactive: only apply interactive boost when enabled
cpufreq: interactive: fix policy locking
ANDROID: dm verity fec: add sysfs attribute fec/corrected
ANDROID: android: base-cfg: enable CONFIG_DM_VERITY_FEC
UPSTREAM: dm verity: add ignore_zero_blocks feature
UPSTREAM: dm verity: add support for forward error correction
UPSTREAM: dm verity: factor out verity_for_bv_block()
UPSTREAM: dm verity: factor out structures and functions useful to separate object
UPSTREAM: dm verity: move dm-verity.c to dm-verity-target.c
UPSTREAM: dm verity: separate function for parsing opt args
UPSTREAM: dm verity: clean up duplicate hashing code
UPSTREAM: dm: don't save and restore bi_private
mm: Export do_munmap
sdcardfs: remove unneeded __init and __exit
sdcardfs: Remove unused code
fs: Export d_absolute_path
sdcardfs: remove effectless config option
inotify: Fix erroneous update of bit count
fs: sdcardfs: Declare LOOKUP_CASE_INSENSITIVE unconditionally
trace: cpufreq: fix typo in min/max cpufreq
sdcardfs: Add support for d_canonical_path
vfs: add d_canonical_path for stacked filesystem support
sdcardfs: Bring up to date with Android M permissions:
Changed type-casting in packagelist management
Port of sdcardfs to 4.4
Included sdcardfs source code for kernel 3.0
ANDROID: usb: gadget: Add support for MTP OS desc
CHROMIUM: usb: gadget: f_accessory: add .raw_request callback
CHROMIUM: usb: gadget: audio_source: add .free_func callback
CHROMIUM: usb: gadget: f_mtp: fix usb_ss_ep_comp_descriptor
CHROMIUM: usb: gadget: f_mtp: Add SuperSpeed support
FROMLIST: mmc: block: fix ABI regression of mmc_blk_ioctl
FROMLIST: mm: ASLR: use get_random_long()
FROMLIST: drivers: char: random: add get_random_long()
FROMLIST: pstore-ram: fix NULL reference when used with pdata
usb: u_ether: Add missing rx_work init
ANDROID: dm-crypt: run in a WQ_HIGHPRI workqueue
misc: uid_stat: Include linux/atomic.h instead of asm/atomic.h
hid-sensor-hub.c: fix wrong do_div() usage
power: Provide dummy log_suspend_abort_reason() if SUSPEND is disabled
PM / suspend: Add dependency on RTC_LIB
drivers: power: use 'current' instead of 'get_current()'
video: adf: Set ADF_MEMBLOCK to boolean
video: adf: Fix modular build
net: ppp: Fix modular build for PPPOLAC and PPPOPNS
net: pppolac/pppopns: Replace msg.msg_iov with iov_iter_kvec()
ANDROID: mmc: sdio: Disable retuning in sdio_reset_comm()
ANDROID: mmc: Move tracepoint creation and export symbols
ANDROID: kernel/watchdog: fix unused variable warning
ANDROID: usb: gadget: f_mtp: don't use le16 for u8 field
ANDROID: lowmemorykiller: fix declaration order warnings
ANDROID: net: fix 'const' warnings
net: diag: support v4mapped sockets in inet_diag_find_one_icsk()
net: tcp: deal with listen sockets properly in tcp_abort.
tcp: diag: add support for request sockets to tcp_abort()
net: diag: Support destroying TCP sockets.
net: diag: Support SOCK_DESTROY for inet sockets.
net: diag: Add the ability to destroy a socket.
net: diag: split inet_diag_dump_one_icsk into two
Revert "mmc: Extend wakelock if bus is dead"
Revert "mmc: core: Hold a wake lock accross delayed work + mmc rescan"
ANDROID: mmc: move to a SCHED_FIFO thread
Conflicts:
drivers/cpufreq/cpufreq_interactive.c
drivers/misc/uid_stat.c
drivers/mmc/card/block.c
drivers/mmc/card/queue.c
drivers/mmc/card/queue.h
drivers/mmc/core/core.c
drivers/mmc/core/sdio.c
drivers/staging/android/lowmemorykiller.c
drivers/usb/gadget/function/f_mtp.c
kernel/watchdog.c
Signed-off-by: Runmin Wang <runminw@codeaurora.org>
Change-Id: Ibb4db11c57395f67dee86211a110c462e6181552
This reverts commit 6bb4fe12ea
("usb: dwc3: gadget: use update transfer command"). If we get
a Xfer Not Ready event with reason "Transfer Active" issuing
update transfer for the endpoint for any pending request
results into transfer stall on the endpoint. Hence do not use
update transfer command for on-demad transfers.
Change-Id: Iec1c5913efe1dd266506f973951f22a2170fce77
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
This change reverts Commit f3af36511e ("usb: dwc3: gadget: always
enable IOC on bulk/interrupt transfers") which sets IOC bit for both
bulk/interrupt transfers resulting into interrupt for each TRB
completion with event as XFERINPROGRESS. In some cases it has been
observed that controller is not able to complete provided TRB on
bulk-in endpoint causing stall conditions. Hence Fix this issue by not
setting IOC bit for each TRB to receive XFERCOMPLETE interrupt with it.
Change-Id: I5ff08188f37044332f7dadba8d677288e83bfec8
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
This reverts commit e6e709b7ab ("usb:
dwc3: gadget: use Update Transfer from Xfer In Progress"). Issueing
update transfer command for on-demand transfers reslting into
transfer stall.
Change-Id: I5dd4818e07a3297dd9226169741d8753b2f57a2e
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
XFERNOTREADY event provides status about current transfer. Hence
if transfer is active, then avoid starting next transfer by calling
__dwc3_gadget_kick_transfer() API. Otherwise USB controller stalls to
perform data transfer on that endpoint due to starting new transfer
without completing in progress transfer.
Change-Id: I90370e7e5de55b499a78fbfe5e913f39ec22c7e5
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
commit 0b93a4c838 ("usb: dwc3: fix TRB completion when multiple TRBs
are started") enables XFERINPROGRESS event with all endpoint type
except control endpoint. Currently we are not using XFERINPROGRESS for
queuing next request and depends on XFERNOTREADY event only.
Change-Id: I833c2311c5af48fd15f2813df9cc83c3471c4f94
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Make sure to only call regulator_disable() on VCONN only if
it was previously enabled, else it could result in an
unbalanced disable state. Subsequent enables would then be
no-ops and the regulator would not actually turn on.
Change-Id: I67a6ad6d2bc036a63714403e2eed8c0577ef0246
Signed-off-by: Jack Pham <jackp@codeaurora.org>
The current api which performs the clock reset is moved to use the reset
framework, so support the changes in USB driver for the same. The reset
framework requires to get reset handle and perform assert/deassert of the
resets.
Change-Id: Ifcde1c6af624294cbd1944eaa9b526dd6dcc51de
Signed-off-by: Amit Nischal <anischal@codeaurora.org>
The stack object “ci” has a total size of 8 bytes. Its last 3 bytes
are padding bytes which are not initialized and leaked to userland
via “copy_to_user”.
Git-commit: 681fef8380eb818c0b845fca5d2ab1dcbab114ee
Git-repo: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git
Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Dennis Cagle <d-cagle@codeaurora.org>
(cherry picked from commit 681fef8380eb818c0b845fca5d2ab1dcbab114ee)
Change-Id: Idacb2d5ed64654f85fb86fcce0a196223a7ac2af
Per USB 3.1 specification, USB device can draw upto 900mA when
enumerated in super-speed mode and bus is resumed. Fix bug that is
requesting 500mA when bus is resumed when bus is operating in
super-speed mode.
CRs-Fixed: 1063393
Change-Id: I585f4c560f0920d3cb56cce009297b5665abb42e
Signed-off-by: Mayank Rana <mrana@codeaurora.org>