Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.5.6.
 1// SPDX-License-Identifier: GPL-2.0
 2//
 3// Spreadtrum gate clock driver
 4//
 5// Copyright (C) 2017 Spreadtrum, Inc.
 6// Author: Chunyan Zhang <chunyan.zhang@spreadtrum.com>
 7
 8#ifndef _SPRD_GATE_H_
 9#define _SPRD_GATE_H_
10
11#include "common.h"
12
13struct sprd_gate {
14	u32			enable_mask;
15	u16			flags;
16	u16			sc_offset;
17
18	struct sprd_clk_common	common;
19};
20
21#define SPRD_SC_GATE_CLK_OPS(_struct, _name, _parent, _reg, _sc_offset,	\
22			     _enable_mask, _flags, _gate_flags, _ops)	\
23	struct sprd_gate _struct = {					\
24		.enable_mask	= _enable_mask,				\
25		.sc_offset	= _sc_offset,				\
26		.flags		= _gate_flags,				\
27		.common	= {						\
28			.regmap		= NULL,				\
29			.reg		= _reg,				\
30			.hw.init	= CLK_HW_INIT(_name,		\
31						      _parent,		\
32						      _ops,		\
33						      _flags),		\
34		}							\
35	}
36
37#define SPRD_GATE_CLK(_struct, _name, _parent, _reg,			\
38		      _enable_mask, _flags, _gate_flags)		\
39	SPRD_SC_GATE_CLK_OPS(_struct, _name, _parent, _reg, 0,		\
40			     _enable_mask, _flags, _gate_flags,		\
41			     &sprd_gate_ops)
42
43#define SPRD_SC_GATE_CLK(_struct, _name, _parent, _reg, _sc_offset,	\
44			 _enable_mask, _flags, _gate_flags)		\
45	SPRD_SC_GATE_CLK_OPS(_struct, _name, _parent, _reg, _sc_offset,	\
46			     _enable_mask, _flags, _gate_flags,		\
47			     &sprd_sc_gate_ops)
48
49static inline struct sprd_gate *hw_to_sprd_gate(const struct clk_hw *hw)
50{
51	struct sprd_clk_common *common = hw_to_sprd_clk_common(hw);
52
53	return container_of(common, struct sprd_gate, common);
54}
55
56extern const struct clk_ops sprd_gate_ops;
57extern const struct clk_ops sprd_sc_gate_ops;
58
59#endif /* _SPRD_GATE_H_ */