#include <linux/clk-provider.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/notifier.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/pm.h>
#include <linux/slab.h>
#include "clk-div6.h"
#define CPG_DIV6_CKSTP …
#define CPG_DIV6_DIV(d) …
#define CPG_DIV6_DIV_MASK …
struct div6_clock { … };
#define to_div6_clock(_hw) …
static int cpg_div6_clock_enable(struct clk_hw *hw)
{ … }
static void cpg_div6_clock_disable(struct clk_hw *hw)
{ … }
static int cpg_div6_clock_is_enabled(struct clk_hw *hw)
{ … }
static unsigned long cpg_div6_clock_recalc_rate(struct clk_hw *hw,
unsigned long parent_rate)
{ … }
static unsigned int cpg_div6_clock_calc_div(unsigned long rate,
unsigned long parent_rate)
{ … }
static int cpg_div6_clock_determine_rate(struct clk_hw *hw,
struct clk_rate_request *req)
{ … }
static int cpg_div6_clock_set_rate(struct clk_hw *hw, unsigned long rate,
unsigned long parent_rate)
{ … }
static u8 cpg_div6_clock_get_parent(struct clk_hw *hw)
{ … }
static int cpg_div6_clock_set_parent(struct clk_hw *hw, u8 index)
{ … }
static const struct clk_ops cpg_div6_clock_ops = …;
static int cpg_div6_clock_notifier_call(struct notifier_block *nb,
unsigned long action, void *data)
{ … }
struct clk * __init cpg_div6_register(const char *name,
unsigned int num_parents,
const char **parent_names,
void __iomem *reg,
struct raw_notifier_head *notifiers)
{ … }
static void __init cpg_div6_clock_init(struct device_node *np)
{ … }
CLK_OF_DECLARE(cpg_div6_clk, "renesas,cpg-div6-clock", cpg_div6_clock_init);