162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * at91sam9n12ek.dts - Device Tree file for AT91SAM9N12-EK board
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *  Copyright (C) 2012 Atmel,
662306a36Sopenharmony_ci *                2012 Hong Xu <hong.xu@atmel.com>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci/dts-v1/;
962306a36Sopenharmony_ci#include "at91sam9n12.dtsi"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/ {
1262306a36Sopenharmony_ci	model = "Atmel AT91SAM9N12-EK";
1362306a36Sopenharmony_ci	compatible = "atmel,at91sam9n12ek", "atmel,at91sam9n12", "atmel,at91sam9";
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	chosen {
1662306a36Sopenharmony_ci		bootargs = "root=/dev/mtdblock1 rw rootfstype=jffs2";
1762306a36Sopenharmony_ci		stdout-path = "serial0:115200n8";
1862306a36Sopenharmony_ci	};
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	memory@20000000 {
2162306a36Sopenharmony_ci		reg = <0x20000000 0x8000000>;
2262306a36Sopenharmony_ci	};
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	clocks {
2562306a36Sopenharmony_ci		slow_xtal {
2662306a36Sopenharmony_ci			clock-frequency = <32768>;
2762306a36Sopenharmony_ci		};
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci		main_xtal {
3062306a36Sopenharmony_ci			clock-frequency = <16000000>;
3162306a36Sopenharmony_ci		};
3262306a36Sopenharmony_ci	};
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci	ahb {
3562306a36Sopenharmony_ci		apb {
3662306a36Sopenharmony_ci			dbgu: serial@fffff200 {
3762306a36Sopenharmony_ci				status = "okay";
3862306a36Sopenharmony_ci			};
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci			ssc0: ssc@f0010000 {
4162306a36Sopenharmony_ci				status = "okay";
4262306a36Sopenharmony_ci			};
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci			tcb0: timer@f8008000 {
4562306a36Sopenharmony_ci				timer@0 {
4662306a36Sopenharmony_ci					compatible = "atmel,tcb-timer";
4762306a36Sopenharmony_ci					reg = <0>;
4862306a36Sopenharmony_ci				};
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci				timer@1 {
5162306a36Sopenharmony_ci					compatible = "atmel,tcb-timer";
5262306a36Sopenharmony_ci					reg = <1>;
5362306a36Sopenharmony_ci				};
5462306a36Sopenharmony_ci			};
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci			i2c0: i2c@f8010000 {
5762306a36Sopenharmony_ci				status = "okay";
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci				wm8904: codec@1a {
6062306a36Sopenharmony_ci					compatible = "wlf,wm8904";
6162306a36Sopenharmony_ci					reg = <0x1a>;
6262306a36Sopenharmony_ci					clocks = <&pmc PMC_TYPE_SYSTEM 8>;
6362306a36Sopenharmony_ci					clock-names = "mclk";
6462306a36Sopenharmony_ci				};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci				qt1070: keyboard@1b {
6762306a36Sopenharmony_ci					compatible = "qt1070";
6862306a36Sopenharmony_ci					reg = <0x1b>;
6962306a36Sopenharmony_ci					interrupt-parent = <&pioA>;
7062306a36Sopenharmony_ci					interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
7162306a36Sopenharmony_ci					pinctrl-names = "default";
7262306a36Sopenharmony_ci					pinctrl-0 = <&pinctrl_qt1070_irq>;
7362306a36Sopenharmony_ci				};
7462306a36Sopenharmony_ci			};
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci			mmc0: mmc@f0008000 {
7762306a36Sopenharmony_ci				pinctrl-0 = <
7862306a36Sopenharmony_ci					&pinctrl_board_mmc0
7962306a36Sopenharmony_ci					&pinctrl_mmc0_slot0_clk_cmd_dat0
8062306a36Sopenharmony_ci					&pinctrl_mmc0_slot0_dat1_3>;
8162306a36Sopenharmony_ci				status = "okay";
8262306a36Sopenharmony_ci				slot@0 {
8362306a36Sopenharmony_ci					reg = <0>;
8462306a36Sopenharmony_ci					bus-width = <4>;
8562306a36Sopenharmony_ci					cd-gpios = <&pioA 7 GPIO_ACTIVE_HIGH>;
8662306a36Sopenharmony_ci				};
8762306a36Sopenharmony_ci			};
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci			pinctrl@fffff400 {
9062306a36Sopenharmony_ci				mmc0 {
9162306a36Sopenharmony_ci					pinctrl_board_mmc0: mmc0-board {
9262306a36Sopenharmony_ci						atmel,pins =
9362306a36Sopenharmony_ci							<AT91_PIOA 7 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;	/* PA7 gpio CD pin pull up and deglitch */
9462306a36Sopenharmony_ci					};
9562306a36Sopenharmony_ci				};
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci				qt1070 {
9862306a36Sopenharmony_ci					pinctrl_qt1070_irq: qt1070_irq {
9962306a36Sopenharmony_ci						atmel,pins =
10062306a36Sopenharmony_ci							<AT91_PIOA 2 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
10162306a36Sopenharmony_ci					};
10262306a36Sopenharmony_ci				};
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci				sound {
10562306a36Sopenharmony_ci					pinctrl_pck0_as_audio_mck: pck0_as_audio_mck {
10662306a36Sopenharmony_ci						atmel,pins =
10762306a36Sopenharmony_ci							<AT91_PIOB 10 AT91_PERIPH_B AT91_PINCTRL_NONE>;
10862306a36Sopenharmony_ci					};
10962306a36Sopenharmony_ci				};
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci				usb1 {
11262306a36Sopenharmony_ci					pinctrl_usb1_vbus_sense: usb1_vbus_sense {
11362306a36Sopenharmony_ci						atmel,pins =
11462306a36Sopenharmony_ci							<AT91_PIOB 16 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;	/* PB16 gpio usb vbus sense, no pull up and deglitch */
11562306a36Sopenharmony_ci					};
11662306a36Sopenharmony_ci				};
11762306a36Sopenharmony_ci			};
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci			spi0: spi@f0000000 {
12062306a36Sopenharmony_ci				status = "okay";
12162306a36Sopenharmony_ci				cs-gpios = <&pioA 14 0>, <0>, <0>, <0>;
12262306a36Sopenharmony_ci				flash@0 {
12362306a36Sopenharmony_ci					compatible = "atmel,at25df321a";
12462306a36Sopenharmony_ci					spi-max-frequency = <50000000>;
12562306a36Sopenharmony_ci					reg = <0>;
12662306a36Sopenharmony_ci				};
12762306a36Sopenharmony_ci			};
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci			hlcdc: hlcdc@f8038000 {
13062306a36Sopenharmony_ci				status = "okay";
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci				hlcdc-display-controller {
13362306a36Sopenharmony_ci					pinctrl-names = "default";
13462306a36Sopenharmony_ci					pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci					port@0 {
13762306a36Sopenharmony_ci						hlcdc_panel_output: endpoint@0 {
13862306a36Sopenharmony_ci							reg = <0>;
13962306a36Sopenharmony_ci							remote-endpoint = <&panel_input>;
14062306a36Sopenharmony_ci						};
14162306a36Sopenharmony_ci					};
14262306a36Sopenharmony_ci				};
14362306a36Sopenharmony_ci			};
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci			usb1: gadget@f803c000 {
14662306a36Sopenharmony_ci				pinctrl-names = "default";
14762306a36Sopenharmony_ci				pinctrl-0 = <&pinctrl_usb1_vbus_sense>;
14862306a36Sopenharmony_ci				atmel,vbus-gpio = <&pioB 16 GPIO_ACTIVE_HIGH>;
14962306a36Sopenharmony_ci				status = "okay";
15062306a36Sopenharmony_ci			};
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci			watchdog@fffffe40 {
15362306a36Sopenharmony_ci				status = "okay";
15462306a36Sopenharmony_ci			};
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci			rtc@fffffeb0 {
15762306a36Sopenharmony_ci				status = "okay";
15862306a36Sopenharmony_ci			};
15962306a36Sopenharmony_ci		};
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci		ebi: ebi@10000000 {
16262306a36Sopenharmony_ci			status = "okay";
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ci			nand_controller: nand-controller {
16562306a36Sopenharmony_ci				status = "okay";
16662306a36Sopenharmony_ci				pinctrl-0 = <&pinctrl_nand_cs &pinctrl_nand_rb>;
16762306a36Sopenharmony_ci				pinctrl-names = "default";
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci				nand@3 {
17062306a36Sopenharmony_ci					reg = <0x3 0x0 0x800000>;
17162306a36Sopenharmony_ci					rb-gpios = <&pioD 5 GPIO_ACTIVE_HIGH>;
17262306a36Sopenharmony_ci					cs-gpios = <&pioD 4 GPIO_ACTIVE_HIGH>;
17362306a36Sopenharmony_ci					nand-bus-width = <8>;
17462306a36Sopenharmony_ci					nand-ecc-mode = "soft";
17562306a36Sopenharmony_ci					nand-ecc-strength = <2>;
17662306a36Sopenharmony_ci					nand-ecc-step-size = <512>;
17762306a36Sopenharmony_ci					nand-on-flash-bbt;
17862306a36Sopenharmony_ci					label = "atmel_nand";
17962306a36Sopenharmony_ci				};
18062306a36Sopenharmony_ci			};
18162306a36Sopenharmony_ci		};
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci		usb0: ohci@500000 {
18462306a36Sopenharmony_ci			num-ports = <1>;
18562306a36Sopenharmony_ci			atmel,vbus-gpio = <&pioB 7 GPIO_ACTIVE_LOW>;
18662306a36Sopenharmony_ci			status = "okay";
18762306a36Sopenharmony_ci		};
18862306a36Sopenharmony_ci	};
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci	backlight: backlight {
19162306a36Sopenharmony_ci		compatible = "pwm-backlight";
19262306a36Sopenharmony_ci		pwms = <&hlcdc_pwm 0 50000 0>;
19362306a36Sopenharmony_ci		brightness-levels = <0 4 8 16 32 64 128 255>;
19462306a36Sopenharmony_ci		default-brightness-level = <6>;
19562306a36Sopenharmony_ci		power-supply = <&bl_reg>;
19662306a36Sopenharmony_ci		status = "okay";
19762306a36Sopenharmony_ci	};
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci	bl_reg: backlight_regulator {
20062306a36Sopenharmony_ci		compatible = "regulator-fixed";
20162306a36Sopenharmony_ci		regulator-name = "backlight-power-supply";
20262306a36Sopenharmony_ci		regulator-min-microvolt = <5000000>;
20362306a36Sopenharmony_ci		regulator-max-microvolt = <5000000>;
20462306a36Sopenharmony_ci		status = "okay";
20562306a36Sopenharmony_ci	};
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci	leds {
20862306a36Sopenharmony_ci		compatible = "gpio-leds";
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci		d8 {
21162306a36Sopenharmony_ci			label = "d8";
21262306a36Sopenharmony_ci			gpios = <&pioB 4 GPIO_ACTIVE_LOW>;
21362306a36Sopenharmony_ci			linux,default-trigger = "mmc0";
21462306a36Sopenharmony_ci		};
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci		d9 {
21762306a36Sopenharmony_ci			label = "d9";
21862306a36Sopenharmony_ci			gpios = <&pioB 5 GPIO_ACTIVE_LOW>;
21962306a36Sopenharmony_ci			linux,default-trigger = "nand-disk";
22062306a36Sopenharmony_ci		};
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ci		d10 {
22362306a36Sopenharmony_ci			label = "d10";
22462306a36Sopenharmony_ci			gpios = <&pioB 6 GPIO_ACTIVE_HIGH>;
22562306a36Sopenharmony_ci			linux,default-trigger = "heartbeat";
22662306a36Sopenharmony_ci		};
22762306a36Sopenharmony_ci	};
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci	gpio-keys {
23062306a36Sopenharmony_ci		compatible = "gpio-keys";
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci		button-enter {
23362306a36Sopenharmony_ci			label = "Enter";
23462306a36Sopenharmony_ci			gpios = <&pioB 3 GPIO_ACTIVE_LOW>;
23562306a36Sopenharmony_ci			linux,code = <28>;
23662306a36Sopenharmony_ci			wakeup-source;
23762306a36Sopenharmony_ci		};
23862306a36Sopenharmony_ci	};
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci	panel: panel {
24162306a36Sopenharmony_ci		compatible = "qiaodian,qd43003c0-40";
24262306a36Sopenharmony_ci		backlight = <&backlight>;
24362306a36Sopenharmony_ci		power-supply = <&panel_reg>;
24462306a36Sopenharmony_ci		#address-cells = <1>;
24562306a36Sopenharmony_ci		#size-cells = <0>;
24662306a36Sopenharmony_ci		status = "okay";
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci		port@0 {
24962306a36Sopenharmony_ci			reg = <0>;
25062306a36Sopenharmony_ci			#address-cells = <1>;
25162306a36Sopenharmony_ci			#size-cells = <0>;
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci			panel_input: endpoint@0 {
25462306a36Sopenharmony_ci				reg = <0>;
25562306a36Sopenharmony_ci				remote-endpoint = <&hlcdc_panel_output>;
25662306a36Sopenharmony_ci			};
25762306a36Sopenharmony_ci		};
25862306a36Sopenharmony_ci	};
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ci	panel_reg: panel_regulator {
26162306a36Sopenharmony_ci		compatible = "regulator-fixed";
26262306a36Sopenharmony_ci		regulator-name = "panel-power-supply";
26362306a36Sopenharmony_ci		regulator-min-microvolt = <3300000>;
26462306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
26562306a36Sopenharmony_ci		status = "okay";
26662306a36Sopenharmony_ci	};
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci	sound {
26962306a36Sopenharmony_ci		compatible = "atmel,asoc-wm8904";
27062306a36Sopenharmony_ci		pinctrl-names = "default";
27162306a36Sopenharmony_ci		pinctrl-0 = <&pinctrl_pck0_as_audio_mck>;
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci		atmel,model = "wm8904 @ AT91SAM9N12";
27462306a36Sopenharmony_ci		atmel,audio-routing =
27562306a36Sopenharmony_ci			"Headphone Jack", "HPOUTL",
27662306a36Sopenharmony_ci			"Headphone Jack", "HPOUTR",
27762306a36Sopenharmony_ci			"IN2L", "Line In Jack",
27862306a36Sopenharmony_ci			"IN2R", "Line In Jack",
27962306a36Sopenharmony_ci			"Mic", "MICBIAS",
28062306a36Sopenharmony_ci			"IN1L", "Mic";
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci		atmel,ssc-controller = <&ssc0>;
28362306a36Sopenharmony_ci		atmel,audio-codec = <&wm8904>;
28462306a36Sopenharmony_ci	};
28562306a36Sopenharmony_ci};
286