mirror of
https://github.com/Evolution-X-Devices/device_google_redfin
synced 2026-02-01 05:34:34 +00:00
Implement callbacks for limitPowerTransfer am: cb01b82b5a
Original change: https://googleplex-android-review.googlesource.com/c/device/google/redfin/+/18245990 Change-Id: I3e3e3f1f7e085733e52727990c69db089dd29634 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
committed by
Automerger Merge Worker
commit
fa3e4a8dfb
@@ -164,12 +164,35 @@ ScopedAStatus Usb::resetUsbPort(const std::string& in_portName, int64_t in_trans
|
||||
ScopedAStatus Usb::limitPowerTransfer(const string& in_portName, bool in_limit,
|
||||
int64_t in_transactionId) {
|
||||
std::vector<PortStatus> currentPortStatus;
|
||||
bool sessionFail = false, success;
|
||||
|
||||
ALOGI("limitPowerTransfer limit:%c opId:%ld", in_limit ? 'y' : 'n', in_transactionId);
|
||||
pthread_mutex_lock(&mLock);
|
||||
ALOGI("limitPowerTransfer limit:%c opId:%ld", in_limit ? 'y' : 'n', in_transactionId);
|
||||
|
||||
if (in_limit) {
|
||||
success = WriteStringToFile("0", SINK_CURRENT_LIMIT_PATH);
|
||||
if (!success) {
|
||||
ALOGE("Failed to set sink current limit");
|
||||
sessionFail = true;
|
||||
}
|
||||
}
|
||||
success = WriteStringToFile(in_limit ? "1" : "0", SINK_LIMIT_ENABLE_PATH);
|
||||
if (!success) {
|
||||
ALOGE("Failed to %s sink current limit: %s", in_limit ? "enable" : "disable",
|
||||
SINK_LIMIT_ENABLE_PATH);
|
||||
sessionFail = true;
|
||||
}
|
||||
success = WriteStringToFile(in_limit ? "1" : "0", SOURCE_LIMIT_ENABLE_PATH);
|
||||
if (!success) {
|
||||
ALOGE("Failed to %s source current limit: %s", in_limit ? "enable" : "disable",
|
||||
SOURCE_LIMIT_ENABLE_PATH);
|
||||
sessionFail = true;
|
||||
}
|
||||
|
||||
if (mCallback != NULL && in_transactionId >= 0) {
|
||||
ScopedAStatus ret = mCallback->notifyLimitPowerTransferStatus(
|
||||
in_portName, in_limit, Status::NOT_SUPPORTED, 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 {
|
||||
@@ -604,6 +627,20 @@ Status getPortStatusHelper(android::hardware::usb::Usb *usb,
|
||||
done:
|
||||
return Status::ERROR;
|
||||
}
|
||||
Status queryPowerTransferStatus(std::vector<PortStatus> *currentPortStatus) {
|
||||
string enabled;
|
||||
|
||||
if (!ReadFileToString(SINK_LIMIT_ENABLE_PATH, &enabled)) {
|
||||
ALOGE("Failed to open limit_sink_enable");
|
||||
return Status::ERROR;
|
||||
}
|
||||
|
||||
enabled = Trim(enabled);
|
||||
(*currentPortStatus)[0].powerTransferLimited = enabled == "1";
|
||||
|
||||
ALOGI("powerTransferLimited:%d", (*currentPortStatus)[0].powerTransferLimited ? 1 : 0);
|
||||
return Status::SUCCESS;
|
||||
}
|
||||
|
||||
void queryVersionHelper(android::hardware::usb::Usb *usb,
|
||||
std::vector<PortStatus> *currentPortStatus) {
|
||||
@@ -611,6 +648,7 @@ void queryVersionHelper(android::hardware::usb::Usb *usb,
|
||||
pthread_mutex_lock(&usb->mLock);
|
||||
status = getPortStatusHelper(usb, currentPortStatus);
|
||||
queryMoistureDetectionStatus(currentPortStatus);
|
||||
queryPowerTransferStatus(currentPortStatus);
|
||||
if (usb->mCallback != NULL) {
|
||||
ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus,
|
||||
status);
|
||||
|
||||
@@ -49,6 +49,11 @@ constexpr char kGadgetName[] = "a600000.dwc3";
|
||||
#define USB_DATA_PATH SOC_PATH "usb_data_enabled"
|
||||
#define VBUS_PATH SOC_PATH "b_sess"
|
||||
|
||||
#define USB_POWER_LIMIT_PATH "/sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/"
|
||||
#define SINK_CURRENT_LIMIT_PATH USB_POWER_LIMIT_PATH "usb_limit_sink_current"
|
||||
#define SINK_LIMIT_ENABLE_PATH USB_POWER_LIMIT_PATH "usb_limit_sink_enable"
|
||||
#define SOURCE_LIMIT_ENABLE_PATH USB_POWER_LIMIT_PATH "usb_limit_source_enable"
|
||||
|
||||
struct Usb : public BnUsb {
|
||||
Usb();
|
||||
|
||||
|
||||
@@ -2,3 +2,11 @@ service vendor.usb /vendor/bin/hw/android.hardware.usb-service.redfin
|
||||
class hal
|
||||
user system
|
||||
group system shell
|
||||
|
||||
on boot
|
||||
chown root system /sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/usb_limit_sink_enable
|
||||
chown root system /sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/usb_limit_source_enable
|
||||
chown root system /sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/usb_limit_sink_current
|
||||
chmod 664 /sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/usb_limit_sink_enable
|
||||
chmod 664 /sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/usb_limit_source_enable
|
||||
chmod 664 /sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pm7250b@2:qcom,usb-pdphy@1700/usbpd0/usb_limit_sink_current
|
||||
|
||||
Reference in New Issue
Block a user