The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/Bindings/pinctrl/renesas,rza1-pinctrl.txt

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 Renesas RZ/A1 combined Pin and GPIO controller
    2 
    3 The Renesas SoCs of the RZ/A1 family feature a combined Pin and GPIO controller,
    4 named "Ports" in the hardware reference manual.
    5 Pin multiplexing and GPIO configuration is performed on a per-pin basis
    6 writing configuration values to per-port register sets.
    7 Each "port" features up to 16 pins, each of them configurable for GPIO
    8 function (port mode) or in alternate function mode.
    9 Up to 8 different alternate function modes exist for each single pin.
   10 
   11 Pin controller node
   12 -------------------
   13 
   14 Required properties:
   15   - compatible: should be:
   16     - "renesas,r7s72100-ports": for RZ/A1H
   17     - "renesas,r7s72101-ports", "renesas,r7s72100-ports": for RZ/A1M
   18     - "renesas,r7s72102-ports": for RZ/A1L
   19 
   20   - reg
   21     address base and length of the memory area where the pin controller
   22     hardware is mapped to.
   23 
   24 Example:
   25 Pin controller node for RZ/A1H SoC (r7s72100)
   26 
   27 pinctrl: pin-controller@fcfe3000 {
   28         compatible = "renesas,r7s72100-ports";
   29 
   30         reg = <0xfcfe3000 0x4230>;
   31 };
   32 
   33 Sub-nodes
   34 ---------
   35 
   36 The child nodes of the pin controller node describe a pin multiplexing
   37 function or a GPIO controller alternatively.
   38 
   39 - Pin multiplexing sub-nodes:
   40   A pin multiplexing sub-node describes how to configure a set of
   41   (or a single) pin in some desired alternate function mode.
   42   A single sub-node may define several pin configurations.
   43   A few alternate function require special pin configuration flags to be
   44   supplied along with the alternate function configuration number.
   45   The hardware reference manual specifies when a pin function requires
   46   "software IO driven" mode to be specified. To do so use the generic
   47   properties from the <include/linux/pinctrl/pinconf_generic.h> header file
   48   to instruct the pin controller to perform the desired pin configuration
   49   operation.
   50   Please refer to pinctrl-bindings.txt to get to know more on generic
   51   pin properties usage.
   52 
   53   The allowed generic formats for a pin multiplexing sub-node are the
   54   following ones:
   55 
   56   node-1 {
   57       pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
   58       GENERIC_PINCONFIG;
   59   };
   60 
   61   node-2 {
   62       sub-node-1 {
   63           pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
   64           GENERIC_PINCONFIG;
   65       };
   66 
   67       sub-node-2 {
   68           pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
   69           GENERIC_PINCONFIG;
   70       };
   71 
   72       ...
   73 
   74       sub-node-n {
   75           pinmux = <PIN_ID_AND_MUX>, <PIN_ID_AND_MUX>, ... ;
   76           GENERIC_PINCONFIG;
   77       };
   78   };
   79 
   80   Use the second format when pins part of the same logical group need to have
   81   different generic pin configuration flags applied.
   82 
   83   Client sub-nodes shall refer to pin multiplexing sub-nodes using the phandle
   84   of the most external one.
   85 
   86   Eg.
   87 
   88   client-1 {
   89       ...
   90       pinctrl-0 = <&node-1>;
   91       ...
   92   };
   93 
   94   client-2 {
   95       ...
   96       pinctrl-0 = <&node-2>;
   97       ...
   98   };
   99 
  100   Required properties:
  101     - pinmux:
  102       integer array representing pin number and pin multiplexing configuration.
  103       When a pin has to be configured in alternate function mode, use this
  104       property to identify the pin by its global index, and provide its
  105       alternate function configuration number along with it.
  106       When multiple pins are required to be configured as part of the same
  107       alternate function they shall be specified as members of the same
  108       argument list of a single "pinmux" property.
  109       Helper macros to ease assembling the pin index from its position
  110       (port where it sits on and pin number) and alternate function identifier
  111       are provided by the pin controller header file at:
  112       <include/dt-bindings/pinctrl/r7s72100-pinctrl.h>
  113       Integers values in "pinmux" argument list are assembled as:
  114       ((PORT * 16 + PIN) | MUX_FUNC << 16)
  115 
  116   Optional generic properties:
  117     - input-enable:
  118       enable input bufer for pins requiring software driven IO input
  119       operations.
  120     - output-high:
  121       enable output buffer for pins requiring software driven IO output
  122       operations. output-low can be used alternatively, as line value is
  123       ignored by the driver.
  124 
  125   The hardware reference manual specifies when a pin has to be configured to
  126   work in bi-directional mode and when the IO direction has to be specified
  127   by software. Bi-directional pins are managed by the pin controller driver
  128   internally, while software driven IO direction has to be explicitly
  129   selected when multiple options are available.
  130 
  131   Example:
  132   A serial communication interface with a TX output pin and an RX input pin.
  133 
  134   &pinctrl {
  135         scif2_pins: serial2 {
  136                 pinmux = <RZA1_PINMUX(3, 0, 6)>, <RZA1_PINMUX(3, 2, 4)>;
  137         };
  138   };
  139 
  140   Pin #0 on port #3 is configured as alternate function #6.
  141   Pin #2 on port #3 is configured as alternate function #4.
  142 
  143   Example 2:
  144   I2c master: both SDA and SCL pins need bi-directional operations
  145 
  146   &pinctrl {
  147         i2c2_pins: i2c2 {
  148                 pinmux = <RZA1_PINMUX(1, 4, 1)>, <RZA1_PINMUX(1, 5, 1)>;
  149         };
  150   };
  151 
  152   Pin #4 on port #1 is configured as alternate function #1.
  153   Pin #5 on port #1 is configured as alternate function #1.
  154   Both need to work in bi-directional mode, the driver manages this internally.
  155 
  156   Example 3:
  157   Multi-function timer input and output compare pins.
  158   Configure TIOC0A as software driven input and TIOC0B as software driven
  159   output.
  160 
  161   &pinctrl {
  162         tioc0_pins: tioc0 {
  163                 tioc0_input_pins {
  164                         pinumx = <RZA1_PINMUX(4, 0, 2)>;
  165                         input-enable;
  166                 };
  167 
  168                 tioc0_output_pins {
  169                         pinmux = <RZA1_PINMUX(4, 1, 1)>;
  170                         output-enable;
  171                 };
  172         };
  173   };
  174 
  175   &tioc0 {
  176         ...
  177         pinctrl-0 = <&tioc0_pins>;
  178         ...
  179   };
  180 
  181   Pin #0 on port #4 is configured as alternate function #2 with IO direction
  182   specified by software as input.
  183   Pin #1 on port #4 is configured as alternate function #1 with IO direction
  184   specified by software as output.
  185 
  186 - GPIO controller sub-nodes:
  187   Each port of the r7s72100 pin controller hardware is itself a GPIO controller.
  188   Different SoCs have different numbers of available pins per port, but
  189   generally speaking, each of them can be configured in GPIO ("port") mode
  190   on this hardware.
  191   Describe GPIO controllers using sub-nodes with the following properties.
  192 
  193   Required properties:
  194     - gpio-controller
  195       empty property as defined by the GPIO bindings documentation.
  196     - #gpio-cells
  197       number of cells required to identify and configure a GPIO.
  198       Shall be 2.
  199     - gpio-ranges
  200       Describes a GPIO controller specifying its specific pin base, the pin
  201       base in the global pin numbering space, and the number of controlled
  202       pins, as defined by the GPIO bindings documentation. Refer to
  203       Documentation/devicetree/bindings/gpio/gpio.txt file for a more detailed
  204       description.
  205 
  206   Example:
  207   A GPIO controller node, controlling 16 pins indexed from 0.
  208   The GPIO controller base in the global pin indexing space is pin 48, thus
  209   pins [0 - 15] on this controller map to pins [48 - 63] in the global pin
  210   indexing space.
  211 
  212   port3: gpio-3 {
  213         gpio-controller;
  214         #gpio-cells = <2>;
  215         gpio-ranges = <&pinctrl 0 48 16>;
  216   };
  217 
  218   A device node willing to use pins controlled by this GPIO controller, shall
  219   refer to it as follows:
  220 
  221   led1 {
  222         gpios = <&port3 10 GPIO_ACTIVE_LOW>;
  223   };

Cache object: e30160c72cb0559a248f96d2c7f9a004


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.