Re: [PATCH v2 1/6] dt-bindings: mux: Convert reg-mux DT bindings to YAML

From: Nishanth Menon
Date: Mon May 17 2021 - 10:09:58 EST


On 11:47-20210517, Kishon Vijay Abraham I wrote:
> Convert reg-mux DT bindings to YAML. Move the examples provided in
> reg-mux.txt to mux-controller.txt and remove reg-mux.txt

--to 'Rob Herring <robh+dt@xxxxxxxxxx>' --to 'Peter Rosin
<peda@xxxxxxxxxx>' please.


If Peter and Rob request me, then I can pick into my tree..

>
> Signed-off-by: Kishon Vijay Abraham I <kishon@xxxxxx>
> ---
> .../bindings/mux/mux-controller.txt | 113 ++++++++++++++-
> .../devicetree/bindings/mux/reg-mux.txt | 129 ------------------
> .../devicetree/bindings/mux/reg-mux.yaml | 47 +++++++
> 3 files changed, 159 insertions(+), 130 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/mux/reg-mux.txt
> create mode 100644 Documentation/devicetree/bindings/mux/reg-mux.yaml
>
> diff --git a/Documentation/devicetree/bindings/mux/mux-controller.txt b/Documentation/devicetree/bindings/mux/mux-controller.txt
> index 4f47e4bd2fa0..6f1e83367d52 100644
> --- a/Documentation/devicetree/bindings/mux/mux-controller.txt
> +++ b/Documentation/devicetree/bindings/mux/mux-controller.txt
> @@ -38,7 +38,7 @@ mux-ctrl-specifier typically encodes the chip-relative mux controller number.
> If the mux controller chip only provides a single mux controller, the
> mux-ctrl-specifier can typically be left out.
>
> -Example:
> +Example 1:
>
> /* One consumer of a 2-way mux controller (one GPIO-line) */
> mux: mux-controller {
> @@ -64,6 +64,8 @@ because there is only one mux controller in the list. However, if the driver
> for the consumer node in fact asks for a named mux controller, that name is of
> course still required.
>
> +Example 2:
> +
> /*
> * Two consumers (one for an ADC line and one for an i2c bus) of
> * parallel 4-way multiplexers controlled by the same two GPIO-lines.
> @@ -116,6 +118,115 @@ course still required.
> };
> };
>
> +Example 3:
> +
> +The parent device of mux controller is not a syscon device.
> +
> +&i2c0 {
> + fpga@66 { // fpga connected to i2c
> + compatible = "fsl,lx2160aqds-fpga", "fsl,fpga-qixis-i2c",
> + "simple-mfd";
> + reg = <0x66>;
> +
> + mux: mux-controller {
> + compatible = "reg-mux";
> + #mux-control-cells = <1>;
> + mux-reg-masks = <0x54 0xf8>, /* 0: reg 0x54, bits 7:3 */
> + <0x54 0x07>; /* 1: reg 0x54, bits 2:0 */
> + };
> + };
> +};
> +
> +mdio-mux-1 {
> + compatible = "mdio-mux-multiplexer";
> + mux-controls = <&mux 0>;
> + mdio-parent-bus = <&emdio1>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + mdio@0 {
> + reg = <0x0>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + mdio@8 {
> + reg = <0x8>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + ..
> + ..
> +};
> +
> +mdio-mux-2 {
> + compatible = "mdio-mux-multiplexer";
> + mux-controls = <&mux 1>;
> + mdio-parent-bus = <&emdio2>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + mdio@0 {
> + reg = <0x0>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + mdio@1 {
> + reg = <0x1>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> + ..
> + ..
> +};
> +
> +Example 4:
> +
> +The parent device of mux controller is syscon device.
> +
> +syscon {
> + compatible = "syscon";
> +
> + mux: mux-controller {
> + compatible = "mmio-mux";
> + #mux-control-cells = <1>;
> +
> + mux-reg-masks = <0x3 0x30>, /* 0: reg 0x3, bits 5:4 */
> + <0x3 0x40>, /* 1: reg 0x3, bit 6 */
> + idle-states = <MUX_IDLE_AS_IS>, <0>;
> + };
> +};
> +
> +video-mux {
> + compatible = "video-mux";
> + mux-controls = <&mux 0>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + ports {
> + /* inputs 0..3 */
> + port@0 {
> + reg = <0>;
> + };
> + port@1 {
> + reg = <1>;
> + };
> + port@2 {
> + reg = <2>;
> + };
> + port@3 {
> + reg = <3>;
> + };
> +
> + /* output */
> + port@4 {
> + reg = <4>;
> + };
> + };
> +};
>
> Mux controller nodes
> --------------------
> diff --git a/Documentation/devicetree/bindings/mux/reg-mux.txt b/Documentation/devicetree/bindings/mux/reg-mux.txt
> deleted file mode 100644
> index 4afd7ba73d60..000000000000
> --- a/Documentation/devicetree/bindings/mux/reg-mux.txt
> +++ /dev/null
> @@ -1,129 +0,0 @@
> -Generic register bitfield-based multiplexer controller bindings
> -
> -Define register bitfields to be used to control multiplexers. The parent
> -device tree node must be a device node to provide register r/w access.
> -
> -Required properties:
> -- compatible : should be one of
> - "reg-mux" : if parent device of mux controller is not syscon device
> - "mmio-mux" : if parent device of mux controller is syscon device
> -- #mux-control-cells : <1>
> -- mux-reg-masks : an array of register offset and pre-shifted bitfield mask
> - pairs, each describing a single mux control.
> -* Standard mux-controller bindings as decribed in mux-controller.txt
> -
> -Optional properties:
> -- idle-states : if present, the state the muxes will have when idle. The
> - special state MUX_IDLE_AS_IS is the default.
> -
> -The multiplexer state of each multiplexer is defined as the value of the
> -bitfield described by the corresponding register offset and bitfield mask
> -pair in the mux-reg-masks array.
> -
> -Example 1:
> -The parent device of mux controller is not a syscon device.
> -
> -&i2c0 {
> - fpga@66 { // fpga connected to i2c
> - compatible = "fsl,lx2160aqds-fpga", "fsl,fpga-qixis-i2c",
> - "simple-mfd";
> - reg = <0x66>;
> -
> - mux: mux-controller {
> - compatible = "reg-mux";
> - #mux-control-cells = <1>;
> - mux-reg-masks = <0x54 0xf8>, /* 0: reg 0x54, bits 7:3 */
> - <0x54 0x07>; /* 1: reg 0x54, bits 2:0 */
> - };
> - };
> -};
> -
> -mdio-mux-1 {
> - compatible = "mdio-mux-multiplexer";
> - mux-controls = <&mux 0>;
> - mdio-parent-bus = <&emdio1>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> -
> - mdio@0 {
> - reg = <0x0>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> - };
> -
> - mdio@8 {
> - reg = <0x8>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> - };
> -
> - ..
> - ..
> -};
> -
> -mdio-mux-2 {
> - compatible = "mdio-mux-multiplexer";
> - mux-controls = <&mux 1>;
> - mdio-parent-bus = <&emdio2>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> -
> - mdio@0 {
> - reg = <0x0>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> - };
> -
> - mdio@1 {
> - reg = <0x1>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> - };
> -
> - ..
> - ..
> -};
> -
> -Example 2:
> -The parent device of mux controller is syscon device.
> -
> -syscon {
> - compatible = "syscon";
> -
> - mux: mux-controller {
> - compatible = "mmio-mux";
> - #mux-control-cells = <1>;
> -
> - mux-reg-masks = <0x3 0x30>, /* 0: reg 0x3, bits 5:4 */
> - <0x3 0x40>, /* 1: reg 0x3, bit 6 */
> - idle-states = <MUX_IDLE_AS_IS>, <0>;
> - };
> -};
> -
> -video-mux {
> - compatible = "video-mux";
> - mux-controls = <&mux 0>;
> - #address-cells = <1>;
> - #size-cells = <0>;
> -
> - ports {
> - /* inputs 0..3 */
> - port@0 {
> - reg = <0>;
> - };
> - port@1 {
> - reg = <1>;
> - };
> - port@2 {
> - reg = <2>;
> - };
> - port@3 {
> - reg = <3>;
> - };
> -
> - /* output */
> - port@4 {
> - reg = <4>;
> - };
> - };
> -};
> diff --git a/Documentation/devicetree/bindings/mux/reg-mux.yaml b/Documentation/devicetree/bindings/mux/reg-mux.yaml
> new file mode 100644
> index 000000000000..54583aafa9de
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mux/reg-mux.yaml
> @@ -0,0 +1,47 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/mux/reg-mux.yaml#";
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#";
> +
> +title: Generic register bitfield-based multiplexer controller bindings
> +
> +maintainers:
> + - Peter Rosin <peda@xxxxxxxxxx>
> +
> +properties:
> + compatible:
> + enum:
> + - reg-mux
> + - mmio-mux
> +
> + "#mux-control-cells": true
> +
> + mux-reg-masks:
> + minItems: 2
> + maxItems: 32
> + description:
> + An array of register offset and pre-shifted bitfield mask pairs, each describing a
> + single mux control.
> +
> + idle-states:
> + allOf:
> + - $ref: /schemas/types.yaml#/definitions/uint32-array
> +
> +required:
> + - compatible
> + - mux-reg-masks
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + serdes_ln_ctrl: mux {
> + compatible = "mmio-mux";
> + #mux-control-cells = <1>;
> + mux-reg-masks = <0x4080 0x3>, <0x4084 0x3>, /* SERDES0 lane0/1 select */
> + <0x4090 0x3>, <0x4094 0x3>, /* SERDES1 lane0/1 select */
> + <0x40a0 0x3>, <0x40a4 0x3>, /* SERDES2 lane0/1 select */
> + <0x40b0 0x3>, <0x40b4 0x3>, /* SERDES3 lane0/1 select */
> + <0x40c0 0x3>, <0x40c4 0x3>, <0x40c8 0x3>, <0x40cc 0x3>;
> + };
> --
> 2.17.1
>

--
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D