1/*
2 * Copyright (c) 2017 Linaro Limited
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7/dts-v1/;
8#include <st/l4/stm32l496Xg.dtsi>
9#include <st/l4/stm32l496a(e-g)ix-pinctrl.dtsi>
10#include "arduino_r3_connector.dtsi"
11#include <zephyr/dt-bindings/input/input-event-codes.h>
12
13/ {
14	model = "STMicroelectronics STM32L496G-DISCO board";
15	compatible = "st,stm32l496g-disco";
16
17	chosen {
18		zephyr,console = &usart2;
19		zephyr,shell-uart = &usart2;
20		zephyr,sram = &sram0;
21		zephyr,flash = &flash0;
22		zephyr,flash-controller = &mx25r6435;
23	};
24
25	leds {
26		compatible = "gpio-leds";
27		green_led_2: led_2 {
28			gpios = <&gpiob 13 GPIO_ACTIVE_HIGH>;
29			label = "User LD2";
30		};
31	};
32
33	gpio_keys {
34		compatible = "gpio-keys";
35		joy_sel: joystick_select {
36			label = "joystick select";
37			gpios = <&gpioc 13 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
38			zephyr,code = <INPUT_KEY_ENTER>;
39		};
40		joy_down: joystick_down {
41			label = "joystick down";
42			gpios = <&gpioi 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
43			zephyr,code = <INPUT_KEY_DOWN>;
44		};
45		joy_up: joystick_up {
46			label = "joystick up";
47			gpios = <&gpioi 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
48			zephyr,code = <INPUT_KEY_UP>;
49		};
50		joy_left: joystick_left {
51			label = "joystick left";
52			gpios = <&gpioi 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
53			zephyr,code = <INPUT_KEY_LEFT>;
54		};
55		joy_right: joystick_right {
56			label = "joystick right";
57			gpios = <&gpiof 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
58			zephyr,code = <INPUT_KEY_RIGHT>;
59		};
60	};
61
62	aliases {
63		led0 = &green_led_2;
64		sw0 = &joy_sel;
65		sw1 = &joy_down;
66		sw2 = &joy_right;
67		sw3 = &joy_up;
68		sw4 = &joy_left;
69		volt-sensor0 = &vref;
70		volt-sensor1 = &vbat;
71	};
72
73};
74
75&clk_lsi {
76	status = "okay";
77};
78
79&clk_hsi48 {
80	status = "okay";
81};
82
83&clk_hsi {
84	status = "okay";
85};
86
87&pll {
88	div-m = <1>;
89	mul-n = <20>;
90	div-p = <7>;
91	div-q = <2>;
92	div-r = <4>;
93	clocks = <&clk_hsi>;
94	status = "okay";
95};
96
97&rcc {
98	clocks = <&pll>;
99	clock-frequency = <DT_FREQ_M(80)>;
100	ahb-prescaler = <1>;
101	apb1-prescaler = <1>;
102	apb2-prescaler = <1>;
103};
104
105&usart1 {
106	pinctrl-0 = <&usart1_tx_pb6 &usart1_rx_pg10>;
107	pinctrl-names = "default";
108	current-speed = <115200>;
109	status = "okay";
110};
111
112&usart2 {
113	pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pd6>;
114	pinctrl-names = "default";
115	current-speed = <115200>;
116	status = "okay";
117};
118
119&lpuart1 {
120	pinctrl-0 = <&lpuart1_tx_pg7 &lpuart1_rx_pg8>;
121	pinctrl-names = "default";
122	current-speed = <115200>;
123	status = "okay";
124};
125
126&timers2 {
127	status = "okay";
128
129	pwm2: pwm {
130		status = "okay";
131		pinctrl-0 = <&tim2_ch1_pa0>;
132		pinctrl-names = "default";
133	};
134};
135
136&i2c1 {
137	pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb7>;
138	pinctrl-names = "default";
139	status = "okay";
140	clock-frequency = <I2C_BITRATE_FAST>;
141};
142
143&spi1 {
144	pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pb4 &spi1_mosi_pb5>;
145	pinctrl-names = "default";
146	cs-gpios = <&gpioa 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
147	status = "okay";
148};
149
150&rtc {
151	clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>,
152		 <&rcc STM32_SRC_LSI RTC_SEL(2)>;
153	status = "okay";
154};
155
156&sdmmc1 {
157	pinctrl-0 = <&sdmmc1_d0_pc8 &sdmmc1_d1_pc9
158		     &sdmmc1_d2_pc10 &sdmmc1_d3_pc11
159		     &sdmmc1_ck_pc12 &sdmmc1_cmd_pd2>;
160	pinctrl-names = "default";
161	status = "okay";
162};
163
164&adc1 {
165	pinctrl-0 = < &adc1_in2_pc1>;
166	pinctrl-names = "default";
167	st,adc-clock-source = "SYNC";
168	st,adc-prescaler = <4>;
169	status = "okay";
170};
171
172zephyr_udc0: &usbotg_fs {
173	pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12
174		     &usb_otg_fs_id_pa10>;
175	pinctrl-names = "default";
176	status = "okay";
177};
178
179&vref {
180	status = "okay";
181};
182
183&vbat {
184	status = "okay";
185};
186
187&dma2 {
188	status = "okay";
189};
190
191&quadspi {
192	pinctrl-0 = <&quadspi_bk1_io0_pb1 &quadspi_bk1_io1_pb0
193			&quadspi_bk1_io2_pa7 &quadspi_bk1_io3_pa6
194			&quadspi_bk1_ncs_pb11 &quadspi_clk_pa3>;
195	pinctrl-names = "default";
196
197	dmas = <&dma2 7 3 STM32_DMA_PERIPH_RX>; /* channel 7 request 3 on DMA2 */
198	dma-names = "tx_rx";
199
200	flash-id = <1>;
201	status = "okay";
202
203	mx25r6435: qspi-nor-flash@90000000 {
204		compatible = "st,stm32-qspi-nor";
205		reg = <0x90000000 DT_SIZE_M(8)>; /* 64 Mbits */
206		qspi-max-frequency = <8000000>;
207		status = "okay";
208		spi-bus-width = <4>;
209		writeoc = "PP_1_4_4";
210	};
211};
212