Lines Matching +full:clkr +full:- +full:- +full:-

1 // SPDX-License-Identifier: GPL-2.0-only
15 #include <linux/clk-provider.h>
17 #include <linux/reset-controller.h>
19 #include <dt-bindings/clock/qcom,mmcc-msm8960.h>
20 #include <dt-bindings/reset/qcom,mmcc-msm8960.h>
23 #include "clk-regmap.h"
24 #include "clk-pll.h"
25 #include "clk-rcg.h"
26 #include "clk-branch.h"
52 .clkr.hw.init = &(struct clk_init_data){
70 .clkr.hw.init = &(struct clk_init_data){
103 { .hw = &pll2.clkr.hw },
116 { .hw = &pll2.clkr.hw },
117 { .hw = &pll15.clkr.hw },
130 { .hw = &pll2.clkr.hw },
194 .clkr = {
209 .clkr = {
215 &camclk0_src.clkr.hw
245 .clkr = {
260 .clkr = {
266 &camclk1_src.clkr.hw
296 .clkr = {
311 .clkr = {
317 &camclk2_src.clkr.hw
353 .clkr = {
368 .clkr = {
373 &csi0_src.clkr.hw
386 .clkr = {
391 &csi0_src.clkr.hw
421 .clkr = {
436 .clkr = {
441 &csi1_src.clkr.hw
454 .clkr = {
459 &csi1_src.clkr.hw
489 .clkr = {
504 .clkr = {
509 &csi2_src.clkr.hw
522 .clkr = {
527 &csi2_src.clkr.hw
542 struct clk_regmap clkr; member
546 container_of(to_clk_regmap(_hw), struct clk_pix_rdi, clkr)
566 ret = clk_prepare_enable(p->clk); in pix_rdi_set_parent()
572 val = rdi->s2_mask; in pix_rdi_set_parent()
575 regmap_update_bits(rdi->clkr.regmap, rdi->s2_reg, rdi->s2_mask, val); in pix_rdi_set_parent()
578 * for the glitch-free MUX to fully switch sources. in pix_rdi_set_parent()
583 val = rdi->s_mask; in pix_rdi_set_parent()
586 regmap_update_bits(rdi->clkr.regmap, rdi->s_reg, rdi->s_mask, val); in pix_rdi_set_parent()
589 * for the glitch-free MUX to fully switch sources. in pix_rdi_set_parent()
594 for (i--; i >= 0; i--) { in pix_rdi_set_parent()
596 clk_disable_unprepare(p->clk); in pix_rdi_set_parent()
608 regmap_read(rdi->clkr.regmap, rdi->s2_reg, &val); in pix_rdi_get_parent()
609 if (val & rdi->s2_mask) in pix_rdi_get_parent()
612 regmap_read(rdi->clkr.regmap, rdi->s_reg, &val); in pix_rdi_get_parent()
613 if (val & rdi->s_mask) in pix_rdi_get_parent()
628 &csi0_clk.clkr.hw,
629 &csi1_clk.clkr.hw,
630 &csi2_clk.clkr.hw,
638 .clkr = {
655 .clkr = {
672 .clkr = {
689 .clkr = {
706 .clkr = {
745 .clkr = {
760 .clkr = {
765 &csiphytimer_src.clkr.hw,
778 .clkr = {
783 &csiphytimer_src.clkr.hw,
796 .clkr = {
801 &csiphytimer_src.clkr.hw,
859 .clkr = {
874 .clkr = {
880 &gfx2d0_src.clkr.hw
921 .clkr = {
936 .clkr = {
942 &gfx2d1_src.clkr.hw
1024 .clkr = {
1046 .clkr = {
1052 &gfx3d_src.clkr.hw
1104 .clkr = {
1119 .clkr = {
1125 &vcap_src.clkr.hw
1137 .clkr = {
1143 &vcap_src.clkr.hw
1187 .clkr = {
1202 .clkr = {
1208 &ijpeg_src.clkr.hw
1237 .clkr = {
1252 .clkr = {
1258 &jpegd_src.clkr.hw
1319 .clkr = {
1334 .clkr = {
1340 &mdp_src.clkr.hw
1352 .clkr = {
1357 &mdp_src.clkr.hw
1370 .clkr = {
1424 .clkr = {
1439 .clkr = {
1445 &rot_src.clkr.hw
1489 .clkr = {
1505 .clkr = {
1510 &tv_src.clkr.hw,
1523 .clkr = {
1528 &tv_src.clkr.hw,
1541 .clkr = {
1546 &tv_src.clkr.hw,
1559 .clkr = {
1564 &tv_src.clkr.hw,
1577 .clkr = {
1582 &tv_src.clkr.hw,
1595 .clkr = {
1600 &tv_src.clkr.hw,
1613 .clkr = {
1672 .clkr = {
1687 .clkr = {
1693 &vcodec_src.clkr.hw
1725 .clkr = {
1740 .clkr = {
1746 &vpe_src.clkr.hw
1795 .clkr = {
1810 .clkr = {
1816 &vfe_src.clkr.hw
1828 .clkr = {
1833 &vfe_src.clkr.hw
1846 .clkr = {
1861 .clkr = {
1876 .clkr = {
1889 .clkr = {
1904 .clkr = {
1919 .clkr = {
1934 .clkr = {
1947 .clkr = {
1962 .clkr = {
1977 .clkr = {
1992 .clkr = {
2007 .clkr = {
2022 .clkr = {
2035 .clkr = {
2048 .clkr = {
2061 .clkr = {
2076 .clkr = {
2089 .clkr = {
2104 .clkr = {
2133 .clkr = {
2149 .clkr = {
2155 &dsi1_src.clkr.hw
2183 .clkr = {
2199 .clkr = {
2205 &dsi2_src.clkr.hw
2224 .clkr = {
2240 .clkr = {
2246 &dsi1_byte_src.clkr.hw
2265 .clkr = {
2281 .clkr = {
2287 &dsi2_byte_src.clkr.hw
2306 .clkr = {
2321 .clkr = {
2327 &dsi1_esc_src.clkr.hw
2346 .clkr = {
2361 .clkr = {
2367 &dsi2_esc_src.clkr.hw
2395 .clkr = {
2410 .clkr = {
2416 &dsi1_pixel_src.clkr.hw
2444 .clkr = {
2459 .clkr = {
2465 &dsi2_pixel_src.clkr.hw
2479 .clkr = {
2494 .clkr = {
2509 .clkr = {
2524 .clkr = {
2539 .clkr = {
2552 .clkr = {
2567 .clkr = {
2580 .clkr = {
2593 .clkr = {
2606 .clkr = {
2621 .clkr = {
2634 .clkr = {
2647 .clkr = {
2662 .clkr = {
2675 .clkr = {
2688 .clkr = {
2699 [TV_ENC_AHB_CLK] = &tv_enc_ahb_clk.clkr,
2700 [AMP_AHB_CLK] = &amp_ahb_clk.clkr,
2701 [DSI2_S_AHB_CLK] = &dsi2_s_ahb_clk.clkr,
2702 [JPEGD_AHB_CLK] = &jpegd_ahb_clk.clkr,
2703 [GFX2D0_AHB_CLK] = &gfx2d0_ahb_clk.clkr,
2704 [DSI_S_AHB_CLK] = &dsi_s_ahb_clk.clkr,
2705 [DSI2_M_AHB_CLK] = &dsi2_m_ahb_clk.clkr,
2706 [VPE_AHB_CLK] = &vpe_ahb_clk.clkr,
2707 [SMMU_AHB_CLK] = &smmu_ahb_clk.clkr,
2708 [HDMI_M_AHB_CLK] = &hdmi_m_ahb_clk.clkr,
2709 [VFE_AHB_CLK] = &vfe_ahb_clk.clkr,
2710 [ROT_AHB_CLK] = &rot_ahb_clk.clkr,
2711 [VCODEC_AHB_CLK] = &vcodec_ahb_clk.clkr,
2712 [MDP_AHB_CLK] = &mdp_ahb_clk.clkr,
2713 [DSI_M_AHB_CLK] = &dsi_m_ahb_clk.clkr,
2714 [CSI_AHB_CLK] = &csi_ahb_clk.clkr,
2715 [MMSS_IMEM_AHB_CLK] = &mmss_imem_ahb_clk.clkr,
2716 [IJPEG_AHB_CLK] = &ijpeg_ahb_clk.clkr,
2717 [HDMI_S_AHB_CLK] = &hdmi_s_ahb_clk.clkr,
2718 [GFX3D_AHB_CLK] = &gfx3d_ahb_clk.clkr,
2719 [GFX2D1_AHB_CLK] = &gfx2d1_ahb_clk.clkr,
2720 [JPEGD_AXI_CLK] = &jpegd_axi_clk.clkr,
2721 [GMEM_AXI_CLK] = &gmem_axi_clk.clkr,
2722 [MDP_AXI_CLK] = &mdp_axi_clk.clkr,
2723 [MMSS_IMEM_AXI_CLK] = &mmss_imem_axi_clk.clkr,
2724 [IJPEG_AXI_CLK] = &ijpeg_axi_clk.clkr,
2725 [GFX3D_AXI_CLK] = &gfx3d_axi_clk.clkr,
2726 [VCODEC_AXI_CLK] = &vcodec_axi_clk.clkr,
2727 [VFE_AXI_CLK] = &vfe_axi_clk.clkr,
2728 [VPE_AXI_CLK] = &vpe_axi_clk.clkr,
2729 [ROT_AXI_CLK] = &rot_axi_clk.clkr,
2730 [VCODEC_AXI_A_CLK] = &vcodec_axi_a_clk.clkr,
2731 [VCODEC_AXI_B_CLK] = &vcodec_axi_b_clk.clkr,
2732 [CSI0_SRC] = &csi0_src.clkr,
2733 [CSI0_CLK] = &csi0_clk.clkr,
2734 [CSI0_PHY_CLK] = &csi0_phy_clk.clkr,
2735 [CSI1_SRC] = &csi1_src.clkr,
2736 [CSI1_CLK] = &csi1_clk.clkr,
2737 [CSI1_PHY_CLK] = &csi1_phy_clk.clkr,
2738 [CSI2_SRC] = &csi2_src.clkr,
2739 [CSI2_CLK] = &csi2_clk.clkr,
2740 [CSI2_PHY_CLK] = &csi2_phy_clk.clkr,
2741 [DSI_SRC] = &dsi1_src.clkr,
2742 [DSI_CLK] = &dsi1_clk.clkr,
2743 [CSI_PIX_CLK] = &csi_pix_clk.clkr,
2744 [CSI_RDI_CLK] = &csi_rdi_clk.clkr,
2745 [MDP_VSYNC_CLK] = &mdp_vsync_clk.clkr,
2746 [HDMI_APP_CLK] = &hdmi_app_clk.clkr,
2747 [CSI_PIX1_CLK] = &csi_pix1_clk.clkr,
2748 [CSI_RDI2_CLK] = &csi_rdi2_clk.clkr,
2749 [CSI_RDI1_CLK] = &csi_rdi1_clk.clkr,
2750 [GFX2D0_SRC] = &gfx2d0_src.clkr,
2751 [GFX2D0_CLK] = &gfx2d0_clk.clkr,
2752 [GFX2D1_SRC] = &gfx2d1_src.clkr,
2753 [GFX2D1_CLK] = &gfx2d1_clk.clkr,
2754 [GFX3D_SRC] = &gfx3d_src.clkr,
2755 [GFX3D_CLK] = &gfx3d_clk.clkr,
2756 [IJPEG_SRC] = &ijpeg_src.clkr,
2757 [IJPEG_CLK] = &ijpeg_clk.clkr,
2758 [JPEGD_SRC] = &jpegd_src.clkr,
2759 [JPEGD_CLK] = &jpegd_clk.clkr,
2760 [MDP_SRC] = &mdp_src.clkr,
2761 [MDP_CLK] = &mdp_clk.clkr,
2762 [MDP_LUT_CLK] = &mdp_lut_clk.clkr,
2763 [DSI2_PIXEL_SRC] = &dsi2_pixel_src.clkr,
2764 [DSI2_PIXEL_CLK] = &dsi2_pixel_clk.clkr,
2765 [DSI2_SRC] = &dsi2_src.clkr,
2766 [DSI2_CLK] = &dsi2_clk.clkr,
2767 [DSI1_BYTE_SRC] = &dsi1_byte_src.clkr,
2768 [DSI1_BYTE_CLK] = &dsi1_byte_clk.clkr,
2769 [DSI2_BYTE_SRC] = &dsi2_byte_src.clkr,
2770 [DSI2_BYTE_CLK] = &dsi2_byte_clk.clkr,
2771 [DSI1_ESC_SRC] = &dsi1_esc_src.clkr,
2772 [DSI1_ESC_CLK] = &dsi1_esc_clk.clkr,
2773 [DSI2_ESC_SRC] = &dsi2_esc_src.clkr,
2774 [DSI2_ESC_CLK] = &dsi2_esc_clk.clkr,
2775 [ROT_SRC] = &rot_src.clkr,
2776 [ROT_CLK] = &rot_clk.clkr,
2777 [TV_ENC_CLK] = &tv_enc_clk.clkr,
2778 [TV_DAC_CLK] = &tv_dac_clk.clkr,
2779 [HDMI_TV_CLK] = &hdmi_tv_clk.clkr,
2780 [MDP_TV_CLK] = &mdp_tv_clk.clkr,
2781 [TV_SRC] = &tv_src.clkr,
2782 [VCODEC_SRC] = &vcodec_src.clkr,
2783 [VCODEC_CLK] = &vcodec_clk.clkr,
2784 [VFE_SRC] = &vfe_src.clkr,
2785 [VFE_CLK] = &vfe_clk.clkr,
2786 [VFE_CSI_CLK] = &vfe_csi_clk.clkr,
2787 [VPE_SRC] = &vpe_src.clkr,
2788 [VPE_CLK] = &vpe_clk.clkr,
2789 [DSI_PIXEL_SRC] = &dsi1_pixel_src.clkr,
2790 [DSI_PIXEL_CLK] = &dsi1_pixel_clk.clkr,
2791 [CAMCLK0_SRC] = &camclk0_src.clkr,
2792 [CAMCLK0_CLK] = &camclk0_clk.clkr,
2793 [CAMCLK1_SRC] = &camclk1_src.clkr,
2794 [CAMCLK1_CLK] = &camclk1_clk.clkr,
2795 [CAMCLK2_SRC] = &camclk2_src.clkr,
2796 [CAMCLK2_CLK] = &camclk2_clk.clkr,
2797 [CSIPHYTIMER_SRC] = &csiphytimer_src.clkr,
2798 [CSIPHY2_TIMER_CLK] = &csiphy2_timer_clk.clkr,
2799 [CSIPHY1_TIMER_CLK] = &csiphy1_timer_clk.clkr,
2800 [CSIPHY0_TIMER_CLK] = &csiphy0_timer_clk.clkr,
2801 [PLL2] = &pll2.clkr,
2883 [AMP_AHB_CLK] = &amp_ahb_clk.clkr,
2884 [DSI2_S_AHB_CLK] = &dsi2_s_ahb_clk.clkr,
2885 [JPEGD_AHB_CLK] = &jpegd_ahb_clk.clkr,
2886 [DSI_S_AHB_CLK] = &dsi_s_ahb_clk.clkr,
2887 [DSI2_M_AHB_CLK] = &dsi2_m_ahb_clk.clkr,
2888 [VPE_AHB_CLK] = &vpe_ahb_clk.clkr,
2889 [SMMU_AHB_CLK] = &smmu_ahb_clk.clkr,
2890 [HDMI_M_AHB_CLK] = &hdmi_m_ahb_clk.clkr,
2891 [VFE_AHB_CLK] = &vfe_ahb_clk.clkr,
2892 [ROT_AHB_CLK] = &rot_ahb_clk.clkr,
2893 [VCODEC_AHB_CLK] = &vcodec_ahb_clk.clkr,
2894 [MDP_AHB_CLK] = &mdp_ahb_clk.clkr,
2895 [DSI_M_AHB_CLK] = &dsi_m_ahb_clk.clkr,
2896 [CSI_AHB_CLK] = &csi_ahb_clk.clkr,
2897 [MMSS_IMEM_AHB_CLK] = &mmss_imem_ahb_clk.clkr,
2898 [IJPEG_AHB_CLK] = &ijpeg_ahb_clk.clkr,
2899 [HDMI_S_AHB_CLK] = &hdmi_s_ahb_clk.clkr,
2900 [GFX3D_AHB_CLK] = &gfx3d_ahb_clk.clkr,
2901 [JPEGD_AXI_CLK] = &jpegd_axi_clk.clkr,
2902 [GMEM_AXI_CLK] = &gmem_axi_clk.clkr,
2903 [MDP_AXI_CLK] = &mdp_axi_clk.clkr,
2904 [MMSS_IMEM_AXI_CLK] = &mmss_imem_axi_clk.clkr,
2905 [IJPEG_AXI_CLK] = &ijpeg_axi_clk.clkr,
2906 [GFX3D_AXI_CLK] = &gfx3d_axi_clk.clkr,
2907 [VCODEC_AXI_CLK] = &vcodec_axi_clk.clkr,
2908 [VFE_AXI_CLK] = &vfe_axi_clk.clkr,
2909 [VPE_AXI_CLK] = &vpe_axi_clk.clkr,
2910 [ROT_AXI_CLK] = &rot_axi_clk.clkr,
2911 [VCODEC_AXI_A_CLK] = &vcodec_axi_a_clk.clkr,
2912 [VCODEC_AXI_B_CLK] = &vcodec_axi_b_clk.clkr,
2913 [CSI0_SRC] = &csi0_src.clkr,
2914 [CSI0_CLK] = &csi0_clk.clkr,
2915 [CSI0_PHY_CLK] = &csi0_phy_clk.clkr,
2916 [CSI1_SRC] = &csi1_src.clkr,
2917 [CSI1_CLK] = &csi1_clk.clkr,
2918 [CSI1_PHY_CLK] = &csi1_phy_clk.clkr,
2919 [CSI2_SRC] = &csi2_src.clkr,
2920 [CSI2_CLK] = &csi2_clk.clkr,
2921 [CSI2_PHY_CLK] = &csi2_phy_clk.clkr,
2922 [DSI_SRC] = &dsi1_src.clkr,
2923 [DSI_CLK] = &dsi1_clk.clkr,
2924 [CSI_PIX_CLK] = &csi_pix_clk.clkr,
2925 [CSI_RDI_CLK] = &csi_rdi_clk.clkr,
2926 [MDP_VSYNC_CLK] = &mdp_vsync_clk.clkr,
2927 [HDMI_APP_CLK] = &hdmi_app_clk.clkr,
2928 [CSI_PIX1_CLK] = &csi_pix1_clk.clkr,
2929 [CSI_RDI2_CLK] = &csi_rdi2_clk.clkr,
2930 [CSI_RDI1_CLK] = &csi_rdi1_clk.clkr,
2931 [GFX3D_SRC] = &gfx3d_src.clkr,
2932 [GFX3D_CLK] = &gfx3d_clk.clkr,
2933 [IJPEG_SRC] = &ijpeg_src.clkr,
2934 [IJPEG_CLK] = &ijpeg_clk.clkr,
2935 [JPEGD_SRC] = &jpegd_src.clkr,
2936 [JPEGD_CLK] = &jpegd_clk.clkr,
2937 [MDP_SRC] = &mdp_src.clkr,
2938 [MDP_CLK] = &mdp_clk.clkr,
2939 [MDP_LUT_CLK] = &mdp_lut_clk.clkr,
2940 [DSI2_PIXEL_SRC] = &dsi2_pixel_src.clkr,
2941 [DSI2_PIXEL_CLK] = &dsi2_pixel_clk.clkr,
2942 [DSI2_SRC] = &dsi2_src.clkr,
2943 [DSI2_CLK] = &dsi2_clk.clkr,
2944 [DSI1_BYTE_SRC] = &dsi1_byte_src.clkr,
2945 [DSI1_BYTE_CLK] = &dsi1_byte_clk.clkr,
2946 [DSI2_BYTE_SRC] = &dsi2_byte_src.clkr,
2947 [DSI2_BYTE_CLK] = &dsi2_byte_clk.clkr,
2948 [DSI1_ESC_SRC] = &dsi1_esc_src.clkr,
2949 [DSI1_ESC_CLK] = &dsi1_esc_clk.clkr,
2950 [DSI2_ESC_SRC] = &dsi2_esc_src.clkr,
2951 [DSI2_ESC_CLK] = &dsi2_esc_clk.clkr,
2952 [ROT_SRC] = &rot_src.clkr,
2953 [ROT_CLK] = &rot_clk.clkr,
2954 [TV_DAC_CLK] = &tv_dac_clk.clkr,
2955 [HDMI_TV_CLK] = &hdmi_tv_clk.clkr,
2956 [MDP_TV_CLK] = &mdp_tv_clk.clkr,
2957 [TV_SRC] = &tv_src.clkr,
2958 [VCODEC_SRC] = &vcodec_src.clkr,
2959 [VCODEC_CLK] = &vcodec_clk.clkr,
2960 [VFE_SRC] = &vfe_src.clkr,
2961 [VFE_CLK] = &vfe_clk.clkr,
2962 [VFE_CSI_CLK] = &vfe_csi_clk.clkr,
2963 [VPE_SRC] = &vpe_src.clkr,
2964 [VPE_CLK] = &vpe_clk.clkr,
2965 [DSI_PIXEL_SRC] = &dsi1_pixel_src.clkr,
2966 [DSI_PIXEL_CLK] = &dsi1_pixel_clk.clkr,
2967 [CAMCLK0_SRC] = &camclk0_src.clkr,
2968 [CAMCLK0_CLK] = &camclk0_clk.clkr,
2969 [CAMCLK1_SRC] = &camclk1_src.clkr,
2970 [CAMCLK1_CLK] = &camclk1_clk.clkr,
2971 [CAMCLK2_SRC] = &camclk2_src.clkr,
2972 [CAMCLK2_CLK] = &camclk2_clk.clkr,
2973 [CSIPHYTIMER_SRC] = &csiphytimer_src.clkr,
2974 [CSIPHY2_TIMER_CLK] = &csiphy2_timer_clk.clkr,
2975 [CSIPHY1_TIMER_CLK] = &csiphy1_timer_clk.clkr,
2976 [CSIPHY0_TIMER_CLK] = &csiphy0_timer_clk.clkr,
2977 [PLL2] = &pll2.clkr,
2978 [RGB_TV_CLK] = &rgb_tv_clk.clkr,
2979 [NPL_TV_CLK] = &npl_tv_clk.clkr,
2980 [VCAP_AHB_CLK] = &vcap_ahb_clk.clkr,
2981 [VCAP_AXI_CLK] = &vcap_axi_clk.clkr,
2982 [VCAP_SRC] = &vcap_src.clkr,
2983 [VCAP_CLK] = &vcap_clk.clkr,
2984 [VCAP_NPL_CLK] = &vcap_npl_clk.clkr,
2985 [PLL15] = &pll15.clkr,
3100 { .compatible = "qcom,mmcc-msm8960", .data = &mmcc_msm8960_desc },
3101 { .compatible = "qcom,mmcc-apq8064", .data = &mmcc_apq8064_desc },
3111 struct device *dev = &pdev->dev; in mmcc_msm8960_probe()
3115 return -EINVAL; in mmcc_msm8960_probe()
3117 is_8064 = of_device_is_compatible(dev->of_node, "qcom,mmcc-apq8064"); in mmcc_msm8960_probe()
3120 gfx3d_src.clkr.hw.init = &gfx3d_8064_init; in mmcc_msm8960_probe()
3125 regmap = qcom_cc_map(pdev, match->data); in mmcc_msm8960_probe()
3131 return qcom_cc_really_probe(pdev, match->data, regmap); in mmcc_msm8960_probe()
3137 .name = "mmcc-msm8960",
3146 MODULE_ALIAS("platform:mmcc-msm8960");