Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: eyeq: add EyeQ6H west fixed factor clocks

Previous setup was:
- pll-west clock registered from driver at of_clk_init();
- Both OCC and UART clocks registered from DT using fixed-factor-clock
compatible.

Now that drivers/clk/clk-eyeq.c supports registering fixed factors, use
that capability to register west-per-occ and west-per-uart (giving them
proper names at the same time).

Also switch from hard-coded index 0 for pll-west to using the
EQ6HC_WEST_PLL_PER constant by exposed dt-bindings headers.

All get exposed at of_clk_init() because they get used by the AMBA PL011
serial ports. Those are instantiated before platform bus infrastructure.

Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Link: https://lore.kernel.org/r/20241106-mbly-clk-v2-8-84cfefb3f485@bootlin.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>

authored by

Théo Lebrun and committed by
Stephen Boyd
1cbdfcfd 0b28f9ee

+9 -1
+9 -1
drivers/clk/clk-eyeq.c
··· 712 712 713 713 /* Required early for UART. */ 714 714 static const struct eqc_pll eqc_eyeq6h_west_early_plls[] = { 715 - { .index = 0, .name = "pll-west", .reg64 = 0x074 }, 715 + { .index = EQ6HC_WEST_PLL_PER, .name = "pll-west", .reg64 = 0x074 }, 716 + }; 717 + 718 + static const struct eqc_fixed_factor eqc_eyeq6h_west_early_fixed_factors[] = { 719 + { EQ6HC_WEST_PER_OCC, "west-per-occ", 1, 10, EQ6HC_WEST_PLL_PER }, 720 + { EQ6HC_WEST_PER_UART, "west-per-uart", 1, 1, EQ6HC_WEST_PER_OCC }, 716 721 }; 717 722 718 723 static const struct eqc_early_match_data eqc_eyeq6h_west_early_match_data __initconst = { 719 724 .early_pll_count = ARRAY_SIZE(eqc_eyeq6h_west_early_plls), 720 725 .early_plls = eqc_eyeq6h_west_early_plls, 726 + 727 + .early_fixed_factor_count = ARRAY_SIZE(eqc_eyeq6h_west_early_fixed_factors), 728 + .early_fixed_factors = eqc_eyeq6h_west_early_fixed_factors, 721 729 }; 722 730 723 731 static void __init eqc_early_init(struct device_node *np,