Message ID | 20220209230145.18943-1-aidanmacdonald.0x0@gmail.com (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | clk: ingenic-tcu: Fix missing TCU clock for X1000 SoC | expand |
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 <aidanmacdonald.0x0@gmail.com> > --- > 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) <zhouyanjie@wanyeetech.com> > > 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 = {
Hi Aidan, Le mer., févr. 9 2022 at 23:01:47 +0000, Aidan MacDonald <aidanmacdonald.0x0@gmail.com> 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 <aidanmacdonald.0x0@gmail.com> > --- > 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 >
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 = {
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 <aidanmacdonald.0x0@gmail.com> --- arch/mips/boot/dts/ingenic/x1000.dtsi | 5 +++-- drivers/clk/ingenic/tcu.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-)