static int intel_th_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { struct intel_th_drvdata *drvdata = (void *)id->driver_data; struct resource resource[TH_MMIO_END + TH_NVEC_MAX] = { [TH_MMIO_CONFIG] = pdev->resource[TH_PCI_CONFIG_BAR], [TH_MMIO_SW] = pdev->resource[TH_PCI_STH_SW_BAR], }; int err, r = TH_MMIO_SW + 1, i; struct intel_th *th; err = pcim_enable_device(pdev); if (err) return err; err = pcim_iomap_regions_request_all(pdev, BAR_MASK, DRIVER_NAME); if (err) return err; if (pdev->resource[TH_PCI_RTIT_BAR].start) { resource[TH_MMIO_RTIT] = pdev->resource[TH_PCI_RTIT_BAR]; r++; } err = pci_alloc_irq_vectors(pdev, 1, 8, PCI_IRQ_ALL_TYPES); if (err > 0) for (i = 0; i < err; i++, r++) { resource[r].flags = IORESOURCE_IRQ; resource[r].start = pci_irq_vector(pdev, i); } th = intel_th_alloc(&pdev->dev, drvdata, resource, r); if (IS_ERR(th)) return PTR_ERR(th); th->activate = intel_th_pci_activate; th->deactivate = intel_th_pci_deactivate; pci_set_master(pdev); return 0; }
static int intel_th_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { struct intel_th *th; int err; err = pcim_enable_device(pdev); if (err) return err; err = pcim_iomap_regions_request_all(pdev, BAR_MASK, DRIVER_NAME); if (err) return err; th = intel_th_alloc(&pdev->dev, pdev->resource, DEVICE_COUNT_RESOURCE, pdev->irq); if (IS_ERR(th)) return PTR_ERR(th); return 0; }