Skip to content

Commit db01868

Browse files
cristiccbebarino
authored andcommitted
clk: actions: Add NIC and ETHERNET clock support for Actions S500 SoC
Add support for the missing NIC and ETHERNET clocks in the Actions Semi Owl S500 SoC clock driver. Additionally, change APB clock parent from AHB to the newly added NIC. Signed-off-by: Cristian Ciocaltea <[email protected]> Reviewed-by: Manivannan Sadhasivam <[email protected]> Link: https://lore.kernel.org/r/d62e4f1f85c5cef05be14d9e8143e88bbddd2e0f.1623354574.git.cristian.ciocaltea@gmail.com Signed-off-by: Stephen Boyd <[email protected]>
1 parent a4acefd commit db01868

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

drivers/clk/actions/owl-s500.c

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ static const char * const sensor_clk_mux_p[] = { "hosc", "bisp_clk" };
113113
static const char * const sd_clk_mux_p[] = { "dev_clk", "nand_pll_clk" };
114114
static const char * const pwm_clk_mux_p[] = { "losc", "hosc" };
115115
static const char * const ahbprediv_clk_mux_p[] = { "dev_clk", "display_pll_clk", "nand_pll_clk", "ddr_pll_clk" };
116+
static const char * const nic_clk_mux_p[] = { "dev_clk", "display_pll_clk", "nand_pll_clk", "ddr_pll_clk" };
116117
static const char * const uart_clk_mux_p[] = { "hosc", "dev_pll_clk" };
117118
static const char * const de_clk_mux_p[] = { "display_pll_clk", "dev_clk" };
118119
static const char * const i2s_clk_mux_p[] = { "audio_pll_clk" };
@@ -194,14 +195,20 @@ static OWL_GATE(hdmi_clk, "hdmi_clk", "hosc", CMU_DEVCLKEN1, 3, 0, 0);
194195

195196
/* divider clocks */
196197
static OWL_DIVIDER(h_clk, "h_clk", "ahbprediv_clk", CMU_BUSCLK1, 2, 2, NULL, 0, 0);
197-
static OWL_DIVIDER(apb_clk, "apb_clk", "ahb_clk", CMU_BUSCLK1, 14, 2, NULL, 0, 0);
198+
static OWL_DIVIDER(apb_clk, "apb_clk", "nic_clk", CMU_BUSCLK1, 14, 2, NULL, 0, 0);
198199
static OWL_DIVIDER(rmii_ref_clk, "rmii_ref_clk", "ethernet_pll_clk", CMU_ETHERNETPLL, 1, 1, rmii_ref_div_table, 0, 0);
199200

200201
/* factor clocks */
201202
static OWL_FACTOR(de1_clk, "de_clk1", "de_clk", CMU_DECLK, 0, 4, de_factor_table, 0, 0);
202203
static OWL_FACTOR(de2_clk, "de_clk2", "de_clk", CMU_DECLK, 4, 4, de_factor_table, 0, 0);
203204

204205
/* composite clocks */
206+
static OWL_COMP_DIV(nic_clk, "nic_clk", nic_clk_mux_p,
207+
OWL_MUX_HW(CMU_BUSCLK1, 4, 3),
208+
{ 0 },
209+
OWL_DIVIDER_HW(CMU_BUSCLK1, 16, 2, 0, NULL),
210+
0);
211+
205212
static OWL_COMP_DIV(ahbprediv_clk, "ahbprediv_clk", ahbprediv_clk_mux_p,
206213
OWL_MUX_HW(CMU_BUSCLK1, 8, 3),
207214
{ 0 },
@@ -317,6 +324,10 @@ static OWL_COMP_FIXED_FACTOR(i2c3_clk, "i2c3_clk", "ethernet_pll_clk",
317324
OWL_GATE_HW(CMU_DEVCLKEN1, 31, 0),
318325
1, 5, 0);
319326

327+
static OWL_COMP_FIXED_FACTOR(ethernet_clk, "ethernet_clk", "ethernet_pll_clk",
328+
OWL_GATE_HW(CMU_DEVCLKEN1, 22, 0),
329+
1, 20, 0);
330+
320331
static OWL_COMP_DIV(uart0_clk, "uart0_clk", uart_clk_mux_p,
321332
OWL_MUX_HW(CMU_UART0CLK, 16, 1),
322333
OWL_GATE_HW(CMU_DEVCLKEN1, 6, 0),
@@ -451,6 +462,8 @@ static struct owl_clk_common *s500_clks[] = {
451462
&apb_clk.common,
452463
&dmac_clk.common,
453464
&gpio_clk.common,
465+
&nic_clk.common,
466+
&ethernet_clk.common,
454467
};
455468

456469
static struct clk_hw_onecell_data s500_hw_clks = {
@@ -510,6 +523,8 @@ static struct clk_hw_onecell_data s500_hw_clks = {
510523
[CLK_APB] = &apb_clk.common.hw,
511524
[CLK_DMAC] = &dmac_clk.common.hw,
512525
[CLK_GPIO] = &gpio_clk.common.hw,
526+
[CLK_NIC] = &nic_clk.common.hw,
527+
[CLK_ETHERNET] = &ethernet_clk.common.hw,
513528
},
514529
.num = CLK_NR_CLKS,
515530
};

0 commit comments

Comments
 (0)