|
@@ -102,7 +102,7 @@ static u32 tsi148_LM_irqhandler(struct tsi148_driver *bridge, u32 stat)
|
|
|
for (i = 0; i < 4; i++) {
|
|
|
if (stat & TSI148_LCSR_INTS_LMS[i]) {
|
|
|
/* We only enable interrupts if the callback is set */
|
|
|
- bridge->lm_callback[i](i);
|
|
|
+ bridge->lm_callback[i](bridge->lm_data[i]);
|
|
|
serviced |= TSI148_LCSR_INTC_LMC[i];
|
|
|
}
|
|
|
}
|
|
@@ -2047,7 +2047,7 @@ static int tsi148_lm_get(struct vme_lm_resource *lm,
|
|
|
* Callback will be passed the monitor triggered.
|
|
|
*/
|
|
|
static int tsi148_lm_attach(struct vme_lm_resource *lm, int monitor,
|
|
|
- void (*callback)(int))
|
|
|
+ void (*callback)(void *), void *data)
|
|
|
{
|
|
|
u32 lm_ctl, tmp;
|
|
|
struct vme_bridge *tsi148_bridge;
|
|
@@ -2077,6 +2077,7 @@ static int tsi148_lm_attach(struct vme_lm_resource *lm, int monitor,
|
|
|
|
|
|
/* Attach callback */
|
|
|
bridge->lm_callback[monitor] = callback;
|
|
|
+ bridge->lm_data[monitor] = data;
|
|
|
|
|
|
/* Enable Location Monitor interrupt */
|
|
|
tmp = ioread32be(bridge->base + TSI148_LCSR_INTEN);
|
|
@@ -2124,6 +2125,7 @@ static int tsi148_lm_detach(struct vme_lm_resource *lm, int monitor)
|
|
|
|
|
|
/* Detach callback */
|
|
|
bridge->lm_callback[monitor] = NULL;
|
|
|
+ bridge->lm_data[monitor] = NULL;
|
|
|
|
|
|
/* If all location monitors disabled, disable global Location Monitor */
|
|
|
if ((lm_en & (TSI148_LCSR_INTS_LM0S | TSI148_LCSR_INTS_LM1S |
|