diff --git a/conf/init.gs101.rc b/conf/init.gs101.rc index fc6a3073..6cfdcef3 100644 --- a/conf/init.gs101.rc +++ b/conf/init.gs101.rc @@ -894,13 +894,19 @@ on post-fs-data # ODPM on fs chown system system /sys/devices/platform/acpm_mfd_bus@17500000/i2c-0/i2c-s2mpg10mfd/s2mpg10-meter/s2mpg10-odpm/iio:device1/enabled_rails + chown system system /sys/devices/platform/acpm_mfd_bus@17500000/i2c-0/0-001f/s2mpg10-meter/s2mpg10-odpm/iio:device1/enabled_rails chown system system /sys/devices/platform/acpm_mfd_bus@17510000/i2c-1/i2c-s2mpg11mfd/s2mpg11-meter/s2mpg11-odpm/iio:device0/enabled_rails + chown system system /sys/devices/platform/acpm_mfd_bus@17510000/i2c-1/1-002f/s2mpg11-meter/s2mpg11-odpm/iio:device0/enabled_rails chown system system /sys/devices/platform/acpm_mfd_bus@17500000/i2c-6/i2c-s2mpg10mfd/s2mpg10-meter/s2mpg10-odpm/iio:device0/enabled_rails + chown system system /sys/devices/platform/acpm_mfd_bus@17500000/i2c-6/6-001f/s2mpg10-meter/s2mpg10-odpm/iio:device0/enabled_rails chown system system /sys/devices/platform/acpm_mfd_bus@17510000/i2c-7/i2c-s2mpg11mfd/s2mpg11-meter/s2mpg11-odpm/iio:device1/enabled_rails + chown system system /sys/devices/platform/acpm_mfd_bus@17510000/i2c-7/7-002f/s2mpg11-meter/s2mpg11-odpm/iio:device1/enabled_rails chown system system /sys/devices/platform/acpm_mfd_bus@17500000/i2c-7/i2c-s2mpg10mfd/s2mpg10-meter/s2mpg10-odpm/iio:device0/enabled_rails + chown system system /sys/devices/platform/acpm_mfd_bus@17500000/i2c-7/7-001f/s2mpg10-meter/s2mpg10-odpm/iio:device0/enabled_rails chown system system /sys/devices/platform/acpm_mfd_bus@17510000/i2c-8/i2c-s2mpg11mfd/s2mpg11-meter/s2mpg11-odpm/iio:device1/enabled_rails + chown system system /sys/devices/platform/acpm_mfd_bus@17510000/i2c-8/8-002f/s2mpg11-meter/s2mpg11-odpm/iio:device1/enabled_rails on post-fs-data mkdir /data/vendor/powerstats 0771 system system diff --git a/conf/init.gs101.usb.rc b/conf/init.gs101.usb.rc index 749d4b4d..6b04012e 100644 --- a/conf/init.gs101.usb.rc +++ b/conf/init.gs101.usb.rc @@ -71,6 +71,83 @@ on early-boot # acm function for uwb mkdir /config/usb_gadget/g1/functions/acm.uwb0 + # chown file/folder permission + chown system system /config/usb_gadget/ + chown system system /config/usb_gadget/g1 + chown system system /config/usb_gadget/g1/UDC + chown system system /config/usb_gadget/g1/bDeviceClass + chown system system /config/usb_gadget/g1/bDeviceProtocol + chown system system /config/usb_gadget/g1/bDeviceSubClass + chown system system /config/usb_gadget/g1/bMaxPacketSize0 + chown system system /config/usb_gadget/g1/bcdDevice + chown system system /config/usb_gadget/g1/bcdUSB + chown system system /config/usb_gadget/g1/configs + chown system system /config/usb_gadget/g1/configs/b.1 + chown system system /config/usb_gadget/g1/configs/b.1/MaxPower + chown system system /config/usb_gadget/g1/configs/b.1/bmAttributes + chown system system /config/usb_gadget/g1/configs/b.1/strings + chown system system /config/usb_gadget/g1/functions + chown system system /config/usb_gadget/g1/functions/accessory.gs2 + chown system system /config/usb_gadget/g1/functions/acm.gs6 + chown system system /config/usb_gadget/g1/functions/acm.gs6/port_num + chown system system /config/usb_gadget/g1/functions/acm.uwb0 + chown system system /config/usb_gadget/g1/functions/acm.uwb0/port_num + chown system system /config/usb_gadget/g1/functions/audio_source.gs3 + chown system system /config/usb_gadget/g1/functions/dm.gs7 + chown system system /config/usb_gadget/g1/functions/ffs.adb + chown system system /config/usb_gadget/g1/functions/ffs.mtp + chown system system /config/usb_gadget/g1/functions/ffs.ptp + chown system system /config/usb_gadget/g1/functions/midi.gs5 + chown system system /config/usb_gadget/g1/functions/midi.gs5/buflen + chown system system /config/usb_gadget/g1/functions/midi.gs5/id + chown system system /config/usb_gadget/g1/functions/midi.gs5/in_ports + chown system system /config/usb_gadget/g1/functions/midi.gs5/index + chown system system /config/usb_gadget/g1/functions/midi.gs5/out_ports + chown system system /config/usb_gadget/g1/functions/midi.gs5/qlen + chown system system /config/usb_gadget/g1/functions/mtp.gs0 + chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc + chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP + chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id + chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/sub_compatible_id + chown system system /config/usb_gadget/g1/functions/ncm.gs9 + chown system system /config/usb_gadget/g1/functions/ncm.gs9/dev_addr + chown system system /config/usb_gadget/g1/functions/ncm.gs9/host_addr + chown system system /config/usb_gadget/g1/functions/ncm.gs9/ifname + chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc + chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm + chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/compatible_id + chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/sub_compatible_id + chown system system /config/usb_gadget/g1/functions/ncm.gs9/qmult + chown system system /config/usb_gadget/g1/functions/ptp.gs1 + chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc + chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP + chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id + chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/sub_compatible_id + chown system system /config/usb_gadget/g1/functions/rndis.gs4 + chown system system /config/usb_gadget/g1/functions/rndis.gs4/class + chown system system /config/usb_gadget/g1/functions/rndis.gs4/dev_addr + chown system system /config/usb_gadget/g1/functions/rndis.gs4/host_addr + chown system system /config/usb_gadget/g1/functions/rndis.gs4/ifname + chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc + chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis + chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/compatible_id + chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/sub_compatible_id + chown system system /config/usb_gadget/g1/functions/rndis.gs4/protocol + chown system system /config/usb_gadget/g1/functions/rndis.gs4/qmult + chown system system /config/usb_gadget/g1/functions/rndis.gs4/subclass + chown system system /config/usb_gadget/g1/idProduct + chown system system /config/usb_gadget/g1/idVendor + chown system system /config/usb_gadget/g1/max_speed + chown system system /config/usb_gadget/g1/os_desc + chown system system /config/usb_gadget/g1/os_desc/b.1 + chown system system /config/usb_gadget/g1/os_desc/b_vendor_code + chown system system /config/usb_gadget/g1/os_desc/qw_sign + chown system system /config/usb_gadget/g1/os_desc/use + chown system system /config/usb_gadget/g1/strings + chown system system /config/usb_gadget/g1/strings/0x409 + chown system system /config/usb_gadget/g1/strings/0x409/manufacturer + chown system system /config/usb_gadget/g1/strings/0x409/product + chown system system /config/usb_gadget/g1/strings/0x409/serialnumber setprop vendor.usb.functions.ready 1 on boot @@ -88,12 +165,6 @@ on property:vendor.usb.config=* on property:persist.vendor.usb.usbradio.config=* start usbd -on property:vendor.usb.dwc3_irq=medium - exec /vendor/bin/hw/set_usb_irq.sh medium - -on property:vendor.usb.dwc3_irq=big - exec /vendor/bin/hw/set_usb_irq.sh big - on charger mkdir /config/usb_gadget/g1 mkdir /config/usb_gadget/g1/strings/0x409 diff --git a/device.mk b/device.mk index 927d413d..fda1dd67 100644 --- a/device.mk +++ b/device.mk @@ -313,7 +313,6 @@ PRODUCT_COPY_FILES += \ # Shell scripts PRODUCT_COPY_FILES += \ device/google/gs101/init.insmod.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.insmod.sh \ - device/google/gs101/set_usb_irq.sh:$(TARGET_COPY_OUT_VENDOR)/bin/hw/set_usb_irq.sh \ device/google/gs101/disable_contaminant_detection.sh:$(TARGET_COPY_OUT_VENDOR)/bin/hw/disable_contaminant_detection.sh # insmod files diff --git a/fingerprint/udfps_common.mk b/fingerprint/udfps_common.mk index a41b3adf..9d413196 100644 --- a/fingerprint/udfps_common.mk +++ b/fingerprint/udfps_common.mk @@ -24,6 +24,7 @@ DEVICE_MANIFEST_FILE += \ endif # Include the Goodix AIDL HAL namespaces. +PRODUCT_SOONG_NAMESPACES += vendor/goodix/udfps/fp_utils ifeq ($(GOODIX_CONFIG_BUILD_VERSION), g6_trusty) PRODUCT_SOONG_NAMESPACES += vendor/goodix/udfps/g6_trusty PRODUCT_SOONG_NAMESPACES += vendor/goodix/udfps/g6_aidl_trusty diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml index 1be46320..c63ff265 100644 --- a/rro_overlays/WifiOverlay/res/values/config.xml +++ b/rro_overlays/WifiOverlay/res/values/config.xml @@ -100,9 +100,6 @@ be checked via NL80211 interface --> true - - true - true diff --git a/set_usb_irq.sh b/set_usb_irq.sh deleted file mode 100755 index 29d37812..00000000 --- a/set_usb_irq.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/vendor/bin/sh - -# Switch into /proc/irq/$IRQ for the dwc3 usb controller -cd /proc/irq/*/dwc3/.. || exit 7 - -# Move the USB Controller (DWC3) interrupt as requested -# Modem and DIT are on 0/2/5 depending on throughput, so avoid those. -# 0-3 small, 4-5 medium, 6-7 big -case "$1" in - medium) core=4;; - big) core=6;; - *) core=0;; -esac - -# This can sometimes fail due to smp_affinity_list no longer existing... -echo "${core}" > smp_affinity_list diff --git a/usb/gadget/UsbGadget.cpp b/usb/gadget/UsbGadget.cpp index 5c0021fe..361cefd7 100644 --- a/usb/gadget/UsbGadget.cpp +++ b/usb/gadget/UsbGadget.cpp @@ -33,13 +33,55 @@ namespace gadget { namespace V1_2 { namespace implementation { -UsbGadget::UsbGadget() { +UsbGadget::UsbGadget() : mGadgetIrqPath("") { if (access(OS_DESC_PATH, R_OK) != 0) { ALOGE("configfs setup not done yet"); abort(); } } +V1_0::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; @@ -346,6 +388,10 @@ Return UsbGadget::setCurrentUsbFunctions(uint64_t functions, mCurrentUsbFunctions = functions; mCurrentUsbFunctionsApplied = false; + // Get the gadget IRQ number before tearDownGadget() + if (mGadgetIrqPath.empty()) + getUsbGadgetIrqPath(); + // Unlink the gadget and stop the monitor if running. V1_0::Status status = tearDownGadget(); if (status != Status::SUCCESS) { @@ -378,9 +424,15 @@ Return UsbGadget::setCurrentUsbFunctions(uint64_t functions, } if (functions & GadgetFunction::NCM) { - SetProperty("vendor.usb.dwc3_irq", "big"); + if (!mGadgetIrqPath.empty()) { + if (!WriteStringToFile(BIG_CORE, mGadgetIrqPath)) + ALOGI("Cannot move gadget IRQ to big core, path:%s", mGadgetIrqPath.c_str()); + } } else { - SetProperty("vendor.usb.dwc3_irq", "medium"); + if (!mGadgetIrqPath.empty()) { + if (!WriteStringToFile(MEDIUM_CORE, mGadgetIrqPath)) + ALOGI("Cannot move gadget IRQ to medium core, path:%s", mGadgetIrqPath.c_str()); + } } ALOGI("Usb Gadget setcurrent functions called successfully"); diff --git a/usb/gadget/UsbGadget.h b/usb/gadget/UsbGadget.h index 2669f8da..f89476d8 100644 --- a/usb/gadget/UsbGadget.h +++ b/usb/gadget/UsbGadget.h @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,7 @@ namespace implementation { using ::android::sp; 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; @@ -71,6 +73,9 @@ using ::android::hardware::usb::gadget::V1_2::GadgetFunction; using ::std::string; constexpr char kGadgetName[] = "11110000.dwc3"; +constexpr char kProcInterruptsPath[] = "/proc/interrupts"; +constexpr char kProcIrqPath[] = "/proc/irq/"; +constexpr char kSmpAffinityList[] = "/smp_affinity_list"; #ifndef UDC_PATH #define UDC_PATH "/sys/class/udc/11110000.dwc3/" #endif @@ -78,11 +83,15 @@ static MonitorFfs monitorFfs(kGadgetName); #define SPEED_PATH UDC_PATH "current_speed" +#define BIG_CORE "6" +#define MEDIUM_CORE "4" + struct UsbGadget : public IUsbGadget { UsbGadget(); // Makes sure that only one request is processed at a time. std::mutex mLockSetCurrentFunction; + std::string mGadgetIrqPath; uint64_t mCurrentUsbFunctions; bool mCurrentUsbFunctionsApplied; UsbSpeed mUsbSpeed; @@ -99,6 +108,7 @@ struct UsbGadget : public IUsbGadget { private: Status tearDownGadget(); + Status getUsbGadgetIrqPath(); Status setupFunctions(uint64_t functions, const sp &callback, uint64_t timeout); }; diff --git a/usb/gadget/android.hardware.usb.gadget-service.gs101.rc b/usb/gadget/android.hardware.usb.gadget-service.gs101.rc index d0e355c3..8fa88680 100644 --- a/usb/gadget/android.hardware.usb.gadget-service.gs101.rc +++ b/usb/gadget/android.hardware.usb.gadget-service.gs101.rc @@ -21,81 +21,3 @@ on post-fs chmod 664 /sys/devices/platform/11110000.usb/dwc3_exynos_otg_b_sess chmod 664 /sys/devices/platform/11110000.usb/dwc3_exynos_otg_id chmod 664 /sys/devices/platform/11110000.usb/usb_data_enabled - -on property:vendor.usb.functions.ready=1 - chown system system /config/usb_gadget/ - chown system system /config/usb_gadget/g1 - chown system system /config/usb_gadget/g1/UDC - chown system system /config/usb_gadget/g1/bDeviceClass - chown system system /config/usb_gadget/g1/bDeviceProtocol - chown system system /config/usb_gadget/g1/bDeviceSubClass - chown system system /config/usb_gadget/g1/bMaxPacketSize0 - chown system system /config/usb_gadget/g1/bcdDevice - chown system system /config/usb_gadget/g1/bcdUSB - chown system system /config/usb_gadget/g1/configs - chown system system /config/usb_gadget/g1/configs/b.1 - chown system system /config/usb_gadget/g1/configs/b.1/MaxPower - chown system system /config/usb_gadget/g1/configs/b.1/bmAttributes - chown system system /config/usb_gadget/g1/configs/b.1/strings - chown system system /config/usb_gadget/g1/functions - chown system system /config/usb_gadget/g1/functions/accessory.gs2 - chown system system /config/usb_gadget/g1/functions/acm.gs6 - chown system system /config/usb_gadget/g1/functions/acm.gs6/port_num - chown system system /config/usb_gadget/g1/functions/acm.uwb0 - chown system system /config/usb_gadget/g1/functions/acm.uwb0/port_num - chown system system /config/usb_gadget/g1/functions/audio_source.gs3 - chown system system /config/usb_gadget/g1/functions/dm.gs7 - chown system system /config/usb_gadget/g1/functions/ffs.adb - chown system system /config/usb_gadget/g1/functions/ffs.mtp - chown system system /config/usb_gadget/g1/functions/ffs.ptp - chown system system /config/usb_gadget/g1/functions/midi.gs5 - chown system system /config/usb_gadget/g1/functions/midi.gs5/buflen - chown system system /config/usb_gadget/g1/functions/midi.gs5/id - chown system system /config/usb_gadget/g1/functions/midi.gs5/in_ports - chown system system /config/usb_gadget/g1/functions/midi.gs5/index - chown system system /config/usb_gadget/g1/functions/midi.gs5/out_ports - chown system system /config/usb_gadget/g1/functions/midi.gs5/qlen - chown system system /config/usb_gadget/g1/functions/mtp.gs0 - chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc - chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP - chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id - chown system system /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/sub_compatible_id - chown system system /config/usb_gadget/g1/functions/ncm.gs9 - chown system system /config/usb_gadget/g1/functions/ncm.gs9/dev_addr - chown system system /config/usb_gadget/g1/functions/ncm.gs9/host_addr - chown system system /config/usb_gadget/g1/functions/ncm.gs9/ifname - chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc - chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm - chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/compatible_id - chown system system /config/usb_gadget/g1/functions/ncm.gs9/os_desc/interface.ncm/sub_compatible_id - chown system system /config/usb_gadget/g1/functions/ncm.gs9/qmult - chown system system /config/usb_gadget/g1/functions/ptp.gs1 - chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc - chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP - chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id - chown system system /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/sub_compatible_id - chown system system /config/usb_gadget/g1/functions/rndis.gs4 - chown system system /config/usb_gadget/g1/functions/rndis.gs4/class - chown system system /config/usb_gadget/g1/functions/rndis.gs4/dev_addr - chown system system /config/usb_gadget/g1/functions/rndis.gs4/host_addr - chown system system /config/usb_gadget/g1/functions/rndis.gs4/ifname - chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc - chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis - chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/compatible_id - chown system system /config/usb_gadget/g1/functions/rndis.gs4/os_desc/interface.rndis/sub_compatible_id - chown system system /config/usb_gadget/g1/functions/rndis.gs4/protocol - chown system system /config/usb_gadget/g1/functions/rndis.gs4/qmult - chown system system /config/usb_gadget/g1/functions/rndis.gs4/subclass - chown system system /config/usb_gadget/g1/idProduct - chown system system /config/usb_gadget/g1/idVendor - chown system system /config/usb_gadget/g1/max_speed - chown system system /config/usb_gadget/g1/os_desc - chown system system /config/usb_gadget/g1/os_desc/b.1 - chown system system /config/usb_gadget/g1/os_desc/b_vendor_code - chown system system /config/usb_gadget/g1/os_desc/qw_sign - chown system system /config/usb_gadget/g1/os_desc/use - chown system system /config/usb_gadget/g1/strings - chown system system /config/usb_gadget/g1/strings/0x409 - chown system system /config/usb_gadget/g1/strings/0x409/manufacturer - chown system system /config/usb_gadget/g1/strings/0x409/product - chown system system /config/usb_gadget/g1/strings/0x409/serialnumber