19b358af7SRob Herring# SPDX-License-Identifier: GPL-2.0 29b358af7SRob Herring%YAML 1.2 39b358af7SRob Herring--- 49b358af7SRob Herring$id: http://devicetree.org/schemas/mux/reg-mux.yaml# 59b358af7SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml# 69b358af7SRob Herring 7*84e85359SKrzysztof Kozlowskititle: Generic register bitfield-based multiplexer controller 89b358af7SRob Herring 99b358af7SRob Herringmaintainers: 109b358af7SRob Herring - Peter Rosin <peda@axentia.se> 119b358af7SRob Herring 129b358af7SRob Herringdescription: |+ 139b358af7SRob Herring Define register bitfields to be used to control multiplexers. The parent 149b358af7SRob Herring device tree node must be a device node to provide register r/w access. 159b358af7SRob Herring 169b358af7SRob Herringproperties: 179b358af7SRob Herring compatible: 189b358af7SRob Herring enum: 199b358af7SRob Herring - reg-mux # parent device of mux controller is not syscon device 209b358af7SRob Herring - mmio-mux # parent device of mux controller is syscon device 219b358af7SRob Herring 229b358af7SRob Herring reg: true 239b358af7SRob Herring 249b358af7SRob Herring '#mux-control-cells': 259b358af7SRob Herring const: 1 269b358af7SRob Herring 279b358af7SRob Herring mux-reg-masks: 284e71ed98SRob Herring $ref: /schemas/types.yaml#/definitions/uint32-matrix 294e71ed98SRob Herring items: 304e71ed98SRob Herring items: 314e71ed98SRob Herring - description: register offset 324e71ed98SRob Herring - description: pre-shifted bitfield mask 334e71ed98SRob Herring description: Each entry pair describes a single mux control. 349b358af7SRob Herring 359b358af7SRob Herring idle-states: true 369b358af7SRob Herring 379b358af7SRob Herringrequired: 389b358af7SRob Herring - compatible 399b358af7SRob Herring - mux-reg-masks 409b358af7SRob Herring - '#mux-control-cells' 419b358af7SRob Herring 429b358af7SRob HerringadditionalProperties: false 439b358af7SRob Herring 449b358af7SRob Herringexamples: 459b358af7SRob Herring - | 469b358af7SRob Herring /* The parent device of mux controller is not a syscon device. */ 479b358af7SRob Herring 489b358af7SRob Herring #include <dt-bindings/mux/mux.h> 499b358af7SRob Herring 509b358af7SRob Herring mux-controller { 519b358af7SRob Herring compatible = "reg-mux"; 529b358af7SRob Herring #mux-control-cells = <1>; 539b358af7SRob Herring mux-reg-masks = 549b358af7SRob Herring <0x54 0xf8>, /* 0: reg 0x54, bits 7:3 */ 559b358af7SRob Herring <0x54 0x07>; /* 1: reg 0x54, bits 2:0 */ 569b358af7SRob Herring }; 579b358af7SRob Herring 589b358af7SRob Herring mdio-mux-1 { 599b358af7SRob Herring compatible = "mdio-mux-multiplexer"; 609b358af7SRob Herring mux-controls = <&mux1 0>; 619b358af7SRob Herring mdio-parent-bus = <&emdio1>; 629b358af7SRob Herring #address-cells = <1>; 639b358af7SRob Herring #size-cells = <0>; 649b358af7SRob Herring 659b358af7SRob Herring mdio@0 { 669b358af7SRob Herring reg = <0x0>; 679b358af7SRob Herring #address-cells = <1>; 689b358af7SRob Herring #size-cells = <0>; 699b358af7SRob Herring }; 709b358af7SRob Herring 719b358af7SRob Herring mdio@8 { 729b358af7SRob Herring reg = <0x8>; 739b358af7SRob Herring #address-cells = <1>; 749b358af7SRob Herring #size-cells = <0>; 759b358af7SRob Herring }; 769b358af7SRob Herring }; 779b358af7SRob Herring 789b358af7SRob Herring mdio-mux-2 { 799b358af7SRob Herring compatible = "mdio-mux-multiplexer"; 809b358af7SRob Herring mux-controls = <&mux1 1>; 819b358af7SRob Herring mdio-parent-bus = <&emdio2>; 829b358af7SRob Herring #address-cells = <1>; 839b358af7SRob Herring #size-cells = <0>; 849b358af7SRob Herring 859b358af7SRob Herring mdio@0 { 869b358af7SRob Herring reg = <0x0>; 879b358af7SRob Herring #address-cells = <1>; 889b358af7SRob Herring #size-cells = <0>; 899b358af7SRob Herring }; 909b358af7SRob Herring 919b358af7SRob Herring mdio@1 { 929b358af7SRob Herring reg = <0x1>; 939b358af7SRob Herring #address-cells = <1>; 949b358af7SRob Herring #size-cells = <0>; 959b358af7SRob Herring }; 969b358af7SRob Herring }; 979b358af7SRob Herring 989b358af7SRob Herring - | 999b358af7SRob Herring /* The parent device of mux controller is syscon device. */ 1009b358af7SRob Herring 1019b358af7SRob Herring #include <dt-bindings/mux/mux.h> 1029b358af7SRob Herring syscon@1000 { 1039b358af7SRob Herring reg = <0x1000 0x100>; 1049b358af7SRob Herring 1059b358af7SRob Herring mux2: mux-controller { 1069b358af7SRob Herring compatible = "mmio-mux"; 1079b358af7SRob Herring #mux-control-cells = <1>; 1089b358af7SRob Herring 1099b358af7SRob Herring mux-reg-masks = 1109b358af7SRob Herring <0x3 0x30>, /* 0: reg 0x3, bits 5:4 */ 1119b358af7SRob Herring <0x3 0x40>; /* 1: reg 0x3, bit 6 */ 1129b358af7SRob Herring idle-states = <MUX_IDLE_AS_IS>, <0>; 1139b358af7SRob Herring }; 1149b358af7SRob Herring }; 1159b358af7SRob Herring 1169b358af7SRob Herring video-mux { 1179b358af7SRob Herring compatible = "video-mux"; 1189b358af7SRob Herring mux-controls = <&mux2 0>; 1199b358af7SRob Herring #address-cells = <1>; 1209b358af7SRob Herring #size-cells = <0>; 1219b358af7SRob Herring 1229b358af7SRob Herring ports { 1239b358af7SRob Herring #address-cells = <1>; 1249b358af7SRob Herring #size-cells = <0>; 1259b358af7SRob Herring 1269b358af7SRob Herring /* inputs 0..3 */ 1279b358af7SRob Herring port@0 { 1289b358af7SRob Herring reg = <0>; 1299b358af7SRob Herring }; 1309b358af7SRob Herring port@1 { 1319b358af7SRob Herring reg = <1>; 1329b358af7SRob Herring }; 1339b358af7SRob Herring port@2 { 1349b358af7SRob Herring reg = <2>; 1359b358af7SRob Herring }; 1369b358af7SRob Herring port@3 { 1379b358af7SRob Herring reg = <3>; 1389b358af7SRob Herring }; 1399b358af7SRob Herring 1409b358af7SRob Herring /* output */ 1419b358af7SRob Herring port@4 { 1429b358af7SRob Herring reg = <4>; 1439b358af7SRob Herring }; 1449b358af7SRob Herring }; 1459b358af7SRob Herring }; 1469b358af7SRob Herring... 147