Unverified Commit b30fc68e authored by Samuel Holland's avatar Samuel Holland Committed by Maxime Ripard
Browse files

clk: sunxi-ng: gate: Add macros for gates with fixed dividers



It is possible to declare a gate with a fixed divider, by using the
CCU_FEATURE_ALL_PREDIV flag. Since this is not obvious, add a macro
for declaring this type of clock.

Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/20211119043545.4010-6-samuel@sholland.org
parent 8107c859
Loading
Loading
Loading
Loading
+31 −1
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ struct ccu_gate {
	}

/*
 * The following two macros allow the re-use of the data structure
 * The following macros allow the re-use of the data structure
 * holding the parent info.
 */
#define SUNXI_CCU_GATE_HWS(_struct, _name, _parent, _reg, _gate, _flags) \
@@ -68,6 +68,21 @@ struct ccu_gate {
		}							\
	}

#define SUNXI_CCU_GATE_HWS_WITH_PREDIV(_struct, _name, _parent, _reg,	\
				       _gate, _prediv, _flags)		\
	struct ccu_gate _struct = {					\
		.enable	= _gate,					\
		.common	= {						\
			.reg		= _reg,				\
			.prediv		= _prediv,			\
			.features	= CCU_FEATURE_ALL_PREDIV,	\
			.hw.init	= CLK_HW_INIT_HWS(_name,	\
							  _parent,	\
							  &ccu_gate_ops, \
							  _flags),	\
		}							\
	}

#define SUNXI_CCU_GATE_DATA(_struct, _name, _data, _reg, _gate, _flags)	\
	struct ccu_gate _struct = {					\
		.enable	= _gate,					\
@@ -81,6 +96,21 @@ struct ccu_gate {
		}							\
	}

#define SUNXI_CCU_GATE_DATA_WITH_PREDIV(_struct, _name, _parent, _reg,	\
					_gate, _prediv, _flags)		\
	struct ccu_gate _struct = {					\
		.enable	= _gate,					\
		.common	= {						\
			.reg		= _reg,				\
			.prediv		= _prediv,			\
			.features	= CCU_FEATURE_ALL_PREDIV,	\
			.hw.init	= CLK_HW_INIT_PARENTS_DATA(_name, \
								   _parent, \
								   &ccu_gate_ops, \
								   _flags), \
		}							\
	}

static inline struct ccu_gate *hw_to_ccu_gate(struct clk_hw *hw)
{
	struct ccu_common *common = hw_to_ccu_common(hw);