/*
 * Copyright (c) 2020 Linaro Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <st/f4/stm32f427vi.dtsi>
#include <st/f4/stm32f427v(g-i)tx-pinctrl.dtsi>

/ {
	model = "96Boards Gumstix AeroCore 2";
	compatible = "gumstix,aerocore2";

	chosen {
		zephyr,console = &uart7;
		zephyr,shell-uart = &uart7;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,ccm = &ccm0;
	};

	leds {
		compatible = "gpio-leds";
		yellow_led_1: led_1 {
			gpios = <&gpioe 10 GPIO_ACTIVE_HIGH>;
			label = "USR1 LED";
		};
		blue_led_2: led_2 {
			gpios = <&gpioe 9 GPIO_ACTIVE_HIGH>;
			label = "USR2 LED";
		};
	};

	aliases {
		led0 = &yellow_led_1;
		led1 = &blue_led_2;
	};

};

&clk_hse {
	clock-frequency = <DT_FREQ_M(24)>;
	status = "okay";
};

&pll {
	div-m = <24>;
	mul-n = <336>;
	div-p = <2>;
	div-q = <7>;
	clocks = <&clk_hse>;
	status = "okay";
};

&rcc {
	clocks = <&pll>;
	clock-frequency = <DT_FREQ_M(168)>;
	ahb-prescaler = <1>;
	apb1-prescaler = <4>;
	apb2-prescaler = <2>;
};

&usart1 {
	pinctrl-0 = <&usart1_tx_pb6 &usart1_rx_pb7>;
	current-speed = <115200>;
	status = "okay";
};

&usart2 {
	pinctrl-0 = <&usart2_tx_pd5 &usart2_rx_pd6>;
	current-speed = <115200>;
	status = "okay";
};

&usart3 {
	pinctrl-0 = <&usart3_tx_pd8 &usart3_rx_pd9>;
	current-speed = <115200>;
	status = "okay";
};

&uart7 {
	pinctrl-0 = <&uart7_tx_pe8 &uart7_rx_pe7>;
	current-speed = <115200>;
	status = "okay";
};

&uart8 {
	pinctrl-0 = <&uart8_tx_pe1 &uart8_rx_pe0>;
	current-speed = <115200>;
	status = "okay";
};

&spi1_nss_pa4 { slew-rate = "very-high-speed"; };

&spi1 {
	pinctrl-0 = <&spi1_nss_pa4 &spi1_sck_pa5
		     &spi1_miso_pa6 &spi1_mosi_pa7>;
	status = "okay";
};

&spi2_nss_pb12 { slew-rate = "very-high-speed"; };

&spi2 {
	pinctrl-0 = <&spi2_nss_pb12 &spi2_sck_pb13
		     &spi2_miso_pb14 &spi2_mosi_pb15>;
	status = "okay";
};

&spi3 {
	pinctrl-0 = <&spi3_sck_pc10 &spi3_miso_pc11 &spi3_mosi_pc12>;
	status = "okay";
};

&spi4_nss_pe11 { slew-rate = "very-high-speed"; };

&spi4 {
	pinctrl-0 = <&spi4_nss_pe11 &spi4_sck_pe12
		     &spi4_miso_pe13 &spi4_mosi_pe14>;
	status = "okay";
};

&i2c2 {
	pinctrl-0 = <&i2c2_scl_pb10 &i2c2_sda_pb11>;
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
};

zephyr_udc0: &usbotg_fs {
	pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12>;
	status = "okay";
};

&timers4 {
	status = "okay";

	pwm4: pwm {
		status = "okay";
		pinctrl-0 = <&tim4_ch1_pd12
			     &tim4_ch2_pd13
			     &tim4_ch3_pd14
			     &tim4_ch4_pd15>;
	};
};

&timers5 {
	status = "okay";

	pwm5: pwm {
		status = "okay";
		pinctrl-0 = <&tim5_ch1_pa0
			     &tim5_ch2_pa1
			     &tim5_ch3_pa2
			     &tim5_ch4_pa3>;
	};
};

&adc1 {
	pinctrl-0 = <&adc1_in10_pc0 &adc1_in11_pc1
		     &adc1_in12_pc2 &adc1_in13_pc3>;
	status = "okay";
};

&rng {
	status = "okay";
};
