// SPDX-License-Identifier: GPL-2.0
/*
 * at91-kizbox3-hs.dts - Device Tree file for Overkiz KIZBOX3-HS board
 *
 * Copyright (C) 2018 Overkiz SAS
 *
 * Authors: Dorian Rocipon <d.rocipon@overkiz.com>
 *          Kevin Carli <k.carli@overkiz.com>
 *          Mickael Gardet <m.gardet@overkiz.com>
 */
/dts-v1/;
#include "at91-kizbox3_common.dtsi"

/ {
	model = "Overkiz KIZBOX3-HS";
	compatible = "overkiz,kizbox3-hs", "atmel,sama5d2", "atmel,sama5";

	led-controller-1 {
		status = "okay";

		led-1 {
			status = "okay";
		};

		led-2 {
			status = "okay";
		};

		led-3 {
			status = "okay";
		};

		led-4 {
			status = "okay";
		};
	};

	led-controller-2 {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_led_red
			     &pinctrl_led_white>;
		status = "okay";

		led-5 {
			label = "pio:red:user";
			gpios = <&pioA PIN_PB1 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		led-6 {
			label = "pio:white:user";
			gpios = <&pioA PIN_PB8 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default" , "default", "default",
				"default", "default";
		pinctrl-0 = <&pinctrl_key_gpio_default>;
		pinctrl-1 = <&pinctrl_pio_rf &pinctrl_pio_wifi>;
		pinctrl-2 = <&pinctrl_pio_io_boot
			     &pinctrl_pio_io_reset
			     &pinctrl_pio_io_test_radio>;
		pinctrl-3 = <&pinctrl_pio_zbe_test_radio
			     &pinctrl_pio_zbe_rst>;
		pinctrl-4 = <&pinctrl_pio_input>;

		switch-1 {
			label = "SW1";
			gpios = <&pioA PIN_PA29 GPIO_ACTIVE_LOW>;
			linux,code = <0x101>;
			wakeup-source;
		};

		switch-2 {
			label = "SW2";
			gpios = <&pioA PIN_PA18 GPIO_ACTIVE_LOW>;
			linux,code = <0x102>;
			wakeup-source;
		};

		switch-3 {
			label = "SW3";
			gpios = <&pioA PIN_PA22 GPIO_ACTIVE_LOW>;
			linux,code = <0x103>;
			wakeup-source;
		};

		switch-7 {
			label = "SW7";
			gpios = <&pioA PIN_PA26 GPIO_ACTIVE_LOW>;
			linux,code = <0x107>;
			wakeup-source;
		};

		switch-8 {
			label = "SW8";
			gpios = <&pioA PIN_PA24 GPIO_ACTIVE_LOW>;
			linux,code = <0x108>;
			wakeup-source;
		};
	};

	gpios {
		compatible = "gpio";
		status = "okay";

		rf_on {
			label = "rf on";
			gpio = <&pioA PIN_PC19 GPIO_ACTIVE_HIGH>;
			output;
			init-low;
		};

		wifi_on {
			label = "wifi on";
			gpio = <&pioA PIN_PC20 GPIO_ACTIVE_HIGH>;
			output;
			init-low;
		};

		zbe_test_radio {
			label = "zbe test radio";
			gpio = <&pioA PIN_PB21 GPIO_ACTIVE_HIGH>;
			output;
			init-low;
		};

		zbe_rst {
			label = "zbe rst";
			gpio = <&pioA PIN_PB25 GPIO_ACTIVE_HIGH>;
			output;
			init-low;
		};

		io_reset {
			label = "io reset";
			gpio = <&pioA PIN_PB30 GPIO_ACTIVE_HIGH>;
			output;
			init-low;
		};

		io_test_radio {
			label = "io test radio";
			gpio = <&pioA PIN_PC9 GPIO_ACTIVE_HIGH>;
			output;
			init-low;
		};

		io_boot_0 {
			label = "io boot 0";
			gpio = <&pioA PIN_PC11 GPIO_ACTIVE_HIGH>;
			output;
			init-low;
		};

		io_boot_1 {
			label = "io boot 1";
			gpio = <&pioA PIN_PC17 GPIO_ACTIVE_HIGH>;
			output;
			init-low;
		};

		verbose_bootloader {
			label = "verbose bootloader";
			gpio = <&pioA PIN_PB11 GPIO_ACTIVE_HIGH>;
			input;
		};

		 nail_bed_detection {
			label = "nail bed detection";
			gpio = <&pioA PIN_PB12 GPIO_ACTIVE_HIGH>;
			input;
		};

		 id_usba {
			label = "id usba";
			gpio = <&pioA PIN_PC0 GPIO_ACTIVE_LOW>;
			input;
		};
	};
};

&pioA {
	pinctrl_key_gpio_default: key_gpio_default {
		pinmux = <PIN_PA22__GPIO>,
		<PIN_PA24__GPIO>,
		<PIN_PA26__GPIO>,
		<PIN_PA29__GPIO>,
		<PIN_PA18__GPIO>;
		bias-disable;
		};

	pinctrl_gpio {
		pinctrl_pio_rf: gpio_rf {
			pinmux = <PIN_PC19__GPIO>;
			bias-disable;
		};
		pinctrl_pio_wifi: gpio_wifi {
			pinmux = <PIN_PC20__GPIO>;
			bias-disable;
		};
		pinctrl_pio_io_boot: gpio_io_boot {
			pinmux =
			<PIN_PC11__GPIO>,
			<PIN_PC17__GPIO>;
			bias-disable;
		};
		pinctrl_pio_io_test_radio: gpio_io_test_radio {
			pinmux = <PIN_PC9__GPIO>;
			bias-disable;
		};
		pinctrl_pio_zbe_test_radio: gpio_zbe_test_radio {
			pinmux = <PIN_PB21__GPIO>;
			bias-disable;
		};
		pinctrl_pio_zbe_rst: gpio_zbe_rst {
			pinmux = <PIN_PB25__GPIO>;
			bias-disable;
		};
		/* stm32 reset must be open drain (internal pull up) */
		pinctrl_pio_io_reset: gpio_io_reset {
			pinmux = <PIN_PB30__GPIO>;
			bias-disable;
			drive-open-drain;
			output-low;
		};
		pinctrl_pio_input: gpio_input {
			pinmux =
			<PIN_PB11__GPIO>,
			<PIN_PB12__GPIO>,
			<PIN_PC0__GPIO>;
			bias-disable;
		};
	};

	pinctrl_leds {
		pinctrl_led_red: led_red {
			pinmux = <PIN_PB1__GPIO>;
			bias-disable;
		};
		pinctrl_led_white: led_white {
			pinmux = <PIN_PB8__GPIO>;
			bias-disable;
		};
	};
};

&adc {
	status = "okay";
};

&uart0 {
	status = "okay";
};

&uart1 {
	status = "okay";
};

&uart2 {
	status = "okay";
};

&uart3 {
	status = "okay";
};

&uart4 {
	status = "okay";
};

&flx0 {
	status = "okay";

	uart5: serial@200 {
			status = "okay";
	};
};

&flx3 {
	status = "okay";
	uart8: serial@200 {
		status = "okay";
	};
};

&flx4 {
	status = "okay";

	i2c6: i2c@600 {
		status = "okay";
	};
};

&usb0 {
	status = "okay";
};

&usb1 {
	status = "okay";
};

&usb2 {
	status = "okay";
};
