/*
 * Copyright (c) 2021, ATL Electronics
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/ {
	aliases {
		led0 = &user_led;
		sw0 = &user_bt;
	};

	leds {
		compatible = "gpio-leds";
		user_led: led_0 {
			label = "LED_0";
			gpios = <&gpio_prt13 7 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";

		user_bt: button_0 {
			label = "SW_0";
			gpios = <&gpio_prt0 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
		};
	};

	arduino_header: connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;		/*           shared */
		gpio-map = <0  0 &gpio_prt9   0 0>,	/*  A0-             */
			   <1  0 &gpio_prt9   1 0>,	/*  A1-             */
			   <2  0 &gpio_prt9   2 0>,	/*  A2-             */
			   <3  0 &gpio_prt9   3 0>,	/*  A3-             */
			   <4  0 &gpio_prt9   4 0>,	/*  A4-             */
			   <5  0 &gpio_prt9   5 0>,	/*  A5-             */
			   <6  0 &gpio_prt5   0 0>,	/*  D0-RX-5         */
			   <7  0 &gpio_prt5   1 0>,	/*  D1-TX-5         */
			   <8  0 &gpio_prt5   2 0>,	/*  D2-RTS-5        */
			   <9  0 &gpio_prt5   3 0>,	/*  D3-CTS-5        */
			   <10 0 &gpio_prt5   4 0>,	/*  D4-             */
			   <11 0 &gpio_prt5   5 0>,	/*  D5-             */
			   <12 0 &gpio_prt5   6 0>,	/*  D6-             */
			   <13 0 &gpio_prt0   2 0>,	/*  D7-             */
			   <14 0 &gpio_prt13  0 0>,	/*  D8-RX-6       y */
			   <15 0 &gpio_prt13  1 0>,	/*  D9-TX-6       y */
			   <16 0 &gpio_prt12  3 0>,	/* D10-SPI6_SEL0  y */
			   <17 0 &gpio_prt12  0 0>,	/* D11-SPI6_MOSI  y */
			   <18 0 &gpio_prt12  1 0>,	/* D12-SPI6_MISO  y */
			   <19 0 &gpio_prt12  2 0>,	/* D13-SPI6_CLK   y */
			   <20 0 &gpio_prt6   1 0>,	/* D14-SDAx         */
			   <21 0 &gpio_prt6   0 0>;	/* D15-SCLx         */
	};
};

&gpio_prt0 {
	status = "okay";
};

&gpio_prt5 {
	status = "okay";
};

&gpio_prt6 {
	status = "okay";
};

&gpio_prt9 {
	status = "okay";
};

&gpio_prt12 {
	status = "okay";
};

&gpio_prt13 {
	status = "okay";
};

&spi6 {
	cs-gpios = <&gpio_prt12 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>,
		   <&gpio_prt13 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;

	pinctrl-0 = <&p12_0_spi6_mosi &p12_1_spi6_miso &p12_2_spi6_clk>;
};
