2019-09-19 14:43:19 +00:00
|
|
|
From c63b13bddf317347ba0b69807c1591526d50ba47 Mon Sep 17 00:00:00 2001
|
2019-07-09 18:32:28 +00:00
|
|
|
From: Phil Elwell <phil@raspberrypi.org>
|
|
|
|
Date: Tue, 7 May 2019 14:29:38 +0100
|
2019-12-23 12:42:55 +00:00
|
|
|
Subject: [PATCH] BCM270X_DT: Add non-removable clone of mmc node
|
2019-07-09 18:32:28 +00:00
|
|
|
|
|
|
|
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";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|