diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-20 20:09:17 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-20 20:09:17 +0000 |
commit | 9e4ae8e13fb38b325a4e0e1bc2720c13eedfbac9 (patch) | |
tree | d0cc687d9d450b04066134338f95b76e54ed0381 | |
parent | 96af9b7e91859800c6a3c42af414e558fc8de388 (diff) | |
parent | 8bb3da0a2411e61caaa9d9bcfc994c3c69f9e21d (diff) | |
download | bramble-android13-mainline-art-release.tar.gz |
Snap for 8746144 from 8bb3da0a2411e61caaa9d9bcfc994c3c69f9e21d to mainline-art-releaseaml_art_331813100aml_art_331813010aml_art_331711080aml_art_331612010aml_art_331413030aml_art_331314010aml_art_331113000aml_art_331012050android13-mainline-art-release
Change-Id: I1aa1531152d051e2472442108ecf18467b3129b8
-rw-r--r-- | usb/usb/Usb.cpp | 45 | ||||
-rw-r--r-- | usb/usb/Usb.h | 2 |
2 files changed, 23 insertions, 24 deletions
diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index b8163d1..ed358cd 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -61,40 +61,41 @@ ScopedAStatus Usb::enableUsbData(const string& in_portName, bool in_enable, int64_t in_transactionId) { bool result = true; std::vector<PortStatus> currentPortStatus; + string pullup; ALOGI("Userspace turn %s USB data signaling. opID:%ld", in_enable ? "on" : "off", in_transactionId); if (in_enable) { - if (!WriteStringToFile("1", USB_DATA_PATH)) { - ALOGE("Not able to turn on usb connection notification"); - result = false; + if (ReadFileToString(PULLUP_PATH, &pullup)) { + pullup = Trim(pullup); + if (pullup != kGadgetName) { + if (!WriteStringToFile(kGadgetName, PULLUP_PATH)) { + ALOGE("Gadget cannot be pulled up"); + result = false; + } + } } - if (!WriteStringToFile(kGadgetName, PULLUP_PATH)) { - ALOGE("Gadget cannot be pulled up"); + if (!WriteStringToFile("1", USB_DATA_PATH)) { + ALOGE("Not able to turn on usb connection notification"); result = false; } } else { - if (!WriteStringToFile("1", ID_PATH)) { - ALOGE("Not able to turn off host mode"); - result = false; - } - - if (!WriteStringToFile("0", VBUS_PATH)) { - ALOGE("Not able to set Vbus state"); - result = false; + if (ReadFileToString(PULLUP_PATH, &pullup)) { + pullup = Trim(pullup); + if (pullup == kGadgetName) { + if (!WriteStringToFile("none", PULLUP_PATH)) { + ALOGE("Gadget cannot be pulled down"); + result = false; + } + } } if (!WriteStringToFile("0", USB_DATA_PATH)) { ALOGE("Not able to turn on usb connection notification"); result = false; } - - if (!WriteStringToFile("none", PULLUP_PATH)) { - ALOGE("Gadget cannot be pulled down"); - result = false; - } } if (result) { @@ -367,7 +368,8 @@ Usb::Usb() : mLock(PTHREAD_MUTEX_INITIALIZER), mRoleSwitchLock(PTHREAD_MUTEX_INITIALIZER), mPartnerLock(PTHREAD_MUTEX_INITIALIZER), - mPartnerUp(false) { + mPartnerUp(false), + mUsbDataEnabled(true) { pthread_condattr_t attr; if (pthread_condattr_init(&attr)) { ALOGE("pthread_condattr_init failed: %s", strerror(errno)); @@ -612,7 +614,7 @@ Status getPortStatusHelper(android::hardware::usb::Usb *usb, } else { (*currentPortStatus)[i].usbDataStatus.push_back(UsbDataStatus::ENABLED); } - (*currentPortStatus)[i].powerBrickStatus = PowerBrickStatus::UNKNOWN; + (*currentPortStatus)[i].powerBrickStatus = PowerBrickStatus::UNKNOWN; ALOGI("%d:%s connected:%d canChangeMode:%d canChagedata:%d canChangePower:%d " "usbDataEnabled:%d", @@ -627,6 +629,7 @@ Status getPortStatusHelper(android::hardware::usb::Usb *usb, done: return Status::ERROR; } + Status queryPowerTransferStatus(std::vector<PortStatus> *currentPortStatus) { string enabled; @@ -731,8 +734,6 @@ static void uevent_event(uint32_t /*epevents*/, struct data *payload) { pthread_cond_signal(&payload->usb->mPartnerCV); pthread_mutex_unlock(&payload->usb->mPartnerLock); } else if (!strncmp(cp, "DEVTYPE=typec_", strlen("DEVTYPE=typec_")) || - !strncmp(cp, "DRIVER=max77759tcpc", - strlen("DRIVER=max77759tcpc")) || !strncmp(cp, "POWER_SUPPLY_MOISTURE_DETECTED", strlen("POWER_SUPPLY_MOISTURE_DETECTED"))) { std::vector<PortStatus> currentPortStatus; diff --git a/usb/usb/Usb.h b/usb/usb/Usb.h index 94fbecb..36a23bc 100644 --- a/usb/usb/Usb.h +++ b/usb/usb/Usb.h @@ -43,11 +43,9 @@ using ::std::shared_ptr; using ::std::string; constexpr char kGadgetName[] = "a600000.dwc3"; -#define ID_PATH SOC_PATH "id" #define PULLUP_PATH "/config/usb_gadget/g1/UDC" #define SOC_PATH "/sys/devices/platform/soc/a600000.ssusb/" #define USB_DATA_PATH SOC_PATH "usb_data_enabled" -#define VBUS_PATH SOC_PATH "b_sess" #define USB_POWER_LIMIT_PATH "/sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/" #define SINK_CURRENT_LIMIT_PATH USB_POWER_LIMIT_PATH "usb_limit_sink_current" |