* [PATCH] dt-bindings: add register based devices' mux controller DT bindings
@ 2019-02-18 5:28 Pankaj Bansal
2019-02-18 8:37 ` Peter Rosin
0 siblings, 1 reply; 2+ messages in thread
From: Pankaj Bansal @ 2019-02-18 5:28 UTC (permalink / raw)
To: Leo Li, Peter Rosin, Rob Herring, Frank Rowand; +Cc: devicetree, Pankaj Bansal
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.
+
+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>;
+ };
+
+ ..
+ ..
+ };
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] dt-bindings: add register based devices' mux controller DT bindings
2019-02-18 5:28 [PATCH] dt-bindings: add register based devices' mux controller DT bindings Pankaj Bansal
@ 2019-02-18 8:37 ` Peter Rosin
0 siblings, 0 replies; 2+ messages in thread
From: Peter Rosin @ 2019-02-18 8:37 UTC (permalink / raw)
To: Pankaj Bansal, Leo Li, Rob Herring, Frank Rowand; +Cc: devicetree
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>;
> + };
> +
> + ..
> + ..
> + };
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-02-18 8:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-18 5:28 [PATCH] dt-bindings: add register based devices' mux controller DT bindings Pankaj Bansal
2019-02-18 8:37 ` Peter Rosin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.