|  | /* | 
|  | * Copyright (c) 2014 MediaTek Inc. | 
|  | * Author: James Liao <[email protected]> | 
|  | * | 
|  | * This program is free software; you can redistribute it and/or modify | 
|  | * it under the terms of the GNU General Public License version 2 as | 
|  | * published by the Free Software Foundation. | 
|  | * | 
|  | * This program is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | * GNU General Public License for more details. | 
|  | */ | 
|  |  | 
|  | #ifndef __DRV_CLK_GATE_H | 
|  | #define __DRV_CLK_GATE_H | 
|  |  | 
|  | #include <linux/regmap.h> | 
|  | #include <linux/clk-provider.h> | 
|  |  | 
|  | struct clk; | 
|  |  | 
|  | struct mtk_clk_gate { | 
|  | struct clk_hw	hw; | 
|  | struct regmap	*regmap; | 
|  | int		set_ofs; | 
|  | int		clr_ofs; | 
|  | int		sta_ofs; | 
|  | u8		bit; | 
|  | }; | 
|  |  | 
|  | static inline struct mtk_clk_gate *to_mtk_clk_gate(struct clk_hw *hw) | 
|  | { | 
|  | return container_of(hw, struct mtk_clk_gate, hw); | 
|  | } | 
|  |  | 
|  | extern const struct clk_ops mtk_clk_gate_ops_setclr; | 
|  | extern const struct clk_ops mtk_clk_gate_ops_setclr_inv; | 
|  | extern const struct clk_ops mtk_clk_gate_ops_no_setclr; | 
|  | extern const struct clk_ops mtk_clk_gate_ops_no_setclr_inv; | 
|  |  | 
|  | struct clk *mtk_clk_register_gate( | 
|  | const char *name, | 
|  | const char *parent_name, | 
|  | struct regmap *regmap, | 
|  | int set_ofs, | 
|  | int clr_ofs, | 
|  | int sta_ofs, | 
|  | u8 bit, | 
|  | const struct clk_ops *ops, | 
|  | unsigned long flags); | 
|  |  | 
|  | #define GATE_MTK_FLAGS(_id, _name, _parent, _regs, _shift,	\ | 
|  | _ops, _flags) {				\ | 
|  | .id = _id,					\ | 
|  | .name = _name,					\ | 
|  | .parent_name = _parent,				\ | 
|  | .regs = _regs,					\ | 
|  | .shift = _shift,				\ | 
|  | .ops = _ops,					\ | 
|  | .flags = _flags,				\ | 
|  | } | 
|  |  | 
|  | #define GATE_MTK(_id, _name, _parent, _regs, _shift, _ops)		\ | 
|  | GATE_MTK_FLAGS(_id, _name, _parent, _regs, _shift, _ops, 0) | 
|  |  | 
|  | #endif /* __DRV_CLK_GATE_H */ |