Lines Matching full:bus

42 /* There are differences in the codeflow, if the bus is
57 struct ssb_bus *bus; in ssb_pci_dev_to_bus() local
60 list_for_each_entry(bus, &buses, list) { in ssb_pci_dev_to_bus()
61 if (bus->bustype == SSB_BUSTYPE_PCI && in ssb_pci_dev_to_bus()
62 bus->host_pci == pdev) in ssb_pci_dev_to_bus()
65 bus = NULL; in ssb_pci_dev_to_bus()
69 return bus; in ssb_pci_dev_to_bus()
76 struct ssb_bus *bus; in ssb_pcmcia_dev_to_bus() local
79 list_for_each_entry(bus, &buses, list) { in ssb_pcmcia_dev_to_bus()
80 if (bus->bustype == SSB_BUSTYPE_PCMCIA && in ssb_pcmcia_dev_to_bus()
81 bus->host_pcmcia == pdev) in ssb_pcmcia_dev_to_bus()
84 bus = NULL; in ssb_pcmcia_dev_to_bus()
88 return bus; in ssb_pcmcia_dev_to_bus()
95 struct ssb_bus *bus; in ssb_sdio_func_to_bus() local
98 list_for_each_entry(bus, &buses, list) { in ssb_sdio_func_to_bus()
99 if (bus->bustype == SSB_BUSTYPE_SDIO && in ssb_sdio_func_to_bus()
100 bus->host_sdio == func) in ssb_sdio_func_to_bus()
103 bus = NULL; in ssb_sdio_func_to_bus()
107 return bus; in ssb_sdio_func_to_bus()
112 int (*func)(struct ssb_bus *bus, unsigned long data)) in ssb_for_each_bus_call() argument
114 struct ssb_bus *bus; in ssb_for_each_bus_call() local
118 list_for_each_entry(bus, &buses, list) { in ssb_for_each_bus_call()
119 res = func(bus, data); in ssb_for_each_bus_call()
190 int ssb_bus_resume(struct ssb_bus *bus) in ssb_bus_resume() argument
196 bus->mapped_device = NULL; in ssb_bus_resume()
198 bus->pcicore.setup_done = 0; in ssb_bus_resume()
201 err = ssb_bus_powerup(bus, 0); in ssb_bus_resume()
204 err = ssb_pcmcia_hardware_setup(bus); in ssb_bus_resume()
206 ssb_bus_may_powerdown(bus); in ssb_bus_resume()
209 ssb_chipco_resume(&bus->chipco); in ssb_bus_resume()
210 ssb_bus_may_powerdown(bus); in ssb_bus_resume()
216 int ssb_bus_suspend(struct ssb_bus *bus) in ssb_bus_suspend() argument
218 ssb_chipco_suspend(&bus->chipco); in ssb_bus_suspend()
219 ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); in ssb_bus_suspend()
226 /** ssb_devices_freeze - Freeze all devices on the bus.
229 * on this bus anymore. ssb_devices_thaw() must be called after
232 * @bus: The bus.
235 int ssb_devices_freeze(struct ssb_bus *bus, struct ssb_freeze_context *ctx) in ssb_devices_freeze() argument
242 ctx->bus = bus; in ssb_devices_freeze()
243 SSB_WARN_ON(bus->nr_devices > ARRAY_SIZE(ctx->device_frozen)); in ssb_devices_freeze()
245 for (i = 0; i < bus->nr_devices; i++) { in ssb_devices_freeze()
246 sdev = ssb_device_get(&bus->devices[i]); in ssb_devices_freeze()
265 /** ssb_devices_thaw - Unfreeze all devices on the bus.
273 struct ssb_bus *bus = ctx->bus; in ssb_devices_thaw() local
279 for (i = 0; i < bus->nr_devices; i++) { in ssb_devices_thaw()
282 sdev = &bus->devices[i]; in ssb_devices_thaw()
442 static void ssb_devices_unregister(struct ssb_bus *bus) in ssb_devices_unregister() argument
447 for (i = bus->nr_devices - 1; i >= 0; i--) { in ssb_devices_unregister()
448 sdev = &(bus->devices[i]); in ssb_devices_unregister()
454 void ssb_bus_unregister(struct ssb_bus *bus) in ssb_bus_unregister() argument
457 ssb_devices_unregister(bus); in ssb_bus_unregister()
458 list_del(&bus->list); in ssb_bus_unregister()
461 ssb_pcmcia_exit(bus); in ssb_bus_unregister()
462 ssb_pci_exit(bus); in ssb_bus_unregister()
463 ssb_iounmap(bus); in ssb_bus_unregister()
475 static int ssb_devices_register(struct ssb_bus *bus) in ssb_devices_register() argument
483 for (i = 0; i < bus->nr_devices; i++) { in ssb_devices_register()
484 sdev = &(bus->devices[i]); in ssb_devices_register()
510 dev->bus = &ssb_bustype; in ssb_devices_register()
511 dev_set_name(dev, "ssb%u:%d", bus->busnumber, dev_idx); in ssb_devices_register()
513 switch (bus->bustype) { in ssb_devices_register()
516 sdev->irq = bus->host_pci->irq; in ssb_devices_register()
517 dev->parent = &bus->host_pci->dev; in ssb_devices_register()
523 sdev->irq = bus->host_pcmcia->irq; in ssb_devices_register()
524 dev->parent = &bus->host_pcmcia->dev; in ssb_devices_register()
529 dev->parent = &bus->host_sdio->dev; in ssb_devices_register()
556 ssb_devices_unregister(bus); in ssb_devices_register()
563 struct ssb_bus *bus, *n; in ssb_attach_queued_buses() local
567 list_for_each_entry_safe(bus, n, &attach_queue, list) { in ssb_attach_queued_buses()
569 list_del(&bus->list); in ssb_attach_queued_buses()
576 err = ssb_bus_powerup(bus, 0); in ssb_attach_queued_buses()
579 ssb_pcicore_init(&bus->pcicore); in ssb_attach_queued_buses()
580 ssb_bus_may_powerdown(bus); in ssb_attach_queued_buses()
582 err = ssb_devices_register(bus); in ssb_attach_queued_buses()
586 list_del(&bus->list); in ssb_attach_queued_buses()
589 list_move_tail(&bus->list, &buses); in ssb_attach_queued_buses()
597 struct ssb_bus *bus = dev->bus; in ssb_ssb_read8() local
600 return readb(bus->mmio + offset); in ssb_ssb_read8()
605 struct ssb_bus *bus = dev->bus; in ssb_ssb_read16() local
608 return readw(bus->mmio + offset); in ssb_ssb_read16()
613 struct ssb_bus *bus = dev->bus; in ssb_ssb_read32() local
616 return readl(bus->mmio + offset); in ssb_ssb_read32()
623 struct ssb_bus *bus = dev->bus; in ssb_ssb_block_read() local
627 addr = bus->mmio + offset; in ssb_ssb_block_read()
670 struct ssb_bus *bus = dev->bus; in ssb_ssb_write8() local
673 writeb(value, bus->mmio + offset); in ssb_ssb_write8()
678 struct ssb_bus *bus = dev->bus; in ssb_ssb_write16() local
681 writew(value, bus->mmio + offset); in ssb_ssb_write16()
686 struct ssb_bus *bus = dev->bus; in ssb_ssb_write32() local
689 writel(value, bus->mmio + offset); in ssb_ssb_write32()
696 struct ssb_bus *bus = dev->bus; in ssb_ssb_block_write() local
700 addr = bus->mmio + offset; in ssb_ssb_block_write()
741 /* Ops for the plain SSB bus without a host-device (no PCI or PCMCIA). */
755 static int ssb_fetch_invariants(struct ssb_bus *bus, in ssb_fetch_invariants() argument
762 err = get_invariants(bus, &iv); in ssb_fetch_invariants()
765 memcpy(&bus->boardinfo, &iv.boardinfo, sizeof(iv.boardinfo)); in ssb_fetch_invariants()
766 memcpy(&bus->sprom, &iv.sprom, sizeof(iv.sprom)); in ssb_fetch_invariants()
767 bus->has_cardbus_slot = iv.has_cardbus_slot; in ssb_fetch_invariants()
772 static int __devinit ssb_bus_register(struct ssb_bus *bus, in ssb_bus_register() argument
778 spin_lock_init(&bus->bar_lock); in ssb_bus_register()
779 INIT_LIST_HEAD(&bus->list); in ssb_bus_register()
781 spin_lock_init(&bus->gpio_lock); in ssb_bus_register()
784 /* Powerup the bus */ in ssb_bus_register()
785 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 1); in ssb_bus_register()
790 err = ssb_sdio_init(bus); in ssb_bus_register()
795 bus->busnumber = next_busnumber; in ssb_bus_register()
797 err = ssb_bus_scan(bus, baseaddr); in ssb_bus_register()
802 err = ssb_pci_init(bus); in ssb_bus_register()
806 err = ssb_pcmcia_init(bus); in ssb_bus_register()
811 err = ssb_bus_powerup(bus, 0); in ssb_bus_register()
814 ssb_chipcommon_init(&bus->chipco); in ssb_bus_register()
815 ssb_mipscore_init(&bus->mipscore); in ssb_bus_register()
816 err = ssb_fetch_invariants(bus, get_invariants); in ssb_bus_register()
818 ssb_bus_may_powerdown(bus); in ssb_bus_register()
821 ssb_bus_may_powerdown(bus); in ssb_bus_register()
825 list_add_tail(&bus->list, &attach_queue); in ssb_bus_register()
827 /* This is not early boot, so we must attach the bus now */ in ssb_bus_register()
839 list_del(&bus->list); in ssb_bus_register()
841 ssb_pcmcia_exit(bus); in ssb_bus_register()
843 ssb_pci_exit(bus); in ssb_bus_register()
845 ssb_iounmap(bus); in ssb_bus_register()
847 ssb_sdio_exit(bus); in ssb_bus_register()
850 ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); in ssb_bus_register()
855 int __devinit ssb_bus_pcibus_register(struct ssb_bus *bus, in ssb_bus_pcibus_register() argument
860 bus->bustype = SSB_BUSTYPE_PCI; in ssb_bus_pcibus_register()
861 bus->host_pci = host_pci; in ssb_bus_pcibus_register()
862 bus->ops = &ssb_pci_ops; in ssb_bus_pcibus_register()
864 err = ssb_bus_register(bus, ssb_pci_get_invariants, 0); in ssb_bus_pcibus_register()
879 int __devinit ssb_bus_pcmciabus_register(struct ssb_bus *bus, in ssb_bus_pcmciabus_register() argument
885 bus->bustype = SSB_BUSTYPE_PCMCIA; in ssb_bus_pcmciabus_register()
886 bus->host_pcmcia = pcmcia_dev; in ssb_bus_pcmciabus_register()
887 bus->ops = &ssb_pcmcia_ops; in ssb_bus_pcmciabus_register()
889 err = ssb_bus_register(bus, ssb_pcmcia_get_invariants, baseaddr); in ssb_bus_pcmciabus_register()
901 int __devinit ssb_bus_sdiobus_register(struct ssb_bus *bus, in ssb_bus_sdiobus_register() argument
907 bus->bustype = SSB_BUSTYPE_SDIO; in ssb_bus_sdiobus_register()
908 bus->host_sdio = func; in ssb_bus_sdiobus_register()
909 bus->ops = &ssb_sdio_ops; in ssb_bus_sdiobus_register()
910 bus->quirks = quirks; in ssb_bus_sdiobus_register()
912 err = ssb_bus_register(bus, ssb_sdio_get_invariants, ~0); in ssb_bus_sdiobus_register()
923 int __devinit ssb_bus_ssbbus_register(struct ssb_bus *bus, in ssb_bus_ssbbus_register() argument
929 bus->bustype = SSB_BUSTYPE_SSB; in ssb_bus_ssbbus_register()
930 bus->ops = &ssb_ssb_ops; in ssb_bus_ssbbus_register()
932 err = ssb_bus_register(bus, get_invariants, baseaddr); in ssb_bus_ssbbus_register()
944 drv->drv.bus = &ssb_bustype; in __ssb_driver_register()
959 struct ssb_bus *bus = dev->bus; in ssb_set_devtypedata() local
963 for (i = 0; i < bus->nr_devices; i++) { in ssb_set_devtypedata()
964 ent = &(bus->devices[i]); in ssb_set_devtypedata()
1091 u32 ssb_clockspeed(struct ssb_bus *bus) in ssb_clockspeed() argument
1097 if (ssb_extif_available(&bus->extif)) in ssb_clockspeed()
1098 ssb_extif_get_clockcontrol(&bus->extif, &plltype, in ssb_clockspeed()
1100 else if (bus->chipco.dev) in ssb_clockspeed()
1101 ssb_chipco_get_clockcontrol(&bus->chipco, &plltype, in ssb_clockspeed()
1106 if (bus->chip_id == 0x5365) { in ssb_clockspeed()
1267 u16 chip_id = dev->bus->chip_id; in ssb_dma_translation_special_bit()
1279 switch (dev->bus->bustype) { in ssb_dma_translation()
1283 if (pci_is_pcie(dev->bus->host_pci) && in ssb_dma_translation()
1299 int ssb_bus_may_powerdown(struct ssb_bus *bus) in ssb_bus_may_powerdown() argument
1307 if (bus->bustype == SSB_BUSTYPE_SSB) in ssb_bus_may_powerdown()
1310 cc = &bus->chipco; in ssb_bus_may_powerdown()
1318 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); in ssb_bus_may_powerdown()
1323 bus->powered_up = 0; in ssb_bus_may_powerdown()
1327 ssb_printk(KERN_ERR PFX "Bus powerdown failed\n"); in ssb_bus_may_powerdown()
1332 int ssb_bus_powerup(struct ssb_bus *bus, bool dynamic_pctl) in ssb_bus_powerup() argument
1337 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 1); in ssb_bus_powerup()
1342 bus->powered_up = 1; in ssb_bus_powerup()
1346 ssb_chipco_set_clockmode(&bus->chipco, mode); in ssb_bus_powerup()
1350 ssb_printk(KERN_ERR PFX "Bus powerup failed\n"); in ssb_bus_powerup()
1370 void ssb_commit_settings(struct ssb_bus *bus) in ssb_commit_settings() argument
1375 dev = bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev; in ssb_commit_settings()
1377 dev = bus->chipco.dev; in ssb_commit_settings()