From 962d5f25accb07a6afa7c92f84d0bf46af35a0f0 Mon Sep 17 00:00:00 2001 From: Cynthia Wasonga Date: Wed, 21 Dec 2022 07:11:59 +0000 Subject: [PATCH 1/3] Fix gs201 preinstall config module loading on device Adds fix for ag/20438528 Bug: 238970256 Test: Verify that TestRcsApp and BatteryStatsViewer are not installed on clone profile Change-Id: I58e832866c67ff71dbda01f7b4952fe842494dd3 Merged-In: I58e832866c67ff71dbda01f7b4952fe842494dd3 --- Android.bp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Android.bp b/Android.bp index 9b83b174..150a519c 100644 --- a/Android.bp +++ b/Android.bp @@ -34,3 +34,11 @@ license { "NOTICE", ], } + +prebuilt_etc { + name: "preinstalled-packages-product-gs201-device-debug.xml", + src: "preinstalled-packages-product-gs201-device-debug.xml", + product_specific: true, + sub_dir: "sysconfig", + filename_from_src: true, +} From fb37a2a183a4f53371cf324b092d916cbce7b32a Mon Sep 17 00:00:00 2001 From: RD Babiera Date: Tue, 20 Sep 2022 23:35:04 +0000 Subject: [PATCH 2/3] 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) --- usb/usb/Android.bp | 2 +- usb/usb/Usb.cpp | 43 ++++++++++++++++++++++++ usb/usb/android.hardware.usb-service.xml | 2 +- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/usb/usb/Android.bp b/usb/usb/Android.bp index 07e66ead..f04eefd8 100644 --- a/usb/usb/Android.bp +++ b/usb/usb/Android.bp @@ -47,7 +47,7 @@ cc_binary { "android.hardware.thermal@2.0", "android.hardware.thermal-V1-ndk", "android.hardware.usb.gadget@1.0", - "android.hardware.usb-V1-ndk", + "android.hardware.usb-V2-ndk", "android.hardware.usb.gadget-V1-ndk", "libcutils", "android.frameworks.stats-V1-ndk", diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index 533aca8a..a0e7499f 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -47,6 +47,7 @@ using aidl::android::frameworks::stats::IStats; using android::base::GetProperty; +using android::base::Tokenize; using android::base::Trim; using android::hardware::google::pixel::getStatsService; using android::hardware::google::pixel::PixelAtoms::VendorUsbPortOverheat; @@ -64,6 +65,11 @@ volatile bool destroyThread; string enabledPath; constexpr char kHsi2cPath[] = "/sys/devices/platform/10d60000.hsi2c"; constexpr char kI2CPath[] = "/sys/devices/platform/10d60000.hsi2c/i2c-"; +constexpr char kComplianceWarningsPath[] = "device/non_compliant_reasons"; +constexpr char kComplianceWarningBC12[] = "bc12"; +constexpr char kComplianceWarningDebugAccessory[] = "debug-accessory"; +constexpr char kComplianceWarningMissingRp[] = "missing_rp"; +constexpr char kComplianceWarningOther[] = "other"; constexpr char kContaminantDetectionPath[] = "i2c-max77759tcpc/contaminant_detection"; constexpr char kStatusPath[] = "i2c-max77759tcpc/contaminant_detection_status"; constexpr char kSinkLimitEnable[] = "i2c-max77759tcpc/usb_limit_sink_enable"; @@ -286,6 +292,42 @@ Status queryMoistureDetectionStatus(std::vector *currentPortStatus) return Status::SUCCESS; } +Status queryNonCompliantChargerStatus(std::vector *currentPortStatus) { + string reasons, path; + + for (int i = 0; i < currentPortStatus->size(); i++) { + (*currentPortStatus)[i].supportsComplianceWarnings = true; + path = string(kTypecPath) + "/" + (*currentPortStatus)[i].portName + "/" + + string(kComplianceWarningsPath); + if (ReadFileToString(path.c_str(), &reasons)) { + std::vector reasonsList = Tokenize(reasons.c_str(), "[], \n\0"); + for (string reason : reasonsList) { + if (!strncmp(reason.c_str(), kComplianceWarningDebugAccessory, + strlen(kComplianceWarningDebugAccessory))) { + (*currentPortStatus)[i].complianceWarnings.push_back(ComplianceWarning::DEBUG_ACCESSORY); + continue; + } + if (!strncmp(reason.c_str(), kComplianceWarningBC12, + strlen(kComplianceWarningBC12))) { + (*currentPortStatus)[i].complianceWarnings.push_back(ComplianceWarning::BC_1_2); + continue; + } + if (!strncmp(reason.c_str(), kComplianceWarningMissingRp, + strlen(kComplianceWarningMissingRp))) { + (*currentPortStatus)[i].complianceWarnings.push_back(ComplianceWarning::MISSING_RP); + continue; + } + if (!strncmp(reason.c_str(), kComplianceWarningOther, + strlen(kComplianceWarningOther))) { + (*currentPortStatus)[i].complianceWarnings.push_back(ComplianceWarning::OTHER); + continue; + } + } + } + } + return Status::SUCCESS; +} + string appendRoleNodeHelper(const string &portName, PortRole::Tag tag) { string node("/sys/class/typec/" + portName); @@ -783,6 +825,7 @@ void queryVersionHelper(android::hardware::usb::Usb *usb, status = getPortStatusHelper(usb, currentPortStatus); queryMoistureDetectionStatus(currentPortStatus); queryPowerTransferStatus(currentPortStatus); + queryNonCompliantChargerStatus(currentPortStatus); if (usb->mCallback != NULL) { ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus, status); diff --git a/usb/usb/android.hardware.usb-service.xml b/usb/usb/android.hardware.usb-service.xml index 60881948..c3f07f52 100644 --- a/usb/usb/android.hardware.usb-service.xml +++ b/usb/usb/android.hardware.usb-service.xml @@ -1,7 +1,7 @@ android.hardware.usb - 1 + 2 IUsb default From 7c2d62aafc219af11252dabf49d84d84b7ccfa57 Mon Sep 17 00:00:00 2001 From: Badhri Jagan Sridharan Date: Sat, 11 Feb 2023 09:49:45 +0000 Subject: [PATCH 3/3] 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 --- usb/usb/Usb.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index a0e7499f..3e4f8a12 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -323,6 +323,12 @@ Status queryNonCompliantChargerStatus(std::vector *currentPortStatus continue; } } + if ((*currentPortStatus)[i].complianceWarnings.size() > 0) { + (*currentPortStatus)[i].currentMode = PortMode::UFP; + (*currentPortStatus)[i].currentPowerRole = PortPowerRole::SINK; + (*currentPortStatus)[i].currentDataRole = PortDataRole::NONE; + (*currentPortStatus)[i].powerBrickStatus = PowerBrickStatus::CONNECTED; + } } } return Status::SUCCESS;