mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 10:08:59 +00:00
96 lines
2.5 KiB
Diff
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";
|