Message ID | 20190218105246.23488-1-pankaj.bansal@nxp.com |
---|---|
State | Superseded, archived |
Headers | show |
Series | dt-bindings: add register based devices' mux controller DT bindings | expand |
Context | Check | Description |
---|---|---|
robh/checkpatch | success |
Hi! On 2019-02-18 06:28, Pankaj Bansal wrote: > This adds device tree binding documentation for generic register > based multiplexer controlled by a bitfields in a parent device's > register range. > > Signed-off-by: Pankaj Bansal <pankaj.bansal@nxp.com> > --- > .../devicetree/bindings/mux/reg-mux.txt | 84 ++++++++++++++++++ > 1 file changed, 84 insertions(+) > > diff --git a/Documentation/devicetree/bindings/mux/reg-mux.txt b/Documentation/devicetree/bindings/mux/reg-mux.txt > new file mode 100644 > index 000000000000..c5e6faa2a7cf > --- /dev/null > +++ b/Documentation/devicetree/bindings/mux/reg-mux.txt > @@ -0,0 +1,84 @@ > +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. For people with more device-tree bindings experience: Is that a valid thing to say in a bindings context? The text is a modified copy from the mmio-mux binding which similar except that it has "must be a syscon node" instead of "must be a device node". syscon is a concept that exists in the devicetree, but what is wanted here is some description that indicates that the driver of the parent node provides a regmap. I don't know how to say that without getting linux-specific? > + > +Required properties: > +- compatible : "reg-mux" > +- #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, accessed through the parent syscon. syscon? > + > +Example: > + > +&i2c0 { > + status = "okay"; "okay" in examples are not needed, please remove. > + > + fpga@66 { // fpga connected to i2c > + compatible = "fsl,lx2160aqds-fpga", "fsl,fpga-qixis-i2c", > + "simple-mfd"; > + reg = <0x66>; > + > + mux: mux-controller { // Mux Producer > + compatible = "reg-mux"; > + #mux-control-cells = <1>; > + mux-reg-masks = <0x54 0xf8>, /* 0: reg 0x54, bits 7:3 */ > + <0x54 0x07>; /* 1: reg 0x54, bit 2:0 */ bits 2:0 > + }; > + }; > +}; This first block is not indented to the same level as the following blocks. > + > + mdio-mux-1 { // Mux consumer > + compatible = "mdio-mux"; I do not see this compatible described under Documentation/devicetree/bindings. Is this also new? Where can I find it if so? And perhaps a corresponding driver? To me is seems as if existing usage of the "mdio-mux" compatible is some kind of generic fallback compatible that should perhaps /not/ be associated with a new driver? > + mux-controls = <&mux 0>; > + mdio-parent-bus = <&emdio1>; > + #address-cells=<1>; Spaces around the equal sign, please. > + #size-cells = <0>; > + > + mdio@0 { > + reg = <0x00>; Drop the surplus zero -> <0x0> Or perhaps just a decimal <0>? Fitting 10 or more muxes in one register should be rare and your comment in the mux-controller node has plain old decimal "0" and "1". > + #address-cells = <1>; > + #size-cells = <0>; > + }; > + > + mdio@40 { > + reg = <0x40>; > + #address-cells = <1>; > + #size-cells = <0>; > + }; > + > + .. > + .. > + }; > + > + mdio-mux-2 { // Mux consumer > + compatible = "mdio-mux"; > + mux-controls = <&mux 1>; > + mdio-parent-bus = <&emdio2>; > + #address-cells=<1>; Spaces around the equal sign, please. > + #size-cells = <0>; > + > + mdio@0 { > + reg = <0x00>; Drop the surplus zero -> <0x0> (Or <0>) > + #address-cells = <1>; > + #size-cells = <0>; > + }; > + > + mdio@1 { > + reg = <0x01>; Drop the surplus zero -> <0x1> (Or <1>) Cheers, Peter > + #address-cells = <1>; > + #size-cells = <0>; > + }; > + > + .. > + .. > + }; >
diff --git a/Documentation/devicetree/bindings/mux/reg-mux.txt b/Documentation/devicetree/bindings/mux/reg-mux.txt new file mode 100644 index 000000000000..c5e6faa2a7cf --- /dev/null +++ b/Documentation/devicetree/bindings/mux/reg-mux.txt @@ -0,0 +1,84 @@ +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 : "reg-mux" +- #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, accessed through the parent syscon. + +Example: + +&i2c0 { + status = "okay"; + + fpga@66 { // fpga connected to i2c + compatible = "fsl,lx2160aqds-fpga", "fsl,fpga-qixis-i2c", + "simple-mfd"; + reg = <0x66>; + + mux: mux-controller { // Mux Producer + compatible = "reg-mux"; + #mux-control-cells = <1>; + mux-reg-masks = <0x54 0xf8>, /* 0: reg 0x54, bits 7:3 */ + <0x54 0x07>; /* 1: reg 0x54, bit 2:0 */ + }; + }; +}; + + mdio-mux-1 { // Mux consumer + compatible = "mdio-mux"; + mux-controls = <&mux 0>; + mdio-parent-bus = <&emdio1>; + #address-cells=<1>; + #size-cells = <0>; + + mdio@0 { + reg = <0x00>; + #address-cells = <1>; + #size-cells = <0>; + }; + + mdio@40 { + reg = <0x40>; + #address-cells = <1>; + #size-cells = <0>; + }; + + .. + .. + }; + + mdio-mux-2 { // Mux consumer + compatible = "mdio-mux"; + mux-controls = <&mux 1>; + mdio-parent-bus = <&emdio2>; + #address-cells=<1>; + #size-cells = <0>; + + mdio@0 { + reg = <0x00>; + #address-cells = <1>; + #size-cells = <0>; + }; + + mdio@1 { + reg = <0x01>; + #address-cells = <1>; + #size-cells = <0>; + }; + + .. + .. + };
This adds device tree binding documentation for generic register based multiplexer controlled by a bitfields in a parent device's register range. Signed-off-by: Pankaj Bansal <pankaj.bansal@nxp.com> --- .../devicetree/bindings/mux/reg-mux.txt | 84 ++++++++++++++++++ 1 file changed, 84 insertions(+)