2022-02-09 23:21:42

by Aidan MacDonald

[permalink] [raw]
Subject: [PATCH] clk: ingenic-tcu: Fix missing TCU clock for X1000 SoC

The X1000 does have a TCU clock gate, so pass it to the driver.
Without this the TCU can be gated automatically, which prevents
timers from running and stops register writes from taking effect.

Signed-off-by: Aidan MacDonald <[email protected]>
---
arch/mips/boot/dts/ingenic/x1000.dtsi | 5 +++--
drivers/clk/ingenic/tcu.c | 2 +-
2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/arch/mips/boot/dts/ingenic/x1000.dtsi b/arch/mips/boot/dts/ingenic/x1000.dtsi
index 8bd27edef216..c69df8eb158e 100644
--- a/arch/mips/boot/dts/ingenic/x1000.dtsi
+++ b/arch/mips/boot/dts/ingenic/x1000.dtsi
@@ -111,8 +111,9 @@ tcu: timer@10002000 {

clocks = <&cgu X1000_CLK_RTCLK>,
<&cgu X1000_CLK_EXCLK>,
- <&cgu X1000_CLK_PCLK>;
- clock-names = "rtc", "ext", "pclk";
+ <&cgu X1000_CLK_PCLK>,
+ <&cgu X1000_CLK_TCU>;
+ clock-names = "rtc", "ext", "pclk", "tcu";

interrupt-controller;
#interrupt-cells = <1>;
diff --git a/drivers/clk/ingenic/tcu.c b/drivers/clk/ingenic/tcu.c
index 77acfbeb4830..9c86043f673a 100644
--- a/drivers/clk/ingenic/tcu.c
+++ b/drivers/clk/ingenic/tcu.c
@@ -320,7 +320,7 @@ static const struct ingenic_soc_info jz4770_soc_info = {
static const struct ingenic_soc_info x1000_soc_info = {
.num_channels = 8,
.has_ost = false, /* X1000 has OST, but it not belong TCU */
- .has_tcu_clk = false,
+ .has_tcu_clk = true,
};

static const struct of_device_id __maybe_unused ingenic_tcu_of_match[] __initconst = {
--
2.34.1



2022-02-10 11:14:14

by Zhou Yanjie

[permalink] [raw]
Subject: Re: [PATCH] clk: ingenic-tcu: Fix missing TCU clock for X1000 SoC

Hi Aidan,

On 2022/2/10 上午7:01, Aidan MacDonald wrote:
> The X1000 does have a TCU clock gate, so pass it to the driver.
> Without this the TCU can be gated automatically, which prevents
> timers from running and stops register writes from taking effect.
>
> Signed-off-by: Aidan MacDonald <[email protected]>
> ---
> arch/mips/boot/dts/ingenic/x1000.dtsi | 5 +++--
> drivers/clk/ingenic/tcu.c | 2 +-
> 2 files changed, 4 insertions(+), 3 deletions(-)


Thank you for fixing the problem that I didn't realize at first.

Reviewed-by: 周琰杰 (Zhou Yanjie) <[email protected]>


>
> diff --git a/arch/mips/boot/dts/ingenic/x1000.dtsi b/arch/mips/boot/dts/ingenic/x1000.dtsi
> index 8bd27edef216..c69df8eb158e 100644
> --- a/arch/mips/boot/dts/ingenic/x1000.dtsi
> +++ b/arch/mips/boot/dts/ingenic/x1000.dtsi
> @@ -111,8 +111,9 @@ tcu: timer@10002000 {
>
> clocks = <&cgu X1000_CLK_RTCLK>,
> <&cgu X1000_CLK_EXCLK>,
> - <&cgu X1000_CLK_PCLK>;
> - clock-names = "rtc", "ext", "pclk";
> + <&cgu X1000_CLK_PCLK>,
> + <&cgu X1000_CLK_TCU>;
> + clock-names = "rtc", "ext", "pclk", "tcu";
>
> interrupt-controller;
> #interrupt-cells = <1>;
> diff --git a/drivers/clk/ingenic/tcu.c b/drivers/clk/ingenic/tcu.c
> index 77acfbeb4830..9c86043f673a 100644
> --- a/drivers/clk/ingenic/tcu.c
> +++ b/drivers/clk/ingenic/tcu.c
> @@ -320,7 +320,7 @@ static const struct ingenic_soc_info jz4770_soc_info = {
> static const struct ingenic_soc_info x1000_soc_info = {
> .num_channels = 8,
> .has_ost = false, /* X1000 has OST, but it not belong TCU */
> - .has_tcu_clk = false,
> + .has_tcu_clk = true,
> };
>
> static const struct of_device_id __maybe_unused ingenic_tcu_of_match[] __initconst = {

2022-02-10 11:29:09

by Paul Cercueil

[permalink] [raw]
Subject: Re: [PATCH] clk: ingenic-tcu: Fix missing TCU clock for X1000 SoC

Hi Aidan,

Le mer., f?vr. 9 2022 at 23:01:47 +0000, Aidan MacDonald
<[email protected]> a ?crit :
> The X1000 does have a TCU clock gate, so pass it to the driver.
> Without this the TCU can be gated automatically, which prevents
> timers from running and stops register writes from taking effect.
>
> Signed-off-by: Aidan MacDonald <[email protected]>
> ---
> arch/mips/boot/dts/ingenic/x1000.dtsi | 5 +++--
> drivers/clk/ingenic/tcu.c | 2 +-

The Device Tree changes should be split into their own patch.

Cheers,
-Paul

> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/arch/mips/boot/dts/ingenic/x1000.dtsi
> b/arch/mips/boot/dts/ingenic/x1000.dtsi
> index 8bd27edef216..c69df8eb158e 100644
> --- a/arch/mips/boot/dts/ingenic/x1000.dtsi
> +++ b/arch/mips/boot/dts/ingenic/x1000.dtsi
> @@ -111,8 +111,9 @@ tcu: timer@10002000 {
>
> clocks = <&cgu X1000_CLK_RTCLK>,
> <&cgu X1000_CLK_EXCLK>,
> - <&cgu X1000_CLK_PCLK>;
> - clock-names = "rtc", "ext", "pclk";
> + <&cgu X1000_CLK_PCLK>,
> + <&cgu X1000_CLK_TCU>;
> + clock-names = "rtc", "ext", "pclk", "tcu";
>
> interrupt-controller;
> #interrupt-cells = <1>;
> diff --git a/drivers/clk/ingenic/tcu.c b/drivers/clk/ingenic/tcu.c
> index 77acfbeb4830..9c86043f673a 100644
> --- a/drivers/clk/ingenic/tcu.c
> +++ b/drivers/clk/ingenic/tcu.c
> @@ -320,7 +320,7 @@ static const struct ingenic_soc_info
> jz4770_soc_info = {
> static const struct ingenic_soc_info x1000_soc_info = {
> .num_channels = 8,
> .has_ost = false, /* X1000 has OST, but it not belong TCU */
> - .has_tcu_clk = false,
> + .has_tcu_clk = true,
> };
>
> static const struct of_device_id __maybe_unused
> ingenic_tcu_of_match[] __initconst = {
> --
> 2.34.1
>