summaryrefslogtreecommitdiff
path: root/include/linux/sprd_2351.h
blob: 25091501585f5531ecd01ab165f6fc63f1330455 (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#ifndef _SPRD_2351_H
#define _SPRD_2351_H

#define BIT_NONE            0x00
#define BIT_0               0x01
#define BIT_1               0x02
#define BIT_2               0x04
#define BIT_3               0x08
#define BIT_4               0x10
#define BIT_5               0x20
#define BIT_6               0x40
#define BIT_7               0x80
#define BIT_8               0x0100
#define BIT_9               0x0200
#define BIT_10              0x0400
#define BIT_11              0x0800
#define BIT_12              0x1000
#define BIT_13              0x2000
#define BIT_14              0x4000
#define BIT_15              0x8000
#define BIT_16              0x010000
#define BIT_17              0x020000
#define BIT_18              0x040000
#define BIT_19              0x080000
#define BIT_20              0x100000
#define BIT_21              0x200000
#define BIT_22              0x400000
#define BIT_23              0x800000
#define BIT_24              0x01000000
#define BIT_25              0x02000000
#define BIT_26              0x04000000
#define BIT_27              0x08000000
#define BIT_28              0x10000000
#define BIT_29              0x20000000
#define BIT_30              0x40000000
#define BIT_31              0x80000000


#define RF2351_PRINT(format, arg...)  \
	do { \
		printk("RF2351:%s:"format"\n", \
		__func__, ## arg); \
	} while (0)

#ifndef CONFIG_OF
#define APB_EB0_BASE_VA			SPRD_AONAPB_BASE
#define RFSPI_BASE_VA			SPRD_RFSPI_BASE
#else
extern u32 rf2351_get_rfspi_base(void);
extern u32 rf2351_get_apb_base(void);

#define APB_EB0_BASE_VA			rf2351_get_apb_base()
#define RFSPI_BASE_VA			rf2351_get_rfspi_base()
#endif

#define APB_EB0					(APB_EB0_BASE_VA+0x0000)
#define RFSPI_CFG0				(RFSPI_BASE_VA + 0x0000)
#define RFSPI_MCU_WCMD			(RFSPI_BASE_VA + 0x000C)
#define RFSPI_MCU_RCMD			(RFSPI_BASE_VA + 0x0010)
#define RFSPI_MCU_RDATA			(RFSPI_BASE_VA + 0x0014)

#define RFSPI_ENABLE_CTL		(BIT_23)

struct sprd_2351_interface{
	char *name;
	unsigned int (*mspi_enable) (void);
	unsigned int (*mspi_disable) (void);
	unsigned int (*read_reg) (u16 Addr, u32 *Read_data);
	unsigned int (*write_reg) (u16 Addr, u16 Data);
};

struct sprd_2351_data{
	struct clk *clk;
	int count;
};

extern void rf2351_gpio_ctrl_power_enable(int flag);
int rf2351_vddwpa_ctrl_power_enable(int flag);
#ifdef CONFIG_ARCH_SCX30G
int sprd_switch_cp2_clk(int cam_status);
int get_cp2_state(void);
#endif
extern int sprd_get_rf2351_ops(struct sprd_2351_interface **rf2351_ops);
extern int sprd_put_rf2351_ops(struct sprd_2351_interface **rf2351_ops);
void sprd_sr2351_gpio_ctrl_power_register(int gpio_num);
void sprd_sr2351_vddwpa_ctrl_power_register(void);
#endif