diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-05-22 22:16:38 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-05-22 22:16:38 +0000 |
commit | b5f934b0ed8358274815dd46f4298f077e5a6ceb (patch) | |
tree | 61d85ff0b555dcaf2f63d6eaeb2fd9aa35d1b2dd | |
parent | fdada18501c4770a56ea24e7959a9327ee33a6fb (diff) | |
parent | ebd7fca53adabe57deded6f78d5ef6d2945d23bc (diff) | |
download | gs101-b5f934b0ed8358274815dd46f4298f077e5a6ceb.tar.gz |
Snap for 8627648 from ebd7fca53adabe57deded6f78d5ef6d2945d23bc to tm-frc-permission-release
Change-Id: Ic7bcd1983cbcc2141bdef364ff04454a87d7b820
-rw-r--r-- | default-permissions.xml | 2 | ||||
-rw-r--r-- | device.mk | 4 | ||||
-rw-r--r-- | usb/gadget/UsbGadget.cpp | 59 | ||||
-rw-r--r-- | usb/gadget/UsbGadget.h | 7 | ||||
-rw-r--r-- | usb/usb/android.hardware.usb-service.rc | 16 |
5 files changed, 86 insertions, 2 deletions
diff --git a/default-permissions.xml b/default-permissions.xml index 81624d3c..50860fed 100644 --- a/default-permissions.xml +++ b/default-permissions.xml @@ -66,6 +66,8 @@ <exception package="com.google.android.apps.scone"> <!-- Used to call ActivityTransition API for Smart PNO --> <permission name="android.permission.ACTIVITY_RECOGNITION" fixed="false"/> + <!-- Notifications --> + <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/> </exception> <exception @@ -1178,8 +1178,8 @@ PRODUCT_PACKAGES_DEBUG += BatteryStatsViewer DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE := device/google/gs101/device_framework_matrix_product.xml # Preopt SystemUI -PRODUCT_DEXPREOPT_SPEED_APPS += \ - SystemUIGoogle +PRODUCT_DEXPREOPT_SPEED_APPS += SystemUIGoogle # For internal +PRODUCT_DEXPREOPT_SPEED_APPS += SystemUI # For AOSP # Compile SystemUI on device with `speed`. PRODUCT_PROPERTY_OVERRIDES += \ diff --git a/usb/gadget/UsbGadget.cpp b/usb/gadget/UsbGadget.cpp index 361cefd7..b6d1dd39 100644 --- a/usb/gadget/UsbGadget.cpp +++ b/usb/gadget/UsbGadget.cpp @@ -33,6 +33,12 @@ namespace gadget { namespace V1_2 { namespace implementation { +string enabledPath; +constexpr char kHsi2cPath[] = "/sys/devices/platform/10d50000.hsi2c"; +constexpr char kI2CPath[] = "/sys/devices/platform/10d50000.hsi2c/i2c-"; +constexpr char kAccessoryLimitCurrent[] = "i2c-max77759tcpc/usb_limit_accessory_current"; +constexpr char kAccessoryLimitCurrentEnable[] = "i2c-max77759tcpc/usb_limit_accessory_enable"; + UsbGadget::UsbGadget() : mGadgetIrqPath("") { if (access(OS_DESC_PATH, R_OK) != 0) { ALOGE("configfs setup not done yet"); @@ -380,14 +386,45 @@ V1_0::Status UsbGadget::setupFunctions(uint64_t functions, return Status::SUCCESS; } +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; +} + Return<void> UsbGadget::setCurrentUsbFunctions(uint64_t functions, const sp<V1_0::IUsbGadgetCallback> &callback, uint64_t timeout) { std::unique_lock<std::mutex> lk(mLockSetCurrentFunction); + 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(); @@ -435,6 +472,28 @@ Return<void> UsbGadget::setCurrentUsbFunctions(uint64_t functions, } } + 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 Void(); diff --git a/usb/gadget/UsbGadget.h b/usb/gadget/UsbGadget.h index f89476d8..8a2f7fdd 100644 --- a/usb/gadget/UsbGadget.h +++ b/usb/gadget/UsbGadget.h @@ -86,6 +86,13 @@ static MonitorFfs monitorFfs(kGadgetName); #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 IUsbGadget { UsbGadget(); diff --git a/usb/usb/android.hardware.usb-service.rc b/usb/usb/android.hardware.usb-service.rc index 5b966c61..e052f433 100644 --- a/usb/usb/android.hardware.usb-service.rc +++ b/usb/usb/android.hardware.usb-service.rc @@ -12,6 +12,14 @@ on post-fs chown root system /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/contaminant_detection chown root system /sys/devices/platform/10d50000.hsi2c/i2c-7/i2c-max77759tcpc/contaminant_detection chown root system /sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc/contaminant_detection + chown root system /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_accessory_current + chown root system /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_accessory_current + chown root system /sys/devices/platform/10d50000.hsi2c/i2c-7/i2c-max77759tcpc/usb_limit_accessory_current + chown root system /sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc/usb_limit_accessory_current + chown root system /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_accessory_enable + chown root system /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_accessory_enable + chown root system /sys/devices/platform/10d50000.hsi2c/i2c-7/i2c-max77759tcpc/usb_limit_accessory_enable + chown root system /sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc/usb_limit_accessory_enable chown root system /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_sink_current chown root system /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_current chown root system /sys/devices/platform/10d50000.hsi2c/i2c-7/i2c-max77759tcpc/usb_limit_sink_current @@ -38,6 +46,14 @@ on post-fs chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/contaminant_detection chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-7/i2c-max77759tcpc/contaminant_detection chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc/contaminant_detection + chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_accessory_current + chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_accessory_current + chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-7/i2c-max77759tcpc/usb_limit_accessory_current + chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc/usb_limit_accessory_current + chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_accessory_enable + chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_accessory_enable + chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-7/i2c-max77759tcpc/usb_limit_accessory_enable + chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-8/i2c-max77759tcpc/usb_limit_accessory_enable chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_sink_current chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_current chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-7/i2c-max77759tcpc/usb_limit_sink_current |