#include <linux/clk-provider.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/io.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/regmap.h>
#include <linux/slab.h>
#include <linux/string.h>
#include "clkc.h"
static inline struct visconti_clk_gate *to_visconti_clk_gate(struct clk_hw *hw)
{ … }
static int visconti_gate_clk_is_enabled(struct clk_hw *hw)
{ … }
static void visconti_gate_clk_disable(struct clk_hw *hw)
{ … }
static int visconti_gate_clk_enable(struct clk_hw *hw)
{ … }
static const struct clk_ops visconti_clk_gate_ops = …;
static struct clk_hw *visconti_clk_register_gate(struct device *dev,
const char *name,
const char *parent_name,
struct regmap *regmap,
const struct visconti_clk_gate_table *clks,
u32 rson_offset,
u32 rsoff_offset,
u8 rs_idx,
spinlock_t *lock)
{ … }
int visconti_clk_register_gates(struct visconti_clk_provider *ctx,
const struct visconti_clk_gate_table *clks,
int num_gate,
const struct visconti_reset_data *reset,
spinlock_t *lock)
{ … }
struct visconti_clk_provider *visconti_init_clk(struct device *dev,
struct regmap *regmap,
unsigned long nr_clks)
{ … }