summaryrefslogtreecommitdiff
path: root/drivers/clk/mmp/clk.h
blob: ab86dd4a416a5fa6b75aa74d7588894e7b8c4c2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef __MACH_MMP_CLK_H
#define __MACH_MMP_CLK_H

#include <linux/clk-provider.h>
#include <linux/clkdev.h>

#define APBC_NO_BUS_CTRL	BIT(0)
#define APBC_POWER_CTRL		BIT(1)

struct clk_factor_masks {
	unsigned int	factor;
	unsigned int	num_mask;
	unsigned int	den_mask;
	unsigned int	num_shift;
	unsigned int	den_shift;
};

struct clk_factor_tbl {
	unsigned int num;
	unsigned int den;
};

extern struct clk *mmp_clk_register_pll2(const char *name,
		const char *parent_name, unsigned long flags);
extern struct clk *mmp_clk_register_apbc(const char *name,
		const char *parent_name, void __iomem *base,
		unsigned int delay, unsigned int apbc_flags, spinlock_t *lock);
extern struct clk *mmp_clk_register_apmu(const char *name,
		const char *parent_name, void __iomem *base, u32 enable_mask,
		spinlock_t *lock);
extern struct clk *mmp_clk_register_factor(const char *name,
		const char *parent_name, unsigned long flags,
		void __iomem *base, struct clk_factor_masks *masks,
		struct clk_factor_tbl *ftbl, unsigned int ftbl_cnt);
#endif