<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/clk/thead, branch v7.0.10</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v7.0.10</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v7.0.10'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2026-01-15T01:26:47+00:00</updated>
<entry>
<title>clk: thead: th1520-ap: Support CPU frequency scaling</title>
<updated>2026-01-15T01:26:47+00:00</updated>
<author>
<name>Yao Zi</name>
<email>ziyao@disroot.org</email>
</author>
<published>2025-11-20T13:14:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=baf4fc7c03bd0f68c768cfe27829674bd060c6b4'/>
<id>urn:sha1:baf4fc7c03bd0f68c768cfe27829674bd060c6b4</id>
<content type='text'>
On TH1520 SoC, c910_clk feeds the CPU cluster. It could be glitchlessly
reparented to one of the two PLLs: either to cpu_pll0 indirectly through
c910_i0_clk, or to cpu_pll1 directly.

To achieve glitchless rate change, customized clock operations are
implemented for c910_clk: on rate change, the PLL not currently in use
is configured to the requested rate first, then c910_clk reparents to
it.

Additionally, c910_bus_clk, which in turn takes c910_clk as parent,
has a frequency limit of 750MHz. A clock notifier is registered on
c910_clk to adjust c910_bus_clk on c910_clk rate change.

Reviewed-by: Drew Fustini &lt;fustini@kernel.org&gt;
Signed-off-by: Yao Zi &lt;ziyao@disroot.org&gt;
Signed-off-by: Drew Fustini &lt;fustini@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: thead: th1520-ap: Add macro to define multiplexers with flags</title>
<updated>2025-12-18T19:15:43+00:00</updated>
<author>
<name>Yao Zi</name>
<email>ziyao@disroot.org</email>
</author>
<published>2025-11-20T13:14:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5dbee3503771a36464e0b39a420475a727911c83'/>
<id>urn:sha1:5dbee3503771a36464e0b39a420475a727911c83</id>
<content type='text'>
The new macro, TH_CCU_MUX_FLAGS, extends TH_CCU_MUX macro by adding two
parameters to specify clock flags and multiplexer flags.

Reviewed-by: Drew Fustini &lt;fustini@kernel.org&gt;
Signed-off-by: Yao Zi &lt;ziyao@disroot.org&gt;
Signed-off-by: Drew Fustini &lt;fustini@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: thead: th1520-ap: Support setting PLL rates</title>
<updated>2025-12-18T19:15:35+00:00</updated>
<author>
<name>Yao Zi</name>
<email>ziyao@disroot.org</email>
</author>
<published>2025-11-20T13:14:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=238cc6316a885765fd52a6dc65b9ca4e47647b1e'/>
<id>urn:sha1:238cc6316a885765fd52a6dc65b9ca4e47647b1e</id>
<content type='text'>
TH1520 ships several PLLs that could operate in either integer or
fractional mode. However, the TRM only lists a few configuration whose
stability is considered guaranteed.

Add a table-lookup rate determination logic to support PLL rate setting,
and fill up frequency-configuration tables for AP-subsystem PLLs.

Reviewed-by: Drew Fustini &lt;fustini@kernel.org&gt;
Signed-off-by: Yao Zi &lt;ziyao@disroot.org&gt;
Signed-off-by: Drew Fustini &lt;fustini@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: thead: th1520-ap: Add C910 bus clock</title>
<updated>2025-12-18T19:15:21+00:00</updated>
<author>
<name>Yao Zi</name>
<email>ziyao@disroot.org</email>
</author>
<published>2025-11-20T13:14:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b436f8a82aaa3bd54cb79b1219d94a99f7351d33'/>
<id>urn:sha1:b436f8a82aaa3bd54cb79b1219d94a99f7351d33</id>
<content type='text'>
This divider takes c910_clk as parent and is essential for the C910
cluster to operate, thus is marked as CLK_IS_CRITICAL.

Reviewed-by: Drew Fustini &lt;fustini@kernel.org&gt;
Signed-off-by: Yao Zi &lt;ziyao@disroot.org&gt;
Signed-off-by: Drew Fustini &lt;fustini@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: thead: th1520-ap: Poll for PLL lock and wait for stability</title>
<updated>2025-12-18T19:15:11+00:00</updated>
<author>
<name>Yao Zi</name>
<email>ziyao@disroot.org</email>
</author>
<published>2025-11-20T13:14:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=892abfbed71e8e0fc5d6ccee1e975904805c6327'/>
<id>urn:sha1:892abfbed71e8e0fc5d6ccee1e975904805c6327</id>
<content type='text'>
All PLLs found on TH1520 SoC take 21250ns at maximum to lock, and their
lock status is indicated by register PLL_STS (offset 0x80 inside AP
clock controller). We should poll the register to ensure the PLL
actually locks after enabling it.

Furthermore, a 30us delay is added after enabling the PLL, after which
the PLL could be considered stable as stated by vendor clock code.

Fixes: 56a48c1833aa ("clk: thead: add support for enabling/disabling PLLs")
Reviewed-by: Drew Fustini &lt;fustini@kernel.org&gt;
Signed-off-by: Yao Zi &lt;ziyao@disroot.org&gt;
Signed-off-by: Drew Fustini &lt;fustini@kernel.org&gt;
</content>
</entry>
<entry>
<title>Merge branches 'clk-bindings', 'clk-cleanup', 'clk-renesas', 'clk-thead' and 'clk-spacemit' into clk-next</title>
<updated>2025-10-06T17:56:23+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@kernel.org</email>
</author>
<published>2025-10-06T17:56:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=ec7336475d52575381149aa67f9526c2f6d45e0d'/>
<id>urn:sha1:ec7336475d52575381149aa67f9526c2f6d45e0d</id>
<content type='text'>
* clk-bindings:
  dt-bindings: clock: mediatek: Add power-domains property
  dt-bindings: clock: silabs,si5341: Add missing properties
  dt-bindings: clock: adi,axi-clkgen: add clock-output-names property
  dt-bindings: clock: Remove unused fujitsu,mb86s70-crg11 binding
  dt-bindings: clock: Convert silabs,si570 to DT schema
  dt-bindings: clock: Convert silabs,si5341 to DT schema
  dt-bindings: clock: Convert silabs,si514/544 to DT schema

* clk-cleanup:
  clk: tegra: do not overallocate memory for bpmp clocks
  clk: ep93xx: Use int type to store negative error codes
  dt-bindings: clock: st: flexgen: remove deprecated compatibles
  clk: st: flexgen: remove unused compatible
  clk: clk-axi-clkgen: remove unneeded semicolon
  clk: tegra: Remove redundant semicolons
  clk: npcm: select CONFIG_AUXILIARY_BUS
  clk: remove unneeded 'fast_io' parameter in regmap_config

* clk-renesas: (27 commits)
  clk: renesas: r9a09g05[67]: Reduce differences
  clk: renesas: r9a09g047: Add USB3.0 clocks/resets
  clk: renesas: cpg-mssr: Fix memory leak in cpg_mssr_reserved_init()
  clk: renesas: r9a09g056: Add clock and reset entries for I3C
  clk: renesas: r9a09g057: Add clock and reset entries for I3C
  dt-bindings: clock: renesas,r9a09g047-cpg: Add USB3.0 core clocks
  clk: renesas: r9a09g077: Add Ethernet Subsystem core and module clocks
  clk: renesas: rzv2h: Simplify polling condition in __rzv2h_cpg_assert()
  clk: renesas: rzv2h: Re-assert reset on deassert timeout
  clk: renesas: rzg2l: Re-assert reset on deassert timeout
  clk: renesas: rzg2l: Simplify rzg2l_cpg_assert() and rzg2l_cpg_deassert()
  dt-bindings: clock: renesas,r9a09g077/87: Add Ethernet clock IDs
  clk: renesas: r9a09g047: Add GPT clocks and resets
  clk: renesas: r9a09g077: Add module clocks for SCI1-SCI5
  clk: renesas: rzv2h: remove round_rate() in favor of determine_rate()
  clk: renesas: rzg2l: convert from round_rate() to determine_rate()
  clk: renesas: r9a07g04[34]: Use tabs instead of spaces
  clk: renesas: r9a07g043: Add MSTOP for RZ/G2UL
  clk: renesas: r9a07g044: Add MSTOP for RZ/G2L
  clk: renesas: r9a08g045: Add MSTOP for GPIO
  ...

* clk-thead:
  clk: thead: th1520-ap: set all AXI clocks to CLK_IS_CRITICAL
  clk: thead: support changing DPU pixel clock rate
  clk: thead: add support for enabling/disabling PLLs
  clk: thead: Correct parent for DPU pixel clocks
  clk: thead: th1520-ap: fix parent of padctrl0 clock
  clk: thead: th1520-ap: describe gate clocks with clk_gate

* clk-spacemit:
  clk: spacemit: fix i2s clock
  clk: spacemit: introduce pre-div for ddn clock
  dt-bindings: clock: spacemit: introduce i2s pre-clock to fix i2s clock
  clk: spacemit: ccu_pll: convert from round_rate() to determine_rate()
  clk: spacemit: ccu_mix: convert from round_rate() to determine_rate()
  clk: spacemit: ccu_ddn: convert from round_rate() to determine_rate()
  clk: spacemit: fix sspax_clk
  dt-bindings: clock: spacemit: CLK_SSPA_I2S_BCLK for SSPA
</content>
</entry>
<entry>
<title>clk: thead: th1520-ap: set all AXI clocks to CLK_IS_CRITICAL</title>
<updated>2025-08-18T21:58:23+00:00</updated>
<author>
<name>Icenowy Zheng</name>
<email>uwu@icenowy.me</email>
</author>
<published>2025-08-16T09:11:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=c567bc5fc68c4388c00e11fc65fd14fe86b52070'/>
<id>urn:sha1:c567bc5fc68c4388c00e11fc65fd14fe86b52070</id>
<content type='text'>
The AXI crossbar of TH1520 has no proper timeout handling, which means
gating AXI clocks can easily lead to bus timeout and thus system hang.

Set all AXI clock gates to CLK_IS_CRITICAL. All these clock gates are
ungated by default on system reset.

In addition, convert all current CLK_IGNORE_UNUSED usage to
CLK_IS_CRITICAL to prevent unwanted clock gating.

Signed-off-by: Icenowy Zheng &lt;uwu@icenowy.me&gt;
Reviewed-by: Drew Fustini &lt;fustini@kernel.org&gt;
Signed-off-by: Drew Fustini &lt;fustini@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: thead: support changing DPU pixel clock rate</title>
<updated>2025-08-18T21:58:23+00:00</updated>
<author>
<name>Icenowy Zheng</name>
<email>uwu@icenowy.me</email>
</author>
<published>2025-08-16T09:11:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=8fede7ff692cc06791269cd7c68b2bd2f62af159'/>
<id>urn:sha1:8fede7ff692cc06791269cd7c68b2bd2f62af159</id>
<content type='text'>
The DPU pixel clock rate corresponds to the required dot clock of the
display mode, so it needs to be tweakable.

Add support to change it, by adding generic divider setting code,
arming the code to the dpu0/dpu1 clocks, and setting the pixel clock
connected to the DPU (after a gate) to CLK_SET_RATE_PARENT to propagate
it to the dividers.

Signed-off-by: Icenowy Zheng &lt;uwu@icenowy.me&gt;
Reviewed-by: Drew Fustini &lt;fustini@kernel.org&gt;
Signed-off-by: Drew Fustini &lt;fustini@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: thead: add support for enabling/disabling PLLs</title>
<updated>2025-08-18T21:58:23+00:00</updated>
<author>
<name>Icenowy Zheng</name>
<email>uwu@icenowy.me</email>
</author>
<published>2025-08-16T09:11:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=56a48c1833aa1ede82cc3833d73750597eccfdb0'/>
<id>urn:sha1:56a48c1833aa1ede82cc3833d73750597eccfdb0</id>
<content type='text'>
The 2nd control word of T-Head TH1520 PLLs contains a bit to put the VCO
into reset state, which means disabling the PLL.

Some PLLs are put to disabled state by the bootloader, and the clock
driver should be able to enable them.

Add support for enabling/disabling PLLs. PLLs other than DPU ones are
set CLK_IS_CRITICAL to prevent killing the system -- they're meant to
drive CPU or system buses (even the GMAC/Video ones are driving arbitrary
buses).

Signed-off-by: Icenowy Zheng &lt;uwu@icenowy.me&gt;
Reviewed-by: Drew Fustini &lt;fustini@kernel.org&gt;
Signed-off-by: Drew Fustini &lt;fustini@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: thead: Correct parent for DPU pixel clocks</title>
<updated>2025-08-18T21:58:23+00:00</updated>
<author>
<name>Michal Wilczynski</name>
<email>m.wilczynski@samsung.com</email>
</author>
<published>2025-08-16T09:11:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=c51a37ffea3813374a8f7955abbba6da25357388'/>
<id>urn:sha1:c51a37ffea3813374a8f7955abbba6da25357388</id>
<content type='text'>
The dpu0_pixelclk and dpu1_pixelclk gates were incorrectly parented to
the video_pll_clk.

According to the TH1520 TRM, the "dpu0_pixelclk" should be sourced from
"DPU0 PLL DIV CLK". In this driver, "DPU0 PLL DIV CLK" corresponds to
the `dpu0_clk` clock, which is a divider whose parent is the
`dpu0_pll_clk`.

This patch corrects the clock hierarchy by reparenting `dpu0_pixelclk`
to `dpu0_clk`. By symmetry, `dpu1_pixelclk` is also reparented to its
correct source, `dpu1_clk`.

Fixes: 50d4b157fa96 ("clk: thead: Add clock support for VO subsystem in T-HEAD TH1520 SoC")
Reported-by: Icenowy Zheng &lt;uwu@icenowy.me&gt;
Signed-off-by: Michal Wilczynski &lt;m.wilczynski@samsung.com&gt;
[Icenowy: add Drew's R-b and rebased atop ccu_gate refactor]
Reviewed-by: Drew Fustini &lt;fustini@kernel.org&gt;
Signed-off-by: Icenowy Zheng &lt;uwu@icenowy.me&gt;
Signed-off-by: Drew Fustini &lt;fustini@kernel.org&gt;
</content>
</entry>
</feed>
