Skip to content

Commit e0be998

Browse files
Konrad Dybciobebarino
authored andcommitted
clk: qcom: mmcc-msm8994: Add MSM8992 support
MSM8992 features less clocks & GDSCS and has different freq tables for some of them. Signed-off-by: Konrad Dybcio <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Stephen Boyd <[email protected]>
1 parent 4d5b457 commit e0be998

File tree

1 file changed

+126
-0
lines changed

1 file changed

+126
-0
lines changed

drivers/clk/qcom/mmcc-msm8994.c

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
332340
static 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+
352366
static 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+
378402
static 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+
443477
static 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+
489532
static 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+
604658
static 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+
657721
static 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+
770863
static 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

Comments
 (0)