1*5956d97fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0 2*5956d97fSEmmanuel Vadot%YAML 1.2 3*5956d97fSEmmanuel Vadot--- 4*5956d97fSEmmanuel Vadot$id: http://devicetree.org/schemas/mux/reg-mux.yaml# 5*5956d97fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*5956d97fSEmmanuel Vadot 7*5956d97fSEmmanuel Vadottitle: Generic register bitfield-based multiplexer controller bindings 8*5956d97fSEmmanuel Vadot 9*5956d97fSEmmanuel Vadotmaintainers: 10*5956d97fSEmmanuel Vadot - Peter Rosin <peda@axentia.se> 11*5956d97fSEmmanuel Vadot 12*5956d97fSEmmanuel Vadotdescription: |+ 13*5956d97fSEmmanuel Vadot Define register bitfields to be used to control multiplexers. The parent 14*5956d97fSEmmanuel Vadot device tree node must be a device node to provide register r/w access. 15*5956d97fSEmmanuel Vadot 16*5956d97fSEmmanuel Vadotproperties: 17*5956d97fSEmmanuel Vadot compatible: 18*5956d97fSEmmanuel Vadot enum: 19*5956d97fSEmmanuel Vadot - reg-mux # parent device of mux controller is not syscon device 20*5956d97fSEmmanuel Vadot - mmio-mux # parent device of mux controller is syscon device 21*5956d97fSEmmanuel Vadot 22*5956d97fSEmmanuel Vadot reg: true 23*5956d97fSEmmanuel Vadot 24*5956d97fSEmmanuel Vadot '#mux-control-cells': 25*5956d97fSEmmanuel Vadot const: 1 26*5956d97fSEmmanuel Vadot 27*5956d97fSEmmanuel Vadot mux-reg-masks: 28*5956d97fSEmmanuel Vadot description: an array of register offset and pre-shifted bitfield mask 29*5956d97fSEmmanuel Vadot pairs, each describing a single mux control. 30*5956d97fSEmmanuel Vadot 31*5956d97fSEmmanuel Vadot idle-states: true 32*5956d97fSEmmanuel Vadot 33*5956d97fSEmmanuel Vadotrequired: 34*5956d97fSEmmanuel Vadot - compatible 35*5956d97fSEmmanuel Vadot - mux-reg-masks 36*5956d97fSEmmanuel Vadot - '#mux-control-cells' 37*5956d97fSEmmanuel Vadot 38*5956d97fSEmmanuel VadotadditionalProperties: false 39*5956d97fSEmmanuel Vadot 40*5956d97fSEmmanuel Vadotexamples: 41*5956d97fSEmmanuel Vadot - | 42*5956d97fSEmmanuel Vadot /* The parent device of mux controller is not a syscon device. */ 43*5956d97fSEmmanuel Vadot 44*5956d97fSEmmanuel Vadot #include <dt-bindings/mux/mux.h> 45*5956d97fSEmmanuel Vadot 46*5956d97fSEmmanuel Vadot mux-controller { 47*5956d97fSEmmanuel Vadot compatible = "reg-mux"; 48*5956d97fSEmmanuel Vadot #mux-control-cells = <1>; 49*5956d97fSEmmanuel Vadot mux-reg-masks = 50*5956d97fSEmmanuel Vadot <0x54 0xf8>, /* 0: reg 0x54, bits 7:3 */ 51*5956d97fSEmmanuel Vadot <0x54 0x07>; /* 1: reg 0x54, bits 2:0 */ 52*5956d97fSEmmanuel Vadot }; 53*5956d97fSEmmanuel Vadot 54*5956d97fSEmmanuel Vadot mdio-mux-1 { 55*5956d97fSEmmanuel Vadot compatible = "mdio-mux-multiplexer"; 56*5956d97fSEmmanuel Vadot mux-controls = <&mux1 0>; 57*5956d97fSEmmanuel Vadot mdio-parent-bus = <&emdio1>; 58*5956d97fSEmmanuel Vadot #address-cells = <1>; 59*5956d97fSEmmanuel Vadot #size-cells = <0>; 60*5956d97fSEmmanuel Vadot 61*5956d97fSEmmanuel Vadot mdio@0 { 62*5956d97fSEmmanuel Vadot reg = <0x0>; 63*5956d97fSEmmanuel Vadot #address-cells = <1>; 64*5956d97fSEmmanuel Vadot #size-cells = <0>; 65*5956d97fSEmmanuel Vadot }; 66*5956d97fSEmmanuel Vadot 67*5956d97fSEmmanuel Vadot mdio@8 { 68*5956d97fSEmmanuel Vadot reg = <0x8>; 69*5956d97fSEmmanuel Vadot #address-cells = <1>; 70*5956d97fSEmmanuel Vadot #size-cells = <0>; 71*5956d97fSEmmanuel Vadot }; 72*5956d97fSEmmanuel Vadot }; 73*5956d97fSEmmanuel Vadot 74*5956d97fSEmmanuel Vadot mdio-mux-2 { 75*5956d97fSEmmanuel Vadot compatible = "mdio-mux-multiplexer"; 76*5956d97fSEmmanuel Vadot mux-controls = <&mux1 1>; 77*5956d97fSEmmanuel Vadot mdio-parent-bus = <&emdio2>; 78*5956d97fSEmmanuel Vadot #address-cells = <1>; 79*5956d97fSEmmanuel Vadot #size-cells = <0>; 80*5956d97fSEmmanuel Vadot 81*5956d97fSEmmanuel Vadot mdio@0 { 82*5956d97fSEmmanuel Vadot reg = <0x0>; 83*5956d97fSEmmanuel Vadot #address-cells = <1>; 84*5956d97fSEmmanuel Vadot #size-cells = <0>; 85*5956d97fSEmmanuel Vadot }; 86*5956d97fSEmmanuel Vadot 87*5956d97fSEmmanuel Vadot mdio@1 { 88*5956d97fSEmmanuel Vadot reg = <0x1>; 89*5956d97fSEmmanuel Vadot #address-cells = <1>; 90*5956d97fSEmmanuel Vadot #size-cells = <0>; 91*5956d97fSEmmanuel Vadot }; 92*5956d97fSEmmanuel Vadot }; 93*5956d97fSEmmanuel Vadot 94*5956d97fSEmmanuel Vadot - | 95*5956d97fSEmmanuel Vadot /* The parent device of mux controller is syscon device. */ 96*5956d97fSEmmanuel Vadot 97*5956d97fSEmmanuel Vadot #include <dt-bindings/mux/mux.h> 98*5956d97fSEmmanuel Vadot syscon@1000 { 99*5956d97fSEmmanuel Vadot compatible = "fsl,imx7d-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr", "syscon", "simple-mfd"; 100*5956d97fSEmmanuel Vadot reg = <0x1000 0x100>; 101*5956d97fSEmmanuel Vadot 102*5956d97fSEmmanuel Vadot mux2: mux-controller { 103*5956d97fSEmmanuel Vadot compatible = "mmio-mux"; 104*5956d97fSEmmanuel Vadot #mux-control-cells = <1>; 105*5956d97fSEmmanuel Vadot 106*5956d97fSEmmanuel Vadot mux-reg-masks = 107*5956d97fSEmmanuel Vadot <0x3 0x30>, /* 0: reg 0x3, bits 5:4 */ 108*5956d97fSEmmanuel Vadot <0x3 0x40>; /* 1: reg 0x3, bit 6 */ 109*5956d97fSEmmanuel Vadot idle-states = <MUX_IDLE_AS_IS>, <0>; 110*5956d97fSEmmanuel Vadot }; 111*5956d97fSEmmanuel Vadot }; 112*5956d97fSEmmanuel Vadot 113*5956d97fSEmmanuel Vadot video-mux { 114*5956d97fSEmmanuel Vadot compatible = "video-mux"; 115*5956d97fSEmmanuel Vadot mux-controls = <&mux2 0>; 116*5956d97fSEmmanuel Vadot #address-cells = <1>; 117*5956d97fSEmmanuel Vadot #size-cells = <0>; 118*5956d97fSEmmanuel Vadot 119*5956d97fSEmmanuel Vadot ports { 120*5956d97fSEmmanuel Vadot #address-cells = <1>; 121*5956d97fSEmmanuel Vadot #size-cells = <0>; 122*5956d97fSEmmanuel Vadot 123*5956d97fSEmmanuel Vadot /* inputs 0..3 */ 124*5956d97fSEmmanuel Vadot port@0 { 125*5956d97fSEmmanuel Vadot reg = <0>; 126*5956d97fSEmmanuel Vadot }; 127*5956d97fSEmmanuel Vadot port@1 { 128*5956d97fSEmmanuel Vadot reg = <1>; 129*5956d97fSEmmanuel Vadot }; 130*5956d97fSEmmanuel Vadot port@2 { 131*5956d97fSEmmanuel Vadot reg = <2>; 132*5956d97fSEmmanuel Vadot }; 133*5956d97fSEmmanuel Vadot port@3 { 134*5956d97fSEmmanuel Vadot reg = <3>; 135*5956d97fSEmmanuel Vadot }; 136*5956d97fSEmmanuel Vadot 137*5956d97fSEmmanuel Vadot /* output */ 138*5956d97fSEmmanuel Vadot port@4 { 139*5956d97fSEmmanuel Vadot reg = <4>; 140*5956d97fSEmmanuel Vadot }; 141*5956d97fSEmmanuel Vadot }; 142*5956d97fSEmmanuel Vadot }; 143*5956d97fSEmmanuel Vadot... 144