diff options
Diffstat (limited to 'drivers/spi/spi-cavium-thunderx.c')
-rw-r--r-- | drivers/spi/spi-cavium-thunderx.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/spi/spi-cavium-thunderx.c b/drivers/spi/spi-cavium-thunderx.c index d12e149f1a41..ce588b47c0f0 100644 --- a/drivers/spi/spi-cavium-thunderx.c +++ b/drivers/spi/spi-cavium-thunderx.c @@ -16,6 +16,11 @@ #define SYS_FREQ_DEFAULT 700000000 /* 700 Mhz */ +#define PCI_DEVICE_ID_THUNDER_SPI 0xA00B +#define PCI_SUBSYS_DEVID_88XX_SPI 0xA10B +#define PCI_SUBSYS_DEVID_81XX_SPI 0xA20B +#define PCI_SUBSYS_DEVID_83XX_SPI 0xA30B + static int thunderx_spi_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -82,6 +87,7 @@ static int thunderx_spi_probe(struct pci_dev *pdev, error: clk_disable_unprepare(p->clk); + pci_release_regions(pdev); spi_master_put(master); return ret; } @@ -96,12 +102,24 @@ static void thunderx_spi_remove(struct pci_dev *pdev) return; clk_disable_unprepare(p->clk); + pci_release_regions(pdev); /* Put everything in a known state. */ writeq(0, p->register_base + OCTEON_SPI_CFG(p)); } static const struct pci_device_id thunderx_spi_pci_id_table[] = { - { PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, 0xa00b) }, + { PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, + PCI_DEVICE_ID_THUNDER_SPI, + PCI_VENDOR_ID_CAVIUM, + PCI_SUBSYS_DEVID_88XX_SPI) }, + { PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, + PCI_DEVICE_ID_THUNDER_SPI, + PCI_VENDOR_ID_CAVIUM, + PCI_SUBSYS_DEVID_81XX_SPI) }, + { PCI_DEVICE_SUB(PCI_VENDOR_ID_CAVIUM, + PCI_DEVICE_ID_THUNDER_SPI, + PCI_VENDOR_ID_CAVIUM, + PCI_SUBSYS_DEVID_83XX_SPI) }, { 0, } }; |