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

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