Implement callbacks for limitPowerTransfer
Implements limiting the source current when limitPowerTransfer is invoked. Bug: 200993386 Signed-off-by: Badhri Jagan Sridharan <badhri@google.com> Change-Id: Ia34dc127c1eb20254caa932db882e26e6092b945
This commit is contained in:
parent
a6530a8bf6
commit
31fb891398
2 changed files with 22 additions and 7 deletions
|
@ -62,6 +62,7 @@ constexpr char kI2CPath[] = "/sys/devices/platform/10d50000.hsi2c/i2c-";
|
|||
constexpr char kContaminantDetectionPath[] = "i2c-max77759tcpc/contaminant_detection";
|
||||
constexpr char kStatusPath[] = "i2c-max77759tcpc/contaminant_detection_status";
|
||||
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 kTypecPath[] = "/sys/class/typec";
|
||||
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,
|
||||
int64_t in_transactionId) {
|
||||
bool success = false;
|
||||
bool sessionFail = false, success;
|
||||
std::vector<PortStatus> currentPortStatus;
|
||||
string path, limitEnablePath, currentLimitPath;
|
||||
string path, sinkLimitEnablePath, currentLimitPath, sourceLimitEnablePath;
|
||||
|
||||
getI2cBusHelper(&path);
|
||||
limitEnablePath = kI2CPath + path + "/" + kSinkLimitEnable;
|
||||
sinkLimitEnablePath = kI2CPath + path + "/" + kSinkLimitEnable;
|
||||
sourceLimitEnablePath = kI2CPath + path + "/" + kSourceLimitEnable;
|
||||
currentLimitPath = kI2CPath + path + "/" + kSinkLimitCurrent;
|
||||
|
||||
pthread_mutex_lock(&mLock);
|
||||
if (in_limit) {
|
||||
success = WriteStringToFile("0", currentLimitPath);
|
||||
if (!success) {
|
||||
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) {
|
||||
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);
|
||||
pthread_mutex_lock(&mLock);
|
||||
if (mCallback != NULL && in_transactionId >= 0) {
|
||||
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())
|
||||
ALOGE("limitPowerTransfer error %s", ret.getDescription().c_str());
|
||||
} else {
|
||||
|
|
|
@ -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-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-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_id
|
||||
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-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-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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue