* [PATCH 1/2] dt-bindings: clock: mediatek: mt7629: add RTC clock IDs
2026-10-06 6:42 [PATCH 0/2] Add MT7629 RTC clock selection Chuanhong Guo
@ 2026-10-06 6:42 ` Chuanhong Guo
2026-10-06 6:42 ` [PATCH 2/2] clk: mediatek: mt7629: add RTC clock selection Chuanhong Guo
1 sibling, 0 replies; 3+ messages in thread
From: Chuanhong Guo @ 2026-10-06 6:42 UTC (permalink / raw)
To: AngeloGioacchino Del Regno, Stephen Boyd, Brian Masney,
Jerome Brunet, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Matthias Brugger
Cc: linux-clk, linux-mediatek, devicetree, linux-kernel,
linux-arm-kernel, Chuanhong Guo
Expose the 40 MHz / 1221 RTC source and the RTC clock mux. Keep the
existing CLK_TOP_RTC ID for the 40 MHz / 1024 source.
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
---
include/dt-bindings/clock/mt7629-clk.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/dt-bindings/clock/mt7629-clk.h b/include/dt-bindings/clock/mt7629-clk.h
index ad8e6d7f0154..aa94a398ae05 100644
--- a/include/dt-bindings/clock/mt7629-clk.h
+++ b/include/dt-bindings/clock/mt7629-clk.h
@@ -115,7 +115,9 @@
#define CLK_TOP_CRYPTO_SEL 105
#define CLK_TOP_SGMII_REF_1_SEL 106
#define CLK_TOP_10M_SEL 107
-#define CLK_TOP_NR_CLK 108
+#define CLK_TOP_RTC_32K 108
+#define CLK_TOP_RTC_SEL 109
+#define CLK_TOP_NR_CLK 110
/* INFRACFG */
#define CLK_INFRA_MUX1_SEL 0
--
2.55.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 2/2] clk: mediatek: mt7629: add RTC clock selection
2026-10-06 6:42 [PATCH 0/2] Add MT7629 RTC clock selection Chuanhong Guo
2026-10-06 6:42 ` [PATCH 1/2] dt-bindings: clock: mediatek: mt7629: add RTC clock IDs Chuanhong Guo
@ 2026-10-06 6:42 ` Chuanhong Guo
1 sibling, 0 replies; 3+ messages in thread
From: Chuanhong Guo @ 2026-10-06 6:42 UTC (permalink / raw)
To: AngeloGioacchino Del Regno, Stephen Boyd, Brian Masney,
Jerome Brunet, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Matthias Brugger
Cc: linux-clk, linux-mediatek, devicetree, linux-kernel,
linux-arm-kernel, Chuanhong Guo
CLK_MODE bits 3:2 select the RTC clock source. Selector 0 uses the
40 MHz crystal divided by 1024, while selector 3 divides it by 1221
to provide approximately 32.76 kHz. The integrated Wi-Fi needs this
/1221 source.
Add the /1221 fixed-factor clock and the RTC mux so device trees can
select this source through assigned-clock-parents. Keep CLK_TOP_RTC
for the existing /1024 source.
Selector 1 is reserved. Selector 2 is documented as an approximately
25 kHz PMU bandgap clock, but its source and control are not sufficiently
described to model it here. Leave these entries unmodelled while
preserving the hardware selector values.
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
---
drivers/clk/mediatek/clk-mt7629.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/clk/mediatek/clk-mt7629.c b/drivers/clk/mediatek/clk-mt7629.c
index e154771b1b8b..6336f8c4167b 100644
--- a/drivers/clk/mediatek/clk-mt7629.c
+++ b/drivers/clk/mediatek/clk-mt7629.c
@@ -285,6 +285,10 @@ static const char * const infra_mux1_parents[] = {
"armpll"
};
+static const char * const rtc_parents[] = {
+ "rtc", "clk_null", "clk_null", "rtc_32k"
+};
+
static const struct mtk_gate_regs apmixed_cg_regs = {
.set_ofs = 0x8,
.clr_ofs = 0x8,
@@ -367,6 +371,7 @@ static const struct mtk_fixed_factor top_divs[] = {
FACTOR(CLK_TOP_ETH_500M, "eth_500m", "eth1pll", 1, 1),
FACTOR(CLK_TOP_TXCLK_SRC_PRE, "txclk_src_pre", "sgmiipll_d2", 1, 1),
FACTOR(CLK_TOP_RTC, "rtc", "clkxtal", 1, 1024),
+ FACTOR(CLK_TOP_RTC_32K, "rtc_32k", "clkxtal", 1, 1221),
FACTOR(CLK_TOP_PWM_QTR_26M, "pwm_qtr_26m", "clkxtal", 1, 1),
FACTOR(CLK_TOP_CPUM_TCK_IN, "cpum_tck_in", "cpum_tck", 1, 1),
FACTOR(CLK_TOP_TO_USB3_DA_TOP, "to_usb3_da_top", "clkxtal", 1, 1),
@@ -458,6 +463,8 @@ static struct mtk_composite infra_muxes[] = {
};
static struct mtk_composite top_muxes[] = {
+ /* CLK_MODE */
+ MUX(CLK_TOP_RTC_SEL, "rtc_sel", rtc_parents, 0x000, 2, 2),
/* CLK_CFG_0 */
MUX_GATE(CLK_TOP_AXI_SEL, "axi_sel", axi_parents,
0x040, 0, 3, 7),
--
2.55.0
^ permalink raw reply [flat|nested] 3+ messages in thread