ssb_set_drvdata(dev, wldev); return 0; } static void wl_glue_ssb_remove(struct ssb_device *dev) { void *wldev = ssb_get_drvdata(dev); if (remove_cb) remove_cb(wldev); ssb_set_drvdata(dev, NULL); } static const struct ssb_device_id wl_glue_ssb_tbl[] = { SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, SSB_ANY_REV), #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32) SSB_DEVICE(SSB_VENDOR_BROADCOM2, SSB_DEV_80211, SSB_ANY_REV), #endif SSB_DEVTABLE_END }; static struct ssb_driver wl_glue_ssb_driver = { .name = KBUILD_MODNAME, .id_table = wl_glue_ssb_tbl, .probe = wl_glue_ssb_probe, .remove = wl_glue_ssb_remove, }; #endif /* CONFIG_SSB */ #ifdef CONFIG_BCMA
struct usb_hcd *hcd = ssb_get_drvdata(dev); struct ssb_ohci_device *ohcidev = hcd_to_ssb_ohci(hcd); ssb_device_enable(dev, ohcidev->enable_flags); ohci_finish_controller_resume(hcd); return 0; } #else /* !CONFIG_PM */ #define ssb_ohci_suspend NULL #define ssb_ohci_resume NULL #endif /* CONFIG_PM */ static const struct ssb_device_id ssb_ohci_table[] = { SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB11_HOSTDEV, SSB_ANY_REV), SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB11_HOST, SSB_ANY_REV), SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_USB20_HOST, SSB_ANY_REV), SSB_DEVTABLE_END }; MODULE_DEVICE_TABLE(ssb, ssb_ohci_table); static struct ssb_driver ssb_ohci_driver = { .name = KBUILD_MODNAME, .id_table = ssb_ohci_table, .probe = ssb_ohci_probe, .remove = ssb_ohci_remove, .suspend = ssb_ohci_suspend, .resume = ssb_ohci_resume, };
#include <linux/ssb/ssb.h> #include <linux/ssb/ssb_driver_gige.h> #include <linux/pci.h> #include <linux/pci_regs.h> #include <linux/slab.h> static const struct ssb_device_id ssb_gige_tbl[] = { SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_ETHERNET_GBIT, SSB_ANY_REV), SSB_DEVTABLE_END }; /* MODULE_DEVICE_TABLE(ssb, ssb_gige_tbl); */ static inline u8 gige_read8(struct ssb_gige *dev, u16 offset) { return ssb_read8(dev->dev, offset); } static inline u16 gige_read16(struct ssb_gige *dev, u16 offset) { return ssb_read16(dev->dev, offset); } static inline u32 gige_read32(struct ssb_gige *dev, u16 offset) { return ssb_read32(dev->dev, offset); }