1/* 2 * Copyright (c) 2014 Broadcom Corporation 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 ANY 11 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 13 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16#ifndef _BRCMF_FEATURE_H 17#define _BRCMF_FEATURE_H 18 19/* 20 * Features: 21 * 22 * MCHAN: multi-channel for concurrent P2P. 23 */ 24#define BRCMF_FEAT_LIST \ 25 BRCMF_FEAT_DEF(MBSS) \ 26 BRCMF_FEAT_DEF(MCHAN) \ 27 BRCMF_FEAT_DEF(WOWL) 28/* 29 * Quirks: 30 * 31 * AUTO_AUTH: workaround needed for automatic authentication type. 32 * NEED_MPC: driver needs to disable MPC during scanning operation. 33 */ 34#define BRCMF_QUIRK_LIST \ 35 BRCMF_QUIRK_DEF(AUTO_AUTH) \ 36 BRCMF_QUIRK_DEF(NEED_MPC) 37 38#define BRCMF_FEAT_DEF(_f) \ 39 BRCMF_FEAT_ ## _f, 40/* 41 * expand feature list to enumeration. 42 */ 43enum brcmf_feat_id { 44 BRCMF_FEAT_LIST 45 BRCMF_FEAT_LAST 46}; 47#undef BRCMF_FEAT_DEF 48 49#define BRCMF_QUIRK_DEF(_q) \ 50 BRCMF_FEAT_QUIRK_ ## _q, 51/* 52 * expand quirk list to enumeration. 53 */ 54enum brcmf_feat_quirk { 55 BRCMF_QUIRK_LIST 56 BRCMF_FEAT_QUIRK_LAST 57}; 58#undef BRCMF_QUIRK_DEF 59 60/** 61 * brcmf_feat_attach() - determine features and quirks. 62 * 63 * @drvr: driver instance. 64 */ 65void brcmf_feat_attach(struct brcmf_pub *drvr); 66 67/** 68 * brcmf_feat_is_enabled() - query feature. 69 * 70 * @ifp: interface instance. 71 * @id: feature id to check. 72 * 73 * Return: true is feature is enabled; otherwise false. 74 */ 75bool brcmf_feat_is_enabled(struct brcmf_if *ifp, enum brcmf_feat_id id); 76 77/** 78 * brcmf_feat_is_quirk_enabled() - query chip quirk. 79 * 80 * @ifp: interface instance. 81 * @quirk: quirk id to check. 82 * 83 * Return: true is quirk is enabled; otherwise false. 84 */ 85bool brcmf_feat_is_quirk_enabled(struct brcmf_if *ifp, 86 enum brcmf_feat_quirk quirk); 87 88#endif /* _BRCMF_FEATURE_H */ 89