772err_dequeue:
773 list_del(&bus->list);
774err_pcmcia_exit:
775 ssb_pcmcia_exit(bus);
776err_pci_exit:
777 ssb_pci_exit(bus);
778err_unmap:
779 ssb_iounmap(bus);
780err_disable_xtal:
781 ssb_buses_unlock();
782 ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0);
783 return err;
784}
785
786#ifdef CONFIG_SSB_PCIHOST
787int ssb_bus_pcibus_register(struct ssb_bus *bus,
788 struct pci_dev *host_pci)
789{
790 int err;
791
792 bus->bustype = SSB_BUSTYPE_PCI;
793 bus->host_pci = host_pci;
794 bus->ops = &ssb_pci_ops;
795
796 err = ssb_bus_register(bus, ssb_pci_get_invariants, 0);
797 if (!err) {
798 ssb_printk(KERN_INFO PFX "Sonics Silicon Backplane found on "
799 "PCI device %s\n", host_pci->dev.bus_id);
800 }
801
802 return err;
803}
804EXPORT_SYMBOL(ssb_bus_pcibus_register);
805#endif
806
807#ifdef CONFIG_SSB_PCMCIAHOST
808int ssb_bus_pcmciabus_register(struct ssb_bus *bus,
809 struct pcmcia_device *pcmcia_dev,
810 unsigned long baseaddr)
811{
812 int err;