diff --git a/drivers/clk/rockchip/Kconfig b/drivers/clk/rockchip/Kconfig index 337cf3ef8287..7c0a7795b92e 100644 --- a/drivers/clk/rockchip/Kconfig +++ b/drivers/clk/rockchip/Kconfig @@ -166,18 +166,31 @@ config ROCKCHIP_CLK_PVTM help Say y here to enable clk pvtm. +config ROCKCHIP_DDRCLK + bool + config ROCKCHIP_DDRCLK_SCPI bool "Rockchip DDR Clk SCPI" default y if RK3368_SCPI_PROTOCOL + select ROCKCHIP_DDRCLK help Say y here to enable ddr clk scpi. config ROCKCHIP_DDRCLK_SIP bool "Rockchip DDR Clk SIP" default y if CPU_RK3399 + select ROCKCHIP_DDRCLK help Say y here to enable ddr clk sip. +config ROCKCHIP_DDRCLK_SIP_V2 + bool "Rockchip DDR Clk SIP V2" + default y if CPU_PX30 || CPU_RK1808 || CPU_RK312X || CPU_RK322X || \ + CPU_RK3288 || CPU_RK3308 || CPU_RK3328 || CPU_RV1126 + select ROCKCHIP_DDRCLK + help + Say y here to enable ddr clk sip v2. + config ROCKCHIP_PLL_RK3066 bool "Rockchip PLL Type RK3066" default y if CPU_RK30XX || CPU_RK3188 || \ diff --git a/drivers/clk/rockchip/Makefile b/drivers/clk/rockchip/Makefile index 394bf71850fb..51e4cb85abef 100644 --- a/drivers/clk/rockchip/Makefile +++ b/drivers/clk/rockchip/Makefile @@ -12,7 +12,7 @@ clk-rockchip-y += clk-cpu.o clk-rockchip-y += clk-half-divider.o clk-rockchip-y += clk-mmc-phase.o clk-rockchip-y += clk-muxgrf.o -clk-rockchip-y += clk-ddr.o +clk-rockchip-$(CONFIG_ROCKCHIP_DDRCLK) += clk-ddr.o clk-rockchip-$(CONFIG_ROCKCHIP_CLK_INV) += clk-inverter.o clk-rockchip-$(CONFIG_ROCKCHIP_CLK_PVTM) += clk-pvtm.o clk-rockchip-$(CONFIG_RESET_CONTROLLER) += softrst.o diff --git a/drivers/clk/rockchip/clk-ddr.c b/drivers/clk/rockchip/clk-ddr.c index 0bed45fb2aea..aca0539d216c 100644 --- a/drivers/clk/rockchip/clk-ddr.c +++ b/drivers/clk/rockchip/clk-ddr.c @@ -269,9 +269,11 @@ struct clk *rockchip_clk_register_ddrclk(const char *name, int flags, init.ops = &rockchip_ddrclk_scpi_ops; break; #endif +#ifdef CONFIG_ROCKCHIP_DDRCLK_SIP_V2 case ROCKCHIP_DDRCLK_SIP_V2: init.ops = &rockchip_ddrclk_sip_ops_v2; break; +#endif default: pr_err("%s: unsupported ddrclk type %d\n", __func__, ddr_flag); kfree(ddrclk); diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h index a0dde9f2da3b..6852eebb63be 100644 --- a/drivers/clk/rockchip/clk.h +++ b/drivers/clk/rockchip/clk.h @@ -596,6 +596,7 @@ struct clk *rockchip_clk_register_mmc(const char *name, #define ROCKCHIP_DDRCLK_SCPI 0x02 #define ROCKCHIP_DDRCLK_SIP_V2 0x03 +#ifdef CONFIG_ROCKCHIP_DDRCLK void rockchip_set_ddrclk_params(void __iomem *params); void rockchip_set_ddrclk_dmcfreq_wait_complete(int (*func)(void)); @@ -605,6 +606,20 @@ struct clk *rockchip_clk_register_ddrclk(const char *name, int flags, int mux_shift, int mux_width, int div_shift, int div_width, int ddr_flags, void __iomem *reg_base); +#else +static inline void rockchip_set_ddrclk_params(void __iomem *params) {} +static inline void rockchip_set_ddrclk_dmcfreq_wait_complete(int (*func)(void)) {} +static inline +struct clk *rockchip_clk_register_ddrclk(const char *name, int flags, + const char *const *parent_names, + u8 num_parents, int mux_offset, + int mux_shift, int mux_width, + int div_shift, int div_width, + int ddr_flags, void __iomem *reg_base) +{ + return NULL; +} +#endif #define ROCKCHIP_INVERTER_HIWORD_MASK BIT(0)