aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-08-21 18:45:03 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-08-22 14:05:43 -0400
commit9365261db45ddf1dc0800ce70830928beb0efd78 (patch)
tree96a7eeb770f739949f2610c2686b9190696f6c2e
parentfa33a65a9cf7e2069cc1f26b057867e865daadba (diff)
w1: slaves: w1_ds2780: convert to use w1_family_ops.groups
This moves the sysfs file creation/removal to the w1 core by using the .groups field, saving code in the slave driver. Acked-by: Evgeniy Polyakov <zbr@ioremap.net> Cc: Alexander Stein <alexander.stein@informatik.tu-chemnitz.de> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/w1/slaves/w1_ds2780.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/drivers/w1/slaves/w1_ds2780.c b/drivers/w1/slaves/w1_ds2780.c
index 0cd7a27b5d6b..50e85f7929d4 100644
--- a/drivers/w1/slaves/w1_ds2780.c
+++ b/drivers/w1/slaves/w1_ds2780.c
@@ -89,22 +89,28 @@ int w1_ds2780_eeprom_cmd(struct device *dev, int addr, int cmd)
89} 89}
90EXPORT_SYMBOL(w1_ds2780_eeprom_cmd); 90EXPORT_SYMBOL(w1_ds2780_eeprom_cmd);
91 91
92static ssize_t w1_ds2780_read_bin(struct file *filp, 92static ssize_t w1_slave_read(struct file *filp, struct kobject *kobj,
93 struct kobject *kobj, 93 struct bin_attribute *bin_attr, char *buf,
94 struct bin_attribute *bin_attr, 94 loff_t off, size_t count)
95 char *buf, loff_t off, size_t count)
96{ 95{
97 struct device *dev = container_of(kobj, struct device, kobj); 96 struct device *dev = container_of(kobj, struct device, kobj);
98 return w1_ds2780_io(dev, buf, off, count, 0); 97 return w1_ds2780_io(dev, buf, off, count, 0);
99} 98}
100 99
101static struct bin_attribute w1_ds2780_bin_attr = { 100static BIN_ATTR_RO(w1_slave, DS2780_DATA_SIZE);
102 .attr = { 101
103 .name = "w1_slave", 102static struct bin_attribute *w1_ds2780_bin_attrs[] = {
104 .mode = S_IRUGO, 103 &bin_attr_w1_slave,
105 }, 104 NULL,
106 .size = DS2780_DATA_SIZE, 105};
107 .read = w1_ds2780_read_bin, 106
107static const struct attribute_group w1_ds2780_group = {
108 .bin_attrs = w1_ds2780_bin_attrs,
109};
110
111static const struct attribute_group *w1_ds2780_groups[] = {
112 &w1_ds2780_group,
113 NULL,
108}; 114};
109 115
110static DEFINE_IDA(bat_ida); 116static DEFINE_IDA(bat_ida);
@@ -132,16 +138,10 @@ static int w1_ds2780_add_slave(struct w1_slave *sl)
132 if (ret) 138 if (ret)
133 goto pdev_add_failed; 139 goto pdev_add_failed;
134 140
135 ret = sysfs_create_bin_file(&sl->dev.kobj, &w1_ds2780_bin_attr);
136 if (ret)
137 goto bin_attr_failed;
138
139 dev_set_drvdata(&sl->dev, pdev); 141 dev_set_drvdata(&sl->dev, pdev);
140 142
141 return 0; 143 return 0;
142 144
143bin_attr_failed:
144 platform_device_del(pdev);
145pdev_add_failed: 145pdev_add_failed:
146 platform_device_put(pdev); 146 platform_device_put(pdev);
147pdev_alloc_failed: 147pdev_alloc_failed:
@@ -157,12 +157,12 @@ static void w1_ds2780_remove_slave(struct w1_slave *sl)
157 157
158 platform_device_unregister(pdev); 158 platform_device_unregister(pdev);
159 ida_simple_remove(&bat_ida, id); 159 ida_simple_remove(&bat_ida, id);
160 sysfs_remove_bin_file(&sl->dev.kobj, &w1_ds2780_bin_attr);
161} 160}
162 161
163static struct w1_family_ops w1_ds2780_fops = { 162static struct w1_family_ops w1_ds2780_fops = {
164 .add_slave = w1_ds2780_add_slave, 163 .add_slave = w1_ds2780_add_slave,
165 .remove_slave = w1_ds2780_remove_slave, 164 .remove_slave = w1_ds2780_remove_slave,
165 .groups = w1_ds2780_groups,
166}; 166};
167 167
168static struct w1_family w1_ds2780_family = { 168static struct w1_family w1_ds2780_family = {