1 | /* SPDX-License-Identifier: ISC */ |
2 | /* |
3 | * Copyright (c) 2014-2017 Qualcomm Atheros, Inc. |
4 | */ |
5 | |
6 | #ifndef __WIL_PLATFORM_H__ |
7 | #define __WIL_PLATFORM_H__ |
8 | |
9 | struct device; |
10 | |
11 | enum wil_platform_event { |
12 | WIL_PLATFORM_EVT_FW_CRASH = 0, |
13 | WIL_PLATFORM_EVT_PRE_RESET = 1, |
14 | WIL_PLATFORM_EVT_FW_RDY = 2, |
15 | WIL_PLATFORM_EVT_PRE_SUSPEND = 3, |
16 | WIL_PLATFORM_EVT_POST_SUSPEND = 4, |
17 | }; |
18 | |
19 | enum wil_platform_features { |
20 | WIL_PLATFORM_FEATURE_FW_EXT_CLK_CONTROL = 0, |
21 | WIL_PLATFORM_FEATURE_TRIPLE_MSI = 1, |
22 | WIL_PLATFORM_FEATURE_MAX, |
23 | }; |
24 | |
25 | enum wil_platform_capa { |
26 | WIL_PLATFORM_CAPA_RADIO_ON_IN_SUSPEND = 0, |
27 | WIL_PLATFORM_CAPA_T_PWR_ON_0 = 1, |
28 | WIL_PLATFORM_CAPA_EXT_CLK = 2, |
29 | WIL_PLATFORM_CAPA_MAX, |
30 | }; |
31 | |
32 | /** |
33 | * struct wil_platform_ops - wil platform module calls from this |
34 | * driver to platform driver |
35 | */ |
36 | struct wil_platform_ops { |
37 | int (*bus_request)(void *handle, uint32_t kbps /* KBytes/Sec */); |
38 | int (*suspend)(void *handle, bool keep_device_power); |
39 | int (*resume)(void *handle, bool device_powered_on); |
40 | void (*uninit)(void *handle); |
41 | int (*notify)(void *handle, enum wil_platform_event evt); |
42 | int (*get_capa)(void *handle); |
43 | void (*set_features)(void *handle, int features); |
44 | }; |
45 | |
46 | /** |
47 | * struct wil_platform_rops - wil platform module callbacks from |
48 | * platform driver to this driver |
49 | * @ramdump: store a ramdump from the wil firmware. The platform |
50 | * driver may add additional data to the ramdump to |
51 | * generate the final crash dump. |
52 | * @fw_recovery: start a firmware recovery process. Called as |
53 | * part of a crash recovery process which may include other |
54 | * related platform subsystems. |
55 | */ |
56 | struct wil_platform_rops { |
57 | int (*ramdump)(void *wil_handle, void *buf, uint32_t size); |
58 | int (*fw_recovery)(void *wil_handle); |
59 | }; |
60 | |
61 | /** |
62 | * wil_platform_init - initialize the platform driver |
63 | * |
64 | * @dev - pointer to the wil6210 device |
65 | * @ops - structure with platform driver operations. Platform |
66 | * driver will fill this structure with function pointers. |
67 | * @rops - structure with callbacks from platform driver to |
68 | * this driver. The platform driver copies the structure to |
69 | * its own storage. Can be NULL if this driver does not |
70 | * support crash recovery. |
71 | * @wil_handle - context for this driver that will be passed |
72 | * when platform driver invokes one of the callbacks in |
73 | * rops. May be NULL if rops is NULL. |
74 | */ |
75 | void *wil_platform_init(struct device *dev, struct wil_platform_ops *ops, |
76 | const struct wil_platform_rops *rops, void *wil_handle); |
77 | |
78 | int __init wil_platform_modinit(void); |
79 | void wil_platform_modexit(void); |
80 | |
81 | #endif /* __WIL_PLATFORM_H__ */ |
82 | |