ipmi_si: Get rid of ->addr_source_cleanup()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 2 Apr 2021 17:43:31 +0000 (20:43 +0300)
committerCorey Minyard <cminyard@mvista.com>
Fri, 2 Apr 2021 17:53:34 +0000 (12:53 -0500)
The ->addr_source_cleanup() callback is solely used by PCI driver
and only for one purpose, i.e. to disable device. Get rid of
->addr_source_cleanup() by switching to PCI managed API.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Message-Id: <20210402174334.13466-8-andriy.shevchenko@linux.intel.com>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
drivers/char/ipmi/ipmi_si.h
drivers/char/ipmi/ipmi_si_intf.c
drivers/char/ipmi/ipmi_si_pci.c

index 9492c53eba8643d79f859372e5a41e746d2f1901..0a4c69539f24660a9a3fed2641ec98c00e70c805 100644 (file)
@@ -52,8 +52,6 @@ struct si_sm_io {
        enum ipmi_addr_space addr_space;
        unsigned long addr_data;
        enum ipmi_addr_src addr_source; /* ACPI, PCI, SMBIOS, hardcode, etc. */
-       void (*addr_source_cleanup)(struct si_sm_io *io);
-       void *addr_source_data;
        union ipmi_smi_info_union addr_info;
 
        int (*io_setup)(struct si_sm_io *info);
index d6ecf88636c4a009af0e33d3cf919eae7576a51f..5bf0ab61261fdb3b60551d1d6af91b943a57fe8b 100644 (file)
@@ -2206,10 +2206,6 @@ static void shutdown_smi(void *send_info)
        if (smi_info->handlers)
                smi_info->handlers->cleanup(smi_info->si_sm);
 
-       if (smi_info->io.addr_source_cleanup) {
-               smi_info->io.addr_source_cleanup(&smi_info->io);
-               smi_info->io.addr_source_cleanup = NULL;
-       }
        if (smi_info->io.io_cleanup) {
                smi_info->io.io_cleanup(&smi_info->io);
                smi_info->io.io_cleanup = NULL;
index 95bbcfba54080729cabe90d492a90e5fb2c06b73..0bc7efb6902c05dd7e4b1cfcb6219759f91c527e 100644 (file)
@@ -21,13 +21,6 @@ MODULE_PARM_DESC(trypci, "Setting this to zero will disable the"
 
 #define PCI_DEVICE_ID_HP_MMC 0x121A
 
-static void ipmi_pci_cleanup(struct si_sm_io *io)
-{
-       struct pci_dev *pdev = io->addr_source_data;
-
-       pci_disable_device(pdev);
-}
-
 static int ipmi_pci_probe_regspacing(struct si_sm_io *io)
 {
        if (io->si_type == SI_KCS) {
@@ -97,15 +90,12 @@ static int ipmi_pci_probe(struct pci_dev *pdev,
                return -ENOMEM;
        }
 
-       rv = pci_enable_device(pdev);
+       rv = pcim_enable_device(pdev);
        if (rv) {
                dev_err(&pdev->dev, "couldn't enable PCI device\n");
                return rv;
        }
 
-       io.addr_source_cleanup = ipmi_pci_cleanup;
-       io.addr_source_data = pdev;
-
        if (pci_resource_flags(pdev, 0) & IORESOURCE_IO) {
                io.addr_space = IPMI_IO_ADDR_SPACE;
                io.io_setup = ipmi_si_port_setup;
@@ -128,11 +118,7 @@ static int ipmi_pci_probe(struct pci_dev *pdev,
        dev_info(&pdev->dev, "%pR regsize %d spacing %d irq %d\n",
                 &pdev->resource[0], io.regsize, io.regspacing, io.irq);
 
-       rv = ipmi_si_add_smi(&io);
-       if (rv)
-               pci_disable_device(pdev);
-
-       return rv;
+       return ipmi_si_add_smi(&io);
 }
 
 static void ipmi_pci_remove(struct pci_dev *pdev)