@@ -515,6 +515,140 @@ static const struct camss_subdev_resources vfe_res_8x96[] = {
515515 }
516516};
517517
518+ static const struct camss_subdev_resources csiphy_res_2290 [] = {
519+ /* CSIPHY0 */
520+ {
521+ .regulators = { "vdd-csiphy-1p2" , "vdd-csiphy-1p8" },
522+ .clock = { "top_ahb" , "ahb" , "csiphy0" , "csiphy0_timer" },
523+ .clock_rate = { { 0 },
524+ { 0 },
525+ { 240000000 , 341330000 , 384000000 },
526+ { 100000000 , 200000000 , 268800000 } },
527+ .reg = { "csiphy0" },
528+ .interrupt = { "csiphy0" },
529+ .csiphy = {
530+ .id = 0 ,
531+ .hw_ops = & csiphy_ops_3ph_1_0 ,
532+ .formats = & csiphy_formats_sdm845
533+ }
534+ },
535+
536+ /* CSIPHY1 */
537+ {
538+ .regulators = { "vdd-csiphy-1p2" , "vdd-csiphy-1p8" },
539+ .clock = { "top_ahb" , "ahb" , "csiphy1" , "csiphy1_timer" },
540+ .clock_rate = { { 0 },
541+ { 0 },
542+ { 240000000 , 341330000 , 384000000 },
543+ { 100000000 , 200000000 , 268800000 } },
544+ .reg = { "csiphy1" },
545+ .interrupt = { "csiphy1" },
546+ .csiphy = {
547+ .id = 1 ,
548+ .hw_ops = & csiphy_ops_3ph_1_0 ,
549+ .formats = & csiphy_formats_sdm845
550+ }
551+ }
552+ };
553+
554+ static const struct camss_subdev_resources csid_res_2290 [] = {
555+ /* CSID0 */
556+ {
557+ .regulators = {},
558+ .clock = { "top_ahb" , "ahb" , "csi0" , "vfe0_cphy_rx" , "vfe0" },
559+ .clock_rate = { { 0 },
560+ { 0 },
561+ { 192000000 , 240000000 , 384000000 , 426400000 },
562+ { 0 },
563+ { 0 } },
564+ .reg = { "csid0" },
565+ .interrupt = { "csid0" },
566+ .csid = {
567+ .hw_ops = & csid_ops_340 ,
568+ .parent_dev_ops = & vfe_parent_dev_ops ,
569+ .formats = & csid_formats_gen2
570+ }
571+ },
572+
573+ /* CSID1 */
574+ {
575+ .regulators = {},
576+ .clock = { "top_ahb" , "ahb" , "csi1" , "vfe1_cphy_rx" , "vfe1" },
577+ .clock_rate = { { 0 },
578+ { 0 },
579+ { 192000000 , 240000000 , 384000000 , 426400000 },
580+ { 0 },
581+ { 0 } },
582+ .reg = { "csid1" },
583+ .interrupt = { "csid1" },
584+ .csid = {
585+ .hw_ops = & csid_ops_340 ,
586+ .parent_dev_ops = & vfe_parent_dev_ops ,
587+ .formats = & csid_formats_gen2
588+ }
589+ }
590+ };
591+
592+ static const struct camss_subdev_resources vfe_res_2290 [] = {
593+ /* VFE0 */
594+ {
595+ .regulators = {},
596+ .clock = { "top_ahb" , "ahb" , "axi" , "vfe0" , "camnoc_rt_axi" , "camnoc_nrt_axi" },
597+ .clock_rate = { { 0 },
598+ { 0 },
599+ { 0 },
600+ { 19200000 , 153600000 , 192000000 , 256000000 , 384000000 , 460800000 },
601+ { 0 },
602+ { 0 }, },
603+ .reg = { "vfe0" },
604+ .interrupt = { "vfe0" },
605+ .vfe = {
606+ .line_num = 4 ,
607+ .hw_ops = & vfe_ops_340 ,
608+ .formats_rdi = & vfe_formats_rdi_845 ,
609+ .formats_pix = & vfe_formats_pix_845
610+ }
611+ },
612+
613+ /* VFE1 */
614+ {
615+ .regulators = {},
616+ .clock = { "top_ahb" , "ahb" , "axi" , "vfe1" , "camnoc_rt_axi" , "camnoc_nrt_axi" },
617+ .clock_rate = { { 0 },
618+ { 0 },
619+ { 0 },
620+ { 19200000 , 153600000 , 192000000 , 256000000 , 384000000 , 460800000 },
621+ { 0 },
622+ { 0 }, },
623+ .reg = { "vfe1" },
624+ .interrupt = { "vfe1" },
625+ .vfe = {
626+ .line_num = 4 ,
627+ .hw_ops = & vfe_ops_340 ,
628+ .formats_rdi = & vfe_formats_rdi_845 ,
629+ .formats_pix = & vfe_formats_pix_845
630+ }
631+ },
632+ };
633+
634+ static const struct resources_icc icc_res_2290 [] = {
635+ {
636+ .name = "ahb" ,
637+ .icc_bw_tbl .avg = 150000 ,
638+ .icc_bw_tbl .peak = 300000 ,
639+ },
640+ {
641+ .name = "hf_mnoc" ,
642+ .icc_bw_tbl .avg = 2097152 ,
643+ .icc_bw_tbl .peak = 3000000 ,
644+ },
645+ {
646+ .name = "sf_mnoc" ,
647+ .icc_bw_tbl .avg = 2097152 ,
648+ .icc_bw_tbl .peak = 3000000 ,
649+ },
650+ };
651+
518652static const struct camss_subdev_resources csiphy_res_660 [] = {
519653 /* CSIPHY0 */
520654 {
@@ -3752,6 +3886,19 @@ static const struct camss_resources msm8996_resources = {
37523886 .link_entities = camss_link_entities
37533887};
37543888
3889+ static const struct camss_resources qcm2290_resources = {
3890+ .version = CAMSS_2290 ,
3891+ .csiphy_res = csiphy_res_2290 ,
3892+ .csid_res = csid_res_2290 ,
3893+ .vfe_res = vfe_res_2290 ,
3894+ .icc_res = icc_res_2290 ,
3895+ .icc_path_num = ARRAY_SIZE (icc_res_2290 ),
3896+ .csiphy_num = ARRAY_SIZE (csiphy_res_2290 ),
3897+ .csid_num = ARRAY_SIZE (csid_res_2290 ),
3898+ .vfe_num = ARRAY_SIZE (vfe_res_2290 ),
3899+ .link_entities = camss_link_entities
3900+ };
3901+
37553902static const struct camss_resources sdm660_resources = {
37563903 .version = CAMSS_660 ,
37573904 .csiphy_res = csiphy_res_660 ,
@@ -3864,6 +4011,7 @@ static const struct of_device_id camss_dt_match[] = {
38644011 { .compatible = "qcom,msm8916-camss" , .data = & msm8916_resources },
38654012 { .compatible = "qcom,msm8953-camss" , .data = & msm8953_resources },
38664013 { .compatible = "qcom,msm8996-camss" , .data = & msm8996_resources },
4014+ { .compatible = "qcom,qcm2290-camss" , .data = & qcm2290_resources },
38674015 { .compatible = "qcom,sc7280-camss" , .data = & sc7280_resources },
38684016 { .compatible = "qcom,sc8280xp-camss" , .data = & sc8280xp_resources },
38694017 { .compatible = "qcom,sdm660-camss" , .data = & sdm660_resources },
0 commit comments