* [PATCH v7 0/4] RISC-V: Add MMC support for TH1520 boards
@ 2023-11-30 1:48 Drew Fustini
2023-11-30 1:48 ` [PATCH v7 1/4] riscv: defconfig: Enable mmc and dma drivers for T-Head TH1520 Drew Fustini
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Drew Fustini @ 2023-11-30 1:48 UTC (permalink / raw)
To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Jisheng Zhang, Guo Ren,
Fu Wei, Conor Dooley, Rob Herring, Krzysztof Kozlowski
Cc: Jason Kridner, Robert Nelson, linux-riscv, linux-kernel,
devicetree, Drew Fustini
This series enables the MMC controller in the T-Head TH1520 SoC and
enables the eMMC and microSD on both the BeagleV Ahead and the Sipeed
LicheePi 4A.
The drivers/mmc/host patches from v6 were applied by Ulf and are already
in the linux-next [1][2] as well as the bindings patch [3]. Thus v7 is
only a defconfig patch and three device tree patches.
Jisheng - can you apply the dts patches to your for-next tree?
I tested with the riscv defconfig on the Ahead [4] and LPi4a [5]. I only
tested eMMC and microSD and plan to enable SDIO WiFi in the future.
References:
[1] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=49f23745b064cdb6270402403ef58125d78ba183
[2] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=aff35fbc7830510ef7cbcf8e32a041a55de3dc51
[3] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=af076680db846ed54b00b9a763473d1043446993
[4] https://gist.github.com/pdp7/881342620ec1509685f23a387e2fc8d7
[5] https://gist.github.com/pdp7/97017ad88d83fccac18eba69bff817b7
Changes in PATCH v7:
- fix sorting of DT properties in the mmc nodes
Changes in PATCH v6:
https://lore.kernel.org/linux-riscv/20231114-th1520-mmc-v6-0-3273c661a571@baylibre.com/
- set the mmc nodes to disabled in the th1520.dtsi
Changes in PATCH v5:
https://lore.kernel.org/r/20231109-th1520-mmc-v5-0-018bd039cf17@baylibre.com
- fix logic in th1520_sdhci_set_phy() to correctly check that both
MMC_CAP2_NO_SD and MMC_CAP2_NO_SDIO are set in host->mmc->caps2
- add Acked-by's from Adrian
Changes in PATCH v4:
https://lore.kernel.org/linux-riscv/20231101-th1520-mmc-v4-0-86e0216b5994@baylibre.com/
- set DWCMSHC_CARD_IS_EMMC when (MMC_CAP2_NO_SD | MMC_CAP2_NO_SDIO)
as checking MMC_CAP_NONREMOVABLE is not sufficient
- change prefix of phy functions from th1520 to dwcmshc as they are not
th1520 specific
- remove unneeded check of priv in dwcmshc_phy_1_8v_init()
- remove unneeded check of auto-tuning in th1520_execute_tuning()
- fix order of new nodes in th1520-beaglev-ahead.dts: move sdhci_clk
before uart_sclk, move mmc0 and mmc1 before uart0
- fix comment typos pointed out by Adrian
- add trailers that I missed from v2
Changes in PATCH v3:
https://lore.kernel.org/r/20231023-th1520-mmc-v3-0-abc5e7491166@baylibre.com
- always call th1520_sdhci_set_phy() in th1520_set_uhs_signaling()
and not only when timing is MMC_TIMING_MMC_HS400. This allows the
microSD slot to work as th1520_phy_3_3v_init() is called from
th1520_sdhci_set_phy().
- add mmc1 node for mmc controller connected to the microSD slot
- add enable mmc1 and add properties for microSD on the Ahead and LPi4A
Changes in PATCH v2:
https://lore.kernel.org/r/20231017-th1520-mmc-v2-0-4678c8cc4048@baylibre.com
- make use of BIT(), GENMASK(), FIELD_PREP(), FIELD_GET()
- add EXPORT_SYMBOL_GPL(__sdhci_execute_tuning)
- call th1520_phy_1_8v_init() when FLAG_IO_FIXED_1V8 is set
- set DWCMSHC_CARD_IS_EMMC when mmc caps contains MMC_CAP_NONREMOVABLE
- remove manipulation of AT_CTRL_AT_EN from th1520_set_uhs_signaling()
- remove unneccessary cycle of enabling and disabling AT_CTRL_AT_EN in
th1520_execute_tuning()
- remove th1520_phy_1_8v_init_no_pull()
- remove th1520_phy_3_3v_init_no_pull()
- remove FLAG_PULL_UP_EN from priv->flags
- remove thead,phy-pull-up device tree property
Changes in PACH v1:
https://lore.kernel.org/all/20230921-th1520-mmc-v1-0-49f76c274fb3@baylibre.com/
- ADMA mode now works correctly due to a patch from Jisheng on the list
("riscv: dts: thead: set dma-noncoherent to soc bus") and this commit
from Icenowy that is now merged: 8eb8fe67e2c8 ("riscv: errata: fix
T-Head dcache.cva encoding").
- Expose __sdhci_execute_tuning from sdhci.c so that it can be called
from th1520_execute_tuning()
- Refactor the define macros for all the PHY related registers to make
it easier to understand the bit fields that the code is manipulating
- Replace magic numbers in the PHY register writes with proper defines
- Replace non_removable in dwcmshc_priv with check of mmc_host.caps
- Drop dt prop "thead,io-fixed-1v8" and instead check for existing
properties: "mmc-ddr-1_8v", "mmc-hs200-1_8v", or "mmc-hs400-1_8v"
- Rename dt prop from "thead,pull-up" to "thead,phy-pull-up" and
improve the description in the dt binding
- Replace pull_up_en in dwcmshc_priv with bit field in new flags field
- Create th1520_set_uhs_signaling() and call dwcmshc_set_uhs_signaling()
from it instead of adding th1520 code to dwcmshc_set_uhs_signaling()
- Return -EIO instead of -1 upon errors in th1520_execute_tuning()
Changes in RFC v2:
https://lore.kernel.org/linux-riscv/20230724-th1520-emmc-v2-0-132ed2e2171e@baylibre.com/
- Expand dwcmshc_priv based on driver in the T-Head 5.10 kernel:
delay_line, non_removable, pull_up_en, io_fixed_1v8
- New boolean property "thead,pull-up" indicates phy pull-up config
- New boolean property "thead,io-fixed-1v8" indicates that io voltage
should be set to 1.8V during reset
- Add th1520_phy_1_8v_init() as voltage_switch op
- Add th1520_execute_tuning() as the platform_execute_tuning op
- Added th1520_sdhci_reset() as the .reset op. This function will set
io voltage to 1.8V after calling the standard sdhci_reset() function.
- Modified dwcmshc_set_uhs_signaling() to enable SDHCI_CTRL_VDD_180 when
io_fixed_1v8 is true
- Add many defines for register offsets and settings based on the mmc
support in the T-Head downstream v5.10 kernel
RFC v1 series:
https://lore.kernel.org/r/20230724-th1520-emmc-v1-0-cca1b2533da2@baylibre.com
Signed-off-by: Drew Fustini <dfustini@baylibre.com>
---
Drew Fustini (4):
riscv: defconfig: Enable mmc and dma drivers for T-Head TH1520
riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock
riscv: dts: thead: Enable BeagleV Ahead eMMC and microSD
riscv: dts: thead: Enable LicheePi 4A eMMC and microSD
arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts | 20 +++++++++++++++++
.../boot/dts/thead/th1520-lichee-module-4a.dtsi | 20 +++++++++++++++++
arch/riscv/boot/dts/thead/th1520.dtsi | 25 ++++++++++++++++++++++
arch/riscv/configs/defconfig | 2 ++
4 files changed, 67 insertions(+)
---
base-commit: 1f5c003694fab4b1ba6cbdcc417488b975c088d0
change-id: 20231129-th1520_mmc_dts-e472bcc70d0d
Best regards,
--
Drew Fustini <dfustini@baylibre.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v7 1/4] riscv: defconfig: Enable mmc and dma drivers for T-Head TH1520
2023-11-30 1:48 [PATCH v7 0/4] RISC-V: Add MMC support for TH1520 boards Drew Fustini
@ 2023-11-30 1:48 ` Drew Fustini
2023-12-30 2:42 ` Palmer Dabbelt
2023-11-30 1:48 ` [PATCH v7 2/4] riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock Drew Fustini
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Drew Fustini @ 2023-11-30 1:48 UTC (permalink / raw)
To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Jisheng Zhang, Guo Ren,
Fu Wei, Conor Dooley, Rob Herring, Krzysztof Kozlowski
Cc: Jason Kridner, Robert Nelson, linux-riscv, linux-kernel,
devicetree, Drew Fustini
Enable the mmc controller driver and dma controller driver needed for
T-Head TH1520 based boards, like the LicheePi 4A and BeagleV-Ahead, to
boot from eMMC storage.
Reviewed-by: Guo Ren <guoren@kernel.org>
Signed-off-by: Drew Fustini <dfustini@baylibre.com>
---
arch/riscv/configs/defconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
index 905881282a7c..e635dc9d1997 100644
--- a/arch/riscv/configs/defconfig
+++ b/arch/riscv/configs/defconfig
@@ -214,6 +214,7 @@ CONFIG_MMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_CADENCE=y
+CONFIG_MMC_SDHCI_OF_DWCMSHC=y
CONFIG_MMC_SPI=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_STARFIVE=y
@@ -223,6 +224,7 @@ CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_SUN6I=y
CONFIG_DMADEVICES=y
CONFIG_DMA_SUN6I=m
+CONFIG_DW_AXI_DMAC=y
CONFIG_RZ_DMAC=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v7 2/4] riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock
2023-11-30 1:48 [PATCH v7 0/4] RISC-V: Add MMC support for TH1520 boards Drew Fustini
2023-11-30 1:48 ` [PATCH v7 1/4] riscv: defconfig: Enable mmc and dma drivers for T-Head TH1520 Drew Fustini
@ 2023-11-30 1:48 ` Drew Fustini
2023-12-04 9:47 ` Emil Renner Berthing
2023-11-30 1:48 ` [PATCH v7 3/4] riscv: dts: thead: Enable BeagleV Ahead eMMC and microSD Drew Fustini
2023-11-30 1:48 ` [PATCH v7 4/4] riscv: dts: thead: Enable LicheePi 4A " Drew Fustini
3 siblings, 1 reply; 11+ messages in thread
From: Drew Fustini @ 2023-11-30 1:48 UTC (permalink / raw)
To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Jisheng Zhang, Guo Ren,
Fu Wei, Conor Dooley, Rob Herring, Krzysztof Kozlowski
Cc: Jason Kridner, Robert Nelson, linux-riscv, linux-kernel,
devicetree, Drew Fustini
Add node for the SDHCI fixed clock. Add mmc0 node for the first mmc
controller instance which is typically connected to the eMMC device.
Add mmc1 node for the second mmc controller instance which is typically
connected to microSD slot.
Signed-off-by: Drew Fustini <dfustini@baylibre.com>
---
arch/riscv/boot/dts/thead/th1520.dtsi | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi
index ba4d2c673ac8..af4fdcd82e0b 100644
--- a/arch/riscv/boot/dts/thead/th1520.dtsi
+++ b/arch/riscv/boot/dts/thead/th1520.dtsi
@@ -146,6 +146,13 @@ uart_sclk: uart-sclk-clock {
#clock-cells = <0>;
};
+ sdhci_clk: sdhci-clock {
+ compatible = "fixed-clock";
+ clock-frequency = <198000000>;
+ clock-output-names = "sdhci_clk";
+ #clock-cells = <0>;
+ };
+
soc {
compatible = "simple-bus";
interrupt-parent = <&plic>;
@@ -304,6 +311,24 @@ dmac0: dma-controller@ffefc00000 {
status = "disabled";
};
+ mmc0: mmc@ffe7080000 {
+ compatible = "thead,th1520-dwcmshc";
+ reg = <0xff 0xe7080000 0x0 0x10000>;
+ interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&sdhci_clk>;
+ clock-names = "core";
+ status = "disabled";
+ };
+
+ mmc1: mmc@ffe7090000 {
+ compatible = "thead,th1520-dwcmshc";
+ reg = <0xff 0xe7090000 0x0 0x10000>;
+ interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&sdhci_clk>;
+ clock-names = "core";
+ status = "disabled";
+ };
+
timer0: timer@ffefc32000 {
compatible = "snps,dw-apb-timer";
reg = <0xff 0xefc32000 0x0 0x14>;
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v7 3/4] riscv: dts: thead: Enable BeagleV Ahead eMMC and microSD
2023-11-30 1:48 [PATCH v7 0/4] RISC-V: Add MMC support for TH1520 boards Drew Fustini
2023-11-30 1:48 ` [PATCH v7 1/4] riscv: defconfig: Enable mmc and dma drivers for T-Head TH1520 Drew Fustini
2023-11-30 1:48 ` [PATCH v7 2/4] riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock Drew Fustini
@ 2023-11-30 1:48 ` Drew Fustini
2023-11-30 1:48 ` [PATCH v7 4/4] riscv: dts: thead: Enable LicheePi 4A " Drew Fustini
3 siblings, 0 replies; 11+ messages in thread
From: Drew Fustini @ 2023-11-30 1:48 UTC (permalink / raw)
To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Jisheng Zhang, Guo Ren,
Fu Wei, Conor Dooley, Rob Herring, Krzysztof Kozlowski
Cc: Jason Kridner, Robert Nelson, linux-riscv, linux-kernel,
devicetree, Drew Fustini
Add mmc0 properties for the eMMC device and add mmc1 properties for
the microSD slot. Set the frequency for the sdhci clock.
Signed-off-by: Drew Fustini <dfustini@baylibre.com>
---
arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
index 70e8042c8304..b767d3f078d7 100644
--- a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
+++ b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
@@ -48,6 +48,10 @@ &apb_clk {
clock-frequency = <62500000>;
};
+&sdhci_clk {
+ clock-frequency = <198000000>;
+};
+
&uart_sclk {
clock-frequency = <100000000>;
};
@@ -56,6 +60,22 @@ &dmac0 {
status = "okay";
};
+&mmc0 {
+ bus-width = <8>;
+ max-frequency = <198000000>;
+ mmc-hs400-1_8v;
+ non-removable;
+ no-sdio;
+ no-sd;
+ status = "okay";
+};
+
+&mmc1 {
+ bus-width = <4>;
+ max-frequency = <198000000>;
+ status = "okay";
+};
+
&uart0 {
status = "okay";
};
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v7 4/4] riscv: dts: thead: Enable LicheePi 4A eMMC and microSD
2023-11-30 1:48 [PATCH v7 0/4] RISC-V: Add MMC support for TH1520 boards Drew Fustini
` (2 preceding siblings ...)
2023-11-30 1:48 ` [PATCH v7 3/4] riscv: dts: thead: Enable BeagleV Ahead eMMC and microSD Drew Fustini
@ 2023-11-30 1:48 ` Drew Fustini
3 siblings, 0 replies; 11+ messages in thread
From: Drew Fustini @ 2023-11-30 1:48 UTC (permalink / raw)
To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Jisheng Zhang, Guo Ren,
Fu Wei, Conor Dooley, Rob Herring, Krzysztof Kozlowski
Cc: Jason Kridner, Robert Nelson, linux-riscv, linux-kernel,
devicetree, Drew Fustini
Add mmc0 properties for the eMMC device and add mmc1 properties for
the microSD slot. Set the frequency for the sdhci clock.
Signed-off-by: Drew Fustini <dfustini@baylibre.com>
---
.../boot/dts/thead/th1520-lichee-module-4a.dtsi | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi b/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi
index a802ab110429..0818bd3c1f84 100644
--- a/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi
+++ b/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi
@@ -29,6 +29,10 @@ &apb_clk {
clock-frequency = <62500000>;
};
+&sdhci_clk {
+ clock-frequency = <198000000>;
+};
+
&uart_sclk {
clock-frequency = <100000000>;
};
@@ -36,3 +40,19 @@ &uart_sclk {
&dmac0 {
status = "okay";
};
+
+&mmc0 {
+ bus-width = <8>;
+ max-frequency = <198000000>;
+ mmc-hs400-1_8v;
+ non-removable;
+ no-sdio;
+ no-sd;
+ status = "okay";
+};
+
+&mmc1 {
+ bus-width = <4>;
+ max-frequency = <198000000>;
+ status = "okay";
+};
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v7 2/4] riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock
2023-11-30 1:48 ` [PATCH v7 2/4] riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock Drew Fustini
@ 2023-12-04 9:47 ` Emil Renner Berthing
2023-12-05 14:26 ` Jisheng Zhang
0 siblings, 1 reply; 11+ messages in thread
From: Emil Renner Berthing @ 2023-12-04 9:47 UTC (permalink / raw)
To: Drew Fustini, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Jisheng Zhang, Guo Ren, Fu Wei, Conor Dooley, Rob Herring,
Krzysztof Kozlowski
Cc: Jason Kridner, Robert Nelson, linux-riscv, linux-kernel,
devicetree
Drew Fustini wrote:
> Add node for the SDHCI fixed clock. Add mmc0 node for the first mmc
> controller instance which is typically connected to the eMMC device.
> Add mmc1 node for the second mmc controller instance which is typically
> connected to microSD slot.
>
> Signed-off-by: Drew Fustini <dfustini@baylibre.com>
> ---
> arch/riscv/boot/dts/thead/th1520.dtsi | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi
> index ba4d2c673ac8..af4fdcd82e0b 100644
> --- a/arch/riscv/boot/dts/thead/th1520.dtsi
> +++ b/arch/riscv/boot/dts/thead/th1520.dtsi
> @@ -146,6 +146,13 @@ uart_sclk: uart-sclk-clock {
> #clock-cells = <0>;
> };
>
> + sdhci_clk: sdhci-clock {
> + compatible = "fixed-clock";
> + clock-frequency = <198000000>;
> + clock-output-names = "sdhci_clk";
> + #clock-cells = <0>;
> + };
> +
> soc {
> compatible = "simple-bus";
> interrupt-parent = <&plic>;
> @@ -304,6 +311,24 @@ dmac0: dma-controller@ffefc00000 {
> status = "disabled";
> };
>
> + mmc0: mmc@ffe7080000 {
> + compatible = "thead,th1520-dwcmshc";
> + reg = <0xff 0xe7080000 0x0 0x10000>;
> + interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&sdhci_clk>;
> + clock-names = "core";
> + status = "disabled";
> + };
> +
> + mmc1: mmc@ffe7090000 {
> + compatible = "thead,th1520-dwcmshc";
> + reg = <0xff 0xe7090000 0x0 0x10000>;
> + interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&sdhci_clk>;
> + clock-names = "core";
> + status = "disabled";
> + };
> +
Hi Drew,
This doesn't seem to match the documentation shared here:
https://lore.kernel.org/linux-riscv/5f437109d2be2b8843f549a661054a2e3ec0d66e.camel@xry111.site/
From the TH1520 System User Manual.pdf in there, I'd expect something like
emmc: mmc@ffe7080000 {
compatible = "thead,th1520-dwcmshc";
reg = <0xff 0xe7080000 0x0 0x10000>;
...
};
sdio0: mmc@ffe7090000 {
compatible = "thead,th1520-dwcmshc";
reg = <0xff 0xe7090000 0x0 0x10000>;
...
};
sdio1: mmc@ffe70a0000 {
compatible = "thead,th1520-dwcmshc";
reg = <0xff 0xe70a0000 0x0 0x10000>;
...
};
/Emil
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v7 2/4] riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock
2023-12-04 9:47 ` Emil Renner Berthing
@ 2023-12-05 14:26 ` Jisheng Zhang
2023-12-05 14:48 ` Emil Renner Berthing
0 siblings, 1 reply; 11+ messages in thread
From: Jisheng Zhang @ 2023-12-05 14:26 UTC (permalink / raw)
To: Emil Renner Berthing
Cc: Drew Fustini, Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren,
Fu Wei, Conor Dooley, Rob Herring, Krzysztof Kozlowski,
Jason Kridner, Robert Nelson, linux-riscv, linux-kernel,
devicetree
On Mon, Dec 04, 2023 at 01:47:45AM -0800, Emil Renner Berthing wrote:
> Drew Fustini wrote:
> > Add node for the SDHCI fixed clock. Add mmc0 node for the first mmc
> > controller instance which is typically connected to the eMMC device.
> > Add mmc1 node for the second mmc controller instance which is typically
> > connected to microSD slot.
> >
> > Signed-off-by: Drew Fustini <dfustini@baylibre.com>
> > ---
> > arch/riscv/boot/dts/thead/th1520.dtsi | 25 +++++++++++++++++++++++++
> > 1 file changed, 25 insertions(+)
> >
> > diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi
> > index ba4d2c673ac8..af4fdcd82e0b 100644
> > --- a/arch/riscv/boot/dts/thead/th1520.dtsi
> > +++ b/arch/riscv/boot/dts/thead/th1520.dtsi
> > @@ -146,6 +146,13 @@ uart_sclk: uart-sclk-clock {
> > #clock-cells = <0>;
> > };
> >
> > + sdhci_clk: sdhci-clock {
> > + compatible = "fixed-clock";
> > + clock-frequency = <198000000>;
> > + clock-output-names = "sdhci_clk";
> > + #clock-cells = <0>;
> > + };
> > +
> > soc {
> > compatible = "simple-bus";
> > interrupt-parent = <&plic>;
> > @@ -304,6 +311,24 @@ dmac0: dma-controller@ffefc00000 {
> > status = "disabled";
> > };
> >
> > + mmc0: mmc@ffe7080000 {
> > + compatible = "thead,th1520-dwcmshc";
> > + reg = <0xff 0xe7080000 0x0 0x10000>;
> > + interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
> > + clocks = <&sdhci_clk>;
> > + clock-names = "core";
> > + status = "disabled";
> > + };
> > +
> > + mmc1: mmc@ffe7090000 {
> > + compatible = "thead,th1520-dwcmshc";
> > + reg = <0xff 0xe7090000 0x0 0x10000>;
> > + interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
> > + clocks = <&sdhci_clk>;
> > + clock-names = "core";
> > + status = "disabled";
> > + };
> > +
>
> Hi Drew,
>
> This doesn't seem to match the documentation shared here:
> https://lore.kernel.org/linux-riscv/5f437109d2be2b8843f549a661054a2e3ec0d66e.camel@xry111.site/
> From the TH1520 System User Manual.pdf in there, I'd expect something like
>
> emmc: mmc@ffe7080000 {
> compatible = "thead,th1520-dwcmshc";
> reg = <0xff 0xe7080000 0x0 0x10000>;
> ...
> };
Hi Emil,
I think this isn't necessary. From other soc dts files, I see such
naming, but lots socs just use mmc0, mmc1, and so on.
And IIRC, the host for sd and sdio can support both, IOW, below
sdio0/sdio1 may be used for sdcard.
Thanks
>
> sdio0: mmc@ffe7090000 {
> compatible = "thead,th1520-dwcmshc";
> reg = <0xff 0xe7090000 0x0 0x10000>;
> ...
> };
>
> sdio1: mmc@ffe70a0000 {
> compatible = "thead,th1520-dwcmshc";
> reg = <0xff 0xe70a0000 0x0 0x10000>;
> ...
> };
>
> /Emil
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v7 2/4] riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock
2023-12-05 14:26 ` Jisheng Zhang
@ 2023-12-05 14:48 ` Emil Renner Berthing
2023-12-05 15:52 ` Damian Tometzki
0 siblings, 1 reply; 11+ messages in thread
From: Emil Renner Berthing @ 2023-12-05 14:48 UTC (permalink / raw)
To: Jisheng Zhang, Emil Renner Berthing
Cc: Drew Fustini, Paul Walmsley, Palmer Dabbelt, Albert Ou, Guo Ren,
Fu Wei, Conor Dooley, Rob Herring, Krzysztof Kozlowski,
Jason Kridner, Robert Nelson, linux-riscv, linux-kernel,
devicetree
Jisheng Zhang wrote:
> On Mon, Dec 04, 2023 at 01:47:45AM -0800, Emil Renner Berthing wrote:
> > Drew Fustini wrote:
> > > Add node for the SDHCI fixed clock. Add mmc0 node for the first mmc
> > > controller instance which is typically connected to the eMMC device.
> > > Add mmc1 node for the second mmc controller instance which is typically
> > > connected to microSD slot.
> > >
> > > Signed-off-by: Drew Fustini <dfustini@baylibre.com>
> > > ---
> > > arch/riscv/boot/dts/thead/th1520.dtsi | 25 +++++++++++++++++++++++++
> > > 1 file changed, 25 insertions(+)
> > >
> > > diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi
> > > index ba4d2c673ac8..af4fdcd82e0b 100644
> > > --- a/arch/riscv/boot/dts/thead/th1520.dtsi
> > > +++ b/arch/riscv/boot/dts/thead/th1520.dtsi
> > > @@ -146,6 +146,13 @@ uart_sclk: uart-sclk-clock {
> > > #clock-cells = <0>;
> > > };
> > >
> > > + sdhci_clk: sdhci-clock {
> > > + compatible = "fixed-clock";
> > > + clock-frequency = <198000000>;
> > > + clock-output-names = "sdhci_clk";
> > > + #clock-cells = <0>;
> > > + };
> > > +
> > > soc {
> > > compatible = "simple-bus";
> > > interrupt-parent = <&plic>;
> > > @@ -304,6 +311,24 @@ dmac0: dma-controller@ffefc00000 {
> > > status = "disabled";
> > > };
> > >
> > > + mmc0: mmc@ffe7080000 {
> > > + compatible = "thead,th1520-dwcmshc";
> > > + reg = <0xff 0xe7080000 0x0 0x10000>;
> > > + interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
> > > + clocks = <&sdhci_clk>;
> > > + clock-names = "core";
> > > + status = "disabled";
> > > + };
> > > +
> > > + mmc1: mmc@ffe7090000 {
> > > + compatible = "thead,th1520-dwcmshc";
> > > + reg = <0xff 0xe7090000 0x0 0x10000>;
> > > + interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
> > > + clocks = <&sdhci_clk>;
> > > + clock-names = "core";
> > > + status = "disabled";
> > > + };
> > > +
> >
> > Hi Drew,
> >
> > This doesn't seem to match the documentation shared here:
> > https://lore.kernel.org/linux-riscv/5f437109d2be2b8843f549a661054a2e3ec0d66e.camel@xry111.site/
> > From the TH1520 System User Manual.pdf in there, I'd expect something like
>
> >
> > emmc: mmc@ffe7080000 {
> > compatible = "thead,th1520-dwcmshc";
> > reg = <0xff 0xe7080000 0x0 0x10000>;
> > ...
> > };
>
> Hi Emil,
>
> I think this isn't necessary. From other soc dts files, I see such
> naming, but lots socs just use mmc0, mmc1, and so on.
No it certainly isn't necessary. Those labels are purely for us humans to read
and are not present in the dtb. But that's exactly why I think it'd be a good
idea match the labels with the documentation, so it will easier for us humans
to match up the device tree source to documentation.
> And IIRC, the host for sd and sdio can support both, IOW, below
> sdio0/sdio1 may be used for sdcard.
Yes, all of the EMMC, SDIO0 and SDIO1 seem to be instances of the same IP.
/Emil
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v7 2/4] riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock
2023-12-05 14:48 ` Emil Renner Berthing
@ 2023-12-05 15:52 ` Damian Tometzki
0 siblings, 0 replies; 11+ messages in thread
From: Damian Tometzki @ 2023-12-05 15:52 UTC (permalink / raw)
To: Emil Renner Berthing
Cc: Jisheng Zhang, Drew Fustini, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Guo Ren, Fu Wei, Conor Dooley, Rob Herring,
Krzysztof Kozlowski, Jason Kridner, Robert Nelson, linux-riscv,
linux-kernel, devicetree
On Tue, 05. Dec 06:48, Emil Renner Berthing wrote:
> Jisheng Zhang wrote:
> > On Mon, Dec 04, 2023 at 01:47:45AM -0800, Emil Renner Berthing wrote:
> > > Drew Fustini wrote:
> > > > Add node for the SDHCI fixed clock. Add mmc0 node for the first mmc
> > > > controller instance which is typically connected to the eMMC device.
> > > > Add mmc1 node for the second mmc controller instance which is typically
> > > > connected to microSD slot.
> > > >
> > > > Signed-off-by: Drew Fustini <dfustini@baylibre.com>
> > > > ---
> > > > arch/riscv/boot/dts/thead/th1520.dtsi | 25 +++++++++++++++++++++++++
> > > > 1 file changed, 25 insertions(+)
> > > >
> > > > diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi
> > > > index ba4d2c673ac8..af4fdcd82e0b 100644
> > > > --- a/arch/riscv/boot/dts/thead/th1520.dtsi
> > > > +++ b/arch/riscv/boot/dts/thead/th1520.dtsi
> > > > @@ -146,6 +146,13 @@ uart_sclk: uart-sclk-clock {
> > > > #clock-cells = <0>;
> > > > };
> > > >
> > > > + sdhci_clk: sdhci-clock {
> > > > + compatible = "fixed-clock";
> > > > + clock-frequency = <198000000>;
> > > > + clock-output-names = "sdhci_clk";
> > > > + #clock-cells = <0>;
> > > > + };
> > > > +
> > > > soc {
> > > > compatible = "simple-bus";
> > > > interrupt-parent = <&plic>;
> > > > @@ -304,6 +311,24 @@ dmac0: dma-controller@ffefc00000 {
> > > > status = "disabled";
> > > > };
> > > >
> > > > + mmc0: mmc@ffe7080000 {
> > > > + compatible = "thead,th1520-dwcmshc";
> > > > + reg = <0xff 0xe7080000 0x0 0x10000>;
> > > > + interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
> > > > + clocks = <&sdhci_clk>;
> > > > + clock-names = "core";
> > > > + status = "disabled";
> > > > + };
> > > > +
> > > > + mmc1: mmc@ffe7090000 {
> > > > + compatible = "thead,th1520-dwcmshc";
> > > > + reg = <0xff 0xe7090000 0x0 0x10000>;
> > > > + interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
> > > > + clocks = <&sdhci_clk>;
> > > > + clock-names = "core";
> > > > + status = "disabled";
> > > > + };
> > > > +
> > >
> > > Hi Drew,
> > >
> > > This doesn't seem to match the documentation shared here:
> > > https://lore.kernel.org/linux-riscv/5f437109d2be2b8843f549a661054a2e3ec0d66e.camel@xry111.site/
> > > From the TH1520 System User Manual.pdf in there, I'd expect something like
> >
> > >
> > > emmc: mmc@ffe7080000 {
> > > compatible = "thead,th1520-dwcmshc";
> > > reg = <0xff 0xe7080000 0x0 0x10000>;
> > > ...
> > > };
> >
> > Hi Emil,
> >
> > I think this isn't necessary. From other soc dts files, I see such
> > naming, but lots socs just use mmc0, mmc1, and so on.
>
> No it certainly isn't necessary. Those labels are purely for us humans to read
> and are not present in the dtb. But that's exactly why I think it'd be a good
> idea match the labels with the documentation, so it will easier for us humans
> to match up the device tree source to documentation.
Hello together,
yes i agree to this too. It is easier for troubleshooting etc.
Damian
>
> > And IIRC, the host for sd and sdio can support both, IOW, below
> > sdio0/sdio1 may be used for sdcard.
>
> Yes, all of the EMMC, SDIO0 and SDIO1 seem to be instances of the same IP.
>
> /Emil
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v7 1/4] riscv: defconfig: Enable mmc and dma drivers for T-Head TH1520
2023-11-30 1:48 ` [PATCH v7 1/4] riscv: defconfig: Enable mmc and dma drivers for T-Head TH1520 Drew Fustini
@ 2023-12-30 2:42 ` Palmer Dabbelt
2023-12-30 11:26 ` Conor Dooley
0 siblings, 1 reply; 11+ messages in thread
From: Palmer Dabbelt @ 2023-12-30 2:42 UTC (permalink / raw)
To: dfustini
Cc: Paul Walmsley, aou, jszhang, guoren, wefu, Conor Dooley, robh+dt,
krzysztof.kozlowski+dt, jkridner, robertcnelson, linux-riscv,
linux-kernel, devicetree, dfustini
On Wed, 29 Nov 2023 17:48:47 PST (-0800), dfustini@baylibre.com wrote:
> Enable the mmc controller driver and dma controller driver needed for
> T-Head TH1520 based boards, like the LicheePi 4A and BeagleV-Ahead, to
> boot from eMMC storage.
>
> Reviewed-by: Guo Ren <guoren@kernel.org>
> Signed-off-by: Drew Fustini <dfustini@baylibre.com>
> ---
> arch/riscv/configs/defconfig | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
> index 905881282a7c..e635dc9d1997 100644
> --- a/arch/riscv/configs/defconfig
> +++ b/arch/riscv/configs/defconfig
> @@ -214,6 +214,7 @@ CONFIG_MMC=y
> CONFIG_MMC_SDHCI=y
> CONFIG_MMC_SDHCI_PLTFM=y
> CONFIG_MMC_SDHCI_CADENCE=y
> +CONFIG_MMC_SDHCI_OF_DWCMSHC=y
> CONFIG_MMC_SPI=y
> CONFIG_MMC_DW=y
> CONFIG_MMC_DW_STARFIVE=y
> @@ -223,6 +224,7 @@ CONFIG_RTC_CLASS=y
> CONFIG_RTC_DRV_SUN6I=y
> CONFIG_DMADEVICES=y
> CONFIG_DMA_SUN6I=m
> +CONFIG_DW_AXI_DMAC=y
> CONFIG_RZ_DMAC=y
> CONFIG_VIRTIO_PCI=y
> CONFIG_VIRTIO_BALLOON=y
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
in case folks want to keep this with the DTS updates. Thanks!
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v7 1/4] riscv: defconfig: Enable mmc and dma drivers for T-Head TH1520
2023-12-30 2:42 ` Palmer Dabbelt
@ 2023-12-30 11:26 ` Conor Dooley
0 siblings, 0 replies; 11+ messages in thread
From: Conor Dooley @ 2023-12-30 11:26 UTC (permalink / raw)
To: Palmer Dabbelt
Cc: dfustini, Paul Walmsley, aou, jszhang, guoren, wefu, robh+dt,
krzysztof.kozlowski+dt, jkridner, robertcnelson, linux-riscv,
linux-kernel, devicetree
[-- Attachment #1: Type: text/plain, Size: 1526 bytes --]
On Fri, Dec 29, 2023 at 06:42:01PM -0800, Palmer Dabbelt wrote:
> On Wed, 29 Nov 2023 17:48:47 PST (-0800), dfustini@baylibre.com wrote:
> > Enable the mmc controller driver and dma controller driver needed for
> > T-Head TH1520 based boards, like the LicheePi 4A and BeagleV-Ahead, to
> > boot from eMMC storage.
> >
> > Reviewed-by: Guo Ren <guoren@kernel.org>
> > Signed-off-by: Drew Fustini <dfustini@baylibre.com>
> > ---
> > arch/riscv/configs/defconfig | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
> > index 905881282a7c..e635dc9d1997 100644
> > --- a/arch/riscv/configs/defconfig
> > +++ b/arch/riscv/configs/defconfig
> > @@ -214,6 +214,7 @@ CONFIG_MMC=y
> > CONFIG_MMC_SDHCI=y
> > CONFIG_MMC_SDHCI_PLTFM=y
> > CONFIG_MMC_SDHCI_CADENCE=y
> > +CONFIG_MMC_SDHCI_OF_DWCMSHC=y
> > CONFIG_MMC_SPI=y
> > CONFIG_MMC_DW=y
> > CONFIG_MMC_DW_STARFIVE=y
> > @@ -223,6 +224,7 @@ CONFIG_RTC_CLASS=y
> > CONFIG_RTC_DRV_SUN6I=y
> > CONFIG_DMADEVICES=y
> > CONFIG_DMA_SUN6I=m
> > +CONFIG_DW_AXI_DMAC=y
> > CONFIG_RZ_DMAC=y
> > CONFIG_VIRTIO_PCI=y
> > CONFIG_VIRTIO_BALLOON=y
>
> Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
>
> in case folks want to keep this with the DTS updates. Thanks!
Just echoing what I said on irc, I already send the subsequent version
of the series to Arnd, minus the defconfig patch, so if you could take
this yourself Palmer, that'd be great.
Cheers,
Conor.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-12-30 11:26 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-30 1:48 [PATCH v7 0/4] RISC-V: Add MMC support for TH1520 boards Drew Fustini
2023-11-30 1:48 ` [PATCH v7 1/4] riscv: defconfig: Enable mmc and dma drivers for T-Head TH1520 Drew Fustini
2023-12-30 2:42 ` Palmer Dabbelt
2023-12-30 11:26 ` Conor Dooley
2023-11-30 1:48 ` [PATCH v7 2/4] riscv: dts: thead: Add TH1520 mmc controllers and sdhci clock Drew Fustini
2023-12-04 9:47 ` Emil Renner Berthing
2023-12-05 14:26 ` Jisheng Zhang
2023-12-05 14:48 ` Emil Renner Berthing
2023-12-05 15:52 ` Damian Tometzki
2023-11-30 1:48 ` [PATCH v7 3/4] riscv: dts: thead: Enable BeagleV Ahead eMMC and microSD Drew Fustini
2023-11-30 1:48 ` [PATCH v7 4/4] riscv: dts: thead: Enable LicheePi 4A " Drew Fustini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox