brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · 2431ee7 Raw
64 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (c) 2016 Maxime Ripard. All rights reserved.4 */5 6#ifndef _CCU_NK_H_7#define _CCU_NK_H_8 9#include <linux/clk-provider.h>10 11#include "ccu_common.h"12#include "ccu_div.h"13#include "ccu_mult.h"14 15/*16 * struct ccu_nk - Definition of an N-K clock17 *18 * Clocks based on the formula parent * N * K19 */20struct ccu_nk {21	u16			reg;22	u32			enable;23	u32			lock;24 25	struct ccu_mult_internal	n;26	struct ccu_mult_internal	k;27 28	unsigned int		fixed_post_div;29 30	struct ccu_common	common;31};32 33#define SUNXI_CCU_NK_WITH_GATE_LOCK_POSTDIV(_struct, _name, _parent, _reg, \34					    _nshift, _nwidth,		\35					    _kshift, _kwidth,		\36					    _gate, _lock, _postdiv,	\37					    _flags)			\38	struct ccu_nk _struct = {					\39		.enable		= _gate,				\40		.lock		= _lock,				\41		.k		= _SUNXI_CCU_MULT(_kshift, _kwidth),	\42		.n		= _SUNXI_CCU_MULT(_nshift, _nwidth),	\43		.fixed_post_div	= _postdiv,				\44		.common		= {					\45			.reg		= _reg,				\46			.features	= CCU_FEATURE_FIXED_POSTDIV,	\47			.hw.init	= CLK_HW_INIT(_name,		\48						      _parent,		\49						      &ccu_nk_ops,	\50						      _flags),		\51		},							\52	}53 54static inline struct ccu_nk *hw_to_ccu_nk(struct clk_hw *hw)55{56	struct ccu_common *common = hw_to_ccu_common(hw);57 58	return container_of(common, struct ccu_nk, common);59}60 61extern const struct clk_ops ccu_nk_ops;62 63#endif /* _CCU_NK_H_ */64