// SPDX-License-Identifier: GPL-2.0 /dts-v1/; #include "jz4740.dtsi" #include #include #include #include #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"; 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", "INL", "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 = ; 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>; ingenic,bch-controller = <&ecc>; pinctrl-names = "default"; pinctrl-0 = <&pins_nemc>; rb-gpios = <&gpc 30 GPIO_ACTIVE_LOW>; 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-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>; };