Lines Matching refs:bus

58 	struct ssb_bus *bus;  in ssb_pci_dev_to_bus()  local
61 list_for_each_entry(bus, &buses, list) { in ssb_pci_dev_to_bus()
62 if (bus->bustype == SSB_BUSTYPE_PCI && in ssb_pci_dev_to_bus()
63 bus->host_pci == pdev) in ssb_pci_dev_to_bus()
66 bus = NULL; in ssb_pci_dev_to_bus()
70 return bus; in ssb_pci_dev_to_bus()
77 struct ssb_bus *bus; in ssb_pcmcia_dev_to_bus() local
80 list_for_each_entry(bus, &buses, list) { in ssb_pcmcia_dev_to_bus()
81 if (bus->bustype == SSB_BUSTYPE_PCMCIA && in ssb_pcmcia_dev_to_bus()
82 bus->host_pcmcia == pdev) in ssb_pcmcia_dev_to_bus()
85 bus = NULL; in ssb_pcmcia_dev_to_bus()
89 return bus; in ssb_pcmcia_dev_to_bus()
94 int (*func)(struct ssb_bus *bus, unsigned long data)) in ssb_for_each_bus_call() argument
96 struct ssb_bus *bus; in ssb_for_each_bus_call() local
100 list_for_each_entry(bus, &buses, list) { in ssb_for_each_bus_call()
101 res = func(bus, data); in ssb_for_each_bus_call()
159 int ssb_bus_resume(struct ssb_bus *bus) in ssb_bus_resume() argument
165 bus->mapped_device = NULL; in ssb_bus_resume()
167 bus->pcicore.setup_done = 0; in ssb_bus_resume()
170 err = ssb_bus_powerup(bus, 0); in ssb_bus_resume()
173 err = ssb_pcmcia_hardware_setup(bus); in ssb_bus_resume()
175 ssb_bus_may_powerdown(bus); in ssb_bus_resume()
178 ssb_chipco_resume(&bus->chipco); in ssb_bus_resume()
179 ssb_bus_may_powerdown(bus); in ssb_bus_resume()
185 int ssb_bus_suspend(struct ssb_bus *bus) in ssb_bus_suspend() argument
187 ssb_chipco_suspend(&bus->chipco); in ssb_bus_suspend()
188 ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); in ssb_bus_suspend()
204 int ssb_devices_freeze(struct ssb_bus *bus, struct ssb_freeze_context *ctx) in ssb_devices_freeze() argument
211 ctx->bus = bus; in ssb_devices_freeze()
212 SSB_WARN_ON(bus->nr_devices > ARRAY_SIZE(ctx->device_frozen)); in ssb_devices_freeze()
214 for (i = 0; i < bus->nr_devices; i++) { in ssb_devices_freeze()
215 sdev = ssb_device_get(&bus->devices[i]); in ssb_devices_freeze()
240 struct ssb_bus *bus = ctx->bus; in ssb_devices_thaw() local
246 for (i = 0; i < bus->nr_devices; i++) { in ssb_devices_thaw()
249 sdev = &bus->devices[i]; in ssb_devices_thaw()
411 static void ssb_devices_unregister(struct ssb_bus *bus) in ssb_devices_unregister() argument
416 for (i = bus->nr_devices - 1; i >= 0; i--) { in ssb_devices_unregister()
417 sdev = &(bus->devices[i]); in ssb_devices_unregister()
423 if (bus->bustype == SSB_BUSTYPE_SSB) in ssb_devices_unregister()
424 platform_device_unregister(bus->watchdog); in ssb_devices_unregister()
428 void ssb_bus_unregister(struct ssb_bus *bus) in ssb_bus_unregister() argument
432 err = ssb_gpio_unregister(bus); in ssb_bus_unregister()
439 ssb_devices_unregister(bus); in ssb_bus_unregister()
440 list_del(&bus->list); in ssb_bus_unregister()
443 ssb_pcmcia_exit(bus); in ssb_bus_unregister()
444 ssb_pci_exit(bus); in ssb_bus_unregister()
445 ssb_iounmap(bus); in ssb_bus_unregister()
457 static int ssb_devices_register(struct ssb_bus *bus) in ssb_devices_register() argument
465 for (i = 0; i < bus->nr_devices; i++) { in ssb_devices_register()
466 sdev = &(bus->devices[i]); in ssb_devices_register()
491 dev->bus = &ssb_bustype; in ssb_devices_register()
492 dev_set_name(dev, "ssb%u:%d", bus->busnumber, dev_idx); in ssb_devices_register()
494 switch (bus->bustype) { in ssb_devices_register()
497 sdev->irq = bus->host_pci->irq; in ssb_devices_register()
498 dev->parent = &bus->host_pci->dev; in ssb_devices_register()
504 sdev->irq = bus->host_pcmcia->irq; in ssb_devices_register()
505 dev->parent = &bus->host_pcmcia->dev; in ssb_devices_register()
510 dev->parent = &bus->host_sdio->dev; in ssb_devices_register()
533 if (bus->mipscore.pflash.present) { in ssb_devices_register()
541 if (bus->mipscore.sflash.present) { in ssb_devices_register()
551 ssb_devices_unregister(bus); in ssb_devices_register()
558 struct ssb_bus *bus, *n; in ssb_attach_queued_buses() local
562 list_for_each_entry_safe(bus, n, &attach_queue, list) { in ssb_attach_queued_buses()
564 list_del(&bus->list); in ssb_attach_queued_buses()
571 err = ssb_bus_powerup(bus, 0); in ssb_attach_queued_buses()
574 ssb_pcicore_init(&bus->pcicore); in ssb_attach_queued_buses()
575 if (bus->bustype == SSB_BUSTYPE_SSB) in ssb_attach_queued_buses()
576 ssb_watchdog_register(bus); in ssb_attach_queued_buses()
578 err = ssb_gpio_init(bus); in ssb_attach_queued_buses()
584 ssb_bus_may_powerdown(bus); in ssb_attach_queued_buses()
586 err = ssb_devices_register(bus); in ssb_attach_queued_buses()
590 list_del(&bus->list); in ssb_attach_queued_buses()
593 list_move_tail(&bus->list, &buses); in ssb_attach_queued_buses()
599 static int ssb_fetch_invariants(struct ssb_bus *bus, in ssb_fetch_invariants() argument
606 err = get_invariants(bus, &iv); in ssb_fetch_invariants()
609 memcpy(&bus->boardinfo, &iv.boardinfo, sizeof(iv.boardinfo)); in ssb_fetch_invariants()
610 memcpy(&bus->sprom, &iv.sprom, sizeof(iv.sprom)); in ssb_fetch_invariants()
611 bus->has_cardbus_slot = iv.has_cardbus_slot; in ssb_fetch_invariants()
616 static int ssb_bus_register(struct ssb_bus *bus, in ssb_bus_register() argument
622 spin_lock_init(&bus->bar_lock); in ssb_bus_register()
623 INIT_LIST_HEAD(&bus->list); in ssb_bus_register()
625 spin_lock_init(&bus->gpio_lock); in ssb_bus_register()
629 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 1); in ssb_bus_register()
634 err = ssb_sdio_init(bus); in ssb_bus_register()
639 bus->busnumber = next_busnumber; in ssb_bus_register()
641 err = ssb_bus_scan(bus, baseaddr); in ssb_bus_register()
646 err = ssb_pci_init(bus); in ssb_bus_register()
650 err = ssb_pcmcia_init(bus); in ssb_bus_register()
655 err = ssb_bus_powerup(bus, 0); in ssb_bus_register()
658 ssb_chipcommon_init(&bus->chipco); in ssb_bus_register()
659 ssb_extif_init(&bus->extif); in ssb_bus_register()
660 ssb_mipscore_init(&bus->mipscore); in ssb_bus_register()
661 err = ssb_fetch_invariants(bus, get_invariants); in ssb_bus_register()
663 ssb_bus_may_powerdown(bus); in ssb_bus_register()
666 ssb_bus_may_powerdown(bus); in ssb_bus_register()
670 list_add_tail(&bus->list, &attach_queue); in ssb_bus_register()
684 list_del(&bus->list); in ssb_bus_register()
686 ssb_pcmcia_exit(bus); in ssb_bus_register()
688 ssb_pci_exit(bus); in ssb_bus_register()
690 ssb_iounmap(bus); in ssb_bus_register()
692 ssb_sdio_exit(bus); in ssb_bus_register()
695 ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); in ssb_bus_register()
700 int ssb_bus_pcibus_register(struct ssb_bus *bus, struct pci_dev *host_pci) in ssb_bus_pcibus_register() argument
704 bus->bustype = SSB_BUSTYPE_PCI; in ssb_bus_pcibus_register()
705 bus->host_pci = host_pci; in ssb_bus_pcibus_register()
706 bus->ops = &ssb_pci_ops; in ssb_bus_pcibus_register()
708 err = ssb_bus_register(bus, ssb_pci_get_invariants, 0); in ssb_bus_pcibus_register()
722 int ssb_bus_pcmciabus_register(struct ssb_bus *bus, in ssb_bus_pcmciabus_register() argument
728 bus->bustype = SSB_BUSTYPE_PCMCIA; in ssb_bus_pcmciabus_register()
729 bus->host_pcmcia = pcmcia_dev; in ssb_bus_pcmciabus_register()
730 bus->ops = &ssb_pcmcia_ops; in ssb_bus_pcmciabus_register()
732 err = ssb_bus_register(bus, ssb_pcmcia_get_invariants, baseaddr); in ssb_bus_pcmciabus_register()
743 int ssb_bus_sdiobus_register(struct ssb_bus *bus, struct sdio_func *func, in ssb_bus_sdiobus_register() argument
748 bus->bustype = SSB_BUSTYPE_SDIO; in ssb_bus_sdiobus_register()
749 bus->host_sdio = func; in ssb_bus_sdiobus_register()
750 bus->ops = &ssb_sdio_ops; in ssb_bus_sdiobus_register()
751 bus->quirks = quirks; in ssb_bus_sdiobus_register()
753 err = ssb_bus_register(bus, ssb_sdio_get_invariants, ~0); in ssb_bus_sdiobus_register()
765 int ssb_bus_ssbbus_register(struct ssb_bus *bus, unsigned long baseaddr, in ssb_bus_ssbbus_register() argument
770 bus->bustype = SSB_BUSTYPE_SSB; in ssb_bus_ssbbus_register()
771 bus->ops = &ssb_host_soc_ops; in ssb_bus_ssbbus_register()
773 err = ssb_bus_register(bus, get_invariants, baseaddr); in ssb_bus_ssbbus_register()
786 drv->drv.bus = &ssb_bustype; in __ssb_driver_register()
801 struct ssb_bus *bus = dev->bus; in ssb_set_devtypedata() local
805 for (i = 0; i < bus->nr_devices; i++) { in ssb_set_devtypedata()
806 ent = &(bus->devices[i]); in ssb_set_devtypedata()
933 u32 ssb_clockspeed(struct ssb_bus *bus) in ssb_clockspeed() argument
939 if (bus->chipco.capabilities & SSB_CHIPCO_CAP_PMU) in ssb_clockspeed()
940 return ssb_pmu_get_controlclock(&bus->chipco); in ssb_clockspeed()
942 if (ssb_extif_available(&bus->extif)) in ssb_clockspeed()
943 ssb_extif_get_clockcontrol(&bus->extif, &plltype, in ssb_clockspeed()
945 else if (bus->chipco.dev) in ssb_clockspeed()
946 ssb_chipco_get_clockcontrol(&bus->chipco, &plltype, in ssb_clockspeed()
951 if (bus->chip_id == 0x5365) { in ssb_clockspeed()
1113 u16 chip_id = dev->bus->chip_id; in ssb_dma_translation_special_bit()
1125 switch (dev->bus->bustype) { in ssb_dma_translation()
1129 if (pci_is_pcie(dev->bus->host_pci) && in ssb_dma_translation()
1145 int ssb_bus_may_powerdown(struct ssb_bus *bus) in ssb_bus_may_powerdown() argument
1153 if (bus->bustype == SSB_BUSTYPE_SSB) in ssb_bus_may_powerdown()
1156 cc = &bus->chipco; in ssb_bus_may_powerdown()
1164 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); in ssb_bus_may_powerdown()
1169 bus->powered_up = 0; in ssb_bus_may_powerdown()
1178 int ssb_bus_powerup(struct ssb_bus *bus, bool dynamic_pctl) in ssb_bus_powerup() argument
1183 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 1); in ssb_bus_powerup()
1188 bus->powered_up = 1; in ssb_bus_powerup()
1192 ssb_chipco_set_clockmode(&bus->chipco, mode); in ssb_bus_powerup()
1216 void ssb_commit_settings(struct ssb_bus *bus) in ssb_commit_settings() argument
1221 dev = bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev; in ssb_commit_settings()
1223 dev = bus->chipco.dev; in ssb_commit_settings()