@@ -329,6 +329,14 @@ static const struct freq_tbl ftbl_axi_clk_src[] = {
329
329
{ }
330
330
};
331
331
332
+ static const struct freq_tbl ftbl_axi_clk_src_8992 [] = {
333
+ F (75000000 , P_GPLL0 , 8 , 0 , 0 ),
334
+ F (150000000 , P_GPLL0 , 4 , 0 , 0 ),
335
+ F (300000000 , P_GPLL0 , 2 , 0 , 0 ),
336
+ F (404000000 , P_MMPLL1 , 2 , 0 , 0 ),
337
+ { }
338
+ };
339
+
332
340
static struct clk_rcg2 axi_clk_src = {
333
341
.cmd_rcgr = 0x5040 ,
334
342
.hid_width = 5 ,
@@ -349,6 +357,12 @@ static const struct freq_tbl ftbl_csi0_1_2_3_clk_src[] = {
349
357
{ }
350
358
};
351
359
360
+ static const struct freq_tbl ftbl_csi0_1_2_3_clk_src_8992 [] = {
361
+ F (100000000 , P_GPLL0 , 6 , 0 , 0 ),
362
+ F (266670000 , P_MMPLL0 , 3 , 0 , 0 ),
363
+ { }
364
+ };
365
+
352
366
static struct clk_rcg2 csi0_clk_src = {
353
367
.cmd_rcgr = 0x3090 ,
354
368
.hid_width = 5 ,
@@ -375,6 +389,16 @@ static const struct freq_tbl ftbl_vcodec0_clk_src[] = {
375
389
{ }
376
390
};
377
391
392
+ static const struct freq_tbl ftbl_vcodec0_clk_src_8992 [] = {
393
+ F (66670000 , P_GPLL0 , 9 , 0 , 0 ),
394
+ F (100000000 , P_GPLL0 , 6 , 0 , 0 ),
395
+ F (133330000 , P_GPLL0 , 4.5 , 0 , 0 ),
396
+ F (200000000 , P_MMPLL0 , 4 , 0 , 0 ),
397
+ F (320000000 , P_MMPLL0 , 2.5 , 0 , 0 ),
398
+ F (510000000 , P_MMPLL3 , 2 , 0 , 0 ),
399
+ { }
400
+ };
401
+
378
402
static struct clk_rcg2 vcodec0_clk_src = {
379
403
.cmd_rcgr = 0x1000 ,
380
404
.mnd_width = 8 ,
@@ -440,6 +464,16 @@ static const struct freq_tbl ftbl_vfe0_clk_src[] = {
440
464
{ }
441
465
};
442
466
467
+ static const struct freq_tbl ftbl_vfe0_1_clk_src_8992 [] = {
468
+ F (80000000 , P_GPLL0 , 7.5 , 0 , 0 ),
469
+ F (100000000 , P_GPLL0 , 6 , 0 , 0 ),
470
+ F (200000000 , P_GPLL0 , 3 , 0 , 0 ),
471
+ F (320000000 , P_MMPLL0 , 2.5 , 0 , 0 ),
472
+ F (480000000 , P_MMPLL4 , 2 , 0 , 0 ),
473
+ F (600000000 , P_GPLL0 , 1 , 0 , 0 ),
474
+ { }
475
+ };
476
+
443
477
static struct clk_rcg2 vfe0_clk_src = {
444
478
.cmd_rcgr = 0x3600 ,
445
479
.hid_width = 5 ,
@@ -486,6 +520,15 @@ static const struct freq_tbl ftbl_cpp_clk_src[] = {
486
520
{ }
487
521
};
488
522
523
+ static const struct freq_tbl ftbl_cpp_clk_src_8992 [] = {
524
+ F (100000000 , P_GPLL0 , 6 , 0 , 0 ),
525
+ F (200000000 , P_GPLL0 , 3 , 0 , 0 ),
526
+ F (320000000 , P_MMPLL0 , 2.5 , 0 , 0 ),
527
+ F (480000000 , P_MMPLL4 , 2 , 0 , 0 ),
528
+ F (640000000 , P_MMPLL4 , 1.5 , 0 , 0 ),
529
+ { }
530
+ };
531
+
489
532
static struct clk_rcg2 cpp_clk_src = {
490
533
.cmd_rcgr = 0x3640 ,
491
534
.hid_width = 5 ,
@@ -601,6 +644,17 @@ static const struct freq_tbl ftbl_mdp_clk_src[] = {
601
644
{ }
602
645
};
603
646
647
+ static const struct freq_tbl ftbl_mdp_clk_src_8992 [] = {
648
+ F (85710000 , P_GPLL0 , 7 , 0 , 0 ),
649
+ F (171430000 , P_GPLL0 , 3.5 , 0 , 0 ),
650
+ F (200000000 , P_GPLL0 , 3 , 0 , 0 ),
651
+ F (240000000 , P_GPLL0 , 2.5 , 0 , 0 ),
652
+ F (266670000 , P_MMPLL0 , 3 , 0 , 0 ),
653
+ F (320000000 , P_MMPLL0 , 2.5 , 0 , 0 ),
654
+ F (400000000 , P_MMPLL0 , 2 , 0 , 0 ),
655
+ { }
656
+ };
657
+
604
658
static struct clk_rcg2 mdp_clk_src = {
605
659
.cmd_rcgr = 0x2040 ,
606
660
.hid_width = 5 ,
@@ -654,6 +708,16 @@ static const struct freq_tbl ftbl_ocmemnoc_clk_src[] = {
654
708
{ }
655
709
};
656
710
711
+ static const struct freq_tbl ftbl_ocmemnoc_clk_src_8992 [] = {
712
+ F (19200000 , P_XO , 1 , 0 , 0 ),
713
+ F (75000000 , P_GPLL0 , 8 , 0 , 0 ),
714
+ F (100000000 , P_GPLL0 , 6 , 0 , 0 ),
715
+ F (150000000 , P_GPLL0 , 4 , 0 , 0 ),
716
+ F (320000000 , P_MMPLL0 , 2.5 , 0 , 0 ),
717
+ F (400000000 , P_MMPLL0 , 2 , 0 , 0 ),
718
+ { }
719
+ };
720
+
657
721
static struct clk_rcg2 ocmemnoc_clk_src = {
658
722
.cmd_rcgr = 0x5090 ,
659
723
.hid_width = 5 ,
@@ -767,6 +831,35 @@ static const struct freq_tbl ftbl_mclk0_1_2_3_clk_src[] = {
767
831
{ }
768
832
};
769
833
834
+ static const struct freq_tbl ftbl_mclk0_clk_src_8992 [] = {
835
+ F (4800000 , P_XO , 4 , 0 , 0 ),
836
+ F (6000000 , P_MMPLL4 , 10 , 1 , 16 ),
837
+ F (8000000 , P_MMPLL4 , 10 , 1 , 12 ),
838
+ F (9600000 , P_XO , 2 , 0 , 0 ),
839
+ F (12000000 , P_MMPLL4 , 10 , 1 , 8 ),
840
+ F (16000000 , P_MMPLL4 , 10 , 1 , 6 ),
841
+ F (19200000 , P_XO , 1 , 0 , 0 ),
842
+ F (24000000 , P_MMPLL4 , 10 , 1 , 4 ),
843
+ F (32000000 , P_MMPLL4 , 10 , 1 , 3 ),
844
+ F (48000000 , P_MMPLL4 , 10 , 1 , 2 ),
845
+ F (64000000 , P_MMPLL4 , 15 , 0 , 0 ),
846
+ { }
847
+ };
848
+
849
+ static const struct freq_tbl ftbl_mclk1_2_3_clk_src_8992 [] = {
850
+ F (4800000 , P_XO , 4 , 0 , 0 ),
851
+ F (6000000 , P_MMPLL4 , 10 , 1 , 16 ),
852
+ F (8000000 , P_MMPLL4 , 10 , 1 , 12 ),
853
+ F (9600000 , P_XO , 2 , 0 , 0 ),
854
+ F (16000000 , P_MMPLL4 , 10 , 1 , 6 ),
855
+ F (19200000 , P_XO , 1 , 0 , 0 ),
856
+ F (24000000 , P_MMPLL4 , 10 , 1 , 4 ),
857
+ F (32000000 , P_MMPLL4 , 10 , 1 , 3 ),
858
+ F (48000000 , P_MMPLL4 , 10 , 1 , 2 ),
859
+ F (64000000 , P_MMPLL4 , 15 , 0 , 0 ),
860
+ { }
861
+ };
862
+
770
863
static struct clk_rcg2 mclk0_clk_src = {
771
864
.cmd_rcgr = 0x3360 ,
772
865
.mnd_width = 8 ,
@@ -2468,6 +2561,39 @@ static int mmcc_msm8994_probe(struct platform_device *pdev)
2468
2561
{
2469
2562
struct regmap * regmap ;
2470
2563
2564
+ if (of_device_is_compatible (pdev -> dev .of_node , "qcom,mmcc-msm8992" )) {
2565
+ /* MSM8992 features less clocks and some have different freq tables */
2566
+ mmcc_msm8994_desc .clks [CAMSS_JPEG_JPEG1_CLK ] = NULL ;
2567
+ mmcc_msm8994_desc .clks [CAMSS_JPEG_JPEG2_CLK ] = NULL ;
2568
+ mmcc_msm8994_desc .clks [FD_CORE_CLK_SRC ] = NULL ;
2569
+ mmcc_msm8994_desc .clks [FD_CORE_CLK ] = NULL ;
2570
+ mmcc_msm8994_desc .clks [FD_CORE_UAR_CLK ] = NULL ;
2571
+ mmcc_msm8994_desc .clks [FD_AXI_CLK ] = NULL ;
2572
+ mmcc_msm8994_desc .clks [FD_AHB_CLK ] = NULL ;
2573
+ mmcc_msm8994_desc .clks [JPEG1_CLK_SRC ] = NULL ;
2574
+ mmcc_msm8994_desc .clks [JPEG2_CLK_SRC ] = NULL ;
2575
+ mmcc_msm8994_desc .clks [VENUS0_CORE2_VCODEC_CLK ] = NULL ;
2576
+
2577
+ mmcc_msm8994_desc .gdscs [FD_GDSC ] = NULL ;
2578
+ mmcc_msm8994_desc .gdscs [VENUS_CORE2_GDSC ] = NULL ;
2579
+
2580
+ axi_clk_src .freq_tbl = ftbl_axi_clk_src_8992 ;
2581
+ cpp_clk_src .freq_tbl = ftbl_cpp_clk_src_8992 ;
2582
+ csi0_clk_src .freq_tbl = ftbl_csi0_1_2_3_clk_src_8992 ;
2583
+ csi1_clk_src .freq_tbl = ftbl_csi0_1_2_3_clk_src_8992 ;
2584
+ csi2_clk_src .freq_tbl = ftbl_csi0_1_2_3_clk_src_8992 ;
2585
+ csi3_clk_src .freq_tbl = ftbl_csi0_1_2_3_clk_src_8992 ;
2586
+ mclk0_clk_src .freq_tbl = ftbl_mclk0_clk_src_8992 ;
2587
+ mclk1_clk_src .freq_tbl = ftbl_mclk1_2_3_clk_src_8992 ;
2588
+ mclk2_clk_src .freq_tbl = ftbl_mclk1_2_3_clk_src_8992 ;
2589
+ mclk3_clk_src .freq_tbl = ftbl_mclk1_2_3_clk_src_8992 ;
2590
+ mdp_clk_src .freq_tbl = ftbl_mdp_clk_src_8992 ;
2591
+ ocmemnoc_clk_src .freq_tbl = ftbl_ocmemnoc_clk_src_8992 ;
2592
+ vcodec0_clk_src .freq_tbl = ftbl_vcodec0_clk_src_8992 ;
2593
+ vfe0_clk_src .freq_tbl = ftbl_vfe0_1_clk_src_8992 ;
2594
+ vfe1_clk_src .freq_tbl = ftbl_vfe0_1_clk_src_8992 ;
2595
+ }
2596
+
2471
2597
regmap = qcom_cc_map (pdev , & mmcc_msm8994_desc );
2472
2598
if (IS_ERR (regmap ))
2473
2599
return PTR_ERR (regmap );
0 commit comments