162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Device Tree for the ST Microelectronics Nomadik NHK8815 board
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci/dts-v1/;
762306a36Sopenharmony_ci#include <dt-bindings/interrupt-controller/irq.h>
862306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h>
962306a36Sopenharmony_ci#include "ste-nomadik-stn8815.dtsi"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/ {
1262306a36Sopenharmony_ci	model = "Nomadik STN8815NHK";
1362306a36Sopenharmony_ci	compatible = "st,nomadik-nhk-15";
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	chosen {
1662306a36Sopenharmony_ci		bootargs = "root=/dev/ram0 console=ttyAMA1,115200n8 earlyprintk";
1762306a36Sopenharmony_ci	};
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	aliases {
2062306a36Sopenharmony_ci		serial0 = &uart0;
2162306a36Sopenharmony_ci		serial1 = &uart1;
2262306a36Sopenharmony_ci		stmpe-i2c0 = &stmpe0;
2362306a36Sopenharmony_ci		stmpe-i2c1 = &stmpe1;
2462306a36Sopenharmony_ci	};
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	pinctrl {
2762306a36Sopenharmony_ci		uart0 {
2862306a36Sopenharmony_ci			uart0_nhk_mode: uart0_mux {
2962306a36Sopenharmony_ci				u0_default_mux {
3062306a36Sopenharmony_ci					function = "u0";
3162306a36Sopenharmony_ci					groups = "u0txrx_a_1", "u0ctsrts_a_1";
3262306a36Sopenharmony_ci				};
3362306a36Sopenharmony_ci			};
3462306a36Sopenharmony_ci		};
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci		stmpe2401_1 {
3762306a36Sopenharmony_ci			stmpe2401_1_nhk_mode: stmpe2401_1_nhk {
3862306a36Sopenharmony_ci				nhk_cfg1 {
3962306a36Sopenharmony_ci					pins = "GPIO76_B20"; // IRQ line
4062306a36Sopenharmony_ci					ste,input = <0>;
4162306a36Sopenharmony_ci				};
4262306a36Sopenharmony_ci				nhk_cfg2 {
4362306a36Sopenharmony_ci					pins = "GPIO77_B8"; // reset line
4462306a36Sopenharmony_ci					ste,output = <1>;
4562306a36Sopenharmony_ci				};
4662306a36Sopenharmony_ci			};
4762306a36Sopenharmony_ci		};
4862306a36Sopenharmony_ci		stmpe2401_2 {
4962306a36Sopenharmony_ci			stmpe2401_2_nhk_mode: stmpe2401_2_nhk {
5062306a36Sopenharmony_ci				nhk_cfg1 {
5162306a36Sopenharmony_ci					pins = "GPIO78_A8"; // IRQ line
5262306a36Sopenharmony_ci					ste,input = <0>;
5362306a36Sopenharmony_ci				};
5462306a36Sopenharmony_ci				nhk_cfg2 {
5562306a36Sopenharmony_ci					pins = "GPIO79_C9"; // reset line
5662306a36Sopenharmony_ci					ste,output = <1>;
5762306a36Sopenharmony_ci				};
5862306a36Sopenharmony_ci			};
5962306a36Sopenharmony_ci		};
6062306a36Sopenharmony_ci		lis3lv02dl {
6162306a36Sopenharmony_ci			lis3lv02dl_nhk_mode: lis3lv02dl_nhk {
6262306a36Sopenharmony_ci				nhk_cfg1 {
6362306a36Sopenharmony_ci					pins = "GPIO82_C10"; // IRQ line
6462306a36Sopenharmony_ci					ste,input = <0>;
6562306a36Sopenharmony_ci				};
6662306a36Sopenharmony_ci			};
6762306a36Sopenharmony_ci		};
6862306a36Sopenharmony_ci	};
6962306a36Sopenharmony_ci	src@101e0000 {
7062306a36Sopenharmony_ci		/* These chrystal outputs are not used on this board */
7162306a36Sopenharmony_ci		disable-sxtalo;
7262306a36Sopenharmony_ci		disable-mxtalo;
7362306a36Sopenharmony_ci	};
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	/* This is where the interrupt is routed on the NHK-15 debug board */
7662306a36Sopenharmony_ci	external-bus@34000000 {
7762306a36Sopenharmony_ci		compatible = "simple-bus";
7862306a36Sopenharmony_ci		reg = <0x34000000 0x1000000>;
7962306a36Sopenharmony_ci		#address-cells = <1>;
8062306a36Sopenharmony_ci		#size-cells = <1>;
8162306a36Sopenharmony_ci		ranges = <0 0x34000000 0x1000000>;
8262306a36Sopenharmony_ci		ethernet@300 {
8362306a36Sopenharmony_ci			compatible = "smsc,lan91c111";
8462306a36Sopenharmony_ci			reg = <0x300 0x0fd00>;
8562306a36Sopenharmony_ci			reg-io-width = <2>;
8662306a36Sopenharmony_ci			reset-gpios = <&stmpe_gpio44 10 GPIO_ACTIVE_HIGH>;
8762306a36Sopenharmony_ci			interrupt-parent = <&stmpe_gpio44>;
8862306a36Sopenharmony_ci			interrupts = <11 IRQ_TYPE_EDGE_RISING>;
8962306a36Sopenharmony_ci		};
9062306a36Sopenharmony_ci	};
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci	i2c0 {
9362306a36Sopenharmony_ci		lis3lv02dl@1d {
9462306a36Sopenharmony_ci			/* Accelerometer */
9562306a36Sopenharmony_ci			compatible = "st,lis3lv02dl-accel";
9662306a36Sopenharmony_ci			interrupt-parent = <&gpio2>;
9762306a36Sopenharmony_ci			interrupts = <18 IRQ_TYPE_EDGE_RISING>; // GPIO 82
9862306a36Sopenharmony_ci			pinctrl-0 = <&lis3lv02dl_nhk_mode>;
9962306a36Sopenharmony_ci			pinctrl-names = "default";
10062306a36Sopenharmony_ci			reg = <0x1d>;
10162306a36Sopenharmony_ci		};
10262306a36Sopenharmony_ci		stmpe0: port-expander@43 {
10362306a36Sopenharmony_ci			compatible = "st,stmpe2401";
10462306a36Sopenharmony_ci			reg = <0x43>;
10562306a36Sopenharmony_ci			reset-gpios = <&gpio2 13 GPIO_ACTIVE_LOW>; // GPIO77
10662306a36Sopenharmony_ci			interrupts = <12 IRQ_TYPE_EDGE_FALLING>; // GPIO76
10762306a36Sopenharmony_ci			interrupt-parent = <&gpio2>;
10862306a36Sopenharmony_ci			wakeup-source;
10962306a36Sopenharmony_ci			pinctrl-names = "default";
11062306a36Sopenharmony_ci			pinctrl-0 = <&stmpe2401_1_nhk_mode>;
11162306a36Sopenharmony_ci			stmpe_gpio43: gpio {
11262306a36Sopenharmony_ci				compatible = "st,stmpe-gpio";
11362306a36Sopenharmony_ci				gpio-controller;
11462306a36Sopenharmony_ci				#gpio-cells = <2>;
11562306a36Sopenharmony_ci				interrupt-controller;
11662306a36Sopenharmony_ci				#interrupt-cells = <2>;
11762306a36Sopenharmony_ci				/* Some pins in alternate functions */
11862306a36Sopenharmony_ci				st,norequest-mask = <0xf0f002>;
11962306a36Sopenharmony_ci			};
12062306a36Sopenharmony_ci			keyboard-controller {
12162306a36Sopenharmony_ci				compatible = "st,stmpe-keypad";
12262306a36Sopenharmony_ci				debounce-interval = <64>;
12362306a36Sopenharmony_ci				st,scan-count = <8>;
12462306a36Sopenharmony_ci				st,no-autorepeat;
12562306a36Sopenharmony_ci				keypad,num-rows = <8>;
12662306a36Sopenharmony_ci				keypad,num-columns = <8>;
12762306a36Sopenharmony_ci				linux,keymap = <0x00020072 // Vol down
12862306a36Sopenharmony_ci						0x00030073 // Vol up
12962306a36Sopenharmony_ci						0x0100009e // Back
13062306a36Sopenharmony_ci						0x010100e3 // TV out
13162306a36Sopenharmony_ci						0x01020098 // Lock
13262306a36Sopenharmony_ci						0x0103013b // Start
13362306a36Sopenharmony_ci						0x020000a3 // Next
13462306a36Sopenharmony_ci						0x020100a4 // Play
13562306a36Sopenharmony_ci						0x020200a5 // Prev
13662306a36Sopenharmony_ci						0x02030160 // OK
13762306a36Sopenharmony_ci						0x03000069 // Left
13862306a36Sopenharmony_ci						0x0301006a // Right
13962306a36Sopenharmony_ci						0x03020067 // Up
14062306a36Sopenharmony_ci						0x0303006c>; // Down
14162306a36Sopenharmony_ci			};
14262306a36Sopenharmony_ci			stmpe0_pwm: pwm {
14362306a36Sopenharmony_ci				compatible = "st,stmpe-pwm";
14462306a36Sopenharmony_ci				#pwm-cells = <2>;
14562306a36Sopenharmony_ci			};
14662306a36Sopenharmony_ci		};
14762306a36Sopenharmony_ci		stmpe1: port-expander@44 {
14862306a36Sopenharmony_ci			compatible = "st,stmpe2401";
14962306a36Sopenharmony_ci			reg = <0x44>;
15062306a36Sopenharmony_ci			reset-gpios = <&gpio2 15 GPIO_ACTIVE_LOW>; // GPIO79
15162306a36Sopenharmony_ci			interrupts = <14 IRQ_TYPE_EDGE_FALLING>; // GPIO78
15262306a36Sopenharmony_ci			interrupt-parent = <&gpio2>;
15362306a36Sopenharmony_ci			wakeup-source;
15462306a36Sopenharmony_ci			pinctrl-names = "default";
15562306a36Sopenharmony_ci			pinctrl-0 = <&stmpe2401_2_nhk_mode>;
15662306a36Sopenharmony_ci			stmpe_gpio44: gpio {
15762306a36Sopenharmony_ci				compatible = "st,stmpe-gpio";
15862306a36Sopenharmony_ci				gpio-controller;
15962306a36Sopenharmony_ci				#gpio-cells = <2>;
16062306a36Sopenharmony_ci				interrupt-controller;
16162306a36Sopenharmony_ci				#interrupt-cells = <2>;
16262306a36Sopenharmony_ci				/*
16362306a36Sopenharmony_ci				 * This will turn off SATA so that MMC/SD
16462306a36Sopenharmony_ci				 * can thrive
16562306a36Sopenharmony_ci				 */
16662306a36Sopenharmony_ci				mmcsd-hog {
16762306a36Sopenharmony_ci					gpio-hog;
16862306a36Sopenharmony_ci					gpios = <2 0x0>;
16962306a36Sopenharmony_ci					output-low;
17062306a36Sopenharmony_ci					line-name = "SATA EN";
17162306a36Sopenharmony_ci				};
17262306a36Sopenharmony_ci			};
17362306a36Sopenharmony_ci		};
17462306a36Sopenharmony_ci	};
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci	amba {
17762306a36Sopenharmony_ci		clcd@10120000 {
17862306a36Sopenharmony_ci			status = "okay";
17962306a36Sopenharmony_ci			pinctrl-names = "default";
18062306a36Sopenharmony_ci			pinctrl-0 = <&clcd_24bit_mux>;
18162306a36Sopenharmony_ci			port {
18262306a36Sopenharmony_ci				nomadik_clcd: endpoint {
18362306a36Sopenharmony_ci					remote-endpoint = <&nomadik_clcd_panel>;
18462306a36Sopenharmony_ci					arm,pl11x,tft-r0g0b0-pads = <16 8 0>;
18562306a36Sopenharmony_ci				};
18662306a36Sopenharmony_ci			};
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci		};
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci		/* Activate RX/TX and CTS/RTS on UART 0 */
19162306a36Sopenharmony_ci		uart0: serial@101fd000 {
19262306a36Sopenharmony_ci			pinctrl-names = "default";
19362306a36Sopenharmony_ci			pinctrl-0 = <&uart0_nhk_mode>;
19462306a36Sopenharmony_ci			status = "okay";
19562306a36Sopenharmony_ci		};
19662306a36Sopenharmony_ci		mmcsd: mmc@101f6000 {
19762306a36Sopenharmony_ci			cd-gpios = <&stmpe_gpio44 7 GPIO_ACTIVE_LOW>;
19862306a36Sopenharmony_ci			wp-gpios = <&stmpe_gpio44 18 GPIO_ACTIVE_HIGH>;
19962306a36Sopenharmony_ci		};
20062306a36Sopenharmony_ci	};
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci	spi {
20362306a36Sopenharmony_ci		compatible = "spi-gpio";
20462306a36Sopenharmony_ci		#address-cells = <1>;
20562306a36Sopenharmony_ci		#size-cells = <0>;
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci		/*
20862306a36Sopenharmony_ci		 * As we're dealing with 3wire SPI, we only define SCK
20962306a36Sopenharmony_ci		 * and MOSI (in the spec MOSI is called "SDA").
21062306a36Sopenharmony_ci		 */
21162306a36Sopenharmony_ci		sck-gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
21262306a36Sopenharmony_ci		mosi-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
21362306a36Sopenharmony_ci		cs-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
21462306a36Sopenharmony_ci		num-chipselects = <1>;
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci		/*
21762306a36Sopenharmony_ci		 * WVGA connector 21
21862306a36Sopenharmony_ci		 * WVGA (800x480): 4.3" TPG110 TDO43MTEA2 24-bit RGB
21962306a36Sopenharmony_ci		 * with TPO touch screen.
22062306a36Sopenharmony_ci		  */
22162306a36Sopenharmony_ci		panel: display@0 {
22262306a36Sopenharmony_ci			/*
22362306a36Sopenharmony_ci			 * The TPO display driver is connected to a
22462306a36Sopenharmony_ci			 * 5.7" OSD OSD057VA01CT TFT display.
22562306a36Sopenharmony_ci			 */
22662306a36Sopenharmony_ci			compatible = "tpo,tpg110";
22762306a36Sopenharmony_ci			reg = <0>;
22862306a36Sopenharmony_ci			spi-3wire;
22962306a36Sopenharmony_ci			/* 320 ns min period ~= 3 MHz */
23062306a36Sopenharmony_ci			spi-max-frequency = <3000000>;
23162306a36Sopenharmony_ci			/* Width and height from the OSD data sheet */
23262306a36Sopenharmony_ci			width-mm = <116>;
23362306a36Sopenharmony_ci			height-mm = <87>;
23462306a36Sopenharmony_ci			grestb-gpios = <&stmpe_gpio44 5 GPIO_ACTIVE_LOW>;
23562306a36Sopenharmony_ci			backlight = <&bl>;
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ci			port {
23862306a36Sopenharmony_ci				nomadik_clcd_panel: endpoint {
23962306a36Sopenharmony_ci					remote-endpoint = <&nomadik_clcd>;
24062306a36Sopenharmony_ci				};
24162306a36Sopenharmony_ci			};
24262306a36Sopenharmony_ci		};
24362306a36Sopenharmony_ci	};
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci	bl: backlight {
24662306a36Sopenharmony_ci		compatible = "pwm-backlight";
24762306a36Sopenharmony_ci		pwms = <&stmpe0_pwm 0 500000>;
24862306a36Sopenharmony_ci		pwm-names = "backlight";
24962306a36Sopenharmony_ci		brightness-levels = <
25062306a36Sopenharmony_ci			0  1  2  3  4  5  6  7  8  9
25162306a36Sopenharmony_ci			10 11 12 13 14 15 16 17 18 19
25262306a36Sopenharmony_ci			20 21 22 23 24 25 26 27 28 29
25362306a36Sopenharmony_ci			30 31 32 33 34 35 36 37 38 39
25462306a36Sopenharmony_ci			40 41 42 43 44 45 46 47 48 49
25562306a36Sopenharmony_ci			50 51 52 53 54 55 56 57 58 59
25662306a36Sopenharmony_ci			60 61 62 63 64 65 66 67 68 69
25762306a36Sopenharmony_ci			70 71 72 73 74 75 76 77 78 79
25862306a36Sopenharmony_ci			80 81 82 83 84 85 86 87 88 89
25962306a36Sopenharmony_ci			90 91 92 93 94 95 96 97 98 99
26062306a36Sopenharmony_ci			100
26162306a36Sopenharmony_ci		>;
26262306a36Sopenharmony_ci		default-brightness-level = <100>;
26362306a36Sopenharmony_ci	};
26462306a36Sopenharmony_ci};
265