updating rk3326
This commit is contained in:
parent
816645450b
commit
4c9bf03288
7 changed files with 2273 additions and 883 deletions
|
@ -86,6 +86,10 @@ MaxFPS = 0.000000
|
|||
|
||||
|
||||
[Hotkeys]
|
||||
OpenPauseMenu = SDL-0/RightShoulder & SDL-0/Button2
|
||||
FastForward = SDL-0/RightShoulder & SDL-0/Start
|
||||
LoadSelectedSaveState = SDL-0/RightShoulder & SDL-0/Y
|
||||
SaveSelectedSaveState = SDL-0/RightShoulder & SDL-0/Button5
|
||||
|
||||
|
||||
[Logging]
|
||||
|
@ -227,3 +231,29 @@ DumpVRAMWrites = false
|
|||
DumpVRAMWriteForceAlphaChannel = true
|
||||
DumpVRAMWriteWidthThreshold = 128
|
||||
DumpVRAMWriteHeightThreshold = 128
|
||||
|
||||
|
||||
[Pad1]
|
||||
Up = SDL-0/DPadUp
|
||||
Right = SDL-0/DPadRight
|
||||
Down = SDL-0/DPadDown
|
||||
Left = SDL-0/DPadLeft
|
||||
Triangle = SDL-0/Button2
|
||||
Circle = SDL-0/A
|
||||
Cross = SDL-0/B
|
||||
Square = SDL-0/X
|
||||
Select = SDL-0/RightShoulder
|
||||
Start = SDL-0/LeftShoulder
|
||||
L1 = SDL-0/Y
|
||||
R1 = SDL-0/Button5
|
||||
L2 = SDL-0/Back
|
||||
R2 = SDL-0/Start
|
||||
L3 = SDL-0/Button8
|
||||
R3 = SDL-0/Button9
|
||||
RLeft = SDL-0/-RightY
|
||||
RRight = SDL-0/+RightY
|
||||
RDown = SDL-0/+RightTrigger
|
||||
RUp = SDL-0/+RightTrigger
|
||||
LRight = SDL-0/+LeftTrigger
|
||||
LDown = SDL-0/-RightX
|
||||
LUp = SDL-0/+RightX
|
||||
|
|
|
@ -21,7 +21,7 @@ pre_configure_target() {
|
|||
|
||||
# Fix missing dispmanx
|
||||
case ${DEVICE} in
|
||||
RK35*|S922X*)
|
||||
RK3*|S922X*)
|
||||
PKG_MESON_OPTS_TARGET+=" -Dgl-graphene=disabled"
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -781,9 +781,14 @@
|
|||
<platform>gc</platform>
|
||||
<theme>gc</theme>
|
||||
<emulators>
|
||||
<emulator name="dolphin">
|
||||
<cores>
|
||||
<core default="true">dolphin-sa-gc</core>
|
||||
</cores>
|
||||
</emulator>
|
||||
<emulator name="retroarch">
|
||||
<cores>
|
||||
<core default="true">dolphin</core>
|
||||
<core>dolphin</core>
|
||||
</cores>
|
||||
</emulator>
|
||||
</emulators>
|
||||
|
@ -800,9 +805,14 @@
|
|||
<platform>wii</platform>
|
||||
<theme>wii</theme>
|
||||
<emulators>
|
||||
<emulator name="dolphin">
|
||||
<cores>
|
||||
<core default="true">dolphin-sa-wii</core>
|
||||
</cores>
|
||||
</emulator>
|
||||
<emulator name="retroarch">
|
||||
<cores>
|
||||
<core default="true">dolphin</core>
|
||||
<core>dolphin</core>
|
||||
</cores>
|
||||
</emulator>
|
||||
</emulators>
|
||||
|
@ -1188,6 +1198,13 @@
|
|||
<core>mupen64plus_next</core>
|
||||
</cores>
|
||||
</emulator>
|
||||
<emulator name="mupen64plus-sa">
|
||||
<cores>
|
||||
<core>m64p_gliden64</core>
|
||||
<core>m64p_gl64mk2</core>
|
||||
<core>m64p_rice</core>
|
||||
</cores>
|
||||
</emulator>
|
||||
</emulators>
|
||||
</system>
|
||||
<system>
|
||||
|
|
|
@ -56,9 +56,10 @@ case "${DEVICE}" in
|
|||
PKG_RETROARCH+=" retropie-shaders"
|
||||
;;
|
||||
RK3326*)
|
||||
[ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="box86 flycast-lr pcsx_rearmed-lr"
|
||||
PKG_DEPENDS_TARGET+=" common-shaders glsl-shaders mupen64plus-sa box64"
|
||||
[ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="flycast-lr pcsx_rearmed-lr"
|
||||
PKG_DEPENDS_TARGET+=" common-shaders glsl-shaders mupen64plus-sa"
|
||||
PKG_EMUS+=" drastic-sa yabasanshiro-sa"
|
||||
LIBRETRO_CORES+=" flycast-lr"
|
||||
PKG_RETROARCH+=" retropie-shaders"
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
TRUST_LABEL="trust"
|
||||
PARTITION_TABLE="msdos"
|
||||
DEVICE_DTB=("rk3326-anbernic-rg351m")
|
||||
# DEVICE_DTB=("rk3326-anbernic-rg351m" "rk3326-odroid-go2" "rk3326-odroid-go2-v11" "rk3326-odroid-go3")
|
||||
UBOOT_DTB="${DEVICE_DTB[0]}"
|
||||
UBOOT_CONFIG="odroidgoa_defconfig"
|
||||
PKG_SOC="px30"
|
||||
|
@ -45,7 +46,8 @@
|
|||
# Additional kernel make parameters (for example to specify the u-boot loadaddress)
|
||||
KERNEL_MAKE_EXTRACMD=""
|
||||
KERNEL_MAKE_EXTRACMD+=" rockchip/${DEVICE_DTB[0]}.dtb"
|
||||
|
||||
# KERNEL_MAKE_EXTRACMD=" $(for DTB in "${DEVICE_DTB[@]}"; do echo -n "rockchip/${DTB}.dtb "; done)"
|
||||
|
||||
# Define the CPU
|
||||
HW_CPU="Rockchip RK3326"
|
||||
|
||||
|
@ -72,7 +74,7 @@
|
|||
EXTRA_CMDLINE="quiet rootwait console=tty0 fbcon=rotate:3 ssh consoleblank=0 systemd.show_status=0 loglevel=0 panic=20"
|
||||
|
||||
# additional packages to install
|
||||
# ADDITIONAL_PACKAGES=""
|
||||
ADDITIONAL_PACKAGES="qt5"
|
||||
|
||||
# additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware)
|
||||
# Space separated list is supported,
|
||||
|
|
|
@ -1,876 +0,0 @@
|
|||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boot/dts/rockchip/Makefile
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2023-05-03 14:42:23.066515560 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/Makefile 2023-05-03 14:41:23.720701298 +0000
|
||||
@@ -7,6 +7,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-ev
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb
|
||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1.dtb
|
||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts 2023-05-03 14:41:23.720701298 +0000
|
||||
@@ -0,0 +1,35 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright (c) 2019 Hardkernel Co., Ltd
|
||||
+ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH
|
||||
+ * Copyright (c) 2022 Maya Matuszczyk <maccraft123mc@gmail.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include "rk3326-odroid-go.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Anbernic RG351M";
|
||||
+ compatible = "anbernic,rg351m", "rockchip,rk3326";
|
||||
+
|
||||
+ vibrator {
|
||||
+ compatible = "pwm-vibrator";
|
||||
+ pwms = <&pwm0 0 1000000 0>;
|
||||
+ pwm-names = "enable";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/delete-node/ &builtin_gamepad;
|
||||
+/delete-node/ &vcc_host; /* conflicts with pwm vibration motor */
|
||||
+
|
||||
+&internal_display {
|
||||
+ compatible = "elida,kd35t133";
|
||||
+ iovcc-supply = <&vcc_lcd>;
|
||||
+ vdd-supply = <&vcc_lcd>;
|
||||
+};
|
||||
+
|
||||
+&pwm0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+/delete-node/ &rk817_charger;
|
||||
diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi
|
||||
--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi 2023-05-04 03:11:28.255229572 +0000
|
||||
@@ -0,0 +1,649 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright (c) 2019 Hardkernel Co., Ltd
|
||||
+ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH
|
||||
+ * Copyright (c) 2022 Maya Matuszczyk <maccraft123mc@gmail.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+#include <dt-bindings/pinctrl/rockchip.h>
|
||||
+#include "rk3326.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ aliases {
|
||||
+ mmc0 = &sdmmc;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial2:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ backlight: backlight {
|
||||
+ compatible = "pwm-backlight";
|
||||
+ power-supply = <&vcc_bl>;
|
||||
+ pwms = <&pwm1 0 25000 0>;
|
||||
+ brightness-levels = <
|
||||
+ 0 1 2 3 4 5 6 7
|
||||
+ 8 9 10 11 12 13 14 15
|
||||
+ 16 17 18 19 20 21 22 23
|
||||
+ 24 25 26 27 28 29 30 31
|
||||
+ 32 33 34 35 36 37 38 39
|
||||
+ 40 41 42 43 44 45 46 47
|
||||
+ 48 49 50 51 52 53 54 55
|
||||
+ 56 57 58 59 60 61 62 63
|
||||
+ 64 65 66 67 68 69 70 71
|
||||
+ 72 73 74 75 76 77 78 79
|
||||
+ 80 81 82 83 84 85 86 87
|
||||
+ 88 89 90 91 92 93 94 95
|
||||
+ 96 97 98 99 100 101 102 103
|
||||
+ 104 105 106 107 108 109 110 111
|
||||
+ 112 113 114 115 116 117 118 119
|
||||
+ 120 121 122 123 124 125 126 127
|
||||
+ 128 129 130 131 132 133 134 135
|
||||
+ 136 137 138 139 140 141 142 143
|
||||
+ 144 145 146 147 148 149 150 151
|
||||
+ 152 153 154 155 156 157 158 159
|
||||
+ 160 161 162 163 164 165 166 167
|
||||
+ 168 169 170 171 172 173 174 175
|
||||
+ 176 177 178 179 180 181 182 183
|
||||
+ 184 185 186 187 188 189 190 191
|
||||
+ 192 193 194 195 196 197 198 199
|
||||
+ 200 201 202 203 204 205 206 207
|
||||
+ 208 209 210 211 212 213 214 215
|
||||
+ 216 217 218 219 220 221 222 223
|
||||
+ 224 225 226 227 228 229 230 231
|
||||
+ 232 233 234 235 236 237 238 239
|
||||
+ 240 241 242 243 244 245 246 247
|
||||
+ 248 249 250 251 252 253 254 255>;
|
||||
+ default-brightness-level = <128>;
|
||||
+ };
|
||||
+
|
||||
+ builtin_gamepad: gpio-keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&btn_pins>;
|
||||
+
|
||||
+ button-sw1 {
|
||||
+ gpios = <&gpio1 RK_PB4 GPIO_ACTIVE_LOW>;
|
||||
+ label = "DPAD-UP";
|
||||
+ linux,code = <BTN_DPAD_UP>;
|
||||
+ };
|
||||
+ button-sw2 {
|
||||
+ gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_LOW>;
|
||||
+ label = "DPAD-DOWN";
|
||||
+ linux,code = <BTN_DPAD_DOWN>;
|
||||
+ };
|
||||
+ button-sw3 {
|
||||
+ gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>;
|
||||
+ label = "DPAD-LEFT";
|
||||
+ linux,code = <BTN_DPAD_LEFT>;
|
||||
+ };
|
||||
+ button-sw4 {
|
||||
+ gpios = <&gpio1 RK_PB7 GPIO_ACTIVE_LOW>;
|
||||
+ label = "DPAD-RIGHT";
|
||||
+ linux,code = <BTN_DPAD_RIGHT>;
|
||||
+ };
|
||||
+ button-sw5 {
|
||||
+ gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_LOW>;
|
||||
+ label = "BTN-A";
|
||||
+ linux,code = <BTN_EAST>;
|
||||
+ };
|
||||
+ button-sw6 {
|
||||
+ gpios = <&gpio1 RK_PA5 GPIO_ACTIVE_LOW>;
|
||||
+ label = "BTN-B";
|
||||
+ linux,code = <BTN_SOUTH>;
|
||||
+ };
|
||||
+ button-sw7 {
|
||||
+ gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>;
|
||||
+ label = "BTN-Y";
|
||||
+ linux,code = <BTN_WEST>;
|
||||
+ };
|
||||
+ button-sw8 {
|
||||
+ gpios = <&gpio1 RK_PA7 GPIO_ACTIVE_LOW>;
|
||||
+ label = "BTN-X";
|
||||
+ linux,code = <BTN_NORTH>;
|
||||
+ };
|
||||
+ btn_f1: button-sw9 {
|
||||
+ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>;
|
||||
+ label = "F1";
|
||||
+ linux,code = <BTN_TRIGGER_HAPPY1>;
|
||||
+ };
|
||||
+ btn_f2: button-sw10 {
|
||||
+ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>;
|
||||
+ label = "F2";
|
||||
+ linux,code = <BTN_TRIGGER_HAPPY2>;
|
||||
+ };
|
||||
+ btn_f3: button-sw11 {
|
||||
+ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
|
||||
+ label = "F3";
|
||||
+ linux,code = <BTN_TRIGGER_HAPPY3>;
|
||||
+ };
|
||||
+ btn_f4: button-sw12 {
|
||||
+ gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_LOW>;
|
||||
+ label = "F4";
|
||||
+ linux,code = <BTN_TRIGGER_HAPPY4>;
|
||||
+ };
|
||||
+ btn_f5: button-sw13 {
|
||||
+ gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_LOW>;
|
||||
+ label = "F5";
|
||||
+ linux,code = <BTN_TRIGGER_HAPPY5>;
|
||||
+ };
|
||||
+ btn_f6: button-sw14 {
|
||||
+ gpios = <&gpio2 RK_PA5 GPIO_ACTIVE_LOW>;
|
||||
+ label = "F6";
|
||||
+ linux,code = <BTN_TRIGGER_HAPPY6>;
|
||||
+ };
|
||||
+ button-sw15 {
|
||||
+ gpios = <&gpio2 RK_PA6 GPIO_ACTIVE_LOW>;
|
||||
+ label = "TOP-LEFT";
|
||||
+ linux,code = <BTN_TL>;
|
||||
+ };
|
||||
+ button-sw16 {
|
||||
+ gpios = <&gpio2 RK_PA7 GPIO_ACTIVE_LOW>;
|
||||
+ label = "TOP-RIGHT";
|
||||
+ linux,code = <BTN_TR>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ /* led-1 is wired directly to output of always-on regulator */
|
||||
+
|
||||
+ gpio_led: gpio-leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&red_led_pin>;
|
||||
+
|
||||
+ red_led: led-3 {
|
||||
+ color = <LED_COLOR_ID_RED>;
|
||||
+ gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
||||
+ function = LED_FUNCTION_CHARGING;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ pwm_led: led-controller {
|
||||
+ compatible = "pwm-leds";
|
||||
+
|
||||
+ blue_led: led-2 {
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ function = LED_FUNCTION_STATUS;
|
||||
+ linux,default-trigger = "heartbeat";
|
||||
+ max-brightness = <255>;
|
||||
+ pwms = <&pwm3 0 25000 0>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ rk817-sound {
|
||||
+ compatible = "simple-audio-card";
|
||||
+ simple-audio-card,name = "rk817_int";
|
||||
+ simple-audio-card,format = "i2s";
|
||||
+ simple-audio-card,hp-det-gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>;
|
||||
+ simple-audio-card,mclk-fs = <256>;
|
||||
+ simple-audio-card,widgets =
|
||||
+ "Microphone", "Mic Jack",
|
||||
+ "Headphone", "Headphones",
|
||||
+ "Speaker", "Speaker";
|
||||
+ simple-audio-card,routing =
|
||||
+ "MICL", "Mic Jack",
|
||||
+ "Headphones", "HPOL",
|
||||
+ "Headphones", "HPOR",
|
||||
+ "Speaker", "SPKO";
|
||||
+
|
||||
+ simple-audio-card,codec {
|
||||
+ sound-dai = <&rk817>;
|
||||
+ };
|
||||
+
|
||||
+ simple-audio-card,cpu {
|
||||
+ sound-dai = <&i2s1_2ch>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vccsys: vccsys {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc3v8_sys";
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <3800000>;
|
||||
+ regulator-max-microvolt = <3800000>;
|
||||
+ };
|
||||
+
|
||||
+ vcc_host: vcc_host {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc_host";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+
|
||||
+ gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
|
||||
+ enable-active-high;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ vin-supply = <&usb_midu>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&cpu0 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
+
|
||||
+&cpu1 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
+
|
||||
+&cpu2 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
+
|
||||
+&cpu3 {
|
||||
+ cpu-supply = <&vdd_arm>;
|
||||
+};
|
||||
+
|
||||
+&cru {
|
||||
+ assigned-clocks = <&cru PLL_NPLL>,
|
||||
+ <&cru ACLK_BUS_PRE>, <&cru ACLK_PERI_PRE>,
|
||||
+ <&cru HCLK_BUS_PRE>, <&cru HCLK_PERI_PRE>,
|
||||
+ <&cru PCLK_BUS_PRE>, <&cru SCLK_GPU>;
|
||||
+
|
||||
+ assigned-clock-rates = <1188000000>,
|
||||
+ <200000000>, <200000000>,
|
||||
+ <150000000>, <150000000>,
|
||||
+ <100000000>, <200000000>;
|
||||
+};
|
||||
+
|
||||
+&display_subsystem {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&dsi {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ports {
|
||||
+ mipi_out: port@1 {
|
||||
+ reg = <1>;
|
||||
+
|
||||
+ mipi_out_panel: endpoint {
|
||||
+ remote-endpoint = <&mipi_in_panel>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ internal_display: panel@0 {
|
||||
+ reg = <0>;
|
||||
+ backlight = <&backlight>;
|
||||
+ reset-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>;
|
||||
+ rotation = <270>;
|
||||
+
|
||||
+ port {
|
||||
+ mipi_in_panel: endpoint {
|
||||
+ remote-endpoint = <&mipi_out_panel>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&dsi_dphy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpu {
|
||||
+ mali-supply = <&vdd_logic>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&i2c0 {
|
||||
+ clock-frequency = <400000>;
|
||||
+ i2c-scl-falling-time-ns = <16>;
|
||||
+ i2c-scl-rising-time-ns = <280>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ rk817: pmic@20 {
|
||||
+ compatible = "rockchip,rk817";
|
||||
+ reg = <0x20>;
|
||||
+ interrupt-parent = <&gpio0>;
|
||||
+ interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ clock-output-names = "rk808-clkout1", "xin32k";
|
||||
+ clock-names = "mclk";
|
||||
+ clocks = <&cru SCLK_I2S1_OUT>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>;
|
||||
+ wakeup-source;
|
||||
+ #clock-cells = <1>;
|
||||
+ #sound-dai-cells = <0>;
|
||||
+
|
||||
+ vcc1-supply = <&vccsys>;
|
||||
+ vcc2-supply = <&vccsys>;
|
||||
+ vcc3-supply = <&vccsys>;
|
||||
+ vcc4-supply = <&vccsys>;
|
||||
+ vcc5-supply = <&vccsys>;
|
||||
+ vcc6-supply = <&vccsys>;
|
||||
+ vcc7-supply = <&vccsys>;
|
||||
+ vcc8-supply = <&vccsys>;
|
||||
+
|
||||
+ regulators {
|
||||
+ vdd_logic: DCDC_REG1 {
|
||||
+ regulator-name = "vdd_logic";
|
||||
+ regulator-min-microvolt = <950000>;
|
||||
+ regulator-max-microvolt = <1150000>;
|
||||
+ regulator-ramp-delay = <6001>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <950000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_arm: DCDC_REG2 {
|
||||
+ regulator-name = "vdd_arm";
|
||||
+ regulator-min-microvolt = <950000>;
|
||||
+ regulator-max-microvolt = <1350000>;
|
||||
+ regulator-ramp-delay = <6001>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ regulator-suspend-microvolt = <950000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_ddr: DCDC_REG3 {
|
||||
+ regulator-name = "vcc_ddr";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_3v3: DCDC_REG4 {
|
||||
+ regulator-name = "vcc_3v3";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_1v8: LDO_REG2 {
|
||||
+ regulator-name = "vcc_1v8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1800000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vdd_1v0: LDO_REG3 {
|
||||
+ regulator-name = "vdd_1v0";
|
||||
+ regulator-min-microvolt = <1000000>;
|
||||
+ regulator-max-microvolt = <1000000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <1000000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc3v3_pmu: LDO_REG4 {
|
||||
+ regulator-name = "vcc3v3_pmu";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vccio_sd: LDO_REG5 {
|
||||
+ regulator-name = "vccio_sd";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_sd: LDO_REG6 {
|
||||
+ regulator-name = "vcc_sd";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_bl: LDO_REG7 {
|
||||
+ regulator-name = "vcc_bl";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_lcd: LDO_REG8 {
|
||||
+ regulator-name = "vcc_lcd";
|
||||
+ regulator-min-microvolt = <2800000>;
|
||||
+ regulator-max-microvolt = <2800000>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ regulator-suspend-microvolt = <2800000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ LDO_REG9 {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+
|
||||
+ usb_midu: BOOST {
|
||||
+ regulator-name = "usb_midu";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5400000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ rk817_charger: charger {
|
||||
+ rockchip,resistor-sense-micro-ohms = <10000>;
|
||||
+ rockchip,sleep-enter-current-microamp = <300000>;
|
||||
+ rockchip,sleep-filter-current-microamp = <100000>;
|
||||
+ };
|
||||
+
|
||||
+ rk817_codec: codec {
|
||||
+ rockchip,mic-in-differential;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/* EXT Header(P2): 7(SCL:GPIO0.C2), 8(SDA:GPIO0.C3) */
|
||||
+&i2c1 {
|
||||
+ clock-frequency = <400000>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+/* I2S 1 Channel Used */
|
||||
+&i2s1_2ch {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&io_domains {
|
||||
+ vccio1-supply = <&vcc_3v3>;
|
||||
+ vccio2-supply = <&vccio_sd>;
|
||||
+ vccio3-supply = <&vcc_3v3>;
|
||||
+ vccio4-supply = <&vcc_3v3>;
|
||||
+ vccio5-supply = <&vcc_3v3>;
|
||||
+ vccio6-supply = <&vcc_3v3>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pmu_io_domains {
|
||||
+ pmuio1-supply = <&vcc3v3_pmu>;
|
||||
+ pmuio2-supply = <&vcc3v3_pmu>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pwm1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pwm3 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&saradc {
|
||||
+ vref-supply = <&vcc_1v8>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sdmmc {
|
||||
+ cap-sd-highspeed;
|
||||
+ card-detect-delay = <200>;
|
||||
+ cd-gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_LOW>; /*[> CD GPIO <]*/
|
||||
+ sd-uhs-sdr12;
|
||||
+ sd-uhs-sdr25;
|
||||
+ sd-uhs-sdr50;
|
||||
+ sd-uhs-sdr104;
|
||||
+ vmmc-supply = <&vcc_sd>;
|
||||
+ vqmmc-supply = <&vccio_sd>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sfc {
|
||||
+ pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus2>;
|
||||
+ pinctrl-names = "default";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ flash@0 {
|
||||
+ compatible = "jedec,spi-nor";
|
||||
+ reg = <0>;
|
||||
+ spi-max-frequency = <108000000>;
|
||||
+ spi-rx-bus-width = <2>;
|
||||
+ spi-tx-bus-width = <1>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&tsadc {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&u2phy {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ u2phy_host: host-port {
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+
|
||||
+ u2phy_otg: otg-port {
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&usb20_otg {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+/* EXT Header(P2): 2(RXD:GPIO1.C0),3(TXD:.C1),4(CTS:.C2),5(RTS:.C3) */
|
||||
+&uart1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart1_xfer &uart1_cts>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart2 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart2m1_xfer>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vopb {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&vopb_mmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ btns {
|
||||
+ btn_pins: btn-pins {
|
||||
+ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <2 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <2 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>,
|
||||
+ <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ headphone {
|
||||
+ hp_det: hp-det {
|
||||
+ rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ red_led_pin: red-led-pin {
|
||||
+ rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ pmic {
|
||||
+ dc_det: dc-det {
|
||||
+ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ pmic_int: pmic-int {
|
||||
+ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
+ };
|
||||
+
|
||||
+ soc_slppin_gpio: soc_slppin_gpio {
|
||||
+ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>;
|
||||
+ };
|
||||
+
|
||||
+ soc_slppin_rst: soc_slppin_rst {
|
||||
+ rockchip,pins = <0 RK_PA4 2 &pcfg_pull_none>;
|
||||
+ };
|
||||
+
|
||||
+ soc_slppin_slp: soc_slppin_slp {
|
||||
+ rockchip,pins = <0 RK_PA4 1 &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
diff -rupN linux.orig/drivers/gpu/drm/panel/panel-elida-kd35t133.c linux/drivers/gpu/drm/panel/panel-elida-kd35t133.c
|
||||
--- linux.orig/drivers/gpu/drm/panel/panel-elida-kd35t133.c 2023-05-03 14:42:23.562530712 +0000
|
||||
+++ linux/drivers/gpu/drm/panel/panel-elida-kd35t133.c 2023-05-04 03:07:57.368642560 +0000
|
||||
@@ -51,14 +51,6 @@ static inline struct kd35t133 *panel_to_
|
||||
return container_of(panel, struct kd35t133, panel);
|
||||
}
|
||||
|
||||
-#define dsi_dcs_write_seq(dsi, cmd, seq...) do { \
|
||||
- static const u8 b[] = { cmd, seq }; \
|
||||
- int ret; \
|
||||
- ret = mipi_dsi_dcs_write_buffer(dsi, b, ARRAY_SIZE(b)); \
|
||||
- if (ret < 0) \
|
||||
- return ret; \
|
||||
- } while (0)
|
||||
-
|
||||
static int kd35t133_init_sequence(struct kd35t133 *ctx)
|
||||
{
|
||||
struct mipi_dsi_device *dsi = to_mipi_dsi_device(ctx->dev);
|
||||
@@ -68,25 +60,25 @@ static int kd35t133_init_sequence(struct
|
||||
* Init sequence was supplied by the panel vendor with minimal
|
||||
* documentation.
|
||||
*/
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_POSITIVEGAMMA,
|
||||
- 0x00, 0x13, 0x18, 0x04, 0x0f, 0x06, 0x3a, 0x56,
|
||||
- 0x4d, 0x03, 0x0a, 0x06, 0x30, 0x3e, 0x0f);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_NEGATIVEGAMMA,
|
||||
- 0x00, 0x13, 0x18, 0x01, 0x11, 0x06, 0x38, 0x34,
|
||||
- 0x4d, 0x06, 0x0d, 0x0b, 0x31, 0x37, 0x0f);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_POWERCONTROL1, 0x18, 0x17);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_POWERCONTROL2, 0x41);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_VCOMCONTROL, 0x00, 0x1a, 0x80);
|
||||
- dsi_dcs_write_seq(dsi, MIPI_DCS_SET_ADDRESS_MODE, 0x48);
|
||||
- dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PIXEL_FORMAT, 0x55);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_INTERFACEMODECTRL, 0x00);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_FRAMERATECTRL, 0xa0);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_DISPLAYINVERSIONCTRL, 0x02);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_DISPLAYFUNCTIONCTRL,
|
||||
- 0x20, 0x02);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_SETIMAGEFUNCTION, 0x00);
|
||||
- dsi_dcs_write_seq(dsi, KD35T133_CMD_ADJUSTCONTROL3,
|
||||
- 0xa9, 0x51, 0x2c, 0x82);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_POSITIVEGAMMA,
|
||||
+ 0x00, 0x13, 0x18, 0x04, 0x0f, 0x06, 0x3a, 0x56,
|
||||
+ 0x4d, 0x03, 0x0a, 0x06, 0x30, 0x3e, 0x0f);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_NEGATIVEGAMMA,
|
||||
+ 0x00, 0x13, 0x18, 0x01, 0x11, 0x06, 0x38, 0x34,
|
||||
+ 0x4d, 0x06, 0x0d, 0x0b, 0x31, 0x37, 0x0f);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_POWERCONTROL1, 0x18, 0x17);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_POWERCONTROL2, 0x41);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_VCOMCONTROL, 0x00, 0x1a, 0x80);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_ADDRESS_MODE, 0x48);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_PIXEL_FORMAT, 0x55);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_INTERFACEMODECTRL, 0x00);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_FRAMERATECTRL, 0xa0);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_DISPLAYINVERSIONCTRL, 0x02);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_DISPLAYFUNCTIONCTRL,
|
||||
+ 0x20, 0x02);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_SETIMAGEFUNCTION, 0x00);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, KD35T133_CMD_ADJUSTCONTROL3,
|
||||
+ 0xa9, 0x51, 0x2c, 0x82);
|
||||
mipi_dsi_dcs_write(dsi, MIPI_DCS_ENTER_INVERT_MODE, NULL, 0);
|
||||
|
||||
dev_dbg(dev, "Panel init sequence done\n");
|
||||
diff -rupN linux.orig/drivers/power/supply/rk817_charger.c linux/drivers/power/supply/rk817_charger.c
|
||||
--- linux.orig/drivers/power/supply/rk817_charger.c 2023-05-03 14:42:23.890540732 +0000
|
||||
+++ linux/drivers/power/supply/rk817_charger.c 2023-05-03 23:49:27.833647481 +0000
|
||||
@@ -335,6 +335,20 @@ static int rk817_bat_calib_cap(struct rk
|
||||
charger->fcc_mah * 1000);
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * Set the SOC to 0 if we are below the minimum system voltage.
|
||||
+ */
|
||||
+ if (volt_avg <= charger->bat_voltage_min_design_uv) {
|
||||
+ charger->soc = 0;
|
||||
+ charge_now_adc = CHARGE_TO_ADC(0, charger->res_div);
|
||||
+ put_unaligned_be32(charge_now_adc, bulk_reg);
|
||||
+ regmap_bulk_write(rk808->regmap,
|
||||
+ RK817_GAS_GAUGE_Q_INIT_H3, bulk_reg, 4);
|
||||
+ dev_warn(charger->dev,
|
||||
+ "Battery voltage %d below minimum voltage %d\n",
|
||||
+ volt_avg, charger->bat_voltage_min_design_uv);
|
||||
+ }
|
||||
+
|
||||
rk817_record_battery_nvram_values(charger);
|
||||
|
||||
return 0;
|
||||
@@ -665,7 +679,7 @@ static enum power_supply_usb_type rk817_
|
||||
};
|
||||
|
||||
static const struct power_supply_desc rk817_bat_desc = {
|
||||
- .name = "rk817-battery",
|
||||
+ .name = "battery",
|
||||
.type = POWER_SUPPLY_TYPE_BATTERY,
|
||||
.properties = rk817_bat_props,
|
||||
.num_properties = ARRAY_SIZE(rk817_bat_props),
|
||||
@@ -710,9 +724,10 @@ static int rk817_read_battery_nvram_valu
|
||||
|
||||
/*
|
||||
* Read the nvram for state of charge. Sanity check for values greater
|
||||
- * than 100 (10000). If the value is off it should get corrected
|
||||
- * automatically when the voltage drops to the min (soc is 0) or when
|
||||
- * the battery is full (soc is 100).
|
||||
+ * than 100 (10000) or less than 0, because other things (BSP kernels,
|
||||
+ * U-Boot, or even i2cset) can write to this register. If the value is
|
||||
+ * off it should get corrected automatically when the voltage drops to
|
||||
+ * the min (soc is 0) or when the battery is full (soc is 100).
|
||||
*/
|
||||
ret = regmap_bulk_read(charger->rk808->regmap,
|
||||
RK817_GAS_GAUGE_BAT_R1, bulk_reg, 3);
|
||||
@@ -721,6 +736,8 @@ static int rk817_read_battery_nvram_valu
|
||||
charger->soc = get_unaligned_le24(bulk_reg);
|
||||
if (charger->soc > 10000)
|
||||
charger->soc = 10000;
|
||||
+ if (charger->soc < 0)
|
||||
+ charger->soc = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -731,8 +748,8 @@ rk817_read_or_set_full_charge_on_boot(st
|
||||
{
|
||||
struct rk808 *rk808 = charger->rk808;
|
||||
u8 bulk_reg[4];
|
||||
- u32 boot_voltage, boot_charge_mah, tmp;
|
||||
- int ret, reg, off_time;
|
||||
+ u32 boot_voltage, boot_charge_mah;
|
||||
+ int ret, reg, off_time, tmp;
|
||||
bool first_boot;
|
||||
|
||||
/*
|
||||
@@ -785,10 +802,12 @@ rk817_read_or_set_full_charge_on_boot(st
|
||||
regmap_bulk_read(rk808->regmap, RK817_GAS_GAUGE_Q_PRES_H3,
|
||||
bulk_reg, 4);
|
||||
tmp = get_unaligned_be32(bulk_reg);
|
||||
+ if (tmp < 0)
|
||||
+ tmp = 0;
|
||||
boot_charge_mah = ADC_TO_CHARGE_UAH(tmp,
|
||||
charger->res_div) / 1000;
|
||||
/*
|
||||
- * Check if the columb counter has been off for more than 300
|
||||
+ * Check if the columb counter has been off for more than 30
|
||||
* minutes as it tends to drift downward. If so, re-init soc
|
||||
* with the boot voltage instead. Note the unit values for the
|
||||
* OFF_CNT register appear to be in decaminutes and stops
|
||||
@@ -799,7 +818,7 @@ rk817_read_or_set_full_charge_on_boot(st
|
||||
* than 0 on a reboot anyway.
|
||||
*/
|
||||
regmap_read(rk808->regmap, RK817_GAS_GAUGE_OFF_CNT, &off_time);
|
||||
- if (off_time >= 30) {
|
||||
+ if (off_time >= 3) {
|
||||
regmap_bulk_read(rk808->regmap,
|
||||
RK817_GAS_GAUGE_PWRON_VOL_H,
|
||||
bulk_reg, 2);
|
||||
@@ -816,19 +835,6 @@ rk817_read_or_set_full_charge_on_boot(st
|
||||
}
|
||||
}
|
||||
|
||||
- regmap_bulk_read(rk808->regmap, RK817_GAS_GAUGE_PWRON_VOL_H,
|
||||
- bulk_reg, 2);
|
||||
- tmp = get_unaligned_be16(bulk_reg);
|
||||
- boot_voltage = (charger->voltage_k * tmp) + 1000 * charger->voltage_b;
|
||||
- regmap_bulk_read(rk808->regmap, RK817_GAS_GAUGE_Q_PRES_H3,
|
||||
- bulk_reg, 4);
|
||||
- tmp = get_unaligned_be32(bulk_reg);
|
||||
- boot_charge_mah = ADC_TO_CHARGE_UAH(tmp, charger->res_div) / 1000;
|
||||
- regmap_bulk_read(rk808->regmap, RK817_GAS_GAUGE_OCV_VOL_H,
|
||||
- bulk_reg, 2);
|
||||
- tmp = get_unaligned_be16(bulk_reg);
|
||||
- boot_voltage = (charger->voltage_k * tmp) + 1000 * charger->voltage_b;
|
||||
-
|
||||
/*
|
||||
* Now we have our full charge capacity and soc, init the columb
|
||||
* counter.
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue