814 bus->bustype = SSB_BUSTYPE_PCMCIA;
815 bus->host_pcmcia = pcmcia_dev;
816 bus->ops = &ssb_pcmcia_ops;
817
818 err = ssb_bus_register(bus, ssb_pcmcia_get_invariants, baseaddr);
819 if (!err) {
820 ssb_printk(KERN_INFO PFX "Sonics Silicon Backplane found on "
821 "PCMCIA device %s\n", pcmcia_dev->devname);
822 }
823
824 return err;
825}
826EXPORT_SYMBOL(ssb_bus_pcmciabus_register);
827#endif
828
829int ssb_bus_ssbbus_register(struct ssb_bus *bus,
830 unsigned long baseaddr,
831 ssb_invariants_func_t get_invariants)
832{
833 int err;
834
835 bus->bustype = SSB_BUSTYPE_SSB;
836 bus->ops = &ssb_ssb_ops;
837
838 err = ssb_bus_register(bus, get_invariants, baseaddr);
839 if (!err) {
840 ssb_printk(KERN_INFO PFX "Sonics Silicon Backplane found at "
841 "address 0x%08lX\n", baseaddr);
842 }
843
844 return err;
845}
846
847int __ssb_driver_register(struct ssb_driver *drv, struct module *owner)
848{
849 drv->drv.name = drv->name;
850 drv->drv.bus = &ssb_bustype;
851 drv->drv.owner = owner;
852
853 return driver_register(&drv->drv);
854}