overlays: Make mcp342x run-time compatible
authorPhil Elwell <phil@raspberrypi.org>
Mon, 9 Dec 2019 12:32:20 +0000 (12:32 +0000)
committerpopcornmix <popcornmix@gmail.com>
Wed, 1 Jul 2020 15:33:12 +0000 (16:33 +0100)
The order of processing of run-time overlays differs from that done by
the firmware. This means that certain parameter processing techniques
are not compatible with run-time use.  The mcp342x overlay is one such
overlay, but it is easy to change the implementation without changing
the interface.

See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=258294

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
arch/arm/boot/dts/overlays/mcp342x-overlay.dts

index 7bbb528..714eca5 100644 (file)
@@ -8,14 +8,15 @@
 
        fragment@0 {
                target = <&i2c1>;
-               __overlay__ {
+               __dormant__ {
                        #address-cells = <1>;
                        #size-cells = <0>;
 
                        status = "okay";
 
-                       mcp342x: mcp@68 {
+                       mcp3421: mcp@68 {
                                reg = <0x68>;
+                               compatible = "microchip,mcp3421";
 
                                status = "okay";
                        };
        };
 
        fragment@1 {
-               target = <&mcp342x>;
+               target = <&i2c1>;
                __dormant__ {
-                       compatible = "microchip,mcp3421";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       status = "okay";
+
+                       mcp3422: mcp@68 {
+                               reg = <0x68>;
+                               compatible = "microchip,mcp3422";
+
+                               status = "okay";
+                       };
                };
        };
 
        fragment@2 {
-               target = <&mcp342x>;
+               target = <&i2c1>;
                __dormant__ {
-                       compatible = "microchip,mcp3422";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       status = "okay";
+
+                       mcp3423: mcp@68 {
+                               reg = <0x68>;
+                               compatible = "microchip,mcp3423";
+
+                               status = "okay";
+                       };
                };
        };
 
        fragment@3 {
-               target = <&mcp342x>;
+               target = <&i2c1>;
                __dormant__ {
-                       compatible = "microchip,mcp3423";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       status = "okay";
+
+                       mcp3424: mcp@68 {
+                               reg = <0x68>;
+                               compatible = "microchip,mcp3424";
+
+                               status = "okay";
+                       };
                };
        };
 
        fragment@4 {
-               target = <&mcp342x>;
+               target = <&i2c1>;
                __dormant__ {
-                       compatible = "microchip,mcp3424";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       status = "okay";
+
+                       mcp3425: mcp@68 {
+                               reg = <0x68>;
+                               compatible = "microchip,mcp3425","mcp3425";
+
+                               status = "okay";
+                       };
                };
        };
 
        fragment@5 {
-               target = <&mcp342x>;
+               target = <&i2c1>;
                __dormant__ {
-                       compatible = "microchip,mcp3425";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       status = "okay";
+
+                       mcp3426: mcp@68 {
+                               reg = <0x68>;
+                               compatible = "microchip,mcp3426";
+
+                               status = "okay";
+                       };
                };
        };
 
        fragment@6 {
-               target = <&mcp342x>;
+               target = <&i2c1>;
                __dormant__ {
-                       compatible = "microchip,mcp3426";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       status = "okay";
+
+                       mcp3427: mcp@68 {
+                               reg = <0x68>;
+                               compatible = "microchip,mcp3427";
+
+                               status = "okay";
+                       };
                };
        };
 
        fragment@7 {
-               target = <&mcp342x>;
+               target = <&i2c1>;
                __dormant__ {
-                       compatible = "microchip,mcp3427";
-               };
-       };
+                       #address-cells = <1>;
+                       #size-cells = <0>;
 
-       fragment@8 {
-               target = <&mcp342x>;
-               __dormant__ {
-                       compatible = "microchip,mcp3428";
+                       status = "okay";
+
+                       mcp3428: mcp@68 {
+                               reg = <0x68>;
+                               compatible = "microchip,mcp3428";
+
+                               status = "okay";
+                       };
                };
        };
 
        __overrides__ {
-               addr = <&mcp342x>,"reg:0";
-               mcp3421 = <0>,"=1";
-               mcp3422 = <0>,"=2";
-               mcp3423 = <0>,"=3";
-               mcp3424 = <0>,"=4";
-               mcp3425 = <0>,"=5";
-               mcp3426 = <0>,"=6";
-               mcp3427 = <0>,"=7";
-               mcp3428 = <0>,"=8";
+               addr = <&mcp3421>,"reg:0",
+                      <&mcp3422>,"reg:0",
+                      <&mcp3423>,"reg:0",
+                      <&mcp3424>,"reg:0",
+                      <&mcp3425>,"reg:0",
+                      <&mcp3426>,"reg:0",
+                      <&mcp3427>,"reg:0",
+                      <&mcp3428>,"reg:0";
+               mcp3421 = <0>,"=0";
+               mcp3422 = <0>,"=1";
+               mcp3423 = <0>,"=2";
+               mcp3424 = <0>,"=3";
+               mcp3425 = <0>,"=4";
+               mcp3426 = <0>,"=5";
+               mcp3427 = <0>,"=6";
+               mcp3428 = <0>,"=7";
        };
 };