[PATCH 05/16] clk: samsung: artpec-8: Add clock support for CMU_CMU block

ksk4725@coasia.com posted 16 patches 5 months, 2 weeks ago
There is a newer version of this series
[PATCH 05/16] clk: samsung: artpec-8: Add clock support for CMU_CMU block
Posted by ksk4725@coasia.com 5 months, 2 weeks ago
From: Hakyeong Kim <hgkim05@coasia.com>

Add clock support for below CMU block in ARTPEC-8 SoC.
 - CMU_CMU

Signed-off-by: Ravi Patel <ravi.patel@samsung.com>
Signed-off-by: Hakyeong Kim <hgkim05@coasia.com>
---
 drivers/clk/samsung/clk-artpec8.c | 415 ++++++++++++++++++++++++++++++
 1 file changed, 415 insertions(+)

diff --git a/drivers/clk/samsung/clk-artpec8.c b/drivers/clk/samsung/clk-artpec8.c
index 11a48b2fcc09..1ef9e52ad24b 100644
--- a/drivers/clk/samsung/clk-artpec8.c
+++ b/drivers/clk/samsung/clk-artpec8.c
@@ -14,8 +14,423 @@
 #include "clk.h"
 
 /* NOTE: Must be equal to the last clock ID increased by one */
+#define CMU_CMU_NR_CLK			(DOUT_CLKCMU_VPP_CORE + 1)
 #define CMU_IMEM_NR_CLK			(MOUT_IMEM_JPEG_USER + 1)
 
+/* register offset definitions for cmu_cmu (0x12400000) */
+#define PLL_LOCKTIME_PLL_AUDIO			0x0000
+#define PLL_LOCKTIME_PLL_SHARED0		0x0004
+#define PLL_LOCKTIME_PLL_SHARED1		0x0008
+#define PLL_CON0_PLL_AUDIO			0x0100
+#define PLL_CON0_PLL_SHARED0			0x0120
+#define PLL_CON0_PLL_SHARED1			0x0140
+#define MUX_CLKCMU_2D				0x1000
+#define MUX_CLKCMU_3D				0x1004
+#define MUX_CLKCMU_BUS_BUS			0x1008
+#define MUX_CLKCMU_BUS_DLP			0x100c
+#define MUX_CLKCMU_CDC_CORE			0x1010
+#define MUX_CLKCMU_FSYS_SCAN0			0x1014
+#define MUX_CLKCMU_FSYS_SCAN1			0x1018
+#define MUX_CLKCMU_IMEM_JPEG			0x101c
+#define MUX_CLKCMU_PERI_DISP			0x1020
+#define MUX_CLKCMU_CORE_BUS			0x1024
+#define MUX_CLKCMU_CORE_DLP			0x1028
+#define MUX_CLKCMU_CPUCL_SWITCH			0x1030
+#define MUX_CLKCMU_DLP_CORE			0x1034
+#define MUX_CLKCMU_FSYS_BUS			0x1038
+#define MUX_CLKCMU_FSYS_IP			0x103c
+#define MUX_CLKCMU_IMEM_ACLK			0x1054
+#define MUX_CLKCMU_MIF_BUSP			0x1080
+#define MUX_CLKCMU_MIF_SWITCH			0x1084
+#define MUX_CLKCMU_PERI_IP			0x1088
+#define MUX_CLKCMU_RSP_CORE			0x108c
+#define MUX_CLKCMU_TRFM_CORE			0x1090
+#define MUX_CLKCMU_VCA_ACE			0x1094
+#define MUX_CLKCMU_VCA_OD			0x1098
+#define MUX_CLKCMU_VIO_CORE			0x109c
+#define MUX_CLKCMU_VIP0_CORE			0x10a0
+#define MUX_CLKCMU_VIP1_CORE			0x10a4
+#define MUX_CLKCMU_VPP_CORE			0x10a8
+
+#define DIV_CLKCMU_BUS_BUS			0x1800
+#define DIV_CLKCMU_BUS_DLP			0x1804
+#define DIV_CLKCMU_CDC_CORE			0x1808
+#define DIV_CLKCMU_FSYS_SCAN0			0x180c
+#define DIV_CLKCMU_FSYS_SCAN1			0x1810
+#define DIV_CLKCMU_IMEM_JPEG			0x1814
+#define DIV_CLKCMU_MIF_SWITCH			0x1818
+#define DIV_CLKCMU_CORE_DLP			0x181c
+#define DIV_CLKCMU_CORE_MAIN			0x1820
+#define DIV_CLKCMU_PERI_DISP			0x1824
+#define DIV_CLKCMU_CPUCL_SWITCH			0x1828
+#define DIV_CLKCMU_DLP_CORE			0x182c
+#define DIV_CLKCMU_FSYS_BUS			0x1830
+#define DIV_CLKCMU_FSYS_IP			0x1834
+#define DIV_CLKCMU_VIO_AUDIO			0x1838
+#define DIV_CLKCMU_GPU_2D			0x1848
+#define DIV_CLKCMU_GPU_3D			0x184c
+#define DIV_CLKCMU_IMEM_ACLK			0x1854
+#define DIV_CLKCMU_MIF_BUSP			0x1884
+#define DIV_CLKCMU_PERI_AUDIO			0x1890
+#define DIV_CLKCMU_PERI_IP			0x1894
+#define DIV_CLKCMU_RSP_CORE			0x1898
+#define DIV_CLKCMU_TRFM_CORE			0x189c
+#define DIV_CLKCMU_VCA_ACE			0x18a0
+#define DIV_CLKCMU_VCA_OD			0x18a4
+#define DIV_CLKCMU_VIO_CORE			0x18ac
+#define DIV_CLKCMU_VIP0_CORE			0x18b0
+#define DIV_CLKCMU_VIP1_CORE			0x18b4
+#define DIV_CLKCMU_VPP_CORE			0x18b8
+#define DIV_PLL_SHARED0_DIV2			0x18bc
+#define DIV_PLL_SHARED0_DIV3			0x18c0
+#define DIV_PLL_SHARED0_DIV4			0x18c4
+#define DIV_PLL_SHARED1_DIV2			0x18c8
+#define DIV_PLL_SHARED1_DIV3			0x18cc
+#define DIV_PLL_SHARED1_DIV4			0x18d0
+
+static const unsigned long cmu_cmu_clk_regs[] __initconst = {
+	PLL_LOCKTIME_PLL_AUDIO,
+	PLL_LOCKTIME_PLL_SHARED0,
+	PLL_LOCKTIME_PLL_SHARED1,
+	PLL_CON0_PLL_AUDIO,
+	PLL_CON0_PLL_SHARED0,
+	PLL_CON0_PLL_SHARED1,
+	MUX_CLKCMU_2D,
+	MUX_CLKCMU_3D,
+	MUX_CLKCMU_BUS_BUS,
+	MUX_CLKCMU_BUS_DLP,
+	MUX_CLKCMU_CDC_CORE,
+	MUX_CLKCMU_FSYS_SCAN0,
+	MUX_CLKCMU_FSYS_SCAN1,
+	MUX_CLKCMU_IMEM_JPEG,
+	MUX_CLKCMU_PERI_DISP,
+	MUX_CLKCMU_CORE_BUS,
+	MUX_CLKCMU_CORE_DLP,
+	MUX_CLKCMU_CPUCL_SWITCH,
+	MUX_CLKCMU_DLP_CORE,
+	MUX_CLKCMU_FSYS_BUS,
+	MUX_CLKCMU_FSYS_IP,
+	MUX_CLKCMU_IMEM_ACLK,
+	MUX_CLKCMU_MIF_BUSP,
+	MUX_CLKCMU_MIF_SWITCH,
+	MUX_CLKCMU_PERI_IP,
+	MUX_CLKCMU_RSP_CORE,
+	MUX_CLKCMU_TRFM_CORE,
+	MUX_CLKCMU_VCA_ACE,
+	MUX_CLKCMU_VCA_OD,
+	MUX_CLKCMU_VIO_CORE,
+	MUX_CLKCMU_VIP0_CORE,
+	MUX_CLKCMU_VIP1_CORE,
+	MUX_CLKCMU_VPP_CORE,
+	DIV_CLKCMU_BUS_BUS,
+	DIV_CLKCMU_BUS_DLP,
+	DIV_CLKCMU_CDC_CORE,
+	DIV_CLKCMU_FSYS_SCAN0,
+	DIV_CLKCMU_FSYS_SCAN1,
+	DIV_CLKCMU_IMEM_JPEG,
+	DIV_CLKCMU_MIF_SWITCH,
+	DIV_CLKCMU_CORE_DLP,
+	DIV_CLKCMU_CORE_MAIN,
+	DIV_CLKCMU_PERI_DISP,
+	DIV_CLKCMU_CPUCL_SWITCH,
+	DIV_CLKCMU_DLP_CORE,
+	DIV_CLKCMU_FSYS_BUS,
+	DIV_CLKCMU_FSYS_IP,
+	DIV_CLKCMU_VIO_AUDIO,
+	DIV_CLKCMU_GPU_2D,
+	DIV_CLKCMU_GPU_3D,
+	DIV_CLKCMU_IMEM_ACLK,
+	DIV_CLKCMU_MIF_BUSP,
+	DIV_CLKCMU_PERI_AUDIO,
+	DIV_CLKCMU_PERI_IP,
+	DIV_CLKCMU_RSP_CORE,
+	DIV_CLKCMU_TRFM_CORE,
+	DIV_CLKCMU_VCA_ACE,
+	DIV_CLKCMU_VCA_OD,
+	DIV_CLKCMU_VIO_CORE,
+	DIV_CLKCMU_VIP0_CORE,
+	DIV_CLKCMU_VIP1_CORE,
+	DIV_CLKCMU_VPP_CORE,
+	DIV_PLL_SHARED0_DIV2,
+	DIV_PLL_SHARED0_DIV3,
+	DIV_PLL_SHARED0_DIV4,
+	DIV_PLL_SHARED1_DIV2,
+	DIV_PLL_SHARED1_DIV3,
+	DIV_PLL_SHARED1_DIV4,
+};
+
+static const struct samsung_pll_rate_table artpec8_pll_audio_rates[] = {
+	PLL_36XX_RATE(25 * MHZ, 589823913U, 47, 1, 1, 12184),
+	PLL_36XX_RATE(25 * MHZ, 393215942U, 47, 3, 0, 12184),
+	PLL_36XX_RATE(25 * MHZ, 294911956U, 47, 1, 2, 12184),
+	PLL_36XX_RATE(25 * MHZ, 100000000U, 32, 2, 2, 0),
+	PLL_36XX_RATE(25 * MHZ,  98303985U, 47, 3, 2, 12184),
+	PLL_36XX_RATE(25 * MHZ,  49151992U, 47, 3, 3, 12184),
+};
+
+static const struct samsung_pll_clock cmu_cmu_pll_clks[] __initconst = {
+	PLL(pll_1017x, PLL_SHARED0, "fout_pll_shared0", "fin_pll",
+	    PLL_LOCKTIME_PLL_SHARED0, PLL_CON0_PLL_SHARED0, NULL),
+	PLL(pll_1017x, PLL_SHARED1, "fout_pll_shared1", "fin_pll",
+	    PLL_LOCKTIME_PLL_SHARED1, PLL_CON0_PLL_SHARED1, NULL),
+	PLL(pll_1031x, PLL_AUDIO, "fout_pll_audio", "fin_pll",
+	    PLL_LOCKTIME_PLL_AUDIO, PLL_CON0_PLL_AUDIO, artpec8_pll_audio_rates),
+};
+
+PNAME(mout_clkcmu_bus_bus_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_bus_dlp_p) = {
+	"dout_pll_shared0_div2", "dout_pll_shared0_div4",
+	"dout_pll_shared1_div2", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_core_bus_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared0_div4", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_core_dlp_p) = {
+	"dout_pll_shared0_div2", "dout_pll_sahred1_div2",
+	"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_cpucl_switch_p) = {
+	"dout_pll_shared0_div2", "dout_pll_shared1_div2",
+	"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_fsys_bus_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div2",
+	"dout_pll_shared1_div4", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_fsys_ip_p) = {
+	"dout_pll_shared0_div2", "dout_pll_shared1_div3",
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3" };
+PNAME(mout_clkcmu_fsys_sfmc_p) = {
+	"dout_pll_shared1_div3", "dout_pll_shared0_div2",
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3" };
+PNAME(mout_clkcmu_fsys_scan0_p) = {
+	"dout_pll_shared0_div4", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_fsys_scan1_p) = {
+	"dout_pll_shared0_div4", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_imem_imem_p) = {
+	"dout_pll_shared1_div4", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div2" };
+PNAME(mout_clkcmu_imem_jpeg_p) = {
+	"dout_pll_shared0_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div2", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_cdc_core_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_dlp_core_p) = {
+	"dout_pll_shared0_div2", "dout_pll_shared1_div2",
+	"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_3d_p) = {
+	"dout_pll_shared0_div2", "dout_pll_shared1_div2",
+	"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_2d_p) = {
+	"dout_pll_shared0_div2", "dout_pll_shared1_div2",
+	"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_mif_switch_p) = {
+	"dout_pll_shared0", "dout_pll_shared1",
+	"dout_pll_shared0_div2", "dout_pll_shared0_div3" };
+PNAME(mout_clkcmu_mif_busp_p) = {
+	"dout_pll_shared0_div3", "dout_pll_shared1_div4",
+	"dout_pll_shared0_div4", "dout_pll_shared0_div2" };
+PNAME(mout_clkcmu_peri_disp_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div2",
+	"dout_pll_shared1_div4", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_peri_ip_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div4",
+	"dout_pll_shared1_div4", "dout_pll_shared0_div2" };
+PNAME(mout_clkcmu_rsp_core_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_trfm_core_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_vca_ace_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_vca_od_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_vio_core_p) = {
+	"dout_pll_shared0_div3", "dout_pll_shared0_div2",
+	"dout_pll_shared1_div2", "dout_pll_shared1_div3" };
+PNAME(mout_clkcmu_vip0_core_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_vip1_core_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_vpp_core_p) = {
+	"dout_pll_shared1_div2", "dout_pll_shared0_div3",
+	"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
+PNAME(mout_clkcmu_pll_shared0_p) = { "fin_pll", "fout_pll_shared0" };
+PNAME(mout_clkcmu_pll_shared1_p) = { "fin_pll", "fout_pll_shared1" };
+PNAME(mout_clkcmu_pll_audio_p) = { "fin_pll", "fout_pll_audio" };
+
+static const struct samsung_fixed_factor_clock cmu_fixed_factor_clks[] __initconst = {
+	FFACTOR(DOUT_CLKCMU_OTP, "dout_clkcmu_otp", "fin_pll", 1, 8, 0),
+};
+
+static const struct samsung_mux_clock cmu_cmu_mux_clks[] __initconst = {
+	MUX(0, "mout_clkcmu_pll_shared0", mout_clkcmu_pll_shared0_p,
+	    PLL_CON0_PLL_SHARED0, 4, 1),
+	MUX(0, "mout_clkcmu_pll_shared1", mout_clkcmu_pll_shared1_p,
+	    PLL_CON0_PLL_SHARED1, 4, 1),
+	MUX(0, "mout_clkcmu_pll_audio", mout_clkcmu_pll_audio_p,
+	    PLL_CON0_PLL_AUDIO, 4, 1),
+	MUX(0, "mout_clkcmu_bus_bus", mout_clkcmu_bus_bus_p,
+	    MUX_CLKCMU_BUS_BUS, 0, 2),
+	MUX(0, "mout_clkcmu_bus_dlp", mout_clkcmu_bus_dlp_p,
+	    MUX_CLKCMU_BUS_DLP, 0, 2),
+	MUX(0, "mout_clkcmu_core_bus", mout_clkcmu_core_bus_p,
+	    MUX_CLKCMU_CORE_BUS, 0, 2),
+	MUX(0, "mout_clkcmu_core_dlp", mout_clkcmu_core_dlp_p,
+	    MUX_CLKCMU_CORE_DLP, 0, 2),
+	MUX(0, "mout_clkcmu_cpucl_switch", mout_clkcmu_cpucl_switch_p,
+	    MUX_CLKCMU_CPUCL_SWITCH, 0, 3),
+	MUX(0, "mout_clkcmu_fsys_bus", mout_clkcmu_fsys_bus_p,
+	    MUX_CLKCMU_FSYS_BUS, 0, 2),
+	MUX(0, "mout_clkcmu_fsys_ip", mout_clkcmu_fsys_ip_p,
+	    MUX_CLKCMU_FSYS_IP, 0, 2),
+	MUX(0, "mout_clkcmu_fsys_scan0", mout_clkcmu_fsys_scan0_p,
+	    MUX_CLKCMU_FSYS_SCAN0, 0, 1),
+	MUX(0, "mout_clkcmu_fsys_scan1", mout_clkcmu_fsys_scan1_p,
+	    MUX_CLKCMU_FSYS_SCAN1, 0, 1),
+	MUX(0, "mout_clkcmu_imem_imem", mout_clkcmu_imem_imem_p,
+	    MUX_CLKCMU_IMEM_ACLK, 0, 2),
+	MUX(0, "mout_clkcmu_imem_jpeg", mout_clkcmu_imem_jpeg_p,
+	    MUX_CLKCMU_IMEM_JPEG, 0, 2),
+	nMUX(0, "mout_clkcmu_cdc_core", mout_clkcmu_cdc_core_p,
+	     MUX_CLKCMU_CDC_CORE, 0, 2),
+	nMUX(0, "mout_clkcmu_dlp_core", mout_clkcmu_dlp_core_p,
+	     MUX_CLKCMU_DLP_CORE, 0, 2),
+	MUX(0, "mout_clkcmu_3d", mout_clkcmu_3d_p,
+	    MUX_CLKCMU_3D, 0, 2),
+	MUX(0, "mout_clkcmu_2d", mout_clkcmu_2d_p,
+	    MUX_CLKCMU_2D, 0, 2),
+	MUX(0, "mout_clkcmu_mif_switch", mout_clkcmu_mif_switch_p,
+	    MUX_CLKCMU_MIF_SWITCH, 0, 2),
+	MUX(0, "mout_clkcmu_mif_busp", mout_clkcmu_mif_busp_p,
+	    MUX_CLKCMU_MIF_BUSP, 0, 2),
+	MUX(0, "mout_clkcmu_peri_disp", mout_clkcmu_peri_disp_p,
+	    MUX_CLKCMU_PERI_DISP, 0, 2),
+	MUX(0, "mout_clkcmu_peri_ip", mout_clkcmu_peri_ip_p,
+	    MUX_CLKCMU_PERI_IP, 0, 2),
+	MUX(0, "mout_clkcmu_rsp_core", mout_clkcmu_rsp_core_p,
+	    MUX_CLKCMU_RSP_CORE, 0, 2),
+	nMUX(0, "mout_clkcmu_trfm_core", mout_clkcmu_trfm_core_p,
+	     MUX_CLKCMU_TRFM_CORE, 0, 2),
+	MUX(0, "mout_clkcmu_vca_ace", mout_clkcmu_vca_ace_p,
+	    MUX_CLKCMU_VCA_ACE, 0, 2),
+	MUX(0, "mout_clkcmu_vca_od", mout_clkcmu_vca_od_p,
+	    MUX_CLKCMU_VCA_OD, 0, 2),
+	MUX(0, "mout_clkcmu_vio_core", mout_clkcmu_vio_core_p,
+	    MUX_CLKCMU_VIO_CORE, 0, 2),
+	nMUX(0, "mout_clkcmu_vip0_core", mout_clkcmu_vip0_core_p,
+	     MUX_CLKCMU_VIP0_CORE, 0, 2),
+	nMUX(0, "mout_clkcmu_vip1_core", mout_clkcmu_vip1_core_p,
+	     MUX_CLKCMU_VIP1_CORE, 0, 2),
+	nMUX(0, "mout_clkcmu_vpp_core", mout_clkcmu_vpp_core_p,
+	     MUX_CLKCMU_VPP_CORE, 0, 2),
+};
+
+static const struct samsung_div_clock cmu_cmu_div_clks[] __initconst = {
+	DIV(DOUT_PLL_SHARED0_DIV2, "dout_pll_shared0_div2",
+	    "mout_clkcmu_pll_shared0", DIV_PLL_SHARED0_DIV2, 0, 1),
+	DIV(DOUT_PLL_SHARED0_DIV3, "dout_pll_shared0_div3",
+	    "mout_clkcmu_pll_shared0", DIV_PLL_SHARED0_DIV3, 0, 2),
+	DIV(DOUT_PLL_SHARED0_DIV4, "dout_pll_shared0_div4",
+	    "dout_pll_shared0_div2", DIV_PLL_SHARED0_DIV4, 0, 1),
+	DIV(DOUT_PLL_SHARED1_DIV2, "dout_pll_shared1_div2",
+	    "mout_clkcmu_pll_shared1", DIV_PLL_SHARED1_DIV2, 0, 1),
+	DIV(DOUT_PLL_SHARED1_DIV3, "dout_pll_shared1_div3",
+	    "mout_clkcmu_pll_shared1", DIV_PLL_SHARED1_DIV3, 0, 2),
+	DIV(DOUT_PLL_SHARED1_DIV4, "dout_pll_shared1_div4",
+	    "dout_pll_shared1_div2", DIV_PLL_SHARED1_DIV4, 0, 1),
+	DIV(DOUT_CLKCMU_BUS_BUS, "dout_clkcmu_bus_bus",
+	    "mout_clkcmu_bus_bus", DIV_CLKCMU_BUS_BUS, 0, 4),
+	DIV(DOUT_CLKCMU_BUS_DLP, "dout_clkcmu_bus_dlp",
+	    "mout_clkcmu_bus_dlp", DIV_CLKCMU_BUS_DLP, 0, 4),
+	DIV(DOUT_CLKCMU_CORE_MAIN, "dout_clkcmu_core_main",
+	    "mout_clkcmu_core_bus", DIV_CLKCMU_CORE_MAIN, 0, 4),
+	DIV(DOUT_CLKCMU_CORE_DLP, "dout_clkcmu_core_dlp",
+	    "mout_clkcmu_core_dlp", DIV_CLKCMU_CORE_DLP, 0, 4),
+	DIV(DOUT_CLKCMU_CPUCL_SWITCH, "dout_clkcmu_cpucl_switch",
+	    "mout_clkcmu_cpucl_switch", DIV_CLKCMU_CPUCL_SWITCH, 0, 3),
+	DIV(DOUT_CLKCMU_FSYS_BUS, "dout_clkcmu_fsys_bus",
+	    "mout_clkcmu_fsys_bus", DIV_CLKCMU_FSYS_BUS, 0, 4),
+	DIV(DOUT_CLKCMU_FSYS_IP, "dout_clkcmu_fsys_ip",
+	    "mout_clkcmu_fsys_ip", DIV_CLKCMU_FSYS_IP, 0, 9),
+	DIV(DOUT_CLKCMU_FSYS_SCAN0, "dout_clkcmu_fsys_scan0",
+	    "mout_clkcmu_fsys_scan0", DIV_CLKCMU_FSYS_SCAN0, 0, 4),
+	DIV(DOUT_CLKCMU_FSYS_SCAN1, "dout_clkcmu_fsys_scan1",
+	    "mout_clkcmu_fsys_scan1", DIV_CLKCMU_FSYS_SCAN1, 0, 4),
+	DIV(DOUT_CLKCMU_IMEM_ACLK, "dout_clkcmu_imem_aclk",
+	    "mout_clkcmu_imem_imem", DIV_CLKCMU_IMEM_ACLK, 0, 4),
+	DIV(DOUT_CLKCMU_IMEM_JPEG, "dout_clkcmu_imem_jpeg",
+	    "mout_clkcmu_imem_jpeg", DIV_CLKCMU_IMEM_JPEG, 0, 4),
+	DIV_F(DOUT_CLKCMU_CDC_CORE, "dout_clkcmu_cdc_core",
+	      "mout_clkcmu_cdc_core", DIV_CLKCMU_CDC_CORE, 0, 4,
+	      CLK_SET_RATE_PARENT, 0),
+	DIV_F(DOUT_CLKCMU_DLP_CORE, "dout_clkcmu_dlp_core",
+	      "mout_clkcmu_dlp_core", DIV_CLKCMU_DLP_CORE, 0, 4,
+	      CLK_SET_RATE_PARENT, 0),
+	DIV(DOUT_CLKCMU_GPU_3D, "dout_clkcmu_gpu_3d",
+	    "mout_clkcmu_3d", DIV_CLKCMU_GPU_3D, 0, 3),
+	DIV(DOUT_CLKCMU_GPU_2D, "dout_clkcmu_gpu_2d",
+	    "mout_clkcmu_2d", DIV_CLKCMU_GPU_2D, 0, 4),
+	DIV(DOUT_CLKCMU_MIF_SWITCH, "dout_clkcmu_mif_switch",
+	    "mout_clkcmu_mif_switch", DIV_CLKCMU_MIF_SWITCH, 0, 4),
+	DIV(DOUT_CLKCMU_MIF_BUSP, "dout_clkcmu_mif_busp",
+	    "mout_clkcmu_mif_busp", DIV_CLKCMU_MIF_BUSP, 0, 3),
+	DIV(DOUT_CLKCMU_PERI_DISP, "dout_clkcmu_peri_disp",
+	    "mout_clkcmu_peri_disp", DIV_CLKCMU_PERI_DISP, 0, 4),
+	DIV(DOUT_CLKCMU_PERI_IP, "dout_clkcmu_peri_ip",
+	    "mout_clkcmu_peri_ip", DIV_CLKCMU_PERI_IP, 0, 4),
+	DIV(DOUT_CLKCMU_PERI_AUDIO, "dout_clkcmu_peri_audio",
+	    "mout_clkcmu_pll_audio", DIV_CLKCMU_PERI_AUDIO, 0, 4),
+	DIV(DOUT_CLKCMU_RSP_CORE, "dout_clkcmu_rsp_core",
+	    "mout_clkcmu_rsp_core", DIV_CLKCMU_RSP_CORE, 0, 4),
+	DIV_F(DOUT_CLKCMU_TRFM_CORE, "dout_clkcmu_trfm_core",
+	      "mout_clkcmu_trfm_core", DIV_CLKCMU_TRFM_CORE, 0, 4,
+	      CLK_SET_RATE_PARENT, 0),
+	DIV(DOUT_CLKCMU_VCA_ACE, "dout_clkcmu_vca_ace",
+	    "mout_clkcmu_vca_ace", DIV_CLKCMU_VCA_ACE, 0, 4),
+	DIV(DOUT_CLKCMU_VCA_OD, "dout_clkcmu_vca_od",
+	    "mout_clkcmu_vca_od", DIV_CLKCMU_VCA_OD, 0, 4),
+	DIV(DOUT_CLKCMU_VIO_CORE, "dout_clkcmu_vio_core",
+	    "mout_clkcmu_vio_core", DIV_CLKCMU_VIO_CORE, 0, 4),
+	DIV(DOUT_CLKCMU_VIO_AUDIO, "dout_clkcmu_vio_audio",
+	    "mout_clkcmu_pll_audio", DIV_CLKCMU_VIO_AUDIO, 0, 4),
+	DIV_F(DOUT_CLKCMU_VIP0_CORE, "dout_clkcmu_vip0_core",
+	      "mout_clkcmu_vip0_core", DIV_CLKCMU_VIP0_CORE, 0, 4,
+	      CLK_SET_RATE_PARENT, 0),
+	DIV_F(DOUT_CLKCMU_VIP1_CORE, "dout_clkcmu_vip1_core",
+	      "mout_clkcmu_vip1_core", DIV_CLKCMU_VIP1_CORE, 0, 4,
+	      CLK_SET_RATE_PARENT, 0),
+	DIV_F(DOUT_CLKCMU_VPP_CORE, "dout_clkcmu_vpp_core",
+	      "mout_clkcmu_vpp_core", DIV_CLKCMU_VPP_CORE, 0, 4,
+	      CLK_SET_RATE_PARENT, 0),
+};
+
+static const struct samsung_cmu_info cmu_cmu_info __initconst = {
+	.pll_clks		= cmu_cmu_pll_clks,
+	.nr_pll_clks		= ARRAY_SIZE(cmu_cmu_pll_clks),
+	.fixed_factor_clks	= cmu_fixed_factor_clks,
+	.nr_fixed_factor_clks	= ARRAY_SIZE(cmu_fixed_factor_clks),
+	.mux_clks		= cmu_cmu_mux_clks,
+	.nr_mux_clks		= ARRAY_SIZE(cmu_cmu_mux_clks),
+	.div_clks		= cmu_cmu_div_clks,
+	.nr_div_clks		= ARRAY_SIZE(cmu_cmu_div_clks),
+	.nr_clk_ids		= CMU_CMU_NR_CLK,
+	.clk_regs		= cmu_cmu_clk_regs,
+	.nr_clk_regs		= ARRAY_SIZE(cmu_cmu_clk_regs),
+};
+
+static void __init artpec8_clk_cmu_cmu_init(struct device_node *np)
+{
+	samsung_cmu_register_one(np, &cmu_cmu_info);
+}
+
+CLK_OF_DECLARE(artpec8_clk_cmu_cmu, "axis,artpec8-cmu-cmu",
+	       artpec8_clk_cmu_cmu_init);
+
 /* Register Offset definitions for CMU_IMEM (0x10010000) */
 #define PLL_CON0_MUX_CLK_IMEM_ACLK_USER			0x0100
 #define PLL_CON0_MUX_CLK_IMEM_JPEG_USER			0x0120
-- 
2.34.1
Re: [PATCH 05/16] clk: samsung: artpec-8: Add clock support for CMU_CMU block
Posted by kernel test robot 5 months, 2 weeks ago
Hi,

kernel test robot noticed the following build warnings:

[auto build test WARNING on krzk/for-next]
[also build test WARNING on robh/for-next pinctrl-samsung/for-next linus/master v6.16-rc5 next-20250710]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/ksk4725-coasia-com/dt-bindings-clock-Add-CMU-bindings-definitions-for-ARTPEC-8-platform/20250710-082940
base:   https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git for-next
patch link:    https://lore.kernel.org/r/20250710002047.1573841-6-ksk4725%40coasia.com
patch subject: [PATCH 05/16] clk: samsung: artpec-8: Add clock support for CMU_CMU block
config: loongarch-allyesconfig (https://download.01.org/0day-ci/archive/20250711/202507110637.uCFXqy3U-lkp@intel.com/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 01c97b4953e87ae455bd4c41e3de3f0f0f29c61c)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250711/202507110637.uCFXqy3U-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507110637.uCFXqy3U-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/clk/samsung/clk-artpec8.c:201:7: warning: unused variable 'mout_clkcmu_fsys_sfmc_p' [-Wunused-const-variable]
     201 | PNAME(mout_clkcmu_fsys_sfmc_p) = {
         |       ^~~~~~~~~~~~~~~~~~~~~~~
   1 warning generated.


vim +/mout_clkcmu_fsys_sfmc_p +201 drivers/clk/samsung/clk-artpec8.c

   179	
   180	PNAME(mout_clkcmu_bus_bus_p) = {
   181		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   182		"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
   183	PNAME(mout_clkcmu_bus_dlp_p) = {
   184		"dout_pll_shared0_div2", "dout_pll_shared0_div4",
   185		"dout_pll_shared1_div2", "dout_pll_shared1_div4" };
   186	PNAME(mout_clkcmu_core_bus_p) = {
   187		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   188		"dout_pll_shared0_div4", "dout_pll_shared1_div3" };
   189	PNAME(mout_clkcmu_core_dlp_p) = {
   190		"dout_pll_shared0_div2", "dout_pll_sahred1_div2",
   191		"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
   192	PNAME(mout_clkcmu_cpucl_switch_p) = {
   193		"dout_pll_shared0_div2", "dout_pll_shared1_div2",
   194		"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
   195	PNAME(mout_clkcmu_fsys_bus_p) = {
   196		"dout_pll_shared1_div2", "dout_pll_shared0_div2",
   197		"dout_pll_shared1_div4", "dout_pll_shared1_div3" };
   198	PNAME(mout_clkcmu_fsys_ip_p) = {
   199		"dout_pll_shared0_div2", "dout_pll_shared1_div3",
   200		"dout_pll_shared1_div2", "dout_pll_shared0_div3" };
 > 201	PNAME(mout_clkcmu_fsys_sfmc_p) = {
   202		"dout_pll_shared1_div3", "dout_pll_shared0_div2",
   203		"dout_pll_shared1_div2", "dout_pll_shared0_div3" };
   204	PNAME(mout_clkcmu_fsys_scan0_p) = {
   205		"dout_pll_shared0_div4", "dout_pll_shared1_div4" };
   206	PNAME(mout_clkcmu_fsys_scan1_p) = {
   207		"dout_pll_shared0_div4", "dout_pll_shared1_div4" };
   208	PNAME(mout_clkcmu_imem_imem_p) = {
   209		"dout_pll_shared1_div4", "dout_pll_shared0_div3",
   210		"dout_pll_shared1_div3", "dout_pll_shared1_div2" };
   211	PNAME(mout_clkcmu_imem_jpeg_p) = {
   212		"dout_pll_shared0_div2", "dout_pll_shared0_div3",
   213		"dout_pll_shared1_div2", "dout_pll_shared1_div3" };
   214	PNAME(mout_clkcmu_cdc_core_p) = {
   215		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   216		"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
   217	PNAME(mout_clkcmu_dlp_core_p) = {
   218		"dout_pll_shared0_div2", "dout_pll_shared1_div2",
   219		"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
   220	PNAME(mout_clkcmu_3d_p) = {
   221		"dout_pll_shared0_div2", "dout_pll_shared1_div2",
   222		"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
   223	PNAME(mout_clkcmu_2d_p) = {
   224		"dout_pll_shared0_div2", "dout_pll_shared1_div2",
   225		"dout_pll_shared0_div3", "dout_pll_shared1_div3" };
   226	PNAME(mout_clkcmu_mif_switch_p) = {
   227		"dout_pll_shared0", "dout_pll_shared1",
   228		"dout_pll_shared0_div2", "dout_pll_shared0_div3" };
   229	PNAME(mout_clkcmu_mif_busp_p) = {
   230		"dout_pll_shared0_div3", "dout_pll_shared1_div4",
   231		"dout_pll_shared0_div4", "dout_pll_shared0_div2" };
   232	PNAME(mout_clkcmu_peri_disp_p) = {
   233		"dout_pll_shared1_div2", "dout_pll_shared0_div2",
   234		"dout_pll_shared1_div4", "dout_pll_shared1_div3" };
   235	PNAME(mout_clkcmu_peri_ip_p) = {
   236		"dout_pll_shared1_div2", "dout_pll_shared0_div4",
   237		"dout_pll_shared1_div4", "dout_pll_shared0_div2" };
   238	PNAME(mout_clkcmu_rsp_core_p) = {
   239		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   240		"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
   241	PNAME(mout_clkcmu_trfm_core_p) = {
   242		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   243		"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
   244	PNAME(mout_clkcmu_vca_ace_p) = {
   245		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   246		"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
   247	PNAME(mout_clkcmu_vca_od_p) = {
   248		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   249		"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
   250	PNAME(mout_clkcmu_vio_core_p) = {
   251		"dout_pll_shared0_div3", "dout_pll_shared0_div2",
   252		"dout_pll_shared1_div2", "dout_pll_shared1_div3" };
   253	PNAME(mout_clkcmu_vip0_core_p) = {
   254		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   255		"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
   256	PNAME(mout_clkcmu_vip1_core_p) = {
   257		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   258		"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
   259	PNAME(mout_clkcmu_vpp_core_p) = {
   260		"dout_pll_shared1_div2", "dout_pll_shared0_div3",
   261		"dout_pll_shared1_div3", "dout_pll_shared1_div4" };
   262	PNAME(mout_clkcmu_pll_shared0_p) = { "fin_pll", "fout_pll_shared0" };
   263	PNAME(mout_clkcmu_pll_shared1_p) = { "fin_pll", "fout_pll_shared1" };
   264	PNAME(mout_clkcmu_pll_audio_p) = { "fin_pll", "fout_pll_audio" };
   265	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki