brintos

brintos / linux-shallow public Read only

0
0
Text · 1.4 KiB · e6ac9fc Raw
60 lines · c
1/* SPDX-License-Identifier: ISC */2/*3 * Copyright (c) 2022 Broadcom Corporation4 */5#ifndef FWVID_H_6#define FWVID_H_7 8#include "firmware.h"9#include "cfg80211.h"10 11struct brcmf_pub;12struct brcmf_if;13 14struct brcmf_fwvid_ops {15	void (*feat_attach)(struct brcmf_if *ifp);16	int (*set_sae_password)(struct brcmf_if *ifp, struct cfg80211_crypto_settings *crypto);17	int (*alloc_fweh_info)(struct brcmf_pub *drvr);18};19 20/* exported functions */21int brcmf_fwvid_register_vendor(enum brcmf_fwvendor fwvid, struct module *mod,22				const struct brcmf_fwvid_ops *ops);23int brcmf_fwvid_unregister_vendor(enum brcmf_fwvendor fwvid, struct module *mod);24 25/* core driver functions */26int brcmf_fwvid_attach(struct brcmf_pub *drvr);27void brcmf_fwvid_detach(struct brcmf_pub *drvr);28const char *brcmf_fwvid_vendor_name(struct brcmf_pub *drvr);29 30static inline void brcmf_fwvid_feat_attach(struct brcmf_if *ifp)31{32	const struct brcmf_fwvid_ops *vops = ifp->drvr->vops;33 34	if (!vops->feat_attach)35		return;36 37	vops->feat_attach(ifp);38}39 40static inline int brcmf_fwvid_set_sae_password(struct brcmf_if *ifp,41					       struct cfg80211_crypto_settings *crypto)42{43	const struct brcmf_fwvid_ops *vops = ifp->drvr->vops;44 45	if (!vops || !vops->set_sae_password)46		return -EOPNOTSUPP;47 48	return vops->set_sae_password(ifp, crypto);49}50 51static inline int brcmf_fwvid_alloc_fweh_info(struct brcmf_pub *drvr)52{53	if (!drvr->vops)54		return -EIO;55 56	return drvr->vops->alloc_fweh_info(drvr);57}58 59#endif /* FWVID_H_ */60