.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Copyright (c) 2014 MediaTek Inc. |
---|
3 | 4 | * Author: James Liao <jamesjj.liao@mediatek.com> |
---|
4 | | - * |
---|
5 | | - * This program is free software; you can redistribute it and/or modify |
---|
6 | | - * it under the terms of the GNU General Public License version 2 as |
---|
7 | | - * published by the Free Software Foundation. |
---|
8 | | - * |
---|
9 | | - * This program is distributed in the hope that it will be useful, |
---|
10 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
11 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
12 | | - * GNU General Public License for more details. |
---|
13 | 5 | */ |
---|
14 | 6 | |
---|
15 | 7 | #include <linux/clk.h> |
---|
.. | .. |
---|
533 | 525 | "univpll" |
---|
534 | 526 | }; |
---|
535 | 527 | |
---|
536 | | -static const char * const ca57_parents[] __initconst = { |
---|
| 528 | +static const char * const ca72_parents[] __initconst = { |
---|
537 | 529 | "clk26m", |
---|
538 | 530 | "armca15pll", |
---|
539 | 531 | "mainpll", |
---|
.. | .. |
---|
542 | 534 | |
---|
543 | 535 | static const struct mtk_composite cpu_muxes[] __initconst = { |
---|
544 | 536 | MUX(CLK_INFRA_CA53SEL, "infra_ca53_sel", ca53_parents, 0x0000, 0, 2), |
---|
545 | | - MUX(CLK_INFRA_CA57SEL, "infra_ca57_sel", ca57_parents, 0x0000, 2, 2), |
---|
| 537 | + MUX(CLK_INFRA_CA72SEL, "infra_ca72_sel", ca72_parents, 0x0000, 2, 2), |
---|
546 | 538 | }; |
---|
547 | 539 | |
---|
548 | 540 | static const struct mtk_composite top_muxes[] __initconst = { |
---|
.. | .. |
---|
759 | 751 | GATE_IMG(CLK_IMG_SEN_CAM, "img_sen_cam", "mm_sel", 8), |
---|
760 | 752 | GATE_IMG(CLK_IMG_CAM_SV, "img_cam_sv", "mm_sel", 9), |
---|
761 | 753 | GATE_IMG(CLK_IMG_FD, "img_fd", "mm_sel", 11), |
---|
762 | | -}; |
---|
763 | | - |
---|
764 | | -static const struct mtk_gate_regs mm0_cg_regs __initconst = { |
---|
765 | | - .set_ofs = 0x0104, |
---|
766 | | - .clr_ofs = 0x0108, |
---|
767 | | - .sta_ofs = 0x0100, |
---|
768 | | -}; |
---|
769 | | - |
---|
770 | | -static const struct mtk_gate_regs mm1_cg_regs __initconst = { |
---|
771 | | - .set_ofs = 0x0114, |
---|
772 | | - .clr_ofs = 0x0118, |
---|
773 | | - .sta_ofs = 0x0110, |
---|
774 | | -}; |
---|
775 | | - |
---|
776 | | -#define GATE_MM0(_id, _name, _parent, _shift) { \ |
---|
777 | | - .id = _id, \ |
---|
778 | | - .name = _name, \ |
---|
779 | | - .parent_name = _parent, \ |
---|
780 | | - .regs = &mm0_cg_regs, \ |
---|
781 | | - .shift = _shift, \ |
---|
782 | | - .ops = &mtk_clk_gate_ops_setclr, \ |
---|
783 | | - } |
---|
784 | | - |
---|
785 | | -#define GATE_MM1(_id, _name, _parent, _shift) { \ |
---|
786 | | - .id = _id, \ |
---|
787 | | - .name = _name, \ |
---|
788 | | - .parent_name = _parent, \ |
---|
789 | | - .regs = &mm1_cg_regs, \ |
---|
790 | | - .shift = _shift, \ |
---|
791 | | - .ops = &mtk_clk_gate_ops_setclr, \ |
---|
792 | | - } |
---|
793 | | - |
---|
794 | | -static const struct mtk_gate mm_clks[] __initconst = { |
---|
795 | | - /* MM0 */ |
---|
796 | | - GATE_MM0(CLK_MM_SMI_COMMON, "mm_smi_common", "mm_sel", 0), |
---|
797 | | - GATE_MM0(CLK_MM_SMI_LARB0, "mm_smi_larb0", "mm_sel", 1), |
---|
798 | | - GATE_MM0(CLK_MM_CAM_MDP, "mm_cam_mdp", "mm_sel", 2), |
---|
799 | | - GATE_MM0(CLK_MM_MDP_RDMA0, "mm_mdp_rdma0", "mm_sel", 3), |
---|
800 | | - GATE_MM0(CLK_MM_MDP_RDMA1, "mm_mdp_rdma1", "mm_sel", 4), |
---|
801 | | - GATE_MM0(CLK_MM_MDP_RSZ0, "mm_mdp_rsz0", "mm_sel", 5), |
---|
802 | | - GATE_MM0(CLK_MM_MDP_RSZ1, "mm_mdp_rsz1", "mm_sel", 6), |
---|
803 | | - GATE_MM0(CLK_MM_MDP_RSZ2, "mm_mdp_rsz2", "mm_sel", 7), |
---|
804 | | - GATE_MM0(CLK_MM_MDP_TDSHP0, "mm_mdp_tdshp0", "mm_sel", 8), |
---|
805 | | - GATE_MM0(CLK_MM_MDP_TDSHP1, "mm_mdp_tdshp1", "mm_sel", 9), |
---|
806 | | - GATE_MM0(CLK_MM_MDP_WDMA, "mm_mdp_wdma", "mm_sel", 11), |
---|
807 | | - GATE_MM0(CLK_MM_MDP_WROT0, "mm_mdp_wrot0", "mm_sel", 12), |
---|
808 | | - GATE_MM0(CLK_MM_MDP_WROT1, "mm_mdp_wrot1", "mm_sel", 13), |
---|
809 | | - GATE_MM0(CLK_MM_FAKE_ENG, "mm_fake_eng", "mm_sel", 14), |
---|
810 | | - GATE_MM0(CLK_MM_MUTEX_32K, "mm_mutex_32k", "rtc_sel", 15), |
---|
811 | | - GATE_MM0(CLK_MM_DISP_OVL0, "mm_disp_ovl0", "mm_sel", 16), |
---|
812 | | - GATE_MM0(CLK_MM_DISP_OVL1, "mm_disp_ovl1", "mm_sel", 17), |
---|
813 | | - GATE_MM0(CLK_MM_DISP_RDMA0, "mm_disp_rdma0", "mm_sel", 18), |
---|
814 | | - GATE_MM0(CLK_MM_DISP_RDMA1, "mm_disp_rdma1", "mm_sel", 19), |
---|
815 | | - GATE_MM0(CLK_MM_DISP_RDMA2, "mm_disp_rdma2", "mm_sel", 20), |
---|
816 | | - GATE_MM0(CLK_MM_DISP_WDMA0, "mm_disp_wdma0", "mm_sel", 21), |
---|
817 | | - GATE_MM0(CLK_MM_DISP_WDMA1, "mm_disp_wdma1", "mm_sel", 22), |
---|
818 | | - GATE_MM0(CLK_MM_DISP_COLOR0, "mm_disp_color0", "mm_sel", 23), |
---|
819 | | - GATE_MM0(CLK_MM_DISP_COLOR1, "mm_disp_color1", "mm_sel", 24), |
---|
820 | | - GATE_MM0(CLK_MM_DISP_AAL, "mm_disp_aal", "mm_sel", 25), |
---|
821 | | - GATE_MM0(CLK_MM_DISP_GAMMA, "mm_disp_gamma", "mm_sel", 26), |
---|
822 | | - GATE_MM0(CLK_MM_DISP_UFOE, "mm_disp_ufoe", "mm_sel", 27), |
---|
823 | | - GATE_MM0(CLK_MM_DISP_SPLIT0, "mm_disp_split0", "mm_sel", 28), |
---|
824 | | - GATE_MM0(CLK_MM_DISP_SPLIT1, "mm_disp_split1", "mm_sel", 29), |
---|
825 | | - GATE_MM0(CLK_MM_DISP_MERGE, "mm_disp_merge", "mm_sel", 30), |
---|
826 | | - GATE_MM0(CLK_MM_DISP_OD, "mm_disp_od", "mm_sel", 31), |
---|
827 | | - /* MM1 */ |
---|
828 | | - GATE_MM1(CLK_MM_DISP_PWM0MM, "mm_disp_pwm0mm", "mm_sel", 0), |
---|
829 | | - GATE_MM1(CLK_MM_DISP_PWM026M, "mm_disp_pwm026m", "pwm_sel", 1), |
---|
830 | | - GATE_MM1(CLK_MM_DISP_PWM1MM, "mm_disp_pwm1mm", "mm_sel", 2), |
---|
831 | | - GATE_MM1(CLK_MM_DISP_PWM126M, "mm_disp_pwm126m", "pwm_sel", 3), |
---|
832 | | - GATE_MM1(CLK_MM_DSI0_ENGINE, "mm_dsi0_engine", "mm_sel", 4), |
---|
833 | | - GATE_MM1(CLK_MM_DSI0_DIGITAL, "mm_dsi0_digital", "dsi0_dig", 5), |
---|
834 | | - GATE_MM1(CLK_MM_DSI1_ENGINE, "mm_dsi1_engine", "mm_sel", 6), |
---|
835 | | - GATE_MM1(CLK_MM_DSI1_DIGITAL, "mm_dsi1_digital", "dsi1_dig", 7), |
---|
836 | | - GATE_MM1(CLK_MM_DPI_PIXEL, "mm_dpi_pixel", "dpi0_sel", 8), |
---|
837 | | - GATE_MM1(CLK_MM_DPI_ENGINE, "mm_dpi_engine", "mm_sel", 9), |
---|
838 | | - GATE_MM1(CLK_MM_DPI1_PIXEL, "mm_dpi1_pixel", "lvds_pxl", 10), |
---|
839 | | - GATE_MM1(CLK_MM_DPI1_ENGINE, "mm_dpi1_engine", "mm_sel", 11), |
---|
840 | | - GATE_MM1(CLK_MM_HDMI_PIXEL, "mm_hdmi_pixel", "dpi0_sel", 12), |
---|
841 | | - GATE_MM1(CLK_MM_HDMI_PLLCK, "mm_hdmi_pllck", "hdmi_sel", 13), |
---|
842 | | - GATE_MM1(CLK_MM_HDMI_AUDIO, "mm_hdmi_audio", "apll1", 14), |
---|
843 | | - GATE_MM1(CLK_MM_HDMI_SPDIF, "mm_hdmi_spdif", "apll2", 15), |
---|
844 | | - GATE_MM1(CLK_MM_LVDS_PIXEL, "mm_lvds_pixel", "lvds_pxl", 16), |
---|
845 | | - GATE_MM1(CLK_MM_LVDS_CTS, "mm_lvds_cts", "lvds_cts", 17), |
---|
846 | | - GATE_MM1(CLK_MM_SMI_LARB4, "mm_smi_larb4", "mm_sel", 18), |
---|
847 | | - GATE_MM1(CLK_MM_HDMI_HDCP, "mm_hdmi_hdcp", "hdcp_sel", 19), |
---|
848 | | - GATE_MM1(CLK_MM_HDMI_HDCP24M, "mm_hdmi_hdcp24m", "hdcp_24m_sel", 20), |
---|
849 | 754 | }; |
---|
850 | 755 | |
---|
851 | 756 | static const struct mtk_gate_regs vdec0_cg_regs __initconst = { |
---|
.. | .. |
---|
1151 | 1056 | __func__, r); |
---|
1152 | 1057 | } |
---|
1153 | 1058 | CLK_OF_DECLARE(mtk_imgsys, "mediatek,mt8173-imgsys", mtk_imgsys_init); |
---|
1154 | | - |
---|
1155 | | -static void __init mtk_mmsys_init(struct device_node *node) |
---|
1156 | | -{ |
---|
1157 | | - struct clk_onecell_data *clk_data; |
---|
1158 | | - int r; |
---|
1159 | | - |
---|
1160 | | - clk_data = mtk_alloc_clk_data(CLK_MM_NR_CLK); |
---|
1161 | | - |
---|
1162 | | - mtk_clk_register_gates(node, mm_clks, ARRAY_SIZE(mm_clks), |
---|
1163 | | - clk_data); |
---|
1164 | | - |
---|
1165 | | - r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); |
---|
1166 | | - if (r) |
---|
1167 | | - pr_err("%s(): could not register clock provider: %d\n", |
---|
1168 | | - __func__, r); |
---|
1169 | | -} |
---|
1170 | | -CLK_OF_DECLARE(mtk_mmsys, "mediatek,mt8173-mmsys", mtk_mmsys_init); |
---|
1171 | 1059 | |
---|
1172 | 1060 | static void __init mtk_vdecsys_init(struct device_node *node) |
---|
1173 | 1061 | { |
---|