Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.5.6.
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Copyright (c) 2014 MediaTek Inc.
 4 * Author: James Liao <jamesjj.liao@mediatek.com>
 5 */
 6
 7#ifndef __DRV_CLK_GATE_H
 8#define __DRV_CLK_GATE_H
 9
10#include <linux/regmap.h>
11#include <linux/clk-provider.h>
12
13struct clk;
14
15struct mtk_clk_gate {
16	struct clk_hw	hw;
17	struct regmap	*regmap;
18	int		set_ofs;
19	int		clr_ofs;
20	int		sta_ofs;
21	u8		bit;
22};
23
24static inline struct mtk_clk_gate *to_mtk_clk_gate(struct clk_hw *hw)
25{
26	return container_of(hw, struct mtk_clk_gate, hw);
27}
28
29extern const struct clk_ops mtk_clk_gate_ops_setclr;
30extern const struct clk_ops mtk_clk_gate_ops_setclr_inv;
31extern const struct clk_ops mtk_clk_gate_ops_no_setclr;
32extern const struct clk_ops mtk_clk_gate_ops_no_setclr_inv;
33
34struct clk *mtk_clk_register_gate(
35		const char *name,
36		const char *parent_name,
37		struct regmap *regmap,
38		int set_ofs,
39		int clr_ofs,
40		int sta_ofs,
41		u8 bit,
42		const struct clk_ops *ops,
43		unsigned long flags,
44		struct device *dev);
45
46#define GATE_MTK_FLAGS(_id, _name, _parent, _regs, _shift,	\
47			_ops, _flags) {				\
48		.id = _id,					\
49		.name = _name,					\
50		.parent_name = _parent,				\
51		.regs = _regs,					\
52		.shift = _shift,				\
53		.ops = _ops,					\
54		.flags = _flags,				\
55	}
56
57#define GATE_MTK(_id, _name, _parent, _regs, _shift, _ops)		\
58	GATE_MTK_FLAGS(_id, _name, _parent, _regs, _shift, _ops, 0)
59
60#endif /* __DRV_CLK_GATE_H */