Merge Android 12

Bug: 202323961
Merged-In: Ic49cadf46a18852d4d4a4fe2fac6f0e419e89eab
Change-Id: I302a0396081e90eff8e70517c18a4a6f7b93db73
diff --git a/bluetooth/bt_channel_avoidance/1.0/Android.bp b/bluetooth/bt_channel_avoidance/1.0/Android.bp
new file mode 100644
index 0000000..5c7e4cc
--- /dev/null
+++ b/bluetooth/bt_channel_avoidance/1.0/Android.bp
@@ -0,0 +1,20 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "hardware_google_interfaces_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["hardware_google_interfaces_license"],
+}
+
+hidl_interface {
+    name: "hardware.google.bluetooth.bt_channel_avoidance@1.0",
+    root: "hardware.google",
+    srcs: [
+        "IBTChannelAvoidance.hal",
+    ],
+    interfaces: [
+        "android.hidl.base@1.0",
+    ],
+    gen_java: true,
+}
diff --git a/bluetooth/bt_channel_avoidance/1.0/IBTChannelAvoidance.hal b/bluetooth/bt_channel_avoidance/1.0/IBTChannelAvoidance.hal
new file mode 100644
index 0000000..cc80d15
--- /dev/null
+++ b/bluetooth/bt_channel_avoidance/1.0/IBTChannelAvoidance.hal
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+package hardware.google.bluetooth.bt_channel_avoidance@1.0;
+
+interface IBTChannelAvoidance {
+    /**
+     * API to set Bluetooth channel map.
+     *
+     * This API must be invoked whenever channels map of Bluetooth need to
+     * changed because Bluetooth channels have conflict with wifi or cellular.
+     *
+     * @param channelMap The lower 79 bits of the 80-bit parameterrepresents
+     *        the status of 79 channels. 0 means the channel is bad and 1 means
+     *        unknown. The most significant bit (bit 79) is reserved for future
+     *        use.
+     */
+    oneway setBluetoothChannelStatus(uint8_t[10] channelMap);
+};
diff --git a/bluetooth/ccc/1.0/Android.bp b/bluetooth/ccc/1.0/Android.bp
new file mode 100644
index 0000000..bb789b5
--- /dev/null
+++ b/bluetooth/ccc/1.0/Android.bp
@@ -0,0 +1,22 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "hardware_google_interfaces_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["hardware_google_interfaces_license"],
+}
+
+hidl_interface {
+    name: "hardware.google.bluetooth.ccc@1.0",
+    root: "hardware.google",
+    srcs: [
+        "IBluetoothCcc.hal",
+        "IBluetoothCccCallback.hal",
+        "types.hal",
+    ],
+    interfaces: [
+        "android.hidl.base@1.0",
+    ],
+    gen_java: true,
+}
diff --git a/bluetooth/ccc/1.0/IBluetoothCcc.hal b/bluetooth/ccc/1.0/IBluetoothCcc.hal
new file mode 100644
index 0000000..4f7f1e7
--- /dev/null
+++ b/bluetooth/ccc/1.0/IBluetoothCcc.hal
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+package hardware.google.bluetooth.ccc@1.0;
+
+import IBluetoothCccCallback;
+
+interface IBluetoothCcc {
+   /**
+    * API to monitor Bluetooth and system timestamp for given Bluetooth device when Bluetooth
+    * controller send/receive given LMP events.
+    *
+    * @param callback An instance of the |IBluetoothCccCallback| HIDL interface object.
+    * @param address Bluetooth address to use for monitoring timestamp.
+    * @param lmpEventIds LMP events to use for monitoring timestamp.
+    */
+    registerForLmpEvents(IBluetoothCccCallback callback,
+            Address address, vec<LmpEventId> lmpEventIds);
+
+   /**
+    * API to stop monitor given Bluetooth device.
+    *
+    * @param address Bluetooth device to stop monitoring.
+    */
+    unregisterLmpEvents(Address address);
+};
diff --git a/bluetooth/ccc/1.0/IBluetoothCccCallback.hal b/bluetooth/ccc/1.0/IBluetoothCccCallback.hal
new file mode 100644
index 0000000..bcd0cea
--- /dev/null
+++ b/bluetooth/ccc/1.0/IBluetoothCccCallback.hal
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package hardware.google.bluetooth.ccc@1.0;
+
+import types;
+
+interface IBluetoothCccCallback {
+    /**
+     * Callback when monitored LMP event involked.
+     *
+     * @param timestamp Timestamp when the LMP event involked
+     * @param address Remote bluetooth address that involke LMP event
+     * @param direction Direction of the involked LMP event
+     * @param lmpEventId LMP event id that bluetooth chip involked
+     * @param connEventCounter counter incremented by one for each new connection event
+     */
+    onEventGenerated(Timestamp timestamp, Address address, Direction direction,
+            LmpEventId lmpEventId, uint16_t connEventCounter);
+};
diff --git a/bluetooth/ccc/1.0/types.hal b/bluetooth/ccc/1.0/types.hal
new file mode 100644
index 0000000..a65f159
--- /dev/null
+++ b/bluetooth/ccc/1.0/types.hal
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package hardware.google.bluetooth.ccc@1.0;
+
+/**
+ * Generic structure to return the timestamp
+ */
+struct Timestamp {
+    /**
+     * Timestamp in microsecond since system boot.
+     */
+    uint32_t systemTime;
+    /**
+     * Timestamp in microsecond since Bluetooth controller power up.
+     */
+    uint32_t bluetoothTime;
+};
+
+/**
+ * LMP event id to be monitored
+ * CONNECT_IND indicator for initiating connection, timestamp will be at the anchor point
+ * LL_PHY_UPDATE_IND indicator for PHY update
+ */
+enum LmpEventId : uint8_t {
+    CONNECT_IND = 0x00,
+    LL_PHY_UPDATE_IND = 0x01
+};
+
+/**
+ * Direction of the LMP event
+ */
+enum Direction : uint8_t {
+    TX = 0x00, RX = 0x01
+};
+
+/**
+ * Bluetooth Address Type. 6 octest representing bluetooth of a device.
+ */
+typedef uint8_t[6] Address;
diff --git a/bluetooth/sar/1.0/Android.bp b/bluetooth/sar/1.0/Android.bp
new file mode 100644
index 0000000..e0b6b24
--- /dev/null
+++ b/bluetooth/sar/1.0/Android.bp
@@ -0,0 +1,20 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "hardware_google_interfaces_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["hardware_google_interfaces_license"],
+}
+
+hidl_interface {
+    name: "hardware.google.bluetooth.sar@1.0",
+    root: "hardware.google",
+    srcs: [
+        "IBluetoothSar.hal",
+    ],
+    interfaces: [
+        "android.hidl.base@1.0",
+    ],
+    gen_java: true,
+}
diff --git a/bluetooth/sar/1.0/IBluetoothSar.hal b/bluetooth/sar/1.0/IBluetoothSar.hal
new file mode 100644
index 0000000..5cb96d4
--- /dev/null
+++ b/bluetooth/sar/1.0/IBluetoothSar.hal
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+package hardware.google.bluetooth.sar@1.0;
+
+interface IBluetoothSar {
+    /**
+     * API to set Bluetooth Tx power cap.
+     *
+     * This API must be invoked whenever maximum Bluetooth Tx power need to
+     * changed for optimising performance purpose in SAR scenarios.
+     *
+     * @param cap Bluetooth Tx cap. Range is between 0 and 80 units,
+     * each unit is 0.25 dBm.
+     */
+    oneway setBluetoothTxPowerCap(int8_t cap);
+
+    /**
+     * API to set Bluetooth Tx power cap of each tech.
+     *
+     * This API must be invoked whenever maximum Bluetooth Tx power for BR, EDR
+     * and BLE need to changed for optimising performance purpose in SAR
+     * scenarios.
+     *
+     * @param brCap Bluetooth Tx cap. Range is between 0 and 80 units,
+     * each unit is 0.25 dBm.
+     * @param edrCap Bluetooth Tx cap. Range is between 0 and 80 units,
+     * each unit is 0.25 dBm.
+     * @param bleCap Bluetooth Tx cap. Range is between 0 and 80 units,
+     * each unit is 0.25 dBm.
+     */
+    oneway setBluetoothTechBasedTxPowerCap(int8_t brCap, int8_t edrCap, int8_t bleCap);
+};
diff --git a/bluetooth/sar/1.1/Android.bp b/bluetooth/sar/1.1/Android.bp
new file mode 100644
index 0000000..05bdb09
--- /dev/null
+++ b/bluetooth/sar/1.1/Android.bp
@@ -0,0 +1,21 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "hardware_google_interfaces_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["hardware_google_interfaces_license"],
+}
+
+hidl_interface {
+    name: "hardware.google.bluetooth.sar@1.1",
+    root: "hardware.google",
+    srcs: [
+        "IBluetoothSar.hal",
+    ],
+    interfaces: [
+        "hardware.google.bluetooth.sar@1.0",
+        "android.hidl.base@1.0",
+    ],
+    gen_java: true,
+}
diff --git a/bluetooth/sar/1.1/IBluetoothSar.hal b/bluetooth/sar/1.1/IBluetoothSar.hal
new file mode 100644
index 0000000..2dfca42
--- /dev/null
+++ b/bluetooth/sar/1.1/IBluetoothSar.hal
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * This is pixel only extension for Bluetooth HAL.
+ */
+package hardware.google.bluetooth.sar@1.1;
+import  hardware.google.bluetooth.sar@1.0;
+
+interface IBluetoothSar extends @1.0::IBluetoothSar {
+    /**
+     * API to set Bluetooth Tx power cap of each mode
+     *
+     * This API must be invoke whenever maximum Bluetooth Tx power of each mode, include chain 0,
+     * chain 1 and beamforming mode, need to be changed for optimising performance purpose in SAR
+     * scenarios.
+     *
+     * @param chain0Cap Bluetooth Tx cap of chain 0 mode. Range is between 0 and 80 units, each unit
+     * is 0.25 dBm.
+     * @param chain1Cap Bluetooth Tx cap of chain 1 mode. Range is between 0 and 80 units, each unit
+     * is 0.25 dBm.
+     * @param beamformingCap Bluetooth Tx cap of beamforming mode. Range is between 0 and 80 units,
+     * each unit is 0.25 dBm.
+     */
+     oneway setBluetoothModeBasedTxPowerCap(int8_t[3] chain0Cap,int8_t[3] chain1Cap,
+             int8_t[6] beamformingCap);
+};
\ No newline at end of file
diff --git a/current.txt b/current.txt
index b0dae6a..210c9c7 100644
--- a/current.txt
+++ b/current.txt
@@ -1,3 +1,12 @@
+# HALs released in Android S
+
+c34fdd31d56ca97aec45eb3eb9b47d62294335e1c880a7998013f2096825397d hardware.google.bluetooth.bt_channel_avoidance@1.0::IBTChannelAvoidance
+8490e311ba249523d0cb6e2dd8b8a863241b428cdf8c98d88689332951e398c8 hardware.google.bluetooth.ccc@1.0::types
+a8a5ea77cf0e11f83a6751186325efb7f18ea1dc2e9f9ad33032980b0e1e3ecd hardware.google.bluetooth.ccc@1.0::IBluetoothCcc
+5287fd8c6f65a1533a9c65bb8036ce0653093cf7f802636732c265b57588f2a8 hardware.google.bluetooth.ccc@1.0::IBluetoothCccCallback
+ffb48792d6e067f012f66b28b526afe46be1aaaacbcf71891969cb0a55a7165c hardware.google.bluetooth.sar@1.0::IBluetoothSar
+a0632be7cbb7e64f8254363b6d000ec0bb03096f7a10a1390701b9ace2ff2c84 hardware.google.bluetooth.sar@1.1::IBluetoothSar
+
 # HALs released in Android P MAR20 QPR
 
 bcaa8ef72b0ebbcbd0873f600a8d2bc45f76a6fb119ad6aeae4c5347a790aedb hardware.google.light@1.1::ILight
diff --git a/display/Android.bp b/display/Android.bp
index f48a528..5b63f65 100644
--- a/display/Android.bp
+++ b/display/Android.bp
@@ -16,6 +16,10 @@
 
     stability: "vintf",
 
+    imports: [
+        "android.hardware.common",
+    ],
+
     backend: {
         java: {
             platform_apis: true,
@@ -24,5 +28,9 @@
             enabled: false,
         },
     },
-    versions: ["1"],
+    versions: [
+        "1",
+        "2",
+        "3",
+    ],
 }
diff --git a/display/aidl_api/com.google.hardware.pixel.display/2/.hash b/display/aidl_api/com.google.hardware.pixel.display/2/.hash
new file mode 100644
index 0000000..60cb0d0
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/2/.hash
@@ -0,0 +1 @@
+bcb4f92324798b6f2c70f1757634f670e1da6d36
diff --git a/display/aidl_api/com.google.hardware.pixel.display/2/com/google/hardware/pixel/display/HbmState.aidl b/display/aidl_api/com.google.hardware.pixel.display/2/com/google/hardware/pixel/display/HbmState.aidl
new file mode 100644
index 0000000..76af8b3
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/2/com/google/hardware/pixel/display/HbmState.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum HbmState {
+  OFF = 0,
+  HDR = 1,
+  SUNLIGHT = 2,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/2/com/google/hardware/pixel/display/IDisplay.aidl b/display/aidl_api/com.google.hardware.pixel.display/2/com/google/hardware/pixel/display/IDisplay.aidl
new file mode 100644
index 0000000..9a58417
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/2/com/google/hardware/pixel/display/IDisplay.aidl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package com.google.hardware.pixel.display;
+@VintfStability
+interface IDisplay {
+  boolean isHbmSupported();
+  void setHbmState(in com.google.hardware.pixel.display.HbmState state);
+  com.google.hardware.pixel.display.HbmState getHbmState();
+  boolean isLbeSupported();
+  void setLbeState(in com.google.hardware.pixel.display.LbeState state);
+  void setLbeAmbientLight(in int ambientLux);
+  com.google.hardware.pixel.display.LbeState getLbeState();
+  boolean isLhbmSupported();
+  void setLhbmState(in boolean enabled);
+  boolean getLhbmState();
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/2/com/google/hardware/pixel/display/LbeState.aidl b/display/aidl_api/com.google.hardware.pixel.display/2/com/google/hardware/pixel/display/LbeState.aidl
new file mode 100644
index 0000000..6ad7fb7
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/2/com/google/hardware/pixel/display/LbeState.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum LbeState {
+  OFF = 0,
+  NORMAL = 1,
+  HIGH_BRIGHTNESS = 2,
+  POWER_SAVE = 3,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/3/.hash b/display/aidl_api/com.google.hardware.pixel.display/3/.hash
new file mode 100644
index 0000000..b08a01a
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/3/.hash
@@ -0,0 +1 @@
+41425d2a0c0f6459d358b330f10ab1166eb09a14
diff --git a/display/aidl_api/com.google.hardware.pixel.display/3/com/google/hardware/pixel/display/HbmState.aidl b/display/aidl_api/com.google.hardware.pixel.display/3/com/google/hardware/pixel/display/HbmState.aidl
new file mode 100644
index 0000000..76af8b3
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/3/com/google/hardware/pixel/display/HbmState.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum HbmState {
+  OFF = 0,
+  HDR = 1,
+  SUNLIGHT = 2,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/3/com/google/hardware/pixel/display/IDisplay.aidl b/display/aidl_api/com.google.hardware.pixel.display/3/com/google/hardware/pixel/display/IDisplay.aidl
new file mode 100644
index 0000000..a4e0b06
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/3/com/google/hardware/pixel/display/IDisplay.aidl
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package com.google.hardware.pixel.display;
+@VintfStability
+interface IDisplay {
+  boolean isHbmSupported();
+  void setHbmState(in com.google.hardware.pixel.display.HbmState state);
+  com.google.hardware.pixel.display.HbmState getHbmState();
+  boolean isLbeSupported();
+  void setLbeState(in com.google.hardware.pixel.display.LbeState state);
+  void setLbeAmbientLight(in int ambientLux);
+  com.google.hardware.pixel.display.LbeState getLbeState();
+  boolean isLhbmSupported();
+  void setLhbmState(in boolean enabled);
+  boolean getLhbmState();
+  int setCompensationImageHandle(in android.hardware.common.NativeHandle native_handle, in String imageName);
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/3/com/google/hardware/pixel/display/LbeState.aidl b/display/aidl_api/com.google.hardware.pixel.display/3/com/google/hardware/pixel/display/LbeState.aidl
new file mode 100644
index 0000000..6ad7fb7
--- /dev/null
+++ b/display/aidl_api/com.google.hardware.pixel.display/3/com/google/hardware/pixel/display/LbeState.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package com.google.hardware.pixel.display;
+@Backing(type="byte") @VintfStability
+enum LbeState {
+  OFF = 0,
+  NORMAL = 1,
+  HIGH_BRIGHTNESS = 2,
+  POWER_SAVE = 3,
+}
diff --git a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HbmState.aidl b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HbmState.aidl
index 440a95e..76af8b3 100644
--- a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HbmState.aidl
+++ b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/HbmState.aidl
@@ -1,14 +1,30 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 ///////////////////////////////////////////////////////////////////////////////
 // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
 ///////////////////////////////////////////////////////////////////////////////
 
-// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
-// edit this file. It looks like you are doing that because you have modified
-// an AIDL interface in a backward-incompatible way, e.g., deleting a function
-// from an interface or a field from a parcelable and it broke the build. That
-// breakage is intended.
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
 //
-// You must not make a backward incompatible changes to the AIDL files built
+// You must not make a backward incompatible change to any AIDL file built
 // with the aidl_interface module type with versions property set. The module
 // type is used to build AIDL files in a way that they can be used across
 // independently updatable components of the system. If a device is shipped
diff --git a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/IDisplay.aidl b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/IDisplay.aidl
index df43035..a4e0b06 100644
--- a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/IDisplay.aidl
+++ b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/IDisplay.aidl
@@ -1,14 +1,30 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 ///////////////////////////////////////////////////////////////////////////////
 // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
 ///////////////////////////////////////////////////////////////////////////////
 
-// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
-// edit this file. It looks like you are doing that because you have modified
-// an AIDL interface in a backward-incompatible way, e.g., deleting a function
-// from an interface or a field from a parcelable and it broke the build. That
-// breakage is intended.
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
 //
-// You must not make a backward incompatible changes to the AIDL files built
+// You must not make a backward incompatible change to any AIDL file built
 // with the aidl_interface module type with versions property set. The module
 // type is used to build AIDL files in a way that they can be used across
 // independently updatable components of the system. If a device is shipped
@@ -25,4 +41,8 @@
   void setLbeState(in com.google.hardware.pixel.display.LbeState state);
   void setLbeAmbientLight(in int ambientLux);
   com.google.hardware.pixel.display.LbeState getLbeState();
+  boolean isLhbmSupported();
+  void setLhbmState(in boolean enabled);
+  boolean getLhbmState();
+  int setCompensationImageHandle(in android.hardware.common.NativeHandle native_handle, in String imageName);
 }
diff --git a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/LbeState.aidl b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/LbeState.aidl
index 0e4985a..6ad7fb7 100644
--- a/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/LbeState.aidl
+++ b/display/aidl_api/com.google.hardware.pixel.display/current/com/google/hardware/pixel/display/LbeState.aidl
@@ -1,14 +1,30 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 ///////////////////////////////////////////////////////////////////////////////
 // THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
 ///////////////////////////////////////////////////////////////////////////////
 
-// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
-// edit this file. It looks like you are doing that because you have modified
-// an AIDL interface in a backward-incompatible way, e.g., deleting a function
-// from an interface or a field from a parcelable and it broke the build. That
-// breakage is intended.
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
 //
-// You must not make a backward incompatible changes to the AIDL files built
+// You must not make a backward incompatible change to any AIDL file built
 // with the aidl_interface module type with versions property set. The module
 // type is used to build AIDL files in a way that they can be used across
 // independently updatable components of the system. If a device is shipped
diff --git a/display/com/google/hardware/pixel/display/IDisplay.aidl b/display/com/google/hardware/pixel/display/IDisplay.aidl
index ff60b89..bb7ca4b 100644
--- a/display/com/google/hardware/pixel/display/IDisplay.aidl
+++ b/display/com/google/hardware/pixel/display/IDisplay.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2020 The Android Open Source Project
+ * Copyright (C) 2021 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@
 
 import com.google.hardware.pixel.display.HbmState;
 import com.google.hardware.pixel.display.LbeState;
+import android.hardware.common.NativeHandle;
 
 @VintfStability
 interface IDisplay {
@@ -72,4 +73,36 @@
      * @return state of display local brightness enhancement
      */
     LbeState getLbeState();
+
+    /**
+     * Query Display Local High Brightness Mode Supported
+     *
+     * @return true if LHBM is supported on this platform.
+     *         If false, LHBM is not supported.
+     */
+    boolean isLhbmSupported();
+
+    /**
+     * Set Display Local High Brightness Mode
+     *
+     * @param enabled true if LHBM should be enabled, false otherwise.
+     */
+    void setLhbmState(in boolean enabled);
+
+    /**
+     * Get Display Local High Brightness Mode State
+     *
+     * @return true if LHBM is ON, false otherwise.
+     */
+    boolean getLhbmState();
+
+    /**
+     * Set NativeHandle then server can fill the compensation
+     * image into the native handle
+     *
+     * @param native_handle share the NativeHandle from client.
+     * @param imageName the image name that define in client.
+     * @return errno of setCompensationImageHandle
+     */
+    int setCompensationImageHandle(in NativeHandle native_handle, in String imageName);
 }