xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8821cs/hal/halmac/halmac_dbg.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2018 - 2019 Realtek Corporation. All rights reserved.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  ******************************************************************************/
15*4882a593Smuzhiyun #include "halmac_dbg.h"
16*4882a593Smuzhiyun #if HALMAC_DBG_MONITOR_IO
17*4882a593Smuzhiyun static u8
18*4882a593Smuzhiyun monitor_reg_read_8(struct halmac_adapter *adapter, u32 offset,
19*4882a593Smuzhiyun 		   const char *func, const u32 line);
20*4882a593Smuzhiyun static u16
21*4882a593Smuzhiyun monitor_reg_read_16(struct halmac_adapter *adapter, u32 offset,
22*4882a593Smuzhiyun 		    const char *func, const u32 line);
23*4882a593Smuzhiyun static u32
24*4882a593Smuzhiyun monitor_reg_read_32(struct halmac_adapter *adapter, u32 offset,
25*4882a593Smuzhiyun 		    const char *func, const u32 line);
26*4882a593Smuzhiyun static enum halmac_ret_status
27*4882a593Smuzhiyun monitor_reg_sdio_cmd53_read_n(struct halmac_adapter *adapter,
28*4882a593Smuzhiyun 			      u32 offset, u32 size, u8 *value,
29*4882a593Smuzhiyun 			      const char *func, const u32 line);
30*4882a593Smuzhiyun static enum halmac_ret_status
31*4882a593Smuzhiyun monitor_reg_write_8(struct halmac_adapter *adapter, u32 offset,
32*4882a593Smuzhiyun 		    u8 value, const char *func, const u32 line);
33*4882a593Smuzhiyun static enum halmac_ret_status
34*4882a593Smuzhiyun monitor_reg_write_16(struct halmac_adapter *adapter, u32 offset,
35*4882a593Smuzhiyun 		     u16 value, const char *func, const u32 line);
36*4882a593Smuzhiyun static enum halmac_ret_status
37*4882a593Smuzhiyun monitor_reg_write_32(struct halmac_adapter *adapter, u32 offset,
38*4882a593Smuzhiyun 		     u32 value, const char *func, const u32 line);
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun enum halmac_ret_status
mount_api_dbg(struct halmac_adapter * adapter)41*4882a593Smuzhiyun mount_api_dbg(struct halmac_adapter *adapter)
42*4882a593Smuzhiyun {
43*4882a593Smuzhiyun 	struct halmac_api *api = (struct halmac_api *)adapter->halmac_api;
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun 	api->halmac_mon_reg_read_8 = monitor_reg_read_8;
46*4882a593Smuzhiyun 	api->halmac_mon_reg_read_16 = monitor_reg_read_16;
47*4882a593Smuzhiyun 	api->halmac_mon_reg_read_32 = monitor_reg_read_32;
48*4882a593Smuzhiyun 	api->halmac_mon_reg_sdio_cmd53_read_n = monitor_reg_sdio_cmd53_read_n;
49*4882a593Smuzhiyun 	api->halmac_mon_reg_write_8 = monitor_reg_write_8;
50*4882a593Smuzhiyun 	api->halmac_mon_reg_write_16 = monitor_reg_write_16;
51*4882a593Smuzhiyun 	api->halmac_mon_reg_write_32 = monitor_reg_write_32;
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun 	return HALMAC_RET_SUCCESS;
54*4882a593Smuzhiyun }
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun u8
monitor_reg_read_8(struct halmac_adapter * adapter,u32 offset,const char * func,const u32 line)57*4882a593Smuzhiyun monitor_reg_read_8(struct halmac_adapter *adapter, u32 offset,
58*4882a593Smuzhiyun 		   const char *func, const u32 line)
59*4882a593Smuzhiyun {
60*4882a593Smuzhiyun 	struct halmac_api *api = (struct halmac_api *)adapter->halmac_api;
61*4882a593Smuzhiyun 	u8 val;
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun 	val = api->halmac_reg_read_8(adapter, offset);
64*4882a593Smuzhiyun 	PLTFM_MONITOR_READ(offset, 1, val, func, line);
65*4882a593Smuzhiyun 	return val;
66*4882a593Smuzhiyun }
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun u16
monitor_reg_read_16(struct halmac_adapter * adapter,u32 offset,const char * func,const u32 line)69*4882a593Smuzhiyun monitor_reg_read_16(struct halmac_adapter *adapter, u32 offset,
70*4882a593Smuzhiyun 		    const char *func, const u32 line)
71*4882a593Smuzhiyun {
72*4882a593Smuzhiyun 	struct halmac_api *api = (struct halmac_api *)adapter->halmac_api;
73*4882a593Smuzhiyun 	u16 val;
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun 	val = api->halmac_reg_read_16(adapter, offset);
76*4882a593Smuzhiyun 	PLTFM_MONITOR_READ(offset, 2, val, func, line);
77*4882a593Smuzhiyun 	return val;
78*4882a593Smuzhiyun }
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun u32
monitor_reg_read_32(struct halmac_adapter * adapter,u32 offset,const char * func,const u32 line)81*4882a593Smuzhiyun monitor_reg_read_32(struct halmac_adapter *adapter, u32 offset,
82*4882a593Smuzhiyun 		    const char *func, const u32 line)
83*4882a593Smuzhiyun {
84*4882a593Smuzhiyun 	struct halmac_api *api = (struct halmac_api *)adapter->halmac_api;
85*4882a593Smuzhiyun 	u32 val;
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun 	val = api->halmac_reg_read_32(adapter, offset);
88*4882a593Smuzhiyun 	PLTFM_MONITOR_READ(offset, 4, val, func, line);
89*4882a593Smuzhiyun 	return val;
90*4882a593Smuzhiyun }
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun enum halmac_ret_status
monitor_reg_sdio_cmd53_read_n(struct halmac_adapter * adapter,u32 offset,u32 size,u8 * value,const char * func,const u32 line)93*4882a593Smuzhiyun monitor_reg_sdio_cmd53_read_n(struct halmac_adapter *adapter,
94*4882a593Smuzhiyun 			      u32 offset, u32 size, u8 *value,
95*4882a593Smuzhiyun 			      const char *func, const u32 line)
96*4882a593Smuzhiyun {
97*4882a593Smuzhiyun 	struct halmac_api *api = (struct halmac_api *)adapter->halmac_api;
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun 	PLTFM_MONITOR_READ(offset, size, 0, func, line);
100*4882a593Smuzhiyun 	return api->halmac_reg_sdio_cmd53_read_n(adapter, offset, size, value);
101*4882a593Smuzhiyun }
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun enum halmac_ret_status
monitor_reg_write_8(struct halmac_adapter * adapter,u32 offset,u8 value,const char * func,const u32 line)104*4882a593Smuzhiyun monitor_reg_write_8(struct halmac_adapter *adapter, u32 offset,
105*4882a593Smuzhiyun 		    u8 value, const char *func, const u32 line)
106*4882a593Smuzhiyun {
107*4882a593Smuzhiyun 	struct halmac_api *api = (struct halmac_api *)adapter->halmac_api;
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun 	PLTFM_MONITOR_WRITE(offset, 1, value, func, line);
110*4882a593Smuzhiyun 	return api->halmac_reg_write_8(adapter, offset, value);
111*4882a593Smuzhiyun }
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun enum halmac_ret_status
monitor_reg_write_16(struct halmac_adapter * adapter,u32 offset,u16 value,const char * func,const u32 line)114*4882a593Smuzhiyun monitor_reg_write_16(struct halmac_adapter *adapter, u32 offset,
115*4882a593Smuzhiyun 		     u16 value, const char *func, const u32 line)
116*4882a593Smuzhiyun {
117*4882a593Smuzhiyun 	struct halmac_api *api = (struct halmac_api *)adapter->halmac_api;
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun 	PLTFM_MONITOR_WRITE(offset, 2, value, func, line);
120*4882a593Smuzhiyun 	return api->halmac_reg_write_16(adapter, offset, value);
121*4882a593Smuzhiyun }
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun enum halmac_ret_status
monitor_reg_write_32(struct halmac_adapter * adapter,u32 offset,u32 value,const char * func,const u32 line)124*4882a593Smuzhiyun monitor_reg_write_32(struct halmac_adapter *adapter, u32 offset,
125*4882a593Smuzhiyun 		     u32 value, const char *func, const u32 line)
126*4882a593Smuzhiyun {
127*4882a593Smuzhiyun 	struct halmac_api *api = (struct halmac_api *)adapter->halmac_api;
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun 	PLTFM_MONITOR_WRITE(offset, 4, value, func, line);
130*4882a593Smuzhiyun 	return api->halmac_reg_write_32(adapter, offset, value);
131*4882a593Smuzhiyun }
132*4882a593Smuzhiyun #endif
133