|
@@ -113,6 +113,16 @@ static int b43_modparam_pio = B43_PIO_DEFAULT;
|
|
|
module_param_named(pio, b43_modparam_pio, int, 0644);
|
|
|
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[] = {
|
|
|
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
|
|
|
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 6),
|
|
@@ -4986,6 +4996,26 @@ static struct b43_wl *b43_wireless_init(struct ssb_device *dev)
|
|
|
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
|
|
|
int b43_ssb_probe(struct ssb_device *sdev, const struct ssb_device_id *id)
|
|
|
{
|
|
@@ -5116,14 +5146,23 @@ static int __init b43_init(void)
|
|
|
err = b43_sdio_init();
|
|
|
if (err)
|
|
|
goto err_pcmcia_exit;
|
|
|
- err = ssb_driver_register(&b43_ssb_driver);
|
|
|
+#ifdef CONFIG_B43_BCMA
|
|
|
+ err = bcma_driver_register(&b43_bcma_driver);
|
|
|
if (err)
|
|
|
goto err_sdio_exit;
|
|
|
+#endif
|
|
|
+ err = ssb_driver_register(&b43_ssb_driver);
|
|
|
+ if (err)
|
|
|
+ goto err_bcma_driver_exit;
|
|
|
b43_print_driverinfo();
|
|
|
|
|
|
return err;
|
|
|
|
|
|
+err_bcma_driver_exit:
|
|
|
+#ifdef CONFIG_B43_BCMA
|
|
|
+ bcma_driver_unregister(&b43_bcma_driver);
|
|
|
err_sdio_exit:
|
|
|
+#endif
|
|
|
b43_sdio_exit();
|
|
|
err_pcmcia_exit:
|
|
|
b43_pcmcia_exit();
|
|
@@ -5135,6 +5174,9 @@ err_dfs_exit:
|
|
|
static void __exit b43_exit(void)
|
|
|
{
|
|
|
ssb_driver_unregister(&b43_ssb_driver);
|
|
|
+#ifdef CONFIG_B43_BCMA
|
|
|
+ bcma_driver_unregister(&b43_bcma_driver);
|
|
|
+#endif
|
|
|
b43_sdio_exit();
|
|
|
b43_pcmcia_exit();
|
|
|
b43_debugfs_exit();
|