/*
 * Copyright (c) 2020 Alexander Kozhinov
 * AlexanderKozhinov@yandex.com
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/ {
	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 &gpioa 3 0>,	/* A0 */
			   <1 0 &gpioc 0 0>,	/* A1 */
			   <2 0 &gpioc 3 0>,	/* A2 */
			   <3 0 &gpiob 1 0>,	/* A3 */
			   <4 0 &gpioc 2 0>,	/* A4 */
			   <5 0 &gpiof 11 0>,	/* A5 */
			   <6 0 &gpiob 7 0>,	/* D0 */
			   <7 0 &gpiob 6 0>,	/* D1 */
			   <8 0 &gpiog 14 0>,	/* D2 */
			   <9 0 &gpioe 13 0>,	/* D3 */
			   <10 0 &gpioe 14 0>,	/* D4 */
			   <11 0 &gpioe 11 0>,	/* D5 */
			   <12 0 &gpioa 8 0>,	/* D6 */
			   <13 0 &gpiog 12 0>,	/* D7 */
			   <14 0 &gpiog 9 0>,	/* D8 */
			   <15 0 &gpiod 15 0>,	/* D9 */
			   <16 0 &gpiod 14 0>,	/* D10 */
			   <17 0 &gpiob 5 0>,	/* D11 */
			   <18 0 &gpioa 6 0>,	/* D12 */
			   <19 0 &gpioa 5 0>,	/* D13 */
			   <20 0 &gpiob 9 0>,	/* D14 */
			   <21 0 &gpiob 8 0>;	/* D15 */
	};
};

arduino_i2c: &i2c1 {};

arduino_serial: &uart8 {};
