aidl: usb: gadget: Rebrand to samsung
authorbengris32 <bengris32@protonmail.ch>
Wed, 21 Feb 2024 16:22:56 +0000 (17:22 +0100)
committerJan Altensen (Stricted) <info@stricted.net>
Fri, 21 Jun 2024 04:02:30 +0000 (04:02 +0000)
[Linux4: Switch to samsung vid/pid]

Co-Authored-By: Tim Zimmermann <tim@linux4.de>
Change-Id: I93f1713f466b91159bebcf303766d83db796c5c0

aidl/usb/gadget/Android.bp
aidl/usb/gadget/UsbGadget.cpp
aidl/usb/gadget/UsbGadget.h
aidl/usb/gadget/android.hardware.usb.gadget-service.rc [deleted file]
aidl/usb/gadget/android.hardware.usb.gadget-service.samsung.rc [new file with mode: 0644]
aidl/usb/gadget/android.hardware.usb.gadget-service.samsung.xml [new file with mode: 0644]
aidl/usb/gadget/android.hardware.usb.gadget-service.xml [deleted file]
aidl/usb/gadget/service_gadget.cpp

index 518a73573a16f8f9b581582bf1cc0429a1c1cdf8..76e5fa91cae473a388ebd5524360a80d70e01173 100644 (file)
@@ -1,5 +1,6 @@
 //
 // Copyright (C) 2021 The Android Open Source Project
+// Copyright (C) 2024 The LineageOS Project
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package {
-    // See: http://go/android-license-faq
-    // A large-scale-change added 'default_applicable_licenses' to import
-    // all of the 'license_kinds' from "device_google_gs201_license"
-    // to get the below license kinds:
-    //   SPDX-license-identifier-Apache-2.0
-    default_applicable_licenses: ["device_google_gs201_license"],
-}
-
 cc_binary {
-    name: "android.hardware.usb.gadget-service",
+    name: "android.hardware.usb.gadget-service.samsung",
     relative_install_path: "hw",
-    init_rc: ["android.hardware.usb.gadget-service.rc"],
+    init_rc: ["android.hardware.usb.gadget-service.samsung.rc"],
     vintf_fragments: [
-        "android.hardware.usb.gadget-service.xml",
+        "android.hardware.usb.gadget-service.samsung.xml",
     ],
     vendor: true,
     srcs: ["service_gadget.cpp", "UsbGadget.cpp"],
@@ -41,7 +33,9 @@ cc_binary {
         "libcutils",
         "libbinder_ndk",
     ],
-    static_libs: ["libpixelusb-aidl"],
+    static_libs: [
+        "libpixelusb-aidl",
+    ],
     proprietary: true,
     export_shared_lib_headers: [
         "android.frameworks.stats-V1-ndk",
index d3bd8f36acfdd2cde04542c5a81ca1d4de918500..15d43e906e2d33c77e44270a6ce6da49b43ed745 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2020 The Android Open Source Project
+ * Copyright (C) 2024 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -36,92 +37,21 @@ namespace hardware {
 namespace usb {
 namespace gadget {
 
-using ::android::base::GetBoolProperty;
-using ::android::hardware::google::pixel::usb::kUvcEnabled;
-
 string enabledPath;
-constexpr char kHsi2cPath[] = "/sys/devices/platform/10d60000.hsi2c";
-constexpr char kI2CPath[] = "/sys/devices/platform/10d60000.hsi2c/i2c-";
-constexpr char kAccessoryLimitCurrent[] = "i2c-max77759tcpc/usb_limit_accessory_current";
-constexpr char kAccessoryLimitCurrentEnable[] = "i2c-max77759tcpc/usb_limit_accessory_enable";
-constexpr char kUpdateSdpEnumTimeout[] = "i2c-max77759tcpc/update_sdp_enum_timeout";
-
-Status getI2cBusHelper(string *name) {
-    DIR *dp;
-
-    dp = opendir(kHsi2cPath);
-    if (dp != NULL) {
-        struct dirent *ep;
-
-        while ((ep = readdir(dp))) {
-            if (ep->d_type == DT_DIR) {
-                if (string::npos != string(ep->d_name).find("i2c-")) {
-                    std::strtok(ep->d_name, "-");
-                    *name = std::strtok(NULL, "-");
-                }
-            }
-        }
-        closedir(dp);
-        return Status::SUCCESS;
-    }
 
-    ALOGE("Failed to open %s", kHsi2cPath);
-    return Status::ERROR;
-}
+using ::android::base::GetBoolProperty;
+using ::android::hardware::google::pixel::usb::kUvcEnabled;
 
-UsbGadget::UsbGadget() : mGadgetIrqPath("") {
+UsbGadget::UsbGadget() {
     if (access(OS_DESC_PATH, R_OK) != 0) {
         ALOGE("configfs setup not done yet");
         abort();
     }
 }
 
-Status UsbGadget::getUsbGadgetIrqPath() {
-    std::string irqs;
-    size_t read_pos = 0;
-    size_t found_pos = 0;
-
-    if (!ReadFileToString(kProcInterruptsPath, &irqs)) {
-        ALOGE("cannot read all interrupts");
-        return Status::ERROR;
-    }
-
-    while (true) {
-        found_pos = irqs.find_first_of("\n", read_pos);
-        if (found_pos == std::string::npos) {
-            ALOGI("the string of all interrupts is unexpected");
-            return Status::ERROR;
-        }
-
-        std::string single_irq = irqs.substr(read_pos, found_pos - read_pos);
-
-        if (single_irq.find("dwc3", 0) != std::string::npos) {
-            unsigned int dwc3_irq_number;
-            size_t dwc3_pos = single_irq.find_first_of(":");
-            if (!ParseUint(single_irq.substr(0, dwc3_pos), &dwc3_irq_number)) {
-                ALOGI("unknown IRQ strings");
-                return Status::ERROR;
-            }
-
-            mGadgetIrqPath = kProcIrqPath + single_irq.substr(0, dwc3_pos) + kSmpAffinityList;
-            break;
-        }
-
-        if (found_pos == irqs.npos) {
-            ALOGI("USB gadget doesn't start");
-            return Status::ERROR;
-        }
-
-        read_pos = found_pos + 1;
-    }
-
-    return Status::SUCCESS;
-}
-
 void currentFunctionsAppliedCallback(bool functionsApplied, void *payload) {
     UsbGadget *gadget = (UsbGadget *)payload;
     gadget->mCurrentUsbFunctionsApplied = functionsApplied;
-    gadget->updateSdpEnumTimeout();
 }
 
 ScopedAStatus UsbGadget::getCurrentUsbFunctions(const shared_ptr<IUsbGadgetCallback> &callback,
@@ -184,180 +114,115 @@ Status UsbGadget::tearDownGadget() {
     return Status::SUCCESS;
 }
 
-static Status validateAndSetVidPid(uint64_t functions) {
-    Status ret = Status::SUCCESS;
-    std::string vendorFunctions = getVendorFunctions();
+static Status validateAndSetVidPid(int64_t functions) {
+    Status ret;
+    const char *vid, *pid;
 
     switch (functions) {
         case GadgetFunction::MTP:
-            if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else {
-                ret = Status(setVidPid("0x18d1", "0x4ee1"));
-            }
+            vid = "0x04E8";
+            pid = "0x6860";
             break;
         case GadgetFunction::ADB |
                 GadgetFunction::MTP:
-            if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else {
-                ret = Status(setVidPid("0x18d1", "0x4ee2"));
-            }
+            vid = "0x04E8";
+            pid = "0x6860";
             break;
         case GadgetFunction::RNDIS:
-        case GadgetFunction::RNDIS |
-                GadgetFunction::NCM:
-            if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else {
-                ret = Status(setVidPid("0x18d1", "0x4ee3"));
-            }
+            vid = "0x04E8";
+            pid = "0x6863";
             break;
         case GadgetFunction::ADB |
                 GadgetFunction::RNDIS:
-        case GadgetFunction::ADB |
-                GadgetFunction::RNDIS |
-                GadgetFunction::NCM:
-            if (vendorFunctions == "dm") {
-                ret = Status(setVidPid("0x04e8", "0x6862"));
-            } else {
-                if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                    ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                    ret = Status::CONFIGURATION_NOT_SUPPORTED;
-                } else {
-                    ret = Status(setVidPid("0x18d1", "0x4ee4"));
-                }
-            }
+            vid = "0x04E8";
+            pid = "0x6864";
             break;
         case GadgetFunction::PTP:
-            if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else {
-                ret = Status(setVidPid("0x18d1", "0x4ee5"));
-            }
+            vid = "0x04E8";
+            pid = "0x6865";
             break;
         case GadgetFunction::ADB |
                 GadgetFunction::PTP:
-            if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else {
-                ret = Status(setVidPid("0x18d1", "0x4ee6"));
-            }
+            vid = "0x04E8";
+            pid = "0x6865";
             break;
         case GadgetFunction::ADB:
-            if (vendorFunctions == "dm") {
-                ret = Status(setVidPid("0x04e8", "0x6862"));
-            } else if (vendorFunctions == "etr_miu") {
-                ret = Status(setVidPid("0x18d1", "0x4ee2"));
-            } else if (vendorFunctions == "uwb_acm"){
-                ret = Status(setVidPid("0x18d1", "0x4ee2"));
-            } else {
-                if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                    ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                    ret = Status::CONFIGURATION_NOT_SUPPORTED;
-                } else {
-                    ret = Status(setVidPid("0x18d1", "0x4ee7"));
-                }
-            }
+            vid = "0x04E8";
+            pid = "0x685D";
             break;
         case GadgetFunction::MIDI:
-            if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else {
-                ret = Status(setVidPid("0x18d1", "0x4ee8"));
-            }
+            vid = "0x04E8";
+            pid = "0x686C";
             break;
         case GadgetFunction::ADB |
                 GadgetFunction::MIDI:
-            if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else {
-                ret = Status(setVidPid("0x18d1", "0x4ee9"));
-            }
+            vid = "0x04E8";
+            pid = "0x686C";
             break;
         case GadgetFunction::ACCESSORY:
-            if (!(vendorFunctions == "user" || vendorFunctions == ""))
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-            ret = Status(setVidPid("0x18d1", "0x2d00"));
+            vid = "0x18D1";
+            pid = "0x2D00";
             break;
         case GadgetFunction::ADB |
                  GadgetFunction::ACCESSORY:
-            if (!(vendorFunctions == "user" || vendorFunctions == ""))
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-            ret = Status(setVidPid("0x18d1", "0x2d01"));
+            vid = "0x18d1";
+            pid = "0x2d01";
             break;
         case GadgetFunction::AUDIO_SOURCE:
-            if (!(vendorFunctions == "user" || vendorFunctions == ""))
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-            ret = Status(setVidPid("0x18d1", "0x2d02"));
+            vid = "0x18D1";
+            pid = "0x2D02";
             break;
         case GadgetFunction::ADB |
                 GadgetFunction::AUDIO_SOURCE:
-            if (!(vendorFunctions == "user" || vendorFunctions == ""))
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-            ret = Status(setVidPid("0x18d1", "0x2d03"));
+            vid = "0x18D1";
+            pid = "0x2D03";
             break;
         case GadgetFunction::ACCESSORY |
                 GadgetFunction::AUDIO_SOURCE:
-            if (!(vendorFunctions == "user" || vendorFunctions == ""))
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-            ret = Status(setVidPid("0x18d1", "0x2d04"));
+            vid = "0x18D1";
+            pid = "0x2D04";
             break;
         case GadgetFunction::ADB |
                 GadgetFunction::ACCESSORY |
                 GadgetFunction::AUDIO_SOURCE:
-            if (!(vendorFunctions == "user" || vendorFunctions == ""))
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-            ret = Status(setVidPid("0x18d1", "0x2d05"));
+            vid = "0x18D1";
+            pid = "0x2D05";
             break;
         case GadgetFunction::NCM:
-            if (!(vendorFunctions == "user" || vendorFunctions == ""))
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-            ret = Status(setVidPid("0x18d1", "0x4eeb"));
+            vid = "0x04E8";
+            pid = "0x685D";
             break;
         case GadgetFunction::ADB |
                 GadgetFunction::NCM:
-            if (vendorFunctions == "dm") {
-                ret = Status(setVidPid("0x04e8", "0x6862"));
-            } else {
-                if (!(vendorFunctions == "user" || vendorFunctions == ""))
-                    ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status(setVidPid("0x18d1", "0x4eec"));
-            }
+            vid = "0x04E8";
+            pid = "0x685D";
             break;
+        /*
+         * There are no known Samsung devices that implement the
+         * device as webcam feature, so for the following functions
+         * we use Google's vid/pid.
+         */
         case GadgetFunction::UVC:
-            if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else if (!GetBoolProperty(kUvcEnabled, false)) {
-                ALOGE("UVC function not enabled by config");
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else {
-                ret = Status(setVidPid("0x18d1", "0x4eed"));
-            }
+            vid = "0x18D1";
+            pid = "0x4EED";
             break;
         case GadgetFunction::ADB | GadgetFunction::UVC:
-            if (!(vendorFunctions == "user" || vendorFunctions == "")) {
-                ALOGE("Invalid vendorFunctions set: %s", vendorFunctions.c_str());
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else if (!GetBoolProperty(kUvcEnabled, false)) {
-                ALOGE("UVC function not enabled by config");
-                ret = Status::CONFIGURATION_NOT_SUPPORTED;
-            } else {
-                ret = Status(setVidPid("0x18d1", "0x4eee"));
-            }
+            vid = "0x18D1";
+            pid = "0x4EEE";
             break;
         default:
             ALOGE("Combination not supported");
             ret = Status::CONFIGURATION_NOT_SUPPORTED;
+            goto error;
+    }
+
+    ret = Status(setVidPid(vid, pid));
+    if (ret != Status::SUCCESS) {
+        ALOGE("Failed to update vid/pid");
+        goto error;
     }
+
+error:
     return ret;
 }
 
@@ -388,22 +253,6 @@ ScopedAStatus UsbGadget::reset(const shared_ptr<IUsbGadgetCallback> &callback,
     return ScopedAStatus::ok();
 }
 
-void UsbGadget::updateSdpEnumTimeout() {
-    string i2c_node, update_sdp_enum_timeout_path;
-
-    Status status = getI2cBusHelper(&i2c_node);
-    if (status != Status::SUCCESS) {
-        ALOGE("%s: Unable to locate i2c bus node", __func__);
-    }
-
-    update_sdp_enum_timeout_path = kI2CPath + i2c_node + "/" + kUpdateSdpEnumTimeout;
-    if (!WriteStringToFile("1", update_sdp_enum_timeout_path)) {
-        ALOGE("%s: Unable to write to %s.", __func__, update_sdp_enum_timeout_path.c_str());
-    } else {
-        ALOGI("%s: Updated SDP enumeration timeout value.", __func__);
-    }
-}
-
 Status UsbGadget::setupFunctions(long functions,
         const shared_ptr<IUsbGadgetCallback> &callback, uint64_t timeout,
         int64_t in_transactionId) {
@@ -414,43 +263,14 @@ Status UsbGadget::setupFunctions(long functions,
         Status::SUCCESS)
         return Status::ERROR;
 
-    std::string vendorFunctions = getVendorFunctions();
-
-    if (((functions & GadgetFunction::NCM) != 0) && (vendorFunctions != "dm")) {
-        if (linkFunction("ncm.gs9", i++))
-            return Status::ERROR;
-    }
-
-    if (vendorFunctions == "dm") {
-        ALOGI("enable usbradio debug functions");
-        if ((functions & GadgetFunction::RNDIS) != 0) {
-            if (linkFunction("acm.gs6", i++))
-                return Status::ERROR;
-            if (linkFunction("dm.gs7", i++))
-                return Status::ERROR;
-        } else {
-            if (linkFunction("dm.gs7", i++))
-                return Status::ERROR;
-            if (linkFunction("acm.gs6", i++))
-                return Status::ERROR;
-        }
-    } else if (vendorFunctions == "etr_miu") {
-        ALOGI("enable etr_miu functions");
-        if (linkFunction("etr_miu.gs11", i++))
-            return Status::ERROR;
-    } else if (vendorFunctions == "uwb_acm") {
-        ALOGI("enable uwb acm function");
-        if (linkFunction("acm.uwb0", i++))
-            return Status::ERROR;
-    }
-
     if ((functions & GadgetFunction::ADB) != 0) {
         ffsEnabled = true;
         if (Status(addAdb(&monitorFfs, &i)) != Status::SUCCESS)
             return Status::ERROR;
     }
 
-    if (((functions & GadgetFunction::NCM) != 0) && (vendorFunctions == "dm")) {
+    if ((functions & GadgetFunction::NCM) != 0) {
+        ALOGI("setCurrentUsbFunctions ncm");
         if (linkFunction("ncm.gs9", i++))
             return Status::ERROR;
     }
@@ -462,7 +282,6 @@ Status UsbGadget::setupFunctions(long functions,
         mCurrentUsbFunctionsApplied = true;
         if (callback)
             callback->setCurrentUsbFunctionsCb(functions, Status::SUCCESS, in_transactionId);
-        updateSdpEnumTimeout();
         return Status::SUCCESS;
     }
 
@@ -487,6 +306,7 @@ Status UsbGadget::setupFunctions(long functions,
     return Status::SUCCESS;
 }
 
+
 ScopedAStatus UsbGadget::setCurrentUsbFunctions(long functions,
                                                const shared_ptr<IUsbGadgetCallback> &callback,
                                                int64_t timeout,
@@ -495,19 +315,9 @@ ScopedAStatus UsbGadget::setCurrentUsbFunctions(long functions,
     std::string current_usb_power_operation_mode, current_usb_type;
     std::string usb_limit_sink_enable;
 
-    string accessoryCurrentLimitEnablePath, accessoryCurrentLimitPath, path;
-
     mCurrentUsbFunctions = functions;
     mCurrentUsbFunctionsApplied = false;
 
-    getI2cBusHelper(&path);
-    accessoryCurrentLimitPath = kI2CPath + path + "/" + kAccessoryLimitCurrent;
-    accessoryCurrentLimitEnablePath = kI2CPath + path + "/" + kAccessoryLimitCurrentEnable;
-
-    // Get the gadget IRQ number before tearDownGadget()
-    if (mGadgetIrqPath.empty())
-        getUsbGadgetIrqPath();
-
     // Unlink the gadget and stop the monitor if running.
     Status status = tearDownGadget();
     if (status != Status::SUCCESS) {
@@ -523,7 +333,7 @@ ScopedAStatus UsbGadget::setCurrentUsbFunctions(long functions,
         if (callback == NULL)
             return ScopedAStatus::fromServiceSpecificErrorWithMessage(
                 -1, "callback == NULL");
-        ScopedAStatus ret = callback->setCurrentUsbFunctionsCb(functions, Status::SUCCESS, in_transactionId);
+        ScopedAStatus ret = callback->setCurrentUsbFunctionsCb(functions, status, in_transactionId);
         if (!ret.isOk())
             ALOGE("Error while calling setCurrentUsbFunctionsCb %s", ret.getDescription().c_str());
         return ScopedAStatus::fromServiceSpecificErrorWithMessage(
@@ -541,40 +351,6 @@ ScopedAStatus UsbGadget::setCurrentUsbFunctions(long functions,
         goto error;
     }
 
-    if (functions & GadgetFunction::NCM) {
-        if (!mGadgetIrqPath.empty()) {
-            if (!WriteStringToFile(BIG_CORE, mGadgetIrqPath))
-                ALOGI("Cannot move gadget IRQ to big core, path:%s", mGadgetIrqPath.c_str());
-        }
-    } else {
-        if (!mGadgetIrqPath.empty()) {
-            if (!WriteStringToFile(MEDIUM_CORE, mGadgetIrqPath))
-                ALOGI("Cannot move gadget IRQ to medium core, path:%s", mGadgetIrqPath.c_str());
-        }
-    }
-
-    if (ReadFileToString(CURRENT_USB_TYPE_PATH, &current_usb_type))
-        current_usb_type = Trim(current_usb_type);
-
-    if (ReadFileToString(CURRENT_USB_POWER_OPERATION_MODE_PATH, &current_usb_power_operation_mode))
-        current_usb_power_operation_mode = Trim(current_usb_power_operation_mode);
-
-    if (functions & GadgetFunction::ACCESSORY &&
-        current_usb_type == "Unknown SDP [CDP] DCP" &&
-        (current_usb_power_operation_mode == "default" ||
-        current_usb_power_operation_mode == "1.5A")) {
-        if (!WriteStringToFile("1300000", accessoryCurrentLimitPath)) {
-            ALOGI("Write 1.3A to limit current fail");
-        } else {
-            if (!WriteStringToFile("1", accessoryCurrentLimitEnablePath)) {
-                ALOGI("Enable limit current fail");
-            }
-        }
-    } else {
-        if (!WriteStringToFile("0", accessoryCurrentLimitEnablePath))
-            ALOGI("unvote accessory limit current failed");
-    }
-
     ALOGI("Usb Gadget setcurrent functions called successfully");
     return ScopedAStatus::ok();
 
index 34330815536d32862f9a02bafd09b8f46d79710a..8ddd03a11daa13bba809203641f2cad07e4db4e8 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2020 The Android Open Source Project
+ * Copyright (C) 2024 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,7 +20,6 @@
 #include <android-base/file.h>
 #include <android-base/properties.h>
 #include <android-base/unique_fd.h>
-#include <android-base/parseint.h>
 #include <android-base/strings.h>
 #include <aidl/android/hardware/usb/gadget/BnUsbGadget.h>
 #include <aidl/android/hardware/usb/gadget/BnUsbGadgetCallback.h>
@@ -50,14 +50,12 @@ using ::aidl::android::hardware::usb::gadget::Status;
 using ::aidl::android::hardware::usb::gadget::UsbSpeed;
 using ::android::base::GetProperty;
 using ::android::base::SetProperty;
-using ::android::base::ParseUint;
 using ::android::base::unique_fd;
 using ::android::base::ReadFileToString;
 using ::android::base::Trim;
 using ::android::base::WriteStringToFile;
 using ::android::hardware::google::pixel::usb::addAdb;
 using ::android::hardware::google::pixel::usb::addEpollFd;
-using ::android::hardware::google::pixel::usb::getVendorFunctions;
 using ::android::hardware::google::pixel::usb::kDebug;
 using ::android::hardware::google::pixel::usb::kDisconnectWaitUs;
 using ::android::hardware::google::pixel::usb::linkFunction;
@@ -69,33 +67,20 @@ using ::ndk::ScopedAStatus;
 using ::std::shared_ptr;
 using ::std::string;
 
-constexpr char kGadgetName[] = "11210000.dwc3";
-constexpr char kProcInterruptsPath[] = "/proc/interrupts";
-constexpr char kProcIrqPath[] = "/proc/irq/";
-constexpr char kSmpAffinityList[] = "/smp_affinity_list";
+constexpr char kGadgetName[] = "10c00000.dwc3";
 #ifndef UDC_PATH
-#define UDC_PATH "/sys/class/udc/11210000.dwc3/"
+#define UDC_PATH "/sys/class/udc/10c00000.dwc3/"
 #endif
 static MonitorFfs monitorFfs(kGadgetName);
 
+#define DEVICE "device/"
 #define SPEED_PATH UDC_PATH "current_speed"
 
-#define BIG_CORE "6"
-#define MEDIUM_CORE "4"
-
-#define POWER_SUPPLY_PATH      "/sys/class/power_supply/usb/"
-#define USB_PORT0_PATH         "/sys/class/typec/port0/"
-
-#define CURRENT_MAX_PATH                       POWER_SUPPLY_PATH       "current_max"
-#define CURRENT_USB_TYPE_PATH                  POWER_SUPPLY_PATH       "usb_type"
-#define CURRENT_USB_POWER_OPERATION_MODE_PATH  USB_PORT0_PATH          "power_operation_mode"
-
 struct UsbGadget : public BnUsbGadget {
     UsbGadget();
 
     // Makes sure that only one request is processed at a time.
     std::mutex mLockSetCurrentFunction;
-    std::string mGadgetIrqPath;
     long mCurrentUsbFunctions;
     bool mCurrentUsbFunctionsApplied;
     UsbSpeed mUsbSpeed;
@@ -115,13 +100,8 @@ struct UsbGadget : public BnUsbGadget {
 
     ScopedAStatus setVidPid(const char *vid,const char *pid);
 
-    // Indicates to the kernel that the gadget service is ready and the kernel can
-    // set SDP timeout to a lower value.
-    void updateSdpEnumTimeout();
-
   private:
     Status tearDownGadget();
-    Status getUsbGadgetIrqPath();
     Status setupFunctions(long functions, const shared_ptr<IUsbGadgetCallback> &callback,
             uint64_t timeout, int64_t in_transactionId);
 };
diff --git a/aidl/usb/gadget/android.hardware.usb.gadget-service.rc b/aidl/usb/gadget/android.hardware.usb.gadget-service.rc
deleted file mode 100644 (file)
index 68fd3ae..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-service vendor.usb-gadget-hal /vendor/bin/hw/android.hardware.usb.gadget-service
-    class hal
-    user system
-    group system shell mtp
-
-on post-fs
-    chown root system /sys/class/typec/port0/power_role
-    chown root system /sys/class/typec/port0/data_role
-    chown root system /sys/class/typec/port0/port_type
-    chown root system /sys/devices/platform/10d60000.hsi2c/i2c-2/i2c-max77759tcpc/contaminant_detection
-    chown root system /sys/devices/platform/11210000.usb/dwc3_exynos_otg_b_sess
-    chown root system /sys/devices/platform/11210000.usb/dwc3_exynos_otg_id
-    chown root system /sys/devices/platform/11210000.usb/usb_data_enabled
-    chmod 664 /sys/class/typec/port0/power_role
-    chmod 664 /sys/class/typec/port0/data_role
-    chmod 664 /sys/class/typec/port0/port_type
-    chmod 664 /sys/devices/platform/11210000.usb/dwc3_exynos_otg_b_sess
-    chmod 664 /sys/devices/platform/11210000.usb/dwc3_exynos_otg_id
-    chmod 664 /sys/devices/platform/11210000.usb/usb_data_enabled
diff --git a/aidl/usb/gadget/android.hardware.usb.gadget-service.samsung.rc b/aidl/usb/gadget/android.hardware.usb.gadget-service.samsung.rc
new file mode 100644 (file)
index 0000000..9d767ce
--- /dev/null
@@ -0,0 +1,4 @@
+service vendor.usb-gadget-hal /vendor/bin/hw/android.hardware.usb.gadget-service.samsung
+    class hal
+    user system
+    group system shell mtp
diff --git a/aidl/usb/gadget/android.hardware.usb.gadget-service.samsung.xml b/aidl/usb/gadget/android.hardware.usb.gadget-service.samsung.xml
new file mode 100644 (file)
index 0000000..e7eebc3
--- /dev/null
@@ -0,0 +1,10 @@
+<manifest version="1.0" type="device">
+    <hal format="aidl">
+        <name>android.hardware.usb.gadget</name>
+        <version>1</version>
+        <interface>
+            <name>IUsbGadget</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+</manifest>
diff --git a/aidl/usb/gadget/android.hardware.usb.gadget-service.xml b/aidl/usb/gadget/android.hardware.usb.gadget-service.xml
deleted file mode 100644 (file)
index e7eebc3..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<manifest version="1.0" type="device">
-    <hal format="aidl">
-        <name>android.hardware.usb.gadget</name>
-        <version>1</version>
-        <interface>
-            <name>IUsbGadget</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-</manifest>
index 3634b5d330671ab3d037cd3c9cde61651aa1e8f9..c8b517b3cc28c658f6fd8179a990981c756a3e50 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2024 The LineageOS Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +15,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "android.hardware.usb.gadget-service"
+#define LOG_TAG "android.hardware.usb.gadget-service.samsung"
 
 #include <android-base/logging.h>
 #include <android/binder_manager.h>