Commit graph

26 commits

Author SHA1 Message Date
Kyle Tso
cb51a640f4 usb: Log for retry on role switch
Add a log for the retry. Also define the sleep time in the header file.

Bug: 341996696
Change-Id: Ib3cc0c6ad576e7cda26b7f50cdc61d52e6349c78
Signed-off-by: Kyle Tso <kyletso@google.com>
(cherry picked from commit d17fdff5f81cff76adaa75d50f26318be8048123)
2024-06-13 17:09:11 +08:00
Kyle Tso
d8fffffda4 usb: Add retry on role switch
Bug: 341996696
Change-Id: I8caa65288af1588d24fea4aa6c5768d45d69bbd5
Signed-off-by: Kyle Tso <kyletso@google.com>
(cherry picked from commit ef5856a4474002cc35a51377adffddd4cb239796)
2024-06-13 17:07:23 +08:00
Kyle Tso
9bafd5f134 usb: Runtime search the i2c path
The paths of sysfs nodes are different on multiple build targets and are
also different between the old kernel (5.10) and newer kernel (6.1).
Since usb HAL code is shared by those targets and different kernel
versions, Runtime search the correct paths.

Bug: 317946158
Change-Id: I676455145232fd71db1578bb7a9801fed7bb327f
Signed-off-by: Kyle Tso <kyletso@google.com>
2024-02-03 01:14:43 +00:00
Roy Luo
fc280685ca usb: dump flag value in the constructor
Dump flag value in the construtor for easier debugging. Feature flags
are not expected to change in runtime, dumping the value once should
be enough.

Bug: 296119135
Test: manual test
Change-Id: Ie5aca2dff23e59704fb306833cde0e592b9f430d
(cherry picked from commit 9164eae7cdee032381d8bf045fbbed33f62b00bf)
2024-01-10 11:47:02 +00:00
Roy Luo
8d10e34fe0 Revert^2 "usb: introduce UsbDataSessionMonitor class"
a9ac5d5869

Bug: 297224564
Bug: 296119135
Change-Id: I0e15924ff133c8070c923f9072497bfda4370b5b
2023-12-09 00:22:03 +00:00
Qian-Hao Huang
a9ac5d5869 Revert "usb: introduce UsbDataSessionMonitor class"
Revert submission 25524752-usbDataSessionMonitor

Reason for revert: Test for gs101/gs201 boot blocking issue (b/314904288)

Reverted changes: /q/submissionid:25524752-usbDataSessionMonitor

Change-Id: I0f762a9ba8345d2963ebfb2d50cb8a7460885221
2023-12-05 17:13:31 +00:00
Roy Luo
3555bbe0a8 usb: introduce UsbDataSessionMonitor class
Migrate the usb data session event functions to the class with the
following additional functionalities;
- Support detecting gadget soft pulldown (usually done during configfs
  function switch) and report usb data session correctly.
- Support reporting usb data compliance warnings to the class USB
  by providing getDataComplianceWarnings call.
- Use boot_clock instead of steady_clock to measure time correctly in
  the case of system suspend.

UsbDataSessionMonitor is self-contained and can be migrated to pixel usb
library after feature maturation.

Bug: 297224564
Bug: 296119135
Test: usb data session upload in device and host mode
Change-Id: Iba001933e193935d64cf5fd0a1257d02a4274fb1
(cherry picked from commit ea65ca11f6fbb6f13b89ef9ed03015f47ec1cedb)
2023-12-01 16:43:41 +00:00
Roy Luo
91c045df5b usb: update incompatible charger warning reason
Report COMPLIANCE_WARNING_INPUT_POWER_LIMITED instead of
COMPLIANCE_WARNING_OTHER to flag incompatible chargers. The underlying
logic that generates the warning remains the same, what's changed is
the enum that's being used.
The purpose of the change is to have a warning type that better
represents what actually happens and free up COMPLIANCE_WARNING_OTHER
that was intended to act as a fallback reason code.
The flag enable_input_power_limited_warning controls whether to switch
to the new enum, while the flag enable_usb_data_compliance_warning
controls the new enums that are added as FlaggedApi in the framework.
Both flags need to be on to enable the change.

Bug: 308700954
Test: manual tests with local flag override
Change-Id: I6595706d1b83d533fc2d3e29086773270e045ede
2023-11-09 22:55:07 +00:00
Roy Luo
26abdf4ee2 Usb: capture and upload Suez metric VendorUsbDataSessionEvent
Upload metrics for the last data session that just ends upon
data role changes. The change is purely metric collection and
does not change any business logic.
This is a direct CP from ag/24816727

Bug: 297224564
Test: Trigger metric upload for both host and device mode and
      verify it by statsd_testdrive
Change-Id: I823ae8712b7914cfc7f6c6379acb3749d13c0974
(cherry picked from commit ccb35c81ff0bbfb013136bae7a572280b196bd1a)
2023-10-05 23:50:03 +00:00
Kuen-Han Tsai
4156589ff6 Usb.cpp: Fix typos when unable to disable USB data am: f233bec505 am: 503f92156e
Original change: https://googleplex-android-review.googlesource.com/c/device/google/gs201/+/24792093

Change-Id: Ie4076b2db9569246c06c0dc29ff036f674f02885
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-21 11:31:00 +00:00
Kuen-Han Tsai
f233bec505 Usb.cpp: Fix typos when unable to disable USB data
If Usb.cpp cannot write a zero value to the USB_DATA_PATH file, display
the message of "Not able to turn off usb connection notification".

Test: refactoring CL. Existing tests still pass.
Bug: 301016122
Change-Id: I8e0f485e74d10a0154e4cd78af9f5ef5a22d328f
2023-09-21 09:54:59 +00:00
Roy Luo
b97e3d8cc4 Usb: Listen to USB sysfs attribute for device state
Poll the sysfs attributes that represents usb device state in
either of the following states: not attached, powered, default,
addressed, configured.
The information is useful in detecting non compliant USB cable,
which will be supported in later patch sets. This patch lays
the ground work to monitor the sysfs attributes in both device
and host modes.
The thread to poll uevent is re-used to poll sysfs because this
serialize type-C port events and usb device state changes, hence
prevent potential races.
Added a thin abstration layer and a map to keep epoll data so
that it's easier to dynamically add/delete files to epoll, which
is needed for usb devices in host mode.

Bug: 285199434
Test: trigger usb device state changes in device and host mode
Change-Id: Ie5389d051deb28dbb486c2f27319b3cc9e89312f
2023-08-04 17:25:06 +00:00
Badhri Jagan Sridharan
877a72ffdf Usb: Populate UsbDataStatus only when not populated
Do not override UsbDataStatus when already populated.
Compliance warnings such as missing Rp do not populate
UsbDataStatus and the port partner is detected.
Populate UsbDataStatus only when not populated.

Bug: 279251052
Change-Id: Ibe71bdd5c521ba90c124d89bd56af90087c0df18
(cherry picked from commit 47e1400c8fef8af1aea985795d7adfe3ff16871b)
(cherry picked from commit a778a7c3a82c98ec56f9e2b0c2a1dce343317b48)
2023-05-16 05:58:01 +00:00
Badhri Jagan Sridharan
74246dbc5f Revert "usb: Temporarily disable compliance warning"
This reverts commit 55082ca17e.

Bug: 279251052
Change-Id: Ic67b94da213357af05a5c6e14e15946a02af7fba
2023-05-16 05:57:52 +00:00
Kyle Tso
55082ca17e usb: Temporarily disable compliance warning
Revert me once the issue is fixed.

Bug: 278018111
Change-Id: I198c4a42aa8b64fef90817474710295d68497dda
Signed-off-by: Kyle Tso <kyletso@google.com>
2023-04-22 10:03:27 +00:00
Roy Luo
fdb65f4d14 Support GL852G USB hub JK level tuning
The JK level setting is configured to the hub via a vendor USB
command whenever the hub is enabled.
The shell command can be used to change the JK setting for testing
purpose, but the values take effect next time the hub is enumerated.

Bug: 261923350
Test: adb shell cmd android.hardware.usb.IUsb/default hub-vendor-cmd
<hex wValue> <hex wIndex>
Test: verify on user/userdebug builds the vendor command is triggered
      in the following scenarios.
      1. boot with Kolan docked
      2. undock and dock Kolan
      3. kill android.hardware.usb.IUsb/default

Change-Id: I8873695c42f362138d99b45ffa2ef637c357202b
2023-04-06 01:54:13 +00:00
Badhri Jagan Sridharan
1e3b4431f4 Usb: Update UsbDataStatus while being docked
Bug: 275150939
Change-Id: I09499642012c7e95bb5a5fef1ac6eb7b8c4e6832
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
2023-03-27 05:57:47 +00:00
Badhri Jagan Sridharan
7c2d62aafc Usb: Set connected status when connected to non compliant port partners
Set mode, power role and data role when connected to non compliant
port partners.

Bug: 268584498
Change-Id: I6c3e7df09a61e26f3b976a86bd65cb646edd653d
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
2023-02-22 22:05:43 +00:00
RD Babiera
fb37a2a183 Usb non-compliant port partner gs201 implementation
Adds vendor code for non-compliant charger feature. Currently
updates service version.

Minor port of  commit 96ccf93453583642a15dd96b1e4d6bf0645fc10b

Test: atest VtsAidlUsbTargetTest
Bug: 236322506
Change-Id: Ie1a48b1acaaae9a53f3b9bfebcfee7a2f4814810
(cherry picked from commit 96ccf93453583642a15dd96b1e4d6bf0645fc10b)
2023-02-22 22:05:43 +00:00
Roy Luo
4e38e3b8c3 Add shell command to send vendor command to GL852G
Bug: 261923350
Test: adb shell cmd android.hardware.usb.IUsb/default hub-vendor-cmd
<hex wValue> <hex wIndex>
Change-Id: I83b56d28cfd89dfaf51fce88f97020196402f972
Signed-off-by: Roy Luo <royluo@google.com>
2023-02-14 20:31:24 +00:00
Avichal Rakesh
9ba92eed60 Migrate IUsbGadget implementation to AIDL
This change migrates IUsbGadget implementation to AIDL.
Port of commit <d6d0b7d2ca5066988ee90889dccd00c06d64b694>.

Bug: 218791946
Test: USB function switch success and AIDL service is running.
Change-Id: I9613178d3cd2f9abd5396e4af763a257a8ef62a7
2023-01-26 20:18:09 +00:00
Badhri Jagan Sridharan
694c890c33 Rename enable_usb dev node to move_data_to_usb
kernel dev attribute has now been renamed from enable_usb
to move_data_to_usb. Update the same.

Bug: 251381400
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
Change-Id: I8e4aa0b2e09bfef807f0169eabb79e2fa2e4d2c7
2022-10-31 14:07:51 +00:00
badhri
7d34263bf9 Set powerBrickStatus to not connected when sourcing power
Bug: 239755044
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
Change-Id: I7720bfaa5876c058643c52525b488ba22b3e5121
2022-07-22 02:31:35 +00:00
Jimmy Hu
3b1583d7a5 Write the pullup value only if new value applied
Bug: 226018845
Test: build, boot
Signed-off-by: Jimmy Hu <hhhuuu@google.com>
Change-Id: I636dc18dca123f88dbf10c4a17caa9a75cbb12f7
2022-05-26 02:42:33 +00:00
Kyle Tso
4dc3073629 usb: Correct the i2c path
Bug: 228780694
Signed-off-by: Kyle Tso <kyletso@google.com>
Change-Id: I59a4fa0870264e5f2ca275d5a228f11fcc6bf4be
2022-04-11 19:09:26 +00:00
Badhri Jagan Sridharan
a1deb18dfb Migrate IUsb implementation to AIDL
Cherry-pick of <775523d1eb>

This change migrates IUsb implementation to AIDL.
Also, IUsb and IUsbGadget now run in its own processes
to improve stability and isolation.

Bug: 200993386
Change-Id: I02753af4a41916b77ce110f9531504bf8c6a4691
Merged-In: I02753af4a41916b77ce110f9531504bf8c6a4691
2022-03-01 03:32:23 +00:00