Defineed separate simple show functions for each attribute instead of
having a one big one containing a chain of conditionals.

Replaced calls to scnprintf with sprintf since all the outputs are
single integers.

All the readable device attributes are read-only, so used DEVICE_ATTR_RO
to define them.

The definitions are only used to populate the kp_attr_list attribute
array, so declared them as static.

Fixes the following sparse warnings:

  drivers/staging/kpc2000/kpc2000/core.c:152:1: warning: symbol 'dev_attr_ssid' 
was not declared. Should it be static?
  drivers/staging/kpc2000/kpc2000/core.c:153:1: warning: symbol 'dev_attr_ddna' 
was not declared. Should it be static?
  drivers/staging/kpc2000/kpc2000/core.c:154:1: warning: symbol 
'dev_attr_card_id' was not declared. Should it be static?
  drivers/staging/kpc2000/kpc2000/core.c:155:1: warning: symbol 
'dev_attr_hw_rev' was not declared. Should it be static?
  drivers/staging/kpc2000/kpc2000/core.c:156:1: warning: symbol 
'dev_attr_build' was not declared. Should it be static?
  drivers/staging/kpc2000/kpc2000/core.c:157:1: warning: symbol 
'dev_attr_build_date' was not declared. Should it be static?
  drivers/staging/kpc2000/kpc2000/core.c:158:1: warning: symbol 
'dev_attr_build_time' was not declared. Should it be static?
  drivers/staging/kpc2000/kpc2000/core.c:159:1: warning: symbol 
'dev_attr_cpld_reg' was not declared. Should it be static?
  drivers/staging/kpc2000/kpc2000/core.c:161:1: warning: symbol 
'dev_attr_cpld_reconfigure' was not declared. Should it be static?

Signed-off-by: Jeremy Sowden <jer...@azazel.net>
---
 drivers/staging/kpc2000/kpc2000/core.c | 106 +++++++++++++++++--------
 1 file changed, 73 insertions(+), 33 deletions(-)

diff --git a/drivers/staging/kpc2000/kpc2000/core.c 
b/drivers/staging/kpc2000/kpc2000/core.c
index c33595cc1332..38de7e7a824d 100644
--- a/drivers/staging/kpc2000/kpc2000/core.c
+++ b/drivers/staging/kpc2000/kpc2000/core.c
@@ -32,7 +32,7 @@ static struct kp2000_device *get_pcard(struct device *dev)
        return pci_get_drvdata(pdev);
 }
 
-static ssize_t show_attr(struct device *dev, struct device_attribute *attr,
+static ssize_t ssid_show(struct device *dev, struct device_attribute *attr,
                         char *buf)
 {
        struct kp2000_device *pcard = get_pcard(dev);
@@ -40,36 +40,84 @@ static ssize_t show_attr(struct device *dev, struct 
device_attribute *attr,
        if (!pcard)
                return -ENXIO;
 
-       if (strcmp("ssid", attr->attr.name) == 0)
-               return scnprintf(buf, PAGE_SIZE, "%016llx\n", pcard->ssid);
+       return sprintf(buf, "%016llx\n", pcard->ssid);
+}
+static DEVICE_ATTR_RO(ssid);
 
-       if (strcmp("ddna", attr->attr.name) == 0)
-               return scnprintf(buf, PAGE_SIZE, "%016llx\n", pcard->ddna);
+static ssize_t ddna_show(struct device *dev, struct device_attribute *attr,
+                        char *buf)
+{
+       struct kp2000_device *pcard = get_pcard(dev);
 
-       if (strcmp("card_id", attr->attr.name) == 0)
-               return scnprintf(buf, PAGE_SIZE, "%08x\n", pcard->card_id);
+       if (!pcard)
+               return -ENXIO;
+
+       return sprintf(buf, "%016llx\n", pcard->ddna);
+}
+static DEVICE_ATTR_RO(ddna);
+
+static ssize_t card_id_show(struct device *dev, struct device_attribute *attr,
+                           char *buf)
+{
+       struct kp2000_device *pcard = get_pcard(dev);
 
-       if (strcmp("hw_rev", attr->attr.name) == 0)
-               return scnprintf(buf, PAGE_SIZE, "%08x\n",
-                                pcard->hardware_revision);
+       if (!pcard)
+               return -ENXIO;
 
-       if (strcmp("build", attr->attr.name) == 0)
-               return scnprintf(buf, PAGE_SIZE, "%08x\n",
-                                pcard->build_version);
+       return sprintf(buf, "%08x\n", pcard->card_id);
+}
+static DEVICE_ATTR_RO(card_id);
 
-       if (strcmp("build_date", attr->attr.name) == 0)
-               return scnprintf(buf, PAGE_SIZE, "%08x\n",
-                                pcard->build_datestamp);
+static ssize_t hw_rev_show(struct device *dev, struct device_attribute *attr,
+                          char *buf)
+{
+       struct kp2000_device *pcard = get_pcard(dev);
 
-       if (strcmp("build_time", attr->attr.name) == 0)
-               return scnprintf(buf, PAGE_SIZE, "%08x\n",
-                                pcard->build_timestamp);
+       if (!pcard)
+               return -ENXIO;
 
-       return -ENXIO;
+       return sprintf(buf, "%08x\n", pcard->hardware_revision);
 }
+static DEVICE_ATTR_RO(hw_rev);
 
-static ssize_t show_cpld_config_reg(struct device *dev,
-                                   struct device_attribute *attr, char *buf)
+static ssize_t build_show(struct device *dev, struct device_attribute *attr,
+                         char *buf)
+{
+       struct kp2000_device *pcard = get_pcard(dev);
+
+       if (!pcard)
+               return -ENXIO;
+
+       return sprintf(buf, "%08x\n", pcard->build_version);
+}
+static DEVICE_ATTR_RO(build);
+
+static ssize_t build_date_show(struct device *dev,
+                              struct device_attribute *attr, char *buf)
+{
+       struct kp2000_device *pcard = get_pcard(dev);
+
+       if (!pcard)
+               return -ENXIO;
+
+       return sprintf(buf, "%08x\n", pcard->build_datestamp);
+}
+static DEVICE_ATTR_RO(build_date);
+
+static ssize_t build_time_show(struct device *dev,
+                              struct device_attribute *attr, char *buf)
+{
+       struct kp2000_device *pcard = get_pcard(dev);
+
+       if (!pcard)
+               return -ENXIO;
+
+       return sprintf(buf, "%08x\n", pcard->build_timestamp);
+}
+static DEVICE_ATTR_RO(build_time);
+
+static ssize_t cpld_reg_show(struct device *dev, struct device_attribute *attr,
+                            char *buf)
 {
        struct kp2000_device *pcard = get_pcard(dev);
        u64 val;
@@ -78,8 +126,9 @@ static ssize_t show_cpld_config_reg(struct device *dev,
                return -ENXIO;
 
        val = readq(pcard->sysinfo_regs_base + REG_CPLD_CONFIG);
-       return scnprintf(buf, PAGE_SIZE, "%016llx\n", val);
+       return sprintf(buf, "%016llx\n", val);
 }
+static DEVICE_ATTR_RO(cpld_reg);
 
 static ssize_t cpld_reconfigure(struct device *dev,
                                struct device_attribute *attr,
@@ -103,16 +152,7 @@ static ssize_t cpld_reconfigure(struct device *dev,
        writeq(wr_val, pcard->sysinfo_regs_base + REG_CPLD_CONFIG);
        return count;
 }
-
-DEVICE_ATTR(ssid,       0444, show_attr, NULL);
-DEVICE_ATTR(ddna,       0444, show_attr, NULL);
-DEVICE_ATTR(card_id,    0444, show_attr, NULL);
-DEVICE_ATTR(hw_rev,     0444, show_attr, NULL);
-DEVICE_ATTR(build,      0444, show_attr, NULL);
-DEVICE_ATTR(build_date, 0444, show_attr, NULL);
-DEVICE_ATTR(build_time, 0444, show_attr, NULL);
-DEVICE_ATTR(cpld_reg,   0444, show_cpld_config_reg, NULL);
-DEVICE_ATTR(cpld_reconfigure,   0220, NULL, cpld_reconfigure);
+static DEVICE_ATTR(cpld_reconfigure, 0220, NULL, cpld_reconfigure);
 
 static const struct attribute *kp_attr_list[] = {
        &dev_attr_ssid.attr,
-- 
2.20.1

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to