xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852be/phl/hal_g6/hal_io.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /******************************************************************************
2  *
3  * Copyright(c) 2019 Realtek Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  *****************************************************************************/
15 #ifndef _HAL_IO_H_
16 #define _HAL_IO_H_
17 
18 /*
19 Below is the data structure used by _io_handler
20 */
21 
22 extern u8 _hal_read8(struct rtw_hal_com_t *hal, u32 addr);
23 extern u16 _hal_read16(struct rtw_hal_com_t *hal, u32 addr);
24 extern u32 _hal_read32(struct rtw_hal_com_t *hal, u32 addr);
25 extern void _hal_read_mem(struct rtw_hal_com_t *hal, u32 addr, u32 cnt, u8 *pmem);
26 
27 extern int _hal_write8(struct rtw_hal_com_t *hal, u32 addr, u8 val);
28 extern int _hal_write16(struct rtw_hal_com_t *hal, u32 addr, u16 val);
29 extern int _hal_write32(struct rtw_hal_com_t *hal, u32 addr, u32 val);
30 
31 
32 #ifdef CONFIG_SDIO_HCI
33 u8 _hal_sd_f0_read8(struct rtw_hal_com_t *hal, u32 addr);
34 #ifdef CONFIG_SDIO_INDIRECT_ACCESS
35 u8 _hal_sd_iread8(struct rtw_hal_com_t *hal, u32 addr);
36 u16 _hal_sd_iread16(struct rtw_hal_com_t *hal, u32 addr);
37 u32 _hal_sd_iread32(struct rtw_hal_com_t *hal, u32 addr);
38 int _hal_sd_iwrite8(struct rtw_hal_com_t *hal, u32 addr, u8 val);
39 int _hal_sd_iwrite16(struct rtw_hal_com_t *hal, u32 addr, u16 val);
40 int _hal_sd_iwrite32(struct rtw_hal_com_t *hal, u32 addr, u32 val);
41 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */
42 #endif /* CONFIG_SDIO_HCI */
43 
44 
45 #ifdef DBG_IO
46 u32 match_read_sniff(struct rtw_hal_com_t *hal, u32 addr, u16 len, u32 val);
47 u32 match_write_sniff(struct rtw_hal_com_t *hal, u32 addr, u16 len, u32 val);
48 bool match_rf_read_sniff_ranges(struct rtw_hal_com_t *hal, u8 path, u32 addr, u32 mask);
49 bool match_rf_write_sniff_ranges(struct rtw_hal_com_t *hal, u8 path, u32 addr, u32 mask);
50 
51 extern u8 dbg_hal_read8(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
52 extern u16 dbg_hal_read16(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
53 extern u32 dbg_hal_read32(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
54 
55 extern int dbg_hal_write8(struct rtw_hal_com_t *hal, u32 addr, u8 val, const char *caller, const int line);
56 extern int dbg_hal_write16(struct rtw_hal_com_t *hal, u32 addr, u16 val, const char *caller, const int line);
57 extern int dbg_hal_write32(struct rtw_hal_com_t *hal, u32 addr, u32 val, const char *caller, const int line);
58 extern int dbg_hal_writeN(struct rtw_hal_com_t *hal, u32 addr , u32 length , u8 *data, const char *caller, const int line);
59 
60 #ifdef CONFIG_SDIO_HCI
61 u8 dbg_hal_sd_f0_read8(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
62 #ifdef CONFIG_SDIO_INDIRECT_ACCESS
63 u8 dbg_hal_sd_iread8(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
64 u16 dbg_hal_sd_iread16(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
65 u32 dbg_hal_sd_iread32(struct rtw_hal_com_t *hal, u32 addr, const char *caller, const int line);
66 int dbg_hal_sd_iwrite8(struct rtw_hal_com_t *hal, u32 addr, u8 val, const char *caller, const int line);
67 int dbg_hal_sd_iwrite16(struct rtw_hal_com_t *hal, u32 addr, u16 val, const char *caller, const int line);
68 int dbg_hal_sd_iwrite32(struct rtw_hal_com_t *hal, u32 addr, u32 val, const char *caller, const int line);
69 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */
70 #endif /* CONFIG_SDIO_HCI */
71 
72 #define hal_read8(hal, addr) dbg_hal_read8((hal), (addr), __FUNCTION__, __LINE__)
73 #define hal_read16(hal, addr) dbg_hal_read16((hal), (addr), __FUNCTION__, __LINE__)
74 #define hal_read32(hal, addr) dbg_hal_read32((hal), (addr), __FUNCTION__, __LINE__)
75 
76 #define  hal_write8(hal, addr, val) dbg_hal_write8((hal), (addr), (val), __FUNCTION__, __LINE__)
77 #define  hal_write16(hal, addr, val) dbg_hal_write16((hal), (addr), (val), __FUNCTION__, __LINE__)
78 #define  hal_write32(hal, addr, val) dbg_hal_write32((hal), (addr), (val), __FUNCTION__, __LINE__)
79 
80 
81 #ifdef CONFIG_SDIO_HCI
82 #define hal_sd_f0_read8(hal, addr) dbg_hal_sd_f0_read8((hal), (addr), __func__, __LINE__)
83 #ifdef CONFIG_SDIO_INDIRECT_ACCESS
84 #define hal_sd_iread8(hal, addr) dbg_hal_sd_iread8((hal), (addr), __func__, __LINE__)
85 #define hal_sd_iread16(hal, addr) dbg_hal_sd_iread16((hal), (addr), __func__, __LINE__)
86 #define hal_sd_iread32(hal, addr) dbg_hal_sd_iread32((hal), (addr), __func__, __LINE__)
87 #define hal_sd_iwrite8(hal, addr, val) dbg_hal_sd_iwrite8((hal), (addr), (val), __func__, __LINE__)
88 #define hal_sd_iwrite16(hal, addr, val) dbg_hal_sd_iwrite16((hal), (addr), (val), __func__, __LINE__)
89 #define hal_sd_iwrite32(hal, addr, val) dbg_hal_sd_iwrite32((hal), (addr), (val), __func__, __LINE__)
90 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */
91 #endif /* CONFIG_SDIO_HCI */
92 
93 #else /* DBG_IO */
94 #define hal_read8(hal, addr) _hal_read8((hal), (addr))
95 #define hal_read16(hal, addr) _hal_read16((hal), (addr))
96 #define hal_read32(hal, addr) _hal_read32((hal), (addr))
97 
98 #define  hal_write8(hal, addr, val) _hal_write8((hal), (addr), (val))
99 #define  hal_write16(hal, addr, val) _hal_write16((hal), (addr), (val))
100 #define  hal_write32(hal, addr, val) _hal_write32((hal), (addr), (val))
101 
102 
103 #ifdef CONFIG_SDIO_HCI
104 #define hal_sd_f0_read8(hal, addr) _hal_sd_f0_read8((hal), (addr))
105 #ifdef CONFIG_SDIO_INDIRECT_ACCESS
106 #define hal_sd_iread8(hal, addr) _hal_sd_iread8((hal), (addr))
107 #define hal_sd_iread16(hal, addr) _hal_sd_iread16((hal), (addr))
108 #define hal_sd_iread32(hal, addr) _hal_sd_iread32((hal), (addr))
109 #define hal_sd_iwrite8(hal, addr, val) _hal_sd_iwrite8((hal), (addr), (val))
110 #define hal_sd_iwrite16(hal, addr, val) _hal_sd_iwrite16((hal), (addr), (val))
111 #define hal_sd_iwrite32(hal, addr, val) _hal_sd_iwrite32((hal), (addr), (val))
112 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */
113 #endif /* CONFIG_SDIO_HCI */
114 
115 #endif /* DBG_IO */
116 
117 void hal_write32_mask(struct rtw_hal_com_t *hal, u16 addr, u32 mask, u32 val);
118 
119 u32 hal_init_io_priv(struct rtw_hal_com_t *hal,
120 void (*set_intf_ops)(struct rtw_hal_com_t *hal, struct hal_io_ops *ops));
121 u32 hal_deinit_io_priv(struct rtw_hal_com_t *hal);
122 
123 #endif /* _RTW_IO_H_ */
124