1// SPDX-License-Identifier: GPL-2.0 2/dts-v1/; 3 4#include "jz4740.dtsi" 5 6#include <dt-bindings/gpio/gpio.h> 7#include <dt-bindings/iio/adc/ingenic,adc.h> 8#include <dt-bindings/clock/ingenic,tcu.h> 9#include <dt-bindings/input/input.h> 10 11#define KEY_QI_QI KEY_F13 12#define KEY_QI_UPRED KEY_RIGHTALT 13#define KEY_QI_VOLUP KEY_VOLUMEUP 14#define KEY_QI_VOLDOWN KEY_VOLUMEDOWN 15#define KEY_QI_FN KEY_LEFTCTRL 16 17/ { 18 compatible = "qi,lb60", "ingenic,jz4740"; 19 20 chosen { 21 stdout-path = &uart0; 22 }; 23 24 vcc: regulator@0 { 25 compatible = "regulator-fixed"; 26 regulator-name = "vcc"; 27 28 regulator-min-microvolt = <3300000>; 29 regulator-max-microvolt = <3300000>; 30 regulator-always-on; 31 }; 32 33 mmc_power: regulator@1 { 34 compatible = "regulator-fixed"; 35 regulator-name = "mmc_vcc"; 36 gpio = <&gpd 2 0>; 37 38 regulator-min-microvolt = <3300000>; 39 regulator-max-microvolt = <3300000>; 40 }; 41 42 amp_supply: regulator@2 { 43 compatible = "regulator-fixed"; 44 regulator-name = "amp_supply"; 45 gpio = <&gpd 4 0>; 46 enable-active-high; 47 48 regulator-min-microvolt = <3300000>; 49 regulator-max-microvolt = <3300000>; 50 }; 51 52 amp: analog-amplifier { 53 compatible = "simple-audio-amplifier"; 54 enable-gpios = <&gpb 29 GPIO_ACTIVE_HIGH>; 55 VCC-supply = <&_supply>; 56 }; 57 58 sound { 59 compatible = "simple-audio-card"; 60 61 simple-audio-card,name = "QI LB60"; 62 simple-audio-card,format = "i2s"; 63 64 simple-audio-card,widgets = 65 "Speaker", "Speaker", 66 "Microphone", "Mic"; 67 simple-audio-card,routing = 68 "MIC", "Mic", 69 "Speaker", "OUTL", 70 "Speaker", "OUTR", 71 "INL", "LOUT", 72 "INL", "ROUT"; 73 74 simple-audio-card,aux-devs = <&>; 75 76 simple-audio-card,bitclock-master = <&dai_codec>; 77 simple-audio-card,frame-master = <&dai_codec>; 78 79 dai_cpu: simple-audio-card,cpu { 80 sound-dai = <&aic>; 81 }; 82 83 dai_codec: simple-audio-card,codec { 84 sound-dai = <&codec>; 85 }; 86 }; 87 88 keys { 89 compatible = "gpio-keys"; 90 91 key { 92 label = "Power"; 93 wakeup-source; 94 linux,code = <KEY_POWER>; 95 gpios = <&gpd 29 GPIO_ACTIVE_LOW>; 96 }; 97 }; 98 99 keyboard { 100 compatible = "gpio-matrix-keypad"; 101 102 col-scan-delay-us = <10>; 103 debounce-delay-ms = <10>; 104 wakeup-source; 105 106 row-gpios = <&gpd 18 0 &gpd 19 0 &gpd 20 0 &gpd 21 0 107 &gpd 22 0 &gpd 23 0 &gpd 24 0 &gpd 26 0>; 108 col-gpios = <&gpc 10 0 &gpc 11 0 &gpc 12 0 &gpc 13 0 109 &gpc 14 0 &gpc 15 0 &gpc 16 0 &gpc 17 0>; 110 gpio-activelow; 111 112 linux,keymap = < 113 MATRIX_KEY(0, 0, KEY_F1) /* S2 */ 114 MATRIX_KEY(0, 1, KEY_F2) /* S3 */ 115 MATRIX_KEY(0, 2, KEY_F3) /* S4 */ 116 MATRIX_KEY(0, 3, KEY_F4) /* S5 */ 117 MATRIX_KEY(0, 4, KEY_F5) /* S6 */ 118 MATRIX_KEY(0, 5, KEY_F6) /* S7 */ 119 MATRIX_KEY(0, 6, KEY_F7) /* S8 */ 120 121 MATRIX_KEY(1, 0, KEY_Q) /* S10 */ 122 MATRIX_KEY(1, 1, KEY_W) /* S11 */ 123 MATRIX_KEY(1, 2, KEY_E) /* S12 */ 124 MATRIX_KEY(1, 3, KEY_R) /* S13 */ 125 MATRIX_KEY(1, 4, KEY_T) /* S14 */ 126 MATRIX_KEY(1, 5, KEY_Y) /* S15 */ 127 MATRIX_KEY(1, 6, KEY_U) /* S16 */ 128 MATRIX_KEY(1, 7, KEY_I) /* S17 */ 129 MATRIX_KEY(2, 0, KEY_A) /* S18 */ 130 MATRIX_KEY(2, 1, KEY_S) /* S19 */ 131 MATRIX_KEY(2, 2, KEY_D) /* S20 */ 132 MATRIX_KEY(2, 3, KEY_F) /* S21 */ 133 MATRIX_KEY(2, 4, KEY_G) /* S22 */ 134 MATRIX_KEY(2, 5, KEY_H) /* S23 */ 135 MATRIX_KEY(2, 6, KEY_J) /* S24 */ 136 MATRIX_KEY(2, 7, KEY_K) /* S25 */ 137 MATRIX_KEY(3, 0, KEY_ESC) /* S26 */ 138 MATRIX_KEY(3, 1, KEY_Z) /* S27 */ 139 MATRIX_KEY(3, 2, KEY_X) /* S28 */ 140 MATRIX_KEY(3, 3, KEY_C) /* S29 */ 141 MATRIX_KEY(3, 4, KEY_V) /* S30 */ 142 MATRIX_KEY(3, 5, KEY_B) /* S31 */ 143 MATRIX_KEY(3, 6, KEY_N) /* S32 */ 144 MATRIX_KEY(3, 7, KEY_M) /* S33 */ 145 MATRIX_KEY(4, 0, KEY_TAB) /* S34 */ 146 MATRIX_KEY(4, 1, KEY_CAPSLOCK) /* S35 */ 147 MATRIX_KEY(4, 2, KEY_BACKSLASH) /* S36 */ 148 MATRIX_KEY(4, 3, KEY_APOSTROPHE) /* S37 */ 149 MATRIX_KEY(4, 4, KEY_COMMA) /* S38 */ 150 MATRIX_KEY(4, 5, KEY_DOT) /* S39 */ 151 MATRIX_KEY(4, 6, KEY_SLASH) /* S40 */ 152 MATRIX_KEY(4, 7, KEY_UP) /* S41 */ 153 MATRIX_KEY(5, 0, KEY_O) /* S42 */ 154 MATRIX_KEY(5, 1, KEY_L) /* S43 */ 155 MATRIX_KEY(5, 2, KEY_EQUAL) /* S44 */ 156 MATRIX_KEY(5, 3, KEY_QI_UPRED) /* S45 */ 157 MATRIX_KEY(5, 4, KEY_SPACE) /* S46 */ 158 MATRIX_KEY(5, 5, KEY_QI_QI) /* S47 */ 159 MATRIX_KEY(5, 6, KEY_RIGHTCTRL) /* S48 */ 160 MATRIX_KEY(5, 7, KEY_LEFT) /* S49 */ 161 MATRIX_KEY(6, 0, KEY_F8) /* S50 */ 162 MATRIX_KEY(6, 1, KEY_P) /* S51 */ 163 MATRIX_KEY(6, 2, KEY_BACKSPACE)/* S52 */ 164 MATRIX_KEY(6, 3, KEY_ENTER) /* S53 */ 165 MATRIX_KEY(6, 4, KEY_QI_VOLUP) /* S54 */ 166 MATRIX_KEY(6, 5, KEY_QI_VOLDOWN) /* S55 */ 167 MATRIX_KEY(6, 6, KEY_DOWN) /* S56 */ 168 MATRIX_KEY(6, 7, KEY_RIGHT) /* S57 */ 169 170 MATRIX_KEY(7, 0, KEY_LEFTSHIFT) /* S58 */ 171 MATRIX_KEY(7, 1, KEY_LEFTALT) /* S59 */ 172 MATRIX_KEY(7, 2, KEY_QI_FN) /* S60 */ 173 >; 174 }; 175 176 spi { 177 compatible = "spi-gpio"; 178 #address-cells = <1>; 179 #size-cells = <0>; 180 181 sck-gpios = <&gpc 23 GPIO_ACTIVE_HIGH>; 182 mosi-gpios = <&gpc 22 GPIO_ACTIVE_HIGH>; 183 cs-gpios = <&gpc 21 GPIO_ACTIVE_LOW>; 184 num-chipselects = <1>; 185 }; 186 187 usb_charger: charger { 188 compatible = "gpio-charger"; 189 charger-type = "usb-sdp"; 190 gpios = <&gpd 28 GPIO_ACTIVE_LOW>; 191 status-gpios = <&gpc 27 GPIO_ACTIVE_LOW>; 192 }; 193 194 simple_battery: battery { 195 compatible = "simple-battery"; 196 voltage-min-design-microvolt = <3600000>; 197 voltage-max-design-microvolt = <4200000>; 198 }; 199 200 pmu { 201 compatible = "ingenic,jz4740-battery"; 202 io-channels = <&adc INGENIC_ADC_BATTERY>; 203 io-channel-names = "battery"; 204 power-supplies = <&usb_charger>; 205 monitored-battery = <&simple_battery>; 206 }; 207 208 hwmon { 209 compatible = "iio-hwmon"; 210 io-channels = <&adc INGENIC_ADC_AUX>; 211 }; 212 213 panel: panel { 214 compatible = "giantplus,gpm940b0"; 215 216 power-supply = <&vcc>; 217 218 port { 219 panel_input: endpoint { 220 remote-endpoint = <&panel_output>; 221 }; 222 }; 223 }; 224 225 usb_phy: usb-phy { 226 compatible = "usb-nop-xceiv"; 227 #phy-cells = <0>; 228 229 vcc-supply = <&vcc>; 230 }; 231}; 232 233&ext { 234 clock-frequency = <12000000>; 235}; 236 237&rtc_dev { 238 system-power-controller; 239}; 240 241&uart0 { 242 pinctrl-names = "default"; 243 pinctrl-0 = <&pins_uart0>; 244}; 245 246&uart1 { 247 status = "disabled"; 248}; 249 250&nemc { 251 nandc: nand-controller@1 { 252 compatible = "ingenic,jz4740-nand"; 253 reg = <1 0 0x4000000>; 254 255 #address-cells = <1>; 256 #size-cells = <0>; 257 258 ingenic,bch-controller = <&ecc>; 259 260 pinctrl-names = "default"; 261 pinctrl-0 = <&pins_nemc>; 262 263 rb-gpios = <&gpc 30 GPIO_ACTIVE_LOW>; 264 265 nand@1 { 266 reg = <1>; 267 268 nand-ecc-step-size = <512>; 269 nand-ecc-strength = <4>; 270 nand-ecc-mode = "hw"; 271 nand-is-boot-medium; 272 nand-on-flash-bbt; 273 274 partitions { 275 compatible = "fixed-partitions"; 276 #address-cells = <1>; 277 #size-cells = <1>; 278 279 partition@0 { 280 label = "boot"; 281 reg = <0x0 0x400000>; 282 }; 283 284 partition@400000 { 285 label = "kernel"; 286 reg = <0x400000 0x400000>; 287 }; 288 289 partition@800000 { 290 label = "rootfs"; 291 reg = <0x800000 0x0>; 292 }; 293 }; 294 }; 295 }; 296}; 297 298&lcd { 299 pinctrl-names = "default"; 300 pinctrl-0 = <&pins_lcd>; 301 302 port { 303 panel_output: endpoint { 304 remote-endpoint = <&panel_input>; 305 }; 306 }; 307}; 308 309&udc { 310 phys = <&usb_phy>; 311}; 312 313&pinctrl { 314 pins_lcd: lcd { 315 function = "lcd"; 316 groups = "lcd-8bit"; 317 }; 318 319 pins_nemc: nemc { 320 function = "nand"; 321 groups = "nand-cs1"; 322 }; 323 324 pins_uart0: uart0 { 325 function = "uart0"; 326 groups = "uart0-data"; 327 bias-disable; 328 }; 329 330 pins_mmc: mmc { 331 mmc { 332 function = "mmc"; 333 groups = "mmc-1bit", "mmc-4bit"; 334 bias-disable; 335 }; 336 337 mmc-gpios { 338 pins = "PD0", "PD2"; 339 bias-disable; 340 }; 341 }; 342}; 343 344&mmc { 345 bus-width = <4>; 346 max-frequency = <24000000>; 347 cd-gpios = <&gpd 0 GPIO_ACTIVE_HIGH>; 348 vmmc-supply = <&mmc_power>; 349 350 pinctrl-names = "default"; 351 pinctrl-0 = <&pins_mmc>; 352}; 353 354&tcu { 355 /* 750 kHz for the system timer and clocksource */ 356 assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>; 357 assigned-clock-rates = <750000>, <750000>; 358}; 359