diff options
-rw-r--r-- | drivers/message/i2o/core.h | 3 | ||||
-rw-r--r-- | drivers/message/i2o/device.c | 71 | ||||
-rw-r--r-- | drivers/message/i2o/driver.c | 3 | ||||
-rw-r--r-- | drivers/message/i2o/iop.c | 10 | ||||
-rw-r--r-- | include/linux/i2o.h | 2 |
5 files changed, 17 insertions, 72 deletions
diff --git a/drivers/message/i2o/core.h b/drivers/message/i2o/core.h index c5bcfd70f711..9eefedb16211 100644 --- a/drivers/message/i2o/core.h +++ b/drivers/message/i2o/core.h | |||
@@ -36,9 +36,6 @@ extern void __exit i2o_pci_exit(void); | |||
36 | extern void i2o_device_remove(struct i2o_device *); | 36 | extern void i2o_device_remove(struct i2o_device *); |
37 | extern int i2o_device_parse_lct(struct i2o_controller *); | 37 | extern int i2o_device_parse_lct(struct i2o_controller *); |
38 | 38 | ||
39 | extern int i2o_device_init(void); | ||
40 | extern void i2o_device_exit(void); | ||
41 | |||
42 | /* IOP */ | 39 | /* IOP */ |
43 | extern struct i2o_controller *i2o_iop_alloc(void); | 40 | extern struct i2o_controller *i2o_iop_alloc(void); |
44 | extern void i2o_iop_free(struct i2o_controller *); | 41 | extern void i2o_iop_free(struct i2o_controller *); |
diff --git a/drivers/message/i2o/device.c b/drivers/message/i2o/device.c index 551d582e2887..d9879965eb50 100644 --- a/drivers/message/i2o/device.c +++ b/drivers/message/i2o/device.c | |||
@@ -138,17 +138,6 @@ static void i2o_device_release(struct device *dev) | |||
138 | kfree(i2o_dev); | 138 | kfree(i2o_dev); |
139 | } | 139 | } |
140 | 140 | ||
141 | /** | ||
142 | * i2o_device_class_release - I2O class device release function | ||
143 | * @cd: I2O class device which is added to the I2O device class | ||
144 | * | ||
145 | * The function is just a stub - memory will be freed when | ||
146 | * associated I2O device is released. | ||
147 | */ | ||
148 | static void i2o_device_class_release(struct class_device *cd) | ||
149 | { | ||
150 | /* empty */ | ||
151 | } | ||
152 | 141 | ||
153 | /** | 142 | /** |
154 | * i2o_device_class_show_class_id - Displays class id of I2O device | 143 | * i2o_device_class_show_class_id - Displays class id of I2O device |
@@ -157,12 +146,13 @@ static void i2o_device_class_release(struct class_device *cd) | |||
157 | * | 146 | * |
158 | * Returns the number of bytes which are printed into the buffer. | 147 | * Returns the number of bytes which are printed into the buffer. |
159 | */ | 148 | */ |
160 | static ssize_t i2o_device_class_show_class_id(struct class_device *cd, | 149 | static ssize_t i2o_device_show_class_id(struct device *dev, |
161 | char *buf) | 150 | struct device_attribute *attr, |
151 | char *buf) | ||
162 | { | 152 | { |
163 | struct i2o_device *dev = to_i2o_device(cd->dev); | 153 | struct i2o_device *i2o_dev = to_i2o_device(dev); |
164 | 154 | ||
165 | sprintf(buf, "0x%03x\n", dev->lct_data.class_id); | 155 | sprintf(buf, "0x%03x\n", i2o_dev->lct_data.class_id); |
166 | return strlen(buf) + 1; | 156 | return strlen(buf) + 1; |
167 | } | 157 | } |
168 | 158 | ||
@@ -173,27 +163,22 @@ static ssize_t i2o_device_class_show_class_id(struct class_device *cd, | |||
173 | * | 163 | * |
174 | * Returns the number of bytes which are printed into the buffer. | 164 | * Returns the number of bytes which are printed into the buffer. |
175 | */ | 165 | */ |
176 | static ssize_t i2o_device_class_show_tid(struct class_device *cd, char *buf) | 166 | static ssize_t i2o_device_show_tid(struct device *dev, |
167 | struct device_attribute *attr, | ||
168 | char *buf) | ||
177 | { | 169 | { |
178 | struct i2o_device *dev = to_i2o_device(cd->dev); | 170 | struct i2o_device *i2o_dev = to_i2o_device(dev); |
179 | 171 | ||
180 | sprintf(buf, "0x%03x\n", dev->lct_data.tid); | 172 | sprintf(buf, "0x%03x\n", i2o_dev->lct_data.tid); |
181 | return strlen(buf) + 1; | 173 | return strlen(buf) + 1; |
182 | } | 174 | } |
183 | 175 | ||
184 | static struct class_device_attribute i2o_device_class_attrs[] = { | 176 | struct device_attribute i2o_device_attrs[] = { |
185 | __ATTR(class_id, S_IRUGO, i2o_device_class_show_class_id, NULL), | 177 | __ATTR(class_id, S_IRUGO, i2o_device_show_class_id, NULL), |
186 | __ATTR(tid, S_IRUGO, i2o_device_class_show_tid, NULL), | 178 | __ATTR(tid, S_IRUGO, i2o_device_show_tid, NULL), |
187 | __ATTR_NULL | 179 | __ATTR_NULL |
188 | }; | 180 | }; |
189 | 181 | ||
190 | /* I2O device class */ | ||
191 | static struct class i2o_device_class = { | ||
192 | .name = "i2o_device", | ||
193 | .release = i2o_device_class_release, | ||
194 | .class_dev_attrs = i2o_device_class_attrs, | ||
195 | }; | ||
196 | |||
197 | /** | 182 | /** |
198 | * i2o_device_alloc - Allocate a I2O device and initialize it | 183 | * i2o_device_alloc - Allocate a I2O device and initialize it |
199 | * | 184 | * |
@@ -217,8 +202,6 @@ static struct i2o_device *i2o_device_alloc(void) | |||
217 | 202 | ||
218 | dev->device.bus = &i2o_bus_type; | 203 | dev->device.bus = &i2o_bus_type; |
219 | dev->device.release = &i2o_device_release; | 204 | dev->device.release = &i2o_device_release; |
220 | dev->classdev.class = &i2o_device_class; | ||
221 | dev->classdev.dev = &dev->device; | ||
222 | 205 | ||
223 | return dev; | 206 | return dev; |
224 | } | 207 | } |
@@ -311,17 +294,12 @@ static struct i2o_device *i2o_device_add(struct i2o_controller *c, | |||
311 | snprintf(dev->device.bus_id, BUS_ID_SIZE, "%d:%03x", c->unit, | 294 | snprintf(dev->device.bus_id, BUS_ID_SIZE, "%d:%03x", c->unit, |
312 | dev->lct_data.tid); | 295 | dev->lct_data.tid); |
313 | 296 | ||
314 | snprintf(dev->classdev.class_id, BUS_ID_SIZE, "%d:%03x", c->unit, | ||
315 | dev->lct_data.tid); | ||
316 | |||
317 | dev->device.parent = &c->device; | 297 | dev->device.parent = &c->device; |
318 | 298 | ||
319 | device_register(&dev->device); | 299 | device_register(&dev->device); |
320 | 300 | ||
321 | list_add_tail(&dev->list, &c->devices); | 301 | list_add_tail(&dev->list, &c->devices); |
322 | 302 | ||
323 | class_device_register(&dev->classdev); | ||
324 | |||
325 | i2o_setup_sysfs_links(dev); | 303 | i2o_setup_sysfs_links(dev); |
326 | 304 | ||
327 | i2o_driver_notify_device_add_all(dev); | 305 | i2o_driver_notify_device_add_all(dev); |
@@ -343,7 +321,6 @@ void i2o_device_remove(struct i2o_device *i2o_dev) | |||
343 | { | 321 | { |
344 | i2o_driver_notify_device_remove_all(i2o_dev); | 322 | i2o_driver_notify_device_remove_all(i2o_dev); |
345 | i2o_remove_sysfs_links(i2o_dev); | 323 | i2o_remove_sysfs_links(i2o_dev); |
346 | class_device_unregister(&i2o_dev->classdev); | ||
347 | list_del(&i2o_dev->list); | 324 | list_del(&i2o_dev->list); |
348 | device_unregister(&i2o_dev->device); | 325 | device_unregister(&i2o_dev->device); |
349 | } | 326 | } |
@@ -598,28 +575,6 @@ int i2o_parm_table_get(struct i2o_device *dev, int oper, int group, | |||
598 | return size; | 575 | return size; |
599 | } | 576 | } |
600 | 577 | ||
601 | /** | ||
602 | * i2o_device_init - Initialize I2O devices | ||
603 | * | ||
604 | * Registers the I2O device class. | ||
605 | * | ||
606 | * Returns 0 on success or negative error code on failure. | ||
607 | */ | ||
608 | int i2o_device_init(void) | ||
609 | { | ||
610 | return class_register(&i2o_device_class); | ||
611 | } | ||
612 | |||
613 | /** | ||
614 | * i2o_device_exit - I2O devices exit function | ||
615 | * | ||
616 | * Unregisters the I2O device class. | ||
617 | */ | ||
618 | void i2o_device_exit(void) | ||
619 | { | ||
620 | class_unregister(&i2o_device_class); | ||
621 | } | ||
622 | |||
623 | EXPORT_SYMBOL(i2o_device_claim); | 578 | EXPORT_SYMBOL(i2o_device_claim); |
624 | EXPORT_SYMBOL(i2o_device_claim_release); | 579 | EXPORT_SYMBOL(i2o_device_claim_release); |
625 | EXPORT_SYMBOL(i2o_parm_field_get); | 580 | EXPORT_SYMBOL(i2o_parm_field_get); |
diff --git a/drivers/message/i2o/driver.c b/drivers/message/i2o/driver.c index 739bfdef0c6d..0079a4be0af2 100644 --- a/drivers/message/i2o/driver.c +++ b/drivers/message/i2o/driver.c | |||
@@ -58,9 +58,12 @@ static int i2o_bus_match(struct device *dev, struct device_driver *drv) | |||
58 | }; | 58 | }; |
59 | 59 | ||
60 | /* I2O bus type */ | 60 | /* I2O bus type */ |
61 | extern struct device_attribute i2o_device_attrs[]; | ||
62 | |||
61 | struct bus_type i2o_bus_type = { | 63 | struct bus_type i2o_bus_type = { |
62 | .name = "i2o", | 64 | .name = "i2o", |
63 | .match = i2o_bus_match, | 65 | .match = i2o_bus_match, |
66 | .dev_attrs = i2o_device_attrs, | ||
64 | }; | 67 | }; |
65 | 68 | ||
66 | /** | 69 | /** |
diff --git a/drivers/message/i2o/iop.c b/drivers/message/i2o/iop.c index 15deb45ce995..176fb573ea26 100644 --- a/drivers/message/i2o/iop.c +++ b/drivers/message/i2o/iop.c | |||
@@ -1243,14 +1243,10 @@ static int __init i2o_iop_init(void) | |||
1243 | 1243 | ||
1244 | printk(KERN_INFO OSM_DESCRIPTION " v" OSM_VERSION "\n"); | 1244 | printk(KERN_INFO OSM_DESCRIPTION " v" OSM_VERSION "\n"); |
1245 | 1245 | ||
1246 | rc = i2o_device_init(); | ||
1247 | if (rc) | ||
1248 | goto exit; | ||
1249 | |||
1250 | i2o_controller_class = class_create(THIS_MODULE, "i2o_controller"); | 1246 | i2o_controller_class = class_create(THIS_MODULE, "i2o_controller"); |
1251 | if (IS_ERR(i2o_controller_class)) { | 1247 | if (IS_ERR(i2o_controller_class)) { |
1252 | osm_err("can't register class i2o_controller\n"); | 1248 | osm_err("can't register class i2o_controller\n"); |
1253 | goto device_exit; | 1249 | goto exit; |
1254 | } | 1250 | } |
1255 | 1251 | ||
1256 | if ((rc = i2o_driver_init())) | 1252 | if ((rc = i2o_driver_init())) |
@@ -1273,9 +1269,6 @@ static int __init i2o_iop_init(void) | |||
1273 | class_exit: | 1269 | class_exit: |
1274 | class_destroy(i2o_controller_class); | 1270 | class_destroy(i2o_controller_class); |
1275 | 1271 | ||
1276 | device_exit: | ||
1277 | i2o_device_exit(); | ||
1278 | |||
1279 | exit: | 1272 | exit: |
1280 | return rc; | 1273 | return rc; |
1281 | } | 1274 | } |
@@ -1291,7 +1284,6 @@ static void __exit i2o_iop_exit(void) | |||
1291 | i2o_exec_exit(); | 1284 | i2o_exec_exit(); |
1292 | i2o_driver_exit(); | 1285 | i2o_driver_exit(); |
1293 | class_destroy(i2o_controller_class); | 1286 | class_destroy(i2o_controller_class); |
1294 | i2o_device_exit(); | ||
1295 | }; | 1287 | }; |
1296 | 1288 | ||
1297 | module_init(i2o_iop_init); | 1289 | module_init(i2o_iop_init); |
diff --git a/include/linux/i2o.h b/include/linux/i2o.h index 694ea298d4bc..84db8f6ae7e5 100644 --- a/include/linux/i2o.h +++ b/include/linux/i2o.h | |||
@@ -66,8 +66,6 @@ struct i2o_device { | |||
66 | struct device device; | 66 | struct device device; |
67 | 67 | ||
68 | struct semaphore lock; /* device lock */ | 68 | struct semaphore lock; /* device lock */ |
69 | |||
70 | struct class_device classdev; /* i2o device class */ | ||
71 | }; | 69 | }; |
72 | 70 | ||
73 | /* | 71 | /* |