@@ -492,6 +492,103 @@ static const struct samsung_cmu_info apm_cmu_info __initconst = {
492
492
.clk_name = "dout_clkcmu_apm_bus" ,
493
493
};
494
494
495
+ /* ---- CMU_CMGP ------------------------------------------------------------ */
496
+
497
+ /* Register Offset definitions for CMU_CMGP (0x11c00000) */
498
+ #define CLK_CON_MUX_CLK_CMGP_ADC 0x1000
499
+ #define CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP0 0x1004
500
+ #define CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP1 0x1008
501
+ #define CLK_CON_DIV_DIV_CLK_CMGP_ADC 0x1800
502
+ #define CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP0 0x1804
503
+ #define CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP1 0x1808
504
+ #define CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S0 0x200c
505
+ #define CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S1 0x2010
506
+ #define CLK_CON_GAT_GOUT_CMGP_GPIO_PCLK 0x2018
507
+ #define CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_IPCLK 0x2044
508
+ #define CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_PCLK 0x2048
509
+ #define CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_IPCLK 0x204c
510
+ #define CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_PCLK 0x2050
511
+
512
+ static const unsigned long cmgp_clk_regs [] __initconst = {
513
+ CLK_CON_MUX_CLK_CMGP_ADC ,
514
+ CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP0 ,
515
+ CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP1 ,
516
+ CLK_CON_DIV_DIV_CLK_CMGP_ADC ,
517
+ CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP0 ,
518
+ CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP1 ,
519
+ CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S0 ,
520
+ CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S1 ,
521
+ CLK_CON_GAT_GOUT_CMGP_GPIO_PCLK ,
522
+ CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_IPCLK ,
523
+ CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_PCLK ,
524
+ CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_IPCLK ,
525
+ CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_PCLK ,
526
+ };
527
+
528
+ /* List of parent clocks for Muxes in CMU_CMGP */
529
+ PNAME (mout_cmgp_usi0_p ) = { "clk_rco_cmgp" , "gout_clkcmu_cmgp_bus" };
530
+ PNAME (mout_cmgp_usi1_p ) = { "clk_rco_cmgp" , "gout_clkcmu_cmgp_bus" };
531
+ PNAME (mout_cmgp_adc_p ) = { "oscclk" , "dout_cmgp_adc" };
532
+
533
+ static const struct samsung_fixed_rate_clock cmgp_fixed_clks [] __initconst = {
534
+ FRATE (CLK_RCO_CMGP , "clk_rco_cmgp" , NULL , 0 , 49152000 ),
535
+ };
536
+
537
+ static const struct samsung_mux_clock cmgp_mux_clks [] __initconst = {
538
+ MUX (CLK_MOUT_CMGP_ADC , "mout_cmgp_adc" , mout_cmgp_adc_p ,
539
+ CLK_CON_MUX_CLK_CMGP_ADC , 0 , 1 ),
540
+ MUX (CLK_MOUT_CMGP_USI0 , "mout_cmgp_usi0" , mout_cmgp_usi0_p ,
541
+ CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP0 , 0 , 1 ),
542
+ MUX (CLK_MOUT_CMGP_USI1 , "mout_cmgp_usi1" , mout_cmgp_usi1_p ,
543
+ CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP1 , 0 , 1 ),
544
+ };
545
+
546
+ static const struct samsung_div_clock cmgp_div_clks [] __initconst = {
547
+ DIV (CLK_DOUT_CMGP_ADC , "dout_cmgp_adc" , "gout_clkcmu_cmgp_bus" ,
548
+ CLK_CON_DIV_DIV_CLK_CMGP_ADC , 0 , 4 ),
549
+ DIV (CLK_DOUT_CMGP_USI0 , "dout_cmgp_usi0" , "mout_cmgp_usi0" ,
550
+ CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP0 , 0 , 5 ),
551
+ DIV (CLK_DOUT_CMGP_USI1 , "dout_cmgp_usi1" , "mout_cmgp_usi1" ,
552
+ CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP1 , 0 , 5 ),
553
+ };
554
+
555
+ static const struct samsung_gate_clock cmgp_gate_clks [] __initconst = {
556
+ GATE (CLK_GOUT_CMGP_ADC_S0_PCLK , "gout_adc_s0_pclk" ,
557
+ "gout_clkcmu_cmgp_bus" ,
558
+ CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S0 , 21 , 0 , 0 ),
559
+ GATE (CLK_GOUT_CMGP_ADC_S1_PCLK , "gout_adc_s1_pclk" ,
560
+ "gout_clkcmu_cmgp_bus" ,
561
+ CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S1 , 21 , 0 , 0 ),
562
+ GATE (CLK_GOUT_CMGP_GPIO_PCLK , "gout_gpio_cmgp_pclk" ,
563
+ "gout_clkcmu_cmgp_bus" ,
564
+ CLK_CON_GAT_GOUT_CMGP_GPIO_PCLK , 21 , 0 , 0 ),
565
+ GATE (CLK_GOUT_CMGP_USI0_IPCLK , "gout_cmgp_usi0_ipclk" , "dout_cmgp_usi0" ,
566
+ CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_IPCLK , 21 , 0 , 0 ),
567
+ GATE (CLK_GOUT_CMGP_USI0_PCLK , "gout_cmgp_usi0_pclk" ,
568
+ "gout_clkcmu_cmgp_bus" ,
569
+ CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_PCLK , 21 , 0 , 0 ),
570
+ GATE (CLK_GOUT_CMGP_USI1_IPCLK , "gout_cmgp_usi1_ipclk" , "dout_cmgp_usi1" ,
571
+ CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_IPCLK , 21 , 0 , 0 ),
572
+ GATE (CLK_GOUT_CMGP_USI1_PCLK , "gout_cmgp_usi1_pclk" ,
573
+ "gout_clkcmu_cmgp_bus" ,
574
+ CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_PCLK , 21 , 0 , 0 ),
575
+ };
576
+
577
+ static const struct samsung_cmu_info cmgp_cmu_info __initconst = {
578
+ .mux_clks = cmgp_mux_clks ,
579
+ .nr_mux_clks = ARRAY_SIZE (cmgp_mux_clks ),
580
+ .div_clks = cmgp_div_clks ,
581
+ .nr_div_clks = ARRAY_SIZE (cmgp_div_clks ),
582
+ .gate_clks = cmgp_gate_clks ,
583
+ .nr_gate_clks = ARRAY_SIZE (cmgp_gate_clks ),
584
+ .fixed_clks = cmgp_fixed_clks ,
585
+ .nr_fixed_clks = ARRAY_SIZE (cmgp_fixed_clks ),
586
+ .nr_clk_ids = CMGP_NR_CLK ,
587
+ .clk_regs = cmgp_clk_regs ,
588
+ .nr_clk_regs = ARRAY_SIZE (cmgp_clk_regs ),
589
+ .clk_name = "gout_clkcmu_cmgp_bus" ,
590
+ };
591
+
495
592
/* ---- CMU_HSI ------------------------------------------------------------- */
496
593
497
594
/* Register Offset definitions for CMU_HSI (0x13400000) */
@@ -943,6 +1040,9 @@ static const struct of_device_id exynos850_cmu_of_match[] = {
943
1040
{
944
1041
.compatible = "samsung,exynos850-cmu-apm" ,
945
1042
.data = & apm_cmu_info ,
1043
+ }, {
1044
+ .compatible = "samsung,exynos850-cmu-cmgp" ,
1045
+ .data = & cmgp_cmu_info ,
946
1046
}, {
947
1047
.compatible = "samsung,exynos850-cmu-hsi" ,
948
1048
.data = & hsi_cmu_info ,
0 commit comments