// SPDX-License-Identifier: GPL-2.0 /dts-v1/; #include "jz4740.dtsi" #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/iio/adc/ingenic,adc.h> #include <dt-bindings/clock/ingenic,tcu.h> #include <dt-bindings/input/input.h> #define KEY_QI_QI KEY_F13 #define KEY_QI_UPRED KEY_RIGHTALT #define KEY_QI_VOLUP KEY_VOLUMEUP #define KEY_QI_VOLDOWN KEY_VOLUMEDOWN #define KEY_QI_FN KEY_LEFTCTRL / { compatible = "qi,lb60", "ingenic,jz4740"; model = "Ben Nanonote"; memory { device_type = "memory"; reg = <0x0 0x2000000>; }; chosen { stdout-path = &uart0; }; vcc: regulator-0 { compatible = "regulator-fixed"; regulator-name = "vcc"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; }; mmc_power: regulator-1 { compatible = "regulator-fixed"; regulator-name = "mmc_vcc"; gpio = <&gpd 2 0>; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; }; amp_supply: regulator-2 { compatible = "regulator-fixed"; regulator-name = "amp_supply"; gpio = <&gpd 4 0>; enable-active-high; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; }; amp: analog-amplifier { compatible = "simple-audio-amplifier"; enable-gpios = <&gpb 29 GPIO_ACTIVE_HIGH>; VCC-supply = <&_supply>; }; sound { compatible = "simple-audio-card"; simple-audio-card,name = "QI LB60"; simple-audio-card,format = "i2s"; simple-audio-card,widgets = "Speaker", "Speaker", "Microphone", "Mic"; simple-audio-card,routing = "MIC", "Mic", "Speaker", "OUTL", "Speaker", "OUTR", "INL", "LOUT", "INR", "ROUT"; simple-audio-card,aux-devs = <&>; simple-audio-card,bitclock-master = <&dai_codec>; simple-audio-card,frame-master = <&dai_codec>; dai_cpu: simple-audio-card,cpu { sound-dai = <&aic>; }; dai_codec: simple-audio-card,codec { sound-dai = <&codec>; }; }; keys { compatible = "gpio-keys"; key { label = "Power"; wakeup-source; linux,code = <KEY_POWER>; gpios = <&gpd 29 GPIO_ACTIVE_LOW>; }; }; keyboard { compatible = "gpio-matrix-keypad"; col-scan-delay-us = <10>; debounce-delay-ms = <10>; wakeup-source; row-gpios = <&gpd 18 0>, <&gpd 19 0>, <&gpd 20 0>, <&gpd 21 0>, <&gpd 22 0>, <&gpd 23 0>, <&gpd 24 0>, <&gpd 26 0>; col-gpios = <&gpc 10 0>, <&gpc 11 0>, <&gpc 12 0>, <&gpc 13 0>, <&gpc 14 0>, <&gpc 15 0>, <&gpc 16 0>, <&gpc 17 0>; gpio-activelow; linux,keymap = <MATRIX_KEY(0, 0, KEY_F1)>, /* S2 */ <MATRIX_KEY(0, 1, KEY_F2)>, /* S3 */ <MATRIX_KEY(0, 2, KEY_F3)>, /* S4 */ <MATRIX_KEY(0, 3, KEY_F4)>, /* S5 */ <MATRIX_KEY(0, 4, KEY_F5)>, /* S6 */ <MATRIX_KEY(0, 5, KEY_F6)>, /* S7 */ <MATRIX_KEY(0, 6, KEY_F7)>, /* S8 */ <MATRIX_KEY(1, 0, KEY_Q)>, /* S10 */ <MATRIX_KEY(1, 1, KEY_W)>, /* S11 */ <MATRIX_KEY(1, 2, KEY_E)>, /* S12 */ <MATRIX_KEY(1, 3, KEY_R)>, /* S13 */ <MATRIX_KEY(1, 4, KEY_T)>, /* S14 */ <MATRIX_KEY(1, 5, KEY_Y)>, /* S15 */ <MATRIX_KEY(1, 6, KEY_U)>, /* S16 */ <MATRIX_KEY(1, 7, KEY_I)>, /* S17 */ <MATRIX_KEY(2, 0, KEY_A)>, /* S18 */ <MATRIX_KEY(2, 1, KEY_S)>, /* S19 */ <MATRIX_KEY(2, 2, KEY_D)>, /* S20 */ <MATRIX_KEY(2, 3, KEY_F)>, /* S21 */ <MATRIX_KEY(2, 4, KEY_G)>, /* S22 */ <MATRIX_KEY(2, 5, KEY_H)>, /* S23 */ <MATRIX_KEY(2, 6, KEY_J)>, /* S24 */ <MATRIX_KEY(2, 7, KEY_K)>, /* S25 */ <MATRIX_KEY(3, 0, KEY_ESC)>, /* S26 */ <MATRIX_KEY(3, 1, KEY_Z)>, /* S27 */ <MATRIX_KEY(3, 2, KEY_X)>, /* S28 */ <MATRIX_KEY(3, 3, KEY_C)>, /* S29 */ <MATRIX_KEY(3, 4, KEY_V)>, /* S30 */ <MATRIX_KEY(3, 5, KEY_B)>, /* S31 */ <MATRIX_KEY(3, 6, KEY_N)>, /* S32 */ <MATRIX_KEY(3, 7, KEY_M)>, /* S33 */ <MATRIX_KEY(4, 0, KEY_TAB)>, /* S34 */ <MATRIX_KEY(4, 1, KEY_CAPSLOCK)>, /* S35 */ <MATRIX_KEY(4, 2, KEY_BACKSLASH)>, /* S36 */ <MATRIX_KEY(4, 3, KEY_APOSTROPHE)>, /* S37 */ <MATRIX_KEY(4, 4, KEY_COMMA)>, /* S38 */ <MATRIX_KEY(4, 5, KEY_DOT)>, /* S39 */ <MATRIX_KEY(4, 6, KEY_SLASH)>, /* S40 */ <MATRIX_KEY(4, 7, KEY_UP)>, /* S41 */ <MATRIX_KEY(5, 0, KEY_O)>, /* S42 */ <MATRIX_KEY(5, 1, KEY_L)>, /* S43 */ <MATRIX_KEY(5, 2, KEY_EQUAL)>, /* S44 */ <MATRIX_KEY(5, 3, KEY_QI_UPRED)>, /* S45 */ <MATRIX_KEY(5, 4, KEY_SPACE)>, /* S46 */ <MATRIX_KEY(5, 5, KEY_QI_QI)>, /* S47 */ <MATRIX_KEY(5, 6, KEY_RIGHTCTRL)>, /* S48 */ <MATRIX_KEY(5, 7, KEY_LEFT)>, /* S49 */ <MATRIX_KEY(6, 0, KEY_F8)>, /* S50 */ <MATRIX_KEY(6, 1, KEY_P)>, /* S51 */ <MATRIX_KEY(6, 2, KEY_BACKSPACE)>,/* S52 */ <MATRIX_KEY(6, 3, KEY_ENTER)>, /* S53 */ <MATRIX_KEY(6, 4, KEY_QI_VOLUP)>, /* S54 */ <MATRIX_KEY(6, 5, KEY_QI_VOLDOWN)>, /* S55 */ <MATRIX_KEY(6, 6, KEY_DOWN)>, /* S56 */ <MATRIX_KEY(6, 7, KEY_RIGHT)>, /* S57 */ <MATRIX_KEY(7, 0, KEY_LEFTSHIFT)>, /* S58 */ <MATRIX_KEY(7, 1, KEY_LEFTALT)>, /* S59 */ <MATRIX_KEY(7, 2, KEY_QI_FN)>; /* S60 */ }; spi { compatible = "spi-gpio"; #address-cells = <1>; #size-cells = <0>; sck-gpios = <&gpc 23 GPIO_ACTIVE_HIGH>; mosi-gpios = <&gpc 22 GPIO_ACTIVE_HIGH>; cs-gpios = <&gpc 21 GPIO_ACTIVE_LOW>; num-chipselects = <1>; }; usb_charger: charger { compatible = "gpio-charger"; charger-type = "usb-sdp"; gpios = <&gpd 28 GPIO_ACTIVE_LOW>; status-gpios = <&gpc 27 GPIO_ACTIVE_LOW>; }; simple_battery: battery { compatible = "simple-battery"; voltage-min-design-microvolt = <3600000>; voltage-max-design-microvolt = <4200000>; }; pmu { compatible = "ingenic,jz4740-battery"; io-channels = <&adc INGENIC_ADC_BATTERY>; io-channel-names = "battery"; power-supplies = <&usb_charger>; monitored-battery = <&simple_battery>; }; hwmon { compatible = "iio-hwmon"; io-channels = <&adc INGENIC_ADC_AUX>; }; panel: panel { compatible = "giantplus,gpm940b0"; power-supply = <&vcc>; port { panel_input: endpoint { remote-endpoint = <&panel_output>; }; }; }; usb_phy: usb-phy { compatible = "usb-nop-xceiv"; #phy-cells = <0>; vcc-supply = <&vcc>; }; }; &ext { clock-frequency = <12000000>; }; &rtc_dev { system-power-controller; }; &uart0 { pinctrl-names = "default"; pinctrl-0 = <&pins_uart0>; }; &uart1 { status = "disabled"; }; &nemc { nandc: nand-controller@1 { compatible = "ingenic,jz4740-nand"; reg = <1 0 0x4000000>; #address-cells = <1>; #size-cells = <0>; ecc-engine = <&ecc>; pinctrl-names = "default"; pinctrl-0 = <&pins_nemc>; rb-gpios = <&gpc 30 GPIO_ACTIVE_HIGH>; nand@1 { reg = <1>; nand-ecc-step-size = <512>; nand-ecc-strength = <4>; nand-ecc-mode = "hw"; nand-is-boot-medium; nand-on-flash-bbt; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "boot"; reg = <0x0 0x400000>; }; partition@400000 { label = "kernel"; reg = <0x400000 0x400000>; }; partition@800000 { label = "rootfs"; reg = <0x800000 0x0>; }; }; }; }; }; &lcd { pinctrl-names = "default"; pinctrl-0 = <&pins_lcd>; port { panel_output: endpoint { remote-endpoint = <&panel_input>; }; }; }; &udc { phys = <&usb_phy>; }; &pinctrl { pins_lcd: lcd { function = "lcd"; groups = "lcd-8bit"; }; pins_nemc: nemc { function = "nand"; groups = "nand-fre-fwe", "nand-cs1"; }; pins_uart0: uart0 { function = "uart0"; groups = "uart0-data"; bias-disable; }; pins_mmc: mmc { mmc { function = "mmc"; groups = "mmc-1bit", "mmc-4bit"; bias-disable; }; mmc-gpios { pins = "PD0", "PD2"; bias-disable; }; }; }; &mmc { bus-width = <4>; max-frequency = <24000000>; cd-gpios = <&gpd 0 GPIO_ACTIVE_HIGH>; vmmc-supply = <&mmc_power>; pinctrl-names = "default"; pinctrl-0 = <&pins_mmc>; }; &tcu { /* 750 kHz for the system timer and clocksource */ assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER1>; assigned-clock-rates = <750000>, <750000>; };