diff options
author | Albert Wang <albertccwang@google.com> | 2022-05-26 02:57:22 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-05-26 02:57:22 +0000 |
commit | db388a0bd4120a6513e98183f0eff780a9d83db2 (patch) | |
tree | d08f71c384415f19bda32a0a20ed199aab4e3924 | |
parent | 9c7cb42bc34db47d664b08752408ad5a624147d9 (diff) | |
parent | d8fc93a6142dad1bdfa2bfbdfdff1d124661fc0f (diff) | |
download | sunfish-db388a0bd4120a6513e98183f0eff780a9d83db2.tar.gz |
Merge "Write the pullup value only if new value applied" into tm-dev am: d8fc93a614
Original change: https://googleplex-android-review.googlesource.com/c/device/google/sunfish/+/18580528
Change-Id: I87c2852b94e1462b345cf6e7b6aa57ec22d5888e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-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 b8163d1d..ed358cdb 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 6cb19562..89f1bade 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-00/c440000.qcom,spmi:qcom,pm6150@0:qcom,usb-pdphy@1700/usbpd0/" #define SINK_CURRENT_LIMIT_PATH USB_POWER_LIMIT_PATH "usb_limit_sink_current" |