summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-05-26 23:02:16 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-05-26 23:02:16 +0000
commit97988b9f1d61cc75237aa9e53bb9dfe42f8c84d3 (patch)
treecc38afc91d20b917e2c0f474a44d70814286fdcf
parent7f1b101ddfe4c1c19152b10db67797ba750226f8 (diff)
parent7f0e10a1868c2e78345e888c1b69bbda2d774781 (diff)
downloadredfin-android13-d1-s1-release.tar.gz
Change-Id: I26d7e8f2d03935dbb3f9b96be149d1c88ff2f6b6
-rw-r--r--usb/usb/Usb.cpp43
-rw-r--r--usb/usb/Usb.h2
2 files changed, 23 insertions, 22 deletions
diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp
index 348d28e..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;
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"