linux/drivers/clk/sunxi-ng/ccu_nm.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2016 Maxime Ripard. All rights reserved.
 */

#ifndef _CCU_NM_H_
#define _CCU_NM_H_

#include <linux/clk-provider.h>

#include "ccu_common.h"
#include "ccu_div.h"
#include "ccu_frac.h"
#include "ccu_mult.h"
#include "ccu_sdm.h"

/*
 * struct ccu_nm - Definition of an N-M clock
 *
 * Clocks based on the formula parent * N / M
 */
struct ccu_nm {};

#define SUNXI_CCU_NM_WITH_SDM_GATE_LOCK(_struct, _name, _parent, _reg,	\
					_nshift, _nwidth,		\
					_mshift, _mwidth,		\
					_sdm_table, _sdm_en,		\
					_sdm_reg, _sdm_reg_en,		\
					_gate, _lock, _flags)

#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(_struct, _name, _parent, _reg,	\
					 _nshift, _nwidth,		\
					 _mshift, _mwidth,		\
					 _frac_en, _frac_sel,		\
					 _frac_rate_0, _frac_rate_1,	\
					 _gate, _lock, _flags)

#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN(_struct, _name, _parent,	\
					     _reg, _min_rate,		\
					     _nshift, _nwidth,		\
					     _mshift, _mwidth,		\
					     _frac_en, _frac_sel,	\
					     _frac_rate_0, _frac_rate_1,\
					     _gate, _lock, _flags)

#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_FEAT(_struct, _name,	\
						 _parent, _reg,		\
						 _min_rate, _max_rate,	\
						 _nshift, _nwidth,	\
						 _mshift, _mwidth,	\
						 _frac_en, _frac_sel,	\
						 _frac_rate_0,		\
						 _frac_rate_1,		\
						 _gate, _lock, _flags,	\
						 _features)

#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(_struct, _name,	\
						 _parent, _reg,		\
						 _min_rate, _max_rate,	\
						 _nshift, _nwidth,	\
						 _mshift, _mwidth,	\
						 _frac_en, _frac_sel,	\
						 _frac_rate_0,		\
						 _frac_rate_1,		\
						 _gate, _lock, _flags)

#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_CLOSEST(_struct, _name, \
						 _parent, _reg,		\
						 _min_rate, _max_rate,	\
						 _nshift, _nwidth,	\
						 _mshift, _mwidth,	\
						 _frac_en, _frac_sel,	\
						 _frac_rate_0,		\
						 _frac_rate_1,		\
						 _gate, _lock, _flags)

#define SUNXI_CCU_NM_WITH_GATE_LOCK(_struct, _name, _parent, _reg,	\
				    _nshift, _nwidth,			\
				    _mshift, _mwidth,			\
				    _gate, _lock, _flags)

static inline struct ccu_nm *hw_to_ccu_nm(struct clk_hw *hw)
{}

extern const struct clk_ops ccu_nm_ops;

#endif /* _CCU_NM_H_ */