#ifndef __PISTACHIO_CLK_H
#define __PISTACHIO_CLK_H
#include <linux/clk-provider.h>
struct pistachio_gate { … };
#define GATE(_id, _name, _pname, _reg, _shift) …
struct pistachio_mux { … };
#define PNAME(x) …
#define MUX(_id, _name, _pnames, _reg, _shift) …
struct pistachio_div { … };
#define DIV(_id, _name, _pname, _reg, _width) …
#define DIV_F(_id, _name, _pname, _reg, _width, _div_flags) …
struct pistachio_fixed_factor { … };
#define FIXED_FACTOR(_id, _name, _pname, _div) …
struct pistachio_pll_rate_table { … };
enum pistachio_pll_type { … };
struct pistachio_pll { … };
#define PLL(_id, _name, _pname, _type, _reg, _rates) …
#define PLL_FIXED(_id, _name, _pname, _type, _reg) …
struct pistachio_clk_provider { … };
extern struct pistachio_clk_provider *
pistachio_clk_alloc_provider(struct device_node *node, unsigned int num_clks);
extern void pistachio_clk_register_provider(struct pistachio_clk_provider *p);
extern void pistachio_clk_register_gate(struct pistachio_clk_provider *p,
struct pistachio_gate *gate,
unsigned int num);
extern void pistachio_clk_register_mux(struct pistachio_clk_provider *p,
struct pistachio_mux *mux,
unsigned int num);
extern void pistachio_clk_register_div(struct pistachio_clk_provider *p,
struct pistachio_div *div,
unsigned int num);
extern void
pistachio_clk_register_fixed_factor(struct pistachio_clk_provider *p,
struct pistachio_fixed_factor *ff,
unsigned int num);
extern void pistachio_clk_register_pll(struct pistachio_clk_provider *p,
struct pistachio_pll *pll,
unsigned int num);
extern void pistachio_clk_force_enable(struct pistachio_clk_provider *p,
unsigned int *clk_ids, unsigned int num);
#endif