Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: sun5i: Add PocketBook 614 Plus support

What works:

- Serial console
- mmc0, mmc2 (both microSD card slots on the board)
- All buttons (gpio and lradc based)
- Power LED
- PMIC
- RTC
- USB OTG/gadgets mode

Signed-off-by: Denis Burkov <hitechshell@mail.ru>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://lore.kernel.org/r/20240415173416.13838-2-hitechshell@mail.ru
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>

authored by

Denis Burkov and committed by
Jernej Skrabec
caa67b06 fa4c4df7

+219
+1
arch/arm/boot/dts/allwinner/Makefile
··· 61 61 sun5i-a13-olinuxino.dtb \ 62 62 sun5i-a13-olinuxino-micro.dtb \ 63 63 sun5i-a13-pocketbook-touch-lux-3.dtb \ 64 + sun5i-a13-pocketbook-614-plus.dtb \ 64 65 sun5i-a13-q8-tablet.dtb \ 65 66 sun5i-a13-utoo-p66.dtb \ 66 67 sun5i-gr8-chip-pro.dtb \
+218
arch/arm/boot/dts/allwinner/sun5i-a13-pocketbook-614-plus.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0+ 2 + /* 3 + * Copyright 2024 Denis Burkov <hitechshell@mail.ru> 4 + */ 5 + 6 + /dts-v1/; 7 + #include "sun5i-a13.dtsi" 8 + #include "sunxi-common-regulators.dtsi" 9 + 10 + #include <dt-bindings/gpio/gpio.h> 11 + #include <dt-bindings/input/input.h> 12 + #include <dt-bindings/interrupt-controller/irq.h> 13 + #include <dt-bindings/leds/common.h> 14 + 15 + / { 16 + model = "PocketBook 614 Plus"; 17 + compatible = "pocketbook,614-plus", "allwinner,sun5i-a13"; 18 + 19 + aliases { 20 + serial0 = &uart1; 21 + }; 22 + 23 + chosen { 24 + stdout-path = "serial0:115200n8"; 25 + }; 26 + 27 + leds { 28 + compatible = "gpio-leds"; 29 + 30 + led-0 { 31 + color = <LED_COLOR_ID_WHITE>; 32 + function = LED_FUNCTION_POWER; 33 + linux,default-trigger = "default-on"; 34 + gpios = <&pio 4 8 GPIO_ACTIVE_LOW>; /* PE8 */ 35 + }; 36 + }; 37 + 38 + gpio-keys { 39 + compatible = "gpio-keys"; 40 + 41 + key-0 { 42 + label = "Right"; 43 + linux,code = <KEY_NEXT>; 44 + gpios = <&pio 6 9 GPIO_ACTIVE_LOW>; /* PG9 */ 45 + }; 46 + 47 + key-1 { 48 + label = "Left"; 49 + linux,code = <KEY_PREVIOUS>; 50 + gpios = <&pio 6 10 GPIO_ACTIVE_LOW>; /* PG10 */ 51 + }; 52 + }; 53 + 54 + reg_3v3_mmc0: regulator-mmc0 { 55 + compatible = "regulator-fixed"; 56 + regulator-name = "vdd-mmc0"; 57 + regulator-min-microvolt = <3300000>; 58 + regulator-max-microvolt = <3300000>; 59 + gpio = <&pio 4 4 GPIO_ACTIVE_LOW>; /* PE4 */ 60 + vin-supply = <&reg_vcc3v3>; 61 + }; 62 + }; 63 + 64 + &cpu0 { 65 + cpu-supply = <&reg_dcdc2>; 66 + }; 67 + 68 + &ehci0 { 69 + status = "okay"; 70 + }; 71 + 72 + &i2c0 { 73 + status = "okay"; 74 + 75 + axp209: pmic@34 { 76 + compatible = "x-powers,axp209"; 77 + reg = <0x34>; 78 + interrupts = <0>; 79 + }; 80 + }; 81 + 82 + #include "axp209.dtsi" 83 + 84 + &i2c1 { 85 + status = "okay"; 86 + 87 + pcf8563: rtc@51 { 88 + compatible = "nxp,pcf8563"; 89 + reg = <0x51>; 90 + #clock-cells = <0>; 91 + }; 92 + }; 93 + 94 + &lradc { 95 + vref-supply = <&reg_ldo2>; 96 + status = "okay"; 97 + 98 + button-300 { 99 + label = "Down"; 100 + linux,code = <KEY_DOWN>; 101 + channel = <0>; 102 + voltage = <300000>; 103 + }; 104 + 105 + button-700 { 106 + label = "Up"; 107 + linux,code = <KEY_UP>; 108 + channel = <0>; 109 + voltage = <700000>; 110 + }; 111 + 112 + button-1000 { 113 + label = "Left"; 114 + linux,code = <KEY_LEFT>; 115 + channel = <0>; 116 + voltage = <1000000>; 117 + }; 118 + 119 + button-1200 { 120 + label = "Menu"; 121 + linux,code = <KEY_MENU>; 122 + channel = <0>; 123 + voltage = <1200000>; 124 + }; 125 + 126 + button-1500 { 127 + label = "Right"; 128 + linux,code = <KEY_RIGHT>; 129 + channel = <0>; 130 + voltage = <1500000>; 131 + }; 132 + }; 133 + 134 + &mmc0 { 135 + vmmc-supply = <&reg_3v3_mmc0>; 136 + bus-width = <4>; 137 + cd-gpios = <&pio 6 0 GPIO_ACTIVE_LOW>; /* PG0 */ 138 + status = "okay"; 139 + }; 140 + 141 + &mmc2 { 142 + pinctrl-names = "default"; 143 + pinctrl-0 = <&mmc2_4bit_pc_pins>; 144 + vmmc-supply = <&reg_vcc3v3>; 145 + bus-width = <4>; 146 + non-removable; 147 + status = "okay"; 148 + }; 149 + 150 + &ohci0 { 151 + status = "okay"; 152 + }; 153 + 154 + &otg_sram { 155 + status = "okay"; 156 + }; 157 + 158 + &reg_dcdc2 { 159 + regulator-always-on; 160 + regulator-min-microvolt = <1000000>; 161 + regulator-max-microvolt = <1500000>; 162 + regulator-name = "vdd-cpu"; 163 + }; 164 + 165 + &reg_dcdc3 { 166 + regulator-always-on; 167 + regulator-min-microvolt = <1000000>; 168 + regulator-max-microvolt = <1400000>; 169 + regulator-name = "vdd-int-dll"; 170 + }; 171 + 172 + &reg_ldo1 { 173 + regulator-name = "vdd-rtc"; 174 + }; 175 + 176 + &reg_ldo2 { 177 + regulator-always-on; 178 + regulator-min-microvolt = <3000000>; 179 + regulator-max-microvolt = <3000000>; 180 + regulator-name = "avcc"; 181 + }; 182 + 183 + &reg_usb0_vbus { 184 + status = "okay"; 185 + gpio = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */ 186 + }; 187 + 188 + &reg_usb1_vbus { 189 + gpio = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */ 190 + status = "okay"; 191 + }; 192 + 193 + &uart1 { 194 + pinctrl-names = "default"; 195 + pinctrl-0 = <&uart1_pg_pins>; 196 + status = "okay"; 197 + }; 198 + 199 + &usb_otg { 200 + dr_mode = "otg"; 201 + status = "okay"; 202 + }; 203 + 204 + &usb_power_supply { 205 + status = "okay"; 206 + }; 207 + 208 + &battery_power_supply { 209 + status = "okay"; 210 + }; 211 + 212 + &usbphy { 213 + usb0_id_det-gpios = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */ 214 + usb0_vbus_det-gpios = <&axp_gpio 1 GPIO_ACTIVE_HIGH>; 215 + usb0_vbus-supply = <&reg_usb0_vbus>; 216 + usb1_vbus-supply = <&reg_usb1_vbus>; 217 + status = "okay"; 218 + };