| Commit message (Collapse) | Author | Age |
| ... | |
| | |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
It is required to put/get vote for aggre2_snoc_axi_clk before turning
ON USB core clock for read/write transactions to be successful over
NOC from USB->DDR. Hence add support for voting aggre2_snoc_axi_clk
before enabling USB core clock as part of exiting low power mode.
Change-Id: Icb17d65fbbe49d93971905948c3dc9ab17de152a
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
|
| |\ \ \ \ \ \
| |/ / / / /
|/| | | / /
| | |_|/ /
| |/| | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Add APIs to allocate and instanciate f_rmnet function
driver using configFS.
Change-Id: Iad76a7e317dd9caf846dbe870baee63a8c5ce6c1
Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This change adds RMNET support using IPA over BAM2BAM.
Removes all different supported control and data
transports and assumes BAM2BAM_IPA as default mode.
Cleans up QTI Control driver to support only RMNET
and DPL.
Change-Id: I5b763acfb28c2f1832874af786704835314fa9c7
Signed-off-by: Ajay Agarwal <ajaya@codeaurora.org>
|
| |\ \ \ \ \ |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
QTI needs an indication of cable connect for DPL.
Since host DPL driver does not send DTR indication
send zero length packet to QTI upon cable connect.
Change-Id: I545771f9a84ecc9c2f641c17e057673a32b1f305
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
|
| |\ \ \ \ \ \ |
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
HW recommendation is to set the TX_TRIM_3 value to 0x2 for
a steeper slope. This improves eye diagram testing result.
This register is secure access so write to the SEC_ACCESS
prior to setting this.
Change-Id: I80b0a02feb0e4d1fb382407087fa30f390641ccb
Signed-off-by: Jack Pham <jackp@codeaurora.org>
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
To avoid missing an incoming packet that was quickly sent while
still processing the previous packet, clear the acknowledge bit
as soon as the message is consumed from the Rx FIFO. This gives
the hardware a chance to send a GoodCRC without causing the
sender to retry.
Change-Id: I8a9ef42685576ab68aa65efab1bebc40d801990d
Signed-off-by: Jack Pham <jackp@codeaurora.org>
|
| |\ \ \ \ \ \ \ |
|
| | | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Currenlty driver is clearing mdwc->inrestart flag only if vbus_active
is high only after making sure USB entered low power mode. There is a
chance cable is disconnected during execution of restart work and endup
not clearing mdwc->in_restart flag if disconnect happens. Hence fix this
by clearing mdwc->in_restart flag always irrespective of vbus_active set
or cleared.
Change-Id: I15fa1893c798946c7514bf8cb23773b5784e671e
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
|
| |\ \ \ \ \ \ \ \ |
|
| | |/ / / / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
If ERRATIC event irq is triggered by USB controller, it requires to perform
block reset USB controller as recovery mechanism as per SNPS data book.
Error recovery happens through allowing USB entering low power mode and
exit low power mode. We might see recovery failing as check for P3 state is
true as part of suspend and results in USB not entering low power mode.
Fix this issue by allowing USB enter low power mode in case of recovery
flag mdwc->in_restart set.
CRs-Fixed: 1060831
Change-Id: I41f935da3d4af1dd04eb4b3299e36a0f528633da
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
|
| |\ \ \ \ \ \ \ \ |
|
| | |/ / / / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Commit 18cd808986ba101d ("usb: dwc3-msm: Make power collapse
and power-on-reset mandatory") removed the device tree properties
for power-collapse due to which the dwc3_restart_usb_work() which
was supposed to do a full POR sequence by simulating a cable
disconnection-reconnection sequence now only does a dbm reset.
Fix this, so that dwc3_restart_usb_work(), does a full POR.
CRs-Fixed: 975249
Change-Id: Iaabe9283ec80954a2e504a55f2b4cdf93ca8ae46
Signed-off-by: Azhar Shaikh <azhars@codeaurora.org>
|
| |\ \ \ \ \ \ \ \ |
|
| | | |_|/ / / / /
| |/| | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Export an instance of the dual_role_usb class using the
provided helpers. This is an alternate set of sysfs nodes
that the Android framework uses to allow for user
interactive control of role switching.
Writing to the various properties achieves the following:
- mode: toggles between UFP/Sink and DFP/Source via soft
disconnect/reconnect without invoking PD.
- power_role: toggles between Source and Sink modes via
the PR_Swap operation
- data_role: toggles between UFP (device) and DFP (host) via
the DR_Swap operation
Android currently expects a single instance named "otg_default".
Change-Id: I7060b6f379bc8bed24b59d9df4ca2fb331437363
Signed-off-by: Jack Pham <jackp@codeaurora.org>
|
| |\ \ \ \ \ \ \ \
| |_|/ / / / / /
|/| | / / / / /
| | |/ / / / /
| |/| | | | | |
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Decrease the wait time from 5ms to 2ms when preparing a VDM
response to ensure that it gets sent out timely within
tSenderResponse (15ms). To avoid possible collision with an
incoming packet, check that there has not been any queued Rx
message just prior to sending a VDM. Also check the result of the
transmit and simply try again later if -EBUSY is returned.
While at it, fix a couple other miscellaneous timing issues.
Setting PD_ACTIVE=1 has considerable delay due to the charger's
voting mechanism, so move setting it to after starting the
SenderResponse timer when sending the Source Capabilities, and
similarly after sending a Request as a sink, in order to make
sure response timing is met. For source hard reset, increase the
tSrcRecover delay slightly from the spec minimum to account for
additional VBUS rise/fall delays before sending PS_RDY. Finally,
add a delay for VCONN_SWAP before sending PS_RDY for similar reason.
Change-Id: I5760fadb66cad6faf02e95a1e1bb975289ef8e9f
Signed-off-by: Jack Pham <jackp@codeaurora.org>
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
If an unexpected or delayed Type-C mode change notification
arrives from the charger driver, it could falsely kick the
state machine and could cause it to prematurely hard reset
since it preempted an expected message. This is particularly
true for the PR Swap operation in which the timing of PS_RDY
and resulting power negotiation is disrupted by the CC change
notification which is catching up. The previous way of handling
this by using the pd->in_pr_swap flag to mask the typec_mode
changes is quite fragile due to the uncertainty of when said
flag should be cleared.
Hence, demote the use of the in_pr_swap flag for only ignoring
the expected disconnect the happens in between the role change.
Then, for typec_mode changes, determine if current_pr is changed
or not to decide whether to kick the state machine. Finally,
since disconnect now is signaled by pd->current_pr==PR_NONE,
we'll need to keep track of whether VBUS had been enabled with
a separate flag rather than relying on pd->current_pr==PR_SRC.
Change-Id: I66be40091b75726d25c7be4478f1248a6af9ca3c
Signed-off-by: Jack Pham <jackp@codeaurora.org>
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Make sure to reset both Tx and Rx msgid counters when the
protocol layer needs to be reset. This occurs after hard/soft
reset as well as when starting up a new sink or source session.
Put this in a common function pd_reset_protocol().
Change-Id: I643a60a28e6498ca16b6f46293b8aa05eff40266
Signed-off-by: Jack Pham <jackp@codeaurora.org>
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The current hard reset handling (most recently fixed with
commit 172cec3a2c76 ("usb: pd: Improve sink hard reset handling"))
is based on a maximum timeout for the longest possible (according
to spec) duration that VBUS may turn off and back on again, just
under 2s, before re-starting the sink and waiting for capabilities
again. However, this method is prone to timing errors, particularly
tTypeCSinkWaitCap, which should be based on when VBUS turns on.
Fix this by making use of the VBUS presence notification from the
charger (PROP_PRESENT). Keep track of this in the psy_changed()
callback and use the falling notification to determine when to
transition out of PE_SNK_TRANSITION_TO_DEFAULT into PE_SNK_STARTUP.
Bring back PE_SNK_DISCOVERY which is now used as a waiting state
until the VBUS rising notification comes and transition to
PE_SNK_WAIT_FOR_CAPABILITIES. And move setting of PROP_VOLTAGE_MAX
to PE_SNK_STARTUP after VBUS has turned off to avoid tripping
the charger's overvoltage detection.
Also since aforementioned commit, the CC HW is now able to handle
VBUS going away and not treating it as a false disconnect, so we
can remove the workaround as a disconnect can now be treated as
a disconnect.
Change-Id: I885f3f4c219e102758fd09c8aae9257d093ebb72
Signed-off-by: Jack Pham <jackp@codeaurora.org>
|
| |\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | |
| | | | | | | |
offline"
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
when USB cable is disconnected during TX data transfers, endpoints will
be disabled during function disable. If userspace client tries to queue
requests on disabled endpoints, driver will wait till endpoints are
enabled and then queues previous session requests. This results in kernel
driver and userspace driver out of sync and due to this, stall will be
seen. Hence fix this issue by returning error value if client tries to
queue requests on TX endpoint during device offline.
CRs-Fixed: 633497
Change-Id: I3e43b8a704367aff7fe8dd88159315aef811c51c
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
|
| |\ \ \ \ \ \ \ |
|
| | | |/ / / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
To optimize charging during power negotiation and the voltage
is not changing, for example when transitioning from implicit
contract to the default 5V PDO, there is no requirement to
suspend the charging and hence setting the charger's
PROP_PD_CURRENT_MAX can be avoided. It is only needed when
changing voltages, in which case current limit should be
calculated based on pSnkStdby (2.5W), or when staying at the
same voltage and decreasing current.
Also fix the incorrect setting of PROP_CURRENT_MAX to
PROP_PD_CURRENT_MAX when doing a sink->source swap.
Change-Id: Ib53902459646e590df4dc7fcb00f833d5e8f41ed
Signed-off-by: Jack Pham <jackp@codeaurora.org>
|
| |\ \ \ \ \ \ \ |
|
| | | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
On some platforms, QUSB PHY's DVDD related power supply (LDO) is
not always ON. Hence when this power supply is switched off, QUSB
PHY's register configuration is not retained. QUSB PHY state
is unknown when required LDOs are turned ON with USB cable connect
case and may interfere charger detection. Hence use suggested sequence
which involves resetting QUSB PHY and performing few set of QUSB PHY
register configuration to bring QUSB PHY into non-driving mode.
Also it is required to disable QUSB2PHY level shifter by writing to
TCSR_QUSB2PHY_CLAMP_DIG_N_1P8 register during disconnect to avoid
leakage current. Hence add support for the same.
Change-Id: I30b8488a1c19815601e6a1c5bcbdeed53715f8fa
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
|
| |\| | | | | | |
| |_|/ / / / /
|/| | | | | | |
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
QUSB PHY requires VDD, 1p8 and 3p1 regulators to remove any unwanted
pull downs on DP/DM lines. These pull downs may result in incorrect charger
detection by PMI. Avoid incorrect charger detection by turning on VDD,
1p8 and 3p1 whenever PMI requests DP/DM to be floating.
Change-Id: Ibfecfe1846d02b959bd249acac3fe4c57b88aaf0
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
|
| |\ \ \ \ \ \ \ |
|
| | | |/ / / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
If a client matching the SVID for an incoming SVDM is found,
assume it has handled the message completely and simply return.
This avoids the case when it handles an Attention message by
queuing another VDM request, only to have it inadvertently
deleted in the generic handling below.
But we also lose tracking of Discover/Enter/Exit Mode
exchanges though that was only used for informational purposes.
Change-Id: Ie23d473302d7fbda9b243a150e5c52d025007e4f
Signed-off-by: Jack Pham <jackp@codeaurora.org>
|
| |\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | | |
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This allows xHC to remain in low power mode and not
resume the bus when system wide resume happens.
Controller comes out of low power mode only when usb
device issues a remote wakeup or if there is a host
initiated bus resume.
Change-Id: I96cdcb9e3642906b4afa08d9bde07e123d9b3977
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
|
| |\ \ \ \ \ \ \ |
|
| | | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Increasing buffer size from 16k to 1MB improves throughput
from 36MBps to 77MBps with 8 usb request buffers. Hence add
default TX buffer macro of 1MB size and try to allocate the
same.
Change-Id: Ifebf5cbe46e24ae019829db388550d47fd4a5ff4
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
|
| |\ \ \ \ \ \ \ \
| |_|_|_|/ / / /
|/| | | | | | | |
|
| | | |_|/ / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
xHC gets powered down when host mode is stopped. xHCI power
management is intended for ACPI based power management which
is defined for PC architecture. Hence there is no need to
clear run/stop bit and save the runtime register states upon
port suspend.
Change-Id: I9d0b31021e7c47084cd92c8c70e17cff3d057655
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
|
| |\ \ \ \ \ \ \ |
|
| | | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
configfs_composite_unbind sets the gadget data
to null. Therefore, add check in android_disconnect
function to make sure that cdev is not NULL. This
prevents NULL pointer dereference upon accessing
cdev.
Change-Id: Ib59cdd88557d917c85d8d33968efc295bcef2280
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
|
| |\ \ \ \ \ \ \ \
| | |_|_|/ / / /
| |/| | | | | | |
|
| | | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
By default skip_extended_resume_delay module parameter
allows to skip extra 40ms delay upon usb bus resume.
This delay was added on top of host bus resume which
is driven for 20ms. Skipping extra delay reduces over
all bus resume latency.
Change-Id: I31a83abc057c345f29d204a63e7571b880678e69
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
|
| | | |_|/ / / /
| |/| | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Since usleep_range provides better accuracy in
comparison to msleep. This helps in reducing
the latency of host bus resume.
Change-Id: Ie8d5231327fcc27ab2a28542e0d96687abb9aace
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
|
| |\ \ \ \ \ \ \ |
|
| | |/ / / / / /
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Since usleep_range provides better accuracy in
comparison to msleep. This helps in reducing the
latency of host bus resume.
Change-Id: Id22104b9e5b63153731df9eb55759de9a86128c6
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
|
| |\ \ \ \ \ \ \
| |_|_|/ / / /
|/| | | | | | |
|
| | |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
As before, add mtp_tx_req_len for Tx transfer length, while
mtp_write & send_file_work still use MTP_BULK_BUFFER_SIZE for
Tx transfer length, need to correct it.
Change-Id: Ib078cf01871c50e6eec7002a38391d4c41d4d45a
Signed-off-by: zhaoyuan <yzhao@codeaurora.org>
|
| |\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
There is a possibility of unacknowledged pending interrupt at the time
of secondary event ring cleanup. As a result xHC does not generate any
interrupt further because event handler busy flag is set. Hence disable
interrupter to prevent any further interrupt, acknowledge any pending
interrupt and clear event handler busy flag. This allows xHC to generate
interrupt after setting up new event ring.
Change-Id: I1b1791eacbf7afffd101d56d0ae06fe237b8c076
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
|
| |\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
|