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

Configure Feed

Select the types of activity you want to include in your feed.

clk: renesas: r9a09g056-cpg: Add clock and reset entries for GBETH0/1

Add clock and reset entries for GBETH instances. Include core clocks for
PTP, sourced from PLLETH, and add PLLs, dividers, and static mux clocks
used as clock sources for the GBETH IP.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250513154635.273664-2-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

authored by

Lad Prabhakar and committed by
Geert Uytterhoeven
bfb0bc6b 598b2a06

+66
+66
drivers/clk/renesas/r9a09g056-cpg.c
··· 28 28 CLK_PLLCLN, 29 29 CLK_PLLDTY, 30 30 CLK_PLLCA55, 31 + CLK_PLLETH, 31 32 32 33 /* Internal Core Clocks */ 33 34 CLK_PLLCM33_DIV16, ··· 36 35 CLK_PLLCLN_DIV8, 37 36 CLK_PLLDTY_ACPU, 38 37 CLK_PLLDTY_ACPU_DIV4, 38 + CLK_PLLDTY_DIV8, 39 + CLK_PLLETH_DIV_250_FIX, 40 + CLK_PLLETH_DIV_125_FIX, 41 + CLK_CSDIV_PLLETH_GBE0, 42 + CLK_CSDIV_PLLETH_GBE1, 43 + CLK_SMUX2_GBE0_TXCLK, 44 + CLK_SMUX2_GBE0_RXCLK, 45 + CLK_SMUX2_GBE1_TXCLK, 46 + CLK_SMUX2_GBE1_RXCLK, 39 47 40 48 /* Module Clocks */ 41 49 MOD_CLK_BASE, ··· 67 57 {0, 0}, 68 58 }; 69 59 60 + static const struct clk_div_table dtable_2_100[] = { 61 + {0, 2}, 62 + {1, 10}, 63 + {2, 100}, 64 + {0, 0}, 65 + }; 66 + 67 + /* Mux clock tables */ 68 + static const char * const smux2_gbe0_rxclk[] = { ".plleth_gbe0", "et0_rxclk" }; 69 + static const char * const smux2_gbe0_txclk[] = { ".plleth_gbe0", "et0_txclk" }; 70 + static const char * const smux2_gbe1_rxclk[] = { ".plleth_gbe1", "et1_rxclk" }; 71 + static const char * const smux2_gbe1_txclk[] = { ".plleth_gbe1", "et1_txclk" }; 72 + 70 73 static const struct cpg_core_clk r9a09g056_core_clks[] __initconst = { 71 74 /* External Clock Inputs */ 72 75 DEF_INPUT("audio_extal", CLK_AUDIO_EXTAL), ··· 91 68 DEF_FIXED(".pllcln", CLK_PLLCLN, CLK_QEXTAL, 200, 3), 92 69 DEF_FIXED(".plldty", CLK_PLLDTY, CLK_QEXTAL, 200, 3), 93 70 DEF_PLL(".pllca55", CLK_PLLCA55, CLK_QEXTAL, PLLCA55), 71 + DEF_FIXED(".plleth", CLK_PLLETH, CLK_QEXTAL, 125, 3), 94 72 95 73 /* Internal Core Clocks */ 96 74 DEF_FIXED(".pllcm33_div16", CLK_PLLCM33_DIV16, CLK_PLLCM33, 1, 16), ··· 101 77 102 78 DEF_DDIV(".plldty_acpu", CLK_PLLDTY_ACPU, CLK_PLLDTY, CDDIV0_DIVCTL2, dtable_2_64), 103 79 DEF_FIXED(".plldty_acpu_div4", CLK_PLLDTY_ACPU_DIV4, CLK_PLLDTY_ACPU, 1, 4), 80 + DEF_FIXED(".plldty_div8", CLK_PLLDTY_DIV8, CLK_PLLDTY, 1, 8), 81 + 82 + DEF_FIXED(".plleth_250_fix", CLK_PLLETH_DIV_250_FIX, CLK_PLLETH, 1, 4), 83 + DEF_FIXED(".plleth_125_fix", CLK_PLLETH_DIV_125_FIX, CLK_PLLETH_DIV_250_FIX, 1, 2), 84 + DEF_CSDIV(".plleth_gbe0", CLK_CSDIV_PLLETH_GBE0, 85 + CLK_PLLETH_DIV_250_FIX, CSDIV0_DIVCTL0, dtable_2_100), 86 + DEF_CSDIV(".plleth_gbe1", CLK_CSDIV_PLLETH_GBE1, 87 + CLK_PLLETH_DIV_250_FIX, CSDIV0_DIVCTL1, dtable_2_100), 88 + DEF_SMUX(".smux2_gbe0_txclk", CLK_SMUX2_GBE0_TXCLK, SSEL0_SELCTL2, smux2_gbe0_txclk), 89 + DEF_SMUX(".smux2_gbe0_rxclk", CLK_SMUX2_GBE0_RXCLK, SSEL0_SELCTL3, smux2_gbe0_rxclk), 90 + DEF_SMUX(".smux2_gbe1_txclk", CLK_SMUX2_GBE1_TXCLK, SSEL1_SELCTL0, smux2_gbe1_txclk), 91 + DEF_SMUX(".smux2_gbe1_rxclk", CLK_SMUX2_GBE1_RXCLK, SSEL1_SELCTL1, smux2_gbe1_rxclk), 104 92 105 93 /* Core Clocks */ 106 94 DEF_FIXED("sys_0_pclk", R9A09G056_SYS_0_PCLK, CLK_QEXTAL, 1, 1), ··· 125 89 DEF_DDIV("ca55_0_coreclk3", R9A09G056_CA55_0_CORE_CLK3, CLK_PLLCA55, 126 90 CDDIV1_DIVCTL3, dtable_1_8), 127 91 DEF_FIXED("iotop_0_shclk", R9A09G056_IOTOP_0_SHCLK, CLK_PLLCM33_DIV16, 1, 1), 92 + DEF_FIXED("gbeth_0_clk_ptp_ref_i", R9A09G056_GBETH_0_CLK_PTP_REF_I, 93 + CLK_PLLETH_DIV_125_FIX, 1, 1), 94 + DEF_FIXED("gbeth_1_clk_ptp_ref_i", R9A09G056_GBETH_1_CLK_PTP_REF_I, 95 + CLK_PLLETH_DIV_125_FIX, 1, 1), 128 96 }; 129 97 130 98 static const struct rzv2h_mod_clk r9a09g056_mod_clks[] __initconst = { ··· 160 120 BUS_MSTOP(8, BIT(4))), 161 121 DEF_MOD("sdhi_2_aclk", CLK_PLLDTY_ACPU_DIV4, 10, 14, 5, 14, 162 122 BUS_MSTOP(8, BIT(4))), 123 + DEF_MOD_MUX_EXTERNAL("gbeth_0_clk_tx_i", CLK_SMUX2_GBE0_TXCLK, 11, 8, 5, 24, 124 + BUS_MSTOP(8, BIT(5)), 1), 125 + DEF_MOD_MUX_EXTERNAL("gbeth_0_clk_rx_i", CLK_SMUX2_GBE0_RXCLK, 11, 9, 5, 25, 126 + BUS_MSTOP(8, BIT(5)), 1), 127 + DEF_MOD_MUX_EXTERNAL("gbeth_0_clk_tx_180_i", CLK_SMUX2_GBE0_TXCLK, 11, 10, 5, 26, 128 + BUS_MSTOP(8, BIT(5)), 1), 129 + DEF_MOD_MUX_EXTERNAL("gbeth_0_clk_rx_180_i", CLK_SMUX2_GBE0_RXCLK, 11, 11, 5, 27, 130 + BUS_MSTOP(8, BIT(5)), 1), 131 + DEF_MOD("gbeth_0_aclk_csr_i", CLK_PLLDTY_DIV8, 11, 12, 5, 28, 132 + BUS_MSTOP(8, BIT(5))), 133 + DEF_MOD("gbeth_0_aclk_i", CLK_PLLDTY_DIV8, 11, 13, 5, 29, 134 + BUS_MSTOP(8, BIT(5))), 135 + DEF_MOD_MUX_EXTERNAL("gbeth_1_clk_tx_i", CLK_SMUX2_GBE1_TXCLK, 11, 14, 5, 30, 136 + BUS_MSTOP(8, BIT(6)), 1), 137 + DEF_MOD_MUX_EXTERNAL("gbeth_1_clk_rx_i", CLK_SMUX2_GBE1_RXCLK, 11, 15, 5, 31, 138 + BUS_MSTOP(8, BIT(6)), 1), 139 + DEF_MOD_MUX_EXTERNAL("gbeth_1_clk_tx_180_i", CLK_SMUX2_GBE1_TXCLK, 12, 0, 6, 0, 140 + BUS_MSTOP(8, BIT(6)), 1), 141 + DEF_MOD_MUX_EXTERNAL("gbeth_1_clk_rx_180_i", CLK_SMUX2_GBE1_RXCLK, 12, 1, 6, 1, 142 + BUS_MSTOP(8, BIT(6)), 1), 143 + DEF_MOD("gbeth_1_aclk_csr_i", CLK_PLLDTY_DIV8, 12, 2, 6, 2, 144 + BUS_MSTOP(8, BIT(6))), 145 + DEF_MOD("gbeth_1_aclk_i", CLK_PLLDTY_DIV8, 12, 3, 6, 3, 146 + BUS_MSTOP(8, BIT(6))), 163 147 }; 164 148 165 149 static const struct rzv2h_reset r9a09g056_resets[] __initconst = { ··· 194 130 DEF_RST(10, 7, 4, 24), /* SDHI_0_IXRST */ 195 131 DEF_RST(10, 8, 4, 25), /* SDHI_1_IXRST */ 196 132 DEF_RST(10, 9, 4, 26), /* SDHI_2_IXRST */ 133 + DEF_RST(11, 0, 5, 1), /* GBETH_0_ARESETN_I */ 134 + DEF_RST(11, 1, 5, 2), /* GBETH_1_ARESETN_I */ 197 135 }; 198 136 199 137 const struct rzv2h_cpg_info r9a09g056_cpg_info __initconst = {