Commit 33704989 authored by Manikandan Muralidharan's avatar Manikandan Muralidharan Committed by Bartosz Golaszewski
Browse files

dt-bindings: gpio: convert Atmel GPIO to json-schema



Convert the Atmel GPIO controller binding document to DT schema format
using json-schema.
The at91 pinctrl driver uses "atmel,at91rm9200-gpio" compatible string
to find the number of active GPIO banks and identify the pinmux nodes.
"atmel,at91sam9x5-gpio" and "microchip,sam9x60-gpio" have additional
registers to handle drive-strength, slew-rate,  pull-down to drive the
pinmux configs.
The new compatible string "microchip,sam9x7-gpio" is added.

Signed-off-by: default avatarManikandan Muralidharan <manikandan.m@microchip.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Reviewed-by: default avatarConor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20240709092354.191643-5-manikandan.m@microchip.com


Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
parent 91581c4b
Loading
Loading
Loading
Loading
+81 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/gpio/atmel,at91rm9200-gpio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Microchip GPIO controller (PIO)

maintainers:
  - Manikandan Muralidharan <manikandan.m@microchip.com>

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - atmel,at91sam9x5-gpio
              - microchip,sam9x60-gpio
          - const: atmel,at91rm9200-gpio
      - items:
          - enum:
              - microchip,sam9x7-gpio
          - const: microchip,sam9x60-gpio
          - const: atmel,at91rm9200-gpio
      - items:
          - const: atmel,at91rm9200-gpio

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  interrupt-controller: true

  "#interrupt-cells":
    const: 2

  gpio-controller: true
  gpio-line-names: true

  "#gpio-cells":
    const: 2

  clocks:
    maxItems: 1

  "#gpio-lines":
    description:
      Number of gpio, 32 by default if absent
    maxItems: 1
    default: 32

required:
  - compatible
  - reg
  - interrupts
  - interrupt-controller
  - "#interrupt-cells"
  - gpio-controller
  - "#gpio-cells"
  - clocks

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/at91.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    gpio@fffff400 {
            compatible = "atmel,at91rm9200-gpio";
            reg = <0xfffff400 0x200>;
            interrupts = <2 IRQ_TYPE_LEVEL_HIGH 1>;
            #gpio-cells = <2>;
            gpio-controller;
            interrupt-controller;
            #interrupt-cells = <2>;
            clocks = <&pmc PMC_TYPE_PERIPHERAL 2>;
    };
...
+0 −31
Original line number Diff line number Diff line
* Atmel GPIO controller (PIO)

Required properties:
- compatible: "atmel,<chip>-gpio", where <chip> is at91rm9200 or at91sam9x5.
- reg: Should contain GPIO controller registers location and length
- interrupts: Should be the port interrupt shared by all the pins.
- #gpio-cells: Should be two.  The first cell is the pin number and
  the second cell is used to specify optional parameters to declare if the GPIO
  is active high or low. See gpio.txt.
- gpio-controller: Marks the device node as a GPIO controller.
- interrupt-controller: Marks the device node as an interrupt controller.
- #interrupt-cells: Should be two. The first cell is the pin number and the
  second cell is used to specify irq type flags, see the two cell description
  in interrupt-controller/interrupts.txt for details.

optional properties:
- #gpio-lines: Number of gpio if absent 32.


Example:
	pioA: gpio@fffff200 {
		compatible = "atmel,at91rm9200-gpio";
		reg = <0xfffff200 0x100>;
		interrupts = <2 4>;
		#gpio-cells = <2>;
		gpio-controller;
		#gpio-lines = <19>;
		interrupt-controller;
		#interrupt-cells = <2>;
	};