Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9682477 authored by Jimmy Hu's avatar Jimmy Hu
Browse files

Write the pullup value only if new value applied



Also, remove the non-existing paths and set the initial value of
mUsbDataEnabled.

Bug: 221009551
Test: build, boot
Signed-off-by: default avatarJimmy Hu <hhhuuu@google.com>
Change-Id: Ia44923b13d7a6a381d0024df4e7af5ac0667f0ef
parent cb01b82b
Loading
Loading
Loading
Loading
+23 −20
Original line number Diff line number Diff line
@@ -61,41 +61,42 @@ 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;
                }
    } 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 (!WriteStringToFile("0", USB_DATA_PATH)) {
        if (!WriteStringToFile("1", USB_DATA_PATH)) {
            ALOGE("Not able to turn on usb connection notification");
            result = false;
        }

    } else {
        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 (result) {
        mUsbDataEnabled = in_enable;
@@ -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));
@@ -627,6 +629,7 @@ Status getPortStatusHelper(android::hardware::usb::Usb *usb,
done:
    return Status::ERROR;
}

Status queryPowerTransferStatus(std::vector<PortStatus> *currentPortStatus) {
    string enabled;

+0 −2
Original line number Diff line number Diff line
@@ -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"