1 /* 2 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 /** 18 * DOC: wlan_hdd_afc.h 19 * 20 * This file has the AFC osif interface with linux kernel. 21 */ 22 23 #ifndef __WLAN_HDD_AFC_H__ 24 #define __WLAN_HDD_AFC_H__ 25 #include <wlan_cfg80211.h> 26 #include <qca_vendor.h> 27 #include <wlan_objmgr_cmn.h> 28 #include <wlan_cfg80211_afc.h> 29 30 #ifdef CONFIG_AFC_SUPPORT 31 32 #define FEATURE_AFC_VENDOR_COMMANDS \ 33 { \ 34 .info.vendor_id = QCA_NL80211_VENDOR_ID, \ 35 .info.subcmd = QCA_NL80211_VENDOR_SUBCMD_AFC_RESPONSE, \ 36 .doit = wlan_hdd_vendor_afc_response, \ 37 vendor_command_policy(wlan_cfg80211_afc_response_policy, \ 38 QCA_WLAN_VENDOR_ATTR_AFC_RESP_MAX) \ 39 }, 40 41 #define FEATURE_AFC_VENDOR_EVENTS \ 42 [QCA_NL80211_VENDOR_SUBCMD_AFC_EVENT_INDEX] = { \ 43 .vendor_id = QCA_NL80211_VENDOR_ID, \ 44 .subcmd = QCA_NL80211_VENDOR_SUBCMD_AFC_EVENT, \ 45 }, 46 47 /** 48 * wlan_hdd_vendor_afc_response() - OSIF callback function of NL vendor AFC 49 * response command. 50 * @wiphy: Pointer to WIPHY object 51 * @wdev: Pointer to wireless device 52 * @data: Pointer to NL vendor command of AFC response 53 * @data_len: Length of NL vendor command of AFC response 54 * 55 * Return: 0 if success, otherwise error code 56 */ 57 int wlan_hdd_vendor_afc_response(struct wiphy *wiphy, 58 struct wireless_dev *wdev, 59 const void *data, 60 int data_len); 61 62 /** 63 * wlan_hdd_register_afc_pld_cb() - API to register AFC PLD function to pass 64 * AFC response data to target. 65 * @psoc: Pointer to PSOC object 66 * 67 * Return: None 68 */ 69 void wlan_hdd_register_afc_pld_cb(struct wlan_objmgr_psoc *psoc); 70 #else 71 #define FEATURE_AFC_VENDOR_COMMANDS 72 #define FEATURE_AFC_VENDOR_EVENTS 73 wlan_hdd_register_afc_pld_cb(struct wlan_objmgr_psoc * psoc)74 static inline void wlan_hdd_register_afc_pld_cb(struct wlan_objmgr_psoc *psoc) 75 { 76 } 77 #endif 78 #endif 79