openwrt/target/linux/bcm27xx/patches-5.4/950-0375-overlays-Make-mcp342x-run-time-compatible.patch
Álvaro Fernández Rojas a1383655cf bcm27xx: add linux 5.4 support
Tested on bcm2710 (Raspberry Pi 3B).

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2020-02-29 12:50:51 +01:00

210 lines
4.1 KiB
Diff

From 00f01136b1c165e0f4a190fcb5ec8aa11428362f Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Mon, 9 Dec 2019 12:32:20 +0000
Subject: [PATCH] overlays: Make mcp342x run-time compatible
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>
---
.../arm/boot/dts/overlays/mcp342x-overlay.dts | 133 ++++++++++++++----
1 file changed, 102 insertions(+), 31 deletions(-)
--- a/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
+++ b/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
@@ -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";
};
@@ -23,71 +24,141 @@
};
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";
};
};