1/*
2 * Copyright (c) 2017 Powersoft
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7/dts-v1/;
8#include <st/f4/stm32f412Xg.dtsi>
9#include <st/f4/stm32f412z(e-g)tx-pinctrl.dtsi>
10#include "arduino_r3_connector.dtsi"
11#include <zephyr/dt-bindings/input/input-event-codes.h>
12
13/ {
14	model = "STMicroelectronics STM32F412G-DISCO board";
15	compatible = "st,stm32f412g-disco";
16
17	chosen {
18		zephyr,console = &usart2;
19		zephyr,shell-uart = &usart2;
20		zephyr,sram = &sram0;
21		zephyr,flash = &flash0;
22	};
23
24	leds {
25		compatible = "gpio-leds";
26
27		green_led_1: led_1 {
28			gpios = <&gpioe 0 GPIO_ACTIVE_HIGH>;
29			label = "User LD1";
30		};
31
32		orange_led_2: led_2 {
33			gpios = <&gpioe 1 GPIO_ACTIVE_HIGH>;
34			label = "User LD2";
35		};
36
37		red_led_3: led_3 {
38			gpios = <&gpioe 2 GPIO_ACTIVE_HIGH>;
39			label = "User LD3";
40		};
41
42		blue_led_4: led_4 {
43			gpios = <&gpioe 3 GPIO_ACTIVE_HIGH>;
44			label = "User LD4";
45		};
46	};
47
48	gpio_keys {
49		compatible = "gpio-keys";
50
51		joy_sel: joystick_selection {
52			label = "joystick selection";
53			gpios = <&gpioa 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
54			zephyr,code = <INPUT_KEY_ENTER>;
55		};
56
57		joy_down: joystick_down {
58			label = "joystick down";
59			gpios = <&gpiog 1 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
60			zephyr,code = <INPUT_KEY_DOWN>;
61		};
62
63		joy_up: joystick_up {
64			label = "joystick up";
65			gpios = <&gpiog 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
66			zephyr,code = <INPUT_KEY_UP>;
67		};
68
69		joy_left: joystick_left {
70			label = "joystick left";
71			gpios = <&gpiof 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
72			zephyr,code = <INPUT_KEY_LEFT>;
73		};
74
75		joy_right: joystick_right {
76			label = "joystick right";
77			gpios = <&gpiof 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
78			zephyr,code = <INPUT_KEY_RIGHT>;
79		};
80	};
81
82	aliases {
83		led0 = &green_led_1;
84		led1 = &orange_led_2;
85		led2 = &red_led_3;
86		led3 = &blue_led_4;
87		sw0 = &joy_sel;
88	};
89};
90
91&clk_lsi {
92	status = "okay";
93};
94
95&clk_hse {
96	hse-bypass;
97	clock-frequency = <DT_FREQ_M(8)>; /* STLink 8MHz clock */
98	status = "okay";
99};
100
101&pll {
102	div-m = <4>;
103	mul-n = <100>;
104	div-p = <2>;
105	div-q = <8>;
106	clocks = <&clk_hse>;
107	status = "okay";
108};
109
110&rcc {
111	clocks = <&pll>;
112	clock-frequency = <DT_FREQ_M(100)>;
113	ahb-prescaler = <1>;
114	apb1-prescaler = <2>;
115	apb2-prescaler = <1>;
116};
117
118&usart2 {
119	pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pa3>;
120	pinctrl-names = "default";
121	current-speed = <115200>;
122	status = "okay";
123};
124
125&usart6 {
126	pinctrl-0 = <&usart6_tx_pg14 &usart6_rx_pg9>;
127	pinctrl-names = "default";
128	current-speed = <115200>;
129	status = "okay";
130};
131
132&i2c2 {
133	pinctrl-0 = <&i2c2_scl_pb10 &i2c2_sda_pb9>;
134	pinctrl-names = "default";
135	clock-frequency = <I2C_BITRATE_FAST>;
136	status = "okay";
137};
138
139&spi1 {
140	pinctrl-0 = <&spi1_nss_pa15 &spi1_sck_pa5
141		     &spi1_miso_pa6 &spi1_mosi_pa7>;
142	pinctrl-names = "default";
143	status = "okay";
144};
145
146&rtc {
147	clocks = <&rcc STM32_CLOCK(APB1, 28)>,
148		 <&rcc STM32_SRC_LSI RTC_SEL(2)>;
149	status = "okay";
150};
151
152&quadspi {
153	pinctrl-0 = <&quadspi_clk_pb2 &quadspi_bk1_ncs_pg6
154		     &quadspi_bk1_io0_pf8 &quadspi_bk1_io1_pf9
155		     &quadspi_bk1_io2_pf7 &quadspi_bk1_io3_pf6>;
156	pinctrl-names = "default";
157	status = "okay";
158
159	n25q128a1: qspi-nor-flash@0 {
160		compatible = "st,stm32-qspi-nor";
161		reg = <0>;
162		size = <DT_SIZE_M(128)>; /* 128 Mbits */
163		qspi-max-frequency = <72000000>;
164		cs-high-time = <4>; /* >= 50 ns */
165		status = "okay";
166	};
167};
168