@@ -978,6 +978,27 @@ static const struct freq_tbl ftbl_gfx3d_clk_src_msm8940[] = {
978978 { }
979979};
980980
981+ static const struct freq_tbl ftbl_gfx3d_clk_src_sdm439 [] = {
982+ F (19200000 , P_XO , 1 , 0 , 0 ),
983+ F (50000000 , P_GPLL0 , 16 , 0 , 0 ),
984+ F (80000000 , P_GPLL0 , 10 , 0 , 0 ),
985+ F (100000000 , P_GPLL0 , 8 , 0 , 0 ),
986+ F (160000000 , P_GPLL0 , 5 , 0 , 0 ),
987+ F (200000000 , P_GPLL0 , 4 , 0 , 0 ),
988+ F (216000000 , P_GPLL6 , 5 , 0 , 0 ),
989+ F (228570000 , P_GPLL0 , 3.5 , 0 , 0 ),
990+ F (240000000 , P_GPLL6 , 4.5 , 0 , 0 ),
991+ F (266670000 , P_GPLL0 , 3 , 0 , 0 ),
992+ F (320000000 , P_GPLL0 , 2.5 , 0 , 0 ),
993+ F (355200000 , P_GPLL3 , 1 , 0 , 0 ),
994+ F (400000000 , P_GPLL0 , 2 , 0 , 0 ),
995+ F (450000000 , P_GPLL3 , 1 , 0 , 0 ),
996+ F (510000000 , P_GPLL3 , 1 , 0 , 0 ),
997+ F (560000000 , P_GPLL3 , 1 , 0 , 0 ),
998+ F (650000000 , P_GPLL3 , 1 , 0 , 0 ),
999+ { }
1000+ };
1001+
9811002static struct clk_rcg2 gfx3d_clk_src = {
9821003 .cmd_rcgr = 0x59000 ,
9831004 .hid_width = 5 ,
@@ -4061,6 +4082,16 @@ static const struct qcom_cc_desc gcc_msm8940_desc = {
40614082 .num_gdscs = ARRAY_SIZE (gcc_msm8937_gdscs ),
40624083};
40634084
4085+ static const struct qcom_cc_desc gcc_sdm439_desc = {
4086+ .config = & gcc_msm8917_regmap_config ,
4087+ .clks = gcc_msm8937_clocks ,
4088+ .num_clks = ARRAY_SIZE (gcc_msm8937_clocks ),
4089+ .resets = gcc_msm8917_resets ,
4090+ .num_resets = ARRAY_SIZE (gcc_msm8917_resets ),
4091+ .gdscs = gcc_msm8937_gdscs ,
4092+ .num_gdscs = ARRAY_SIZE (gcc_msm8937_gdscs ),
4093+ };
4094+
40644095static void msm8937_clock_override (void )
40654096{
40664097 /* GPLL3 750MHz configuration */
@@ -4086,6 +4117,21 @@ static void msm8937_clock_override(void)
40864117 usb_hs_system_clk_src .freq_tbl = ftbl_usb_hs_system_clk_src_msm8937 ;
40874118}
40884119
4120+ static void sdm439_clock_override (void )
4121+ {
4122+ vcodec0_clk_src .parent_map = gcc_cpp_map ;
4123+ vcodec0_clk_src .clkr .hw .init = & vcodec0_clk_src_init_msm8937 ;
4124+
4125+ vfe0_clk_src .freq_tbl = ftbl_vfe_clk_src_msm8937 ;
4126+ vfe1_clk_src .freq_tbl = ftbl_vfe_clk_src_msm8937 ;
4127+ cpp_clk_src .freq_tbl = ftbl_cpp_clk_src_msm8937 ;
4128+ vcodec0_clk_src .freq_tbl = ftbl_vcodec0_clk_src_msm8937 ;
4129+ gfx3d_clk_src .freq_tbl = ftbl_gfx3d_clk_src_sdm439 ;
4130+ csi0phytimer_clk_src .freq_tbl = ftbl_csi_phytimer_clk_src_msm8937 ;
4131+ csi1phytimer_clk_src .freq_tbl = ftbl_csi_phytimer_clk_src_msm8937 ;
4132+ usb_hs_system_clk_src .freq_tbl = ftbl_usb_hs_system_clk_src_msm8937 ;
4133+ }
4134+
40894135static int gcc_msm8917_probe (struct platform_device * pdev )
40904136{
40914137 struct regmap * regmap ;
@@ -4101,6 +4147,8 @@ static int gcc_msm8917_probe(struct platform_device *pdev)
41014147 } else if (gcc_desc == & gcc_msm8940_desc ) {
41024148 msm8937_clock_override ();
41034149 gfx3d_clk_src .freq_tbl = ftbl_gfx3d_clk_src_msm8940 ;
4150+ } else if (gcc_desc == & gcc_sdm439_desc ) {
4151+ sdm439_clock_override ();
41044152 }
41054153
41064154 regmap = qcom_cc_map (pdev , gcc_desc );
@@ -4117,6 +4165,7 @@ static const struct of_device_id gcc_msm8917_match_table[] = {
41174165 { .compatible = "qcom,gcc-qm215" , .data = & gcc_qm215_desc },
41184166 { .compatible = "qcom,gcc-msm8937" , .data = & gcc_msm8937_desc },
41194167 { .compatible = "qcom,gcc-msm8940" , .data = & gcc_msm8940_desc },
4168+ { .compatible = "qcom,gcc-sdm439" , .data = & gcc_sdm439_desc },
41204169 {},
41214170};
41224171MODULE_DEVICE_TABLE (of , gcc_msm8917_match_table );
0 commit comments