@@ -218,10 +218,12 @@ static int usbhs_status_get_each_irq(struct usbhs_priv *priv,
218
218
/******************** spin lock ********************/
219
219
usbhs_lock (priv , flags );
220
220
state -> intsts0 = usbhs_read (priv , INTSTS0 );
221
- state -> intsts1 = usbhs_read (priv , INTSTS1 );
222
-
223
221
intenb0 = usbhs_read (priv , INTENB0 );
224
- intenb1 = usbhs_read (priv , INTENB1 );
222
+
223
+ if (usbhs_mod_is_host (priv )) {
224
+ state -> intsts1 = usbhs_read (priv , INTSTS1 );
225
+ intenb1 = usbhs_read (priv , INTENB1 );
226
+ }
225
227
226
228
/* mask */
227
229
if (mod ) {
@@ -275,7 +277,8 @@ static irqreturn_t usbhs_interrupt(int irq, void *data)
275
277
* - Function :: VALID bit should 0
276
278
*/
277
279
usbhs_write (priv , INTSTS0 , ~irq_state .intsts0 & INTSTS0_MAGIC );
278
- usbhs_write (priv , INTSTS1 , ~irq_state .intsts1 & INTSTS1_MAGIC );
280
+ if (usbhs_mod_is_host (priv ))
281
+ usbhs_write (priv , INTSTS1 , ~irq_state .intsts1 & INTSTS1_MAGIC );
279
282
280
283
usbhs_write (priv , BRDYSTS , ~irq_state .brdysts );
281
284
usbhs_write (priv , NRDYSTS , ~irq_state .nrdysts );
@@ -303,19 +306,20 @@ static irqreturn_t usbhs_interrupt(int irq, void *data)
303
306
if (irq_state .intsts0 & BRDY )
304
307
usbhs_mod_call (priv , irq_ready , priv , & irq_state );
305
308
306
- /* INTSTS1 */
307
- if (irq_state .intsts1 & ATTCH )
308
- usbhs_mod_call (priv , irq_attch , priv , & irq_state );
309
-
310
- if (irq_state .intsts1 & DTCH )
311
- usbhs_mod_call (priv , irq_dtch , priv , & irq_state );
309
+ if (usbhs_mod_is_host (priv )) {
310
+ /* INTSTS1 */
311
+ if (irq_state .intsts1 & ATTCH )
312
+ usbhs_mod_call (priv , irq_attch , priv , & irq_state );
312
313
313
- if (irq_state .intsts1 & SIGN )
314
- usbhs_mod_call (priv , irq_sign , priv , & irq_state );
314
+ if (irq_state .intsts1 & DTCH )
315
+ usbhs_mod_call (priv , irq_dtch , priv , & irq_state );
315
316
316
- if (irq_state .intsts1 & SACK )
317
- usbhs_mod_call (priv , irq_sack , priv , & irq_state );
317
+ if (irq_state .intsts1 & SIGN )
318
+ usbhs_mod_call (priv , irq_sign , priv , & irq_state );
318
319
320
+ if (irq_state .intsts1 & SACK )
321
+ usbhs_mod_call (priv , irq_sack , priv , & irq_state );
322
+ }
319
323
return IRQ_HANDLED ;
320
324
}
321
325
@@ -334,7 +338,8 @@ void usbhs_irq_callback_update(struct usbhs_priv *priv, struct usbhs_mod *mod)
334
338
* - update INTSTS0
335
339
*/
336
340
usbhs_write (priv , INTENB0 , 0 );
337
- usbhs_write (priv , INTENB1 , 0 );
341
+ if (usbhs_mod_is_host (priv ))
342
+ usbhs_write (priv , INTENB1 , 0 );
338
343
339
344
usbhs_write (priv , BEMPENB , 0 );
340
345
usbhs_write (priv , BRDYENB , 0 );
@@ -368,25 +373,27 @@ void usbhs_irq_callback_update(struct usbhs_priv *priv, struct usbhs_mod *mod)
368
373
intenb0 |= BRDYE ;
369
374
}
370
375
371
- /*
372
- * INTSTS1
373
- */
374
- if (mod -> irq_attch )
375
- intenb1 |= ATTCHE ;
376
+ if (usbhs_mod_is_host (priv )) {
377
+ /*
378
+ * INTSTS1
379
+ */
380
+ if (mod -> irq_attch )
381
+ intenb1 |= ATTCHE ;
376
382
377
- if (mod -> irq_dtch )
378
- intenb1 |= DTCHE ;
383
+ if (mod -> irq_dtch )
384
+ intenb1 |= DTCHE ;
379
385
380
- if (mod -> irq_sign )
381
- intenb1 |= SIGNE ;
386
+ if (mod -> irq_sign )
387
+ intenb1 |= SIGNE ;
382
388
383
- if (mod -> irq_sack )
384
- intenb1 |= SACKE ;
389
+ if (mod -> irq_sack )
390
+ intenb1 |= SACKE ;
391
+ }
385
392
}
386
393
387
394
if (intenb0 )
388
395
usbhs_write (priv , INTENB0 , intenb0 );
389
396
390
- if (intenb1 )
397
+ if (usbhs_mod_is_host ( priv ) && intenb1 )
391
398
usbhs_write (priv , INTENB1 , intenb1 );
392
399
}
0 commit comments