0001 // SPDX-License-Identifier: GPL-2.0
0002 /dts-v1/;
0003
0004 #include "jz4740.dtsi"
0005
0006 #include <dt-bindings/gpio/gpio.h>
0007 #include <dt-bindings/iio/adc/ingenic,adc.h>
0008 #include <dt-bindings/clock/ingenic,tcu.h>
0009 #include <dt-bindings/input/input.h>
0010
0011 #define KEY_QI_QI KEY_F13
0012 #define KEY_QI_UPRED KEY_RIGHTALT
0013 #define KEY_QI_VOLUP KEY_VOLUMEUP
0014 #define KEY_QI_VOLDOWN KEY_VOLUMEDOWN
0015 #define KEY_QI_FN KEY_LEFTCTRL
0016
0017 / {
0018 compatible = "qi,lb60", "ingenic,jz4740";
0019 model = "Ben Nanonote";
0020
0021 memory {
0022 device_type = "memory";
0023 reg = <0x0 0x2000000>;
0024 };
0025
0026 chosen {
0027 stdout-path = &uart0;
0028 };
0029
0030 vcc: regulator@0 {
0031 compatible = "regulator-fixed";
0032 regulator-name = "vcc";
0033
0034 regulator-min-microvolt = <3300000>;
0035 regulator-max-microvolt = <3300000>;
0036 regulator-always-on;
0037 };
0038
0039 mmc_power: regulator@1 {
0040 compatible = "regulator-fixed";
0041 regulator-name = "mmc_vcc";
0042 gpio = <&gpd 2 0>;
0043
0044 regulator-min-microvolt = <3300000>;
0045 regulator-max-microvolt = <3300000>;
0046 };
0047
0048 amp_supply: regulator@2 {
0049 compatible = "regulator-fixed";
0050 regulator-name = "amp_supply";
0051 gpio = <&gpd 4 0>;
0052 enable-active-high;
0053
0054 regulator-min-microvolt = <3300000>;
0055 regulator-max-microvolt = <3300000>;
0056 };
0057
0058 amp: analog-amplifier {
0059 compatible = "simple-audio-amplifier";
0060 enable-gpios = <&gpb 29 GPIO_ACTIVE_HIGH>;
0061 VCC-supply = <&_supply>;
0062 };
0063
0064 sound {
0065 compatible = "simple-audio-card";
0066
0067 simple-audio-card,name = "QI LB60";
0068 simple-audio-card,format = "i2s";
0069
0070 simple-audio-card,widgets =
0071 "Speaker", "Speaker",
0072 "Microphone", "Mic";
0073 simple-audio-card,routing =
0074 "MIC", "Mic",
0075 "Speaker", "OUTL",
0076 "Speaker", "OUTR",
0077 "INL", "LOUT",
0078 "INR", "ROUT";
0079
0080 simple-audio-card,aux-devs = <&>;
0081
0082 simple-audio-card,bitclock-master = <&dai_codec>;
0083 simple-audio-card,frame-master = <&dai_codec>;
0084
0085 dai_cpu: simple-audio-card,cpu {
0086 sound-dai = <&aic>;
0087 };
0088
0089 dai_codec: simple-audio-card,codec {
0090 sound-dai = <&codec>;
0091 };
0092 };
0093
0094 keys {
0095 compatible = "gpio-keys";
0096
0097 key {
0098 label = "Power";
0099 wakeup-source;
0100 linux,code = <KEY_POWER>;
0101 gpios = <&gpd 29 GPIO_ACTIVE_LOW>;
0102 };
0103 };
0104
0105 keyboard {
0106 compatible = "gpio-matrix-keypad";
0107
0108 col-scan-delay-us = <10>;
0109 debounce-delay-ms = <10>;
0110 wakeup-source;
0111
0112 row-gpios = <&gpd 18 0>, <&gpd 19 0>, <&gpd 20 0>, <&gpd 21 0>,
0113 <&gpd 22 0>, <&gpd 23 0>, <&gpd 24 0>, <&gpd 26 0>;
0114 col-gpios = <&gpc 10 0>, <&gpc 11 0>, <&gpc 12 0>, <&gpc 13 0>,
0115 <&gpc 14 0>, <&gpc 15 0>, <&gpc 16 0>, <&gpc 17 0>;
0116 gpio-activelow;
0117
0118 linux,keymap =
0119 <MATRIX_KEY(0, 0, KEY_F1)>, /* S2 */
0120 <MATRIX_KEY(0, 1, KEY_F2)>, /* S3 */
0121 <MATRIX_KEY(0, 2, KEY_F3)>, /* S4 */
0122 <MATRIX_KEY(0, 3, KEY_F4)>, /* S5 */
0123 <MATRIX_KEY(0, 4, KEY_F5)>, /* S6 */
0124 <MATRIX_KEY(0, 5, KEY_F6)>, /* S7 */
0125 <MATRIX_KEY(0, 6, KEY_F7)>, /* S8 */
0126
0127 <MATRIX_KEY(1, 0, KEY_Q)>, /* S10 */
0128 <MATRIX_KEY(1, 1, KEY_W)>, /* S11 */
0129 <MATRIX_KEY(1, 2, KEY_E)>, /* S12 */
0130 <MATRIX_KEY(1, 3, KEY_R)>, /* S13 */
0131 <MATRIX_KEY(1, 4, KEY_T)>, /* S14 */
0132 <MATRIX_KEY(1, 5, KEY_Y)>, /* S15 */
0133 <MATRIX_KEY(1, 6, KEY_U)>, /* S16 */
0134 <MATRIX_KEY(1, 7, KEY_I)>, /* S17 */
0135 <MATRIX_KEY(2, 0, KEY_A)>, /* S18 */
0136 <MATRIX_KEY(2, 1, KEY_S)>, /* S19 */
0137 <MATRIX_KEY(2, 2, KEY_D)>, /* S20 */
0138 <MATRIX_KEY(2, 3, KEY_F)>, /* S21 */
0139 <MATRIX_KEY(2, 4, KEY_G)>, /* S22 */
0140 <MATRIX_KEY(2, 5, KEY_H)>, /* S23 */
0141 <MATRIX_KEY(2, 6, KEY_J)>, /* S24 */
0142 <MATRIX_KEY(2, 7, KEY_K)>, /* S25 */
0143 <MATRIX_KEY(3, 0, KEY_ESC)>, /* S26 */
0144 <MATRIX_KEY(3, 1, KEY_Z)>, /* S27 */
0145 <MATRIX_KEY(3, 2, KEY_X)>, /* S28 */
0146 <MATRIX_KEY(3, 3, KEY_C)>, /* S29 */
0147 <MATRIX_KEY(3, 4, KEY_V)>, /* S30 */
0148 <MATRIX_KEY(3, 5, KEY_B)>, /* S31 */
0149 <MATRIX_KEY(3, 6, KEY_N)>, /* S32 */
0150 <MATRIX_KEY(3, 7, KEY_M)>, /* S33 */
0151 <MATRIX_KEY(4, 0, KEY_TAB)>, /* S34 */
0152 <MATRIX_KEY(4, 1, KEY_CAPSLOCK)>, /* S35 */
0153 <MATRIX_KEY(4, 2, KEY_BACKSLASH)>, /* S36 */
0154 <MATRIX_KEY(4, 3, KEY_APOSTROPHE)>, /* S37 */
0155 <MATRIX_KEY(4, 4, KEY_COMMA)>, /* S38 */
0156 <MATRIX_KEY(4, 5, KEY_DOT)>, /* S39 */
0157 <MATRIX_KEY(4, 6, KEY_SLASH)>, /* S40 */
0158 <MATRIX_KEY(4, 7, KEY_UP)>, /* S41 */
0159 <MATRIX_KEY(5, 0, KEY_O)>, /* S42 */
0160 <MATRIX_KEY(5, 1, KEY_L)>, /* S43 */
0161 <MATRIX_KEY(5, 2, KEY_EQUAL)>, /* S44 */
0162 <MATRIX_KEY(5, 3, KEY_QI_UPRED)>, /* S45 */
0163 <MATRIX_KEY(5, 4, KEY_SPACE)>, /* S46 */
0164 <MATRIX_KEY(5, 5, KEY_QI_QI)>, /* S47 */
0165 <MATRIX_KEY(5, 6, KEY_RIGHTCTRL)>, /* S48 */
0166 <MATRIX_KEY(5, 7, KEY_LEFT)>, /* S49 */
0167 <MATRIX_KEY(6, 0, KEY_F8)>, /* S50 */
0168 <MATRIX_KEY(6, 1, KEY_P)>, /* S51 */
0169 <MATRIX_KEY(6, 2, KEY_BACKSPACE)>,/* S52 */
0170 <MATRIX_KEY(6, 3, KEY_ENTER)>, /* S53 */
0171 <MATRIX_KEY(6, 4, KEY_QI_VOLUP)>, /* S54 */
0172 <MATRIX_KEY(6, 5, KEY_QI_VOLDOWN)>, /* S55 */
0173 <MATRIX_KEY(6, 6, KEY_DOWN)>, /* S56 */
0174 <MATRIX_KEY(6, 7, KEY_RIGHT)>, /* S57 */
0175
0176 <MATRIX_KEY(7, 0, KEY_LEFTSHIFT)>, /* S58 */
0177 <MATRIX_KEY(7, 1, KEY_LEFTALT)>, /* S59 */
0178 <MATRIX_KEY(7, 2, KEY_QI_FN)>; /* S60 */
0179 };
0180
0181 spi {
0182 compatible = "spi-gpio";
0183 #address-cells = <1>;
0184 #size-cells = <0>;
0185
0186 sck-gpios = <&gpc 23 GPIO_ACTIVE_HIGH>;
0187 mosi-gpios = <&gpc 22 GPIO_ACTIVE_HIGH>;
0188 cs-gpios = <&gpc 21 GPIO_ACTIVE_LOW>;
0189 num-chipselects = <1>;
0190 };
0191
0192 usb_charger: charger {
0193 compatible = "gpio-charger";
0194 charger-type = "usb-sdp";
0195 gpios = <&gpd 28 GPIO_ACTIVE_LOW>;
0196 status-gpios = <&gpc 27 GPIO_ACTIVE_LOW>;
0197 };
0198
0199 simple_battery: battery {
0200 compatible = "simple-battery";
0201 voltage-min-design-microvolt = <3600000>;
0202 voltage-max-design-microvolt = <4200000>;
0203 };
0204
0205 pmu {
0206 compatible = "ingenic,jz4740-battery";
0207 io-channels = <&adc INGENIC_ADC_BATTERY>;
0208 io-channel-names = "battery";
0209 power-supplies = <&usb_charger>;
0210 monitored-battery = <&simple_battery>;
0211 };
0212
0213 hwmon {
0214 compatible = "iio-hwmon";
0215 io-channels = <&adc INGENIC_ADC_AUX>;
0216 };
0217
0218 panel: panel {
0219 compatible = "giantplus,gpm940b0";
0220
0221 power-supply = <&vcc>;
0222
0223 port {
0224 panel_input: endpoint {
0225 remote-endpoint = <&panel_output>;
0226 };
0227 };
0228 };
0229
0230 usb_phy: usb-phy {
0231 compatible = "usb-nop-xceiv";
0232 #phy-cells = <0>;
0233
0234 vcc-supply = <&vcc>;
0235 };
0236 };
0237
0238 &ext {
0239 clock-frequency = <12000000>;
0240 };
0241
0242 &rtc_dev {
0243 system-power-controller;
0244 };
0245
0246 &uart0 {
0247 pinctrl-names = "default";
0248 pinctrl-0 = <&pins_uart0>;
0249 };
0250
0251 &uart1 {
0252 status = "disabled";
0253 };
0254
0255 &nemc {
0256 nandc: nand-controller@1 {
0257 compatible = "ingenic,jz4740-nand";
0258 reg = <1 0 0x4000000>;
0259
0260 #address-cells = <1>;
0261 #size-cells = <0>;
0262
0263 ecc-engine = <&ecc>;
0264
0265 pinctrl-names = "default";
0266 pinctrl-0 = <&pins_nemc>;
0267
0268 rb-gpios = <&gpc 30 GPIO_ACTIVE_HIGH>;
0269
0270 nand@1 {
0271 reg = <1>;
0272
0273 nand-ecc-step-size = <512>;
0274 nand-ecc-strength = <4>;
0275 nand-ecc-mode = "hw";
0276 nand-is-boot-medium;
0277 nand-on-flash-bbt;
0278
0279 partitions {
0280 compatible = "fixed-partitions";
0281 #address-cells = <1>;
0282 #size-cells = <1>;
0283
0284 partition@0 {
0285 label = "boot";
0286 reg = <0x0 0x400000>;
0287 };
0288
0289 partition@400000 {
0290 label = "kernel";
0291 reg = <0x400000 0x400000>;
0292 };
0293
0294 partition@800000 {
0295 label = "rootfs";
0296 reg = <0x800000 0x0>;
0297 };
0298 };
0299 };
0300 };
0301 };
0302
0303 &lcd {
0304 pinctrl-names = "default";
0305 pinctrl-0 = <&pins_lcd>;
0306
0307 port {
0308 panel_output: endpoint {
0309 remote-endpoint = <&panel_input>;
0310 };
0311 };
0312 };
0313
0314 &udc {
0315 phys = <&usb_phy>;
0316 };
0317
0318 &pinctrl {
0319 pins_lcd: lcd {
0320 function = "lcd";
0321 groups = "lcd-8bit";
0322 };
0323
0324 pins_nemc: nemc {
0325 function = "nand";
0326 groups = "nand-fre-fwe", "nand-cs1";
0327 };
0328
0329 pins_uart0: uart0 {
0330 function = "uart0";
0331 groups = "uart0-data";
0332 bias-disable;
0333 };
0334
0335 pins_mmc: mmc {
0336 mmc {
0337 function = "mmc";
0338 groups = "mmc-1bit", "mmc-4bit";
0339 bias-disable;
0340 };
0341
0342 mmc-gpios {
0343 pins = "PD0", "PD2";
0344 bias-disable;
0345 };
0346 };
0347 };
0348
0349 &mmc {
0350 bus-width = <4>;
0351 max-frequency = <24000000>;
0352 cd-gpios = <&gpd 0 GPIO_ACTIVE_HIGH>;
0353 vmmc-supply = <&mmc_power>;
0354
0355 pinctrl-names = "default";
0356 pinctrl-0 = <&pins_mmc>;
0357 };
0358
0359 &tcu {
0360 /* 750 kHz for the system timer and clocksource */
0361 assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>;
0362 assigned-clock-rates = <750000>, <750000>;
0363 };