From: bengris32 Date: Wed, 21 Feb 2024 16:22:56 +0000 (+0100) Subject: aidl: usb: gadget: Rebrand to samsung X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=5f77bf75dd34d93d6838b6b76a18d20f7897d791;p=GitHub%2FLineageOS%2Fandroid_hardware_samsung.git aidl: usb: gadget: Rebrand to samsung [Linux4: Switch to samsung vid/pid] Co-Authored-By: Tim Zimmermann Change-Id: I93f1713f466b91159bebcf303766d83db796c5c0 --- diff --git a/aidl/usb/gadget/Android.bp b/aidl/usb/gadget/Android.bp index 518a735..76e5fa9 100644 --- a/aidl/usb/gadget/Android.bp +++ b/aidl/usb/gadget/Android.bp @@ -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. @@ -13,21 +14,12 @@ // 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", diff --git a/aidl/usb/gadget/UsbGadget.cpp b/aidl/usb/gadget/UsbGadget.cpp index d3bd8f3..15d43e9 100644 --- a/aidl/usb/gadget/UsbGadget.cpp +++ b/aidl/usb/gadget/UsbGadget.cpp @@ -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 &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 &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 &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 &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, ¤t_usb_type)) - current_usb_type = Trim(current_usb_type); - - if (ReadFileToString(CURRENT_USB_POWER_OPERATION_MODE_PATH, ¤t_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(); diff --git a/aidl/usb/gadget/UsbGadget.h b/aidl/usb/gadget/UsbGadget.h index 3433081..8ddd03a 100644 --- a/aidl/usb/gadget/UsbGadget.h +++ b/aidl/usb/gadget/UsbGadget.h @@ -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 #include #include -#include #include #include #include @@ -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 &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 index 68fd3ae..0000000 --- a/aidl/usb/gadget/android.hardware.usb.gadget-service.rc +++ /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 index 0000000..9d767ce --- /dev/null +++ b/aidl/usb/gadget/android.hardware.usb.gadget-service.samsung.rc @@ -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 index 0000000..e7eebc3 --- /dev/null +++ b/aidl/usb/gadget/android.hardware.usb.gadget-service.samsung.xml @@ -0,0 +1,10 @@ + + + android.hardware.usb.gadget + 1 + + IUsbGadget + default + + + 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 index e7eebc3..0000000 --- a/aidl/usb/gadget/android.hardware.usb.gadget-service.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - android.hardware.usb.gadget - 1 - - IUsbGadget - default - - - diff --git a/aidl/usb/gadget/service_gadget.cpp b/aidl/usb/gadget/service_gadget.cpp index 3634b5d..c8b517b 100644 --- a/aidl/usb/gadget/service_gadget.cpp +++ b/aidl/usb/gadget/service_gadget.cpp @@ -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 #include