blob: 85d98639f930f41c491ff76d8b5edd0539bd433c [file] [log] [blame]
// Copyright (c) 2019 The Fuchsia Authors.
//
// Permission to use, copy, modify, and/or distribute this software for any purpose with or without
// fee is hereby granted, provided that the above copyright notice and this permission notice appear
// in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
// SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
// OF THIS SOFTWARE.
#include "src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/bus.h"
#include "src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/debug.h"
// Note that this file does not include any headers that define the bus-specific functions it calls,
// since it cannot depend on them. Hence we just declare them directly before use.
zx_status_t brcmf_bus_register(brcmf_pub* drvr, std::unique_ptr<brcmf_bus>* out_bus,
::wlan::simulation::Environment* env) {
#if CONFIG_BRCMFMAC_SDIO
{
extern zx_status_t brcmf_sdio_register(brcmf_pub * drvr, std::unique_ptr<brcmf_bus> * out_bus);
const zx_status_t result = brcmf_sdio_register(drvr, out_bus);
if (result != ZX_OK) {
BRCMF_DBG(INFO, "SDIO registration failed: %d\n", result);
} else {
return ZX_OK;
}
}
#endif // CONFIG_BRCMFMAC_SDIO
#if CONFIG_BRCMFMAC_SIM
{
extern zx_status_t brcmf_sim_register(brcmf_pub* drvr, std::unique_ptr<brcmf_bus>* out_bus,
::wlan::simulation::Environment* env);
const zx_status_t result = brcmf_sim_register(drvr, out_bus, env);
if (result != ZX_OK) {
BRCMF_DBG(INFO, "SIM registration failed: %d\n", result);
} else {
return ZX_OK;
}
}
#endif // CONFIG_BRCMFMAC_SIM
return ZX_ERR_NOT_SUPPORTED;
}
void brcmf_bus_exit(brcmf_bus* bus) {
#if CONFIG_BRCMFMAC_SDIO
extern void brcmf_sdio_exit(brcmf_bus * bus);
brcmf_sdio_exit(bus);
#endif
#if CONFIG_BRCMFMAC_SIM
extern void brcmf_sim_exit(brcmf_bus * bus);
brcmf_sim_exit(bus);
#endif
}