Commit 6b08f3ae8eec27a9e557468a48540bc64fd4a524
Committed by
Paul Mackerras
1 parent
55347cc996
Exists in
master
and in
7 other branches
[POWERPC] ibmebus: Move to of_device and of_platform_driver, match eHCA and eHEA drivers
Replace struct ibmebus_dev and struct ibmebus_driver with struct of_device and struct of_platform_driver, respectively. Match the external ibmebus interface and drivers using it. Signed-off-by: Joachim Fenkes <fenkes@de.ibm.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Roland Dreier <rolandd@cisco.com> Acked-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Showing 7 changed files with 79 additions and 101 deletions Side-by-side Diff
arch/powerpc/kernel/ibmebus.c
... | ... | @@ -193,21 +193,26 @@ |
193 | 193 | return ret; |
194 | 194 | } |
195 | 195 | |
196 | -int ibmebus_register_driver(struct ibmebus_driver *drv) | |
196 | +int 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 | } |
200 | 206 | EXPORT_SYMBOL(ibmebus_register_driver); |
201 | 207 | |
202 | -void ibmebus_unregister_driver(struct ibmebus_driver *drv) | |
208 | +void ibmebus_unregister_driver(struct of_platform_driver *drv) | |
203 | 209 | { |
210 | + driver_unregister(&drv->driver); | |
204 | 211 | } |
205 | 212 | EXPORT_SYMBOL(ibmebus_unregister_driver); |
206 | 213 | |
207 | -int ibmebus_request_irq(struct ibmebus_dev *dev, | |
208 | - u32 ist, | |
209 | - irq_handler_t handler, | |
210 | - unsigned long irq_flags, const char * devname, | |
214 | +int ibmebus_request_irq(u32 ist, irq_handler_t handler, | |
215 | + unsigned long irq_flags, const char *devname, | |
211 | 216 | void *dev_id) |
212 | 217 | { |
213 | 218 | unsigned int irq = irq_create_mapping(NULL, ist); |
214 | 219 | |
... | ... | @@ -215,12 +220,11 @@ |
215 | 220 | if (irq == NO_IRQ) |
216 | 221 | return -EINVAL; |
217 | 222 | |
218 | - return request_irq(irq, handler, | |
219 | - irq_flags, devname, dev_id); | |
223 | + return request_irq(irq, handler, irq_flags, devname, dev_id); | |
220 | 224 | } |
221 | 225 | EXPORT_SYMBOL(ibmebus_request_irq); |
222 | 226 | |
223 | -void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id) | |
227 | +void ibmebus_free_irq(u32 ist, void *dev_id) | |
224 | 228 | { |
225 | 229 | unsigned int irq = irq_find_mapping(NULL, ist); |
226 | 230 | |
... | ... | @@ -231,9 +235,7 @@ |
231 | 235 | static ssize_t name_show(struct device *dev, |
232 | 236 | struct device_attribute *attr, char *buf) |
233 | 237 | { |
234 | - struct ibmebus_dev *ebus_dev = to_ibmebus_dev(dev); | |
235 | - const char *name = of_get_property(ebus_dev->ofdev.node, "name", NULL); | |
236 | - return sprintf(buf, "%s\n", name); | |
238 | + return sprintf(buf, "%s\n", to_of_device(dev)->node->name); | |
237 | 239 | } |
238 | 240 | |
239 | 241 | static struct device_attribute ibmebus_dev_attrs[] = { |
drivers/infiniband/hw/ehca/ehca_classes.h
drivers/infiniband/hw/ehca/ehca_eq.c
... | ... | @@ -123,7 +123,7 @@ |
123 | 123 | |
124 | 124 | /* register interrupt handlers and initialize work queues */ |
125 | 125 | if (type == EHCA_EQ) { |
126 | - ret = ibmebus_request_irq(NULL, eq->ist, ehca_interrupt_eq, | |
126 | + ret = ibmebus_request_irq(eq->ist, ehca_interrupt_eq, | |
127 | 127 | IRQF_DISABLED, "ehca_eq", |
128 | 128 | (void *)shca); |
129 | 129 | if (ret < 0) |
... | ... | @@ -131,7 +131,7 @@ |
131 | 131 | |
132 | 132 | tasklet_init(&eq->interrupt_task, ehca_tasklet_eq, (long)shca); |
133 | 133 | } else if (type == EHCA_NEQ) { |
134 | - ret = ibmebus_request_irq(NULL, eq->ist, ehca_interrupt_neq, | |
134 | + ret = ibmebus_request_irq(eq->ist, ehca_interrupt_neq, | |
135 | 135 | IRQF_DISABLED, "ehca_neq", |
136 | 136 | (void *)shca); |
137 | 137 | if (ret < 0) |
... | ... | @@ -171,7 +171,7 @@ |
171 | 171 | u64 h_ret; |
172 | 172 | |
173 | 173 | spin_lock_irqsave(&eq->spinlock, flags); |
174 | - ibmebus_free_irq(NULL, eq->ist, (void *)shca); | |
174 | + ibmebus_free_irq(eq->ist, (void *)shca); | |
175 | 175 | |
176 | 176 | h_ret = hipz_h_destroy_eq(shca->ipz_hca_handle, eq); |
177 | 177 |
drivers/infiniband/hw/ehca/ehca_main.c
... | ... | @@ -404,7 +404,7 @@ |
404 | 404 | shca->ib_device.node_type = RDMA_NODE_IB_CA; |
405 | 405 | shca->ib_device.phys_port_cnt = shca->num_ports; |
406 | 406 | shca->ib_device.num_comp_vectors = 1; |
407 | - shca->ib_device.dma_device = &shca->ibmebus_dev->ofdev.dev; | |
407 | + shca->ib_device.dma_device = &shca->ofdev->dev; | |
408 | 408 | shca->ib_device.query_device = ehca_query_device; |
409 | 409 | shca->ib_device.query_port = ehca_query_port; |
410 | 410 | shca->ib_device.query_gid = ehca_query_gid; |
... | ... | @@ -658,7 +658,7 @@ |
658 | 658 | .attrs = ehca_dev_attrs |
659 | 659 | }; |
660 | 660 | |
661 | -static int __devinit ehca_probe(struct ibmebus_dev *dev, | |
661 | +static int __devinit ehca_probe(struct of_device *dev, | |
662 | 662 | const struct of_device_id *id) |
663 | 663 | { |
664 | 664 | struct ehca_shca *shca; |
665 | 665 | |
666 | 666 | |
... | ... | @@ -666,16 +666,16 @@ |
666 | 666 | struct ib_pd *ibpd; |
667 | 667 | int ret; |
668 | 668 | |
669 | - handle = of_get_property(dev->ofdev.node, "ibm,hca-handle", NULL); | |
669 | + handle = of_get_property(dev->node, "ibm,hca-handle", NULL); | |
670 | 670 | if (!handle) { |
671 | 671 | ehca_gen_err("Cannot get eHCA handle for adapter: %s.", |
672 | - dev->ofdev.node->full_name); | |
672 | + dev->node->full_name); | |
673 | 673 | return -ENODEV; |
674 | 674 | } |
675 | 675 | |
676 | 676 | if (!(*handle)) { |
677 | 677 | ehca_gen_err("Wrong eHCA handle for adapter: %s.", |
678 | - dev->ofdev.node->full_name); | |
678 | + dev->node->full_name); | |
679 | 679 | return -ENODEV; |
680 | 680 | } |
681 | 681 | |
682 | 682 | |
... | ... | @@ -686,9 +686,9 @@ |
686 | 686 | } |
687 | 687 | mutex_init(&shca->modify_mutex); |
688 | 688 | |
689 | - shca->ibmebus_dev = dev; | |
689 | + shca->ofdev = dev; | |
690 | 690 | shca->ipz_hca_handle.handle = *handle; |
691 | - dev->ofdev.dev.driver_data = shca; | |
691 | + dev->dev.driver_data = shca; | |
692 | 692 | |
693 | 693 | ret = ehca_sense_attributes(shca); |
694 | 694 | if (ret < 0) { |
... | ... | @@ -764,7 +764,7 @@ |
764 | 764 | } |
765 | 765 | } |
766 | 766 | |
767 | - ret = sysfs_create_group(&dev->ofdev.dev.kobj, &ehca_dev_attr_grp); | |
767 | + ret = sysfs_create_group(&dev->dev.kobj, &ehca_dev_attr_grp); | |
768 | 768 | if (ret) /* only complain; we can live without attributes */ |
769 | 769 | ehca_err(&shca->ib_device, |
770 | 770 | "Cannot create device attributes ret=%d", ret); |
771 | 771 | |
772 | 772 | |
... | ... | @@ -814,12 +814,12 @@ |
814 | 814 | return -EINVAL; |
815 | 815 | } |
816 | 816 | |
817 | -static int __devexit ehca_remove(struct ibmebus_dev *dev) | |
817 | +static int __devexit ehca_remove(struct of_device *dev) | |
818 | 818 | { |
819 | - struct ehca_shca *shca = dev->ofdev.dev.driver_data; | |
819 | + struct ehca_shca *shca = dev->dev.driver_data; | |
820 | 820 | int ret; |
821 | 821 | |
822 | - sysfs_remove_group(&dev->ofdev.dev.kobj, &ehca_dev_attr_grp); | |
822 | + sysfs_remove_group(&dev->dev.kobj, &ehca_dev_attr_grp); | |
823 | 823 | |
824 | 824 | if (ehca_open_aqp1 == 1) { |
825 | 825 | int i; |
... | ... | @@ -870,11 +870,11 @@ |
870 | 870 | {}, |
871 | 871 | }; |
872 | 872 | |
873 | -static struct ibmebus_driver ehca_driver = { | |
874 | - .name = "ehca", | |
875 | - .id_table = ehca_device_table, | |
876 | - .probe = ehca_probe, | |
877 | - .remove = ehca_remove, | |
873 | +static struct of_platform_driver ehca_driver = { | |
874 | + .name = "ehca", | |
875 | + .match_table = ehca_device_table, | |
876 | + .probe = ehca_probe, | |
877 | + .remove = ehca_remove, | |
878 | 878 | }; |
879 | 879 | |
880 | 880 | void ehca_poll_eqs(unsigned long data) |
drivers/net/ehea/ehea.h
... | ... | @@ -388,7 +388,7 @@ |
388 | 388 | #define EHEA_MAX_PORTS 16 |
389 | 389 | struct ehea_adapter { |
390 | 390 | u64 handle; |
391 | - struct ibmebus_dev *ebus_dev; | |
391 | + struct of_device *ofdev; | |
392 | 392 | struct ehea_port *port[EHEA_MAX_PORTS]; |
393 | 393 | struct ehea_eq *neq; /* notification event queue */ |
394 | 394 | struct tasklet_struct neq_tasklet; |
drivers/net/ehea/ehea_main.c
... | ... | @@ -98,10 +98,10 @@ |
98 | 98 | |
99 | 99 | struct semaphore dlpar_mem_lock; |
100 | 100 | |
101 | -static int __devinit ehea_probe_adapter(struct ibmebus_dev *dev, | |
101 | +static int __devinit ehea_probe_adapter(struct of_device *dev, | |
102 | 102 | const struct of_device_id *id); |
103 | 103 | |
104 | -static int __devexit ehea_remove(struct ibmebus_dev *dev); | |
104 | +static int __devexit ehea_remove(struct of_device *dev); | |
105 | 105 | |
106 | 106 | static struct of_device_id ehea_device_table[] = { |
107 | 107 | { |
108 | 108 | |
... | ... | @@ -111,9 +111,9 @@ |
111 | 111 | {}, |
112 | 112 | }; |
113 | 113 | |
114 | -static struct ibmebus_driver ehea_driver = { | |
114 | +static struct of_platform_driver ehea_driver = { | |
115 | 115 | .name = "ehea", |
116 | - .id_table = ehea_device_table, | |
116 | + .match_table = ehea_device_table, | |
117 | 117 | .probe = ehea_probe_adapter, |
118 | 118 | .remove = ehea_remove, |
119 | 119 | }; |
... | ... | @@ -1044,7 +1044,7 @@ |
1044 | 1044 | snprintf(port->int_aff_name, EHEA_IRQ_NAME_SIZE - 1, "%s-aff", |
1045 | 1045 | dev->name); |
1046 | 1046 | |
1047 | - ret = ibmebus_request_irq(NULL, port->qp_eq->attr.ist1, | |
1047 | + ret = ibmebus_request_irq(port->qp_eq->attr.ist1, | |
1048 | 1048 | ehea_qp_aff_irq_handler, |
1049 | 1049 | IRQF_DISABLED, port->int_aff_name, port); |
1050 | 1050 | if (ret) { |
... | ... | @@ -1062,7 +1062,7 @@ |
1062 | 1062 | pr = &port->port_res[i]; |
1063 | 1063 | snprintf(pr->int_send_name, EHEA_IRQ_NAME_SIZE - 1, |
1064 | 1064 | "%s-queue%d", dev->name, i); |
1065 | - ret = ibmebus_request_irq(NULL, pr->eq->attr.ist1, | |
1065 | + ret = ibmebus_request_irq(pr->eq->attr.ist1, | |
1066 | 1066 | ehea_recv_irq_handler, |
1067 | 1067 | IRQF_DISABLED, pr->int_send_name, |
1068 | 1068 | pr); |
1069 | 1069 | |
... | ... | @@ -1083,11 +1083,11 @@ |
1083 | 1083 | out_free_req: |
1084 | 1084 | while (--i >= 0) { |
1085 | 1085 | u32 ist = port->port_res[i].eq->attr.ist1; |
1086 | - ibmebus_free_irq(NULL, ist, &port->port_res[i]); | |
1086 | + ibmebus_free_irq(ist, &port->port_res[i]); | |
1087 | 1087 | } |
1088 | 1088 | |
1089 | 1089 | out_free_qpeq: |
1090 | - ibmebus_free_irq(NULL, port->qp_eq->attr.ist1, port); | |
1090 | + ibmebus_free_irq(port->qp_eq->attr.ist1, port); | |
1091 | 1091 | i = port->num_def_qps; |
1092 | 1092 | |
1093 | 1093 | goto out; |
1094 | 1094 | |
... | ... | @@ -1104,14 +1104,14 @@ |
1104 | 1104 | |
1105 | 1105 | for (i = 0; i < port->num_def_qps + port->num_add_tx_qps; i++) { |
1106 | 1106 | pr = &port->port_res[i]; |
1107 | - ibmebus_free_irq(NULL, pr->eq->attr.ist1, pr); | |
1107 | + ibmebus_free_irq(pr->eq->attr.ist1, pr); | |
1108 | 1108 | if (netif_msg_intr(port)) |
1109 | 1109 | ehea_info("free send irq for res %d with handle 0x%X", |
1110 | 1110 | i, pr->eq->attr.ist1); |
1111 | 1111 | } |
1112 | 1112 | |
1113 | 1113 | /* associated events */ |
1114 | - ibmebus_free_irq(NULL, port->qp_eq->attr.ist1, port); | |
1114 | + ibmebus_free_irq(port->qp_eq->attr.ist1, port); | |
1115 | 1115 | if (netif_msg_intr(port)) |
1116 | 1116 | ehea_info("associated event interrupt for handle 0x%X freed", |
1117 | 1117 | port->qp_eq->attr.ist1); |
... | ... | @@ -2832,7 +2832,7 @@ |
2832 | 2832 | int ret; |
2833 | 2833 | |
2834 | 2834 | port->ofdev.node = of_node_get(dn); |
2835 | - port->ofdev.dev.parent = &port->adapter->ebus_dev->ofdev.dev; | |
2835 | + port->ofdev.dev.parent = &port->adapter->ofdev->dev; | |
2836 | 2836 | port->ofdev.dev.bus = &ibmebus_bus_type; |
2837 | 2837 | |
2838 | 2838 | sprintf(port->ofdev.dev.bus_id, "port%d", port_name_cnt++); |
... | ... | @@ -3011,7 +3011,7 @@ |
3011 | 3011 | const u32 *dn_log_port_id; |
3012 | 3012 | int i = 0; |
3013 | 3013 | |
3014 | - lhea_dn = adapter->ebus_dev->ofdev.node; | |
3014 | + lhea_dn = adapter->ofdev->node; | |
3015 | 3015 | while ((eth_dn = of_get_next_child(lhea_dn, eth_dn))) { |
3016 | 3016 | |
3017 | 3017 | dn_log_port_id = of_get_property(eth_dn, "ibm,hea-port-no", |
... | ... | @@ -3051,7 +3051,7 @@ |
3051 | 3051 | struct device_node *eth_dn = NULL; |
3052 | 3052 | const u32 *dn_log_port_id; |
3053 | 3053 | |
3054 | - lhea_dn = adapter->ebus_dev->ofdev.node; | |
3054 | + lhea_dn = adapter->ofdev->node; | |
3055 | 3055 | while ((eth_dn = of_get_next_child(lhea_dn, eth_dn))) { |
3056 | 3056 | |
3057 | 3057 | dn_log_port_id = of_get_property(eth_dn, "ibm,hea-port-no", |
3058 | 3058 | |
3059 | 3059 | |
3060 | 3060 | |
3061 | 3061 | |
3062 | 3062 | |
3063 | 3063 | |
... | ... | @@ -3157,31 +3157,31 @@ |
3157 | 3157 | static DEVICE_ATTR(probe_port, S_IWUSR, NULL, ehea_probe_port); |
3158 | 3158 | static DEVICE_ATTR(remove_port, S_IWUSR, NULL, ehea_remove_port); |
3159 | 3159 | |
3160 | -int ehea_create_device_sysfs(struct ibmebus_dev *dev) | |
3160 | +int ehea_create_device_sysfs(struct of_device *dev) | |
3161 | 3161 | { |
3162 | - int ret = device_create_file(&dev->ofdev.dev, &dev_attr_probe_port); | |
3162 | + int ret = device_create_file(&dev->dev, &dev_attr_probe_port); | |
3163 | 3163 | if (ret) |
3164 | 3164 | goto out; |
3165 | 3165 | |
3166 | - ret = device_create_file(&dev->ofdev.dev, &dev_attr_remove_port); | |
3166 | + ret = device_create_file(&dev->dev, &dev_attr_remove_port); | |
3167 | 3167 | out: |
3168 | 3168 | return ret; |
3169 | 3169 | } |
3170 | 3170 | |
3171 | -void ehea_remove_device_sysfs(struct ibmebus_dev *dev) | |
3171 | +void ehea_remove_device_sysfs(struct of_device *dev) | |
3172 | 3172 | { |
3173 | - device_remove_file(&dev->ofdev.dev, &dev_attr_probe_port); | |
3174 | - device_remove_file(&dev->ofdev.dev, &dev_attr_remove_port); | |
3173 | + device_remove_file(&dev->dev, &dev_attr_probe_port); | |
3174 | + device_remove_file(&dev->dev, &dev_attr_remove_port); | |
3175 | 3175 | } |
3176 | 3176 | |
3177 | -static int __devinit ehea_probe_adapter(struct ibmebus_dev *dev, | |
3177 | +static int __devinit ehea_probe_adapter(struct of_device *dev, | |
3178 | 3178 | const struct of_device_id *id) |
3179 | 3179 | { |
3180 | 3180 | struct ehea_adapter *adapter; |
3181 | 3181 | const u64 *adapter_handle; |
3182 | 3182 | int ret; |
3183 | 3183 | |
3184 | - if (!dev || !dev->ofdev.node) { | |
3184 | + if (!dev || !dev->node) { | |
3185 | 3185 | ehea_error("Invalid ibmebus device probed"); |
3186 | 3186 | return -EINVAL; |
3187 | 3187 | } |
3188 | 3188 | |
3189 | 3189 | |
3190 | 3190 | |
3191 | 3191 | |
3192 | 3192 | |
... | ... | @@ -3189,36 +3189,36 @@ |
3189 | 3189 | adapter = kzalloc(sizeof(*adapter), GFP_KERNEL); |
3190 | 3190 | if (!adapter) { |
3191 | 3191 | ret = -ENOMEM; |
3192 | - dev_err(&dev->ofdev.dev, "no mem for ehea_adapter\n"); | |
3192 | + dev_err(&dev->dev, "no mem for ehea_adapter\n"); | |
3193 | 3193 | goto out; |
3194 | 3194 | } |
3195 | 3195 | |
3196 | 3196 | list_add(&adapter->list, &adapter_list); |
3197 | 3197 | |
3198 | - adapter->ebus_dev = dev; | |
3198 | + adapter->ofdev = dev; | |
3199 | 3199 | |
3200 | - adapter_handle = of_get_property(dev->ofdev.node, "ibm,hea-handle", | |
3200 | + adapter_handle = of_get_property(dev->node, "ibm,hea-handle", | |
3201 | 3201 | NULL); |
3202 | 3202 | if (adapter_handle) |
3203 | 3203 | adapter->handle = *adapter_handle; |
3204 | 3204 | |
3205 | 3205 | if (!adapter->handle) { |
3206 | - dev_err(&dev->ofdev.dev, "failed getting handle for adapter" | |
3207 | - " '%s'\n", dev->ofdev.node->full_name); | |
3206 | + dev_err(&dev->dev, "failed getting handle for adapter" | |
3207 | + " '%s'\n", dev->node->full_name); | |
3208 | 3208 | ret = -ENODEV; |
3209 | 3209 | goto out_free_ad; |
3210 | 3210 | } |
3211 | 3211 | |
3212 | 3212 | adapter->pd = EHEA_PD_ID; |
3213 | 3213 | |
3214 | - dev->ofdev.dev.driver_data = adapter; | |
3214 | + dev->dev.driver_data = adapter; | |
3215 | 3215 | |
3216 | 3216 | |
3217 | 3217 | /* initialize adapter and ports */ |
3218 | 3218 | /* get adapter properties */ |
3219 | 3219 | ret = ehea_sense_adapter_attr(adapter); |
3220 | 3220 | if (ret) { |
3221 | - dev_err(&dev->ofdev.dev, "sense_adapter_attr failed: %d", ret); | |
3221 | + dev_err(&dev->dev, "sense_adapter_attr failed: %d", ret); | |
3222 | 3222 | goto out_free_ad; |
3223 | 3223 | } |
3224 | 3224 | |
3225 | 3225 | |
3226 | 3226 | |
... | ... | @@ -3226,18 +3226,18 @@ |
3226 | 3226 | EHEA_NEQ, EHEA_MAX_ENTRIES_EQ, 1); |
3227 | 3227 | if (!adapter->neq) { |
3228 | 3228 | ret = -EIO; |
3229 | - dev_err(&dev->ofdev.dev, "NEQ creation failed"); | |
3229 | + dev_err(&dev->dev, "NEQ creation failed"); | |
3230 | 3230 | goto out_free_ad; |
3231 | 3231 | } |
3232 | 3232 | |
3233 | 3233 | tasklet_init(&adapter->neq_tasklet, ehea_neq_tasklet, |
3234 | 3234 | (unsigned long)adapter); |
3235 | 3235 | |
3236 | - ret = ibmebus_request_irq(NULL, adapter->neq->attr.ist1, | |
3236 | + ret = ibmebus_request_irq(adapter->neq->attr.ist1, | |
3237 | 3237 | ehea_interrupt_neq, IRQF_DISABLED, |
3238 | 3238 | "ehea_neq", adapter); |
3239 | 3239 | if (ret) { |
3240 | - dev_err(&dev->ofdev.dev, "requesting NEQ IRQ failed"); | |
3240 | + dev_err(&dev->dev, "requesting NEQ IRQ failed"); | |
3241 | 3241 | goto out_kill_eq; |
3242 | 3242 | } |
3243 | 3243 | |
... | ... | @@ -3247,7 +3247,7 @@ |
3247 | 3247 | |
3248 | 3248 | ret = ehea_setup_ports(adapter); |
3249 | 3249 | if (ret) { |
3250 | - dev_err(&dev->ofdev.dev, "setup_ports failed"); | |
3250 | + dev_err(&dev->dev, "setup_ports failed"); | |
3251 | 3251 | goto out_rem_dev_sysfs; |
3252 | 3252 | } |
3253 | 3253 | |
... | ... | @@ -3258,7 +3258,7 @@ |
3258 | 3258 | ehea_remove_device_sysfs(dev); |
3259 | 3259 | |
3260 | 3260 | out_free_irq: |
3261 | - ibmebus_free_irq(NULL, adapter->neq->attr.ist1, adapter); | |
3261 | + ibmebus_free_irq(adapter->neq->attr.ist1, adapter); | |
3262 | 3262 | |
3263 | 3263 | out_kill_eq: |
3264 | 3264 | ehea_destroy_eq(adapter->neq); |
3265 | 3265 | |
... | ... | @@ -3269,9 +3269,9 @@ |
3269 | 3269 | return ret; |
3270 | 3270 | } |
3271 | 3271 | |
3272 | -static int __devexit ehea_remove(struct ibmebus_dev *dev) | |
3272 | +static int __devexit ehea_remove(struct of_device *dev) | |
3273 | 3273 | { |
3274 | - struct ehea_adapter *adapter = dev->ofdev.dev.driver_data; | |
3274 | + struct ehea_adapter *adapter = dev->dev.driver_data; | |
3275 | 3275 | int i; |
3276 | 3276 | |
3277 | 3277 | for (i = 0; i < EHEA_MAX_PORTS; i++) |
... | ... | @@ -3284,7 +3284,7 @@ |
3284 | 3284 | |
3285 | 3285 | flush_scheduled_work(); |
3286 | 3286 | |
3287 | - ibmebus_free_irq(NULL, adapter->neq->attr.ist1, adapter); | |
3287 | + ibmebus_free_irq(adapter->neq->attr.ist1, adapter); | |
3288 | 3288 | tasklet_kill(&adapter->neq_tasklet); |
3289 | 3289 | |
3290 | 3290 | ehea_destroy_eq(adapter->neq); |
include/asm-powerpc/ibmebus.h
... | ... | @@ -43,42 +43,18 @@ |
43 | 43 | #include <linux/device.h> |
44 | 44 | #include <linux/interrupt.h> |
45 | 45 | #include <linux/mod_devicetable.h> |
46 | -#include <asm/of_device.h> | |
46 | +#include <linux/of_device.h> | |
47 | +#include <linux/of_platform.h> | |
47 | 48 | |
48 | 49 | extern struct bus_type ibmebus_bus_type; |
49 | 50 | |
50 | -struct ibmebus_dev { | |
51 | - struct of_device ofdev; | |
52 | -}; | |
51 | +int ibmebus_register_driver(struct of_platform_driver *drv); | |
52 | +void ibmebus_unregister_driver(struct of_platform_driver *drv); | |
53 | 53 | |
54 | -struct ibmebus_driver { | |
55 | - char *name; | |
56 | - struct of_device_id *id_table; | |
57 | - int (*probe) (struct ibmebus_dev *dev, const struct of_device_id *id); | |
58 | - int (*remove) (struct ibmebus_dev *dev); | |
59 | - struct device_driver driver; | |
60 | -}; | |
61 | - | |
62 | -int ibmebus_register_driver(struct ibmebus_driver *drv); | |
63 | -void ibmebus_unregister_driver(struct ibmebus_driver *drv); | |
64 | - | |
65 | -int ibmebus_request_irq(struct ibmebus_dev *dev, | |
66 | - u32 ist, | |
67 | - irq_handler_t handler, | |
68 | - unsigned long irq_flags, const char * devname, | |
54 | +int ibmebus_request_irq(u32 ist, irq_handler_t handler, | |
55 | + unsigned long irq_flags, const char *devname, | |
69 | 56 | void *dev_id); |
70 | -void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id); | |
71 | - | |
72 | -static inline struct ibmebus_driver *to_ibmebus_driver(struct device_driver *drv) | |
73 | -{ | |
74 | - return container_of(drv, struct ibmebus_driver, driver); | |
75 | -} | |
76 | - | |
77 | -static inline struct ibmebus_dev *to_ibmebus_dev(struct device *dev) | |
78 | -{ | |
79 | - return container_of(dev, struct ibmebus_dev, ofdev.dev); | |
80 | -} | |
81 | - | |
57 | +void ibmebus_free_irq(u32 ist, void *dev_id); | |
82 | 58 | |
83 | 59 | #endif /* __KERNEL__ */ |
84 | 60 | #endif /* _ASM_IBMEBUS_H */ |