From a986d796395c18e607703af11e1afc1d3a8a5908 Mon Sep 17 00:00:00 2001 From: Jeremy Sowden Date: Tue, 21 May 2019 11:35:20 +0100 Subject: [PATCH] staging: kpc2000: added a helper to get struct kp2000_device from struct device. The attribute call-backs all use the same formula to get the pcard from dev: struct pci_dev *pdev = to_pci_dev(dev); struct kp2000_device *pcard; if (!pdev) return -ENXIO; pcard = pci_get_drvdata(pdev); if (!pcard) return -ENXIO; Added a function to reduce the duplicated code. Signed-off-by: Jeremy Sowden Signed-off-by: Greg Kroah-Hartman --- drivers/staging/kpc2000/kpc2000/core.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/drivers/staging/kpc2000/kpc2000/core.c b/drivers/staging/kpc2000/kpc2000/core.c index f173523..e58bdde 100644 --- a/drivers/staging/kpc2000/kpc2000/core.c +++ b/drivers/staging/kpc2000/kpc2000/core.c @@ -29,15 +29,21 @@ * SysFS Attributes ******************************************************/ -static ssize_t show_attr(struct device *dev, struct device_attribute *attr, - char *buf) +static struct kp2000_device *get_pcard(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); - struct kp2000_device *pcard; if (!pdev) - return -ENXIO; - pcard = pci_get_drvdata(pdev); + return NULL; + + return pci_get_drvdata(pdev); +} + +static ssize_t show_attr(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct kp2000_device *pcard = get_pcard(dev); + if (!pcard) return -ENXIO; @@ -72,14 +78,9 @@ static ssize_t show_attr(struct device *dev, struct device_attribute *attr, static ssize_t show_cpld_config_reg(struct device *dev, struct device_attribute *attr, char *buf) { - struct pci_dev *pdev = to_pci_dev(dev); - struct kp2000_device *pcard; + struct kp2000_device *pcard = get_pcard(dev); u64 val; - if (!pdev) - return -ENXIO; - - pcard = pci_get_drvdata(pdev); if (!pcard) return -ENXIO; @@ -91,14 +92,10 @@ static ssize_t cpld_reconfigure(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { - struct pci_dev *pdev = to_pci_dev(dev); + struct kp2000_device *pcard = get_pcard(dev); long wr_val; - struct kp2000_device *pcard; int rv; - if (!pdev) - return -ENXIO; - pcard = pci_get_drvdata(pdev); if (!pcard) return -ENXIO; -- 2.7.4