diff options
author | Jeremy Sowden <jeremy@azazel.net> | 2019-05-21 13:35:20 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-05-22 15:44:21 +0300 |
commit | a986d796395c18e607703af11e1afc1d3a8a5908 (patch) | |
tree | 4d439b5a9ee614a6247b9660a5ad39ff46050fe6 | |
parent | d8ac35939632f25d6b1465a921f8a4d63064e3ae (diff) | |
download | linux-a986d796395c18e607703af11e1afc1d3a8a5908.tar.xz |
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 <jeremy@azazel.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/kpc2000/kpc2000/core.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/staging/kpc2000/kpc2000/core.c b/drivers/staging/kpc2000/kpc2000/core.c index f1735237cfb6..e58bddec87ee 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; |