openwrt/target/linux/bcm27xx/patches-6.1/950-1051-fixup-overlays-mcp23017-allow-specification-of-the-i.patch
Marty Jones 2e715fb4fc bcm27xx: update 6.1 patches to latest version
Add support for BCM2712 (Raspberry Pi 5).
3bb5880ab3
Patches were generated from the diff between linux kernel branch linux-6.1.y
and rpi-6.1.y from raspberry pi kernel source:
- git format-patch linux-6.1.y...rpi-6.1.y

Build system: x86_64
Build-tested: bcm2708, bcm2709, bcm2710, bcm2711
Run-tested: bcm2710/RPi3B, bcm2711/RPi4B

Signed-off-by: Marty Jones <mj8263788@gmail.com>
[Remove applied and reverted patches, squash patches and config commits]
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-01-25 17:46:45 +01:00

96 lines
2.5 KiB
Diff

From 3ed6d34d53e94ecbebc64c8fa3d1b6d3c41db8fb 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";