@@ -113,6 +113,7 @@ static const char * const sensor_clk_mux_p[] = { "hosc", "bisp_clk" };
113
113
static const char * const sd_clk_mux_p [] = { "dev_clk" , "nand_pll_clk" };
114
114
static const char * const pwm_clk_mux_p [] = { "losc" , "hosc" };
115
115
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" };
116
117
static const char * const uart_clk_mux_p [] = { "hosc" , "dev_pll_clk" };
117
118
static const char * const de_clk_mux_p [] = { "display_pll_clk" , "dev_clk" };
118
119
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);
194
195
195
196
/* divider clocks */
196
197
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 );
198
199
static OWL_DIVIDER (rmii_ref_clk , "rmii_ref_clk ", "ethernet_pll_clk ", CMU_ETHERNETPLL, 1, 1, rmii_ref_div_table, 0, 0);
199
200
200
201
/* factor clocks */
201
202
static OWL_FACTOR (de1_clk , "de_clk1" , "de_clk" , CMU_DECLK , 0 , 4 , de_factor_table , 0 , 0 );
202
203
static OWL_FACTOR (de2_clk , "de_clk2 ", "de_clk ", CMU_DECLK, 4, 4, de_factor_table, 0, 0);
203
204
204
205
/* 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
+
205
212
static OWL_COMP_DIV (ahbprediv_clk , "ahbprediv_clk ", ahbprediv_clk_mux_p ,
206
213
OWL_MUX_HW (CMU_BUSCLK1 , 8 , 3 ),
207
214
{ 0 },
@@ -317,6 +324,10 @@ static OWL_COMP_FIXED_FACTOR(i2c3_clk, "i2c3_clk", "ethernet_pll_clk",
317
324
OWL_GATE_HW (CMU_DEVCLKEN1 , 31 , 0 ),
318
325
1 , 5 , 0 );
319
326
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
+
320
331
static OWL_COMP_DIV (uart0_clk , "uart0_clk" , uart_clk_mux_p ,
321
332
OWL_MUX_HW (CMU_UART0CLK , 16 , 1 ),
322
333
OWL_GATE_HW (CMU_DEVCLKEN1 , 6 , 0 ),
@@ -451,6 +462,8 @@ static struct owl_clk_common *s500_clks[] = {
451
462
& apb_clk .common ,
452
463
& dmac_clk .common ,
453
464
& gpio_clk .common ,
465
+ & nic_clk .common ,
466
+ & ethernet_clk .common ,
454
467
};
455
468
456
469
static struct clk_hw_onecell_data s500_hw_clks = {
@@ -510,6 +523,8 @@ static struct clk_hw_onecell_data s500_hw_clks = {
510
523
[CLK_APB ] = & apb_clk .common .hw ,
511
524
[CLK_DMAC ] = & dmac_clk .common .hw ,
512
525
[CLK_GPIO ] = & gpio_clk .common .hw ,
526
+ [CLK_NIC ] = & nic_clk .common .hw ,
527
+ [CLK_ETHERNET ] = & ethernet_clk .common .hw ,
513
528
},
514
529
.num = CLK_NR_CLKS ,
515
530
};
0 commit comments