openwrt/target/linux/brcm2708/patches-4.19/950-0435-BCM270X_DT-Add-non-removable-clone-of-mmc-node.patch

207 lines
4.8 KiB
Diff
Raw Normal View History

From c63b13bddf317347ba0b69807c1591526d50ba47 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 7 May 2019 14:29:38 +0100
Subject: [PATCH] BCM270X_DT: Add non-removable clone of mmc node
non-removable is a boolean property, and as such can't be unset by an
overlay if it is set in a base DTB. Until now the workaround for this
problem has been for overlays to clone non-removable nodes without
the offending property, but this involves a lot of unnecessary
replication. Instead, add a clone of the mmc node with non-removable
already set to the base DTB, selecting the required version using
the status properties.
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
arch/arm/boot/dts/bcm2708-rpi-0-w.dts | 4 +--
arch/arm/boot/dts/bcm2708-rpi.dtsi | 3 +-
arch/arm/boot/dts/bcm270x.dtsi | 13 ++++++++
arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 5 ++--
arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 5 ++--
arch/arm/boot/dts/overlays/mmc-overlay.dts | 7 +++++
arch/arm/boot/dts/overlays/sdio-overlay.dts | 33 +++++++--------------
7 files changed, 38 insertions(+), 32 deletions(-)
--- a/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
+++ b/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
@@ -14,6 +14,7 @@
aliases {
serial0 = &uart1;
serial1 = &uart0;
+ mmc1 = &mmcnr;
};
};
@@ -73,10 +74,9 @@
};
};
-&mmc {
+&mmcnr {
pinctrl-names = "default";
pinctrl-0 = <&sdio_pins>;
- non-removable;
bus-width = <4>;
status = "okay";
};
--- a/arch/arm/boot/dts/bcm2708-rpi.dtsi
+++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi
@@ -118,7 +118,8 @@
sd_force_pio = <&sdhost>,"brcm,force-pio?";
sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
sd_debug = <&sdhost>,"brcm,debug";
- sdio_overclock = <&mmc>,"brcm,overclock-50:0";
+ sdio_overclock = <&mmc>,"brcm,overclock-50:0",
+ <&mmcnr>,"brcm,overclock-50:0";
axiperf = <&axiperf>,"status";
};
};
--- a/arch/arm/boot/dts/bcm270x.dtsi
+++ b/arch/arm/boot/dts/bcm270x.dtsi
@@ -79,6 +79,19 @@
status = "disabled";
};
+ /* A clone of mmc but with non-removable set */
+ mmcnr: mmcnr@7e300000 {
+ compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
+ reg = <0x7e300000 0x100>;
+ interrupts = <2 30>;
+ clocks = <&clocks BCM2835_CLOCK_EMMC>;
+ dmas = <&dma 11>;
+ dma-names = "rx-tx";
+ brcm,overclock-50 = <0>;
+ non-removable;
+ status = "disabled";
+ };
+
hvs: hvs@7e400000 {
/* Add alias */
status = "disabled";
--- a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
+++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
@@ -15,6 +15,7 @@
aliases {
serial0 = &uart1;
serial1 = &uart0;
+ mmc1 = &mmcnr;
};
};
@@ -74,13 +75,11 @@
};
};
-&mmc {
+&mmcnr {
pinctrl-names = "default";
pinctrl-0 = <&sdio_pins>;
- non-removable;
bus-width = <4>;
status = "okay";
- brcm,overclock-50 = <0>;
};
&firmware {
--- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
+++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
@@ -15,6 +15,7 @@
aliases {
serial0 = &uart1;
serial1 = &uart0;
+ mmc1 = &mmcnr;
};
};
@@ -74,13 +75,11 @@
};
};
-&mmc {
+&mmcnr {
pinctrl-names = "default";
pinctrl-0 = <&sdio_pins>;
- non-removable;
bus-width = <4>;
status = "okay";
- brcm,overclock-50 = <0>;
};
&soc {
--- a/arch/arm/boot/dts/overlays/mmc-overlay.dts
+++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
@@ -33,6 +33,13 @@
};
};
+ fragment@3 {
+ target = <&mmcnr>;
+ __overlay__ {
+ status = "disabled";
+ };
+ };
+
__overrides__ {
overclock_50 = <&frag0>,"brcm,overclock-50:0";
};
--- a/arch/arm/boot/dts/overlays/sdio-overlay.dts
+++ b/arch/arm/boot/dts/overlays/sdio-overlay.dts
@@ -1,39 +1,26 @@
/dts-v1/;
/plugin/;
-/* Enable SDIO from MMC interface via GPIOs 22-27. Includes sdhost overlay. */
+/* Enable SDIO from MMC interface via various GPIO groups */
/{
compatible = "brcm,bcm2835";
fragment@0 {
- target = <&mmc>;
+ target = <&mmcnr>;
__overlay__ {
status = "disabled";
};
};
fragment@1 {
- target = <&soc>;
- __overlay__ {
- #address-cells = <1>;
- #size-cells = <1>;
-
- sdio_ovl: sdio@7e300000 {
- compatible = "brcm,bcm2835-mmc",
- "brcm,bcm2835-sdhci";
- reg = <0x7e300000 0x100>;
- interrupts = <2 30>;
- clocks = <&clocks 28/*BCM2835_CLOCK_EMMC*/>;
- dmas = <&dma 11>;
- dma-names = "rx-tx";
- brcm,overclock-50 = <0>;
- status = "okay";
- pinctrl-names = "default";
- pinctrl-0 = <&sdio_ovl_pins>;
- non-removable;
- bus-width = <4>;
- };
+ target = <&mmc>;
+ sdio_ovl: __overlay__ {
+ pinctrl-0 = <&sdio_ovl_pins>;
+ pinctrl-names = "default";
+ non-removable;
+ bus-width = <4>;
+ status = "okay";
};
};
@@ -75,7 +62,7 @@
fragment@6 {
target-path = "/aliases";
__overlay__ {
- mmc1 = "/soc/sdio@7e300000";
+ mmc1 = "/soc/mmc@7e300000";
};
};