|
@@ -435,7 +435,7 @@ static int ppe_open(struct atm_vcc *vcc)
|
|
|
*MBOX_IGU1_ISRC = (1 << RX_DMA_CH_AAL) | (1 << RX_DMA_CH_OAM);
|
|
|
*MBOX_IGU1_IER = (1 << RX_DMA_CH_AAL) | (1 << RX_DMA_CH_OAM);
|
|
|
|
|
|
- enable_irq(PPE_MAILBOX_IGU1_INT);
|
|
|
+ enable_irq(g_atm_priv_data.irq);
|
|
|
}
|
|
|
|
|
|
/* set port */
|
|
@@ -481,7 +481,7 @@ static void ppe_close(struct atm_vcc *vcc)
|
|
|
|
|
|
/* disable irq */
|
|
|
if ( g_atm_priv_data.conn_table == 0 )
|
|
|
- disable_irq(PPE_MAILBOX_IGU1_INT);
|
|
|
+ disable_irq(g_atm_priv_data.irq);
|
|
|
|
|
|
/* release bandwidth */
|
|
|
switch ( vcc->qos.txtp.traffic_class )
|
|
@@ -1022,7 +1022,7 @@ static void do_ppe_tasklet(unsigned long data)
|
|
|
else if (*MBOX_IGU1_ISR >> (FIRST_QSB_QID + 16)) /* TX queue */
|
|
|
tasklet_schedule(&g_dma_tasklet);
|
|
|
else
|
|
|
- enable_irq(PPE_MAILBOX_IGU1_INT);
|
|
|
+ enable_irq(g_atm_priv_data.irq);
|
|
|
}
|
|
|
|
|
|
static irqreturn_t mailbox_irq_handler(int irq, void *dev_id)
|
|
@@ -1030,7 +1030,7 @@ static irqreturn_t mailbox_irq_handler(int irq, void *dev_id)
|
|
|
if ( !*MBOX_IGU1_ISR )
|
|
|
return IRQ_HANDLED;
|
|
|
|
|
|
- disable_irq_nosync(PPE_MAILBOX_IGU1_INT);
|
|
|
+ disable_irq_nosync(g_atm_priv_data.irq);
|
|
|
tasklet_schedule(&g_dma_tasklet);
|
|
|
|
|
|
return IRQ_HANDLED;
|
|
@@ -1805,17 +1805,23 @@ static int ltq_atm_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ g_atm_priv_data.irq = platform_get_irq(pdev, 0);
|
|
|
+ if (g_atm_priv_data.irq < 0) {
|
|
|
+ pr_err("platform_get_irq fail");
|
|
|
+ goto REQUEST_IRQ_PPE_MAILBOX_IGU1_INT_FAIL;
|
|
|
+ }
|
|
|
+
|
|
|
/* register interrupt handler */
|
|
|
- ret = request_irq(PPE_MAILBOX_IGU1_INT, mailbox_irq_handler, 0, "atm_mailbox_isr", &g_atm_priv_data);
|
|
|
+ ret = request_irq(g_atm_priv_data.irq, mailbox_irq_handler, 0, "atm_mailbox_isr", &g_atm_priv_data);
|
|
|
if ( ret ) {
|
|
|
if ( ret == -EBUSY ) {
|
|
|
pr_err("IRQ may be occupied by other driver, please reconfig to disable it.\n");
|
|
|
} else {
|
|
|
- pr_err("request_irq fail irq:%d\n", PPE_MAILBOX_IGU1_INT);
|
|
|
+ pr_err("request_irq fail irq:%d\n", g_atm_priv_data.irq);
|
|
|
}
|
|
|
goto REQUEST_IRQ_PPE_MAILBOX_IGU1_INT_FAIL;
|
|
|
}
|
|
|
- disable_irq(PPE_MAILBOX_IGU1_INT);
|
|
|
+ disable_irq(g_atm_priv_data.irq);
|
|
|
|
|
|
|
|
|
ret = ops->start(0);
|
|
@@ -1845,7 +1851,7 @@ static int ltq_atm_probe(struct platform_device *pdev)
|
|
|
return 0;
|
|
|
|
|
|
PP32_START_FAIL:
|
|
|
- free_irq(PPE_MAILBOX_IGU1_INT, &g_atm_priv_data);
|
|
|
+ free_irq(g_atm_priv_data.irq, &g_atm_priv_data);
|
|
|
REQUEST_IRQ_PPE_MAILBOX_IGU1_INT_FAIL:
|
|
|
ATM_DEV_REGISTER_FAIL:
|
|
|
while ( port_num-- > 0 )
|
|
@@ -1868,7 +1874,7 @@ static int ltq_atm_remove(struct platform_device *pdev)
|
|
|
|
|
|
ops->stop(0);
|
|
|
|
|
|
- free_irq(PPE_MAILBOX_IGU1_INT, &g_atm_priv_data);
|
|
|
+ free_irq(g_atm_priv_data.irq, &g_atm_priv_data);
|
|
|
|
|
|
for ( port_num = 0; port_num < ATM_PORT_NUMBER; port_num++ )
|
|
|
atm_dev_deregister(g_atm_priv_data.port[port_num].dev);
|