ingres: overlay: Import power_profile from OS2.0.5.0.ULJCNXM
diff --git a/device.mk b/device.mk
index 1f054b8..33a6a8d 100644
--- a/device.mk
+++ b/device.mk
@@ -13,7 +13,8 @@
# Overlay
PRODUCT_PACKAGES += \
SettingsProviderResIngres \
- WifiResIngres
+ WifiResIngres \
+ FrameworksResIngres
# Soong namespaces
PRODUCT_SOONG_NAMESPACES += \
diff --git a/overlay/Frameworks/Android.bp b/overlay/Frameworks/Android.bp
new file mode 100644
index 0000000..e08d2b9
--- /dev/null
+++ b/overlay/Frameworks/Android.bp
@@ -0,0 +1,10 @@
+//
+// Copyright (C) 2025 The LineageOS Project
+//
+// SPDX-License-Identifier: Apache-2.0
+//
+
+runtime_resource_overlay {
+ name: "FrameworksResIngres",
+ device_specific: true,
+}
diff --git a/overlay/Frameworks/AndroidManifest.xml b/overlay/Frameworks/AndroidManifest.xml
new file mode 100644
index 0000000..04caebc
--- /dev/null
+++ b/overlay/Frameworks/AndroidManifest.xml
@@ -0,0 +1,10 @@
+<!--
+ Copyright (C) 2025 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="android.overlay.ingres">
+ <overlay android:targetPackage="android"
+ android:isStatic="true"
+ android:priority="700"/>
+</manifest>
diff --git a/overlay/Frameworks/res/values/config.xml b/overlay/Frameworks/res/values/config.xml
new file mode 100644
index 0000000..3fab709
--- /dev/null
+++ b/overlay/Frameworks/res/values/config.xml
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2025 The LineageOS Project
+ SPDX-License-Identifier: Apache-2.0
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- 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>
+ <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>
+
+ <!-- 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 38 68 a 38,38 0 0 0 -76,0 a 38,38 0 0 0 76,0</string>
+
+ <!-- Like config_mainBuiltInDisplayCutout, but this path is used to report the
+ one single bounding rect per device edge to the app via
+ {@link DisplayCutout#getBoundingRect}. Note that this path should try to match the visual
+ appearance of the cutout as much as possible, and may be smaller than
+ config_mainBuiltInDisplayCutout
+ -->
+ <string name="config_mainBuiltInDisplayCutoutRectApproximation" translatable="false">M 46,0 V 136 H -46 V 0 Z</string>
+
+ <!-- Whether the display cutout region of the main built-in display should be forced to
+ black in software (to avoid aliasing or emulate a cutout that is not physically existent).
+ -->
+ <bool name="config_fillMainBuiltInDisplayCutout">true</bool>
+</resources>
diff --git a/overlay/Frameworks/res/values/dimens.xml b/overlay/Frameworks/res/values/dimens.xml
new file mode 100644
index 0000000..cbfeaca
--- /dev/null
+++ b/overlay/Frameworks/res/values/dimens.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2025 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>
diff --git a/overlay/Frameworks/res/xml/power_profile.xml b/overlay/Frameworks/res/xml/power_profile.xml
new file mode 100644
index 0000000..f95fbc4
--- /dev/null
+++ b/overlay/Frameworks/res/xml/power_profile.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2025 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">88.36</item>
+
+ <!-- Additional power used when screen is at maximum brightness, compared to
+ screen at minimum brightness -->
+ <item name="screen.full">421.44</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>60.4</value>
+ <value>60.16</value>
+ <value>61.52</value>
+ <value>62.98</value>
+ <value>64.72</value>
+ <value>67.96</value>
+ <value>70.34</value>
+ <value>74.8</value>
+ <value>80.8</value>
+ <value>82.2</value>
+ <value>88</value>
+ <value>93.06</value>
+ <value>98.84</value>
+ <value>103.48</value>
+ <value>111.48</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>79.16</value>
+ <value>89.5</value>
+ <value>98.7</value>
+ <value>108.7</value>
+ <value>118.16</value>
+ <value>128.74</value>
+ <value>142.38</value>
+ <value>155.82</value>
+ <value>173.82</value>
+ <value>189.78</value>
+ <value>218.52</value>
+ <value>241.16</value>
+ <value>288.52</value>
+ <value>325.84</value>
+ <value>365.68</value>
+ <value>409.62</value>
+ <value>440.62</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>122.88</value>
+ <value>135.68</value>
+ <value>152.3</value>
+ <value>168.18</value>
+ <value>182.9</value>
+ <value>202.68</value>
+ <value>218.98</value>
+ <value>238.12</value>
+ <value>261.82</value>
+ <value>281.76</value>
+ <value>326.38</value>
+ <value>349</value>
+ <value>398.58</value>
+ <value>442.82</value>
+ <value>493.68</value>
+ <value>553.68</value>
+ <value>615.84</value>
+ <value>675.44</value>
+ <value>759.04</value>
+ <value>770.88</value>
+ </array>
+
+ <!-- Additional power consumption by CPU excluding cluster and core when
+ running -->
+ <item name="cpu.active">23.28</item>
+
+ <!-- Current when CPU is idle -->
+ <item name="cpu.idle">7.64</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">4700</item>
+ <item name="wifi.on">2.98</item>
+ <item name="wifi.active">301.42</item>
+ <item name="wifi.scan">50.06</item>
+ <item name="dsp.audio">45.98</item>
+ <item name="dsp.video">75.8</item>
+ <item name="camera.flashlight">162.26</item>
+ <item name="camera.avg">213.44</item>
+ <item name="gps.on">69.2</item>
+ <item name="radio.active">245.38</item>
+ <item name="radio.scanning">98.86</item>
+ <array name="radio.on">
+ <value>4.66</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">11.38</item>
+ <item name="bluetooth.on">2.48</item>
+ <item name="bluetooth.controller.voltage">3700</item>
+</device>