/*
 * Copyright (c) 2023 TOKITA Hiroshi <tokita.hiroshi@fujitsu.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include "arduino_uno_r4_common.dtsi"
#include "arduino_uno_r4_minima-pinctrl.dtsi"

/ {
	model = "Arduino Uno R4 Minima";

	leds {
		compatible = "gpio-leds";
		led: led {
			gpios = <&ioport1 11 GPIO_ACTIVE_HIGH>;
		};
	};

	aliases {
		led0 = &led;
	};

	arduino_header: connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <0 0 &ioport0 14 0>,   /* A0 */
			   <1 0 &ioport0 0 0>,    /* A1 */
			   <2 0 &ioport0 1 0>,    /* A2 */
			   <3 0 &ioport0 2 0>,    /* A3 */
			   <4 0 &ioport1 1 0>,    /* A4 */
			   <5 0 &ioport1 0 0>,    /* A5 */
			   <6 0 &ioport3 1 0>,    /* D0 */
			   <7 0 &ioport3 2 0>,    /* D1 */
			   <8 0 &ioport1 5 0>,    /* D2 */
			   <9 0 &ioport1 4 0>,    /* D3 */
			   <10 0 &ioport1 3 0>,   /* D4 */
			   <11 0 &ioport1 2 0>,   /* D5 */
			   <12 0 &ioport1 6 0>,   /* D6 */
			   <13 0 &ioport1 7 0>,   /* D7 */
			   <14 0 &ioport3 4 0>,   /* D8 */
			   <15 0 &ioport3 3 0>,   /* D9 */
			   <16 0 &ioport1 12 0>,  /* D10 */
			   <17 0 &ioport1 9 0>,   /* D11 */
			   <18 0 &ioport1 10 0>,  /* D12 */
			   <19 0 &ioport1 11 0>,  /* D13 */
			   <20 0 &ioport1 1 0>,   /* D14 */
			   <21 0 &ioport1 0 0>;   /* D15 */
	};
};
