Skip to content

Add MSM8974 #35

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

Add MSM8974 #35

wants to merge 1 commit into from

Conversation

z3ntu
Copy link

@z3ntu z3ntu commented Jun 18, 2025

Need some help figuring out the remaining values marked with FIXME. I think I understand too little about debugcc and these old clock drivers :)

Downstream: https://github.com/FairphoneMirrors/android_kernel_fairphone_msm8974/blob/int/10/fp2/arch/arm/mach-msm/clock-8974.c#L4431

APCS clocks are ignored because the logic is a bit too conditional in
the downstream clock-8974.c code to be nicely integrated.

Signed-off-by: Luca Weiss <[email protected]>
@z3ntu
Copy link
Author

z3ntu commented Jul 5, 2025

I think the properties should be correct now. Output below in the Details block.

Generally the values look sane, but there's some where Linux's clk_rate from debugfs differs from the value printed here. For example:

  • gcc_blsp2_ahb_clk clk_rate=600 MHz vs debugcc 6.344888MHz
  • gcc_usb_hs_ahb_clk clk_rate=600 MHz vs debugcc 85.714013MHz
  • gcc_mss_q6_bimc_axi_clk clk_rate=240 MHz vs debugcc 614.404211MHz

But for a completely different SoC (sm6350) I have fixed the rate that Linux thought before, and given the age of the msm8974 driver I'd believe more that the Linux driver might be wrong there.

                                   gcc_pdm_ahb_clk: off
                       gcc_blsp2_qup1_i2c_apps_clk: off
                       gcc_blsp2_qup3_spi_apps_clk: off
                          gcc_blsp2_uart5_apps_clk: off
                              gcc_usb30_master_clk: off
                       gcc_blsp2_qup3_i2c_apps_clk: off
                           gcc_usb_hsic_system_clk: off
                        gcc_sdcc1_cdccal_sleep_clk: 0.034312MHz (34312Hz)
                           gcc_sdcc1_cdccal_ff_clk: 19.200109MHz (19200109Hz)
                          gcc_blsp2_uart3_apps_clk: off
                           gcc_usb_hsic_io_cal_clk: off
                                   gcc_ce2_axi_clk: off
                                 gcc_sdcc3_ahb_clk: off
                       gcc_blsp1_qup5_i2c_apps_clk: off
                       gcc_blsp1_qup1_spi_apps_clk: off
                          gcc_blsp2_uart4_apps_clk: off
                                       gcc_ce2_clk: off
                          gcc_blsp1_uart2_apps_clk: 3.686338MHz (3686338Hz)
                                 gcc_sdcc1_ahb_clk: 85.714233MHz (85714233Hz)
                               gcc_mss_cfg_ahb_clk: 74.999839MHz (74999839Hz)
                                  gcc_tsif_ahb_clk: off
                                 gcc_sdcc4_ahb_clk: off
                       gcc_blsp1_qup4_spi_apps_clk: off
                       gcc_blsp2_qup4_spi_apps_clk: off
                       gcc_blsp1_qup3_spi_apps_clk: off
                       gcc_blsp1_qup6_i2c_apps_clk: off
                       gcc_blsp2_qup6_i2c_apps_clk: 1.539358MHz (1539358Hz)
                               gcc_bam_dma_ahb_clk: off
                                gcc_sdcc3_apps_clk: off
                             gcc_usb_hs_system_clk: 74.999693MHz (74999693Hz)
                                 gcc_blsp1_ahb_clk: 85.714965MHz (85714965Hz)
                                gcc_sdcc1_apps_clk: 200.001538MHz (200001538Hz)
                       gcc_blsp2_qup5_i2c_apps_clk: 19.199963MHz (19199963Hz)
                          gcc_blsp1_uart4_apps_clk: off
                       gcc_blsp2_qup2_spi_apps_clk: off
                       gcc_blsp2_qup6_spi_apps_clk: off
                          gcc_blsp2_uart2_apps_clk: off
                       gcc_blsp1_qup2_spi_apps_clk: off
                              gcc_usb_hsic_ahb_clk: off
                          gcc_blsp1_uart3_apps_clk: off
                           gcc_usb30_mock_utmi_clk: off
                                   gcc_ce1_axi_clk: off
                                gcc_sdcc4_apps_clk: off
                       gcc_blsp1_qup5_spi_apps_clk: off
                                gcc_usb_hs_ahb_clk: 85.714233MHz (85714233Hz)
                       gcc_blsp1_qup6_spi_apps_clk: off
                       gcc_blsp2_qup2_i2c_apps_clk: off
                                  gcc_prng_ahb_clk: off
                       gcc_blsp1_qup3_i2c_apps_clk: 1.021051MHz (1021051Hz)
                                  gcc_usb_hsic_clk: off
                          gcc_blsp1_uart6_apps_clk: off
                                gcc_sdcc2_apps_clk: off
                                  gcc_tsif_ref_clk: off
                          gcc_blsp1_uart1_apps_clk: off
                       gcc_blsp2_qup5_spi_apps_clk: off
                       gcc_blsp1_qup4_i2c_apps_clk: off
                          gcc_mmss_noc_cfg_ahb_clk: 74.999546MHz (74999546Hz)
                                 gcc_blsp2_ahb_clk: 6.156446MHz (6156446Hz)
                              gcc_boot_rom_ahb_clk: 75.000059MHz (75000059Hz)
                                   gcc_ce1_ahb_clk: off
                                      gcc_pdm2_clk: off
                       gcc_blsp2_qup4_i2c_apps_clk: off
                                   gcc_ce2_ahb_clk: off
                          gcc_blsp1_uart5_apps_clk: off
                       gcc_blsp2_qup1_spi_apps_clk: off
                       gcc_blsp1_qup2_i2c_apps_clk: off
                          gcc_blsp2_uart1_apps_clk: off
                       gcc_blsp1_qup1_i2c_apps_clk: off
                          gcc_blsp2_uart6_apps_clk: off
                                 gcc_sdcc2_ahb_clk: off
                               gcc_usb30_sleep_clk: off
                           gcc_usb2a_phy_sleep_clk: 0.034605MHz (34605Hz)
                           gcc_usb2b_phy_sleep_clk: off
                          gcc_sys_noc_usb3_axi_clk: off
                         gcc_ocmem_noc_cfg_ahb_clk: 75.000132MHz (75000132Hz)
                                       gcc_ce1_clk: off
                              gcc_lpass_q6_axi_clk: 239.998718MHz (239998718Hz)
                           gcc_mss_q6_bimc_axi_clk: 614.396960MHz (614396960Hz)
                                          cnoc_clk: 74.999839MHz (74999839Hz)
                                          pnoc_clk: 85.714013MHz (85714013Hz)
                                          snoc_clk: 240.001867MHz (240001867Hz)
                                          bimc_clk: 614.401281MHz (614401281Hz)
                                       wcnss_m_clk: 9.600036MHz (9600036Hz)
                              mmss_mmssnoc_axi_clk: 399.998498MHz (399998498Hz)
                                      ocmemnoc_clk: off
                              ocmemcx_ocmemnoc_clk: 19.200109MHz (19200109Hz)
                             camss_cci_cci_ahb_clk: off
                                 camss_cci_cci_clk: off
                                camss_csi0_ahb_clk: off
                                    camss_csi0_clk: off
                                 camss_csi0phy_clk: off
                                 camss_csi0pix_clk: off
                                 camss_csi0rdi_clk: off
                                camss_csi1_ahb_clk: off
                                    camss_csi1_clk: off
                                 camss_csi1phy_clk: off
                                 camss_csi1pix_clk: off
                                 camss_csi1rdi_clk: off
                                camss_csi2_ahb_clk: off
                                    camss_csi2_clk: off
                                 camss_csi2phy_clk: off
                                 camss_csi2pix_clk: off
                                 camss_csi2rdi_clk: off
                                camss_csi3_ahb_clk: off
                                    camss_csi3_clk: off
                                 camss_csi3phy_clk: off
                                 camss_csi3pix_clk: off
                                 camss_csi3rdi_clk: off
                                camss_csi_vfe0_clk: off
                                camss_csi_vfe1_clk: off
                                     camss_gp0_clk: off
                                     camss_gp1_clk: off
                               camss_ispif_ahb_clk: off
                              camss_jpeg_jpeg0_clk: off
                              camss_jpeg_jpeg1_clk: off
                              camss_jpeg_jpeg2_clk: off
                           camss_jpeg_jpeg_ahb_clk: off
                           camss_jpeg_jpeg_axi_clk: off
                      camss_jpeg_jpeg_ocmemnoc_clk: off
                                   camss_mclk0_clk: off
                                   camss_mclk1_clk: off
                                   camss_mclk2_clk: off
                                   camss_mclk3_clk: off
                               camss_micro_ahb_clk: off
                       camss_phy0_csi0phytimer_clk: off
                       camss_phy1_csi1phytimer_clk: off
                       camss_phy2_csi2phytimer_clk: off
                                 camss_top_ahb_clk: off
                             camss_vfe_cpp_ahb_clk: off
                                 camss_vfe_cpp_clk: off
                                camss_vfe_vfe0_clk: off
                                camss_vfe_vfe1_clk: off
                             camss_vfe_vfe_ahb_clk: off
                             camss_vfe_vfe_axi_clk: off
                        camss_vfe_vfe_ocmemnoc_clk: off
                                   oxilicx_axi_clk: off
                                   oxilicx_ahb_clk: off
                              ocmemcx_ocmemnoc_clk: 19.199963MHz (19199963Hz)
                                   oxili_gfx3d_clk: 200.000878MHz (200000878Hz)
                                    venus0_axi_clk: off
                               venus0_ocmemnoc_clk: off
                                    venus0_ahb_clk: off
                                venus0_vcodec0_clk: off
                                   mmss_s0_axi_clk: 400.003039MHz (400003039Hz)
                                   mmssnoc_ahb_clk: 80.000329MHz (80000329Hz)
                                      mdss_ahb_clk: 80.000402MHz (80000402Hz)
                                     mdss_hdmi_clk: off
                                      mdss_mdp_clk: 319.999523MHz (319999523Hz)
                                  mdss_mdp_lut_clk: 319.999230MHz (319999230Hz)
                                      mdss_axi_clk: 400.002233MHz (400002233Hz)
                                    mdss_vsync_clk: 19.200109MHz (19200109Hz)
                                     mdss_esc0_clk: 19.200109MHz (19200109Hz)
                                     mdss_esc1_clk: off
                                   mdss_edpaux_clk: off
                                    mdss_byte0_clk: 112.415370MHz (112415370Hz)
                                    mdss_byte1_clk: off
                                  mdss_edplink_clk: off
                                 mdss_edppixel_clk: off
                                  mdss_extpclk_clk: off
                                 mdss_hdmi_ahb_clk: off
                                    mdss_pclk0_clk: 149.888833MHz (149888833Hz)
                                    mdss_pclk1_clk: off
                                       q6ss_xo_clk: 19.200183MHz (19200183Hz)
                               q6ss_ahb_lfabif_clk: 61.440578MHz (61440578Hz)
                                     q6ss_ahbm_clk: 61.440065MHz (61440065Hz)

@z3ntu z3ntu changed the title [WIP] Add MSM8974 Add MSM8974 Jul 5, 2025
@quic-kdybcio
Copy link

So according to an arcane 2012 PDF, the bus (PNoC, CNoC, SNoC, BIMC & MMSSNoC_AHB) clocks should have never been touched by Linux, as RPM is supposed to take care of them (i.e. we don't want to be stepping on one another's toes).. We won't be able to retrieve the rates of certain clocks at all because of that, but as you said above, it they may not always be useful or correct.

Now I can't find a frequency plan for 8974, but taking conclusions from the rather similar 8994, the debugcc-reported rates you mentioned above are not totally impossible (although not 100% matching either..)

Please also make sure (if you haven't already) that your debugcc clock map is the latest version (i.e. for 8974v2/ac depending on your hw) so we're not poking in the dark

@z3ntu
Copy link
Author

z3ntu commented Jul 7, 2025

Please also make sure (if you haven't already) that your debugcc clock map is the latest version (i.e. for 8974v2/ac depending on your hw) so we're not poking in the dark

The kernel sources I've based this on are definitely good for MSM8974AB-AB and MSM8974AB-AA (a.k.a MSM8974PRO-AB and MSM8974PRO-AA). The device I was trying it on should be one of the AB ones.

So unless there's a newer version somewhere (OnePlus One is -AC fwiw), it's definitely not one of the old MSM8974 non-pro variants (a.k.a Snapdragon 800).

@lumag
Copy link
Collaborator

lumag commented Jul 8, 2025

I have the APQ8074 dragonboard, so next week I should be able to cross-check it on that board

@z3ntu
Copy link
Author

z3ntu commented Jul 20, 2025

@lumag Did you have a chance to try this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants