diff options
Diffstat (limited to 'drivers/pcmcia/ds.c')
-rw-r--r-- | drivers/pcmcia/ds.c | 65 |
1 files changed, 26 insertions, 39 deletions
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c index 757119b..2deacbb 100644 --- a/drivers/pcmcia/ds.c +++ b/drivers/pcmcia/ds.c @@ -992,17 +992,16 @@ static ssize_t field##_show (struct device *dev, struct device_attribute *attr, { \ struct pcmcia_device *p_dev = to_pcmcia_dev(dev); \ return p_dev->test ? sprintf(buf, format, p_dev->field) : -ENODEV; \ -} \ -static DEVICE_ATTR_RO(field); +} #define pcmcia_device_stringattr(name, field) \ static ssize_t name##_show (struct device *dev, struct device_attribute *attr, char *buf) \ { \ struct pcmcia_device *p_dev = to_pcmcia_dev(dev); \ return p_dev->field ? sprintf(buf, "%s\n", p_dev->field) : -ENODEV; \ -} \ -static DEVICE_ATTR_RO(name); +} +pcmcia_device_attr(func, socket, "0x%02x\n"); pcmcia_device_attr(func_id, has_func_id, "0x%02x\n"); pcmcia_device_attr(manf_id, has_manf_id, "0x%04x\n"); pcmcia_device_attr(card_id, has_card_id, "0x%04x\n"); @@ -1011,16 +1010,8 @@ pcmcia_device_stringattr(prod_id2, prod_id[1]); pcmcia_device_stringattr(prod_id3, prod_id[2]); pcmcia_device_stringattr(prod_id4, prod_id[3]); -static ssize_t function_show(struct device *dev, struct device_attribute *attr, - char *buf) -{ - struct pcmcia_device *p_dev = to_pcmcia_dev(dev); - return p_dev->socket ? sprintf(buf, "0x%02x\n", p_dev->func) : -ENODEV; -} -static DEVICE_ATTR_RO(function); - -static ssize_t resources_show(struct device *dev, - struct device_attribute *attr, char *buf) +static ssize_t pcmcia_show_resources(struct device *dev, + struct device_attribute *attr, char *buf) { struct pcmcia_device *p_dev = to_pcmcia_dev(dev); char *str = buf; @@ -1031,9 +1022,8 @@ static ssize_t resources_show(struct device *dev, return str - buf; } -static DEVICE_ATTR_RO(resources); -static ssize_t pm_state_show(struct device *dev, struct device_attribute *attr, char *buf) +static ssize_t pcmcia_show_pm_state(struct device *dev, struct device_attribute *attr, char *buf) { struct pcmcia_device *p_dev = to_pcmcia_dev(dev); @@ -1043,8 +1033,8 @@ static ssize_t pm_state_show(struct device *dev, struct device_attribute *attr, return sprintf(buf, "on\n"); } -static ssize_t pm_state_store(struct device *dev, struct device_attribute *attr, - const char *buf, size_t count) +static ssize_t pcmcia_store_pm_state(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) { struct pcmcia_device *p_dev = to_pcmcia_dev(dev); int ret = 0; @@ -1059,7 +1049,7 @@ static ssize_t pm_state_store(struct device *dev, struct device_attribute *attr, return ret ? ret : count; } -static DEVICE_ATTR_RW(pm_state); + static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -1082,9 +1072,8 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, p_dev->func, p_dev->device_no, hash[0], hash[1], hash[2], hash[3]); } -static DEVICE_ATTR_RO(modalias); -static ssize_t allow_func_id_match_store(struct device *dev, +static ssize_t pcmcia_store_allow_func_id_match(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct pcmcia_device *p_dev = to_pcmcia_dev(dev); @@ -1099,24 +1088,22 @@ static ssize_t allow_func_id_match_store(struct device *dev, return count; } -static DEVICE_ATTR_WO(allow_func_id_match); - -static struct attribute *pcmcia_dev_attrs[] = { - &dev_attr_resources.attr, - &dev_attr_pm_state.attr, - &dev_attr_function.attr, - &dev_attr_func_id.attr, - &dev_attr_manf_id.attr, - &dev_attr_card_id.attr, - &dev_attr_prod_id1.attr, - &dev_attr_prod_id2.attr, - &dev_attr_prod_id3.attr, - &dev_attr_prod_id4.attr, - &dev_attr_modalias.attr, - &dev_attr_allow_func_id_match.attr, - NULL, + +static struct device_attribute pcmcia_dev_attrs[] = { + __ATTR(function, 0444, func_show, NULL), + __ATTR(pm_state, 0644, pcmcia_show_pm_state, pcmcia_store_pm_state), + __ATTR(resources, 0444, pcmcia_show_resources, NULL), + __ATTR_RO(func_id), + __ATTR_RO(manf_id), + __ATTR_RO(card_id), + __ATTR_RO(prod_id1), + __ATTR_RO(prod_id2), + __ATTR_RO(prod_id3), + __ATTR_RO(prod_id4), + __ATTR_RO(modalias), + __ATTR(allow_func_id_match, 0200, NULL, pcmcia_store_allow_func_id_match), + __ATTR_NULL, }; -ATTRIBUTE_GROUPS(pcmcia_dev); /* PM support, also needed for reset */ @@ -1402,7 +1389,7 @@ struct bus_type pcmcia_bus_type = { .name = "pcmcia", .uevent = pcmcia_bus_uevent, .match = pcmcia_bus_match, - .dev_groups = pcmcia_dev_groups, + .dev_attrs = pcmcia_dev_attrs, .probe = pcmcia_device_probe, .remove = pcmcia_device_remove, .suspend = pcmcia_dev_suspend, |