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@xxxxxxxxxx> --- 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 65e31bf01227..1d10e252c8da 100644 --- a/drivers/staging/kpc2000/kpc2000/core.c +++ b/drivers/staging/kpc2000/kpc2000/core.c @@ -22,15 +22,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; @@ -65,14 +71,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; @@ -84,14 +85,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.20.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel