aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/ibmebus.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/ibmebus.c')
-rw-r--r--arch/powerpc/kernel/ibmebus.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c
index d21658140b6e..289d7e935918 100644
--- a/arch/powerpc/kernel/ibmebus.c
+++ b/arch/powerpc/kernel/ibmebus.c
@@ -193,21 +193,26 @@ static int ibmebus_create_devices(const struct of_device_id *matches)
193 return ret; 193 return ret;
194} 194}
195 195
196int ibmebus_register_driver(struct ibmebus_driver *drv) 196int ibmebus_register_driver(struct of_platform_driver *drv)
197{ 197{
198 return 0; 198 /* If the driver uses devices that ibmebus doesn't know, add them */
199 ibmebus_create_devices(drv->match_table);
200
201 drv->driver.name = drv->name;
202 drv->driver.bus = &ibmebus_bus_type;
203
204 return driver_register(&drv->driver);
199} 205}
200EXPORT_SYMBOL(ibmebus_register_driver); 206EXPORT_SYMBOL(ibmebus_register_driver);
201 207
202void ibmebus_unregister_driver(struct ibmebus_driver *drv) 208void ibmebus_unregister_driver(struct of_platform_driver *drv)
203{ 209{
210 driver_unregister(&drv->driver);
204} 211}
205EXPORT_SYMBOL(ibmebus_unregister_driver); 212EXPORT_SYMBOL(ibmebus_unregister_driver);
206 213
207int ibmebus_request_irq(struct ibmebus_dev *dev, 214int ibmebus_request_irq(u32 ist, irq_handler_t handler,
208 u32 ist, 215 unsigned long irq_flags, const char *devname,
209 irq_handler_t handler,
210 unsigned long irq_flags, const char * devname,
211 void *dev_id) 216 void *dev_id)
212{ 217{
213 unsigned int irq = irq_create_mapping(NULL, ist); 218 unsigned int irq = irq_create_mapping(NULL, ist);
@@ -215,12 +220,11 @@ int ibmebus_request_irq(struct ibmebus_dev *dev,
215 if (irq == NO_IRQ) 220 if (irq == NO_IRQ)
216 return -EINVAL; 221 return -EINVAL;
217 222
218 return request_irq(irq, handler, 223 return request_irq(irq, handler, irq_flags, devname, dev_id);
219 irq_flags, devname, dev_id);
220} 224}
221EXPORT_SYMBOL(ibmebus_request_irq); 225EXPORT_SYMBOL(ibmebus_request_irq);
222 226
223void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id) 227void ibmebus_free_irq(u32 ist, void *dev_id)
224{ 228{
225 unsigned int irq = irq_find_mapping(NULL, ist); 229 unsigned int irq = irq_find_mapping(NULL, ist);
226 230
@@ -231,9 +235,7 @@ EXPORT_SYMBOL(ibmebus_free_irq);
231static ssize_t name_show(struct device *dev, 235static ssize_t name_show(struct device *dev,
232 struct device_attribute *attr, char *buf) 236 struct device_attribute *attr, char *buf)
233{ 237{
234 struct ibmebus_dev *ebus_dev = to_ibmebus_dev(dev); 238 return sprintf(buf, "%s\n", to_of_device(dev)->node->name);
235 const char *name = of_get_property(ebus_dev->ofdev.node, "name", NULL);
236 return sprintf(buf, "%s\n", name);
237} 239}
238 240
239static struct device_attribute ibmebus_dev_attrs[] = { 241static struct device_attribute ibmebus_dev_attrs[] = {