diff options
Diffstat (limited to 'include/linux/sprd_2351.h')
| -rw-r--r-- | include/linux/sprd_2351.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/include/linux/sprd_2351.h b/include/linux/sprd_2351.h new file mode 100644 index 00000000..25091501 --- /dev/null +++ b/include/linux/sprd_2351.h @@ -0,0 +1,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 |
