aboutsummaryrefslogtreecommitdiffstats
path: root/pcmcia-convert-bus-code-to-use-dev_groups.patch
diff options
Diffstat (limited to 'pcmcia-convert-bus-code-to-use-dev_groups.patch')
-rw-r--r--pcmcia-convert-bus-code-to-use-dev_groups.patch150
1 files changed, 150 insertions, 0 deletions
diff --git a/pcmcia-convert-bus-code-to-use-dev_groups.patch b/pcmcia-convert-bus-code-to-use-dev_groups.patch
new file mode 100644
index 00000000000000..9842fc2c16ccd6
--- /dev/null
+++ b/pcmcia-convert-bus-code-to-use-dev_groups.patch
@@ -0,0 +1,150 @@
+From foo@baz Sun Oct 6 13:39:27 PDT 2013
+Date: Sun, 06 Oct 2013 13:39:27 -0700
+To: Greg KH <gregkh@linuxfoundation.org>
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Subject: 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>
+
+---
+ drivers/pcmcia/ds.c | 63 +++++++++++++++++++++++++++++++---------------------
+ 1 file changed, 38 insertions(+), 25 deletions(-)
+
+--- a/drivers/pcmcia/ds.c
++++ b/drivers/pcmcia/ds.c
+@@ -992,16 +992,17 @@ static ssize_t field##_show (struct devi
+ { \
+ 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");
+@@ -1010,8 +1011,16 @@ pcmcia_device_stringattr(prod_id2, prod_
+ pcmcia_device_stringattr(prod_id3, prod_id[2]);
+ pcmcia_device_stringattr(prod_id4, prod_id[3]);
+
+-static ssize_t pcmcia_show_resources(struct device *dev,
+- struct device_attribute *attr, char *buf)
++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)
+ {
+ struct pcmcia_device *p_dev = to_pcmcia_dev(dev);
+ char *str = buf;
+@@ -1022,8 +1031,9 @@ static ssize_t pcmcia_show_resources(str
+
+ 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);
+
+@@ -1033,8 +1043,8 @@ static ssize_t pcmcia_show_pm_state(stru
+ return sprintf(buf, "on\n");
+ }
+
+-static ssize_t pcmcia_store_pm_state(struct device *dev, struct device_attribute *attr,
+- const char *buf, size_t count)
++static ssize_t pm_state_store(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;
+@@ -1049,7 +1059,7 @@ static ssize_t pcmcia_store_pm_state(str
+
+ return ret ? ret : count;
+ }
+-
++static DEVICE_ATTR_RW(pm_state);
+
+ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf)
+ {
+@@ -1072,8 +1082,9 @@ static ssize_t modalias_show(struct devi
+ p_dev->func, p_dev->device_no,
+ 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 pcmcia_device *p_dev = to_pcmcia_dev(dev);
+@@ -1088,22 +1099,24 @@ static ssize_t pcmcia_store_allow_func_i
+
+ return count;
+ }
++static DEVICE_ATTR_WO(allow_func_id_match);
+
+-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,
++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,
+ };
++ATTRIBUTE_GROUPS(pcmcia_dev);
+
+ /* PM support, also needed for reset */
+
+@@ -1389,7 +1402,7 @@ struct bus_type pcmcia_bus_type = {
+ .name = "pcmcia",
+ .uevent = pcmcia_bus_uevent,
+ .match = pcmcia_bus_match,
+- .dev_attrs = pcmcia_dev_attrs,
++ .dev_groups = pcmcia_dev_groups,
+ .probe = pcmcia_device_probe,
+ .remove = pcmcia_device_remove,
+ .suspend = pcmcia_dev_suspend,