hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus_usb.c
old mode 100644new mode 100755
....@@ -1,3 +1,4 @@
1
+/* SPDX-License-Identifier: GPL-2.0 */
12 /*
23 * Dongle BUS interface for USB, OS independent
34 *
....@@ -54,9 +55,6 @@
5455 #define USB_DEV_ISBAD(u) (u->pub->attrib.devid == 0xDEAD)
5556 #define USB_DLGO_SPINWAIT 100 /* wait after DL_GO (ms) */
5657 #define TEST_CHIP 0x4328
57
-
58
-/* driver info, initialized when bcmsdh_register is called */
59
-static dbus_driver_t drvinfo = {NULL, NULL, NULL, NULL};
6058
6159 typedef struct {
6260 dbus_pub_t *pub;
....@@ -150,6 +148,10 @@
150148 * attach() is not called at probe and detach()
151149 * can be called inside disconnect()
152150 */
151
+static probe_cb_t probe_cb = NULL;
152
+static disconnect_cb_t disconnect_cb = NULL;
153
+static void *probe_arg = NULL;
154
+static void *disc_arg = NULL;
153155 static dbus_intf_t *g_dbusintf = NULL;
154156 static dbus_intf_t dbus_usb_intf; /** functions called by higher layer DBUS into lower layer */
155157
....@@ -159,7 +161,8 @@
159161 */
160162 static void *dbus_usb_attach(dbus_pub_t *pub, void *cbarg, dbus_intf_callbacks_t *cbs);
161163 static void dbus_usb_detach(dbus_pub_t *pub, void *info);
162
-static void * dbus_usb_probe(uint16 bus_no, uint16 slot, uint32 hdrlen);
164
+static void * dbus_usb_probe(void *arg, const char *desc, uint32 bustype,
165
+ uint16 bus_no, uint16 slot, uint32 hdrlen);
163166
164167 /* functions */
165168
....@@ -168,10 +171,12 @@
168171 * lower level DBUS functions to call (in both dbus_usb.c and dbus_usb_os.c).
169172 */
170173 static void *
171
-dbus_usb_probe(uint16 bus_no, uint16 slot, uint32 hdrlen)
174
+dbus_usb_probe(void *arg, const char *desc, uint32 bustype, uint16 bus_no,
175
+ uint16 slot, uint32 hdrlen)
172176 {
173177 DBUSTRACE(("%s(): \n", __FUNCTION__));
174
- if (drvinfo.probe) {
178
+ if (probe_cb) {
179
+
175180 if (g_dbusintf != NULL) {
176181 /* First, initialize all lower-level functions as default
177182 * so that dbus.c simply calls directly to dbus_usb_os.c.
....@@ -187,55 +192,32 @@
187192 dbus_usb_intf.dlrun = dbus_usb_dlrun;
188193 }
189194
190
- return drvinfo.probe(bus_no, slot, hdrlen);
195
+ disc_arg = probe_cb(probe_arg, "DBUS USB", USB_BUS, bus_no, slot, hdrlen);
196
+ return disc_arg;
191197 }
192198
193199 return NULL;
194200 }
195
-
196
-static int
197
-dbus_usb_suspend(void *handle)
198
-{
199
- DBUSTRACE(("%s(): \n", __FUNCTION__));
200
-
201
- if (drvinfo.suspend)
202
- return drvinfo.suspend(handle);
203
-
204
- return BCME_OK;
205
-}
206
-
207
-static int
208
-dbus_usb_resume(void *handle)
209
-{
210
- DBUSTRACE(("%s(): \n", __FUNCTION__));
211
-
212
- if (drvinfo.resume)
213
- drvinfo.resume(handle);
214
-
215
- return 0;
216
-}
217
-
218
-static dbus_driver_t dhd_usb_dbus = {
219
- dbus_usb_probe,
220
- dbus_usb_disconnect,
221
- dbus_usb_suspend,
222
- dbus_usb_resume
223
-};
224201
225202 /**
226203 * On return, *intf contains this or lower-level DBUS functions to be called by higher
227204 * level (dbus.c)
228205 */
229206 int
230
-dbus_bus_register(dbus_driver_t *driver, dbus_intf_t **intf)
207
+dbus_bus_register(int vid, int pid, probe_cb_t prcb,
208
+ disconnect_cb_t discb, void *prarg, dbus_intf_t **intf, void *param1, void *param2)
231209 {
232210 int err;
233211
234212 DBUSTRACE(("%s(): \n", __FUNCTION__));
235
- drvinfo = *driver;
213
+ probe_cb = prcb;
214
+ disconnect_cb = discb;
215
+ probe_arg = prarg;
216
+
236217 *intf = &dbus_usb_intf;
237218
238
- err = dbus_bus_osl_register(&dhd_usb_dbus, &g_dbusintf);
219
+ err = dbus_bus_osl_register(vid, pid, dbus_usb_probe,
220
+ dbus_usb_disconnect, NULL, &g_dbusintf, param1, param2);
239221
240222 ASSERT(g_dbusintf);
241223 return err;
....@@ -311,8 +293,8 @@
311293 dbus_usb_disconnect(void *handle)
312294 {
313295 DBUSTRACE(("%s(): \n", __FUNCTION__));
314
- if (drvinfo.remove)
315
- drvinfo.remove(handle);
296
+ if (disconnect_cb)
297
+ disconnect_cb(disc_arg);
316298 }
317299
318300 /**