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

ARM: dts: add Netronix E70K02 board common file

The Netronix board E70K02 can be found some several Ebook-Readers,
at least the Kobo Libra H2O and the Tolino Vision 5. The board
is equipped with different SoCs requiring different pinmuxes.

For now the following peripherals are included:
- LED
- Power Key
- Cover (gpio via hall sensor)
- RC5T619 PMIC
- Backlight via lm3630a
- Wifi sdio chip detection (mmc-powerseq and stuff)

It is based on vendor kernel but heavily reworked due to many
changed bindings.

Known limitations: cold colored backlight does not work due to
incompatible hard coded overvoltage setting in the driver.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>

authored by

Andreas Kemnade and committed by
Shawn Guo
3bb3fd85 4259da06

+320
+320
arch/arm/boot/dts/e70k02.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Copyright 2021 Andreas Kemnade 4 + * based on works 5 + * Copyright 2016 Freescale Semiconductor, Inc. 6 + * and 7 + * Copyright (C) 2014 Ricoh Electronic Devices Co., Ltd 8 + * 9 + * Netronix E70K02 board common. 10 + * This board is equipped with different SoCs and 11 + * found in ebook-readers like the Kobo Clara HD (with i.MX6SLL) and 12 + * the Tolino Shine 3 (with i.MX6SL) 13 + */ 14 + #include <dt-bindings/input/input.h> 15 + 16 + / { 17 + aliases { 18 + mmc0 = &usdhc1; 19 + mmc1 = &usdhc3; 20 + }; 21 + 22 + chosen { 23 + stdout-path = &uart1; 24 + }; 25 + 26 + gpio_keys: gpio-keys { 27 + compatible = "gpio-keys"; 28 + 29 + power { 30 + label = "Power"; 31 + gpios = <&gpio4 25 GPIO_ACTIVE_LOW>; 32 + linux,code = <KEY_POWER>; 33 + wakeup-source; 34 + }; 35 + 36 + cover { 37 + label = "Cover"; 38 + gpios = <&gpio4 23 GPIO_ACTIVE_LOW>; 39 + linux,code = <SW_LID>; 40 + linux,input-type = <EV_SW>; 41 + wakeup-source; 42 + }; 43 + 44 + pageup { 45 + label = "PageUp"; 46 + gpios = <&gpio4 0 GPIO_ACTIVE_LOW>; 47 + linux,code = <KEY_PAGEUP>; 48 + }; 49 + 50 + pagedown { 51 + label = "PageDown"; 52 + gpios = <&gpio4 2 GPIO_ACTIVE_LOW>; 53 + linux,code = <KEY_PAGEDOWN>; 54 + }; 55 + }; 56 + 57 + leds: leds { 58 + compatible = "gpio-leds"; 59 + 60 + led { 61 + label = "e70k02:white:on"; 62 + gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; 63 + linux,default-trigger = "timer"; 64 + }; 65 + }; 66 + 67 + memory@80000000 { 68 + device_type = "memory"; 69 + reg = <0x80000000 0x20000000>; 70 + }; 71 + 72 + reg_wifi: regulator-wifi { 73 + compatible = "regulator-fixed"; 74 + regulator-name = "SD3_SPWR"; 75 + regulator-min-microvolt = <3000000>; 76 + regulator-max-microvolt = <3000000>; 77 + gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>; 78 + enable-active-high; 79 + }; 80 + 81 + wifi_pwrseq: wifi-pwrseq { 82 + compatible = "mmc-pwrseq-simple"; 83 + post-power-on-delay-ms = <20>; 84 + reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>; 85 + }; 86 + }; 87 + 88 + &i2c1 { 89 + clock-frequency = <100000>; 90 + status = "okay"; 91 + 92 + lm3630a: backlight@36 { 93 + reg = <0x36>; 94 + compatible = "ti,lm3630a"; 95 + enable-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; 96 + 97 + #address-cells = <1>; 98 + #size-cells = <0>; 99 + 100 + led@0 { 101 + reg = <0>; 102 + led-sources = <0>; 103 + label = "backlight_warm"; 104 + default-brightness = <0>; 105 + max-brightness = <255>; 106 + }; 107 + 108 + led@1 { 109 + reg = <1>; 110 + led-sources = <1>; 111 + label = "backlight_cold"; 112 + default-brightness = <0>; 113 + max-brightness = <255>; 114 + }; 115 + }; 116 + 117 + /* TODO: KX122 acceleration sensor a 0x1e */ 118 + 119 + }; 120 + 121 + &i2c2 { 122 + clock-frequency = <100000>; 123 + status = "okay"; 124 + 125 + /* TODO: CYTTSP5 touch controller at 0x24 */ 126 + 127 + /* TODO: SY7636 PMIC for E Ink at 0x62 */ 128 + 129 + }; 130 + 131 + &i2c3 { 132 + clock-frequency = <100000>; 133 + status = "okay"; 134 + 135 + ricoh619: pmic@32 { 136 + compatible = "ricoh,rc5t619"; 137 + reg = <0x32>; 138 + interrupt-parent = <&gpio4>; 139 + interrupts = <19 IRQ_TYPE_EDGE_FALLING>; 140 + system-power-controller; 141 + 142 + regulators { 143 + dcdc1_reg: DCDC1 { 144 + regulator-name = "DCDC1"; 145 + regulator-min-microvolt = <300000>; 146 + regulator-max-microvolt = <1875000>; 147 + regulator-always-on; 148 + regulator-boot-on; 149 + 150 + regulator-state-mem { 151 + regulator-on-in-suspend; 152 + regulator-suspend-max-microvolt = <900000>; 153 + regulator-suspend-min-microvolt = <900000>; 154 + }; 155 + }; 156 + 157 + /* Core3_3V3 */ 158 + dcdc2_reg: DCDC2 { 159 + regulator-name = "DCDC2"; 160 + regulator-always-on; 161 + regulator-boot-on; 162 + 163 + regulator-state-mem { 164 + regulator-on-in-suspend; 165 + regulator-suspend-max-microvolt = <3300000>; 166 + regulator-suspend-min-microvolt = <3300000>; 167 + }; 168 + }; 169 + 170 + dcdc3_reg: DCDC3 { 171 + regulator-name = "DCDC3"; 172 + regulator-min-microvolt = <300000>; 173 + regulator-max-microvolt = <1875000>; 174 + regulator-always-on; 175 + regulator-boot-on; 176 + 177 + regulator-state-mem { 178 + regulator-on-in-suspend; 179 + regulator-suspend-max-microvolt = <1140000>; 180 + regulator-suspend-min-microvolt = <1140000>; 181 + }; 182 + }; 183 + 184 + /* Core4_1V2 */ 185 + dcdc4_reg: DCDC4 { 186 + regulator-name = "DCDC4"; 187 + regulator-min-microvolt = <1200000>; 188 + regulator-max-microvolt = <1200000>; 189 + regulator-always-on; 190 + regulator-boot-on; 191 + 192 + regulator-state-mem { 193 + regulator-on-in-suspend; 194 + regulator-suspend-max-microvolt = <1140000>; 195 + regulator-suspend-min-microvolt = <1140000>; 196 + }; 197 + }; 198 + 199 + /* Core4_1V8 */ 200 + dcdc5_reg: DCDC5 { 201 + regulator-name = "DCDC5"; 202 + regulator-min-microvolt = <1800000>; 203 + regulator-max-microvolt = <1800000>; 204 + regulator-always-on; 205 + regulator-boot-on; 206 + 207 + regulator-state-mem { 208 + regulator-on-in-suspend; 209 + regulator-suspend-max-microvolt = <1700000>; 210 + regulator-suspend-min-microvolt = <1700000>; 211 + }; 212 + }; 213 + 214 + ldo1_reg: LDO1 { 215 + regulator-name = "LDO1"; 216 + regulator-boot-on; 217 + }; 218 + 219 + /* Core1_3V3 */ 220 + ldo2_reg: LDO2 { 221 + regulator-name = "LDO2"; 222 + regulator-always-on; 223 + regulator-boot-on; 224 + 225 + regulator-state-mem { 226 + regulator-on-in-suspend; 227 + regulator-suspend-max-microvolt = <3000000>; 228 + regulator-suspend-min-microvolt = <3000000>; 229 + }; 230 + }; 231 + 232 + /* Core5_1V2 */ 233 + ldo3_reg: LDO3 { 234 + regulator-name = "LDO3"; 235 + regulator-always-on; 236 + regulator-boot-on; 237 + }; 238 + 239 + ldo4_reg: LDO4 { 240 + regulator-name = "LDO4"; 241 + regulator-boot-on; 242 + }; 243 + 244 + /* SPD_3V3 */ 245 + ldo5_reg: LDO5 { 246 + regulator-name = "LDO5"; 247 + regulator-always-on; 248 + regulator-boot-on; 249 + }; 250 + 251 + /* DDR_0V6 */ 252 + ldo6_reg: LDO6 { 253 + regulator-name = "LDO6"; 254 + regulator-always-on; 255 + regulator-boot-on; 256 + }; 257 + 258 + /* VDD_PWM */ 259 + ldo7_reg: LDO7 { 260 + regulator-name = "LDO7"; 261 + regulator-boot-on; 262 + }; 263 + 264 + /* ldo_1v8 */ 265 + ldo8_reg: LDO8 { 266 + regulator-name = "LDO8"; 267 + regulator-min-microvolt = <1800000>; 268 + regulator-max-microvolt = <1800000>; 269 + regulator-boot-on; 270 + }; 271 + 272 + ldo9_reg: LDO9 { 273 + regulator-name = "LDO9"; 274 + regulator-boot-on; 275 + }; 276 + 277 + ldo10_reg: LDO10 { 278 + regulator-name = "LDO10"; 279 + regulator-boot-on; 280 + }; 281 + 282 + ldortc1_reg: LDORTC1 { 283 + regulator-name = "LDORTC1"; 284 + regulator-boot-on; 285 + }; 286 + }; 287 + }; 288 + }; 289 + 290 + &snvs_rtc { 291 + /* we are using the rtc in the pmic, not disabled in imx6sll.dtsi */ 292 + status = "disabled"; 293 + }; 294 + 295 + &uart1 { 296 + status = "okay"; 297 + }; 298 + 299 + &usdhc1 { 300 + non-removable; 301 + no-1-8-v; 302 + status = "okay"; 303 + }; 304 + 305 + &usdhc3 { 306 + vmmc-supply = <&reg_wifi>; 307 + mmc-pwrseq = <&wifi_pwrseq>; 308 + cap-power-off-card; 309 + non-removable; 310 + status = "okay"; 311 + }; 312 + 313 + &usbotg1 { 314 + pinctrl-names = "default"; 315 + disable-over-current; 316 + srp-disable; 317 + hnp-disable; 318 + adp-disable; 319 + status = "okay"; 320 + };