|
@@ -23,6 +23,7 @@
|
|
|
#define usbhsf_get_cfifo(p) (&((p)->fifo_info.cfifo))
|
|
|
#define usbhsf_get_d0fifo(p) (&((p)->fifo_info.d0fifo))
|
|
|
#define usbhsf_get_d1fifo(p) (&((p)->fifo_info.d1fifo))
|
|
|
+#define usbhsf_is_cfifo(p, f) (usbhsf_get_cfifo(p) == f)
|
|
|
|
|
|
#define usbhsf_fifo_is_busy(f) ((f)->pipe) /* see usbhs_pipe_select_fifo */
|
|
|
|
|
@@ -305,7 +306,10 @@ static int usbhsf_fifo_select(struct usbhs_pipe *pipe,
|
|
|
}
|
|
|
|
|
|
/* "base" will be used below */
|
|
|
- usbhs_write(priv, fifo->sel, base | MBW_32);
|
|
|
+ if (usbhs_get_dparam(priv, has_sudmac) && !usbhsf_is_cfifo(priv, fifo))
|
|
|
+ usbhs_write(priv, fifo->sel, base);
|
|
|
+ else
|
|
|
+ usbhs_write(priv, fifo->sel, base | MBW_32);
|
|
|
|
|
|
/* check ISEL and CURPIPE value */
|
|
|
while (timeout--) {
|