[PATCH RFC v2 4/4] riscv: dts: thead: Add clock to TH1520 mmc controllers

Drew Fustini posted 4 patches 1 year, 7 months ago
There is a newer version of this series
[PATCH RFC v2 4/4] riscv: dts: thead: Add clock to TH1520 mmc controllers
Posted by Drew Fustini 1 year, 7 months ago
Change the clock property in the T-Head TH1520 mmc controller nodes to a
real clock provided by the AP_SUBSYS clock driver.

Signed-off-by: Drew Fustini <dfustini@tenstorrent.com>
---
 arch/riscv/boot/dts/thead/th1520.dtsi | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi
index 6285cdf91bd6..a6f51ec9fb55 100644
--- a/arch/riscv/boot/dts/thead/th1520.dtsi
+++ b/arch/riscv/boot/dts/thead/th1520.dtsi
@@ -324,7 +324,7 @@ emmc: mmc@ffe7080000 {
 			compatible = "thead,th1520-dwcmshc";
 			reg = <0xff 0xe7080000 0x0 0x10000>;
 			interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&sdhci_clk>;
+			clocks = <&clk CLK_EMMC_SDIO>;
 			clock-names = "core";
 			status = "disabled";
 		};
@@ -333,7 +333,7 @@ sdio0: mmc@ffe7090000 {
 			compatible = "thead,th1520-dwcmshc";
 			reg = <0xff 0xe7090000 0x0 0x10000>;
 			interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&sdhci_clk>;
+			clocks = <&clk CLK_EMMC_SDIO>;
 			clock-names = "core";
 			status = "disabled";
 		};
@@ -342,7 +342,7 @@ sdio1: mmc@ffe70a0000 {
 			compatible = "thead,th1520-dwcmshc";
 			reg = <0xff 0xe70a0000 0x0 0x10000>;
 			interrupts = <71 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&sdhci_clk>;
+			clocks = <&clk CLK_EMMC_SDIO>;
 			clock-names = "core";
 			status = "disabled";
 		};

-- 
2.34.1
Re: [PATCH RFC v2 4/4] riscv: dts: thead: Add clock to TH1520 mmc controllers
Posted by Thomas Bonnefille 1 year, 7 months ago

On 4/27/24 2:10 AM, Drew Fustini wrote:
> Change the clock property in the T-Head TH1520 mmc controller nodes to a
> real clock provided by the AP_SUBSYS clock driver.
> 
> Signed-off-by: Drew Fustini <dfustini@tenstorrent.com>

I experienced that, when the I2C clocks were correctly configured, the 
UART stopped working, likely due to their dependence on FOUTPOSTDIV.
Setting up the UART correctly, for instance:

                 uartx: serial@xxxxxxxxxx {
			...
                         clocks = <&clk CLK_UART_SCLK>, <&clk 
CLK_UARTX_PCLK>;
                         clock-names = "baudclk", "apb_pclk";
                         ...
			status = "disabled";
                 };
resolved the issue.
As this would be mandatory in the future, I suggest that you configure 
all the nodes currently set to a fixed clock, not just the MMC controller.

Thomas
Re: [PATCH RFC v2 4/4] riscv: dts: thead: Add clock to TH1520 mmc controllers
Posted by Drew Fustini 1 year, 7 months ago
On Thu, May 02, 2024 at 09:47:43AM +0200, Thomas Bonnefille wrote:
> 
> 
> On 4/27/24 2:10 AM, Drew Fustini wrote:
> > Change the clock property in the T-Head TH1520 mmc controller nodes to a
> > real clock provided by the AP_SUBSYS clock driver.
> > 
> > Signed-off-by: Drew Fustini <dfustini@tenstorrent.com>
> 
> I experienced that, when the I2C clocks were correctly configured, the UART
> stopped working, likely due to their dependence on FOUTPOSTDIV.
> Setting up the UART correctly, for instance:
> 
>                 uartx: serial@xxxxxxxxxx {
> 			...
>                         clocks = <&clk CLK_UART_SCLK>, <&clk
> CLK_UARTX_PCLK>;
>                         clock-names = "baudclk", "apb_pclk";
>                         ...
> 			status = "disabled";
>                 };
> resolved the issue.
> As this would be mandatory in the future, I suggest that you configure all
> the nodes currently set to a fixed clock, not just the MMC controller.

Thank you for testing and discovering this issue.

Could you post your device tree so I can be sure I'm testing the same as
what you have?

Drew
Re: [PATCH RFC v2 4/4] riscv: dts: thead: Add clock to TH1520 mmc controllers
Posted by Thomas Bonnefille 1 year, 7 months ago

On 5/2/24 5:53 PM, Drew Fustini wrote:
> On Thu, May 02, 2024 at 09:47:43AM +0200, Thomas Bonnefille wrote:
>>
>>
>> On 4/27/24 2:10 AM, Drew Fustini wrote:
>>> Change the clock property in the T-Head TH1520 mmc controller nodes to a
>>> real clock provided by the AP_SUBSYS clock driver.
>>>
>>> Signed-off-by: Drew Fustini <dfustini@tenstorrent.com>
>>
>> I experienced that, when the I2C clocks were correctly configured, the UART
>> stopped working, likely due to their dependence on FOUTPOSTDIV.
>> Setting up the UART correctly, for instance:
>>
>>                  uartx: serial@xxxxxxxxxx {
>> 			...
>>                          clocks = <&clk CLK_UART_SCLK>, <&clk
>> CLK_UARTX_PCLK>;
>>                          clock-names = "baudclk", "apb_pclk";
>>                          ...
>> 			status = "disabled";
>>                  };
>> resolved the issue.
>> As this would be mandatory in the future, I suggest that you configure all
>> the nodes currently set to a fixed clock, not just the MMC controller.
> 
> Thank you for testing and discovering this issue.
> 
> Could you post your device tree so I can be sure I'm testing the same as
> what you have?
> 
> Drew

Of course, I'll attach the two Device Trees used.
Note that I also use Emil's patch which adds support for pinctrl.

Thomas