# Copyright (c) 2019 Phytec Messtechnik GmbH
# Copyright (c) 2023 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

description: |
  This is a representation of the Serial Wire Debug Port interface
  implementation by GPIO bit-banging.

  Schematic using dual-supply bus transceiver and separate dout and dnoe pins

         VCC_3V3                      VCC_REF
            ^                           ^
            |       +-------------+     |
            +-------|vcca     vccb|-----+
                    |             |
   clk-gpios -------|a           b|-------------- SWD CLK
                    |             |
   noe-gpios -------|dir       gnd|-----+
                    +-------------+     |
                     74LVC1T45          v
                                       GND


         VCC_3V3                      VCC_REF
            ^                           ^
            |       +-------------+     |
            +-------|vcca     vccb|-----+
                    |             |
   dio-gpios -------|a           b|------------*- SWD DIO
                    |             |            |
            +-------|dir       gnd|-----+      |
            |       +-------------+     |      |
            v        74LVC1T45          v      |
           GND                         GND     |
                                               |
                                               |
         VCC_3V3                      VCC_REF  |
            ^                           ^      |
            |       +-------------+     |      |
            +-------|vcca     vccb|-----+      |
                    |             |            |
  dout-gpios -------|a           b|------------+
                    |             |
  dnoe-gpios -------|dir       gnd|-----+
                    +-------------+     |
                     74LVC1T45          v
                                       GND

  Direct connection using only dio pin for SWD DIO.

   clk-gpios ------------------------------------ SWD CLK

   dio-gpios ------------------------------------ SWD DIO

  Of course, bidirectional bus transceiver between dio and SWD DIO can also be
  used together with noe pin to enable/disable transceivers.

compatible: "zephyr,swdp-gpio"

include: base.yaml

properties:
  clk-gpios:
    type: phandle-array
    required: true
    description: GPIO pin used for SWCLK output

  dio-gpios:
    type: phandle-array
    required: true
    description: |
      GPIO pin used for SWDIO input. This pin is also used for the SWDIO output
      if separate output pin is not defined.

  dout-gpios:
    type: phandle-array
    description: |
      Optional GPIO pin used for SWDIO output.

  dnoe-gpios:
    type: phandle-array
    description: |
      GPIO pin used to disable the SWDIO output buffer behind optional
      pin dout-gpios.

  noe-gpios:
    type: phandle-array
    description: |
      Optional pin to disable all bus transceivers if any are present.

  reset-gpios:
    type: phandle-array
    description: |
      Optional GPIO pin used for RESET output.

  port-write-cycles:
    type: int
    required: true
    description: |
      Number of processor cycles for I/O Port write operations.For example, the
      GPIO clock may be different from the CPU clock. This can usually be
      found in the SoC documentation.
