# Copyright (c) 2022 Antmicro <www.antmicro.com>
# SPDX-License-Identifier: Apache-2.0

description: |
  SiFive FE310 IO Function (iof) binding covers the IOF_EN/IOF_SEL registers
  that are a subset of the GPIO controller. You can use this node to set the
  value of IOF_EN/IOF_SEL registers to control pin settings.

  Device pin configuration should be placed in the child nodes of this node.
  Populate the 'pinmux' field with a pair consisting of a pin number and its IO
  function. The available IO functions are:
    - SIFIVE_PINMUX_IOF0
    - SIFIVE_PINMUX_IOF1

  For example, setting pins 16 and 17 both to IOF0 would look like this:

    #include <dt-bindings/pinctrl/sifive-pinctrl.h>

    &pinctrl {
      uart0_rx_default: uart0_rx_default {
        pinmux = <16 SIFIVE_PINMUX_IOF0>;
      };
      uart0_tx_default: uart0_tx_default {
        pinmux = <17 SIFIVE_PINMUX_IOF0>;
      };
    };

compatible: "sifive,pinctrl"

include: base.yaml

properties:
  reg:
    required: true

child-binding:
  description: |
    This binding gives a base representation of the SiFive FE310 pins
    configuration.

  properties:
    pinmux:
      required: true
      type: array
      description: |
        SiFive FE310 pin's configuration (pin, IO function).
