Commit 44293edd authored by Chen-Yu Tsai's avatar Chen-Yu Tsai
Browse files

clk: sunxi-ng: div: support power-of-two dividers



Some clocks (for timers) on the A523 are mux-divider-gate types
with the divider being values of power-of-two.

Add a macro for these types of clocks so that we can use the divider
types instead of the M-P types without an M divider.

Reviewed-by: default avatarJernej Skrabec <jernej.skrabec@gmail.com>
Link: https://patch.msgid.link/20250911174710.3149589-5-wens@kernel.org


Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
parent 828dea38
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -274,6 +274,24 @@ struct ccu_div {
	SUNXI_CCU_M_HWS_WITH_GATE(_struct, _name, _parent, _reg,	\
				  _mshift, _mwidth, 0, _flags)

#define SUNXI_CCU_P_DATA_WITH_MUX_GATE(_struct, _name, _parents, _reg,	\
				       _mshift, _mwidth,		\
				       _muxshift, _muxwidth,		\
				       _gate, _flags)			\
	struct ccu_div _struct = {					\
		.enable	= _gate,					\
		.div	= _SUNXI_CCU_DIV_FLAGS(_mshift, _mwidth,	\
					       CLK_DIVIDER_POWER_OF_TWO), \
		.mux	= _SUNXI_CCU_MUX(_muxshift, _muxwidth),		\
		.common	= {						\
			.reg		= _reg,				\
			.hw.init	= CLK_HW_INIT_PARENTS_DATA(_name, \
								   _parents, \
								   &ccu_div_ops, \
								   _flags), \
		},							\
	}

static inline struct ccu_div *hw_to_ccu_div(struct clk_hw *hw)
{
	struct ccu_common *common = hw_to_ccu_common(hw);