static int ssb_hcd_resume(struct ssb_device *dev) { struct ssb_hcd_device *usb_dev = ssb_get_drvdata(dev); ssb_device_enable(dev, usb_dev->enable_flags); 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 void ssb_ohci_detach(struct ssb_device *dev) { struct usb_hcd *hcd = ssb_get_drvdata(dev); usb_remove_hcd(hcd); iounmap(hcd->regs); usb_put_hcd(hcd); ssb_device_disable(dev, 0); }
static int ssb_ohci_resume(struct ssb_device *dev) { 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; }
static void ssb_ohci_detach(struct ssb_device *dev) { struct usb_hcd *hcd = ssb_get_drvdata(dev); if (hcd->driver->shutdown) hcd->driver->shutdown(hcd); usb_remove_hcd(hcd); iounmap(hcd->regs); release_mem_region(hcd->rsrc_start, hcd->rsrc_len); usb_put_hcd(hcd); ssb_device_disable(dev, 0); }
int ssb_gige_map_irq(struct ssb_device *sdev, const struct pci_dev *pdev) { struct ssb_gige *dev = ssb_get_drvdata(sdev); if (pdev->bus->ops != &dev->pci_ops) { /* The PCI device is not on this SSB GigE bridge device. */ return -ENODEV; } return ssb_mips_irq(sdev) + 2; }
int ssb_gige_map_irq(struct ssb_device *sdev, const struct pci_dev *pdev) { struct ssb_gige *dev = ssb_get_drvdata(sdev); if (pdev->bus->ops != &dev->pci_ops) { return -ENODEV; } return ssb_mips_irq(sdev) + 2; }
static void ssb_hcd_remove(struct ssb_device *dev) { struct ssb_hcd_device *usb_dev = ssb_get_drvdata(dev); struct platform_device *ohci_dev = usb_dev->ohci_dev; struct platform_device *ehci_dev = usb_dev->ehci_dev; if (ohci_dev) platform_device_unregister(ohci_dev); if (ehci_dev) platform_device_unregister(ehci_dev); ssb_device_disable(dev, 0); }
void *b43_bus_get_wldev(struct b43_bus_dev *dev) { switch (dev->bus_type) { #ifdef CONFIG_B43_BCMA case B43_BUS_BCMA: return bcma_get_drvdata(dev->bdev); #endif #ifdef CONFIG_B43_SSB case B43_BUS_SSB: return ssb_get_drvdata(dev->sdev); #endif } return NULL; }
int ssb_gige_pcibios_plat_dev_init(struct ssb_device *sdev, struct pci_dev *pdev) { struct ssb_gige *dev = ssb_get_drvdata(sdev); struct resource *res; if (pdev->bus->ops != &dev->pci_ops) { /* The PCI device is not on this SSB GigE bridge device. */ return -ENODEV; } /* Fixup the PCI resources. */ res = &(pdev->resource[0]); res->flags = IORESOURCE_MEM | IORESOURCE_PCI_FIXED; res->name = dev->mem_resource.name; res->start = dev->mem_resource.start; res->end = dev->mem_resource.end; /* Fixup interrupt lines. */ pdev->irq = ssb_mips_irq(sdev) + 2; pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, pdev->irq); return 0; }
int ssb_gige_pcibios_plat_dev_init(struct ssb_device *sdev, struct pci_dev *pdev) { struct ssb_gige *dev = ssb_get_drvdata(sdev); struct resource *res; if (pdev->bus->ops != &dev->pci_ops) { return -ENODEV; } res = &(pdev->resource[0]); res->flags = IORESOURCE_MEM | IORESOURCE_PCI_FIXED; res->name = dev->mem_resource.name; res->start = dev->mem_resource.start; res->end = dev->mem_resource.end; pdev->irq = ssb_mips_irq(sdev) + 2; pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, pdev->irq); return 0; }