diff options
Diffstat (limited to 'drivers/clk/mediatek/clk-mux.h')
-rw-r--r-- | drivers/clk/mediatek/clk-mux.h | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/drivers/clk/mediatek/clk-mux.h b/drivers/clk/mediatek/clk-mux.h index 27841d649118..83ff420f4ebe 100644 --- a/drivers/clk/mediatek/clk-mux.h +++ b/drivers/clk/mediatek/clk-mux.h @@ -7,15 +7,15 @@ #ifndef __DRV_CLK_MTK_MUX_H #define __DRV_CLK_MTK_MUX_H -#include <linux/clk-provider.h> - -struct mtk_clk_mux { - struct clk_hw hw; - struct regmap *regmap; - const struct mtk_mux *data; - spinlock_t *lock; - bool reparent; -}; +#include <linux/notifier.h> +#include <linux/spinlock.h> +#include <linux/types.h> + +struct clk; +struct clk_hw_onecell_data; +struct clk_ops; +struct device; +struct device_node; struct mtk_mux { int id; @@ -86,6 +86,22 @@ extern const struct clk_ops mtk_mux_gate_clr_set_upd_ops; int mtk_clk_register_muxes(const struct mtk_mux *muxes, int num, struct device_node *node, spinlock_t *lock, - struct clk_onecell_data *clk_data); + struct clk_hw_onecell_data *clk_data); + +void mtk_clk_unregister_muxes(const struct mtk_mux *muxes, int num, + struct clk_hw_onecell_data *clk_data); + +struct mtk_mux_nb { + struct notifier_block nb; + const struct clk_ops *ops; + + u8 bypass_index; /* Which parent to temporarily use */ + u8 original_index; /* Set by notifier callback */ +}; + +#define to_mtk_mux_nb(_nb) container_of(_nb, struct mtk_mux_nb, nb) + +int devm_mtk_clk_mux_notifier_register(struct device *dev, struct clk *clk, + struct mtk_mux_nb *mux_nb); #endif /* __DRV_CLK_MTK_MUX_H */ |