/*
 * Copyright (c) 2020 Yestin Sun
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <st/l5/stm32l562Xe.dtsi>
#include <st/l5/stm32l562qeixq-pinctrl.dtsi>
#include "arduino_r3_connector.dtsi"

/ {
	leds {
		compatible = "gpio-leds";
		red_led_9: led_9 {
			gpios = <&gpiod 3 GPIO_ACTIVE_LOW>;
			label = "User LD9";
		};
		green_led_10: led_10 {
			gpios = <&gpiog 12 GPIO_ACTIVE_LOW>;
			label = "User LD10";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button {
			label = "User";
			gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
		};
	};

	power-states {
		stop0: state0 {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-idle";
			substate-id = <1>;
			min-residency-us = <100>;
		};
		stop1: state1 {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-idle";
			substate-id = <2>;
			min-residency-us = <500>;
		};
		stop2: state2 {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-idle";
			substate-id = <3>;
			min-residency-us = <900>;
		};
	};

	aliases {
		spi-flash0 = &mx25lm51245;
	};
};

&cpu0 {
	cpu-power-states = <&stop0 &stop1 &stop2>;
};

&clk_hsi48 {
	status = "okay";
};

&clk_msi {
	status = "okay";
	msi-range = <6>;
	msi-pll-mode;
};

&clk_lse {
	status = "okay";
};

&pll {
	div-m = <1>;
	mul-n = <55>;
	div-p = <7>;
	div-q = <2>;
	div-r = <2>;
	clocks = <&clk_msi>;
	status = "okay";
};

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

&lptim1 {
	clocks = <&rcc STM32_CLOCK_BUS_APB1 0x80000000>,
		 <&rcc STM32_SRC_LSE LPTIM1_SEL(3)>;
	status = "okay";
};

&usart1 {
	current-speed = <115200>;
	pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>;
	pinctrl-names = "default";
	status = "okay";
};

&usart3 {
	pinctrl-0 = <&usart3_tx_pc10 &usart3_rx_pc11>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

&i2c1 {
	pinctrl-0 = <&i2c1_scl_pb6 &i2c1_sda_pb7>;
	pinctrl-names = "default";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;

	lsm6dso: lsm6dso@6a {
		compatible = "st,lsm6dso";
		reg = <0x6a>;
		irq-gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>;
	};
};

&rng {
	status = "okay";
};

&spi1 {
	pinctrl-0 = <&spi1_sck_pg2 &spi1_miso_pg3 &spi1_mosi_pg4>;
	pinctrl-names = "default";
	cs-gpios = <&gpiog 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
	status = "okay";

	spbtle-rf@0 {
		compatible = "zephyr,bt-hci-spi";
		reg = <0>;
		irq-gpios = <&gpiog 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
		reset-gpios = <&gpiog 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
		spi-max-frequency = <2000000>;
	};
};

&octospi1 {
	pinctrl-0 = <&octospi1_clk_pa3 &octospi1_ncs_pa2
		     &octospi1_io0_pb1 &octospi1_io1_pb0
		     &octospi1_io2_pa7 &octospi1_io3_pa6
		     &octospi1_io4_pc1 &octospi1_io5_pc2
		     &octospi1_io6_pc3 &octospi1_io7_pc0
		     &octospi1_dqs_pb2>;
	pinctrl-names = "default";

	status = "okay";

	mx25lm51245: ospi-nor-flash@0 {
		compatible = "st,stm32-ospi-nor";
		reg = <0>;
		ospi-max-frequency = <DT_FREQ_M(50)>;
		size = <DT_SIZE_M(512)>; /* 64 MBytes */
		spi-bus-width = <OSPI_OPI_MODE>;
		data-rate = <OSPI_DTR_TRANSFER>;
		four-byte-opcodes;
		status = "okay";

		sfdp-bfp = [
			53 46 44 50 06 01 02 ff
			00 06 01 10 30 00 00 ff
			c2 00 01 04 10 01 00 ff
			84 00 01 02 c0 00 00 ff
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			e5 20 fb ff ff ff ff 1f
			44 eb 08 6b 08 3b 04 bb
			fe ff ff ff ff ff 00 ff
			ff ff 44 eb 0c 20 0f 52
			10 d8 00 ff d6 49 c5 00
			81 df 04 e3 44 03 67 38
			30 b0 30 b0 f7 bd d5 5c
			4a 9e 29 ff f0 50 f9 85
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00
			7f ef ff ff 21 5c dc ff
	];
		partitions {
			   compatible = "fixed-partitions";
			   #address-cells = <1>;
			   #size-cells = <1>;

			   partition@0 {
			       label = "nor";
			       reg = <0x00000000 DT_SIZE_M(4)>;
			   };
		};
	};
};

&timers2 {
	status = "okay";

	pwm2: pwm {
		status = "okay";
		pinctrl-0 = <&tim2_ch1_pa0>;
		pinctrl-names = "default";
	};
};

&dac1 {
	status = "okay";
	pinctrl-0 = <&dac1_out1_pa4>;
	pinctrl-names = "default";
};

&adc1 {
	pinctrl-0 = <&adc1_in13_pc4>;
	pinctrl-names = "default";
	status = "okay";
};

&spi3 {
	pinctrl-0 = <&spi3_sck_pg9 &spi3_mosi_pb5 &spi3_miso_pb4>;
	pinctrl-names = "default";
	cs-gpios = <&gpioe 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
	status = "okay";
};

zephyr_udc0: &usb {
	pinctrl-0 = <&usb_dp_pa12 &usb_dm_pa11>;
	pinctrl-names = "default";
	status = "okay";
};

&sdmmc1 {
	status = "okay";

	pinctrl-0 = <&sdmmc1_d0_pc8
		     &sdmmc1_d1_pc9
		     &sdmmc1_d2_pc10
		     &sdmmc1_d3_pc11
		     &sdmmc1_ck_pc12
		     &sdmmc1_cmd_pd2>;

	pinctrl-names = "default";

	cd-gpios = <&gpiof 2 GPIO_ACTIVE_LOW>;
};
