# Copyright (C) 2020 Gerson Fernando Budke <nandojve@gmail.com>
# SPDX-License-Identifier: Apache-2.0

description: |
    GPIO pins exposed on Atmel Xplained Pro headers.

    The Xplained Pro layout provide a standard 20 pin header.  A board can have
    one or more headers and can share pins.  The extension headers are given
    names EXTn where n ϵ [1…7], n is determined by which ID pin is connected
    to the embedded debugger.  A header with ID7 signal from the embedded
    debugger connected should be called EXT7. PWR, EXT1, EXT2 and EXT3 are
    standard extension headers that have a predefined position according to the
    list below:
      * PWR is right angled at the top right hand side of the board. This
      header must always be implemented.
      * EXT1 is right angled at the top right hand side of the board, located
      below the PWR header. This header must always be present.
      * EXT2 is right angled and at the bottom right hand side of the board.
      This header is mandatory for medium and large boards and should not be
      implemented on small boards.
      * EXT3 is right angled pointing downwards
    All MCU boards have to implement at least PWR, EXT1, EXT2 (on medium and
    large boards), and EXT3. EXT4 to EXT7 can be placed differently depending
    on the board design. EXT4 to EXT7 can either be standard extension headers
    or application specific headers.

    Documentation:
    * https://www.microchip.com/development-tools/xplained-boards
    * http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42091-Atmel-Xplained-Pro-Hardware-Development-Kit_User%20Guide.pdf

    This binding provides a nexus mapping for 20 pins where pins are disposed
    to have a even and odd column:

                           Connector
    Bind      Pin Name     Pin   Pin  Pin Name        Bind
                       ID  1       2  GND
      0            ADC(+)  3       4  ADC(-)           1
      2   UART(RTS)/GPIO1  5       6  UART(CTS)/GPIO2  3
      4            PWM(+)  7       8  PWM(-)           5
      6         IRQ/GPIO3  9      10  SPI(CS1)/GPIO4   7
      8          I2C(SDA)  11     12  I2C(SCL)         9
     10          UART(RX)  13     14  UART(TX)         11
     12          SPI(CS0)  15     16  SPI(MOSI)        13
     14         SPI(MISO)  17     18  SPI(SCK)         15
                      GND  19     20  VDD(+3.3V)

compatible: "atmel-xplained-pro-header"

include: [gpio-nexus.yaml, base.yaml]
