@@ -329,6 +329,14 @@ static const struct freq_tbl ftbl_axi_clk_src[] = {
329329 { }
330330};
331331
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+
332340static struct clk_rcg2 axi_clk_src = {
333341 .cmd_rcgr = 0x5040 ,
334342 .hid_width = 5 ,
@@ -349,6 +357,12 @@ static const struct freq_tbl ftbl_csi0_1_2_3_clk_src[] = {
349357 { }
350358};
351359
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+
352366static struct clk_rcg2 csi0_clk_src = {
353367 .cmd_rcgr = 0x3090 ,
354368 .hid_width = 5 ,
@@ -375,6 +389,16 @@ static const struct freq_tbl ftbl_vcodec0_clk_src[] = {
375389 { }
376390};
377391
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+
378402static struct clk_rcg2 vcodec0_clk_src = {
379403 .cmd_rcgr = 0x1000 ,
380404 .mnd_width = 8 ,
@@ -440,6 +464,16 @@ static const struct freq_tbl ftbl_vfe0_clk_src[] = {
440464 { }
441465};
442466
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+
443477static struct clk_rcg2 vfe0_clk_src = {
444478 .cmd_rcgr = 0x3600 ,
445479 .hid_width = 5 ,
@@ -486,6 +520,15 @@ static const struct freq_tbl ftbl_cpp_clk_src[] = {
486520 { }
487521};
488522
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+
489532static struct clk_rcg2 cpp_clk_src = {
490533 .cmd_rcgr = 0x3640 ,
491534 .hid_width = 5 ,
@@ -601,6 +644,17 @@ static const struct freq_tbl ftbl_mdp_clk_src[] = {
601644 { }
602645};
603646
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+
604658static struct clk_rcg2 mdp_clk_src = {
605659 .cmd_rcgr = 0x2040 ,
606660 .hid_width = 5 ,
@@ -654,6 +708,16 @@ static const struct freq_tbl ftbl_ocmemnoc_clk_src[] = {
654708 { }
655709};
656710
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+
657721static struct clk_rcg2 ocmemnoc_clk_src = {
658722 .cmd_rcgr = 0x5090 ,
659723 .hid_width = 5 ,
@@ -767,6 +831,35 @@ static const struct freq_tbl ftbl_mclk0_1_2_3_clk_src[] = {
767831 { }
768832};
769833
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+
770863static struct clk_rcg2 mclk0_clk_src = {
771864 .cmd_rcgr = 0x3360 ,
772865 .mnd_width = 8 ,
@@ -2468,6 +2561,39 @@ static int mmcc_msm8994_probe(struct platform_device *pdev)
24682561{
24692562 struct regmap * regmap ;
24702563
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+
24712597 regmap = qcom_cc_map (pdev , & mmcc_msm8994_desc );
24722598 if (IS_ERR (regmap ))
24732599 return PTR_ERR (regmap );
0 commit comments