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