|
25 | 25 | #include <linux/io.h>
|
26 | 26 | #include <linux/dma-mapping.h>
|
27 | 27 | #include <linux/module.h>
|
| 28 | +#include <linux/property.h> |
28 | 29 |
|
29 | 30 | #include <asm/checksum.h>
|
30 | 31 |
|
@@ -239,6 +240,7 @@ ltq_etop_hw_init(struct net_device *dev)
|
239 | 240 | {
|
240 | 241 | struct ltq_etop_priv *priv = netdev_priv(dev);
|
241 | 242 | int i;
|
| 243 | + int err; |
242 | 244 |
|
243 | 245 | ltq_pmu_enable(PMU_PPE);
|
244 | 246 |
|
@@ -273,15 +275,27 @@ ltq_etop_hw_init(struct net_device *dev)
|
273 | 275 |
|
274 | 276 | if (IS_TX(i)) {
|
275 | 277 | ltq_dma_alloc_tx(&ch->dma);
|
276 |
| - request_irq(irq, ltq_etop_dma_irq, 0, "etop_tx", priv); |
| 278 | + err = request_irq(irq, ltq_etop_dma_irq, 0, "etop_tx", priv); |
| 279 | + if (err) { |
| 280 | + netdev_err(dev, |
| 281 | + "Unable to get Tx DMA IRQ %d\n", |
| 282 | + irq); |
| 283 | + return err; |
| 284 | + } |
277 | 285 | } else if (IS_RX(i)) {
|
278 | 286 | ltq_dma_alloc_rx(&ch->dma);
|
279 | 287 | for (ch->dma.desc = 0; ch->dma.desc < LTQ_DESC_NUM;
|
280 | 288 | ch->dma.desc++)
|
281 | 289 | if (ltq_etop_alloc_skb(ch))
|
282 | 290 | return -ENOMEM;
|
283 | 291 | ch->dma.desc = 0;
|
284 |
| - request_irq(irq, ltq_etop_dma_irq, 0, "etop_rx", priv); |
| 292 | + err = request_irq(irq, ltq_etop_dma_irq, 0, "etop_rx", priv); |
| 293 | + if (err) { |
| 294 | + netdev_err(dev, |
| 295 | + "Unable to get Rx DMA IRQ %d\n", |
| 296 | + irq); |
| 297 | + return err; |
| 298 | + } |
285 | 299 | }
|
286 | 300 | ch->dma.irq = irq;
|
287 | 301 | }
|
@@ -726,7 +740,7 @@ static struct platform_driver ltq_mii_driver = {
|
726 | 740 | },
|
727 | 741 | };
|
728 | 742 |
|
729 |
| -int __init |
| 743 | +static int __init |
730 | 744 | init_ltq_etop(void)
|
731 | 745 | {
|
732 | 746 | int ret = platform_driver_probe(<q_mii_driver, ltq_etop_probe);
|
|
0 commit comments