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: r9a09g057: 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/20250509160121.331073-3-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
598b2a06 899e7ede

+71
+64
drivers/clk/renesas/r9a09g057-cpg.c
··· 29 29 CLK_PLLDTY, 30 30 CLK_PLLCA55, 31 31 CLK_PLLVDO, 32 + CLK_PLLETH, 32 33 CLK_PLLGPU, 33 34 34 35 /* Internal Core Clocks */ ··· 50 49 CLK_PLLVDO_CRU1, 51 50 CLK_PLLVDO_CRU2, 52 51 CLK_PLLVDO_CRU3, 52 + CLK_PLLETH_DIV_250_FIX, 53 + CLK_PLLETH_DIV_125_FIX, 54 + CLK_CSDIV_PLLETH_GBE0, 55 + CLK_CSDIV_PLLETH_GBE1, 56 + CLK_SMUX2_GBE0_TXCLK, 57 + CLK_SMUX2_GBE0_RXCLK, 58 + CLK_SMUX2_GBE1_TXCLK, 59 + CLK_SMUX2_GBE1_RXCLK, 53 60 CLK_PLLGPU_GEAR, 54 61 55 62 /* Module Clocks */ ··· 87 78 {0, 0}, 88 79 }; 89 80 81 + static const struct clk_div_table dtable_2_100[] = { 82 + {0, 2}, 83 + {1, 10}, 84 + {2, 100}, 85 + {0, 0}, 86 + }; 87 + 88 + /* Mux clock tables */ 89 + static const char * const smux2_gbe0_rxclk[] = { ".plleth_gbe0", "et0_rxclk" }; 90 + static const char * const smux2_gbe0_txclk[] = { ".plleth_gbe0", "et0_txclk" }; 91 + static const char * const smux2_gbe1_rxclk[] = { ".plleth_gbe1", "et1_rxclk" }; 92 + static const char * const smux2_gbe1_txclk[] = { ".plleth_gbe1", "et1_txclk" }; 93 + 90 94 static const struct cpg_core_clk r9a09g057_core_clks[] __initconst = { 91 95 /* External Clock Inputs */ 92 96 DEF_INPUT("audio_extal", CLK_AUDIO_EXTAL), ··· 112 90 DEF_FIXED(".plldty", CLK_PLLDTY, CLK_QEXTAL, 200, 3), 113 91 DEF_PLL(".pllca55", CLK_PLLCA55, CLK_QEXTAL, PLLCA55), 114 92 DEF_FIXED(".pllvdo", CLK_PLLVDO, CLK_QEXTAL, 105, 2), 93 + DEF_FIXED(".plleth", CLK_PLLETH, CLK_QEXTAL, 125, 3), 115 94 DEF_PLL(".pllgpu", CLK_PLLGPU, CLK_QEXTAL, PLLGPU), 116 95 117 96 /* Internal Core Clocks */ ··· 138 115 DEF_DDIV(".pllvdo_cru2", CLK_PLLVDO_CRU2, CLK_PLLVDO, CDDIV4_DIVCTL1, dtable_2_4), 139 116 DEF_DDIV(".pllvdo_cru3", CLK_PLLVDO_CRU3, CLK_PLLVDO, CDDIV4_DIVCTL2, dtable_2_4), 140 117 118 + DEF_FIXED(".plleth_250_fix", CLK_PLLETH_DIV_250_FIX, CLK_PLLETH, 1, 4), 119 + DEF_FIXED(".plleth_125_fix", CLK_PLLETH_DIV_125_FIX, CLK_PLLETH_DIV_250_FIX, 1, 2), 120 + DEF_CSDIV(".plleth_gbe0", CLK_CSDIV_PLLETH_GBE0, 121 + CLK_PLLETH_DIV_250_FIX, CSDIV0_DIVCTL0, dtable_2_100), 122 + DEF_CSDIV(".plleth_gbe1", CLK_CSDIV_PLLETH_GBE1, 123 + CLK_PLLETH_DIV_250_FIX, CSDIV0_DIVCTL1, dtable_2_100), 124 + DEF_SMUX(".smux2_gbe0_txclk", CLK_SMUX2_GBE0_TXCLK, SSEL0_SELCTL2, smux2_gbe0_txclk), 125 + DEF_SMUX(".smux2_gbe0_rxclk", CLK_SMUX2_GBE0_RXCLK, SSEL0_SELCTL3, smux2_gbe0_rxclk), 126 + DEF_SMUX(".smux2_gbe1_txclk", CLK_SMUX2_GBE1_TXCLK, SSEL1_SELCTL0, smux2_gbe1_txclk), 127 + DEF_SMUX(".smux2_gbe1_rxclk", CLK_SMUX2_GBE1_RXCLK, SSEL1_SELCTL1, smux2_gbe1_rxclk), 128 + 141 129 DEF_DDIV(".pllgpu_gear", CLK_PLLGPU_GEAR, CLK_PLLGPU, CDDIV3_DIVCTL1, dtable_2_64), 142 130 143 131 /* Core Clocks */ ··· 164 130 DEF_FIXED("iotop_0_shclk", R9A09G057_IOTOP_0_SHCLK, CLK_PLLCM33_DIV16, 1, 1), 165 131 DEF_FIXED("usb2_0_clk_core0", R9A09G057_USB2_0_CLK_CORE0, CLK_QEXTAL, 1, 1), 166 132 DEF_FIXED("usb2_0_clk_core1", R9A09G057_USB2_0_CLK_CORE1, CLK_QEXTAL, 1, 1), 133 + DEF_FIXED("gbeth_0_clk_ptp_ref_i", R9A09G057_GBETH_0_CLK_PTP_REF_I, 134 + CLK_PLLETH_DIV_125_FIX, 1, 1), 135 + DEF_FIXED("gbeth_1_clk_ptp_ref_i", R9A09G057_GBETH_1_CLK_PTP_REF_I, 136 + CLK_PLLETH_DIV_125_FIX, 1, 1), 167 137 }; 168 138 169 139 static const struct rzv2h_mod_clk r9a09g057_mod_clks[] __initconst = { ··· 271 233 BUS_MSTOP(7, BIT(10))), 272 234 DEF_MOD("usb2_0_pclk_usbtst1", CLK_PLLDTY_ACPU_DIV4, 11, 7, 5, 23, 273 235 BUS_MSTOP(7, BIT(11))), 236 + DEF_MOD_MUX_EXTERNAL("gbeth_0_clk_tx_i", CLK_SMUX2_GBE0_TXCLK, 11, 8, 5, 24, 237 + BUS_MSTOP(8, BIT(5)), 1), 238 + DEF_MOD_MUX_EXTERNAL("gbeth_0_clk_rx_i", CLK_SMUX2_GBE0_RXCLK, 11, 9, 5, 25, 239 + BUS_MSTOP(8, BIT(5)), 1), 240 + DEF_MOD_MUX_EXTERNAL("gbeth_0_clk_tx_180_i", CLK_SMUX2_GBE0_TXCLK, 11, 10, 5, 26, 241 + BUS_MSTOP(8, BIT(5)), 1), 242 + DEF_MOD_MUX_EXTERNAL("gbeth_0_clk_rx_180_i", CLK_SMUX2_GBE0_RXCLK, 11, 11, 5, 27, 243 + BUS_MSTOP(8, BIT(5)), 1), 244 + DEF_MOD("gbeth_0_aclk_csr_i", CLK_PLLDTY_DIV8, 11, 12, 5, 28, 245 + BUS_MSTOP(8, BIT(5))), 246 + DEF_MOD("gbeth_0_aclk_i", CLK_PLLDTY_DIV8, 11, 13, 5, 29, 247 + BUS_MSTOP(8, BIT(5))), 248 + DEF_MOD_MUX_EXTERNAL("gbeth_1_clk_tx_i", CLK_SMUX2_GBE1_TXCLK, 11, 14, 5, 30, 249 + BUS_MSTOP(8, BIT(6)), 1), 250 + DEF_MOD_MUX_EXTERNAL("gbeth_1_clk_rx_i", CLK_SMUX2_GBE1_RXCLK, 11, 15, 5, 31, 251 + BUS_MSTOP(8, BIT(6)), 1), 252 + DEF_MOD_MUX_EXTERNAL("gbeth_1_clk_tx_180_i", CLK_SMUX2_GBE1_TXCLK, 12, 0, 6, 0, 253 + BUS_MSTOP(8, BIT(6)), 1), 254 + DEF_MOD_MUX_EXTERNAL("gbeth_1_clk_rx_180_i", CLK_SMUX2_GBE1_RXCLK, 12, 1, 6, 1, 255 + BUS_MSTOP(8, BIT(6)), 1), 256 + DEF_MOD("gbeth_1_aclk_csr_i", CLK_PLLDTY_DIV8, 12, 2, 6, 2, 257 + BUS_MSTOP(8, BIT(6))), 258 + DEF_MOD("gbeth_1_aclk_i", CLK_PLLDTY_DIV8, 12, 3, 6, 3, 259 + BUS_MSTOP(8, BIT(6))), 274 260 DEF_MOD("cru_0_aclk", CLK_PLLDTY_ACPU_DIV2, 13, 2, 6, 18, 275 261 BUS_MSTOP(9, BIT(4))), 276 262 DEF_MOD_NO_PM("cru_0_vclk", CLK_PLLVDO_CRU0, 13, 3, 6, 19, ··· 366 304 DEF_RST(10, 13, 4, 30), /* USB2_0_U2H1_HRESETN */ 367 305 DEF_RST(10, 14, 4, 31), /* USB2_0_U2P_EXL_SYSRST */ 368 306 DEF_RST(10, 15, 5, 0), /* USB2_0_PRESETN */ 307 + DEF_RST(11, 0, 5, 1), /* GBETH_0_ARESETN_I */ 308 + DEF_RST(11, 1, 5, 2), /* GBETH_1_ARESETN_I */ 369 309 DEF_RST(12, 5, 5, 22), /* CRU_0_PRESETN */ 370 310 DEF_RST(12, 6, 5, 23), /* CRU_0_ARESETN */ 371 311 DEF_RST(12, 7, 5, 24), /* CRU_0_S_RESETN */
+7
drivers/clk/renesas/rzv2h-cpg.h
··· 93 93 .width = (_width), \ 94 94 }) 95 95 96 + #define CPG_SSEL0 (0x300) 96 97 #define CPG_SSEL1 (0x304) 97 98 #define CPG_CDDIV0 (0x400) 98 99 #define CPG_CDDIV1 (0x404) ··· 114 113 #define CDDIV4_DIVCTL1 DDIV_PACK(CPG_CDDIV4, 4, 1, 17) 115 114 #define CDDIV4_DIVCTL2 DDIV_PACK(CPG_CDDIV4, 8, 1, 18) 116 115 116 + #define CSDIV0_DIVCTL0 DDIV_PACK(CPG_CSDIV0, 0, 2, CSDIV_NO_MON) 117 + #define CSDIV0_DIVCTL1 DDIV_PACK(CPG_CSDIV0, 4, 2, CSDIV_NO_MON) 117 118 #define CSDIV0_DIVCTL3 DDIV_PACK_NO_RMW(CPG_CSDIV0, 12, 2, CSDIV_NO_MON) 118 119 120 + #define SSEL0_SELCTL2 SMUX_PACK(CPG_SSEL0, 8, 1) 121 + #define SSEL0_SELCTL3 SMUX_PACK(CPG_SSEL0, 12, 1) 122 + #define SSEL1_SELCTL0 SMUX_PACK(CPG_SSEL1, 0, 1) 123 + #define SSEL1_SELCTL1 SMUX_PACK(CPG_SSEL1, 4, 1) 119 124 #define SSEL1_SELCTL2 SMUX_PACK(CPG_SSEL1, 8, 1) 120 125 #define SSEL1_SELCTL3 SMUX_PACK(CPG_SSEL1, 12, 1) 121 126