mbox series

[v2,0/3] Clock fixes for Ingenic SoCs

Message ID 20220428164454.17908-1-aidanmacdonald.0x0@gmail.com (mailing list archive)
Headers show
Series Clock fixes for Ingenic SoCs | expand

Message

Aidan MacDonald April 28, 2022, 4:44 p.m. UTC
I ran across a problem trying to get Linux running on an Ingenic X1000 SoC:
since the memory clock isn't referenced by any driver, it appears unused and
gets disabled automatically. After that, the system hangs on any RAM access.

There is a hack in board-ingenic.c to forcibly enable the CPU clock, but this
is insufficient for the X1000 since the memory clock has its own gate and mux
that isn't tied to the CPU.

This patch series fixes the bug by adding CLK_IS_CRITICAL flags to important
clocks, which seems to be the approach used in many other SoC clock drivers.

v2: Add comments to patch 02 to explain why we need CLK_IS_CRITICAL.

Aidan MacDonald (3):
  clk: ingenic: Allow specifying common clock flags
  clk: ingenic: Mark critical clocks in Ingenic SoCs
  mips: ingenic: Do not manually reference the CPU clock

 arch/mips/generic/board-ingenic.c | 26 --------------------------
 drivers/clk/ingenic/cgu.c         |  2 +-
 drivers/clk/ingenic/cgu.h         |  3 +++
 drivers/clk/ingenic/jz4725b-cgu.c | 10 ++++++++++
 drivers/clk/ingenic/jz4740-cgu.c  | 10 ++++++++++
 drivers/clk/ingenic/jz4760-cgu.c  | 10 ++++++++++
 drivers/clk/ingenic/jz4770-cgu.c  |  5 +++++
 drivers/clk/ingenic/jz4780-cgu.c  | 15 +++++++++++++++
 drivers/clk/ingenic/x1000-cgu.c   | 15 +++++++++++++++
 drivers/clk/ingenic/x1830-cgu.c   | 11 +++++++++++
 10 files changed, 80 insertions(+), 27 deletions(-)

Comments

Zhou Yanjie May 9, 2022, 9:12 a.m. UTC | #1
Hi,

On 2022/4/29 上午12:44, Aidan MacDonald wrote:
> I ran across a problem trying to get Linux running on an Ingenic X1000 SoC:
> since the memory clock isn't referenced by any driver, it appears unused and
> gets disabled automatically. After that, the system hangs on any RAM access.
>
> There is a hack in board-ingenic.c to forcibly enable the CPU clock, but this
> is insufficient for the X1000 since the memory clock has its own gate and mux
> that isn't tied to the CPU.
>
> This patch series fixes the bug by adding CLK_IS_CRITICAL flags to important
> clocks, which seems to be the approach used in many other SoC clock drivers.
>
> v2: Add comments to patch 02 to explain why we need CLK_IS_CRITICAL.
>
> Aidan MacDonald (3):
>    clk: ingenic: Allow specifying common clock flags
>    clk: ingenic: Mark critical clocks in Ingenic SoCs
>    mips: ingenic: Do not manually reference the CPU clock
>
>   arch/mips/generic/board-ingenic.c | 26 --------------------------
>   drivers/clk/ingenic/cgu.c         |  2 +-
>   drivers/clk/ingenic/cgu.h         |  3 +++
>   drivers/clk/ingenic/jz4725b-cgu.c | 10 ++++++++++
>   drivers/clk/ingenic/jz4740-cgu.c  | 10 ++++++++++
>   drivers/clk/ingenic/jz4760-cgu.c  | 10 ++++++++++
>   drivers/clk/ingenic/jz4770-cgu.c  |  5 +++++
>   drivers/clk/ingenic/jz4780-cgu.c  | 15 +++++++++++++++
>   drivers/clk/ingenic/x1000-cgu.c   | 15 +++++++++++++++
>   drivers/clk/ingenic/x1830-cgu.c   | 11 +++++++++++
>   10 files changed, 80 insertions(+), 27 deletions(-)


Tested-by: 周琰杰 (Zhou Yanjie) <zhouyanjie@wanyeetech.com> # On X1000 and 
X1830