/*
 * Copyright (c) 2019 STMicroelectronics
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/mp1/stm32mp157.dtsi>
#include <st/mp1/stm32mp157cacx-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"

/ {
	model = "STMicroelectronics STM32MP157-DK2 board";
	compatible = "st,stm32mp157c-dk2";
	chosen {
		/*
		 * By default, Zephyr console and shell are assigned to
		 * remoteproc. To enable console and shell over UART, uncomment
		 * following lines and set the correct config in
		 * stm32mp157c_dk2_defconfig "Serial Port" section in Zephyr
		 * board documentation.
		 * zephyr,console = &usart3;
		 * zephyr,shell-uart = &usart3;
		 */
		zephyr,flash = &retram;
		zephyr,sram = &mcusram;
	};

	leds {
		compatible = "gpio-leds";
		red_led_1: led_1 {
			gpios = <&gpioh 7 GPIO_ACTIVE_HIGH>;
			label = "LD7";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button {
			label = "User 1";
			gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
		};
	};

	aliases {
		led0 = &red_led_1;
		sw0 = &user_button;
	};

};

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

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

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

&spi5{
	pinctrl-0 = <&spi5_nss_pf6 &spi5_sck_pf7
		     &spi5_miso_pf8 &spi5_mosi_pf9>;
	status = "okay";
};

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

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

&mailbox {
	status = "okay";
};

&i2c5 {
	pinctrl-0 = <&i2c5_scl_pa11 &i2c5_sda_pa12>;
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
};
