@@ -364,6 +364,21 @@ static SUNXI_CCU_M_DATA_WITH_MUX(apb1_clk, "apb1", apb1_parents, 0x524,
364
364
24 , 3 , /* mux */
365
365
0 ) ;
366
366
367
+ static const struct clk_parent_data mbus_parents [] = {
368
+ { .hw = & pll_ddr_clk .common .hw },
369
+ { .hw = & pll_periph1_600M_clk .hw },
370
+ { .hw = & pll_periph1_480M_clk .common .hw },
371
+ { .hw = & pll_periph1_400M_clk .hw },
372
+ { .hw = & pll_periph1_150M_clk .hw },
373
+ { .fw_name = "hosc" },
374
+ };
375
+ static SUNXI_CCU_MP_DATA_WITH_MUX_GATE_FEAT (mbus_clk , "mbus ", mbus_parents ,
376
+ 0x540 ,
377
+ 0 , 5 , /* M */
378
+ 0 , 0 , /* no P */
379
+ 24 , 3 , /* mux */
380
+ BIT (31 ), /* gate */
381
+ 0 , CCU_FEATURE_UPDATE_BIT );
367
382
368
383
/**************************************************************************
369
384
* mod clocks *
@@ -423,6 +438,18 @@ static SUNXI_CCU_M_HW_WITH_MUX_GATE(gpu_clk, "gpu", gpu_parents, 0x670,
423
438
BIT (31 ), /* gate */
424
439
CLK_SET_RATE_PARENT );
425
440
441
+ static const struct clk_parent_data ce_parents [] = {
442
+ { .fw_name = "hosc" },
443
+ { .hw = & pll_periph0_480M_clk .common .hw },
444
+ { .hw = & pll_periph0_400M_clk .hw },
445
+ { .hw = & pll_periph0_300M_clk .hw },
446
+ };
447
+ static SUNXI_CCU_M_DATA_WITH_MUX_GATE (ce_clk , "ce ", ce_parents , 0x680 ,
448
+ 0 , 5 , /* M */
449
+ 24 , 3 , /* mux */
450
+ BIT (31 ), /* gate */
451
+ 0 );
452
+
426
453
static const struct clk_hw * ve_parents [] = {
427
454
& pll_ve_clk .common .hw ,
428
455
& pll_periph0_480M_clk .common .hw ,
@@ -435,6 +462,65 @@ static SUNXI_CCU_M_HW_WITH_MUX_GATE(ve_clk, "ve", ve_parents, 0x690,
435
462
BIT (31 ), /* gate */
436
463
CLK_SET_RATE_PARENT );
437
464
465
+ static const struct clk_parent_data hstimer_parents [] = {
466
+ { .fw_name = "hosc" },
467
+ { .fw_name = "iosc" },
468
+ { .fw_name = "losc" },
469
+ { .hw = & pll_periph0_200M_clk .hw },
470
+ };
471
+ static SUNXI_CCU_MP_DATA_WITH_MUX_GATE (hstimer0_clk , "hstimer0 ",
472
+ hstimer_parents , 0x730 ,
473
+ 0 , 0 , /* M */
474
+ 0 , 3 , /* P */
475
+ 24 , 3 , /* mux */
476
+ BIT (31 ), /* gate */
477
+ 0 );
478
+
479
+ static SUNXI_CCU_MP_DATA_WITH_MUX_GATE (hstimer1_clk , "hstimer1 ",
480
+ hstimer_parents ,
481
+ 0x734 ,
482
+ 0 , 0 , /* M */
483
+ 0 , 3 , /* P */
484
+ 24 , 3 , /* mux */
485
+ BIT (31 ), /* gate */
486
+ 0 );
487
+
488
+ static SUNXI_CCU_MP_DATA_WITH_MUX_GATE (hstimer2_clk , "hstimer2 ",
489
+ hstimer_parents ,
490
+ 0x738 ,
491
+ 0 , 0 , /* M */
492
+ 0 , 3 , /* P */
493
+ 24 , 3 , /* mux */
494
+ BIT (31 ), /* gate */
495
+ 0 );
496
+
497
+ static SUNXI_CCU_MP_DATA_WITH_MUX_GATE (hstimer3_clk , "hstimer3 ",
498
+ hstimer_parents ,
499
+ 0x73c ,
500
+ 0 , 0 , /* M */
501
+ 0 , 3 , /* P */
502
+ 24 , 3 , /* mux */
503
+ BIT (31 ), /* gate */
504
+ 0 );
505
+
506
+ static SUNXI_CCU_MP_DATA_WITH_MUX_GATE (hstimer4_clk , "hstimer4 ",
507
+ hstimer_parents ,
508
+ 0x740 ,
509
+ 0 , 0 , /* M */
510
+ 0 , 3 , /* P */
511
+ 24 , 3 , /* mux */
512
+ BIT (31 ), /* gate */
513
+ 0 );
514
+
515
+ static SUNXI_CCU_MP_DATA_WITH_MUX_GATE (hstimer5_clk , "hstimer5 ",
516
+ hstimer_parents ,
517
+ 0x744 ,
518
+ 0 , 0 , /* M */
519
+ 0 , 3 , /* P */
520
+ 24 , 3 , /* mux */
521
+ BIT (31 ), /* gate */
522
+ 0 );
523
+
438
524
static const struct clk_parent_data iommu_parents [] = {
439
525
{ .hw = & pll_periph0_600M_clk .hw },
440
526
{ .hw = & pll_ddr_clk .common .hw },
@@ -453,6 +539,34 @@ static SUNXI_CCU_MP_DATA_WITH_MUX_GATE_FEAT(iommu_clk, "iommu", iommu_parents,
453
539
CLK_SET_RATE_PARENT ,
454
540
CCU_FEATURE_UPDATE_BIT );
455
541
542
+ static const struct clk_parent_data dram_parents [] = {
543
+ { .hw = & pll_ddr_clk .common .hw },
544
+ { .hw = & pll_periph0_600M_clk .hw },
545
+ { .hw = & pll_periph0_480M_clk .common .hw },
546
+ { .hw = & pll_periph0_400M_clk .hw },
547
+ { .hw = & pll_periph0_150M_clk .hw },
548
+ };
549
+ static SUNXI_CCU_MP_DATA_WITH_MUX_GATE_FEAT (dram_clk , "dram ", dram_parents ,
550
+ 0x800 ,
551
+ 0 , 5 , /* M */
552
+ 0 , 0 , /* no P */
553
+ 24 , 3 , /* mux */
554
+ BIT (31 ), /* gate */
555
+ CLK_IS_CRITICAL ,
556
+ CCU_FEATURE_UPDATE_BIT ) ;
557
+
558
+ static const struct clk_parent_data losc_hosc_parents [] = {
559
+ { .fw_name = "hosc" },
560
+ { .fw_name = "losc" },
561
+ };
562
+
563
+ static SUNXI_CCU_M_DATA_WITH_MUX_GATE (pcie_aux_clk , "pcie-aux" ,
564
+ losc_hosc_parents , 0xaa0 ,
565
+ 0 , 5 , /* M */
566
+ 24 , 1 , /* mux */
567
+ BIT (31 ), /* gate */
568
+ 0 );
569
+
456
570
static SUNXI_CCU_GATE_DATA (hdmi_24M_clk , "hdmi-24M" , osc24M , 0xb04 , BIT (31 ), 0 );
457
571
458
572
static SUNXI_CCU_GATE_HWS_WITH_PREDIV (hdmi_cec_32k_clk , "hdmi-cec-32k" ,
@@ -596,12 +710,22 @@ static struct ccu_common *sun55i_a523_ccu_clks[] = {
596
710
& ahb_clk .common ,
597
711
& apb0_clk .common ,
598
712
& apb1_clk .common ,
713
+ & mbus_clk .common ,
599
714
& de_clk .common ,
600
715
& di_clk .common ,
601
716
& g2d_clk .common ,
602
717
& gpu_clk .common ,
718
+ & ce_clk .common ,
603
719
& ve_clk .common ,
720
+ & hstimer0_clk .common ,
721
+ & hstimer1_clk .common ,
722
+ & hstimer2_clk .common ,
723
+ & hstimer3_clk .common ,
724
+ & hstimer4_clk .common ,
725
+ & hstimer5_clk .common ,
604
726
& iommu_clk .common ,
727
+ & dram_clk .common ,
728
+ & pcie_aux_clk .common ,
605
729
& hdmi_24M_clk .common ,
606
730
& hdmi_cec_32k_clk .common ,
607
731
& hdmi_cec_clk .common ,
@@ -662,11 +786,22 @@ static struct clk_hw_onecell_data sun55i_a523_hw_clks = {
662
786
[CLK_AHB ] = & ahb_clk .common .hw ,
663
787
[CLK_APB0 ] = & apb0_clk .common .hw ,
664
788
[CLK_APB1 ] = & apb1_clk .common .hw ,
789
+ [CLK_MBUS ] = & mbus_clk .common .hw ,
665
790
[CLK_DE ] = & de_clk .common .hw ,
666
791
[CLK_DI ] = & di_clk .common .hw ,
667
792
[CLK_G2D ] = & g2d_clk .common .hw ,
668
793
[CLK_GPU ] = & gpu_clk .common .hw ,
794
+ [CLK_CE ] = & ce_clk .common .hw ,
669
795
[CLK_VE ] = & ve_clk .common .hw ,
796
+ [CLK_HSTIMER0 ] = & hstimer0_clk .common .hw ,
797
+ [CLK_HSTIMER1 ] = & hstimer1_clk .common .hw ,
798
+ [CLK_HSTIMER2 ] = & hstimer2_clk .common .hw ,
799
+ [CLK_HSTIMER3 ] = & hstimer3_clk .common .hw ,
800
+ [CLK_HSTIMER4 ] = & hstimer4_clk .common .hw ,
801
+ [CLK_HSTIMER5 ] = & hstimer5_clk .common .hw ,
802
+ [CLK_IOMMU ] = & iommu_clk .common .hw ,
803
+ [CLK_DRAM ] = & dram_clk .common .hw ,
804
+ [CLK_PCIE_AUX ] = & pcie_aux_clk .common .hw ,
670
805
[CLK_HDMI_24M ] = & hdmi_24M_clk .common .hw ,
671
806
[CLK_HDMI_CEC_32K ] = & hdmi_cec_32k_clk .common .hw ,
672
807
[CLK_HDMI_CEC ] = & hdmi_cec_clk .common .hw ,
0 commit comments