|
@@ -64,6 +64,7 @@
|
|
|
#define CPDMA_DESC_TO_PORT_EN BIT(20)
|
|
|
#define CPDMA_TO_PORT_SHIFT 16
|
|
|
#define CPDMA_DESC_PORT_MASK (BIT(18) | BIT(17) | BIT(16))
|
|
|
+#define CPDMA_DESC_CRC_LEN 4
|
|
|
|
|
|
#define CPDMA_TEARDOWN_VALUE 0xfffffffc
|
|
|
|
|
@@ -798,6 +799,10 @@ static int __cpdma_chan_process(struct cpdma_chan *chan)
|
|
|
status = -EBUSY;
|
|
|
goto unlock_ret;
|
|
|
}
|
|
|
+
|
|
|
+ if (status & CPDMA_DESC_PASS_CRC)
|
|
|
+ outlen -= CPDMA_DESC_CRC_LEN;
|
|
|
+
|
|
|
status = status & (CPDMA_DESC_EOQ | CPDMA_DESC_TD_COMPLETE |
|
|
|
CPDMA_DESC_PORT_MASK);
|
|
|
|