Implement callbacks for limitPowerTransfer am: 31fb891398

Original change: https://googleplex-android-review.googlesource.com/c/device/google/gs101/+/17008642

Change-Id: Id589cc66f5e98768cfcfeacf8197e761fef9945f
This commit is contained in:
Badhri Jagan Sridharan 2022-02-25 21:59:19 +00:00 committed by Automerger Merge Worker
commit 4e23c76298
2 changed files with 22 additions and 7 deletions

View file

@ -62,6 +62,7 @@ constexpr char kI2CPath[] = "/sys/devices/platform/10d50000.hsi2c/i2c-";
constexpr char kContaminantDetectionPath[] = "i2c-max77759tcpc/contaminant_detection"; constexpr char kContaminantDetectionPath[] = "i2c-max77759tcpc/contaminant_detection";
constexpr char kStatusPath[] = "i2c-max77759tcpc/contaminant_detection_status"; constexpr char kStatusPath[] = "i2c-max77759tcpc/contaminant_detection_status";
constexpr char kSinkLimitEnable[] = "i2c-max77759tcpc/usb_limit_sink_enable"; constexpr char kSinkLimitEnable[] = "i2c-max77759tcpc/usb_limit_sink_enable";
constexpr char kSourceLimitEnable[] = "i2c-max77759tcpc/usb_limit_source_enable";
constexpr char kSinkLimitCurrent[] = "i2c-max77759tcpc/usb_limit_sink_current"; constexpr char kSinkLimitCurrent[] = "i2c-max77759tcpc/usb_limit_sink_current";
constexpr char kTypecPath[] = "/sys/class/typec"; constexpr char kTypecPath[] = "/sys/class/typec";
constexpr char kDisableContatminantDetection[] = "vendor.usb.contaminantdisable"; constexpr char kDisableContatminantDetection[] = "vendor.usb.contaminantdisable";
@ -471,30 +472,40 @@ ScopedAStatus Usb::switchRole(const string& in_portName, const PortRole& in_role
ScopedAStatus Usb::limitPowerTransfer(const string& in_portName, bool in_limit, ScopedAStatus Usb::limitPowerTransfer(const string& in_portName, bool in_limit,
int64_t in_transactionId) { int64_t in_transactionId) {
bool success = false; bool sessionFail = false, success;
std::vector<PortStatus> currentPortStatus; std::vector<PortStatus> currentPortStatus;
string path, limitEnablePath, currentLimitPath; string path, sinkLimitEnablePath, currentLimitPath, sourceLimitEnablePath;
getI2cBusHelper(&path); getI2cBusHelper(&path);
limitEnablePath = kI2CPath + path + "/" + kSinkLimitEnable; sinkLimitEnablePath = kI2CPath + path + "/" + kSinkLimitEnable;
sourceLimitEnablePath = kI2CPath + path + "/" + kSourceLimitEnable;
currentLimitPath = kI2CPath + path + "/" + kSinkLimitCurrent; currentLimitPath = kI2CPath + path + "/" + kSinkLimitCurrent;
pthread_mutex_lock(&mLock);
if (in_limit) { if (in_limit) {
success = WriteStringToFile("0", currentLimitPath); success = WriteStringToFile("0", currentLimitPath);
if (!success) { if (!success) {
ALOGE("Failed to set sink current limit"); ALOGE("Failed to set sink current limit");
sessionFail = true;
} }
} }
success = WriteStringToFile(in_limit ? "1" : "0", limitEnablePath); success = WriteStringToFile(in_limit ? "1" : "0", sinkLimitEnablePath);
if (!success) { if (!success) {
ALOGE("Failed to %s sink current limit: %s", in_limit ? "enable" : "disable", ALOGE("Failed to %s sink current limit: %s", in_limit ? "enable" : "disable",
limitEnablePath.c_str()); sinkLimitEnablePath.c_str());
sessionFail = true;
}
success = WriteStringToFile(in_limit ? "1" : "0", sourceLimitEnablePath);
if (!success) {
ALOGE("Failed to %s source current limit: %s", in_limit ? "enable" : "disable",
sourceLimitEnablePath.c_str());
sessionFail = true;
} }
ALOGI("limitPowerTransfer limit:%c opId:%ld", in_limit ? 'y' : 'n', in_transactionId); ALOGI("limitPowerTransfer limit:%c opId:%ld", in_limit ? 'y' : 'n', in_transactionId);
pthread_mutex_lock(&mLock);
if (mCallback != NULL && in_transactionId >= 0) { if (mCallback != NULL && in_transactionId >= 0) {
ScopedAStatus ret = mCallback->notifyLimitPowerTransferStatus( ScopedAStatus ret = mCallback->notifyLimitPowerTransferStatus(
in_portName, in_limit, success ? Status::SUCCESS : Status::ERROR, in_transactionId); in_portName, in_limit, sessionFail ? Status::ERROR : Status::SUCCESS,
in_transactionId);
if (!ret.isOk()) if (!ret.isOk())
ALOGE("limitPowerTransfer error %s", ret.getDescription().c_str()); ALOGE("limitPowerTransfer error %s", ret.getDescription().c_str());
} else { } else {

View file

@ -14,6 +14,8 @@ on post-fs
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-6/i2c-max77759tcpc/usb_limit_sink_current
chown root system /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_sink_enable chown root system /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_sink_enable
chown root system /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_enable chown root system /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_enable
chown root system /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_source_enable
chown root system /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_source_enable
chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_b_sess chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_b_sess
chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_id chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_id
chown root system /sys/devices/platform/11110000.usb/usb_data_enabled chown root system /sys/devices/platform/11110000.usb/usb_data_enabled
@ -30,4 +32,6 @@ on post-fs
chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-6/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-5/i2c-max77759tcpc/usb_limit_sink_enable chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_sink_enable
chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_enable chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_sink_enable
chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-5/i2c-max77759tcpc/usb_limit_source_enable
chmod 664 /sys/devices/platform/10d50000.hsi2c/i2c-6/i2c-max77759tcpc/usb_limit_source_enable
chmod 664 /sys/devices/platform/google,pogo/move_data_to_usb chmod 664 /sys/devices/platform/google,pogo/move_data_to_usb