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