364 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			364 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| // 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>;
 | |
| };
 |