pcmcia: convert bus code to use dev_groups
The dev_attrs field of struct bus_type is going away soon, dev_groups should be used instead. This converts the pcmcia bus code to use the correct field. Cc: Bill Pemberton <wfp5p@virginia.edu> Cc: <linux-pcmcia@lists.infradead.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -992,16 +992,17 @@ static ssize_t field##_show (struct device *dev, struct device_attribute *attr,
|
|||||||
{ \
|
{ \
|
||||||
struct pcmcia_device *p_dev = to_pcmcia_dev(dev); \
|
struct pcmcia_device *p_dev = to_pcmcia_dev(dev); \
|
||||||
return p_dev->test ? sprintf(buf, format, p_dev->field) : -ENODEV; \
|
return p_dev->test ? sprintf(buf, format, p_dev->field) : -ENODEV; \
|
||||||
}
|
} \
|
||||||
|
static DEVICE_ATTR_RO(field);
|
||||||
|
|
||||||
#define pcmcia_device_stringattr(name, field) \
|
#define pcmcia_device_stringattr(name, field) \
|
||||||
static ssize_t name##_show (struct device *dev, struct device_attribute *attr, char *buf) \
|
static ssize_t name##_show (struct device *dev, struct device_attribute *attr, char *buf) \
|
||||||
{ \
|
{ \
|
||||||
struct pcmcia_device *p_dev = to_pcmcia_dev(dev); \
|
struct pcmcia_device *p_dev = to_pcmcia_dev(dev); \
|
||||||
return p_dev->field ? sprintf(buf, "%s\n", p_dev->field) : -ENODEV; \
|
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(func_id, has_func_id, "0x%02x\n");
|
||||||
pcmcia_device_attr(manf_id, has_manf_id, "0x%04x\n");
|
pcmcia_device_attr(manf_id, has_manf_id, "0x%04x\n");
|
||||||
pcmcia_device_attr(card_id, has_card_id, "0x%04x\n");
|
pcmcia_device_attr(card_id, has_card_id, "0x%04x\n");
|
||||||
@@ -1010,8 +1011,16 @@ pcmcia_device_stringattr(prod_id2, prod_id[1]);
|
|||||||
pcmcia_device_stringattr(prod_id3, prod_id[2]);
|
pcmcia_device_stringattr(prod_id3, prod_id[2]);
|
||||||
pcmcia_device_stringattr(prod_id4, prod_id[3]);
|
pcmcia_device_stringattr(prod_id4, prod_id[3]);
|
||||||
|
|
||||||
static ssize_t pcmcia_show_resources(struct device *dev,
|
static ssize_t function_show(struct device *dev, struct device_attribute *attr,
|
||||||
struct device_attribute *attr, char *buf)
|
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)
|
||||||
{
|
{
|
||||||
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
||||||
char *str = buf;
|
char *str = buf;
|
||||||
@@ -1022,8 +1031,9 @@ static ssize_t pcmcia_show_resources(struct device *dev,
|
|||||||
|
|
||||||
return str - buf;
|
return str - buf;
|
||||||
}
|
}
|
||||||
|
static DEVICE_ATTR_RO(resources);
|
||||||
|
|
||||||
static ssize_t pcmcia_show_pm_state(struct device *dev, struct device_attribute *attr, char *buf)
|
static ssize_t pm_state_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
||||||
|
|
||||||
@@ -1033,8 +1043,8 @@ static ssize_t pcmcia_show_pm_state(struct device *dev, struct device_attribute
|
|||||||
return sprintf(buf, "on\n");
|
return sprintf(buf, "on\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t pcmcia_store_pm_state(struct device *dev, struct device_attribute *attr,
|
static ssize_t pm_state_store(struct device *dev, struct device_attribute *attr,
|
||||||
const char *buf, size_t count)
|
const char *buf, size_t count)
|
||||||
{
|
{
|
||||||
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@@ -1049,7 +1059,7 @@ static ssize_t pcmcia_store_pm_state(struct device *dev, struct device_attribute
|
|||||||
|
|
||||||
return ret ? ret : count;
|
return ret ? ret : count;
|
||||||
}
|
}
|
||||||
|
static DEVICE_ATTR_RW(pm_state);
|
||||||
|
|
||||||
static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf)
|
static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
@@ -1072,8 +1082,9 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
|
|||||||
p_dev->func, p_dev->device_no,
|
p_dev->func, p_dev->device_no,
|
||||||
hash[0], hash[1], hash[2], hash[3]);
|
hash[0], hash[1], hash[2], hash[3]);
|
||||||
}
|
}
|
||||||
|
static DEVICE_ATTR_RO(modalias);
|
||||||
|
|
||||||
static ssize_t pcmcia_store_allow_func_id_match(struct device *dev,
|
static ssize_t allow_func_id_match_store(struct device *dev,
|
||||||
struct device_attribute *attr, const char *buf, size_t count)
|
struct device_attribute *attr, const char *buf, size_t count)
|
||||||
{
|
{
|
||||||
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
|
||||||
@@ -1088,22 +1099,24 @@ static ssize_t pcmcia_store_allow_func_id_match(struct device *dev,
|
|||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
static DEVICE_ATTR_WO(allow_func_id_match);
|
||||||
|
|
||||||
static struct device_attribute pcmcia_dev_attrs[] = {
|
static struct attribute *pcmcia_dev_attrs[] = {
|
||||||
__ATTR(function, 0444, func_show, NULL),
|
&dev_attr_resources.attr,
|
||||||
__ATTR(pm_state, 0644, pcmcia_show_pm_state, pcmcia_store_pm_state),
|
&dev_attr_pm_state.attr,
|
||||||
__ATTR(resources, 0444, pcmcia_show_resources, NULL),
|
&dev_attr_function.attr,
|
||||||
__ATTR_RO(func_id),
|
&dev_attr_func_id.attr,
|
||||||
__ATTR_RO(manf_id),
|
&dev_attr_manf_id.attr,
|
||||||
__ATTR_RO(card_id),
|
&dev_attr_card_id.attr,
|
||||||
__ATTR_RO(prod_id1),
|
&dev_attr_prod_id1.attr,
|
||||||
__ATTR_RO(prod_id2),
|
&dev_attr_prod_id2.attr,
|
||||||
__ATTR_RO(prod_id3),
|
&dev_attr_prod_id3.attr,
|
||||||
__ATTR_RO(prod_id4),
|
&dev_attr_prod_id4.attr,
|
||||||
__ATTR_RO(modalias),
|
&dev_attr_modalias.attr,
|
||||||
__ATTR(allow_func_id_match, 0200, NULL, pcmcia_store_allow_func_id_match),
|
&dev_attr_allow_func_id_match.attr,
|
||||||
__ATTR_NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
ATTRIBUTE_GROUPS(pcmcia_dev);
|
||||||
|
|
||||||
/* PM support, also needed for reset */
|
/* PM support, also needed for reset */
|
||||||
|
|
||||||
@@ -1389,7 +1402,7 @@ struct bus_type pcmcia_bus_type = {
|
|||||||
.name = "pcmcia",
|
.name = "pcmcia",
|
||||||
.uevent = pcmcia_bus_uevent,
|
.uevent = pcmcia_bus_uevent,
|
||||||
.match = pcmcia_bus_match,
|
.match = pcmcia_bus_match,
|
||||||
.dev_attrs = pcmcia_dev_attrs,
|
.dev_groups = pcmcia_dev_groups,
|
||||||
.probe = pcmcia_device_probe,
|
.probe = pcmcia_device_probe,
|
||||||
.remove = pcmcia_device_remove,
|
.remove = pcmcia_device_remove,
|
||||||
.suspend = pcmcia_dev_suspend,
|
.suspend = pcmcia_dev_suspend,
|
||||||
|
Reference in New Issue
Block a user