Merge "usb: enable/disable displayport alt mode through enableUsbData" into main

This commit is contained in:
RD Babiera 2023-10-13 21:23:36 +00:00 committed by Android (Google) Code Review
commit 52d276e80f
4 changed files with 50 additions and 0 deletions

View file

@ -229,3 +229,6 @@
# Wlan
/dev/wlan 0660 wifi wifi
# USB Alt Modes
/sys/devices/platform/108d0000.hsi2c/i2c-*/*-0025/typec/port0/port0-partner/port0-partner.* mode1/active 0664 system system

View file

@ -95,6 +95,7 @@ ScopedAStatus Usb::enableUsbData(const string& in_portName, bool in_enable,
int64_t in_transactionId) {
bool result = true;
std::vector<PortStatus> currentPortStatus;
string displayPortPartnerPath;
ALOGI("Userspace turn %s USB data signaling. opID:%ld", in_enable ? "on" : "off",
in_transactionId);
@ -110,6 +111,27 @@ ScopedAStatus Usb::enableUsbData(const string& in_portName, bool in_enable,
ALOGE("Gadget cannot be pulled up");
result = false;
}
if (!WriteStringToFile("1", DISPLAYPORT_ACTIVE_PATH)) {
ALOGE("Failed to enable DisplayPort Alt Mode on port");
} else {
ALOGI("Successfully enabled DisplayPort Alt Mode on port");
}
if (getDisplayPortUsbPathHelper(&displayPortPartnerPath) == Status::SUCCESS) {
size_t pos = displayPortPartnerPath.find("/displayport");
if (pos != string::npos) {
displayPortPartnerPath = displayPortPartnerPath.substr(0, pos) + "/mode1/active";
}
if (!WriteStringToFile("1", displayPortPartnerPath)) {
ALOGE("Failed to enable DisplayPort Alt Mode on partner at %s",
displayPortPartnerPath.c_str());
} else {
ALOGI("Successfully enabled DisplayPort Alt Mode on partner at %s",
displayPortPartnerPath.c_str());
setupDisplayPortPoll();
}
}
}
} else {
if (!WriteStringToFile("1", ID_PATH)) {
@ -131,6 +153,27 @@ ScopedAStatus Usb::enableUsbData(const string& in_portName, bool in_enable,
ALOGE("Gadget cannot be pulled down");
result = false;
}
if (getDisplayPortUsbPathHelper(&displayPortPartnerPath) == Status::SUCCESS) {
size_t pos = displayPortPartnerPath.find("/displayport");
if (pos != string::npos) {
displayPortPartnerPath = displayPortPartnerPath.substr(0, pos) + "/mode1/active";
}
if (!WriteStringToFile("0", displayPortPartnerPath)) {
ALOGE("Failed to disable DisplayPort Alt Mode on partner at %s",
displayPortPartnerPath.c_str());
} else {
ALOGI("Successfully disabled DisplayPort Alt Mode on partner at %s",
displayPortPartnerPath.c_str());
shutdownDisplayPortPoll(true);
}
}
if (!WriteStringToFile("0", DISPLAYPORT_ACTIVE_PATH)) {
ALOGE("Failed to disable DisplayPort Alt Mode on port");
} else {
ALOGI("Successfully disabled DisplayPort Alt Mode on port");
}
}
if (result) {

View file

@ -59,6 +59,8 @@ constexpr char kGadgetName[] = "11210000.dwc3";
#define VBUS_PATH NEW_UDC_PATH "dwc3_exynos_otg_b_sess"
#define USB_DATA_PATH NEW_UDC_PATH "usb_data_enabled"
#define DISPLAYPORT_ACTIVE_PATH "/sys/class/typec/port0/port0.0/mode1/active"
#define LINK_TRAINING_STATUS_UNKNOWN "0"
#define LINK_TRAINING_STATUS_SUCCESS "1"
#define LINK_TRAINING_STATUS_FAILURE "2"

View file

@ -8,6 +8,7 @@ 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/class/typec/port0/port0.0/mode1/active
chown root system /sys/devices/platform/108d0000.hsi2c/i2c-0/0-0025/contaminant_detection
chown root system /sys/devices/platform/108d0000.hsi2c/i2c-1/1-0025/contaminant_detection
chown root system /sys/devices/platform/108d0000.hsi2c/i2c-2/2-0025/contaminant_detection
@ -80,6 +81,7 @@ on post-fs
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/class/typec/port0/port0.0/mode1/active
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