Commit 3c65ab62 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by John W. Linville

b43: add an option to register BROKEN bcma driver

It does nothing useful yet, so it is matched as BROKEN.
For now this is just an option for b43, in future we may want to make
b43 support SSB or BCMA (note: or, not xor).
Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 27f18dc2
...@@ -26,6 +26,11 @@ config B43 ...@@ -26,6 +26,11 @@ config B43
This driver can be built as a module (recommended) that will be called "b43". This driver can be built as a module (recommended) that will be called "b43".
If unsure, say M. If unsure, say M.
config B43_BCMA
bool "Support for BCMA bus"
depends on B43 && BCMA && BROKEN
default y
# Auto-select SSB PCI-HOST support, if possible # Auto-select SSB PCI-HOST support, if possible
config B43_PCI_AUTOSELECT config B43_PCI_AUTOSELECT
bool bool
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/hw_random.h> #include <linux/hw_random.h>
#include <linux/bcma/bcma.h>
#include <linux/ssb/ssb.h> #include <linux/ssb/ssb.h>
#include <net/mac80211.h> #include <net/mac80211.h>
......
...@@ -113,6 +113,16 @@ static int b43_modparam_pio = B43_PIO_DEFAULT; ...@@ -113,6 +113,16 @@ static int b43_modparam_pio = B43_PIO_DEFAULT;
module_param_named(pio, b43_modparam_pio, int, 0644); module_param_named(pio, b43_modparam_pio, int, 0644);
MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO"); MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
#ifdef CONFIG_B43_BCMA
static const struct bcma_device_id b43_bcma_tbl[] = {
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x17, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x18, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x1D, BCMA_ANY_CLASS),
BCMA_CORETABLE_END
};
MODULE_DEVICE_TABLE(bcma, b43_bcma_tbl);
#endif
static const struct ssb_device_id b43_ssb_tbl[] = { static const struct ssb_device_id b43_ssb_tbl[] = {
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5), SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 6), SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 6),
...@@ -4986,6 +4996,26 @@ static struct b43_wl *b43_wireless_init(struct ssb_device *dev) ...@@ -4986,6 +4996,26 @@ static struct b43_wl *b43_wireless_init(struct ssb_device *dev)
return wl; return wl;
} }
#ifdef CONFIG_B43_BCMA
static int b43_bcma_probe(struct bcma_device *core)
{
b43err(NULL, "BCMA is not supported yet!");
return -EOPNOTSUPP;
}
static void b43_bcma_remove(struct bcma_device *core)
{
/* TODO */
}
static struct bcma_driver b43_bcma_driver = {
.name = KBUILD_MODNAME,
.id_table = b43_bcma_tbl,
.probe = b43_bcma_probe,
.remove = b43_bcma_remove,
};
#endif
static static
int b43_ssb_probe(struct ssb_device *sdev, const struct ssb_device_id *id) int b43_ssb_probe(struct ssb_device *sdev, const struct ssb_device_id *id)
{ {
...@@ -5116,14 +5146,23 @@ static int __init b43_init(void) ...@@ -5116,14 +5146,23 @@ static int __init b43_init(void)
err = b43_sdio_init(); err = b43_sdio_init();
if (err) if (err)
goto err_pcmcia_exit; goto err_pcmcia_exit;
err = ssb_driver_register(&b43_ssb_driver); #ifdef CONFIG_B43_BCMA
err = bcma_driver_register(&b43_bcma_driver);
if (err) if (err)
goto err_sdio_exit; goto err_sdio_exit;
#endif
err = ssb_driver_register(&b43_ssb_driver);
if (err)
goto err_bcma_driver_exit;
b43_print_driverinfo(); b43_print_driverinfo();
return err; return err;
err_bcma_driver_exit:
#ifdef CONFIG_B43_BCMA
bcma_driver_unregister(&b43_bcma_driver);
err_sdio_exit: err_sdio_exit:
#endif
b43_sdio_exit(); b43_sdio_exit();
err_pcmcia_exit: err_pcmcia_exit:
b43_pcmcia_exit(); b43_pcmcia_exit();
...@@ -5135,6 +5174,9 @@ static int __init b43_init(void) ...@@ -5135,6 +5174,9 @@ static int __init b43_init(void)
static void __exit b43_exit(void) static void __exit b43_exit(void)
{ {
ssb_driver_unregister(&b43_ssb_driver); ssb_driver_unregister(&b43_ssb_driver);
#ifdef CONFIG_B43_BCMA
bcma_driver_unregister(&b43_bcma_driver);
#endif
b43_sdio_exit(); b43_sdio_exit();
b43_pcmcia_exit(); b43_pcmcia_exit();
b43_debugfs_exit(); b43_debugfs_exit();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment