cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

composite.h (2118B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2//
      3// Spreadtrum composite clock driver
      4//
      5// Copyright (C) 2017 Spreadtrum, Inc.
      6// Author: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
      7
      8#ifndef _SPRD_COMPOSITE_H_
      9#define _SPRD_COMPOSITE_H_
     10
     11#include "common.h"
     12#include "mux.h"
     13#include "div.h"
     14
     15struct sprd_comp {
     16	struct sprd_mux_ssel	mux;
     17	struct sprd_div_internal	div;
     18	struct sprd_clk_common	common;
     19};
     20
     21#define SPRD_COMP_CLK_HW_INIT_FN(_struct, _name, _parent, _reg, _table,	\
     22				 _mshift, _mwidth, _dshift, _dwidth,	\
     23				 _flags, _fn)				\
     24	struct sprd_comp _struct = {					\
     25		.mux	= _SPRD_MUX_CLK(_mshift, _mwidth, _table),	\
     26		.div	= _SPRD_DIV_CLK(_dshift, _dwidth),		\
     27		.common = {						\
     28			.regmap		= NULL,				\
     29			.reg		= _reg,				\
     30			.hw.init = _fn(_name, _parent,			\
     31				       &sprd_comp_ops, _flags),		\
     32			 }						\
     33	}
     34
     35#define SPRD_COMP_CLK_TABLE(_struct, _name, _parent, _reg, _table,	\
     36			    _mshift, _mwidth, _dshift, _dwidth, _flags)	\
     37	SPRD_COMP_CLK_HW_INIT_FN(_struct, _name, _parent, _reg, _table,	\
     38				 _mshift, _mwidth, _dshift, _dwidth,	\
     39				 _flags, CLK_HW_INIT_PARENTS)
     40
     41#define SPRD_COMP_CLK(_struct, _name, _parent, _reg, _mshift,		\
     42		      _mwidth, _dshift, _dwidth, _flags)		\
     43	SPRD_COMP_CLK_TABLE(_struct, _name, _parent, _reg, NULL,	\
     44			    _mshift, _mwidth, _dshift, _dwidth, _flags)
     45
     46#define SPRD_COMP_CLK_DATA_TABLE(_struct, _name, _parent, _reg, _table,	\
     47				 _mshift, _mwidth, _dshift,		\
     48				 _dwidth, _flags)			\
     49	SPRD_COMP_CLK_HW_INIT_FN(_struct, _name, _parent, _reg, _table,	\
     50				 _mshift, _mwidth, _dshift, _dwidth,	\
     51				 _flags, CLK_HW_INIT_PARENTS_DATA)
     52
     53#define SPRD_COMP_CLK_DATA(_struct, _name, _parent, _reg, _mshift,	\
     54			   _mwidth, _dshift, _dwidth, _flags)		\
     55	SPRD_COMP_CLK_DATA_TABLE(_struct, _name, _parent, _reg,	NULL,	\
     56				 _mshift, _mwidth, _dshift, _dwidth,	\
     57				 _flags)
     58
     59static inline struct sprd_comp *hw_to_sprd_comp(const struct clk_hw *hw)
     60{
     61	struct sprd_clk_common *common = hw_to_sprd_clk_common(hw);
     62
     63	return container_of(common, struct sprd_comp, common);
     64}
     65
     66extern const struct clk_ops sprd_comp_ops;
     67
     68#endif /* _SPRD_COMPOSITE_H_ */