@@ -261,7 +261,7 @@ irqreturn_t isr_bh_routine(int irq, void *userdata)
}
PRINT_D(INT_DBG, "Interrupt received BH\n");
- wilc_handle_isr();
+ wilc_handle_isr(wilc);
return IRQ_HANDLED;
}
@@ -27,7 +27,6 @@ struct wilc_sdio {
};
struct sdio_func *local_sdio_func;
-extern void wilc_handle_isr(void);
static unsigned int sdio_default_speed;
@@ -42,9 +41,13 @@ static const struct sdio_device_id wilc_sdio_ids[] = {
static void wilc_sdio_interrupt(struct sdio_func *func)
{
+ struct wilc_sdio *wl_sdio;
+
+ wl_sdio = sdio_get_drvdata(func);
+
#ifndef WILC_SDIO_IRQ_GPIO
sdio_release_host(func);
- wilc_handle_isr();
+ wilc_handle_isr(wl_sdio->wilc);
sdio_claim_host(func);
#endif
}
@@ -1353,7 +1353,7 @@ _end_:
wilc_wlan_handle_rxq();
}
-void wilc_handle_isr(void)
+void wilc_handle_isr(void *wilc)
{
u32 int_status;
@@ -301,7 +301,7 @@ int wilc_wlan_stop(void);
int wilc_wlan_txq_add_net_pkt(void *priv, u8 *buffer, u32 buffer_size,
wilc_tx_complete_func_t func);
int wilc_wlan_handle_txq(u32 *pu32TxqCount);
-void wilc_handle_isr(void);
+void wilc_handle_isr(void *wilc);
void wilc_wlan_cleanup(void);
int wilc_wlan_cfg_set(int start, u32 wid, u8 *buffer, u32 buffer_size,
int commit, u32 drvHandler);
This patch add new argument wilc to wilc_handle_isr and pass wilc to the function. It is void type for now because wilc_wlan.c was implemented platform independently at the beginning (linux_wlan.c is implementation of LINUX part), so the header file which defines struct wilc cannot be included at this moment, but this driver is dedicated to LINUX so wilc_wlan.c and linux_wlan.c will be merged. After that, this void type will be changed with struct wilc as well as other functions which are using void type in wilc_wlan.h. Signed-off-by: Glen Lee <glen.lee@atmel.com> --- drivers/staging/wilc1000/linux_wlan.c | 2 +- drivers/staging/wilc1000/linux_wlan_sdio.c | 7 +++++-- drivers/staging/wilc1000/wilc_wlan.c | 2 +- drivers/staging/wilc1000/wilc_wlan.h | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-)