Skip to content

Commit f294a0e

Browse files
prabhakarladgeertu
authored andcommitted
clk: renesas: r9a07g044: Add clock and reset entries for SPI Multi I/O Bus Controller
Add clock and reset entries for SPI Multi I/O Bus Controller. Signed-off-by: Lad Prabhakar <[email protected]> Reviewed-by: Biju Das <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Geert Uytterhoeven <[email protected]>
1 parent cc3e8f9 commit f294a0e

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

drivers/clk/renesas/r9a07g044-cpg.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,14 @@ enum clk_ids {
2929
CLK_PLL2_DIV16,
3030
CLK_PLL2_DIV20,
3131
CLK_PLL3,
32+
CLK_PLL3_400,
33+
CLK_PLL3_533,
3234
CLK_PLL3_DIV2,
3335
CLK_PLL3_DIV2_4,
3436
CLK_PLL3_DIV2_4_2,
3537
CLK_PLL3_DIV4,
38+
CLK_SEL_PLL3_3,
39+
CLK_DIV_PLL3_C,
3640
CLK_PLL4,
3741
CLK_PLL5,
3842
CLK_PLL5_FOUT3,
@@ -56,6 +60,7 @@ static const struct clk_div_table dtable_1_32[] = {
5660
};
5761

5862
/* Mux clock tables */
63+
static const char * const sel_pll3_3[] = { ".pll3_533", ".pll3_400" };
5964
static const char * const sel_pll6_2[] = { ".pll6_250", ".pll5_250" };
6065

6166
static const struct cpg_core_clk r9a07g044_core_clks[] __initconst = {
@@ -68,6 +73,8 @@ static const struct cpg_core_clk r9a07g044_core_clks[] __initconst = {
6873
DEF_SAMPLL(".pll1", CLK_PLL1, CLK_EXTAL, PLL146_CONF(0)),
6974
DEF_FIXED(".pll2", CLK_PLL2, CLK_EXTAL, 133, 2),
7075
DEF_FIXED(".pll3", CLK_PLL3, CLK_EXTAL, 133, 2),
76+
DEF_FIXED(".pll3_400", CLK_PLL3_400, CLK_PLL3, 1, 4),
77+
DEF_FIXED(".pll3_533", CLK_PLL3_533, CLK_PLL3, 1, 3),
7178

7279
DEF_FIXED(".pll5", CLK_PLL5, CLK_EXTAL, 125, 1),
7380
DEF_FIXED(".pll5_fout3", CLK_PLL5_FOUT3, CLK_PLL5, 1, 6),
@@ -82,6 +89,10 @@ static const struct cpg_core_clk r9a07g044_core_clks[] __initconst = {
8289
DEF_FIXED(".pll3_div2_4", CLK_PLL3_DIV2_4, CLK_PLL3_DIV2, 1, 4),
8390
DEF_FIXED(".pll3_div2_4_2", CLK_PLL3_DIV2_4_2, CLK_PLL3_DIV2_4, 1, 2),
8491
DEF_FIXED(".pll3_div4", CLK_PLL3_DIV4, CLK_PLL3, 1, 4),
92+
DEF_MUX(".sel_pll3_3", CLK_SEL_PLL3_3, SEL_PLL3_3,
93+
sel_pll3_3, ARRAY_SIZE(sel_pll3_3), 0, CLK_MUX_READ_ONLY),
94+
DEF_DIV("divpl3c", CLK_DIV_PLL3_C, CLK_SEL_PLL3_3,
95+
DIVPL3C, dtable_1_32, CLK_DIVIDER_HIWORD_MASK),
8596

8697
DEF_FIXED(".pll5_250", CLK_PLL5_250, CLK_PLL5_FOUT3, 1, 2),
8798
DEF_FIXED(".pll6_250", CLK_PLL6_250, CLK_PLL6, 1, 2),
@@ -101,6 +112,8 @@ static const struct cpg_core_clk r9a07g044_core_clks[] __initconst = {
101112
DEF_FIXED("ZT", R9A07G044_CLK_ZT, CLK_PLL3_DIV2_4_2, 1, 1),
102113
DEF_MUX("HP", R9A07G044_CLK_HP, SEL_PLL6_2,
103114
sel_pll6_2, ARRAY_SIZE(sel_pll6_2), 0, CLK_MUX_HIWORD_MASK),
115+
DEF_FIXED("SPI0", R9A07G044_CLK_SPI0, CLK_DIV_PLL3_C, 1, 2),
116+
DEF_FIXED("SPI1", R9A07G044_CLK_SPI1, CLK_DIV_PLL3_C, 1, 4),
104117
};
105118

106119
static struct rzg2l_mod_clk r9a07g044_mod_clks[] = {
@@ -114,6 +127,10 @@ static struct rzg2l_mod_clk r9a07g044_mod_clks[] = {
114127
0x52c, 0),
115128
DEF_MOD("dmac_pclk", R9A07G044_DMAC_PCLK, CLK_P1_DIV2,
116129
0x52c, 1),
130+
DEF_MOD("spi_clk2", R9A07G044_SPI_CLK2, R9A07G044_CLK_SPI1,
131+
0x550, 0),
132+
DEF_MOD("spi_clk", R9A07G044_SPI_CLK, R9A07G044_CLK_SPI0,
133+
0x550, 1),
117134
DEF_MOD("ssi0_pclk", R9A07G044_SSI0_PCLK2, R9A07G044_CLK_P0,
118135
0x570, 0),
119136
DEF_MOD("ssi0_sfr", R9A07G044_SSI0_PCLK_SFR, R9A07G044_CLK_P0,
@@ -182,6 +199,7 @@ static struct rzg2l_reset r9a07g044_resets[] = {
182199
DEF_RST(R9A07G044_IA55_RESETN, 0x818, 0),
183200
DEF_RST(R9A07G044_DMAC_ARESETN, 0x82c, 0),
184201
DEF_RST(R9A07G044_DMAC_RST_ASYNC, 0x82c, 1),
202+
DEF_RST(R9A07G044_SPI_RST, 0x850, 0),
185203
DEF_RST(R9A07G044_SSI0_RST_M2_REG, 0x870, 0),
186204
DEF_RST(R9A07G044_SSI1_RST_M2_REG, 0x870, 1),
187205
DEF_RST(R9A07G044_SSI2_RST_M2_REG, 0x870, 2),

drivers/clk/renesas/rzg2l-cpg.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#define CPG_PL2_DDIV (0x204)
1313
#define CPG_PL3A_DDIV (0x208)
14+
#define CPG_PL3_SSEL (0x408)
1415
#define CPG_PL6_ETH_SSEL (0x418)
1516

1617
/* n = 0/1/2 for PLL1/4/6 */
@@ -24,10 +25,12 @@
2425
#define DIVPL2A DDIV_PACK(CPG_PL2_DDIV, 0, 3)
2526
#define DIVPL3A DDIV_PACK(CPG_PL3A_DDIV, 0, 3)
2627
#define DIVPL3B DDIV_PACK(CPG_PL3A_DDIV, 4, 3)
28+
#define DIVPL3C DDIV_PACK(CPG_PL3A_DDIV, 8, 3)
2729

2830
#define SEL_PLL_PACK(offset, bitpos, size) \
2931
(((offset) << 20) | ((bitpos) << 12) | ((size) << 8))
3032

33+
#define SEL_PLL3_3 SEL_PLL_PACK(CPG_PL3_SSEL, 8, 1)
3134
#define SEL_PLL6_2 SEL_PLL_PACK(CPG_PL6_ETH_SSEL, 0, 1)
3235

3336
/**

0 commit comments

Comments
 (0)