/* * Copyright (c) 202X Amlogic, Inc. All rights reserved. * * This source code is subject to the terms and conditions defined in the * file 'LICENSE' which is part of this source code package. * * Description: */ #ifndef BT_HAL_PLATFORM_H #define BT_HAL_PLATFORM_H #ifdef __cplusplus extern "C" { #endif #include #include #include #include #include #include #include /* udelay */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* printk() */ #include #include #include #include #include #include //mach #include #include extern unsigned char w1_sdio_driver_insmoded; extern unsigned char w1_sdio_after_porbe; extern struct amlw1_hif_ops g_w1_hif_ops; extern void amlwifi_set_sdio_host_clk(int clk); extern void set_wifi_bt_sdio_driver_bit(bool is_register, int shift); extern int aml_w1_sdio_init(void); #define PRINT(...) do { printk("btHAL->"); printk(__VA_ARGS__); } while (0) #if 1 #define CHIP_BT_PMU_REG_BASE (0xf03000) #define RG_BT_PMU_A11 (CHIP_BT_PMU_REG_BASE + 0x2c) #define RG_BT_PMU_A12 (CHIP_BT_PMU_REG_BASE + 0x30) #define RG_BT_PMU_A13 (CHIP_BT_PMU_REG_BASE + 0x34) #define RG_BT_PMU_A14 (CHIP_BT_PMU_REG_BASE + 0x38) #define RG_BT_PMU_A15 (CHIP_BT_PMU_REG_BASE + 0x3c) #define RG_BT_PMU_A16 (CHIP_BT_PMU_REG_BASE + 0x40) #define RG_BT_PMU_A17 (CHIP_BT_PMU_REG_BASE + 0x44) #define RG_BT_PMU_A18 (CHIP_BT_PMU_REG_BASE + 0x48) #define RG_BT_PMU_A20 (CHIP_BT_PMU_REG_BASE + 0x50) #define RG_BT_PMU_A22 (CHIP_BT_PMU_REG_BASE + 0x58) #define CHIP_INTF_REG_BASE (0xf00000) #define RG_AON_A15 (CHIP_INTF_REG_BASE + 0x3c) #endif #define SDIO_FUNC1 1 #define RG_BT_SDIO_PMU_HOST_REQ 0x231 #define RG_SDIO_PMU_STATUS 0x23c // pmu status #define PMU_PWR_OFF 0x0 #define PMU_PWR_XOSC 0x1 #define PMU_XOSC_WAIT 0x2 #define PMU_XOSC_DPLL 0x3 #define PMU_DPLL_WAIT 0x4 #define PMU_DPLL_ACT 0x5 #define PMU_ACT_MODE 0x6 #define PMU_ACT_SLEEP 0x7 #define PMU_SLEEP_MODE 0x8 #define PMU_SLEEP_WAKE 0x9 #define PMU_WAKE_WAIT 0xa #define PMU_WAKE_XOSC 0xb #define BT_BIT 0 //means bt #define REGISTER_BT_SDIO 1 //used to mark register bt sdio ko #define UNREGISTER_BT_SDIO 0 #define BT_PWR_ON 1 #define BT_PWR_OFF 0 typedef unsigned long SYS_TYPE; enum { AML_BT_EN = 0x1, AML_SDIO_EN, }; enum { AML_SINGLE_ANTENNA = 0x1, AML_DOUBLE_ANTENNA, }; enum { AML_W1 = 0x1, AML_W1U, }; struct amlw1_hif_ops { int (*hi_bottom_write8)(unsigned char func_num, int addr, unsigned char data); unsigned char (*hi_bottom_read8)(unsigned char func_num, int addr); int (*hi_bottom_read)(unsigned char func_num, int addr, void *buf, size_t len, int incr_addr); int (*hi_bottom_write)(unsigned char func_num, int addr, void *buf, size_t len, int incr_addr); unsigned char (*hi_read8_func0)(unsigned long sram_addr); void (*hi_write8_func0)(unsigned long sram_addr, unsigned char sramdata); unsigned long (*hi_read_reg8)(unsigned long sram_addr); void (*hi_write_reg8)(unsigned long sram_addr, unsigned long sramdata); unsigned long (*hi_read_reg32)(unsigned long sram_addr); int (*hi_write_reg32)(unsigned long sram_addr, unsigned long sramdata); void (*hi_write_cmd)(unsigned long sram_addr, unsigned long sramdata); void (*hi_write_sram)(unsigned char *buf, unsigned char *addr, SYS_TYPE len); void (*hi_read_sram)(unsigned char *buf, unsigned char *addr, SYS_TYPE len); void (*hi_write_word)(unsigned int addr, unsigned int data); unsigned int (*hi_read_word)(unsigned int addr); void (*hi_rcv_frame)(unsigned char *buf, unsigned char *addr, SYS_TYPE len); int (*hi_enable_scat)(void); void (*hi_cleanup_scat)(void); struct amlw_hif_scatter_req * (*hi_get_scatreq)(void); int (*hi_scat_rw)(struct scatterlist *sg_list, unsigned int sg_num, unsigned int blkcnt, unsigned char func_num, unsigned int addr, unsigned char write); int (*hi_send_frame)(struct amlw_hif_scatter_req *scat_req); /*bt use*/ void (*bt_hi_write_sram)(unsigned char *buf, unsigned char *addr, SYS_TYPE len); void (*bt_hi_read_sram)(unsigned char *buf, unsigned char *addr, SYS_TYPE len); void (*bt_hi_write_word)(unsigned int addr, unsigned int data); unsigned int (*bt_hi_read_word)(unsigned int addr); void (*hif_get_sts)(unsigned int op_code, unsigned int ctrl_code); void (*hif_pt_rx_start)(unsigned int qos); void (*hif_pt_rx_stop)(void); int (*hif_suspend)(unsigned int suspend_enable); }; #endif /* BT_HAL_PLATFORM_H */