1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-02-15 04:42:02 +00:00
openmptcprouter/6.1/target/linux/bcm27xx/patches-6.1/950-0983-fixup-overlays-mcp23017-allow-specification-of-the-i.patch
Ycarus (Yannick Chabanois) 3743692973 Fix RPI5 support
2023-11-17 17:31:36 +01:00

95 lines
2.5 KiB
Diff

From 18aa0db9adaad4bf8fc91de9527369b0c3530c49 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.com>
Date: Tue, 24 Oct 2023 09:58:52 +0100
Subject: [PATCH] fixup! overlays: mcp23017: allow specification of the i2c bus
The incorrect fragment order (*) caused broke the interrupt usage, and
while it was being fixed the lack of a reference to the pinctrl
declaration was noticed.
See: https://github.com/raspberrypi/linux/issues/5677
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
(*) Ideally all fragments would appear in the file in the order in which
they should be merged, but that is easy to forget and can be awkward, so
the firmware merges all "intra" fragments (those that target other
fragments in the overlay) before "inter" fragments (those that target
the base DTB). However, intra fragments that target other intra
fragments is a level of nesting too far for this logic to cope, so they
must appear before the fragments they target.
---
.../boot/dts/overlays/mcp23017-overlay.dts | 42 ++++++++++---------
1 file changed, 22 insertions(+), 20 deletions(-)
--- a/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
+++ b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
@@ -24,30 +24,13 @@
};
fragment@2 {
- target = <&i2cbus>;
- __overlay__ {
- #address-cells = <1>;
- #size-cells = <0>;
-
- mcp23017: mcp@20 {
- compatible = "microchip,mcp23017";
- reg = <0x20>;
- gpio-controller;
- #gpio-cells = <2>;
-
- status = "okay";
- };
- };
- };
-
- fragment@3 {
target = <&mcp23017>;
__dormant__ {
compatible = "microchip,mcp23008";
};
};
- fragment@4 {
+ fragment@3 {
target = <&mcp23017>;
mcp23017_irq: __overlay__ {
#interrupt-cells=<2>;
@@ -58,6 +41,25 @@
};
};
+ fragment@4 {
+ target = <&i2cbus>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ mcp23017: mcp@20 {
+ compatible = "microchip,mcp23017";
+ pinctrl-name = "default";
+ pinctrl-0 = <&mcp23017_pins>;
+ reg = <0x20>;
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ status = "okay";
+ };
+ };
+ };
+
frag100: fragment@100 {
target = <&i2c1>;
i2cbus: __overlay__ {
@@ -83,8 +85,8 @@
gpiopin = <&mcp23017_pins>,"brcm,pins:0",
<&mcp23017_irq>,"interrupts:0";
addr = <&mcp23017>,"reg:0", <&mcp23017_pins>,"reg:0";
- mcp23008 = <0>,"=3";
- noints = <0>,"!1!4";
+ mcp23008 = <0>,"=2";
+ noints = <0>,"!1!3";
i2c0 = <&frag100>, "target:0=",<&i2c0>;
i2c_csi_dsi = <&frag100>, "target:0=",<&i2c_csi_dsi>,
<0>,"+101+102";