PCI/VPD: Remove struct pci_vpd.flag
authorHeiner Kallweit <hkallweit1@gmail.com>
Thu, 13 May 2021 21:02:01 +0000 (23:02 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 9 Aug 2021 18:43:50 +0000 (13:43 -0500)
The struct pci_vpd.flag member was used only to communicate between
pci_vpd_wait() and its callers.  Remove the flag member and pass the value
directly to pci_vpd_wait() to simplify the code.

[bhelgaas: commit log]
Link: https://lore.kernel.org/r/e4ef6845-6b23-1646-28a0-d5c5a28347b6@gmail.com
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/vpd.c

index 3d9223f..d7f705b 100644 (file)
@@ -22,7 +22,6 @@ struct pci_vpd {
        const struct pci_vpd_ops *ops;
        struct mutex    lock;
        unsigned int    len;
-       u16             flag;
        u8              cap;
        unsigned int    valid:1;
 };
@@ -117,10 +116,11 @@ error:
  * This code has to spin since there is no other notification from the PCI
  * hardware. Since the VPD is often implemented by serial attachment to an
  * EEPROM, it may take many milliseconds to complete.
+ * @set: if true wait for flag to be set, else wait for it to be cleared
  *
  * Returns 0 on success, negative values indicate error.
  */
-static int pci_vpd_wait(struct pci_dev *dev)
+static int pci_vpd_wait(struct pci_dev *dev, bool set)
 {
        struct pci_vpd *vpd = dev->vpd;
        unsigned long timeout = jiffies + msecs_to_jiffies(125);
@@ -134,7 +134,7 @@ static int pci_vpd_wait(struct pci_dev *dev)
                if (ret < 0)
                        return ret;
 
-               if ((status & PCI_VPD_ADDR_F) == vpd->flag)
+               if (!!(status & PCI_VPD_ADDR_F) == set)
                        return 0;
 
                if (time_after(jiffies, timeout))
@@ -192,8 +192,7 @@ static ssize_t pci_vpd_read(struct pci_dev *dev, loff_t pos, size_t count,
                                                 pos & ~3);
                if (ret < 0)
                        break;
-               vpd->flag = PCI_VPD_ADDR_F;
-               ret = pci_vpd_wait(dev);
+               ret = pci_vpd_wait(dev, true);
                if (ret < 0)
                        break;
 
@@ -257,8 +256,7 @@ static ssize_t pci_vpd_write(struct pci_dev *dev, loff_t pos, size_t count,
                if (ret < 0)
                        break;
 
-               vpd->flag = 0;
-               ret = pci_vpd_wait(dev);
+               ret = pci_vpd_wait(dev, false);
                if (ret < 0)
                        break;