Merge "Limit hub tuning when enable_hub is enabled" into main
This commit is contained in:
commit
e04cd291ad
1 changed files with 32 additions and 4 deletions
|
@ -54,6 +54,7 @@ namespace usb_flags = android::hardware::usb::flags;
|
|||
using aidl::android::frameworks::stats::IStats;
|
||||
using android::base::GetProperty;
|
||||
using android::base::Join;
|
||||
using android::base::ParseInt;
|
||||
using android::base::ParseUint;
|
||||
using android::base::Tokenize;
|
||||
using android::base::Trim;
|
||||
|
@ -101,7 +102,9 @@ constexpr char kThermalZoneForTempReadPrimary[] = "usb_pwr_therm2";
|
|||
constexpr char kThermalZoneForTempReadSecondary1[] = "usb_pwr_therm";
|
||||
constexpr char kThermalZoneForTempReadSecondary2[] = "qi_therm";
|
||||
constexpr char kPogoUsbActive[] = "/sys/devices/platform/google,pogo/pogo_usb_active";
|
||||
constexpr char kPogoEnableHub[] = "/sys/devices/platform/google,pogo/enable_hub";
|
||||
constexpr char kPogoEnableUsb[] = "/sys/devices/platform/google,pogo/enable_usb";
|
||||
constexpr char kInternalHubDevnum[] = "/sys/bus/usb/devices/1-1/devnum";
|
||||
constexpr char kPowerSupplyUsbType[] = "/sys/class/power_supply/usb/usb_type";
|
||||
constexpr char kIrqHpdCount[] = "irq_hpd_count";
|
||||
constexpr char kUdcUeventRegex[] =
|
||||
|
@ -524,11 +527,16 @@ void updatePortStatus(android::hardware::usb::Usb *usb) {
|
|||
queryVersionHelper(usb, ¤tPortStatus);
|
||||
}
|
||||
|
||||
static int usbDeviceRemoved(const char *devname, void* client_data) {
|
||||
return 0;
|
||||
static int getInternalHubUniqueId() {
|
||||
string internalHubDevnum;
|
||||
int devnum = 0, internalHubUniqueId = -1;
|
||||
if (ReadFileToString(kInternalHubDevnum, &internalHubDevnum) &&
|
||||
ParseInt(Trim(internalHubDevnum).c_str(), &devnum))
|
||||
internalHubUniqueId = 1000 + devnum;
|
||||
return internalHubUniqueId;
|
||||
}
|
||||
|
||||
static int usbDeviceAdded(const char *devname, void* client_data) {
|
||||
static Status tuneInternalHub(const char *devname, void* client_data) {
|
||||
uint16_t vendorId, productId;
|
||||
struct usb_device *device;
|
||||
::aidl::android::hardware::usb::Usb *usb;
|
||||
|
@ -537,7 +545,7 @@ static int usbDeviceAdded(const char *devname, void* client_data) {
|
|||
device = usb_device_open(devname);
|
||||
if (!device) {
|
||||
ALOGE("usb_device_open failed\n");
|
||||
return 0;
|
||||
return Status::ERROR;
|
||||
}
|
||||
|
||||
usb = (::aidl::android::hardware::usb::Usb *)client_data;
|
||||
|
@ -559,6 +567,26 @@ static int usbDeviceAdded(const char *devname, void* client_data) {
|
|||
|
||||
usb_device_close(device);
|
||||
|
||||
return Status::SUCCESS;
|
||||
}
|
||||
|
||||
static int usbDeviceRemoved(const char *devname, void* client_data) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int usbDeviceAdded(const char *devname, void* client_data) {
|
||||
string pogoEnableHub;
|
||||
int uniqueId = 0;
|
||||
|
||||
// Enable hub tuning when the pogo dock is connected.
|
||||
if (ReadFileToString(kPogoEnableHub, &pogoEnableHub) && Trim(pogoEnableHub) == "1") {
|
||||
// If enable_hub is set to 1, the internal hub is the first enumearted device on bus 1 and
|
||||
// port 1.
|
||||
uniqueId = usb_device_get_unique_id_from_name(devname);
|
||||
if (uniqueId == getInternalHubUniqueId())
|
||||
tuneInternalHub(devname, client_data);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue