Compare commits

...

58 commits

Author SHA1 Message Date
d645c3f4e5 zeus: Time for tequila! 2024-09-07 21:18:43 +00:00
8988513ef2
Revert "Dagda"
This reverts commit b787c3ed18.
2024-08-07 20:16:03 +02:00
Michael Bestas
ece4f97da2 dagda: Drop COMMON_LUNCH_CHOICES
As of 14 QPR2 this is broken, let's remove it instead of updating it
every 3 months. breakfast is the way to go.

Change-Id: I097bd54b894d9a49c7ce8b1ab6f343349e268fd8
2024-08-01 00:01:49 +02:00
Arian
93a95c0418 dagda: Drop xiaomi citsensorservice and enable light sensor notifier
Change-Id: I896f31b925976bbe51d42a7c39d698793fba6cd7
2024-07-28 18:59:49 +02:00
Arian
bf490c6ece dagda: Update blobs and firmware from V816.0.4.0.ULBMIXM
Change-Id: I4121df076e5146d077b957d80025688b45515336
2024-07-25 00:43:06 +02:00
Arian
9226629a64 dagda: Update blobs from V816.0.6.0.ULBEUXM
Change-Id: Icc45db6c57716c39f1b352b5542d6903358f8ed7
2024-07-04 12:49:14 +02:00
Arian
b787c3ed18 Dagda
Change-Id: I27418038906c9d1850ce44a5c0a60fbc98b32aed
2024-06-02 00:42:53 +02:00
Arian
235ce0d74c fixup! zeus: Import mod_device property 2024-05-21 13:49:57 +02:00
Arian
861d83dd73 zeus: Add missing kvh2xml.xml
Change-Id: Ia02223fb16e8f970f547398aee48659b22eb377e
2024-05-21 13:49:33 +02:00
Arian
1d5d71ea12 zeus: Decommonize NFC configs
Change-Id: Ifab750ae0db648bc7e5a7125fb85efd9f29fe4dc
2024-05-18 14:43:46 +02:00
Arian
f9e0d6952e zeus: Decommonize libssccalapi@2.0
Change-Id: Iece45cb6136ba89e8d6f55f920239978a142f7e5
2024-05-18 10:55:10 +02:00
Arian
1fc5faae75 Revert "zeus: Opt out of EPPE"
This reverts commit 743055d878.
2024-03-27 00:09:55 +01:00
Arian
76f7caca3c zeus: overlay: Decommonize brightness overlays
Change-Id: I830e690f92454b58833937646eb8a166cfdad5ea
2024-03-14 18:40:07 +01:00
Arian
e74353415c zeus: Import displayconfig to control HBM
Change-Id: Ic0db626323bedabee791bb7c9e443b71e49ee36d
2024-03-14 18:04:29 +01:00
Arian
f8de7d5230 fixup! zeus: cleanup blobs 2024-03-14 16:29:09 +01:00
Arian
093af00b33 zeus: Decommonize CIT sensors
Change-Id: I06e14a2a29c3ed4d6e4df7919151cfefef481de4
2024-03-07 21:31:20 +01:00
Arian
7b0224c548 fixup! zeus: Update blobs from V816.0.2.0.ULBCNXM 2024-03-07 20:50:41 +01:00
Arian
d36bb426a3 zeus: Drop vm-bootsys image
Change-Id: I984e30437c12fa5967461637cc41207d5035bf0d
2024-03-07 20:46:54 +01:00
Arian
9cf67565dd zeus: Add goodix_fod module
Change-Id: Ie4c0edd4b4e597866a10ae030e6f076b217c8c56
2024-03-07 20:46:33 +01:00
Arian
6d152dfe38 zeus: Update blobs from V816.0.2.0.ULBCNXM
Change-Id: Ief542e94878a4ab80cca8f011aba36bbdc2f6dcc
2024-03-07 20:46:29 +01:00
Arian
21f3f7b917 zeus: Decommonize sensors configs
Change-Id: I24d103a3b59f09d70ab025a75f48f8544bfc19a6
2024-03-07 20:42:05 +01:00
Arian
dafe64f8ea zeus: Decommonize ADSP modules
Change-Id: Ibe74c783a5bd1c9722f0de360e99cda86cda40da
2024-03-07 20:40:49 +01:00
Arian
d41ef24fad zeus: Import decommonized libQnnHtpAltPrepV69Stub.so
Change-Id: I8a7fe8eca6434a723a60dab5bb647d58f4d2ee64
2024-03-05 19:11:30 +01:00
LuK1337
713e5945bf zeus: Setup firmware extraction
Change-Id: I693e59abbfcec4f016de324517ad0e24ef565c65
2024-03-05 19:10:59 +01:00
Bruno Martins
d8e2bd217d zeus: Move to QTI health AIDL service
The health AIDL HAL service provides functionalities of charger,
therefore system charger at /system/bin/charger is deprecated.
On top of that, QTI health AIDL HAL service enables suspend by
default, the equivalent of setting ro.charger.enable_suspend
for legacy charger.

Change-Id: I59c23e7974cea1174b0161f31a535fa3afa1e5c9
2024-03-05 19:10:36 +01:00
Arian
c0d8e54627 zeus: cleanup blobs
Change-Id: I66df1ede910992a1ffcbc5526c1dc123bf5c0ef8
2024-03-05 19:10:00 +01:00
Arian
8113cfdb5c zeus: Decommonize audio HAL
Change-Id: I4b4897c034aacfd7f73c04b9df493f3d5aa9b33c
2024-03-05 19:08:36 +01:00
Arian
f5af450693 zeus: Decommonize AGM
Change-Id: I01c3b06f28428eeaba9c4af60af4404f0ebdbd25
2024-03-05 19:07:47 +01:00
Arian
91824d89d8 zeus: Decommonize touch_report
Change-Id: Iecd65f73437430174ba7726bb1b15e50d368a654
2024-03-05 19:07:29 +01:00
Arian
af0daa67d0 zeus: Add regulator, touch, haptics and audio kernel modules
Change-Id: I9484a243935db3355a8639a9ae6413dc82431b1c
2024-03-05 19:06:47 +01:00
Arian
71588bb34c zeus: overlay: Disable smooth display settings in favor of min/max settings
Change-Id: I6060e44298f2a92ba2eef03210097f851a48998d
2023-10-09 19:53:53 +02:00
Arian
9c28929c54 zeus: Decommonize camera blobs
Change-Id: Id17186d37eb852dbc0ce546795902d19ebdbf13d
2023-09-30 11:30:33 +02:00
Arian
4b791f5610 zeus: Set stock build fingerprint and description
Change-Id: I9af04943b1b869a57c82f9f2dac6ddf9391162c2
2023-08-19 16:22:59 +02:00
Arian
7923cbf83d zeus: Declare source of extracted files
Change-Id: Ia2ee93bd694354605155d9f0c17c9b33aed7460d
2023-08-19 16:22:31 +02:00
Arian
a03862bb95 zeus: Decommonize com.qti.chi.override.so
Change-Id: I70a48b4a04af0f9eec0bf1404b9f3b0baf41963b
2023-08-12 09:56:47 +02:00
Arian
3a5d91b09c zeus: Decommonize batterysecret
Change-Id: I702f5447e7fa71105f717a2b21c3c6861587aeca
2023-07-20 10:18:40 +02:00
Arian
0602fccf46 zeus: Add goodix_fod blobs too
Change-Id: I6512d69113f9ad98ff070d2c93af71f82cb52826
2023-07-08 12:27:54 +02:00
Arian
c0b75cafdb zeus: Unpin fingerprint blobs
Change-Id: I7a322f1e2e6ba72295c9a67d630b68d702d0cea9
2023-07-08 12:25:58 +02:00
Arian
8c4144ab24 zeus: Import audio configs from V14.0.7.0.TLBMIXM
Change-Id: I32c54ebd2f55ed06bc49da567d6654f056909f50
2023-06-25 14:44:05 +02:00
Arian
f9c296c1af zeus: Import mod_device property
Change-Id: Ide1eba4a88a17ff514baabc4b464e971e1a2bb89
2023-06-25 14:38:40 +02:00
Arian
e4b7be784b zeus: Enable 60 fps video in aperture
Change-Id: Ic5265ca2722182a414fccb6f3be460832e247ed3
2023-06-25 13:23:47 +02:00
LuK1337
fcea68b7fb zeus: overlay: Configure aux camera for Aperture
Change-Id: I543f078dd4dba30e1b22737d5c22d591e3fb34e6
2023-06-25 13:23:26 +02:00
Arian
73f71d5a46 zeus: Pin fingeprint blobs from V13.0.10.0.SLBEUXM
Change-Id: Ib418b0ba5af119bdb0d0dede1d2f5c4957a99bdf
2023-06-25 12:40:49 +02:00
Arian
b5ee541485 zeus: Import missing fingerprint blob
Change-Id: I81b053de1c360050c340019025f8e414479bfd3b
2023-06-19 14:02:09 +02:00
Arian
d78a4e83e7 zeus: Initial proprietary-files.txt
Change-Id: Ie3f4a882bc3d725192c20f875432368f15abf8a7
2023-05-18 23:19:07 +02:00
Michael Bestas
743055d878 zeus: Opt out of EPPE
Change-Id: I71f54b1ad6de9d1406a3a55239acff1f4e426158
2023-05-18 20:34:42 +02:00
Cosmin Tanislav
8af5f27643 zeus: Add support for udfps long press sensor
Change-Id: I7196dce967c9adbc62bb5156ade749c92c7780a1
2023-05-11 19:52:13 +02:00
Arian
a4590814c3 zeus: overlay: Add fingerprint overlays
Change-Id: I71ac9af898e929252b826b7e70d47f1575c9e9f7
2023-05-11 19:51:41 +02:00
Cosmin Tanislav
f34a07678d zeus: overlay: Allow switching between 60Hz and 120Hz
Change-Id: I4f328dbdce50e709f30b1f098e71248d72819268
2023-05-11 19:51:04 +02:00
Arian
e5380c9e9c zeus: overlay: Add corner content padding
Change-Id: Iee6fe4fea0d00235d15c3c0ab0c742d1e315001d
2023-05-11 19:49:27 +02:00
Arian
91253b5da1 zeus: overlay: Import display cutout and rounded corner configurations
Change-Id: I169f8b61c3f1345e3b612db8f9c15dd4963e6425
2023-05-11 19:48:21 +02:00
Arian
71c104c8e6 zeus: overlay: Import power_profile from V14.0.7.0.TLBMIXM
Change-Id: I56acb96ff07f18eb025315bdf794d77ae38ccc15
2023-05-11 19:47:29 +02:00
Roshan Pius
a1a9f92f5f zeus: Add ZeusWifiOverlay
Bug: 148617260
Test: Device boots up and connects to wifi networks.
Change-Id: Iec27a6d947a232a42451ef095dc73d1a52327db5
2023-05-11 19:39:48 +02:00
LuK1337
e52b63167d zeus: overlay: Set default Settings.Global.DEVICE_NAME according to MIUI
MIUI uses ro.product.vendor.marketname for default device name.

Change-Id: I310c1ffc581b72653783d1093d9e7ebde544bb16
2023-05-11 19:39:41 +02:00
Arian
cacb2aa833 zeus: Configure screen density
Set the screen density according to ro.sf.lcd_density from miui.

Change-Id: Ic11b052d132f150da7070e5b8669e5a229f7528d
2023-05-11 19:39:19 +02:00
Michael Bestas
55a2b8d7ef zeus: Add board-info.txt
* Fixes flashall in fastbootd

Change-Id: Iae2f33113317cfaadeff7a3610463880077c35e0
2023-05-11 19:39:19 +02:00
Arian
f90d21741e zeus: Initial device tree
Change-Id: I6d195d295b5f94b71c3ff32b21aa33d3af7bf588
2023-05-11 19:36:27 +02:00
Arian
bb8446c62e zeus: Add spec info about Xiaomi 12 Pro 2023-05-11 17:48:42 +02:00
36 changed files with 2338 additions and 0 deletions

8
Android.bp Normal file
View file

@ -0,0 +1,8 @@
//
// Copyright (C) 2022-2023 The LineageOS Project
//
// SPDX-License-Identifier: Apache-2.0
//
soong_namespace {
}

11
Android.mk Normal file
View file

@ -0,0 +1,11 @@
#
# Copyright (C) 2022-2023 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
LOCAL_PATH := $(call my-dir)
ifeq ($(TARGET_DEVICE),zeus)
include $(call all-makefiles-under,$(LOCAL_PATH))
endif

8
AndroidProducts.mk Normal file
View file

@ -0,0 +1,8 @@
#
# Copyright (C) 2022-2023 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/tequila_zeus.mk

35
BoardConfig.mk Normal file
View file

@ -0,0 +1,35 @@
#
# Copyright (C) 2022-2023 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
# Inherit from xiaomi sm8450-common
include device/xiaomi/sm8450-common/BoardConfigCommon.mk
# Inherit from the proprietary version
include vendor/xiaomi/zeus/BoardConfigVendor.mk
DEVICE_PATH := device/xiaomi/zeus
# Kernel
device_second_stage_modules := \
goodix_fod.ko \
qcom_pm8008-regulator.ko \
fts_touch_spi.ko \
aw8697-haptic.ko
device_vendor_dlkm_exclusive_modules := \
cs35l41_dlkm.ko
BOARD_VENDOR_RAMDISK_RECOVERY_KERNEL_MODULES_LOAD += $(device_second_stage_modules)
BOARD_VENDOR_KERNEL_MODULES_LOAD += $(device_second_stage_modules) $(device_vendor_dlkm_exclusive_modules)
BOOT_KERNEL_MODULES += $(device_second_stage_modules)
# Properties
TARGET_SYSTEM_PROP += $(DEVICE_PATH)/properties/system.prop
TARGET_VENDOR_PROP += $(DEVICE_PATH)/properties/vendor.prop
# Screen density
TARGET_SCREEN_DENSITY := 560

24
README.md Normal file
View file

@ -0,0 +1,24 @@
Copyright (C) 2022-2023 The LineageOS Project
Device configuration for Xiaomi 12 Pro
=========================================
The Xiaomi 12 Pro (codenamed _"zeus"_) is a high-end smartphone from Xiaomi.
It was globally released in March 2022.
## Device specifications
Basic | Spec Sheet
-------:|:-------------------------
Platform | Snapdragon® 8 Gen 1 (SM8450)
RAM & Storage | 8GB/128GB, 8GB/256GB, 12GB/256GB (LPDDR5 RAM, UFS 3.1 storage)
Shipped Android Version | 12
Battery | Non-removable, 4600 mAh
Display | 6.73″, LTPO 120Hz, 3200x1440 (522 ppi)
Rear camera | 50MP wide angle, 50MP ultra wide-angle, 50MP telephoto
Front camera | 32MP in-display
## Device picture
![Xiaomi 12 Pro](https://i01.appmifile.com/v1/MI_18455B3E4DA706226CF7535A58E875F0267/pms_1646293765.11623978.png "Xiaomi 12 Pro in blue")

1
board-info.txt Normal file
View file

@ -0,0 +1 @@
require board=taro|zeus

31
device.mk Normal file
View file

@ -0,0 +1,31 @@
#
# Copyright (C) 2022-2023 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
# Inherit from xiaomi sm8450-common
$(call inherit-product, device/xiaomi/sm8450-common/common.mk)
# Inherit from the proprietary version
$(call inherit-product, vendor/xiaomi/zeus/zeus-vendor.mk)
# Overlay
PRODUCT_PACKAGES += \
ApertureResZeus \
FrameworksResZeus \
SettingsProviderResZeus \
SettingsResZeus \
SystemUIResZeus \
WifiResZeus
# Sensors
PRODUCT_PACKAGES += \
sensors.xiaomi
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/sensors/hals.conf:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/hals.conf
# Soong namespaces
PRODUCT_SOONG_NAMESPACES += \
$(LOCAL_PATH)

38
extract-files.sh Normal file
View file

@ -0,0 +1,38 @@
#!/bin/bash
#
# Copyright (C) 2016 The CyanogenMod Project
# Copyright (C) 2017-2020 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
function blob_fixup() {
case "${1}" in
vendor/etc/camera/zeus_enhance_motiontuning.xml|vendor/etc/camera/zeus_motiontuning.xml)
sed -i 's/xml=version/xml version/g' "${2}"
;;
vendor/etc/camera/pureShot_parameter.xml|vendor/etc/camera/pureView_parameter.xml)
sed -i 's/=\([0-9]\+\)>/="\1">/g' "${2}"
;;
vendor/etc/init/hw/init.batterysecret.rc)
sed -i 's/on charger/on property:init.svc.vendor.charger=running/g' "${2}"
;;
vendor/lib/hw/vendor.xiaomi.sensor.citsensorservice@2.0-impl.so|vendor/lib64/hw/vendor.xiaomi.sensor.citsensorservice@2.0-impl.so)
sed -i 's/_ZN13DisplayConfig10ClientImpl13ClientImplGetENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPNS_14ConfigCallbackE/_ZN13DisplayConfig10ClientImpl4InitENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPNS_14ConfigCallbackE\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0/g' "${2}"
;;
esac
}
# If we're being sourced by the common script that we called,
# stop right here. No need to go down the rabbit hole.
if [ "${BASH_SOURCE[0]}" != "${0}" ]; then
return
fi
set -e
export DEVICE=zeus
export DEVICE_COMMON=sm8450-common
export VENDOR=xiaomi
"./../../${VENDOR}/${DEVICE_COMMON}/extract-files.sh" "$@"

View file

@ -0,0 +1,10 @@
//
// Copyright (C) 2023 The LineageOS Project
//
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "ApertureResZeus",
device_specific: true,
}

View file

@ -0,0 +1,10 @@
<!--
Copyright (C) 2023 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.lineageos.aperture.overlay.zeus">
<overlay android:targetPackage="org.lineageos.aperture"
android:isStatic="true"
android:priority="700"/>
</manifest>

View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
SPDX-FileCopyrightText: 2023 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<resources>
<!-- Enable auxiliary cameras selector. -->
<bool name="config_enableAuxCameras">true</bool>
<!-- List of ID of auxiliary cameras that must be ignored by the app. -->
<string-array name="config_ignoredAuxCameraIds">
<item>6</item>
</string-array>
<!-- An array of triplets made of (camera ID, qualities, framerates).
These video modes will be added to the available
quality/framerate combinations of a camera device.
Make sure the device is able to handle those configurations
and maintain a stable framerate at any condition.
Note that you can't add video qualities that aren't
exposed by the camera, only new framerates.
Valid values of resolution are:
- "sd" (480p)
- "hd" (720p)
- "fhd" (1080p)
- "uhd" (2160p)
Valid values of framerate are:
- "24"
- "30"
- "60"
- "120"
Example:
<string-array name="config_additionalVideoConfigurations">
<item>0</item> <item>sd|hd|fhd</item> <item>60|120</item>
<item>1</item> <item>sd|hd|fhd</item> <item>60</item>
</string-array>
-->
<string-array name="config_additionalVideoConfigurations">
<item>0</item> <item>sd|hd|fhd|uhd</item> <item>60</item>
<item>1</item> <item>sd|hd|fhd</item> <item>60</item>
<item>2</item> <item>sd|hd|fhd|uhd</item> <item>60</item>
<item>3</item> <item>sd|hd|fhd|uhd</item> <item>60</item>
</string-array>
</resources>

View file

@ -0,0 +1,10 @@
//
// Copyright (C) 2022 The LineageOS Project
//
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "FrameworksResZeus",
device_specific: true,
}

View file

@ -0,0 +1,10 @@
<!--
Copyright (C) 2022 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.overlay.zeus">
<overlay android:targetPackage="android"
android:isStatic="true"
android:priority="700"/>
</manifest>

View file

@ -0,0 +1,434 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2024 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<integer name="config_udfps_illumination_transition_ms">0</integer>
<!-- Minimum screen brightness setting allowed by power manager.
-2 is invalid so setting will resort to int value specified above.
Set this to 0.0 to allow screen to go to minimal brightness.
The user is forbidden from setting the brightness below this level. -->
<item format="float" name="config_screenBrightnessSettingMinimumFloat" type="dimen">0.002197534</item>
<!-- Maximum screen brightness allowed by the power manager.
-2 is invalid so setting will resort to int value specified above.
Set this to 1.0 for maximum brightness range.
The user is forbidden from setting the brightness above this level. -->
<item format="float" name="config_screenBrightnessSettingMaximumFloat" type="dimen">1</item>
<!-- Default screen brightness setting set.
-2 is invalid so setting will resort to int value specified above.
Must be in the range specified by minimum and maximum. -->
<item format="float" name="config_screenBrightnessSettingDefaultFloat" type="dimen">0.07496032</item>
<!-- Stability requirements in milliseconds for accepting a new brightness level. This is used
for debouncing the light sensor. Different constants are used to debounce the light sensor
when adapting to brighter or darker environments. This parameter controls how quickly
brightness changes occur in response to an observed change in light level that exceeds the
hysteresis threshold. -->
<integer name="config_autoBrightnessBrighteningLightDebounce">1000</integer>
<integer name="config_autoBrightnessDarkeningLightDebounce">1000</integer>
<!-- The maximum range of gamma adjustment possible using the screen
auto-brightness adjustment setting. -->
<fraction name="config_autoBrightnessAdjustmentMaxGamma">100.0%</fraction>
<item name="config_screenBrightnessDimFloat" type="dimen">0.002197534</item>
<!-- Array of light sensor lux values to define our levels for auto backlight brightness support.
The N entries of this array define N + 1 control points as follows:
(1-based arrays)
Point 1: (0, value[1]): lux <= 0
Point 2: (level[1], value[2]): 0 < lux <= level[1]
Point 3: (level[2], value[3]): level[2] < lux <= level[3]
...
Point N+1: (level[N], value[N+1]): level[N] < lux
The control points must be strictly increasing. Each control point
corresponds to an entry in the brightness backlight values arrays.
For example, if lux == level[1] (first element of the levels array)
then the brightness will be determined by value[2] (second element
of the brightness values array).
Spline interpolation is used to determine the auto-brightness
backlight values for lux levels between these control points.
Must be overridden in platform specific overlays -->
<integer-array name="config_autoBrightnessLevels">
<item>1</item>
<item>2</item>
<item>4</item>
<item>6</item>
<item>8</item>
<item>10</item>
<item>15</item>
<item>20</item>
<item>25</item>
<item>30</item>
<item>35</item>
<item>40</item>
<item>45</item>
<item>50</item>
<item>55</item>
<item>60</item>
<item>65</item>
<item>70</item>
<item>75</item>
<item>80</item>
<item>85</item>
<item>90</item>
<item>95</item>
<item>100</item>
<item>120</item>
<item>140</item>
<item>160</item>
<item>180</item>
<item>200</item>
<item>220</item>
<item>240</item>
<item>260</item>
<item>280</item>
<item>300</item>
<item>320</item>
<item>340</item>
<item>360</item>
<item>380</item>
<item>400</item>
<item>420</item>
<item>440</item>
<item>460</item>
<item>480</item>
<item>500</item>
<item>700</item>
<item>900</item>
<item>1100</item>
<item>1300</item>
<item>1500</item>
<item>1700</item>
<item>1900</item>
<item>2000</item>
<item>2500</item>
<item>3000</item>
<item>3500</item>
<item>4000</item>
<item>4500</item>
<item>5000</item>
<item>5500</item>
<item>6000</item>
<item>6500</item>
<item>7000</item>
<item>7500</item>
<item>8000</item>
<item>8500</item>
<item>9000</item>
<item>9500</item>
<item>10000</item>
<item>10500</item>
<item>11000</item>
<item>11500</item>
<item>12000</item>
<item>12500</item>
<item>13000</item>
<item>13500</item>
<item>14000</item>
<item>14500</item>
<item>15000</item>
<item>16000</item>
<item>17000</item>
<item>18000</item>
<item>19000</item>
<item>20000</item>
<item>21000</item>
<item>22000</item>
<item>23000</item>
<item>24000</item>
<item>25000</item>
<item>26000</item>
<item>27000</item>
<item>28000</item>
<item>29000</item>
<item>30000</item>
<item>35000</item>
<item>40000</item>
<item>45000</item>
<item>50000</item>
<item>55000</item>
<item>60000</item>
<item>65000</item>
<item>70000</item>
<item>75000</item>
<item>80000</item>
<item>85000</item>
<item>90000</item>
<item>95000</item>
<item>100000</item>
</integer-array>
<!-- Array of output values for LCD backlight corresponding to the lux values
in the config_autoBrightnessLevels array. This array should have size one greater
than the size of the config_autoBrightnessLevels array.
The brightness values must be between 0 and 255 and be non-decreasing.
This must be overridden in platform specific overlays -->
<integer-array name="config_autoBrightnessLcdBacklightValues" />
<!-- Array of desired screen brightness in nits corresponding to the lux values
in the config_autoBrightnessLevels array. The display brightness is defined as the measured
brightness of an all-white image.
If this is defined then:
- config_autoBrightnessLcdBacklightValues should not be defined
- config_screenBrightnessNits must be defined
- config_screenBrightnessBacklight must be defined
This array should have size one greater than the size of the config_autoBrightnessLevels
array. The brightness values must be non-negative and non-decreasing. This must be
overridden in platform specific overlays -->
<array name="config_autoBrightnessDisplayValuesNits">
<item>3.9</item>
<item>4.6</item>
<item>5.3</item>
<item>17.6</item>
<item>24.3</item>
<item>29.7</item>
<item>34.0</item>
<item>46.0</item>
<item>59.0</item>
<item>76.0</item>
<item>81.0</item>
<item>82.0</item>
<item>82.0</item>
<item>82.0</item>
<item>83.0</item>
<item>83.0</item>
<item>83.0</item>
<item>84.0</item>
<item>84.0</item>
<item>85.0</item>
<item>85.0</item>
<item>85.0</item>
<item>85.0</item>
<item>86.0</item>
<item>86.0</item>
<item>87.0</item>
<item>89.0</item>
<item>90.0</item>
<item>91.0</item>
<item>93.0</item>
<item>94.0</item>
<item>96.0</item>
<item>97.0</item>
<item>99.0</item>
<item>100.0</item>
<item>101.0</item>
<item>104.0</item>
<item>105.0</item>
<item>106.0</item>
<item>108.0</item>
<item>109.0</item>
<item>111.0</item>
<item>112.0</item>
<item>114.0</item>
<item>116.0</item>
<item>137.0</item>
<item>157.0</item>
<item>180.0</item>
<item>205.0</item>
<item>226.0</item>
<item>257.0</item>
<item>280.0</item>
<item>295.0</item>
<item>369.0</item>
<item>400.0</item>
<item>416.7</item>
<item>433.3</item>
<item>450.0</item>
<item>466.7</item>
<item>483.3</item>
<item>500.0</item>
<item>512.5</item>
<item>525.0</item>
<item>537.5</item>
<item>550.0</item>
<item>562.5</item>
<item>575.0</item>
<item>587.5</item>
<item>600.0</item>
<item>610.0</item>
<item>620.0</item>
<item>630.0</item>
<item>640.0</item>
<item>650.0</item>
<item>660.0</item>
<item>670.0</item>
<item>680.0</item>
<item>690.0</item>
<item>700.0</item>
<item>705.0</item>
<item>710.0</item>
<item>715.0</item>
<item>720.0</item>
<item>725.0</item>
<item>730.0</item>
<item>735.0</item>
<item>740.0</item>
<item>745.0</item>
<item>750.0</item>
<item>755.0</item>
<item>760.0</item>
<item>765.0</item>
<item>770.0</item>
<item>775.0</item>
<item>800.0</item>
<item>816.7</item>
<item>833.3</item>
<item>850.0</item>
<item>866.7</item>
<item>883.3</item>
<item>900.0</item>
<item>914.3</item>
<item>928.6</item>
<item>942.9</item>
<item>957.1</item>
<item>971.4</item>
<item>985.7</item>
<item>1000.0</item>
</array>
<!-- An array describing the screen's backlight values corresponding to the brightness
values in the config_screenBrightnessNits array.
This array should be equal in size to config_screenBrightnessBacklight. -->
<integer-array name="config_screenBrightnessBacklight">
<item>1</item>
<item>255</item>
</integer-array>
<!-- An array of floats describing the screen brightness in nits corresponding to the backlight
values in the config_screenBrightnessBacklight array. On OLED displays these values
should be measured with an all white image while the display is in the fully on state.
Note that this value should *not* reflect the maximum brightness value for any high
brightness modes but only the maximum brightness value obtainable in a sustainable manner.
This array should be equal in size to config_screenBrightnessBacklight -->
<array name="config_screenBrightnessNits">
<item>3.9</item>
<item>1000.0</item>
</array>
<!-- Array of ambient lux threshold values. This is used for determining hysteresis constraint
values by calculating the index to use for lookup and then setting the constraint value
to the corresponding value of the array. The new brightening hysteresis constraint value
is the n-th element of config_ambientBrighteningThresholds, and the new darkening
hysteresis constraint value is the n-th element of config_ambientDarkeningThresholds.
The (zero-based) index is calculated as follows: (MAX is the largest index of the array)
condition calculated index
value < level[0] 0
level[n] <= value < level[n+1] n+1
level[MAX] <= value MAX+1 -->
<integer-array name="config_ambientThresholdLevels">
<item>2</item>
<item>10</item>
<item>30</item>
<item>100</item>
<item>800</item>
<item>2000</item>
<item>4000</item>
</integer-array>
<!-- Array of hysteresis constraint values for brightening, represented as tenths of a
percent. The length of this array is assumed to be one greater than
config_ambientThresholdLevels. The brightening threshold is calculated as
lux * (1.0f + CONSTRAINT_VALUE). When the current lux is higher than this threshold,
the screen brightness is recalculated. See the config_ambientThresholdLevels
description for how the constraint value is chosen. -->
<integer-array name="config_ambientBrighteningThresholds">
<item>2</item>
<item>6</item>
<item>10</item>
<item>30</item>
<item>100</item>
<item>400</item>
<item>600</item>
<item>1000</item>
</integer-array>
<!-- Array of hysteresis constraint values for darkening, represented as tenths of a
percent. The length of this array is assumed to be one greater than
config_ambientThresholdLevels. The darkening threshold is calculated as
lux * (1.0f - CONSTRAINT_VALUE). When the current lux is lower than this threshold,
the screen brightness is recalculated. See the config_ambientThresholdLevels
description for how the constraint value is chosen. -->
<integer-array name="config_ambientDarkeningThresholds">
<item>800</item>
<item>800</item>
<item>500</item>
<item>500</item>
<item>500</item>
<item>500</item>
<item>500</item>
<item>500</item>
</integer-array>
<!-- Type of the udfps long press sensor. Empty if long press is not supported. -->
<string name="config_dozeUdfpsLongPressSensorType" translatable="false">org.lineageos.sensor.udfps</string>
<!-- The bounding path of the cutout region of the main built-in display.
Must either be empty if there is no cutout region, or a string that is parsable by
{@link android.util.PathParser}.
The path is assumed to be specified in display coordinates with pixel units and in
the display's native orientation, with the origin of the coordinate system at the
center top of the display. Optionally, you can append either `@left` or `@right` to the
end of the path string, in order to change the path origin to either the top left,
or top right of the display.
To facilitate writing device-independent emulation overlays, the marker `@dp` can be
appended after the path string to interpret coordinates in dp instead of px units.
Note that a physical cutout should be configured in pixels for the best results.
If the display supports multiple resolutions, please define the path config based on the
highest resolution so that it can be scaled correctly in each resolution.
Example for a 10px x 10px square top-center cutout:
<string ...>M -5,0 L -5,10 L 5,10 L 5,0 Z</string>
Example for a 10dp x 10dp square top-center cutout:
<string ...>M -5,0 L -5,10 L 5,10 L 5,0 Z @dp</string>
@see https://www.w3.org/TR/SVG/paths.html#PathData
-->
<string name="config_mainBuiltInDisplayCutout" translatable="false">M 0,0 H -42 V 108 H 42 V 0 H 0 Z</string>
<!-- The default refresh rate for a given device. Change this value to set a higher default
refresh rate. If the hardware composer on the device supports display modes with a higher
refresh rate than the default value specified here, the framework may use those higher
refresh rate modes if an app chooses one by setting preferredDisplayModeId or calling
setFrameRate().
If a non-zero value is set for config_defaultPeakRefreshRate, then
config_defaultRefreshRate may be set to 0, in which case the value set for
config_defaultPeakRefreshRate will act as the default frame rate. -->
<integer name="config_defaultRefreshRate">0</integer>
<!-- The default peak refresh rate for a given device. Change this value if you want to prevent
the framework from using higher refresh rates, even if display modes with higher refresh
rates are available from hardware composer. Only has an effect if the value is
non-zero. -->
<integer name="config_defaultPeakRefreshRate">120</integer>
<!-- List of biometric sensors on the device, in decreasing strength. Consumed by AuthService
when registering authenticators with BiometricService. Format must be ID:Modality:Strength,
where: IDs are unique per device, Modality as defined in BiometricAuthenticator.java,
and Strength as defined in Authenticators.java -->
<string-array name="config_biometric_sensors" translatable="false">
<item>0:2:15</item>
</string-array>
<!-- The properties of a UDFPS sensor in pixels, in the order listed below: -->
<integer-array name="config_udfps_sensor_props" translatable="false">
<item>720</item>
<item>2480</item>
<item>134</item>
</integer-array>
</resources>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2024 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Radius of the software rounded corners at the top of the display in its natural
orientation. If zero, the value of rounded_corner_radius is used. -->
<dimen name="rounded_corner_radius_top">120.0px</dimen>
<!-- Radius of the software rounded corners at the bottom of the display in its natural
orientation. If zero, the value of rounded_corner_radius is used. -->
<dimen name="rounded_corner_radius_bottom">111.0px</dimen>
</resources>

View file

@ -0,0 +1,210 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2024 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<device name="Android">
<item name="none">0</item>
<!-- Additional power used when screen is turned on at minimum brightness -->
<item name="screen.on">91.36</item>
<!-- Additional power used when screen is at maximum brightness, compared to
screen at minimum brightness -->
<item name="screen.full">227.8</item>
<array name="cpu.clusters.cores">
<value>4</value>
<value>3</value>
<value>1</value>
</array>
<!-- Different CPU speeds as reported in
/sys/devices/system/cpu/cpu0/cpufreq/stats/scaling_available_frequencies -->
<array name="cpu.core_speeds.cluster0">
<value>307200</value>
<value>403200</value>
<value>518400</value>
<value>614400</value>
<value>729600</value>
<value>844800</value>
<value>960000</value>
<value>1075200</value>
<value>1171200</value>
<value>1267200</value>
<value>1363200</value>
<value>1478400</value>
<value>1574400</value>
<value>1689600</value>
<value>1785600</value>
</array>
<!-- Additional power used by a CPU from cluster 0 when running at different
speeds. Currently this measurement also includes cluster cost. -->
<array name="cpu.core_power.cluster0">
<value>62.47</value>
<value>62.72</value>
<value>65.70</value>
<value>65.57</value>
<value>68.14</value>
<value>70.69</value>
<value>74.22</value>
<value>78.68</value>
<value>81.59</value>
<value>87.35</value>
<value>89.96</value>
<value>97.87</value>
<value>105.87</value>
<value>113.65</value>
<value>121.24</value>
</array>
<!-- Different CPU speeds as reported in
/sys/devices/system/cpu/cpu4/cpufreq/stats/scaling_available_frequencies -->
<array name="cpu.core_speeds.cluster1">
<value>633600</value>
<value>768000</value>
<value>883200</value>
<value>998400</value>
<value>1113600</value>
<value>1209600</value>
<value>1324800</value>
<value>1440000</value>
<value>1555200</value>
<value>1651200</value>
<value>1766400</value>
<value>1881600</value>
<value>1996800</value>
<value>2112000</value>
<value>2227200</value>
<value>2342400</value>
<value>2419200</value>
</array>
<!-- Additional power used by a CPU from cluster 1 when running at different
speeds. Currently this measurement also includes cluster cost. -->
<array name="cpu.core_power.cluster1">
<value>85.49</value>
<value>91.78</value>
<value>97.56</value>
<value>112.64</value>
<value>116.75</value>
<value>128.44</value>
<value>142.80</value>
<value>154.45</value>
<value>169.96</value>
<value>185.33</value>
<value>211.81</value>
<value>238.82</value>
<value>285.39</value>
<value>321.98</value>
<value>357.27</value>
<value>401.79</value>
<value>445.00</value>
</array>
<array name="cpu.core_speeds.cluster2">
<value>806400</value>
<value>940800</value>
<value>1056000</value>
<value>1171200</value>
<value>1286400</value>
<value>1401600</value>
<value>1497600</value>
<value>1612800</value>
<value>1728000</value>
<value>1843200</value>
<value>1958400</value>
<value>2054400</value>
<value>2169600</value>
<value>2284800</value>
<value>2400000</value>
<value>2515200</value>
<value>2630400</value>
<value>2726400</value>
<value>2822400</value>
<value>2841600</value>
</array>
<array name="cpu.core_power.cluster2">
<value>124.12</value>
<value>138.76</value>
<value>154.78</value>
<value>170.76</value>
<value>184.48</value>
<value>204.09</value>
<value>224.36</value>
<value>246.84</value>
<value>271.87</value>
<value>296.94</value>
<value>342.70</value>
<value>368.80</value>
<value>422.59</value>
<value>468.96</value>
<value>523.99</value>
<value>585.21</value>
<value>664.22</value>
<value>728.44</value>
<value>818.93</value>
<value>832.35</value>
</array>
<!-- Additional power consumption by CPU excluding cluster and core when
running -->
<item name="cpu.active">23.2</item>
<!-- Current when CPU is idle -->
<item name="cpu.idle">8.13</item>
<!-- Power consumption when CPU is suspended -->
<item name="cpu.suspend">0</item>
<!-- This is the battery capacity in mAh (measured at nominal voltage) -->
<item name="battery.capacity">4600</item>
<item name="wifi.on">1.24</item>
<item name="wifi.active">180.37</item>
<item name="wifi.scan">41.25</item>
<item name="dsp.audio">23.43</item>
<item name="dsp.video">78.01</item>
<item name="camera.flashlight">150</item>
<item name="camera.avg">883.04</item>
<item name="gps.on">6.16</item>
<item name="radio.active">465.355</item>
<item name="radio.scanning">27.08</item>
<array name="radio.on">
<value>22.17</value>
<value>8</value>
</array>
<item name="modem.controller.idle">6</item>
<item name="modem.controller.rx">180</item>
<item name="modem.controller.tx">186</item>
<item name="modem.controller.voltage">3700</item>
<!-- Memory bandwidth power values in mA at the rail. There must be one value
for each bucket defined in the device tree. -->
<array name="memory.bandwidths">
<value>17</value>
</array>
<!-- Idle Receive current for wifi radio in mA. 0 by default-->
<item name="wifi.controller.idle">1</item>
<!-- Rx current for wifi radio in mA. 0 by default-->
<item name="wifi.controller.rx">176</item>
<!-- Tx current for wifi radio in mA. 0 by default-->
<item name="wifi.controller.tx">200</item>
<array name="wifi.controller.tx_levels">
<value>1</value>
</array>
<!-- Operating volatage for wifi radio in mV. 0 by default-->
<item name="wifi.controller.voltage">3700</item>
<array name="wifi.batchedscan">
<value>.0001</value>
<value>.001</value>
<value>.01</value>
<value>.1</value>
<value>1</value>
</array>
<item name="bluetooth.active">63.83</item>
<item name="bluetooth.on">0.7</item>
<item name="bluetooth.controller.voltage">3700</item>
</device>

View file

@ -0,0 +1,10 @@
//
// Copyright (C) 2022 The LineageOS Project
//
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "SettingsResZeus",
device_specific: true,
}

View file

@ -0,0 +1,10 @@
<!--
Copyright (C) 2022 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.settings.overlay.zeus">
<overlay android:targetPackage="com.android.settings"
android:isStatic="true"
android:priority="700"/>
</manifest>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2023 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Whether to show peak refresh rate in display settings -->
<bool name="config_show_peak_refresh_rate_switch">true</bool>
<!-- Whether to show min refresh rate in display settings -->
<bool name="config_show_min_refresh_rate_switch">true</bool>
</resources>

View file

@ -0,0 +1,10 @@
//
// Copyright (C) 2023 The LineageOS Project
//
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "SettingsProviderResZeus",
device_specific: true
}

View file

@ -0,0 +1,10 @@
<!--
Copyright (C) 2022 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.providers.settings.overlay.zeus">
<overlay android:targetPackage="com.android.providers.settings"
android:isStatic="true"
android:priority="700"/>
</manifest>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2023 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Default for Settings.Global.DEVICE_NAME $1=MODEL-->
<string name="def_device_name_simple">Xiaomi 12 Pro</string>
</resources>

View file

@ -0,0 +1,10 @@
//
// Copyright (C) 2022 The LineageOS Project
//
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "SystemUIResZeus",
device_specific: true,
}

View file

@ -0,0 +1,10 @@
<!--
Copyright (C) 2022 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.systemui.overlay.zeus">
<overlay android:targetPackage="com.android.systemui"
android:isStatic="true"
android:priority="700"/>
</manifest>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2023 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- The radius of the enrollment progress bar, in dp -->
<integer name="config_udfpsEnrollProgressBar" translatable="false">139</integer>
</resources>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2023 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<dimen name="rounded_corner_content_padding">52.0px</dimen>
</resources>

10
overlay/Wifi/Android.bp Normal file
View file

@ -0,0 +1,10 @@
//
// Copyright (C) 2023 The LineageOS Project
//
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "WifiResZeus",
device_specific: true
}

View file

@ -0,0 +1,11 @@
<!--
Copyright (C) 2022 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.wifi.resources.overlay.zeus">
<overlay android:targetPackage="com.android.wifi.resources"
android:targetName="WifiCustomization"
android:isStatic="true"
android:priority="700"/>
</manifest>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2023 The LineageOS Project
SPDX-License-Identifier: Apache-2.0
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Do not translate. Default access point SSID used for tethering -->
<string name="wifi_tether_configure_ssid_default" translatable="false">Xiaomi 12 Pro</string>
</resources>

2
properties/system.prop Normal file
View file

@ -0,0 +1,2 @@
# Xiaomi
ro.product.mod_device=zeus_global

2
properties/vendor.prop Normal file
View file

@ -0,0 +1,2 @@
# Sensors
ro.vendor.sensors.notifier.light_sensors=5,33171089

1237
proprietary-files.txt Normal file

File diff suppressed because it is too large Load diff

23
proprietary-firmware.txt Normal file
View file

@ -0,0 +1,23 @@
## All proprietary files from this list, unless pinned and noted otherwise,
## are from zeus V816.0.4.0.ULBMIXM
abl.img;AB
aop.img;AB
aop_config.img;AB
bluetooth.img;AB
cpucp.img;AB
devcfg.img;AB
dsp.img;AB
featenabler.img;AB
hyp.img;AB
imagefv.img;AB
keymaster.img;AB
modem.img;AB
qupfw.img;AB
shrm.img;AB
tz.img;AB
uefi.img;AB
uefisecapp.img;AB
xbl.img;AB
xbl_config.img;AB
xbl_ramdump.img;AB

4
sensors/hals.conf Normal file
View file

@ -0,0 +1,4 @@
sensors.ultrasoundproximity.so
sensors.ssc.so
sensors.touch.detect.so
sensors.xiaomi.so

15
setup-makefiles.sh Normal file
View file

@ -0,0 +1,15 @@
#!/bin/bash
#
# Copyright (C) 2016 The CyanogenMod Project
# Copyright (C) 2017-2020 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
set -e
export DEVICE=zeus
export DEVICE_COMMON=sm8450-common
export VENDOR=xiaomi
"./../../${VENDOR}/${DEVICE_COMMON}/setup-makefiles.sh" "$@"

29
tequila_zeus.mk Normal file
View file

@ -0,0 +1,29 @@
#
# Copyright (C) 2022-2024 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
# Inherit from zeus device
$(call inherit-product, device/xiaomi/zeus/device.mk)
# Inherit from common tequila configuration
$(call inherit-product, vendor/tequila/config/common_full_phone.mk)
PRODUCT_NAME := tequila_zeus
PRODUCT_DEVICE := zeus
PRODUCT_MANUFACTURER := Xiaomi
PRODUCT_BRAND := Xiaomi
PRODUCT_MODEL := 2201122G
PRODUCT_SYSTEM_NAME := zeus_global
PRODUCT_SYSTEM_DEVICE := zeus
PRODUCT_BUILD_PROP_OVERRIDES += \
PRIVATE_BUILD_DESC="zeus_global-user 14 UKQ1.230917.001 V816.0.4.0.ULBMIXM release-keys" \
TARGET_DEVICE=$(PRODUCT_SYSTEM_DEVICE) \
TARGET_PRODUCT=$(PRODUCT_SYSTEM_NAME)
BUILD_FINGERPRINT := Xiaomi/zeus_global/zeus:14/UKQ1.230917.001/V816.0.4.0.ULBMIXM:user/release-keys
PRODUCT_GMS_CLIENTID_BASE := android-xiaomi