#include <linux/clk.h>
#include <linux/clk-provider.h>
#include <linux/compiler_types.h>
#include <linux/container_of.h>
#include <linux/err.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/regmap.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include "clk-mux.h"
struct mtk_clk_mux { … };
static inline struct mtk_clk_mux *to_mtk_clk_mux(struct clk_hw *hw)
{ … }
static int mtk_clk_mux_enable_setclr(struct clk_hw *hw)
{ … }
static void mtk_clk_mux_disable_setclr(struct clk_hw *hw)
{ … }
static int mtk_clk_mux_is_enabled(struct clk_hw *hw)
{ … }
static u8 mtk_clk_mux_get_parent(struct clk_hw *hw)
{ … }
static int mtk_clk_mux_set_parent_setclr_lock(struct clk_hw *hw, u8 index)
{ … }
static int mtk_clk_mux_determine_rate(struct clk_hw *hw,
struct clk_rate_request *req)
{ … }
const struct clk_ops mtk_mux_clr_set_upd_ops = …;
EXPORT_SYMBOL_GPL(…);
const struct clk_ops mtk_mux_gate_clr_set_upd_ops = …;
EXPORT_SYMBOL_GPL(…);
static struct clk_hw *mtk_clk_register_mux(struct device *dev,
const struct mtk_mux *mux,
struct regmap *regmap,
spinlock_t *lock)
{ … }
static void mtk_clk_unregister_mux(struct clk_hw *hw)
{ … }
int mtk_clk_register_muxes(struct device *dev,
const struct mtk_mux *muxes,
int num, struct device_node *node,
spinlock_t *lock,
struct clk_hw_onecell_data *clk_data)
{ … }
EXPORT_SYMBOL_GPL(…);
void mtk_clk_unregister_muxes(const struct mtk_mux *muxes, int num,
struct clk_hw_onecell_data *clk_data)
{ … }
EXPORT_SYMBOL_GPL(…);
static int mtk_clk_mux_notifier_cb(struct notifier_block *nb,
unsigned long event, void *_data)
{ … }
int devm_mtk_clk_mux_notifier_register(struct device *dev, struct clk *clk,
struct mtk_mux_nb *mux_nb)
{ … }
EXPORT_SYMBOL_GPL(…);
MODULE_LICENSE(…) …;