Changes for January 2022, syncing up to v400.h
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
From ed69eff0e245bc8a8b7c3334b5c30323a09dbfc3 Mon Sep 17 00:00:00 2001
|
||||
From 6a586c8d51eddc005f1215e73327321296c047fd Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 5 Oct 2021 17:59:16 -0400
|
||||
Subject: [PATCH 01/24] Fallback to stupid autobrightness if brightness values
|
||||
Subject: [PATCH 01/28] Fallback to stupid autobrightness if brightness values
|
||||
are broken
|
||||
|
||||
This is needed because of:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From c3bc53d43b9c4789bab8c532c44cc6f423810801 Mon Sep 17 00:00:00 2001
|
||||
From 19e1c2ec405a3a378fd80b86716d65692da7a1cd Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 28 Nov 2017 18:28:04 +0100
|
||||
Subject: [PATCH 02/24] Relax requirement for visible flag to sdcards
|
||||
Subject: [PATCH 02/28] Relax requirement for visible flag to sdcards
|
||||
|
||||
The vast majority of sdcard readers are stable enough to be declared by
|
||||
the API. (I see no counter-example)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 9dda80f5f617988755425931377956386d70a703 Mon Sep 17 00:00:00 2001
|
||||
From 52c14e64a80eede9b3e82afd54fd4e6cf5862cf1 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 17 May 2018 20:28:35 +0200
|
||||
Subject: [PATCH 03/24] Don't crash if there is IR HAL is not declared
|
||||
Subject: [PATCH 03/28] Don't crash if there is IR HAL is not declared
|
||||
|
||||
Change-Id: I3afded27441bbee8244d5fda544b3e6d1238dc1b
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 639661b3368671a56a3a2b114d6ffb5c1e6ee95f Mon Sep 17 00:00:00 2001
|
||||
From 33fb74d694502c95ee26f331ea308114f8506b90 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 6 Aug 2018 12:49:00 +0200
|
||||
Subject: [PATCH 04/24] Show APN Settings for CDMA carriers
|
||||
Subject: [PATCH 04/28] Show APN Settings for CDMA carriers
|
||||
|
||||
---
|
||||
telephony/java/android/telephony/CarrierConfigManager.java | 2 +-
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a80899cb43a7a0876e2484807dea69c7ddb0b3be Mon Sep 17 00:00:00 2001
|
||||
From b9d12e89208f1b10efbf6d64b9c1b8613b6b336c Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 8 Nov 2018 23:04:03 +0100
|
||||
Subject: [PATCH 05/24] Re-order services so that it works even without qtaguid
|
||||
Subject: [PATCH 05/28] Re-order services so that it works even without qtaguid
|
||||
|
||||
Change-Id: I0c0f527b3ae151d45c68f7ac6c205da3f34e74df
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Change-Id: I0c0f527b3ae151d45c68f7ac6c205da3f34e74df
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
|
||||
index cfefffcdd2e8..197fed7c8834 100644
|
||||
index 9c664b6da4f2..8ebcfb667161 100644
|
||||
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
|
||||
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
|
||||
@@ -845,6 +845,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
@@ -878,6 +878,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "systemReady");
|
||||
final int oldPriority = Process.getThreadPriority(Process.myTid());
|
||||
try {
|
||||
@@ -23,7 +23,7 @@ index cfefffcdd2e8..197fed7c8834 100644
|
||||
// Boost thread's priority during system server init
|
||||
Process.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND);
|
||||
if (!isBandwidthControlEnabled()) {
|
||||
@@ -852,10 +856,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
@@ -885,10 +889,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From b16ff9568fb76c327e71d32878c6b182a3d8acd4 Mon Sep 17 00:00:00 2001
|
||||
From 073b07985a88b4ab54a9451503d58070de0f0721 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 24 Mar 2019 23:05:14 +0100
|
||||
Subject: [PATCH 06/24] Support samsung Pie and Q light hal
|
||||
Subject: [PATCH 06/28] Support samsung Pie and Q light hal
|
||||
|
||||
Change-Id: I01f94acd7d0672733e48854d80368f9ac6f861c6
|
||||
---
|
||||
@@ -23,10 +23,10 @@ index 81532bcba0ae..8ddc16aae3d7 100644
|
||||
|
||||
static_libs: [
|
||||
diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
index 26f6d7428fcc..268b59a58010 100644
|
||||
index 35d8219651d7..b45b2137d0e6 100644
|
||||
--- a/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
+++ b/services/core/jni/com_android_server_lights_LightsService.cpp
|
||||
@@ -22,6 +22,10 @@
|
||||
@@ -23,6 +23,10 @@
|
||||
|
||||
#include <android/hardware/light/2.0/ILight.h>
|
||||
#include <android/hardware/light/2.0/types.h>
|
||||
@@ -37,7 +37,7 @@ index 26f6d7428fcc..268b59a58010 100644
|
||||
#include <android-base/chrono_utils.h>
|
||||
#include <utils/misc.h>
|
||||
#include <utils/Log.h>
|
||||
@@ -39,8 +43,17 @@ using Type = ::android::hardware::light::V2_0::Type;
|
||||
@@ -40,8 +44,17 @@ using Type = ::android::hardware::light::V2_0::Type;
|
||||
template<typename T>
|
||||
using Return = ::android::hardware::Return<T>;
|
||||
|
||||
@@ -55,8 +55,8 @@ index 26f6d7428fcc..268b59a58010 100644
|
||||
static bool validate(jint light, jint flash, jint brightness) {
|
||||
bool valid = true;
|
||||
|
||||
@@ -141,6 +154,44 @@ static void setLight_native(
|
||||
return;
|
||||
@@ -152,6 +165,44 @@ static void setLight_native(
|
||||
colorARGB = (colorAlpha << 24) + (colorARGB & 0x00FFFFFF);
|
||||
}
|
||||
|
||||
+ if(!sSecTried) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 14f642d18be9bb7de7ea4409021880d8ae0c279b Mon Sep 17 00:00:00 2001
|
||||
From 489e8a00a23c0dd6fbef5f1e69b2f7ed3fbc04d7 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 12 Aug 2019 23:08:26 +0200
|
||||
Subject: [PATCH 07/24] Add support for samsung touch, physical and hover
|
||||
Subject: [PATCH 07/28] Add support for samsung touch, physical and hover
|
||||
proximity sensor as fallback to real proximity sensor
|
||||
|
||||
Change-Id: I7a0f8b4665c802140d19197d850b77b2a7ac1865
|
||||
@@ -10,10 +10,10 @@ Change-Id: I7a0f8b4665c802140d19197d850b77b2a7ac1865
|
||||
1 file changed, 35 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
index 1224902aa7be..00fab25350dc 100644
|
||||
index f543a562687c..82b1260e79dc 100644
|
||||
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
@@ -1700,6 +1700,27 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
@@ -1726,6 +1726,27 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
? Sensor.TYPE_PROXIMITY : SensorUtils.NO_FALLBACK;
|
||||
mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name,
|
||||
fallbackType);
|
||||
@@ -41,7 +41,7 @@ index 1224902aa7be..00fab25350dc 100644
|
||||
if (mProximitySensor != null) {
|
||||
mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
|
||||
TYPICAL_PROXIMITY_THRESHOLD);
|
||||
@@ -2465,6 +2486,20 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
@@ -2491,6 +2512,20 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
public void onSensorChanged(SensorEvent event) {
|
||||
if (mProximitySensorEnabled) {
|
||||
final long time = SystemClock.uptimeMillis();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 433f76bd4145480f67496d409e01a0f8b235879f Mon Sep 17 00:00:00 2001
|
||||
From e69df4088c108effd45e8741047ee1afd8ca2ce5 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 5 Apr 2020 16:32:46 +0200
|
||||
Subject: [PATCH 08/24] Always allow overriding the number of work profiles
|
||||
Subject: [PATCH 08/28] Always allow overriding the number of work profiles
|
||||
|
||||
Change-Id: I6eb09aa71663c6fbe7563e3038bffcabdba0ff6a
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 2e867d814f8f7675058085aea23b5cb95f8588f9 Mon Sep 17 00:00:00 2001
|
||||
From 901baaf78da74754054309406fb5211170a38552 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 6 Jun 2020 18:21:56 +0200
|
||||
Subject: [PATCH 09/24] HOME deserves to wake-up devices just as well as back
|
||||
Subject: [PATCH 09/28] HOME deserves to wake-up devices just as well as back
|
||||
and menu
|
||||
|
||||
Change-Id: Ia562bafd8c620d00c17e8eb338e4701c6c4a3c3a
|
||||
@@ -10,12 +10,12 @@ Change-Id: Ia562bafd8c620d00c17e8eb338e4701c6c4a3c3a
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
|
||||
index cda9b233576c..bb35e3172165 100644
|
||||
index 63fa3323b5b5..b1a845990df3 100644
|
||||
--- a/core/java/android/view/KeyEvent.java
|
||||
+++ b/core/java/android/view/KeyEvent.java
|
||||
@@ -1988,6 +1988,7 @@ public class KeyEvent extends InputEvent implements Parcelable {
|
||||
switch (keyCode) {
|
||||
@@ -1995,6 +1995,7 @@ public class KeyEvent extends InputEvent implements Parcelable {
|
||||
case KeyEvent.KEYCODE_CAMERA:
|
||||
case KeyEvent.KEYCODE_FOCUS:
|
||||
case KeyEvent.KEYCODE_MENU:
|
||||
+ case KeyEvent.KEYCODE_HOME:
|
||||
case KeyEvent.KEYCODE_PAIRING:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From acf92f0e0d9efaf2453aacb16b58eccb914094c4 Mon Sep 17 00:00:00 2001
|
||||
From 14e1ced9fe14016d081618bb41a451227cd538d8 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 29 Sep 2020 22:39:47 +0200
|
||||
Subject: [PATCH 10/24] Some devices have proximity sensor reporting NaN as max
|
||||
Subject: [PATCH 10/28] Some devices have proximity sensor reporting NaN as max
|
||||
range for some reason. Make them behave standard way by setting 5 cm
|
||||
|
||||
Change-Id: I3c39e3e914a05903c140235702e0480d2d58a612
|
||||
@@ -10,10 +10,10 @@ Change-Id: I3c39e3e914a05903c140235702e0480d2d58a612
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
index 00fab25350dc..3c49a01e00b4 100644
|
||||
index 82b1260e79dc..a9de9e1ff19a 100644
|
||||
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
@@ -1724,6 +1724,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
@@ -1750,6 +1750,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
if (mProximitySensor != null) {
|
||||
mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
|
||||
TYPICAL_PROXIMITY_THRESHOLD);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From cc5cb64f17283c81d884e75ee38ef6c292d3ca46 Mon Sep 17 00:00:00 2001
|
||||
From f8fb9e614a976c475edc26770347f9eee623d85c Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 29 Sep 2020 22:40:10 +0200
|
||||
Subject: [PATCH 11/24] Fix brightness range not being complete on Samsung
|
||||
Subject: [PATCH 11/28] Fix brightness range not being complete on Samsung
|
||||
devices
|
||||
|
||||
On some devices, minimum brightness is 0, which totally messes with
|
||||
@@ -15,10 +15,10 @@ Change-Id: I4d97cbc32490949e83272b81ec6320a5483310b1
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
|
||||
index f0ebe290c837..76af7630819c 100644
|
||||
index 62d9991254bd..24932bd4d201 100644
|
||||
--- a/services/core/java/com/android/server/power/PowerManagerService.java
|
||||
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
|
||||
@@ -993,9 +993,11 @@ public final class PowerManagerService extends SystemService
|
||||
@@ -1040,9 +1040,11 @@ public final class PowerManagerService extends SystemService
|
||||
|
||||
if (min == INVALID_BRIGHTNESS_IN_CONFIG || max == INVALID_BRIGHTNESS_IN_CONFIG
|
||||
|| def == INVALID_BRIGHTNESS_IN_CONFIG) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 42ab9d35ed55b576d7e7257a18fd984c79d63b9b Mon Sep 17 00:00:00 2001
|
||||
From ccb4d4cf65dcb79d237caa9192bb863ef5809edd Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 25 Oct 2020 23:57:26 +0100
|
||||
Subject: [PATCH 12/24] Re-implement fnmatch-like behaviour for RRO java-side
|
||||
Subject: [PATCH 12/28] Re-implement fnmatch-like behaviour for RRO java-side
|
||||
|
||||
Change-Id: Id38292a9a1453aa87b8401c1fdb390fa4e63c7d1
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 2319811d1b5e5055c236807ce0ff8be759056741 Mon Sep 17 00:00:00 2001
|
||||
From 924e19514d9bc0c67c64560fba9d7fc3432e8981 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 6 Dec 2020 12:20:08 +0100
|
||||
Subject: [PATCH 13/24] Make rounded corners padding overridable with
|
||||
Subject: [PATCH 13/28] Make rounded corners padding overridable with
|
||||
persist.sys.phh.rounded_corners_padding
|
||||
|
||||
Change-Id: I481c1c8849b2f22a7cdfb2896a6d3c2e7e3b44d9
|
||||
@@ -12,7 +12,7 @@ Change-Id: I481c1c8849b2f22a7cdfb2896a6d3c2e7e3b44d9
|
||||
3 files changed, 14 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
|
||||
index 84b961e7c48a..a5150000f47c 100644
|
||||
index d2af6f88915f..3478ec463573 100644
|
||||
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
|
||||
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
|
||||
@@ -22,6 +22,7 @@ import android.content.res.Configuration;
|
||||
@@ -23,7 +23,7 @@ index 84b961e7c48a..a5150000f47c 100644
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Pair;
|
||||
import android.view.DisplayCutout;
|
||||
@@ -234,8 +235,10 @@ public class QuickStatusBarHeader extends FrameLayout {
|
||||
@@ -238,8 +239,10 @@ public class QuickStatusBarHeader extends FrameLayout implements TunerService.Tu
|
||||
|
||||
mConfigShowBatteryEstimate = resources.getBoolean(R.bool.config_showBatteryEstimateQSBH);
|
||||
|
||||
@@ -37,7 +37,7 @@ index 84b961e7c48a..a5150000f47c 100644
|
||||
int qsOffsetHeight = resources.getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.quick_qs_offset_height);
|
||||
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
|
||||
index 788665269edb..f9c6ebbd26e3 100644
|
||||
index c1191aa71ef4..a32e7c4765ef 100644
|
||||
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
|
||||
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
|
||||
@@ -30,6 +30,7 @@ import android.graphics.Color;
|
||||
@@ -48,10 +48,10 @@ index 788665269edb..f9c6ebbd26e3 100644
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Pair;
|
||||
import android.util.TypedValue;
|
||||
@@ -196,8 +197,10 @@ public class KeyguardStatusBarView extends RelativeLayout implements
|
||||
@@ -193,8 +194,10 @@ public class KeyguardStatusBarView extends RelativeLayout implements
|
||||
R.dimen.ongoing_appops_dot_min_padding);
|
||||
mCutoutSideNudge = getResources().getDimensionPixelSize(
|
||||
R.dimen.display_cutout_margin_consumption);
|
||||
mShowPercentAvailable = getContext().getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_battery_percentage_setting_available);
|
||||
- mRoundedCornerPadding = res.getDimensionPixelSize(
|
||||
- R.dimen.rounded_corner_content_padding);
|
||||
+ mRoundedCornerPadding = SystemProperties.getInt("persist.sys.phh.rounded_corners_padding", -1);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 3e636d6cf6d3f10c5578ba79f8246278b5b1205f Mon Sep 17 00:00:00 2001
|
||||
From dd87ec1187b8be38995b734dbdfe3598dfd59cdb Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Fri, 11 Dec 2020 14:41:09 +0100
|
||||
Subject: [PATCH 14/24] Remove useless notification about "console" service
|
||||
Subject: [PATCH 14/28] Remove useless notification about "console" service
|
||||
being running
|
||||
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From b78db2908f199c2ecdbb2c9e8f08cc96c399d986 Mon Sep 17 00:00:00 2001
|
||||
From bdffa8303310e05d4fba777d5f1e00b62d20db19 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Wed, 16 Dec 2020 21:24:12 +0800
|
||||
Subject: [PATCH 15/24] Revert "Remove unused SystemProperties.set"
|
||||
Subject: [PATCH 15/28] Revert "Remove unused SystemProperties.set"
|
||||
|
||||
This reverts commit debb4616ef67f9ed5054eca51ec58592358ff55f.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 557bd0cca4cee3c3137cba9035eb254772436eae Mon Sep 17 00:00:00 2001
|
||||
From 6384008d3e04db21fe384cba9879b915cded98ab Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Wed, 16 Dec 2020 13:46:15 +0800
|
||||
Subject: [PATCH 16/24] TelephonyManager: bring back getNetworkClass()
|
||||
Subject: [PATCH 16/28] TelephonyManager: bring back getNetworkClass()
|
||||
|
||||
This partially reverts commit c058cac051ab083dc7fb7ea6aa85699110b2e9bf.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From b51669eff63818a15122ee274e50792b2772ecba Mon Sep 17 00:00:00 2001
|
||||
From 3026abf6ca577e885c2481c39826b16104a49ac2 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Wed, 16 Dec 2020 21:26:45 +0800
|
||||
Subject: [PATCH 17/24] TelephonyManager: add API annotations for
|
||||
Subject: [PATCH 17/28] TelephonyManager: add API annotations for
|
||||
setTelephonyProperty
|
||||
|
||||
* This method was added back by reverting commit
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 9b926fe1972bf2f8139a8a00b2f452d4e3cabdea Mon Sep 17 00:00:00 2001
|
||||
From 78a5652a8d86f51f479ced7b08864fe71f630905 Mon Sep 17 00:00:00 2001
|
||||
From: Alberto Ponces <ponces26@gmail.com>
|
||||
Date: Tue, 2 Feb 2021 10:20:51 +0000
|
||||
Subject: [PATCH 18/24] Fix Wakelock issue
|
||||
Subject: [PATCH 18/28] Fix Wakelock issue
|
||||
|
||||
Prevent SystemUI crash due to "WakeLock under-locked Doze" (issue #12) by only releasing a wakelock that was not already released
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From ec9c979cb9c2399380292d775d068ce596ba855d Mon Sep 17 00:00:00 2001
|
||||
From 2cb4389377b69c5e53101536333838c6aa63d4fa Mon Sep 17 00:00:00 2001
|
||||
From: Arne Coucheron <arco68@gmail.com>
|
||||
Date: Thu, 5 Nov 2020 05:38:44 +0100
|
||||
Subject: [PATCH 19/24] SystemUI: Use AVCProfileMain for screen recorder
|
||||
Subject: [PATCH 19/28] SystemUI: Use AVCProfileMain for screen recorder
|
||||
|
||||
Some devices don't support the High profile very well.
|
||||
Use Main profile, which is more compatible, so they
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From e63f6286978d095c26a24253b503c3964db6ab68 Mon Sep 17 00:00:00 2001
|
||||
From 357f0fac32fc59b8f6349febd3a65f2ffb820279 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 20 Mar 2021 14:31:01 +0100
|
||||
Subject: [PATCH 20/24] Automatically detect pick up sensor, so that an overlay
|
||||
Subject: [PATCH 20/28] Automatically detect pick up sensor, so that an overlay
|
||||
is required for the sole purpose of enabling pulse doze on pick up sensor
|
||||
|
||||
---
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 69a948909ec0ac6d2fb89fdfeadee0df09437df0 Mon Sep 17 00:00:00 2001
|
||||
From f4f5e6173024f2057f4d4ffcdc77028d03b004e2 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 23 Mar 2021 19:43:26 +0100
|
||||
Subject: [PATCH 21/24] Catch broken mainBuiltInDisplayCutoutRectApproximation
|
||||
Subject: [PATCH 21/28] Catch broken mainBuiltInDisplayCutoutRectApproximation
|
||||
|
||||
Some devices (Redmi Note 9T) have:
|
||||
mainBuiltInDisplayCutoutRectApproximation = @android:mainBuiltInDisplayCutout
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 97d62e3f56c39729d3756166599999216fbc2639 Mon Sep 17 00:00:00 2001
|
||||
From 0935d80aa90b9575b77bd55a37432a5f4a6c3747 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 24 Mar 2018 08:01:48 +0100
|
||||
Subject: [PATCH 22/24] backlight: Fix backlight control on Galaxy S9(+)
|
||||
Subject: [PATCH 22/28] backlight: Fix backlight control on Galaxy S9(+)
|
||||
|
||||
Change-Id: I1fbbb47939c377597ef8ad6b88b2acea5f4acaa6
|
||||
|
||||
@@ -53,10 +53,10 @@ Change-Id: I4e85178327d2bb63d5d0a37786058843662a89ba
|
||||
1 file changed, 46 insertions(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
|
||||
index 91f14de040fe..8fa9c4f3a698 100644
|
||||
index fea6b29d9260..caf9eba7d9a8 100644
|
||||
--- a/services/core/java/com/android/server/lights/LightsService.java
|
||||
+++ b/services/core/java/com/android/server/lights/LightsService.java
|
||||
@@ -31,6 +31,7 @@ import android.os.IBinder;
|
||||
@@ -32,6 +32,7 @@ import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
@@ -64,7 +64,7 @@ index 91f14de040fe..8fa9c4f3a698 100644
|
||||
import android.os.Trace;
|
||||
import android.provider.Settings;
|
||||
import android.util.Slog;
|
||||
@@ -294,6 +295,51 @@ public class LightsService extends SystemService {
|
||||
@@ -295,6 +296,51 @@ public class LightsService extends SystemService {
|
||||
return;
|
||||
}
|
||||
int brightnessInt = BrightnessSynchronizer.brightnessFloatToInt(brightness);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 38da0b29efb2577ebd9295a45617160e3caec696 Mon Sep 17 00:00:00 2001
|
||||
From 7b0c25ae3dfe6af5d9d9a2b2518964f7c5f034bf Mon Sep 17 00:00:00 2001
|
||||
From: Danny Lin <danny@kdrag0n.dev>
|
||||
Date: Sat, 16 Oct 2021 05:27:57 -0700
|
||||
Subject: [PATCH 23/24] Add support for app signature spoofing
|
||||
Subject: [PATCH 23/28] Add support for app signature spoofing
|
||||
|
||||
This is needed by microG GmsCore to pretend to be the official Google
|
||||
Play Services package, because client apps check the package signature
|
||||
@@ -56,10 +56,10 @@ index 1de47b548a5c..52c7ea2e1321 100644
|
||||
field public static final String MICROPHONE = "android.permission-group.MICROPHONE";
|
||||
field public static final String NEARBY_DEVICES = "android.permission-group.NEARBY_DEVICES";
|
||||
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
|
||||
index cd6af189a04a..318a7f06494e 100644
|
||||
index 76b8547cea2a..8bd3206d1e3a 100644
|
||||
--- a/core/res/AndroidManifest.xml
|
||||
+++ b/core/res/AndroidManifest.xml
|
||||
@@ -3189,6 +3189,21 @@
|
||||
@@ -3199,6 +3199,21 @@
|
||||
android:description="@string/permdesc_getPackageSize"
|
||||
android:protectionLevel="normal" />
|
||||
|
||||
@@ -105,7 +105,7 @@ index b58638cc3ade..8cf98fa56bf6 100644
|
||||
<string name="permlab_statusBar">disable or modify status bar</string>
|
||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
||||
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
index b77483012ee8..04f55ae83ef0 100644
|
||||
index f69922f64787..7d0ba265ff7e 100644
|
||||
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
|
||||
@@ -3325,6 +3325,29 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 4881811426c4f2f28d1f053ef73441c53d1238a5 Mon Sep 17 00:00:00 2001
|
||||
From 7003808f45a75893726d4073da9132c314091e98 Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Sat, 4 Sep 2021 08:26:30 +0000
|
||||
Subject: [PATCH 24/24] Revert "Switch long-press power behavior in AOSP."
|
||||
Subject: [PATCH 24/28] Revert "Switch long-press power behavior in AOSP."
|
||||
|
||||
This reverts commit 803c77a0a24624111944832098c6f65158051dc4.
|
||||
---
|
||||
@@ -9,19 +9,19 @@ This reverts commit 803c77a0a24624111944832098c6f65158051dc4.
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
|
||||
index 0abeff91e511..b7dfd49b7b78 100644
|
||||
index 380f2b362668..3ce1886fef6d 100644
|
||||
--- a/core/res/res/values/config.xml
|
||||
+++ b/core/res/res/values/config.xml
|
||||
@@ -955,7 +955,7 @@
|
||||
4 - Go to voice assist
|
||||
@@ -956,7 +956,7 @@
|
||||
5 - Go to assistant (Settings.Secure.ASSISTANT)
|
||||
6 - Toggle torch on / off (if screen is off)
|
||||
-->
|
||||
- <integer name="config_longPressOnPowerBehavior">5</integer>
|
||||
+ <integer name="config_longPressOnPowerBehavior">1</integer>
|
||||
|
||||
<!-- The time in milliseconds after which a press on power button is considered "long". -->
|
||||
<integer name="config_longPressOnPowerDurationMs">500</integer>
|
||||
@@ -987,7 +987,7 @@
|
||||
@@ -988,7 +988,7 @@
|
||||
1 - Mute toggle
|
||||
2 - Global actions menu
|
||||
-->
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From 72faf5ce1446d48e39961177519c92359e066312 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Fri, 17 Dec 2021 17:16:14 -0500
|
||||
Subject: [PATCH 25/28] Reduce the size of udfps enroll progress bar. Some
|
||||
devices have their udfps pretty low, and the progress bar would make the icon
|
||||
at the wrong place
|
||||
|
||||
Change-Id: I1609ad9ca316293dcaaf07f7e681d11aadfcd29c
|
||||
---
|
||||
packages/SystemUI/res/values/config.xml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
|
||||
index dbbb54f7ad6e..d0098b32f384 100644
|
||||
--- a/packages/SystemUI/res/values/config.xml
|
||||
+++ b/packages/SystemUI/res/values/config.xml
|
||||
@@ -637,7 +637,7 @@
|
||||
|
||||
<!-- The radius of the enrollment progress bar, in dp -->
|
||||
<integer name="config_udfpsEnrollProgressBar" translatable="false">
|
||||
- 280
|
||||
+ 70
|
||||
</integer>
|
||||
|
||||
<!-- package name of a built-in camera app to use to restrict implicit intent resolution
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,592 @@
|
||||
From 380896691e59acbc1af203a2433adaba68c1b5ee Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 19 Dec 2021 17:08:22 -0500
|
||||
Subject: [PATCH 26/28] Add UDFPS support for various devices
|
||||
|
||||
Successfully tested on Galaxy A51, Xiaomi Mi 9, and OnePlus Nord 2
|
||||
|
||||
- Detect UDFPS properties (udfps support and x/y/r) based on
|
||||
OEM-specific methods
|
||||
- Hardcode UDFPS properties for some devices
|
||||
- Call OEM-specific functions on touchDown/touchUp
|
||||
|
||||
Change-Id: I9448f06a46c178652f5b216717d914b8db55c993
|
||||
---
|
||||
.../systemui/biometrics/UdfpsSurfaceView.java | 2 +-
|
||||
.../systemui/biometrics/UdfpsView.java | 53 +++-
|
||||
services/core/Android.bp | 4 +
|
||||
.../server/biometrics/AuthService.java | 262 +++++++++++++++++-
|
||||
.../sensors/fingerprint/UdfpsHelper.java | 115 +++++++-
|
||||
5 files changed, 418 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java
|
||||
index 77fad35d32d4..51409b9c533a 100644
|
||||
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java
|
||||
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java
|
||||
@@ -69,7 +69,7 @@ public class UdfpsSurfaceView extends SurfaceView implements SurfaceHolder.Callb
|
||||
|
||||
mSensorPaint = new Paint(0 /* flags */);
|
||||
mSensorPaint.setAntiAlias(true);
|
||||
- mSensorPaint.setARGB(255, 255, 255, 255);
|
||||
+ mSensorPaint.setARGB(255, 0, 255, 0);
|
||||
mSensorPaint.setStyle(Paint.Style.FILL);
|
||||
}
|
||||
|
||||
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.java
|
||||
index 8a213ec502e4..335edf4819de 100644
|
||||
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.java
|
||||
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.java
|
||||
@@ -41,6 +41,12 @@ import com.android.systemui.R;
|
||||
import com.android.systemui.biometrics.UdfpsHbmTypes.HbmType;
|
||||
import com.android.systemui.doze.DozeReceiver;
|
||||
|
||||
+import java.io.BufferedReader;
|
||||
+import java.io.File;
|
||||
+import java.io.FileReader;
|
||||
+import java.io.PrintWriter;
|
||||
+
|
||||
+
|
||||
/**
|
||||
* A view containing 1) A SurfaceView for HBM, and 2) A normal drawable view for all other
|
||||
* animations.
|
||||
@@ -50,7 +56,7 @@ public class UdfpsView extends FrameLayout implements DozeReceiver, UdfpsIllumin
|
||||
|
||||
private static final String SETTING_HBM_TYPE =
|
||||
"com.android.systemui.biometrics.UdfpsSurfaceView.hbmType";
|
||||
- private static final @HbmType int DEFAULT_HBM_TYPE = UdfpsHbmTypes.LOCAL_HBM;
|
||||
+ private static final @HbmType int DEFAULT_HBM_TYPE = UdfpsHbmTypes.GLOBAL_HBM;
|
||||
|
||||
private static final int DEBUG_TEXT_SIZE_PX = 32;
|
||||
|
||||
@@ -70,6 +76,49 @@ public class UdfpsView extends FrameLayout implements DozeReceiver, UdfpsIllumin
|
||||
@Nullable private String mDebugMessage;
|
||||
private boolean mIlluminationRequested;
|
||||
|
||||
+ public static void samsungCmd(String cmd) {
|
||||
+ try {
|
||||
+ writeFile("/sys/devices/virtual/sec/tsp/cmd", cmd);
|
||||
+
|
||||
+ String status = readFile("/sys/devices/virtual/sec/tsp/cmd_status");
|
||||
+ String ret = readFile("/sys/devices/virtual/sec/tsp/cmd_result");
|
||||
+
|
||||
+ android.util.Log.d("PHH", "Sending command " + cmd + " returned " + ret + ":" + status);
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed sending command " + cmd, e);
|
||||
+ }
|
||||
+ }
|
||||
+ private static void writeFile(String path, String value) {
|
||||
+ try {
|
||||
+ PrintWriter writer = new PrintWriter(path, "UTF-8");
|
||||
+ writer.println(value);
|
||||
+ writer.close();
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed writing to " + path + ": " + value);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private static void writeFile(File file, String value) {
|
||||
+ try {
|
||||
+ PrintWriter writer = new PrintWriter(file, "UTF-8");
|
||||
+ writer.println(value);
|
||||
+ writer.close();
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed writing to " + file + ": " + value);
|
||||
+ }
|
||||
+ }
|
||||
+ private static String readFile(String path) {
|
||||
+ try {
|
||||
+ File f = new File(path);
|
||||
+
|
||||
+ BufferedReader b = new BufferedReader(new FileReader(f));
|
||||
+ return b.readLine();
|
||||
+ } catch(Exception e) {
|
||||
+ return null;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+
|
||||
public UdfpsView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
|
||||
@@ -252,6 +301,8 @@ public class UdfpsView extends FrameLayout implements DozeReceiver, UdfpsIllumin
|
||||
Log.w(TAG, "doIlluminate | onIlluminatedRunnable is null");
|
||||
}
|
||||
});
|
||||
+ } else if (mGhbmView != null) {
|
||||
+ mGhbmView.drawIlluminationDot(mSensorRect);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/services/core/Android.bp b/services/core/Android.bp
|
||||
index 89e4b02e7944..9270e81cb4b5 100644
|
||||
--- a/services/core/Android.bp
|
||||
+++ b/services/core/Android.bp
|
||||
@@ -157,6 +157,10 @@ java_library_static {
|
||||
"android.hardware.soundtrigger-V2.3-java",
|
||||
"android.hardware.power.stats-V1-java",
|
||||
"android.hidl.manager-V1.2-java",
|
||||
+ "vendor.goodix.hardware.biometrics.fingerprint-V2.1-java",
|
||||
+ "vendor.samsung.hardware.biometrics.fingerprint-V3.0-java",
|
||||
+ "vendor.oplus.hardware.biometrics.fingerprint-V2.1-java",
|
||||
+ "vendor.oppo.hardware.biometrics.fingerprint-V2.1-java",
|
||||
"capture_state_listener-aidl-java",
|
||||
"icu4j_calendar_astronomer",
|
||||
"netd-client",
|
||||
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
|
||||
index b42f8980d1c0..41a04b8b5056 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/AuthService.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
|
||||
@@ -72,6 +72,21 @@ import com.android.server.SystemService;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
+import android.hardware.display.DisplayManager;
|
||||
+
|
||||
+import android.graphics.Point;
|
||||
+import android.util.DisplayMetrics;
|
||||
+import java.io.BufferedReader;
|
||||
+import java.io.File;
|
||||
+import java.io.FileReader;
|
||||
+import java.io.PrintWriter;
|
||||
+
|
||||
+import android.os.FileObserver;
|
||||
+import android.os.Build;
|
||||
+
|
||||
+import vendor.samsung.hardware.biometrics.fingerprint.V3_0.ISehBiometricsFingerprint;
|
||||
+import vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon;
|
||||
+
|
||||
/**
|
||||
* System service that provides an interface for authenticating with biometrics and
|
||||
* PIN/pattern/password to BiometricPrompt and lock screen.
|
||||
@@ -88,6 +103,9 @@ public class AuthService extends SystemService {
|
||||
@VisibleForTesting
|
||||
final IAuthService.Stub mImpl;
|
||||
|
||||
+ private FileObserver fodFileObserver = null;
|
||||
+ private ISehBiometricsFingerprint mSamsungFingerprint = null;
|
||||
+
|
||||
/**
|
||||
* Class for injecting dependencies into AuthService.
|
||||
* TODO(b/141025588): Replace with a dependency injection framework (e.g. Guice, Dagger).
|
||||
@@ -636,6 +654,68 @@ public class AuthService extends SystemService {
|
||||
registerAuthenticators(hidlConfigs);
|
||||
|
||||
mInjector.publishBinderService(this, mImpl);
|
||||
+ try {
|
||||
+ mSamsungFingerprint = ISehBiometricsFingerprint.getService();
|
||||
+ android.util.Log.e("PHH", "Got samsung fingerprint HAL");
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.e("PHH", "Failed getting Samsung fingerprint HAL", e);
|
||||
+ }
|
||||
+ if(samsungHasCmd("fod_enable") && mSamsungFingerprint != null) {
|
||||
+ samsungCmd("fod_enable,1,1,0");
|
||||
+ String actualMaskBrightnessPath = "/sys/class/lcd/panel/actual_mask_brightness";
|
||||
+ android.util.Log.e("PHH-Enroll", "Reading actual brightness file gives " + readFile(actualMaskBrightnessPath));
|
||||
+ fodFileObserver = new FileObserver(actualMaskBrightnessPath, FileObserver.MODIFY) {
|
||||
+ @Override
|
||||
+ public void onEvent(int event, String path) {
|
||||
+ String actualMask = readFile(actualMaskBrightnessPath);
|
||||
+ try {
|
||||
+ mSamsungFingerprint = ISehBiometricsFingerprint.getService();
|
||||
+ } catch(Exception e) {}
|
||||
+ Slog.d("PHH-Enroll", "New actual mask brightness is " + actualMask);
|
||||
+ try {
|
||||
+ int eventReq = 0;
|
||||
+ if("0".equals(actualMask)) {
|
||||
+ eventReq = 1; //released
|
||||
+ } else {
|
||||
+ eventReq = 2; //pressed
|
||||
+ }
|
||||
+ if(mSamsungFingerprint != null) {
|
||||
+ mSamsungFingerprint.sehRequest(22 /* SEM_FINGER_STATE */, eventReq, new java.util.ArrayList<Byte>(),
|
||||
+ (int retval, java.util.ArrayList<Byte> out) -> {} );
|
||||
+ }
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed setting samsung event for mask observer", e);
|
||||
+ }
|
||||
+ }
|
||||
+ };
|
||||
+ fodFileObserver.startWatching();
|
||||
+ }
|
||||
+ String asusSpotOnAchieved = "/sys/class/drm/spot_on_achieved";
|
||||
+ if( (new File(asusSpotOnAchieved)).exists()) {
|
||||
+ fodFileObserver = new FileObserver(asusSpotOnAchieved, FileObserver.MODIFY) {
|
||||
+ boolean wasOn = false;
|
||||
+ @Override
|
||||
+ public void onEvent(int event, String path) {
|
||||
+ String spotOn = readFile(asusSpotOnAchieved);
|
||||
+ if("1".equals(spotOn)) {
|
||||
+ if(!wasOn) {
|
||||
+ try {
|
||||
+ IGoodixFingerprintDaemon goodixDaemon = IGoodixFingerprintDaemon.getService();
|
||||
+ goodixDaemon.sendCommand(200002, new java.util.ArrayList<Byte>(), (returnCode, resultData) -> {
|
||||
+ Slog.e(TAG, "Goodix send command returned code "+ returnCode);
|
||||
+ });
|
||||
+ } catch(Throwable t) {
|
||||
+ Slog.d("PHH-Enroll", "Failed sending goodix command", t);
|
||||
+ }
|
||||
+ }
|
||||
+ wasOn = true;
|
||||
+ } else {
|
||||
+ wasOn = false;
|
||||
+ }
|
||||
+ }
|
||||
+ };
|
||||
+ fodFileObserver.startWatching();
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -734,19 +814,197 @@ public class AuthService extends SystemService {
|
||||
? modality : (modality & ~BiometricAuthenticator.TYPE_CREDENTIAL);
|
||||
}
|
||||
|
||||
+ private static String readFile(String path) {
|
||||
+ try {
|
||||
+ File f = new File(path);
|
||||
+
|
||||
+ BufferedReader b = new BufferedReader(new FileReader(f));
|
||||
+ return b.readLine();
|
||||
+ } catch(Exception e) {
|
||||
+ return null;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private static boolean samsungHasCmd(String cmd) {
|
||||
+ try {
|
||||
+ File f = new File("/sys/devices/virtual/sec/tsp/cmd_list");
|
||||
+ if(!f.exists()) return false;
|
||||
+
|
||||
+ android.util.Log.d("PHH", "Managed to grab cmd list, checking...");
|
||||
+ BufferedReader b = new BufferedReader(new FileReader(f));
|
||||
+ String line = null;
|
||||
+ while( (line = b.readLine()) != null) {
|
||||
+ if(line.equals(cmd)) return true;
|
||||
+ }
|
||||
+ android.util.Log.d("PHH", "... nope");
|
||||
+ return false;
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed reading cmd_list", e);
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public static void samsungCmd(String cmd) {
|
||||
+ try {
|
||||
+ writeFile("/sys/devices/virtual/sec/tsp/cmd", cmd);
|
||||
+
|
||||
+ String status = readFile("/sys/devices/virtual/sec/tsp/cmd_status");
|
||||
+ String ret = readFile("/sys/devices/virtual/sec/tsp/cmd_result");
|
||||
+
|
||||
+ android.util.Log.d("PHH", "Sending command " + cmd + " returned " + ret + ":" + status);
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed sending command " + cmd, e);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private static void writeFile(String path, String value) {
|
||||
+ try {
|
||||
+ PrintWriter writer = new PrintWriter(path, "UTF-8");
|
||||
+ writer.println(value);
|
||||
+ writer.close();
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed writing to " + path + ": " + value);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private static void writeFile(File file, String value) {
|
||||
+ try {
|
||||
+ PrintWriter writer = new PrintWriter(file, "UTF-8");
|
||||
+ writer.println(value);
|
||||
+ writer.close();
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed writing to " + file + ": " + value);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
private FingerprintSensorPropertiesInternal getHidlFingerprintSensorProps(int sensorId,
|
||||
@BiometricManager.Authenticators.Types int strength) {
|
||||
// The existence of config_udfps_sensor_props indicates that the sensor is UDFPS.
|
||||
- final int[] udfpsProps = getContext().getResources().getIntArray(
|
||||
+ int[] udfpsProps = getContext().getResources().getIntArray(
|
||||
com.android.internal.R.array.config_udfps_sensor_props);
|
||||
|
||||
- final boolean isUdfps = !ArrayUtils.isEmpty(udfpsProps);
|
||||
+ boolean isUdfps = !ArrayUtils.isEmpty(udfpsProps);
|
||||
|
||||
// config_is_powerbutton_fps indicates whether device has a power button fingerprint sensor.
|
||||
final boolean isPowerbuttonFps = getContext().getResources().getBoolean(
|
||||
R.bool.config_is_powerbutton_fps);
|
||||
|
||||
+ DisplayManager mDM = (DisplayManager) getContext().getSystemService(Context.DISPLAY_SERVICE);
|
||||
+ Point displayRealSize = new Point();
|
||||
+ DisplayMetrics displayMetrics = new DisplayMetrics();
|
||||
+ mDM.getDisplay(0).getRealSize(displayRealSize);
|
||||
+ mDM.getDisplay(0).getMetrics(displayMetrics);
|
||||
+
|
||||
+ String[] xiaomiLocation = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.location.X_Y", "").split(",");
|
||||
+ if(xiaomiLocation.length != 2)
|
||||
+ xiaomiLocation = android.os.SystemProperties.get("persist.sys.fp.fod.location.X_Y", "").split(",");
|
||||
+ String[] xiaomiSize = android.os.SystemProperties.get("persist.vendor.sys.fp.fod.size.width_height", "").split(",");
|
||||
+ if(xiaomiSize.length != 2)
|
||||
+ xiaomiSize = android.os.SystemProperties.get("persist.sys.fp.fod.size.width_height", "").split(",");
|
||||
+ if(xiaomiSize.length == 2 && xiaomiLocation.length == 2) {
|
||||
+ udfpsProps = new int[3];
|
||||
+ udfpsProps[0] = (int)displayRealSize.x/2;
|
||||
+ udfpsProps[1] = Integer.parseInt(xiaomiLocation[1]);
|
||||
+ udfpsProps[2] = Integer.parseInt(xiaomiSize[0])/2;
|
||||
+ udfpsProps[1] += udfpsProps[2];
|
||||
+ isUdfps = true;
|
||||
+ }
|
||||
+
|
||||
+ if(readFile("/sys/class/fingerprint/fingerprint/position") != null) {
|
||||
+ android.util.Log.d("PHH", "Samsung fingerprint");
|
||||
+ String[] fodPositionArray = readFile("/sys/class/fingerprint/fingerprint/position").split(",");
|
||||
+ float bottomMM = Float.parseFloat(fodPositionArray[0]);
|
||||
+ float areaSizeMM = Float.parseFloat(fodPositionArray[5]);
|
||||
+ float bottomInch = bottomMM * 0.0393700787f;
|
||||
+ float areaSizeInch = areaSizeMM * 0.0393700787f;
|
||||
+ int bottomPx = (int)(bottomInch * displayMetrics.ydpi);
|
||||
+ int areaSizePx = (int)(areaSizeInch * displayMetrics.ydpi);
|
||||
+ float mW = areaSizePx/2;
|
||||
+ float mH = areaSizePx/2;
|
||||
+ float mX = displayRealSize.x/2;
|
||||
+ float mY = displayRealSize.y - bottomPx - mH;
|
||||
+
|
||||
+ samsungCmd(String.format("fod_rect,%d,%d,%d,%d", (int)(mX - mW/2), (int)(mY - mW/2), (int)(mX + mW/2), (int)(mY + mW/2)));
|
||||
+
|
||||
+ udfpsProps = new int[3];
|
||||
+ udfpsProps[0] = (int)mX;
|
||||
+ udfpsProps[1] = (int)mY;
|
||||
+ udfpsProps[2] = (int)mW;
|
||||
+ isUdfps = true;
|
||||
+
|
||||
+ try {
|
||||
+ mSamsungFingerprint = ISehBiometricsFingerprint.getService();
|
||||
+ Slog.d("PHH-Enroll", "Samsung ask for sensor status");
|
||||
+ mSamsungFingerprint.sehRequest(6, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList<Byte> out) -> {
|
||||
+ Slog.d("PHH-Enroll", "Result is " + retval);
|
||||
+ for(int i=0; i<out.size(); i++) {
|
||||
+ Slog.d("PHH-Enroll", "\t" + i + ":" + out.get(i));
|
||||
+ }
|
||||
+ } );
|
||||
+ Slog.d("PHH-Enroll", "Samsung ask for sensor brightness value");
|
||||
+ mSamsungFingerprint.sehRequest(32, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList<Byte> out) -> {
|
||||
+ Slog.d("PHH-Enroll", "Result is " + retval);
|
||||
+ for(int i=0; i<out.size(); i++) {
|
||||
+ Slog.d("PHH-Enroll", "\t" + i + ":" + out.get(i));
|
||||
+ }
|
||||
+ } );
|
||||
+
|
||||
+ } catch(Exception e) {
|
||||
+ Slog.d("PHH-Enroll", "Failed setting samsung3.0 fingerprint recognition", e);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ int oppoSize = android.os.SystemProperties.getInt("persist.vendor.fingerprint.optical.iconsize", 0);
|
||||
+ int oppoLocation = android.os.SystemProperties.getInt("persist.vendor.fingerprint.optical.iconlocation", 0);
|
||||
+ if(oppoLocation > 0 && oppoSize > 0) {
|
||||
+ int mW = oppoSize/2;
|
||||
+ int mH = oppoSize/2;
|
||||
+
|
||||
+ Slog.d("PHH-Enroll", "Got Oppo icon location " + oppoLocation);
|
||||
+ Slog.d("PHH-Enroll", "\tscreen size " + displayRealSize.x + ", " + displayRealSize.y);
|
||||
+ int mX = displayRealSize.x/2;
|
||||
+ //int mY = displayRealSize.y - oppoLocation + mW;
|
||||
+ int mY = displayRealSize.y - oppoLocation;
|
||||
+
|
||||
+ Slog.d("PHH-Enroll", "\tfacola at " + mX + ", " + mY);
|
||||
+ udfpsProps = new int[3];
|
||||
+ udfpsProps[0] = (int)mX;
|
||||
+ udfpsProps[1] = (int)mY;
|
||||
+ udfpsProps[2] = (int)mW;
|
||||
+ isUdfps = true;
|
||||
+ }
|
||||
+
|
||||
+ // Asus ZF8
|
||||
+ if(android.os.SystemProperties.get("ro.vendor.build.fingerprint").contains("ASUS_I006D")) {
|
||||
+ udfpsProps = new int[3];
|
||||
+ udfpsProps[0] = displayRealSize.x/2;;
|
||||
+ udfpsProps[1] = 1741;
|
||||
+ udfpsProps[2] = 110;
|
||||
+ isUdfps = true;
|
||||
+ }
|
||||
+
|
||||
+ // ROG Phone 3
|
||||
+ if(android.os.SystemProperties.get("ro.vendor.build.fingerprint").contains("ASUS_I003")) {
|
||||
+ udfpsProps = new int[3];
|
||||
+ udfpsProps[0] = displayRealSize.x/2;;
|
||||
+ udfpsProps[1] = 1752;
|
||||
+ udfpsProps[2] = 110;
|
||||
+ isUdfps = true;
|
||||
+ }
|
||||
+
|
||||
+ // Redmagic 5g
|
||||
+ if("NX659J".equals(android.os.SystemProperties.get("ro.product.vendor.model"))) {
|
||||
+ udfpsProps = new int[3];
|
||||
+ udfpsProps[0] = displayRealSize.x/2;;
|
||||
+ udfpsProps[1] = 1984;
|
||||
+ udfpsProps[2] = 95;
|
||||
+ isUdfps = true;
|
||||
+ }
|
||||
+
|
||||
+ if(udfpsProps.length > 0) {
|
||||
+ Slog.d("PHH-Enroll", "Samsung got udfps infos " + udfpsProps[0] + ", " + udfpsProps[1] + ", " + udfpsProps[2]);
|
||||
+ }
|
||||
+
|
||||
final @FingerprintSensorProperties.SensorType int sensorType;
|
||||
if (isUdfps) {
|
||||
sensorType = FingerprintSensorProperties.TYPE_UDFPS_OPTICAL;
|
||||
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/UdfpsHelper.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/UdfpsHelper.java
|
||||
index 879c8a0317d7..d288acdc2ef5 100644
|
||||
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/UdfpsHelper.java
|
||||
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/UdfpsHelper.java
|
||||
@@ -28,6 +28,10 @@ import android.util.Slog;
|
||||
|
||||
import com.android.server.biometrics.sensors.AcquisitionClient;
|
||||
|
||||
+import vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon;
|
||||
+
|
||||
+import java.io.PrintWriter;
|
||||
+
|
||||
/**
|
||||
* Contains helper methods for under-display fingerprint HIDL.
|
||||
*/
|
||||
@@ -35,37 +39,120 @@ public class UdfpsHelper {
|
||||
|
||||
private static final String TAG = "UdfpsHelper";
|
||||
|
||||
+ private static void writeFile(String path, String value) {
|
||||
+ try {
|
||||
+ PrintWriter writer = new PrintWriter(path, "UTF-8");
|
||||
+ writer.println(value);
|
||||
+ writer.close();
|
||||
+ } catch(Exception e) {
|
||||
+ android.util.Log.d("PHH", "Failed writing to " + path + ": " + value);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+
|
||||
public static void onFingerDown(IBiometricsFingerprint daemon, int x, int y, float minor,
|
||||
float major) {
|
||||
android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint extension =
|
||||
- android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint.castFrom(
|
||||
- daemon);
|
||||
- if (extension == null) {
|
||||
- Slog.v(TAG, "onFingerDown | failed to cast the HIDL to V2_3");
|
||||
+ android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint.castFrom(
|
||||
+ daemon);
|
||||
+ if (extension != null) {
|
||||
+ try {
|
||||
+ extension.onFingerDown(x, y, minor, major);
|
||||
+ return;
|
||||
+ } catch (RemoteException e) {
|
||||
+ Slog.e(TAG, "onFingerDown | RemoteException: ", e);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ try {
|
||||
+ // Asus goodix commands
|
||||
+ IGoodixFingerprintDaemon goodixDaemon = IGoodixFingerprintDaemon.getService();
|
||||
+ if(android.os.SystemProperties.get("ro.vendor.build.fingerprint").contains("ASUS")) {
|
||||
+ goodixDaemon.sendCommand(200001, new java.util.ArrayList<Byte>(), (returnCode, resultData) -> {
|
||||
+ Slog.e(TAG, "Goodix send command returned code "+ returnCode);
|
||||
+ });
|
||||
+ } else {
|
||||
+ //UI READY
|
||||
+ goodixDaemon.sendCommand(0x600, new java.util.ArrayList<Byte>(), (returnCode, resultData) -> {
|
||||
+ Slog.e(TAG, "Goodix send command returned code "+ returnCode);
|
||||
+ });
|
||||
+ goodixDaemon.sendCommand(1607, new java.util.ArrayList<Byte>(), (returnCode, resultData) -> {
|
||||
+ Slog.e(TAG, "Goodix send command returned code "+ returnCode);
|
||||
+ });
|
||||
+ }
|
||||
return;
|
||||
+ } catch(Throwable t) {
|
||||
+ Slog.e(TAG, "Tried sending goodix daemon cmd failed", t);
|
||||
}
|
||||
|
||||
try {
|
||||
- extension.onFingerDown(x, y, minor, major);
|
||||
- } catch (RemoteException e) {
|
||||
- Slog.e(TAG, "onFingerDown | RemoteException: ", e);
|
||||
+ vendor.oplus.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint fp = vendor.oplus.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
|
||||
+ writeFile("/sys/kernel/oppo_display/notify_fppress", "1");
|
||||
+ writeFile("/sys/kernel/oplus_display/oplus_notify_fppress", "1");
|
||||
+ fp.touchDown();
|
||||
+ } catch(Throwable t) {
|
||||
+ Slog.e(TAG, "Tried sending oplus daemon cmd failed", t);
|
||||
}
|
||||
+
|
||||
+ try {
|
||||
+ vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint fp = vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
|
||||
+ writeFile("/sys/kernel/oppo_display/notify_fppress", "1");
|
||||
+ writeFile("/sys/kernel/oplus_display/oplus_notify_fppress", "1");
|
||||
+ fp.touchDown();
|
||||
+ } catch(Throwable t) {
|
||||
+ Slog.e(TAG, "Tried sending oplus daemon cmd failed", t);
|
||||
+ }
|
||||
+
|
||||
+ Slog.v(TAG, "onFingerDown | failed to cast the HIDL to V2_3");
|
||||
}
|
||||
|
||||
public static void onFingerUp(IBiometricsFingerprint daemon) {
|
||||
android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint extension =
|
||||
- android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint.castFrom(
|
||||
- daemon);
|
||||
- if (extension == null) {
|
||||
- Slog.v(TAG, "onFingerUp | failed to cast the HIDL to V2_3");
|
||||
+ android.hardware.biometrics.fingerprint.V2_3.IBiometricsFingerprint.castFrom(
|
||||
+ daemon);
|
||||
+ if (extension != null) {
|
||||
+ try {
|
||||
+ extension.onFingerUp();
|
||||
+ return;
|
||||
+ } catch (RemoteException e) {
|
||||
+ Slog.e(TAG, "onFingerUp | RemoteException: ", e);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ try {
|
||||
+ IGoodixFingerprintDaemon goodixDaemon = IGoodixFingerprintDaemon.getService();
|
||||
+ if(android.os.SystemProperties.get("ro.vendor.build.fingerprint").contains("ASUS")) {
|
||||
+ goodixDaemon.sendCommand(200003, new java.util.ArrayList<Byte>(), (returnCode, resultData) -> {
|
||||
+ Slog.e(TAG, "Goodix send command returned code " + returnCode);
|
||||
+ });
|
||||
+ } else {
|
||||
+ goodixDaemon.sendCommand(0x601, new java.util.ArrayList<Byte>(), (returnCode, resultData) -> {
|
||||
+ Slog.e(TAG, "Goodix send command returned code "+ returnCode);
|
||||
+ });
|
||||
+ }
|
||||
return;
|
||||
+ } catch(Throwable t) {
|
||||
+ Slog.e(TAG, "Tried sending goodix daemon cmd failed", t);
|
||||
}
|
||||
|
||||
try {
|
||||
- extension.onFingerUp();
|
||||
- } catch (RemoteException e) {
|
||||
- Slog.e(TAG, "onFingerUp | RemoteException: ", e);
|
||||
+ vendor.oplus.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint fp = vendor.oplus.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
|
||||
+ writeFile("/sys/kernel/oppo_display/notify_fppress", "0");
|
||||
+ writeFile("/sys/kernel/oplus_display/oplus_notify_fppress", "0");
|
||||
+ fp.touchUp();
|
||||
+ } catch(Throwable t) {
|
||||
+ Slog.e(TAG, "Tried sending oplus daemon cmd failed", t);
|
||||
+ }
|
||||
+
|
||||
+ try {
|
||||
+ vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint fp = vendor.oppo.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService();
|
||||
+ writeFile("/sys/kernel/oppo_display/notify_fppress", "0");
|
||||
+ writeFile("/sys/kernel/oplus_display/oplus_notify_fppress", "0");
|
||||
+ fp.touchUp();
|
||||
+ } catch(Throwable t) {
|
||||
+ Slog.e(TAG, "Tried sending oplus daemon cmd failed", t);
|
||||
}
|
||||
+ Slog.v(TAG, "onFingerUp | failed to cast the HIDL to V2_3");
|
||||
}
|
||||
|
||||
public static int getReasonFromEnrollReason(@FingerprintManager.EnrollReason int reason) {
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
From 8bee76c6e7f4524183ea134f59fd0254f958e07e Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 20 Dec 2021 15:01:41 -0500
|
||||
Subject: [PATCH 27/28] Dynamically resize boot animation to match screen size
|
||||
|
||||
Change-Id: I54e49fc6b8c670103852e212d1416e27ff976205
|
||||
---
|
||||
cmds/bootanimation/BootAnimation.cpp | 20 ++++++++++++++++++++
|
||||
1 file changed, 20 insertions(+)
|
||||
|
||||
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
|
||||
index 6c8cab7783b6..e4335cc03c23 100644
|
||||
--- a/cmds/bootanimation/BootAnimation.cpp
|
||||
+++ b/cmds/bootanimation/BootAnimation.cpp
|
||||
@@ -583,6 +583,26 @@ status_t BootAnimation::readyToRun() {
|
||||
mFlingerSurface = s;
|
||||
mTargetInset = -1;
|
||||
|
||||
+ SLOGE("Got screen size %d, animation size %d", mWidth, mAnimation->width);
|
||||
+ int origWidth = mAnimation->width;
|
||||
+ if ( mAnimation->width*2 < mWidth ) {
|
||||
+ SLOGE("Making animation bigger");
|
||||
+ mAnimation->width *= 2;
|
||||
+ mAnimation->height *= 2;
|
||||
+ } else if ( mWidth < mAnimation->width ) {
|
||||
+ SLOGE("Making animation smaller");
|
||||
+ mAnimation->width /= 2;
|
||||
+ mAnimation->height /= 2;
|
||||
+ }
|
||||
+ for (Animation::Part& part : mAnimation->parts) {
|
||||
+ for(auto& frame: part.frames) {
|
||||
+ if(frame.trimWidth == origWidth && frame.trimX == 0 && frame.trimY == 0) {
|
||||
+ frame.trimWidth = mAnimation->width;
|
||||
+ frame.trimHeight = mAnimation->height;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
projectSceneToWindow();
|
||||
|
||||
// Register a display event receiver
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From 16f900d9c0342636db048c22685d2a104a2a4e1f Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 27 Dec 2021 17:57:11 -0500
|
||||
Subject: [PATCH 28/28] Once we integrate Samsung Power hal in libpowermanager,
|
||||
libpowermanager and its deps require linking against
|
||||
vendor.samsung.hardware.miscpower@2.0
|
||||
|
||||
Change-Id: I9084f64e505009abe9420d28b44199605cee52d8
|
||||
---
|
||||
services/core/jni/Android.bp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
|
||||
index 8ddc16aae3d7..806b92bcbdab 100644
|
||||
--- a/services/core/jni/Android.bp
|
||||
+++ b/services/core/jni/Android.bp
|
||||
@@ -186,6 +186,7 @@ cc_defaults {
|
||||
"vendor.lineage.power-V1-cpp",
|
||||
"vendor.samsung.hardware.light@2.0",
|
||||
"vendor.samsung.hardware.light@3.0",
|
||||
+ "vendor.samsung.hardware.miscpower@2.0",
|
||||
],
|
||||
|
||||
static_libs: [
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
From 0153bec21c46eab87c37fb0f5c3139567460f546 Mon Sep 17 00:00:00 2001
|
||||
From 8a382e0be8155b21e0e99d03311476b8f0194736 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 14 Aug 2019 23:37:10 +0200
|
||||
Subject: [PATCH 1/7] On Samsung, we need to send a hack-message to HAL to get
|
||||
all Sensors
|
||||
Subject: [PATCH 01/13] On Samsung, we need to send a hack-message to HAL to
|
||||
get all Sensors
|
||||
|
||||
Change-Id: Id6a1fa48340de61c418493668e9abd22c2599376
|
||||
---
|
||||
@@ -33,5 +33,5 @@ index c233bf06cf..623ba66364 100644
|
||||
[&](const auto &list) {
|
||||
const size_t count = list.size();
|
||||
--
|
||||
2.29.2
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
From d206a6984ac2d40d182a2b89abbb263d022cdf93 Mon Sep 17 00:00:00 2001
|
||||
From dbad169717d4780128085b04ca5a6d39a2f0c5f0 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 10 Mar 2020 23:26:55 +0100
|
||||
Subject: [PATCH 2/7] Use BKK's hwcomposer hacks to properly display FOD layers
|
||||
Subject: [PATCH 02/13] Use BKK's hwcomposer hacks to properly display FOD
|
||||
layers
|
||||
|
||||
Insecure hack: Set FOD layers to magical Z values to trigger
|
||||
OPPO/Realme/Oneplus' whole blitter behaviours:
|
||||
@@ -35,5 +36,5 @@ index 56e9d27f14..f804383fed 100644
|
||||
ALOGE("[%s] Failed to set Z %u: %s (%d)", getLayerFE().getDebugName(), z,
|
||||
to_string(error).c_str(), static_cast<int32_t>(error));
|
||||
--
|
||||
2.29.2
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 2579f0a4d5f45d8f6d4edcaa1727c06649b26c5a Mon Sep 17 00:00:00 2001
|
||||
From dfc8b5d9b4b9011de99a6b61dc2469a0fe71fe7f Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 20 May 2020 21:16:56 +0200
|
||||
Subject: [PATCH 3/7] Samsung + Xiaomi new FOD HBM controls
|
||||
Subject: [PATCH 03/13] Samsung + Xiaomi new FOD HBM controls
|
||||
|
||||
Change-Id: I5ab27fa70882efa85f0c917bf31bb32adaa09bb1
|
||||
---
|
||||
@@ -117,5 +117,5 @@ index f804383fed..2b7bf25dc7 100644
|
||||
|
||||
if (auto error = hwcLayer->setZOrder(z); error != hal::Error::NONE) {
|
||||
--
|
||||
2.29.2
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 1cc2bcbb73c4664c9731260ebe39a776fab9e46e Mon Sep 17 00:00:00 2001
|
||||
From 3da3fd1c7f9302110cf747e717d2d60307c023bf Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Thu, 22 Oct 2020 23:22:46 +0200
|
||||
Subject: [PATCH 4/7] Matching an input with a display uses uniqueId
|
||||
Subject: [PATCH 04/13] Matching an input with a display uses uniqueId
|
||||
|
||||
Not all devices have a `location`, notably bluetooth devices.
|
||||
However, we might still want to associate them with a screen,
|
||||
@@ -31,5 +31,5 @@ index 7af014cb34..53ef86f1c9 100644
|
||||
const std::unordered_map<std::string, uint8_t>& ports = config->portAssociations;
|
||||
const auto& displayPort = ports.find(inputPort);
|
||||
--
|
||||
2.29.2
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
From 53d1d85b857bc668da93b6b264c3fa3093eb1e58 Mon Sep 17 00:00:00 2001
|
||||
From 5f8dd3a2351d262cea42d7b17746349d20649271 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Tue, 5 Jan 2021 23:44:00 +0100
|
||||
Subject: [PATCH 5/7] unshared_oob didn't exist in O/P, so detect its supported
|
||||
based on vndk version
|
||||
Subject: [PATCH 05/13] unshared_oob didn't exist in O/P, so detect its
|
||||
supported based on vndk version
|
||||
|
||||
---
|
||||
cmds/installd/migrate_legacy_obb_data.sh | 2 +-
|
||||
@@ -22,5 +22,5 @@ index 7399681c3e..9d5b73eae2 100644
|
||||
rm -rf /data/media/0/Android/obb/test_probe
|
||||
exit 0
|
||||
--
|
||||
2.29.2
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 9c752c1b718a7f027da3cd647b88d1dc3af202f7 Mon Sep 17 00:00:00 2001
|
||||
From dfd43b7f2773b8e413b41fac4d3b916658a55f6e Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 31 Mar 2021 23:36:03 +0200
|
||||
Subject: [PATCH 6/7] Remove Samsung system permission on sensors
|
||||
Subject: [PATCH 06/13] Remove Samsung system permission on sensors
|
||||
|
||||
---
|
||||
libs/sensor/Sensor.cpp | 1 +
|
||||
@@ -33,5 +33,5 @@ index 374b68fab5..ffc715fc07 100644
|
||||
int32_t mRequiredAppOp;
|
||||
int32_t mMaxDelay;
|
||||
--
|
||||
2.29.2
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 9b3166a5bdba49f210b1a9dac1c7a27f5e2cfdd2 Mon Sep 17 00:00:00 2001
|
||||
From 3f8be28fc09a5d3dba6528be7f6144cecc804b17 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 20 Oct 2021 09:39:47 -0400
|
||||
Subject: [PATCH 7/7] Try to fallback mCallingSid to getpidcon
|
||||
Subject: [PATCH 07/13] Try to fallback mCallingSid to getpidcon
|
||||
|
||||
This is needed because old vendors (before April 2019 ~) don't support
|
||||
reporting SELinux context of the caller.
|
||||
@@ -14,7 +14,7 @@ Change-Id: I3b6c4dac9d0e20a3d66f931b283e3a535ab499cd
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/libs/binder/IPCThreadState.cpp b/libs/binder/IPCThreadState.cpp
|
||||
index 445df9eeff..a5c4a7e106 100644
|
||||
index c415ea02e2..66d790af4b 100644
|
||||
--- a/libs/binder/IPCThreadState.cpp
|
||||
+++ b/libs/binder/IPCThreadState.cpp
|
||||
@@ -36,6 +36,7 @@
|
||||
@@ -60,5 +60,5 @@ index 445df9eeff..a5c4a7e106 100644
|
||||
mCallingUid = origUid;
|
||||
mStrictModePolicy = origStrictModePolicy;
|
||||
--
|
||||
2.29.2
|
||||
2.25.1
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
From bcef77e6159b832ff4fccd6968b3f8c1fd9f24e1 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 12 Dec 2021 08:45:36 -0500
|
||||
Subject: [PATCH 08/13] Mark accelerometer input as sensor exclusively if there
|
||||
are ABS axis
|
||||
|
||||
The reason this is needed is that on -fucked up- Xiami Mi A2 Lite and
|
||||
Galaxy J8, the input device reporting power button/vol- reports ACCELEROMETER
|
||||
input prop.
|
||||
This leads to wrong timestamping ioctl, leading to crashes and broken UI
|
||||
|
||||
Change-Id: I491ab89724c908ef09a23a6427d24a8889bf806a
|
||||
---
|
||||
services/inputflinger/reader/EventHub.cpp | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
|
||||
index b19b4195d1..7dd8eecdaf 100644
|
||||
--- a/services/inputflinger/reader/EventHub.cpp
|
||||
+++ b/services/inputflinger/reader/EventHub.cpp
|
||||
@@ -2042,7 +2042,13 @@ void EventHub::openDeviceLocked(const std::string& devicePath) {
|
||||
|
||||
// Check whether this device is an accelerometer.
|
||||
if (device->propBitmask.test(INPUT_PROP_ACCELEROMETER)) {
|
||||
- device->classes |= InputDeviceClass::SENSOR;
|
||||
+ bool hasAxis = false;
|
||||
+ for (int i = 0; i <= ABS_MAX; i++) {
|
||||
+ if (device->absBitmask.test(i)) hasAxis = true;
|
||||
+ }
|
||||
+ if(hasAxis) {
|
||||
+ device->classes |= InputDeviceClass::SENSOR;
|
||||
+ }
|
||||
}
|
||||
|
||||
// Check whether this device has switches.
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
From 16f193c5d1d5a358a4d08432254477bdb69724ea Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Fri, 17 Dec 2021 17:18:20 -0500
|
||||
Subject: [PATCH 09/13] On Samsung devices for FOD HBM, set specific usage bits
|
||||
|
||||
Change-Id: Ibe71e291c6fba9ce48e83a5fd93f1beae3a63bc7
|
||||
---
|
||||
libs/gui/BLASTBufferQueue.cpp | 19 +++++++++++++++++--
|
||||
libs/ui/Gralloc2.cpp | 2 +-
|
||||
libs/ui/Gralloc3.cpp | 2 +-
|
||||
libs/ui/Gralloc4.cpp | 2 +-
|
||||
4 files changed, 20 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp
|
||||
index 94e1ae1c74..d23fb53703 100644
|
||||
--- a/libs/gui/BLASTBufferQueue.cpp
|
||||
+++ b/libs/gui/BLASTBufferQueue.cpp
|
||||
@@ -32,9 +32,19 @@
|
||||
#include <utils/Trace.h>
|
||||
|
||||
#include <private/gui/ComposerService.h>
|
||||
+#include <cutils/properties.h>
|
||||
|
||||
#include <chrono>
|
||||
|
||||
+
|
||||
+static bool sCheckedProps = false;
|
||||
+static bool sSamsungFod = false;
|
||||
+static void init_fod_props() {
|
||||
+ if(sCheckedProps) return;
|
||||
+ sCheckedProps = true;
|
||||
+ sSamsungFod = property_get_bool("persist.sys.phh.fod.samsung", false);
|
||||
+}
|
||||
+
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
namespace {
|
||||
@@ -144,9 +154,14 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const sp<SurfaceCont
|
||||
|
||||
// safe default, most producers are expected to override this
|
||||
mProducer->setMaxDequeuedBufferCount(2);
|
||||
+ uint64_t usage = GraphicBuffer::USAGE_HW_COMPOSER |
|
||||
+ GraphicBuffer::USAGE_HW_TEXTURE;
|
||||
+ init_fod_props();
|
||||
+ if(sSamsungFod && name.find("SurfaceView[UdfpsController]") != std::string::npos) {
|
||||
+ usage |= 0x400000000LL;
|
||||
+ }
|
||||
mBufferItemConsumer = new BLASTBufferItemConsumer(mConsumer,
|
||||
- GraphicBuffer::USAGE_HW_COMPOSER |
|
||||
- GraphicBuffer::USAGE_HW_TEXTURE,
|
||||
+ usage,
|
||||
1, false);
|
||||
static int32_t id = 0;
|
||||
mName = name + "#" + std::to_string(id);
|
||||
diff --git a/libs/ui/Gralloc2.cpp b/libs/ui/Gralloc2.cpp
|
||||
index 224caf7216..c543b4e60e 100644
|
||||
--- a/libs/ui/Gralloc2.cpp
|
||||
+++ b/libs/ui/Gralloc2.cpp
|
||||
@@ -115,7 +115,7 @@ status_t Gralloc2Mapper::validateBufferDescriptorInfo(
|
||||
if (descriptorInfo->usage & ~validUsageBits) {
|
||||
ALOGE("buffer descriptor contains invalid usage bits 0x%" PRIx64,
|
||||
descriptorInfo->usage & ~validUsageBits);
|
||||
- return BAD_VALUE;
|
||||
+ return NO_ERROR;;
|
||||
}
|
||||
return NO_ERROR;
|
||||
}
|
||||
diff --git a/libs/ui/Gralloc3.cpp b/libs/ui/Gralloc3.cpp
|
||||
index 4a8a4d09d3..4b1c974db1 100644
|
||||
--- a/libs/ui/Gralloc3.cpp
|
||||
+++ b/libs/ui/Gralloc3.cpp
|
||||
@@ -106,7 +106,7 @@ status_t Gralloc3Mapper::validateBufferDescriptorInfo(
|
||||
if (descriptorInfo->usage & ~validUsageBits) {
|
||||
ALOGE("buffer descriptor contains invalid usage bits 0x%" PRIx64,
|
||||
descriptorInfo->usage & ~validUsageBits);
|
||||
- return BAD_VALUE;
|
||||
+ return NO_ERROR;
|
||||
}
|
||||
return NO_ERROR;
|
||||
}
|
||||
diff --git a/libs/ui/Gralloc4.cpp b/libs/ui/Gralloc4.cpp
|
||||
index 4f5e098988..baf557bad8 100644
|
||||
--- a/libs/ui/Gralloc4.cpp
|
||||
+++ b/libs/ui/Gralloc4.cpp
|
||||
@@ -116,7 +116,7 @@ status_t Gralloc4Mapper::validateBufferDescriptorInfo(
|
||||
if (descriptorInfo->usage & ~validUsageBits) {
|
||||
ALOGE("buffer descriptor contains invalid usage bits 0x%" PRIx64,
|
||||
descriptorInfo->usage & ~validUsageBits);
|
||||
- return BAD_VALUE;
|
||||
+ return NO_ERROR;
|
||||
}
|
||||
return NO_ERROR;
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
From 215af0d1a309c8bf2f6e8b474fa5f99c4c09ef15 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 19 Dec 2021 16:54:31 -0500
|
||||
Subject: [PATCH 10/13] Update FOD/HBM method Xiaomi/Oplus
|
||||
|
||||
Change-Id: If99362db18d8eace487e52716a138e15d1dcfab4
|
||||
---
|
||||
.../CompositionEngine/src/OutputLayer.cpp | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp b/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
|
||||
index 2b7bf25dc7..f605b0271b 100644
|
||||
--- a/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
|
||||
+++ b/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
|
||||
@@ -38,6 +38,7 @@
|
||||
static bool sCheckedProps = false;
|
||||
static bool sBBKFod = false;
|
||||
static bool sXiaomiFod = false;
|
||||
+static bool sAsusFod = false;
|
||||
|
||||
namespace android::compositionengine {
|
||||
|
||||
@@ -414,11 +415,15 @@ void OutputLayer::writeOutputDependentGeometryStateToHWC(HWC2::Layer* hwcLayer,
|
||||
sCheckedProps = true;
|
||||
sBBKFod = property_get_bool("persist.sys.phh.fod.bbk", false);
|
||||
sXiaomiFod = property_get_bool("persist.sys.phh.fod.xiaomi", false);
|
||||
+ sAsusFod = property_get_bool("persist.sys.phh.fod.asus", false);
|
||||
}
|
||||
|
||||
- if(strstr(getLayerFE().getDebugName(), "Fingerprint on display") != nullptr) {
|
||||
+#define UDFPS_BIOMETRIC_PROMPT_LAYER_NAME "BiometricPrompt#0"
|
||||
+#define UDFPS_LAYER_NAME "UdfpsController#0"
|
||||
+#define UDFPS_TOUCHED_LAYER_NAME "SurfaceView[UdfpsController](BLAST)#0"
|
||||
+ if ((strcmp(getLayerFE().getDebugName(), UDFPS_LAYER_NAME) == 0)
|
||||
+ || (strcmp(getLayerFE().getDebugName(), UDFPS_BIOMETRIC_PROMPT_LAYER_NAME) == 0)) {
|
||||
ALOGE("Found fingerprint on display!");
|
||||
- z = 0x41000031;
|
||||
if(sBBKFod) {
|
||||
z = 0x41000031;
|
||||
} else if(sXiaomiFod) {
|
||||
@@ -426,9 +431,8 @@ void OutputLayer::writeOutputDependentGeometryStateToHWC(HWC2::Layer* hwcLayer,
|
||||
}
|
||||
}
|
||||
|
||||
- if(strstr(getLayerFE().getDebugName(), "Fingerprint on display.touched") != nullptr) {
|
||||
+ if (strcmp(getLayerFE().getDebugName(), UDFPS_TOUCHED_LAYER_NAME) == 0) {
|
||||
ALOGE("Found fingerprint on display touched!");
|
||||
- z = 0x41000033;
|
||||
if(sBBKFod) {
|
||||
z = 0x41000033;
|
||||
} else if(sXiaomiFod) {
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
From 1636cbb066d3a7f835588dad5aee9c2e764117d1 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 19 Dec 2021 17:04:51 -0500
|
||||
Subject: [PATCH 11/13] For FOD/HBM on Asus devices, call the HWC extended call
|
||||
setLayerClass
|
||||
|
||||
Change-Id: Id8773fc3d2fb6d2bd228503b1ee0d77864b2eb05
|
||||
---
|
||||
.../CompositionEngine/src/OutputLayer.cpp | 4 ++++
|
||||
.../surfaceflinger/DisplayHardware/ComposerHal.cpp | 7 +++++++
|
||||
services/surfaceflinger/DisplayHardware/ComposerHal.h | 6 ++++++
|
||||
services/surfaceflinger/DisplayHardware/HWC2.cpp | 10 ++++++++++
|
||||
services/surfaceflinger/DisplayHardware/HWC2.h | 4 ++++
|
||||
5 files changed, 31 insertions(+)
|
||||
|
||||
diff --git a/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp b/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
|
||||
index f605b0271b..cd81a5e5d0 100644
|
||||
--- a/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
|
||||
+++ b/services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp
|
||||
@@ -428,6 +428,8 @@ void OutputLayer::writeOutputDependentGeometryStateToHWC(HWC2::Layer* hwcLayer,
|
||||
z = 0x41000031;
|
||||
} else if(sXiaomiFod) {
|
||||
z |= 0x1000000;
|
||||
+ } else if(sAsusFod) {
|
||||
+ hwcLayer->setLayerClass(4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -437,6 +439,8 @@ void OutputLayer::writeOutputDependentGeometryStateToHWC(HWC2::Layer* hwcLayer,
|
||||
z = 0x41000033;
|
||||
} else if(sXiaomiFod) {
|
||||
z |= 0x2000000;
|
||||
+ } else if(sAsusFod) {
|
||||
+ hwcLayer->setLayerClass(5);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.cpp b/services/surfaceflinger/DisplayHardware/ComposerHal.cpp
|
||||
index caf0294a56..ff5039f75b 100644
|
||||
--- a/services/surfaceflinger/DisplayHardware/ComposerHal.cpp
|
||||
+++ b/services/surfaceflinger/DisplayHardware/ComposerHal.cpp
|
||||
@@ -1220,6 +1220,13 @@ V2_4::Error Composer::setLayerGenericMetadata(Display display, Layer layer, cons
|
||||
return Error::NONE;
|
||||
}
|
||||
|
||||
+Error Composer::setLayerClass(Display display, Layer layer, uint32_t layerClass) {
|
||||
+ mWriter.selectDisplay(display);
|
||||
+ mWriter.selectLayer(layer);
|
||||
+ mWriter.vendor800_1(layerClass);
|
||||
+ return Error::NONE;
|
||||
+}
|
||||
+
|
||||
V2_4::Error Composer::getLayerGenericMetadataKeys(
|
||||
std::vector<IComposerClient::LayerGenericMetadataKey>* outKeys) {
|
||||
using Error = V2_4::Error;
|
||||
diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.h b/services/surfaceflinger/DisplayHardware/ComposerHal.h
|
||||
index b525e63c66..2eb63f3c2e 100644
|
||||
--- a/services/surfaceflinger/DisplayHardware/ComposerHal.h
|
||||
+++ b/services/surfaceflinger/DisplayHardware/ComposerHal.h
|
||||
@@ -231,6 +231,9 @@ public:
|
||||
std::vector<IComposerClient::LayerGenericMetadataKey>* outKeys) = 0;
|
||||
virtual Error getClientTargetProperty(
|
||||
Display display, IComposerClient::ClientTargetProperty* outClientTargetProperty) = 0;
|
||||
+
|
||||
+ // Asus proprietary
|
||||
+ virtual Error setLayerClass(Display display, Layer layer, uint32_t layerClass);
|
||||
};
|
||||
|
||||
namespace impl {
|
||||
@@ -467,10 +470,13 @@ public:
|
||||
bool mandatory, const std::vector<uint8_t>& value) override;
|
||||
V2_4::Error getLayerGenericMetadataKeys(
|
||||
std::vector<IComposerClient::LayerGenericMetadataKey>* outKeys) override;
|
||||
+
|
||||
Error getClientTargetProperty(
|
||||
Display display,
|
||||
IComposerClient::ClientTargetProperty* outClientTargetProperty) override;
|
||||
|
||||
+ // Asus proprietary
|
||||
+ Error setLayerClass(Display display, Layer layer, uint32_t layerClass);
|
||||
private:
|
||||
class CommandWriter : public CommandWriterBase {
|
||||
public:
|
||||
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp
|
||||
index 27146ab79c..474c3eade5 100644
|
||||
--- a/services/surfaceflinger/DisplayHardware/HWC2.cpp
|
||||
+++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp
|
||||
@@ -872,6 +872,16 @@ Error Layer::setZOrder(uint32_t z)
|
||||
return static_cast<Error>(intError);
|
||||
}
|
||||
|
||||
+Error Layer::setLayerClass(uint32_t val)
|
||||
+{
|
||||
+ if (CC_UNLIKELY(!mDisplay)) {
|
||||
+ return Error::BAD_DISPLAY;
|
||||
+ }
|
||||
+
|
||||
+ auto intError = mComposer.setLayerClass(mDisplay->getId(), mId, val);
|
||||
+ return static_cast<Error>(intError);
|
||||
+}
|
||||
+
|
||||
// Composer HAL 2.3
|
||||
Error Layer::setColorTransform(const android::mat4& matrix) {
|
||||
if (CC_UNLIKELY(!mDisplay)) {
|
||||
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.h b/services/surfaceflinger/DisplayHardware/HWC2.h
|
||||
index 871465d717..7a04047407 100644
|
||||
--- a/services/surfaceflinger/DisplayHardware/HWC2.h
|
||||
+++ b/services/surfaceflinger/DisplayHardware/HWC2.h
|
||||
@@ -287,6 +287,8 @@ public:
|
||||
// Composer HAL 2.4
|
||||
[[clang::warn_unused_result]] virtual hal::Error setLayerGenericMetadata(
|
||||
const std::string& name, bool mandatory, const std::vector<uint8_t>& value) = 0;
|
||||
+
|
||||
+ virtual hal::Error setLayerClass(uint32_t layerClass) = 0;
|
||||
};
|
||||
|
||||
namespace impl {
|
||||
@@ -330,6 +332,8 @@ public:
|
||||
hal::Error setLayerGenericMetadata(const std::string& name, bool mandatory,
|
||||
const std::vector<uint8_t>& value) override;
|
||||
|
||||
+ hal::Error setLayerClass(uint32_t layerClass);
|
||||
+
|
||||
private:
|
||||
// These are references to data owned by HWC2::Device, which will outlive
|
||||
// this HWC2::Layer, so these references are guaranteed to be valid for
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,303 @@
|
||||
From e33af0dcd960fdbcc14b31ce22e21ce8297fad69 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 27 Dec 2021 18:00:43 -0500
|
||||
Subject: [PATCH 12/13] powermanager: Add support Samsung miscpower HAL
|
||||
|
||||
Several various configurations need to be supported:
|
||||
- Android Pie vendors have a android.hardware.power HIDL default + "miscpower"
|
||||
- Android Q vendors have default HIDL android.hardware.power +
|
||||
ISehMiscPower
|
||||
- Android R vendors have default AIDL android.hardware.power +
|
||||
ISehMiscPower
|
||||
|
||||
ISehMiscPower is always in addition to android.hardware.power, not as a
|
||||
substituion
|
||||
|
||||
Only tested configuration ATM is the latest one
|
||||
|
||||
Change-Id: I182a91ccb0a89f9d0d7d41f36eccab218b553bbc
|
||||
---
|
||||
include/powermanager/PowerHalLoader.h | 3 +
|
||||
include/powermanager/PowerHalWrapper.h | 35 ++++++++-
|
||||
services/powermanager/Android.bp | 1 +
|
||||
services/powermanager/PowerHalController.cpp | 7 +-
|
||||
services/powermanager/PowerHalLoader.cpp | 16 ++++-
|
||||
services/powermanager/PowerHalWrapper.cpp | 75 ++++++++++++++++++++
|
||||
6 files changed, 134 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/include/powermanager/PowerHalLoader.h b/include/powermanager/PowerHalLoader.h
|
||||
index 18dfb50cb4..8822658706 100644
|
||||
--- a/include/powermanager/PowerHalLoader.h
|
||||
+++ b/include/powermanager/PowerHalLoader.h
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <android/hardware/power/1.1/IPower.h>
|
||||
#include <android/hardware/power/IPower.h>
|
||||
#include <vendor/lineage/power/IPower.h>
|
||||
+#include <vendor/samsung/hardware/miscpower/2.0/ISehMiscPower.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
@@ -35,6 +36,7 @@ public:
|
||||
static sp<hardware::power::V1_0::IPower> loadHidlV1_0();
|
||||
static sp<hardware::power::V1_1::IPower> loadHidlV1_1();
|
||||
static sp<vendor::lineage::power::IPower> loadLineageAidl();
|
||||
+ static sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> loadHidlSeh();
|
||||
|
||||
private:
|
||||
static std::mutex gHalMutex;
|
||||
@@ -43,6 +45,7 @@ private:
|
||||
static sp<hardware::power::V1_0::IPower> gHalHidlV1_0 GUARDED_BY(gHalMutex);
|
||||
static sp<hardware::power::V1_1::IPower> gHalHidlV1_1 GUARDED_BY(gHalMutex);
|
||||
static sp<vendor::lineage::power::IPower> gHalLineageAidl GUARDED_BY(gLineageHalMutex);
|
||||
+ static sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> gHalHidlSeh GUARDED_BY(gHalMutex);
|
||||
|
||||
static sp<hardware::power::V1_0::IPower> loadHidlV1_0Locked()
|
||||
EXCLUSIVE_LOCKS_REQUIRED(gHalMutex);
|
||||
diff --git a/include/powermanager/PowerHalWrapper.h b/include/powermanager/PowerHalWrapper.h
|
||||
index d455b74564..8a0623f588 100644
|
||||
--- a/include/powermanager/PowerHalWrapper.h
|
||||
+++ b/include/powermanager/PowerHalWrapper.h
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <android/hardware/power/IPowerHintSession.h>
|
||||
#include <android/hardware/power/Mode.h>
|
||||
#include <vendor/lineage/power/IPower.h>
|
||||
+#include <vendor/samsung/hardware/miscpower/2.0/ISehMiscPower.h>
|
||||
|
||||
namespace android {
|
||||
|
||||
@@ -185,7 +186,10 @@ private:
|
||||
// Wrapper for the AIDL Power HAL.
|
||||
class AidlHalWrapper : public HalWrapper {
|
||||
public:
|
||||
- explicit AidlHalWrapper(sp<hardware::power::IPower> handle) : mHandle(std::move(handle)) {}
|
||||
+ explicit AidlHalWrapper(sp<hardware::power::IPower> handle,
|
||||
+ sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> sehHandle)
|
||||
+ : mHandle(std::move(handle)),
|
||||
+ mHandleSeh(std::move(sehHandle)) {}
|
||||
virtual ~AidlHalWrapper() = default;
|
||||
|
||||
virtual HalResult<void> setBoost(hardware::power::Boost boost, int32_t durationMs) override;
|
||||
@@ -201,6 +205,7 @@ private:
|
||||
std::mutex mBoostMutex;
|
||||
std::mutex mModeMutex;
|
||||
sp<hardware::power::IPower> mHandle;
|
||||
+ sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> mHandleSeh;
|
||||
// Android framework only sends boost upto DISPLAY_UPDATE_IMMINENT.
|
||||
// Need to increase the array size if more boost supported.
|
||||
std::array<std::atomic<HalSupport>,
|
||||
@@ -231,6 +236,34 @@ private:
|
||||
sp<vendor::lineage::power::IPower> mHandle;
|
||||
};
|
||||
|
||||
+class HidlHalWrapperSeh : public HalWrapper {
|
||||
+public:
|
||||
+ explicit HidlHalWrapperSeh(sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> hal1,
|
||||
+ sp<android::hardware::power::V1_1::IPower> hal2,
|
||||
+ sp<android::hardware::power::V1_0::IPower> hal3)
|
||||
+ : mHandleSeh(std::move(hal1)),
|
||||
+ mHandle11(std::move(hal2)),
|
||||
+ mHandle10(std::move(hal3)) {}
|
||||
+ virtual ~HidlHalWrapperSeh() = default;
|
||||
+
|
||||
+ virtual HalResult<void> setBoost(hardware::power::Boost boost, int32_t durationMs) override;
|
||||
+ virtual HalResult<void> setMode(hardware::power::Mode mode, bool enabled) override;
|
||||
+ virtual HalResult<sp<hardware::power::IPowerHintSession>> createHintSession(
|
||||
+ int32_t tgid, int32_t uid, const std::vector<int32_t>& threadIds,
|
||||
+ int64_t durationNanos) override;
|
||||
+ virtual HalResult<int64_t> getHintSessionPreferredRate() override;
|
||||
+ virtual HalResult<int> getFeature(vendor::lineage::power::Feature feature) override;
|
||||
+
|
||||
+protected:
|
||||
+ virtual HalResult<void> sendPowerHint(hardware::power::V1_0::PowerHint hintId, uint32_t data);
|
||||
+
|
||||
+private:
|
||||
+ sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> mHandleSeh;
|
||||
+ sp<android::hardware::power::V1_1::IPower> mHandle11;
|
||||
+ sp<android::hardware::power::V1_0::IPower> mHandle10;
|
||||
+ HalResult<void> setInteractive(bool enabled);
|
||||
+ HalResult<void> setFeature(hardware::power::V1_0::Feature feature, bool enabled);
|
||||
+};
|
||||
|
||||
}; // namespace power
|
||||
|
||||
diff --git a/services/powermanager/Android.bp b/services/powermanager/Android.bp
|
||||
index e27e620729..e77cdc32b2 100644
|
||||
--- a/services/powermanager/Android.bp
|
||||
+++ b/services/powermanager/Android.bp
|
||||
@@ -40,6 +40,7 @@ cc_library_shared {
|
||||
"android.hardware.power@1.1",
|
||||
"android.hardware.power-V2-cpp",
|
||||
"vendor.lineage.power-V1-cpp",
|
||||
+ "vendor.samsung.hardware.miscpower@2.0",
|
||||
],
|
||||
|
||||
cflags: [
|
||||
diff --git a/services/powermanager/PowerHalController.cpp b/services/powermanager/PowerHalController.cpp
|
||||
index 7a1b5f7c0a..8577c3b931 100644
|
||||
--- a/services/powermanager/PowerHalController.cpp
|
||||
+++ b/services/powermanager/PowerHalController.cpp
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <android/hardware/power/IPower.h>
|
||||
#include <android/hardware/power/IPowerHintSession.h>
|
||||
#include <android/hardware/power/Mode.h>
|
||||
+#include <vendor/samsung/hardware/miscpower/2.0/ISehMiscPower.h>
|
||||
#include <powermanager/PowerHalController.h>
|
||||
#include <powermanager/PowerHalLoader.h>
|
||||
#include <utils/Log.h>
|
||||
@@ -35,11 +36,15 @@ namespace power {
|
||||
|
||||
std::unique_ptr<HalWrapper> HalConnector::connect() {
|
||||
sp<IPower> halAidl = PowerHalLoader::loadAidl();
|
||||
+ sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> halHidlSeh = PowerHalLoader::loadHidlSeh();
|
||||
if (halAidl) {
|
||||
- return std::make_unique<AidlHalWrapper>(halAidl);
|
||||
+ return std::make_unique<AidlHalWrapper>(halAidl, halHidlSeh);
|
||||
}
|
||||
sp<V1_0::IPower> halHidlV1_0 = PowerHalLoader::loadHidlV1_0();
|
||||
sp<V1_1::IPower> halHidlV1_1 = PowerHalLoader::loadHidlV1_1();
|
||||
+ if (halHidlSeh) {
|
||||
+ return std::make_unique<HidlHalWrapperSeh>(halHidlSeh, halHidlV1_1, halHidlV1_0);
|
||||
+ }
|
||||
if (halHidlV1_1) {
|
||||
return std::make_unique<HidlHalWrapperV1_1>(halHidlV1_0, halHidlV1_1);
|
||||
}
|
||||
diff --git a/services/powermanager/PowerHalLoader.cpp b/services/powermanager/PowerHalLoader.cpp
|
||||
index e5c636344d..803888dabb 100644
|
||||
--- a/services/powermanager/PowerHalLoader.cpp
|
||||
+++ b/services/powermanager/PowerHalLoader.cpp
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include <android/hardware/power/1.1/IPower.h>
|
||||
#include <android/hardware/power/IPower.h>
|
||||
+#include <vendor/samsung/hardware/miscpower/2.0/ISehMiscPower.h>
|
||||
#include <binder/IServiceManager.h>
|
||||
#include <hardware/power.h>
|
||||
#include <hardware_legacy/power.h>
|
||||
@@ -59,6 +60,7 @@ sp<IPower> PowerHalLoader::gHalAidl = nullptr;
|
||||
sp<V1_0::IPower> PowerHalLoader::gHalHidlV1_0 = nullptr;
|
||||
sp<V1_1::IPower> PowerHalLoader::gHalHidlV1_1 = nullptr;
|
||||
sp<LineageAidl::IPower> PowerHalLoader::gHalLineageAidl = nullptr;
|
||||
+sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> PowerHalLoader::gHalHidlSeh = nullptr;
|
||||
|
||||
void PowerHalLoader::unloadAll() {
|
||||
std::lock_guard<std::mutex> lock(gHalMutex);
|
||||
@@ -98,10 +100,22 @@ sp<LineageAidl::IPower> PowerHalLoader::loadLineageAidl() {
|
||||
return loadHal<LineageAidl::IPower>(gHalExists, gHalLineageAidl, loadFn, "Lineage AIDL");
|
||||
}
|
||||
|
||||
+sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> PowerHalLoader::loadHidlSeh() {
|
||||
+ std::lock_guard<std::mutex> lock(gHalMutex);
|
||||
+ static bool gHalExists = true;
|
||||
+ static auto loadFn = []() { return vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower::getService(); };
|
||||
+ return loadHal<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower>(gHalExists, gHalHidlSeh, loadFn, "HIDL SEH v1.1");
|
||||
+}
|
||||
+
|
||||
sp<V1_0::IPower> PowerHalLoader::loadHidlV1_0Locked() {
|
||||
static bool gHalExists = true;
|
||||
+ static auto loadFnSec = []() { return V1_0::IPower::getService("power"); };
|
||||
+ auto hal = loadHal<V1_0::IPower>(gHalExists, gHalHidlV1_0, loadFnSec, "HIDL v1.0");
|
||||
+
|
||||
static auto loadFn = []() { return V1_0::IPower::getService(); };
|
||||
- return loadHal<V1_0::IPower>(gHalExists, gHalHidlV1_0, loadFn, "HIDL v1.0");
|
||||
+ if(hal == nullptr)
|
||||
+ hal = loadHal<V1_0::IPower>(gHalExists, gHalHidlV1_0, loadFn, "HIDL v1.0");
|
||||
+ return hal;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
diff --git a/services/powermanager/PowerHalWrapper.cpp b/services/powermanager/PowerHalWrapper.cpp
|
||||
index 49659e796e..775cdcf800 100644
|
||||
--- a/services/powermanager/PowerHalWrapper.cpp
|
||||
+++ b/services/powermanager/PowerHalWrapper.cpp
|
||||
@@ -220,6 +220,10 @@ HalResult<void> AidlHalWrapper::setMode(Mode mode, bool enabled) {
|
||||
std::unique_lock<std::mutex> lock(mModeMutex);
|
||||
size_t idx = static_cast<size_t>(mode);
|
||||
|
||||
+ if (mHandleSeh != nullptr && mode == Mode::INTERACTIVE) {
|
||||
+ mHandleSeh->setInteractiveAsync(enabled, false);
|
||||
+ }
|
||||
+
|
||||
// Quick return if mode is not supported by HAL
|
||||
if (idx >= mModeSupportedArray.size() || mModeSupportedArray[idx] == HalSupport::OFF) {
|
||||
ALOGV("Skipped setMode %s because Power HAL doesn't support it", toString(mode).c_str());
|
||||
@@ -296,6 +300,77 @@ HalResult<int> LineageAidlHalWrapper::getFeature(LineageAidl::Feature feature) {
|
||||
return HalResult<int>::fromStatus(ret, value);
|
||||
}
|
||||
|
||||
+HalResult<void> HidlHalWrapperSeh::setBoost(Boost boost, int32_t durationMs) {
|
||||
+ if (boost == Boost::INTERACTION) {
|
||||
+ return sendPowerHint(V1_0::PowerHint::INTERACTION, durationMs);
|
||||
+ } else {
|
||||
+ ALOGV("Skipped setBoost %s because Power HAL AIDL not available", toString(boost).c_str());
|
||||
+ return HalResult<void>::unsupported();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+HalResult<void> HidlHalWrapperSeh::setMode(Mode mode, bool enabled) {
|
||||
+ uint32_t data = enabled ? 1 : 0;
|
||||
+ switch (mode) {
|
||||
+ case Mode::LAUNCH:
|
||||
+ return sendPowerHint(V1_0::PowerHint::LAUNCH, data);
|
||||
+ case Mode::LOW_POWER:
|
||||
+ return sendPowerHint(V1_0::PowerHint::LOW_POWER, data);
|
||||
+ case Mode::SUSTAINED_PERFORMANCE:
|
||||
+ return sendPowerHint(V1_0::PowerHint::SUSTAINED_PERFORMANCE, data);
|
||||
+ case Mode::VR:
|
||||
+ return sendPowerHint(V1_0::PowerHint::VR_MODE, data);
|
||||
+ case Mode::INTERACTIVE:
|
||||
+ return setInteractive(enabled);
|
||||
+ case Mode::DOUBLE_TAP_TO_WAKE:
|
||||
+ return setFeature(V1_0::Feature::POWER_FEATURE_DOUBLE_TAP_TO_WAKE, enabled);
|
||||
+ default:
|
||||
+ ALOGV("Skipped setMode %s because Power HAL AIDL not available",
|
||||
+ toString(mode).c_str());
|
||||
+ return HalResult<void>::unsupported();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+HalResult<void> HidlHalWrapperSeh::sendPowerHint(V1_0::PowerHint hintId, uint32_t data) {
|
||||
+ if(mHandle11 != nullptr) {
|
||||
+ auto ret = mHandle11->powerHintAsync(hintId, data);
|
||||
+ return HalResult<void>::fromReturn(ret);
|
||||
+ } else {
|
||||
+ auto ret = mHandle10->powerHint(hintId, data);
|
||||
+ return HalResult<void>::fromReturn(ret);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+HalResult<void> HidlHalWrapperSeh::setInteractive(bool enabled) {
|
||||
+ if(mHandleSeh != nullptr) {
|
||||
+ mHandleSeh->setInteractiveAsync(enabled, false);
|
||||
+ }
|
||||
+ auto ret = mHandle10->setInteractive(enabled);
|
||||
+ return HalResult<void>::fromReturn(ret);
|
||||
+}
|
||||
+
|
||||
+HalResult<void> HidlHalWrapperSeh::setFeature(V1_0::Feature feature, bool enabled) {
|
||||
+ auto ret = mHandle10->setFeature(feature, enabled);
|
||||
+ return HalResult<void>::fromReturn(ret);
|
||||
+}
|
||||
+
|
||||
+HalResult<sp<Aidl::IPowerHintSession>> HidlHalWrapperSeh::createHintSession(
|
||||
+ int32_t, int32_t, const std::vector<int32_t>& threadIds, int64_t) {
|
||||
+ ALOGV("Skipped createHintSession(task num=%zu) because Power HAL not available",
|
||||
+ threadIds.size());
|
||||
+ return HalResult<sp<Aidl::IPowerHintSession>>::unsupported();
|
||||
+}
|
||||
+
|
||||
+HalResult<int64_t> HidlHalWrapperSeh::getHintSessionPreferredRate() {
|
||||
+ ALOGV("Skipped getHintSessionPreferredRate because Power HAL not available");
|
||||
+ return HalResult<int64_t>::unsupported();
|
||||
+}
|
||||
+
|
||||
+HalResult<int> HidlHalWrapperSeh::getFeature(LineageAidl::Feature) {
|
||||
+ ALOGV("Skipped getFeature because Power HAL not available");
|
||||
+ return HalResult<int>::unsupported();
|
||||
+}
|
||||
+
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
|
||||
} // namespace power
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From 184f59f82b11e4180a12586ab01b926b9187c418 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Wed, 12 Jan 2022 04:07:34 -0500
|
||||
Subject: [PATCH 13/13] Fix loading power hidl v1.0
|
||||
|
||||
Change-Id: Ife20a98d2a11c79c7b42f359f30c28e2dede1f25
|
||||
---
|
||||
services/powermanager/PowerHalLoader.cpp | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/services/powermanager/PowerHalLoader.cpp b/services/powermanager/PowerHalLoader.cpp
|
||||
index 803888dabb..f04abdcbd0 100644
|
||||
--- a/services/powermanager/PowerHalLoader.cpp
|
||||
+++ b/services/powermanager/PowerHalLoader.cpp
|
||||
@@ -108,10 +108,11 @@ sp<vendor::samsung::hardware::miscpower::V2_0::ISehMiscPower> PowerHalLoader::lo
|
||||
}
|
||||
|
||||
sp<V1_0::IPower> PowerHalLoader::loadHidlV1_0Locked() {
|
||||
- static bool gHalExists = true;
|
||||
+ static bool gSecHalExists = true;
|
||||
static auto loadFnSec = []() { return V1_0::IPower::getService("power"); };
|
||||
- auto hal = loadHal<V1_0::IPower>(gHalExists, gHalHidlV1_0, loadFnSec, "HIDL v1.0");
|
||||
+ auto hal = loadHal<V1_0::IPower>(gSecHalExists, gHalHidlV1_0, loadFnSec, "HIDL v1.0");
|
||||
|
||||
+ static bool gHalExists = true;
|
||||
static auto loadFn = []() { return V1_0::IPower::getService(); };
|
||||
if(hal == nullptr)
|
||||
hal = loadHal<V1_0::IPower>(gHalExists, gHalHidlV1_0, loadFn, "HIDL v1.0");
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 2b520b6933e681f69925b6c974742cff29cf47df Mon Sep 17 00:00:00 2001
|
||||
From cc24a7e886eff42a0e2f160cabb2c11d87c1a384 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 13 Oct 2019 17:21:31 +0800
|
||||
Subject: [PATCH 1/3] telephony: forward-port support for forceCognitive
|
||||
Subject: [PATCH 1/4] telephony: forward-port support for forceCognitive
|
||||
|
||||
* This is needed on some MTK devices. Android 10 refactored some code,
|
||||
so now the "non-persistent/cognitive" filter is relocated to RIL and
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From d230672d53c64266bcf699d27c8951975f918d3f Mon Sep 17 00:00:00 2001
|
||||
From fcfb842f7f35b38c07062f40a344412323317c2e Mon Sep 17 00:00:00 2001
|
||||
From: Artem Borisov <dedsa2002@gmail.com>
|
||||
Date: Sat, 10 Nov 2018 17:19:17 +0000
|
||||
Subject: [PATCH 2/3] Telephony: Don not call onUssdRelease for Huawei RIL
|
||||
Subject: [PATCH 2/4] Telephony: Don not call onUssdRelease for Huawei RIL
|
||||
|
||||
Huawei RIL doesn't seem to work properly with USSD_MODE_NW_RELEASE,
|
||||
always releasing USSD when it should be finished instead.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From cc77f6e8d407e9aa7c178c014ce7fb2faf23092a Mon Sep 17 00:00:00 2001
|
||||
From 467090b06364a3c7874406eac519ef92c425bc82 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 6 Dec 2021 16:28:22 -0500
|
||||
Subject: [PATCH 3/3] Fix baseband being too long to fit into a 91 chars
|
||||
Subject: [PATCH 3/4] Fix baseband being too long to fit into a 91 chars
|
||||
property, preventing telephony subsystem from starting
|
||||
|
||||
Change-Id: I1762e4a8cc137626be89f350229d6be162bdaf57
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
From fdf6b444ee616a00e8f2c96817fc94913015ab7d Mon Sep 17 00:00:00 2001
|
||||
From: ironydelerium <42721860+ironydelerium@users.noreply.github.com>
|
||||
Date: Fri, 31 Dec 2021 02:20:28 -0800
|
||||
Subject: [PATCH 4/4] Reintroduce 'public void
|
||||
TelephonyMetrics.writeRilSendSms(int, int, int, int)'. (#8)
|
||||
|
||||
The MediaTek IMS package for Android Q, at the very least (likely for the rest, too)
|
||||
invoke this method in their `sendSms` method; Google, in their infinite wisdom,
|
||||
decided that this method needed a message ID passed in as well, changing the signature
|
||||
to 'public void TelephonyMetrics.writeRilSendSms(int, int, int, int, long)' and resulting
|
||||
in a MethodNotFoundException being raised in com.mediatek.ims, crashing it.
|
||||
|
||||
Fixes https://github.com/phhusson/treble_experimentations/issues/2125.
|
||||
|
||||
Co-authored-by: Sarah Vandomelen <sarah@sightworks.com>
|
||||
Change-Id: Ib7a3a41e049cb9c9f937e8c6f771a29495738223
|
||||
---
|
||||
.../telephony/metrics/TelephonyMetrics.java | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/src/java/com/android/internal/telephony/metrics/TelephonyMetrics.java b/src/java/com/android/internal/telephony/metrics/TelephonyMetrics.java
|
||||
index 5e43876df8..c375d9c8b6 100644
|
||||
--- a/src/java/com/android/internal/telephony/metrics/TelephonyMetrics.java
|
||||
+++ b/src/java/com/android/internal/telephony/metrics/TelephonyMetrics.java
|
||||
@@ -2311,6 +2311,19 @@ public class TelephonyMetrics {
|
||||
smsSession.increaseExpectedResponse();
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Write Send SMS event (backwards-compatible method for R and earlier IMS implementations)
|
||||
+ *
|
||||
+ * @param phoneId Phone id
|
||||
+ * @param rilSerial RIL request serial number
|
||||
+ * @param tech SMS RAT
|
||||
+ * @param format SMS format. Either {@link SmsMessage#FORMAT_3GPP} or
|
||||
+ * {@link SmsMessage#FORMAT_3GPP2}.
|
||||
+ */
|
||||
+ public void writeRilSendSms(int phoneId, int rilSerial, int tech, int format) {
|
||||
+ writeRilSendSms(phoneId, rilSerial, tech, format, 0);
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Write Send SMS event using ImsService. Expecting response from
|
||||
* {@link #writeOnSmsSolicitedResponse}.
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From eadaea9b045787edb3d2be27fa2cdb1bf29f6763 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sun, 19 Dec 2021 17:03:15 -0500
|
||||
Subject: [PATCH] Add a vendor800 command, to be able to call vendor-specific
|
||||
hwc functions
|
||||
|
||||
Change-Id: Icbef1e9e3a331ae3bd5a05687d545851d94d88a8
|
||||
---
|
||||
.../composer-command-buffer/2.1/ComposerCommandBuffer.h | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/graphics/composer/2.1/utils/command-buffer/include/composer-command-buffer/2.1/ComposerCommandBuffer.h b/graphics/composer/2.1/utils/command-buffer/include/composer-command-buffer/2.1/ComposerCommandBuffer.h
|
||||
index 499d3b96e..489578468 100644
|
||||
--- a/graphics/composer/2.1/utils/command-buffer/include/composer-command-buffer/2.1/ComposerCommandBuffer.h
|
||||
+++ b/graphics/composer/2.1/utils/command-buffer/include/composer-command-buffer/2.1/ComposerCommandBuffer.h
|
||||
@@ -402,6 +402,12 @@ class CommandWriterBase {
|
||||
endCommand();
|
||||
}
|
||||
|
||||
+ void vendor800_1(uint32_t val) {
|
||||
+ beginCommand(0x800 << 16, 1);
|
||||
+ write(val);
|
||||
+ endCommand();
|
||||
+ }
|
||||
+
|
||||
protected:
|
||||
template <typename T>
|
||||
void beginCommand(T command, uint16_t length) {
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
From e408adb5e9f3cf907392b7af9080df588e4e5b26 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Schneider <asn@cryptomilk.org>
|
||||
Date: Mon, 7 Jun 2021 13:23:02 -0400
|
||||
Subject: [PATCH] On Samsung devices, we need to tell Audio HAL if we're
|
||||
running narrow band or wide band
|
||||
|
||||
Change-Id: Ibfa0f632d9acbb920a85a613ce4e2f1d26556bd1
|
||||
---
|
||||
.../android/bluetooth/hfp/HeadsetStateMachine.java | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
|
||||
index 03ba99ac2..20267d08a 100644
|
||||
--- a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
|
||||
+++ b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
|
||||
@@ -87,6 +87,9 @@ public class HeadsetStateMachine extends StateMachine {
|
||||
private static final String HEADSET_WBS = "bt_wbs";
|
||||
private static final String HEADSET_AUDIO_FEATURE_ON = "on";
|
||||
private static final String HEADSET_AUDIO_FEATURE_OFF = "off";
|
||||
+ private static final String HEADSET_G_SCO_SAMPLERATE = "g_sco_samplerate";
|
||||
+ private static final String HEADSET_G_WB_SAMPLERATE = "16000";
|
||||
+ private static final String HEADSET_G_NB_SAMPLERATE = "8000";
|
||||
|
||||
static final int CONNECT = 1;
|
||||
static final int DISCONNECT = 2;
|
||||
@@ -1549,6 +1552,12 @@ public class HeadsetStateMachine extends StateMachine {
|
||||
HEADSET_WBS + "=" + mAudioParams.getOrDefault(HEADSET_WBS,
|
||||
HEADSET_AUDIO_FEATURE_OFF)
|
||||
});
|
||||
+ keyValuePairs = keyValuePairs.concat(";"
|
||||
+ + HEADSET_G_SCO_SAMPLERATE
|
||||
+ + "="
|
||||
+ + mAudioParams.getOrDefault(
|
||||
+ HEADSET_G_SCO_SAMPLERATE,
|
||||
+ HEADSET_G_NB_SAMPLERATE));
|
||||
Log.i(TAG, "setAudioParameters for " + mDevice + ": " + keyValuePairs);
|
||||
mSystemInterface.getAudioManager().setParameters(keyValuePairs);
|
||||
}
|
||||
@@ -1689,10 +1698,12 @@ public class HeadsetStateMachine extends StateMachine {
|
||||
String prevWbs = mAudioParams.getOrDefault(HEADSET_WBS, HEADSET_AUDIO_FEATURE_OFF);
|
||||
switch (wbsConfig) {
|
||||
case HeadsetHalConstants.BTHF_WBS_YES:
|
||||
+ mAudioParams.put(HEADSET_G_SCO_SAMPLERATE, HEADSET_G_WB_SAMPLERATE);
|
||||
mAudioParams.put(HEADSET_WBS, HEADSET_AUDIO_FEATURE_ON);
|
||||
break;
|
||||
case HeadsetHalConstants.BTHF_WBS_NO:
|
||||
case HeadsetHalConstants.BTHF_WBS_NONE:
|
||||
+ mAudioParams.put(HEADSET_G_SCO_SAMPLERATE, HEADSET_G_NB_SAMPLERATE);
|
||||
mAudioParams.put(HEADSET_WBS, HEADSET_AUDIO_FEATURE_OFF);
|
||||
break;
|
||||
default:
|
||||
--
|
||||
2.29.2
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From e3aaba55ee98ad1914f46590292bb0f017bc3149 Mon Sep 17 00:00:00 2001
|
||||
From: Andy CrossGate Yan <GeForce8800Ultra@gmail.com>
|
||||
Date: Mon, 10 Jan 2022 03:31:18 +0000
|
||||
Subject: [PATCH] Report SCO sample rate by default
|
||||
|
||||
Change-Id: I12c14e2206f5dc20fefe30a2197798773a894988
|
||||
---
|
||||
res/values/config.xml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/res/values/config.xml b/res/values/config.xml
|
||||
index 42ecca47f..952b96510 100644
|
||||
--- a/res/values/config.xml
|
||||
+++ b/res/values/config.xml
|
||||
@@ -136,5 +136,5 @@
|
||||
<bool name="enable_gd_up_to_scanning_layer">false</bool>
|
||||
|
||||
<!-- If true, SCO sample rate will be reported via g_sco_samplerate audio parameter -->
|
||||
- <bool name="sco_report_samplerate">false</bool>
|
||||
+ <bool name="sco_report_samplerate">true</bool>
|
||||
</resources>
|
||||
--
|
||||
2.25.1
|
||||
|
||||
Reference in New Issue
Block a user