aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/vpd.c
diff options
context:
space:
mode:
authorHeiner Kallweit <hkallweit1@gmail.com>2021-05-13 23:02:01 +0200
committerBjorn Helgaas <bhelgaas@google.com>2021-08-09 13:43:50 -0500
commitfe943bd8ab75552f2773ee27c7c5ae6b48941582 (patch)
tree241bb11ec8248321778e76752dbad6e96812abd2 /drivers/pci/vpd.c
parentPCI/VPD: Make pci_vpd_wait() uninterruptible (diff)
downloadlinux-dev-fe943bd8ab75552f2773ee27c7c5ae6b48941582.tar.xz
linux-dev-fe943bd8ab75552f2773ee27c7c5ae6b48941582.zip
PCI/VPD: Remove struct pci_vpd.flag
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>
Diffstat (limited to 'drivers/pci/vpd.c')
-rw-r--r--drivers/pci/vpd.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/pci/vpd.c b/drivers/pci/vpd.c
index 3d9223f03a22..d7f705ba6664 100644
--- a/drivers/pci/vpd.c
+++ b/drivers/pci/vpd.c
@@ -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;