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

#include "arduino_r3_connector.dtsi"
#include "pmod_connector.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	leds {
		compatible = "gpio-leds";
		green_led_1:led_1 {
			gpios = <&gpioi 12 GPIO_ACTIVE_LOW>;
			label = "User LD1";
			status = "disabled";
		};
		orange_led_2:led_2 {
			gpios = <&gpioi 13 GPIO_ACTIVE_LOW>;
			label = "User LD2";
			status = "disabled";
		};
		red_led_3:led_3 {
			gpios = <&gpioi 14 GPIO_ACTIVE_LOW>;
			label = "User LD3";
			status = "disabled";
		};
		blue_led_4:led_4 {
			gpios = <&gpioi 15 GPIO_ACTIVE_LOW>;
			label = "User LD4";
			status = "disabled";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		wake_up: button {
			label = "Wakeup";
			gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
			status = "disabled";
			zephyr,code = <INPUT_KEY_WAKEUP>;
		};
		joy_center: joystick_center {
			label = "joystick center";
			gpios = <&gpiok 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
			status = "disabled";
			zephyr,code = <INPUT_KEY_ENTER>;
		};
		joy_down: joystick_down {
			label = "joystick down";
			gpios = <&gpiok 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
			status = "disabled";
			zephyr,code = <INPUT_KEY_DOWN>;
		};
		joy_up: joystick_up {
			label = "joystick up";
			gpios = <&gpiok 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
			status = "disabled";
			zephyr,code = <INPUT_KEY_UP>;
		};
		joy_left: joystick_left {
			label = "joystick left";
			gpios = <&gpiok 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
			status = "disabled";
			zephyr,code = <INPUT_KEY_LEFT>;
		};
		joy_right: joystick_right {
			label = "joystick right";
			gpios = <&gpiok 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
			status = "disabled";
			zephyr,code = <INPUT_KEY_RIGHT>;
		};
	};

	dsi_lcd_qsh_030: connector_dsi_lcd {
		compatible = "st,dsi-lcd-qsh-030";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <4 0 &gpiok 7 0>,	/* TOUCH_INT */
			   <35 0 &gpioe 5 0>,	/* SCLK/MCLK */
			   <37 0 &gpioe 4 0>,	/* LRCLK */
			   <39 0 &gpioe 6 0>,	/* I2S */
			   <40 0 &gpiod 13 0>,	/* I2C4_SDA */
			   <44 0 &gpiod 12 0>,	/* I2C4_SCL */
			   <45 0 &gpioa 8 0>,	/* CEC_CLK */
			   <47 0 &gpiob 6 0>,	/* CEC */
			   <49 0 &gpioj 2 0>,	/* DSI_TE */
			   <53 0 &gpioj 12 0>,	/* LCD_BL_CTRL */
			   <57 0 &gpiog 3 0>;	/* DSI_RESET */
	};
};

&rcc {
	d1cpre = <1>;
	hpre = <2>;
	d1ppre = <2>;
	d2ppre1 = <2>;
	d2ppre2 = <2>;
	d3ppre = <2>;
};

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

&uart8 {
	pinctrl-0 = <&uart8_tx_pj8 &uart8_rx_pj9>;
	pinctrl-names = "default";
	current-speed = <115200>;
};

&spi5 {
	pinctrl-0 = <&spi5_nss_pk1 &spi5_sck_pk0
		     &spi5_miso_pj11 &spi5_mosi_pj10>;
	pinctrl-names = "default";
};

&mailbox {
	status = "okay";
};
