:orphan:

.. raw:: html

    <!--
    FIXME: do not limit page width until content uses another representation
    format other than tables
    -->
    <style>.wy-nav-content { max-width: none; !important }</style>

.. dtcompatible:: microchip,xec-pinctrl
.. _dtbinding_microchip_xec_pinctrl:

microchip,xec-pinctrl
#####################

Vendor: :ref:`Microchip Technology Inc. <dt_vendor_microchip>`

Description
***********



.. code-block:: none

   Microchip XEC Pin controller Node
   Based on pincfg-node.yaml binding.
   The MCHP XEC pin controller is a singleton node responsible for controlling
   pin function selection and pin properties. For example, you can use this
   node to select peripheral pin functions.

   The node has the 'pinctrl' node label set in your SoC's devicetree,
   so you can modify it like this:

     &pinctrl {
             /* your modifications go here */
     };

   All device pin configurations should be placed in child nodes of the
   'pinctrl' node, as in the spi0 example shown at the end:

   A group can also specify shared pin properties common to all the specified
   pins, such as the 'bias-pull-up' property in group 2. Here is a list of
   supported standard pin properties:

   - bias-disable: Disable pull-up/down (default behavior, not required).
   - bias-pull-down: Enable pull-down resistor.
   - bias-pull-up: Enable pull-up resistor.
   - drive-push-pull: Output driver is push-pull (default, not required).
   - drive-open-drain: Output driver is open-drain.
   - output-high: Set output state high when pin configured.
   - output-low: Set output state low when pin configured.

   Custom pin properties for drive strength and slew rate are available:
   - drive-strength
   - slew-rate

   Driver strength and slew rate hardware defaults vary by SoC and pin.

   An example for MEC172x family, include the chip level pinctrl
   DTSI file in the board level DTS:

     #include <microchip/mec172x/mec172xnsz-pinctrl.dtsi>

   We want to use the shared SPI port of the MEC172x QMSPI controller
   and want the chip select 0 to be open-drain.

   To change a pin's pinctrl default properties add a reference to the
   pin in the board's DTS file and set the properties.

     &spi0 {
       pinctrl-0 = < &shd_cs0_n_gpio055
                     &shd_clk_gpio056
                     &shd_io0_gpio223
                     &shd_io1_gpio224
                     &shd_io3_gpio016 >;
       pinctrl-names = "default";
     }

     &shd_cs0_n_gpio055 {
       drive-open-drain;
     };

Properties
**********

Top level properties
====================


These property descriptions apply to "microchip,xec-pinctrl"
nodes themselves. This page also describes child node
properties in the following sections.

.. tabs::

   .. group-tab:: Node specific properties

      Properties not inherited from the base binding file.

      (None)

   .. group-tab:: Deprecated node specific properties

      Deprecated properties not inherited from the base binding file.

      (None)

   .. group-tab:: Base properties

      Properties inherited from the base binding file, which defines
      common properties that may be set on many nodes. Not all of these
      may apply to the "microchip,xec-pinctrl" compatible.

      .. list-table::
         :widths: 1 1 4
         :header-rows: 1

         * - Name
           - Type
           - Details

         * - ``reg``
           - ``array``
           - .. code-block:: none

                register space


             This property is **required**.

             See :ref:`dt-important-props` for more information.

         * - ``status``
           - ``string``
           - .. code-block:: none

                indicates the operational status of a device


             Legal values: ``'ok'``, ``'okay'``, ``'disabled'``, ``'reserved'``, ``'fail'``, ``'fail-sss'``

             See :ref:`dt-important-props` for more information.

         * - ``compatible``
           - ``string-array``
           - .. code-block:: none

                compatible strings


             This property is **required**.

             See :ref:`dt-important-props` for more information.

         * - ``reg-names``
           - ``string-array``
           - .. code-block:: none

                name of each register space


         * - ``interrupts``
           - ``array``
           - .. code-block:: none

                interrupts for device


             See :ref:`dt-important-props` for more information.

         * - ``interrupts-extended``
           - ``compound``
           - .. code-block:: none

                extended interrupt specifier for device


         * - ``interrupt-names``
           - ``string-array``
           - .. code-block:: none

                name of each interrupt


         * - ``interrupt-parent``
           - ``phandle``
           - .. code-block:: none

                phandle to interrupt controller node


         * - ``label``
           - ``string``
           - .. code-block:: none

                Human readable string describing the device (used as device_get_binding() argument)


             See :ref:`dt-important-props` for more information.

         * - ``clocks``
           - ``phandle-array``
           - .. code-block:: none

                Clock gate information


         * - ``clock-names``
           - ``string-array``
           - .. code-block:: none

                name of each clock


         * - ``#address-cells``
           - ``int``
           - .. code-block:: none

                number of address cells in reg property


         * - ``#size-cells``
           - ``int``
           - .. code-block:: none

                number of size cells in reg property


         * - ``dmas``
           - ``phandle-array``
           - .. code-block:: none

                DMA channels specifiers


         * - ``dma-names``
           - ``string-array``
           - .. code-block:: none

                Provided names of DMA channel specifiers


         * - ``io-channels``
           - ``phandle-array``
           - .. code-block:: none

                IO channels specifiers


         * - ``io-channel-names``
           - ``string-array``
           - .. code-block:: none

                Provided names of IO channel specifiers


         * - ``mboxes``
           - ``phandle-array``
           - .. code-block:: none

                mailbox / IPM channels specifiers


         * - ``mbox-names``
           - ``string-array``
           - .. code-block:: none

                Provided names of mailbox / IPM channel specifiers


         * - ``wakeup-source``
           - ``boolean``
           - .. code-block:: none

                Property to identify that a device can be used as wake up source.

                When this property is provided a specific flag is set into the
                device that tells the system that the device is capable of
                wake up the system.

                Wake up capable devices are disabled (interruptions will not wake up
                the system) by default but they can be enabled at runtime if necessary.



         * - ``power-domain``
           - ``phandle``
           - .. code-block:: none


                Power domain the device belongs to.

                The device will be notified when the power domain it belongs to is either
                suspended or resumed.






Child node properties
=====================

.. list-table::
   :widths: 1 1 4
   :header-rows: 1

   * - Name
     - Type
     - Details

   * - ``pinmux``
     - ``int``
     - .. code-block:: none

          Pinmux selection


       This property is **required**.

   * - ``slew-rate``
     - ``string``
     - .. code-block:: none

          Pin speed. The default value of slew-rate is the SoC power-on-reset
          value. Please refer to the data sheet as a small number of pins
          may have a different default and some pins do not implement
          slew rate adjustment.



       Default value: ``low-speed``

       Legal values: ``'low-speed'``, ``'high-speed'``

   * - ``drive-strength``
     - ``string``
     - .. code-block:: none

          Pin output drive strength for PIO and PIO-24 pin types. Default
          is "1x" for most pins. PIO pins are 2, 4, 8, or 12 mA. PIO-24 pins
          are 4, 8, 16, or 24 mA. Please refer to the data sheet for each
          pin's PIO type and default drive strength.



       Default value: ``1x``

       Legal values: ``'1x'``, ``'2x'``, ``'4x'``, ``'6x'``

   * - ``bias-disable``
     - ``boolean``
     - .. code-block:: none

          disable any pin bias


   * - ``bias-pull-up``
     - ``boolean``
     - .. code-block:: none

          enable pull-up resistor


   * - ``bias-pull-down``
     - ``boolean``
     - .. code-block:: none

          enable pull-down resistor


   * - ``drive-push-pull``
     - ``boolean``
     - .. code-block:: none

          drive actively high and low


   * - ``drive-open-drain``
     - ``boolean``
     - .. code-block:: none

          drive with open drain (hardware AND)


   * - ``low-power-enable``
     - ``boolean``
     - .. code-block:: none

          enable low power mode


   * - ``output-low``
     - ``boolean``
     - .. code-block:: none

          set the pin to output mode with low level


   * - ``output-high``
     - ``boolean``
     - .. code-block:: none

          set the pin to output mode with high level