DO NOT MERGE - Merge Android 13
Bug: 242648940
Merged-In: I494fdeac46d79d52fc01ee870cb12f141e4dd487
Change-Id: I414740349f272180d11bdcee5e042822ad8ff41c
diff --git a/audio/mixer_paths_bolero_snd.xml b/audio/mixer_paths_bolero_snd.xml
index fddcdbd..846f331 100644
--- a/audio/mixer_paths_bolero_snd.xml
+++ b/audio/mixer_paths_bolero_snd.xml
@@ -47,6 +47,7 @@
<ctl name="Voip Dtx Mode" value="0" />
<ctl name="TTY Mode" value="OFF" />
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia1" value="0" />
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia2" value="0" />
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia5" value="0" />
<ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia7" value="0" />
@@ -185,6 +186,7 @@
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia2" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia4" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia7" value="0" />
+ <ctl name="AFE_PCM_RX Audio Mixer MultiMedia8" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia11" value="0" />
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia12" value="0" />
@@ -268,6 +270,7 @@
<!-- Incall Music -->
<ctl name="Incall_Music Audio Mixer MultiMedia2" value="0" />
<ctl name="Incall_Music Audio Mixer MultiMedia9" value="0" />
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="0" />
<!-- Incall Music End -->
<!-- compress-voip-call start -->
@@ -336,6 +339,9 @@
<ctl name="RX INT1_1 MIX1 INP0" value="ZERO" />
<ctl name="RX INT1_1 MIX1 INP1" value="ZERO" />
<ctl name="RX INT1_1 MIX1 INP2" value="ZERO" />
+ <ctl name="RX INT0 MIX2 INP" value="ZERO" />
+ <ctl name="RX INT1 MIX2 INP" value="ZERO" />
+ <ctl name="RX INT2 MIX2 INP" value="ZERO" />
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia1" value="0" />
<ctl name="RX INT0 DEM MUX" value="NORMAL_DSM_OUT" />
<ctl name="RX INT1 DEM MUX" value="NORMAL_DSM_OUT" />
@@ -460,7 +466,6 @@
<ctl name="IIR0 INP3 MUX" value="ZERO" />
<!-- vbat related data -->
- <ctl name="GSM mode Enable" value="OFF" />
<ctl name="WSA_Softclip0 Enable" value="0" />
<ctl name="WSA_Softclip1 Enable" value="0" />
<ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="0" />
@@ -470,8 +475,6 @@
<!-- defaults for mmap record -->
<ctl name="MultiMedia16 Mixer TX_CDC_DMA_TX_3" value="0" />
- <ctl name="MultiMedia16 Mixer SLIM_7_TX" value="0" />
- <ctl name="MultiMedia16 Mixer SLIM_8_TX" value="0" />
<ctl name="MultiMedia16 Mixer USB_AUDIO_TX" value="0" />
<!-- ALC5513 config -->
@@ -514,9 +517,21 @@
<ctl name="TAS25XX_ALGO_BYPASS" value="FALSE" />
<!-- TAS2562 control setting end-->
+ <!-- HDMI -->
+ <ctl name="HDMI Mixer MultiMedia1" value="0" />
+ <ctl name="HDMI Mixer MultiMedia4" value="0" />
+ <ctl name="HDMI Mixer MultiMedia5" value="0" />
+ <ctl name="HDMI Mixer MultiMedia8" value="0" />
+ <ctl name="HDMI Mixer MultiMedia9" value="0" />
+ <ctl name="HDMI Mixer MultiMedia10" value="0" />
+ <ctl name="HDMI Mixer MultiMedia16" value="0" />
+
+ <!-- HIFI -->
+ <ctl name="MultiMedia2 Mixer TX_CDC_DMA_TX_3" value="0" />
+
+
<!-- These are audio route (FE to BE) specific mixer settings -->
<path name="gsm-mode">
- <ctl name="GSM mode Enable" value="ON" />
</path>
<path name="echo-reference">
@@ -882,7 +897,6 @@
</path>
<path name="low-latency-playback resume">
- <ctl name="MultiMedia5_RX QOS Vote" value="Enable" />
</path>
<path name="audio-ull-playback">
@@ -1254,7 +1268,6 @@
</path>
<path name="low-latency-record capture-fm">
- <ctl name="MultiMedia8 Mixer SLIM_8_TX" value="1" />
</path>
<path name="spkr-vi-record vi-feedback">
@@ -1902,7 +1915,6 @@
</path>
<path name="spkr-rx-calib">
- <ctl name="QUIN_TDM_RX_DL_HL Switch" value="1" />
</path>
<path name="spkr-vi-record">
@@ -2029,7 +2041,6 @@
<ctl name="IIR0 INP0 Volume" value="54" />
<ctl name="IIR0 INP0 MUX" value="DEC0" />
<ctl name="RX INT2 MIX2 INP" value="SRC0" />
- <ctl name="WSA_RX0 INT0 SIDETONE MIX" value="SRC0" />
</path>
<path name="afe-sidetone">
@@ -2810,7 +2821,6 @@
</path>
<path name="mmap-record bt-sco">
- <ctl name="MultiMedia16 Mixer SLIM_7_TX" value="1" />
</path>
<path name="mmap-record bt-sco-wb">
@@ -2823,7 +2833,6 @@
</path>
<path name="mmap-record capture-fm">
- <ctl name="MultiMedia16 Mixer SLIM_8_TX" value="1" />
</path>
<path name="mmap-record usb-headset-mic">
diff --git a/barbet/overlay/frameworks/base/core/res/res/values/config.xml b/barbet/overlay/frameworks/base/core/res/res/values/config.xml
index e62b536..b4829f1 100755
--- a/barbet/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/barbet/overlay/frameworks/base/core/res/res/values/config.xml
@@ -229,7 +229,7 @@
Do not read this dimen directly. Use {@link SystemBarUtils#getStatusBarHeight} instead.
-->
<dimen name="status_bar_height_default">28dp</dimen>
- <dimen name="status_bar_height_portrait">145px</dimen>
+ <dimen name="status_bar_height_portrait">136px</dimen>
<dimen name="status_bar_height_landscape">28dp</dimen>
<!-- Whether the device enable the standalone (SA) mode of 5G NR.-->
diff --git a/barbet/overlay/frameworks/base/core/res/res/values/dimens.xml b/barbet/overlay/frameworks/base/core/res/res/values/dimens.xml
new file mode 100644
index 0000000..b1a0c2e
--- /dev/null
+++ b/barbet/overlay/frameworks/base/core/res/res/values/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2022, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+-->
+
+<resources>
+ <!-- for 20dp of padding at 3.5px/dp at default density -->
+ <dimen name="rounded_corner_content_padding">50px</dimen>
+</resources>
diff --git a/barbet/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/barbet/overlay/frameworks/base/packages/SystemUI/res/values/config.xml
index 45e756e..d20252a 100644
--- a/barbet/overlay/frameworks/base/packages/SystemUI/res/values/config.xml
+++ b/barbet/overlay/frameworks/base/packages/SystemUI/res/values/config.xml
@@ -72,8 +72,6 @@
-->
<string name="config_rounded_mask" translatable="false">M136,0 C80,4 58,9 33,33 9,58 4,80 0,136</string>
- <bool name="config_roundedCornerMultipleRadius">true</bool>
-
<!-- Configure 13px of extra protection around the front-facing camera -->
<string translatable="false" name="config_frontBuiltInDisplayCutoutProtection">
M 28,73
diff --git a/barbet/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/barbet/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
index bf1fd82..fa978b2 100644
--- a/barbet/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
+++ b/barbet/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
@@ -20,9 +20,6 @@
<!-- Don't need the left side padding due to being inset from the cutout -->
<dimen name="status_bar_padding_start">0dp</dimen>
- <!-- for 20dp of padding at 3.5px/dp at default density -->
- <dimen name="rounded_corner_content_padding">50px</dimen>
-
<!-- the padding on the top of the statusbar (usually 0) -->
<dimen name="status_bar_padding_top">1px</dimen>
diff --git a/default-permissions.xml b/default-permissions.xml
index 8324453..4df0673 100644
--- a/default-permissions.xml
+++ b/default-permissions.xml
@@ -54,7 +54,11 @@
<permission name="android.permission.READ_CALL_LOG" fixed="false"/>
<permission name="android.permission.WRITE_CALL_LOG" fixed="false"/>
<!-- Used to set up a Wi-Fi P2P network -->
+ <!-- TODO(b/231966826): Remove the location permission after Restore targets to T. -->
<permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
+ <permission name="android.permission.NEARBY_WIFI_DEVICES" fixed="false"/>
+ <!-- Notifications -->
+ <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
</exception>
<exception package="com.verizon.mips.services">
@@ -86,5 +90,42 @@
<exception package="com.google.android.apps.scone">
<!-- Used to call ActivityTransition API for Smart PNO -->
<permission name="android.permission.ACTIVITY_RECOGNITION" fixed="false"/>
+ <!-- Notifications -->
+ <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
+ </exception>
+ <exception
+ package="com.google.android.deskclock">
+ <!-- Notifications -->
+ <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
+ </exception>
+ <exception
+ package="com.google.android.apps.tips">
+ <!-- Notifications -->
+ <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
+ </exception>
+ <exception
+ package="com.google.android.adservices">
+ <!-- Notifications -->
+ <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
+ </exception>
+ <exception
+ package="com.google.android.apps.mediashell">
+ <!-- Notifications -->
+ <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
+ </exception>
+ <exception
+ package="com.google.android.apps.pixelmigrate">
+ <!-- Notifications -->
+ <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
+ </exception>
+ <exception
+ package="com.google.android.apps.work.oobconfig">
+ <!-- Notifications -->
+ <permission name="android.permission.POST_NOTIFICATIONS" fixed="true"/>
+ </exception>
+ <exception
+ package="com.google.android.apps.turbo">
+ <!-- Notifications -->
+ <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
</exception>
</exceptions>
diff --git a/device-barbet.mk b/device-barbet.mk
index 2c3fe7e..df66b56 100644
--- a/device-barbet.mk
+++ b/device-barbet.mk
@@ -18,28 +18,27 @@
ifeq ($(TARGET_PREBUILT_KERNEL),)
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
- LOCAL_KERNEL := device/google/barbet-kernel/Image.lz4
+ LOCAL_KERNEL := device/google/redbull-kernel/Image.lz4
else
- LOCAL_KERNEL := device/google/barbet-kernel/vintf/Image.lz4
+ LOCAL_KERNEL := device/google/redbull-kernel/vintf/Image.lz4
endif
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif
-PRODUCT_VENDOR_KERNEL_HEADERS := device/google/barbet-kernel/sm7250/kernel-headers
+PRODUCT_VENDOR_KERNEL_HEADERS := device/google/redbull-kernel/sm7250/kernel-headers
DEVICE_PACKAGE_OVERLAYS += device/google/barbet/barbet/overlay
PRODUCT_DEVICE_SVN_OVERRIDE := true
-include build/make/target/product/iorap_large_memory_config.mk
include device/google/redbull/device-common.mk
$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/launch_with_vendor_ramdisk.mk)
# Increment the SVN for any official public releases
PRODUCT_PROPERTY_OVERRIDES += \
- ro.vendor.build.svn=23
+ ro.vendor.build.svn=25
# Enable watchdog timeout loop breaker.
PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/init.recovery.device.rc b/init.recovery.device.rc
index 474831d..7df16ec 100644
--- a/init.recovery.device.rc
+++ b/init.recovery.device.rc
@@ -9,10 +9,6 @@
# Enable thermal mitigation
write /sys/devices/virtual/thermal/tz-by-name/backup-charge/mode enabled
- # Block layer tuning: discard chunk size up to 128MB
- # Otherwise, contiguous discards can be merged
- write /sys/block/sda/queue/discard_max_bytes 134217728
-
on early-init
# Wait to make sure we do not try to talk too early to the display
wait /sys/class/drm/card0
diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt
index 673a269..06b21fc 100644
--- a/self-extractors/extract-lists.txt
+++ b/self-extractors/extract-lists.txt
@@ -62,7 +62,6 @@
system_ext/lib/lib-imsvideocodec.so \
system_ext/lib/liblistensoundmodel2.qti.so \
system_ext/lib/libmmosal.so \
- system_ext/lib/libqct_resampler.so \
system_ext/lib/libvr_amb_engine.so \
system_ext/lib/libvr_object_engine.so \
system_ext/app/QtiTelephonyService/QtiTelephonyService.apk \
diff --git a/self-extractors/qcom/staging/Android.bp.txt b/self-extractors/qcom/staging/Android.bp.txt
index bce9641..7364be8 100644
--- a/self-extractors/qcom/staging/Android.bp.txt
+++ b/self-extractors/qcom/staging/Android.bp.txt
@@ -243,27 +243,6 @@
}
cc_prebuilt_library_shared {
- name: "libqct_resampler",
- arch: {
- arm: {
- srcs: ["libqct_resampler.so"],
- shared_libs: [
- "libcutils",
- "libc++",
- "libc",
- "libm",
- "libdl",
- ],
- },
- },
- compile_multilib: "32",
- system_ext_specific: true,
- strip: {
- none: true,
- },
-}
-
-cc_prebuilt_library_shared {
name: "libvr_amb_engine",
arch: {
arm: {
diff --git a/self-extractors/qcom/staging/device-partial.mk b/self-extractors/qcom/staging/device-partial.mk
index 3b6d681..9c163a3 100644
--- a/self-extractors/qcom/staging/device-partial.mk
+++ b/self-extractors/qcom/staging/device-partial.mk
@@ -28,7 +28,6 @@
lib-imsvideocodec \
liblistensoundmodel2.qti \
libmmosal \
- libqct_resampler \
libvr_amb_engine \
libvr_object_engine \
diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp
index d71455b..ed358cd 100644
--- a/usb/usb/Usb.cpp
+++ b/usb/usb/Usb.cpp
@@ -61,40 +61,41 @@
int64_t in_transactionId) {
bool result = true;
std::vector<PortStatus> currentPortStatus;
+ string pullup;
ALOGI("Userspace turn %s USB data signaling. opID:%ld", in_enable ? "on" : "off",
in_transactionId);
if (in_enable) {
+ if (ReadFileToString(PULLUP_PATH, &pullup)) {
+ pullup = Trim(pullup);
+ if (pullup != kGadgetName) {
+ if (!WriteStringToFile(kGadgetName, PULLUP_PATH)) {
+ ALOGE("Gadget cannot be pulled up");
+ result = false;
+ }
+ }
+ }
+
if (!WriteStringToFile("1", USB_DATA_PATH)) {
ALOGE("Not able to turn on usb connection notification");
result = false;
}
-
- if (!WriteStringToFile(kGadgetName, PULLUP_PATH)) {
- ALOGE("Gadget cannot be pulled up");
- result = false;
- }
} else {
- if (!WriteStringToFile("1", ID_PATH)) {
- ALOGE("Not able to turn off host mode");
- result = false;
- }
-
- if (!WriteStringToFile("0", VBUS_PATH)) {
- ALOGE("Not able to set Vbus state");
- result = false;
+ if (ReadFileToString(PULLUP_PATH, &pullup)) {
+ pullup = Trim(pullup);
+ if (pullup == kGadgetName) {
+ if (!WriteStringToFile("none", PULLUP_PATH)) {
+ ALOGE("Gadget cannot be pulled down");
+ result = false;
+ }
+ }
}
if (!WriteStringToFile("0", USB_DATA_PATH)) {
ALOGE("Not able to turn on usb connection notification");
result = false;
}
-
- if (!WriteStringToFile("none", PULLUP_PATH)) {
- ALOGE("Gadget cannot be pulled down");
- result = false;
- }
}
if (result) {
@@ -115,19 +116,95 @@
return ScopedAStatus::ok();
}
-// TODO: remove enableUsbDataWhileDocked() and add back later if ready
-/*ScopedAStatus Usb::enableUsbDataWhileDocked(const string& in_portName,
+ScopedAStatus Usb::enableUsbDataWhileDocked(const string& in_portName,
int64_t in_transactionId) {
-}*/
+ std::vector<PortStatus> currentPortStatus;
-// TODO: remove resetUsbPort() and add back later if ready
-/*ScopedAStatus Usb::resetUsbPort(const std::string& in_portName, int64_t in_transactionId) {
-}*/
+ ALOGI("Userspace enableUsbDataWhileDocked opID:%ld", in_transactionId);
-// TODO: remove limitPowerTransfer() and add back later if ready
-/*ScopedAStatus Usb::limitPowerTransfer(const string& in_portName, bool in_limit,
+ pthread_mutex_lock(&mLock);
+ if (mCallback != NULL) {
+ ScopedAStatus ret = mCallback->notifyEnableUsbDataWhileDockedStatus(
+ in_portName, Status::NOT_SUPPORTED, in_transactionId);
+ if (!ret.isOk())
+ ALOGE("notifyEnableUsbDataStatus error %s", ret.getDescription().c_str());
+ } else {
+ ALOGE("Not notifying the userspace. Callback is not set");
+ }
+ pthread_mutex_unlock(&mLock);
+ queryVersionHelper(this, ¤tPortStatus);
+
+ return ScopedAStatus::ok();
+}
+
+ScopedAStatus Usb::resetUsbPort(const std::string& in_portName, int64_t in_transactionId) {
+ bool result = true;
+ std::vector<PortStatus> currentPortStatus;
+
+ ALOGI("Userspace reset USB Port. opID:%ld", in_transactionId);
+
+ if (!WriteStringToFile("none", PULLUP_PATH)) {
+ ALOGI("Gadget cannot be pulled down");
+ result = false;
+ }
+
+ pthread_mutex_lock(&mLock);
+ if (mCallback != NULL) {
+ ::ndk::ScopedAStatus ret = mCallback->notifyResetUsbPortStatus(
+ in_portName, result ? Status::SUCCESS : Status::ERROR, in_transactionId);
+ if (!ret.isOk())
+ ALOGE("notifyTransactionStatus error %s", ret.getDescription().c_str());
+ } else {
+ ALOGE("Not notifying the userspace. Callback is not set");
+ }
+ pthread_mutex_unlock(&mLock);
+
+ return ::ndk::ScopedAStatus::ok();
+}
+
+ScopedAStatus Usb::limitPowerTransfer(const string& in_portName, bool in_limit,
int64_t in_transactionId) {
-}*/
+ std::vector<PortStatus> currentPortStatus;
+ bool sessionFail = false, success;
+
+ 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, sessionFail ? Status::ERROR : Status::SUCCESS,
+ in_transactionId);
+ if (!ret.isOk())
+ ALOGE("limitPowerTransfer error %s", ret.getDescription().c_str());
+ } else {
+ ALOGE("Not notifying the userspace. Callback is not set");
+ }
+
+ pthread_mutex_unlock(&mLock);
+ queryVersionHelper(this, ¤tPortStatus);
+
+ return ScopedAStatus::ok();
+}
Status queryMoistureDetectionStatus(std::vector<PortStatus> *currentPortStatus) {
string enabled, status, path, DetectedPath;
@@ -291,7 +368,8 @@
: mLock(PTHREAD_MUTEX_INITIALIZER),
mRoleSwitchLock(PTHREAD_MUTEX_INITIALIZER),
mPartnerLock(PTHREAD_MUTEX_INITIALIZER),
- mPartnerUp(false) {
+ mPartnerUp(false),
+ mUsbDataEnabled(true) {
pthread_condattr_t attr;
if (pthread_condattr_init(&attr)) {
ALOGE("pthread_condattr_init failed: %s", strerror(errno));
@@ -530,7 +608,13 @@
port.second ? canSwitchRoleHelper(port.first) : false;
(*currentPortStatus)[i].supportedModes.push_back(PortMode::DRP);
- (*currentPortStatus)[i].usbDataEnabled = usb->mUsbDataEnabled; //temporary
+
+ if (!usb->mUsbDataEnabled) {
+ (*currentPortStatus)[i].usbDataStatus.push_back(UsbDataStatus::DISABLED_FORCE);
+ } else {
+ (*currentPortStatus)[i].usbDataStatus.push_back(UsbDataStatus::ENABLED);
+ }
+ (*currentPortStatus)[i].powerBrickStatus = PowerBrickStatus::UNKNOWN;
ALOGI("%d:%s connected:%d canChangeMode:%d canChagedata:%d canChangePower:%d "
"usbDataEnabled:%d",
@@ -546,12 +630,28 @@
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) {
Status status;
pthread_mutex_lock(&usb->mLock);
status = getPortStatusHelper(usb, currentPortStatus);
queryMoistureDetectionStatus(currentPortStatus);
+ queryPowerTransferStatus(currentPortStatus);
if (usb->mCallback != NULL) {
ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus,
status);
@@ -634,8 +734,8 @@
pthread_cond_signal(&payload->usb->mPartnerCV);
pthread_mutex_unlock(&payload->usb->mPartnerLock);
} else if (!strncmp(cp, "DEVTYPE=typec_", strlen("DEVTYPE=typec_")) ||
- !strncmp(cp, "DRIVER=max77759tcpc",
- strlen("DRIVER=max77759tcpc"))) {
+ !strncmp(cp, "POWER_SUPPLY_MOISTURE_DETECTED",
+ strlen("POWER_SUPPLY_MOISTURE_DETECTED"))) {
std::vector<PortStatus> currentPortStatus;
queryVersionHelper(payload->usb, ¤tPortStatus);
diff --git a/usb/usb/Usb.h b/usb/usb/Usb.h
index 9a883bc..36a23bc 100644
--- a/usb/usb/Usb.h
+++ b/usb/usb/Usb.h
@@ -43,11 +43,14 @@
using ::std::string;
constexpr char kGadgetName[] = "a600000.dwc3";
-#define ID_PATH SOC_PATH "id"
#define PULLUP_PATH "/config/usb_gadget/g1/UDC"
#define SOC_PATH "/sys/devices/platform/soc/a600000.ssusb/"
#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();
@@ -60,6 +63,11 @@
int64_t in_transactionId) override;
ScopedAStatus enableUsbData(const string& in_portName, bool in_enable,
int64_t in_transactionId) override;
+ ScopedAStatus enableUsbDataWhileDocked(const string& in_portName,
+ int64_t in_transactionId) override;
+ ScopedAStatus limitPowerTransfer(const string& in_portName, bool in_limit,
+ int64_t in_transactionId) override;
+ ScopedAStatus resetUsbPort(const string& in_portName, int64_t in_transactionId) override;
std::shared_ptr<::aidl::android::hardware::usb::IUsbCallback> mCallback;
// Protects mCallback variable
diff --git a/usb/usb/android.hardware.usb-service.rc b/usb/usb/android.hardware.usb-service.rc
index b035ee6..d881c93 100644
--- a/usb/usb/android.hardware.usb-service.rc
+++ b/usb/usb/android.hardware.usb-service.rc
@@ -2,3 +2,11 @@
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