|
@@ -287,6 +287,10 @@ struct cpsw_ss_regs {
|
|
|
/* Bit definitions for the CPSW1_TS_SEQ_LTYPE register */
|
|
|
#define CPSW_V1_SEQ_ID_OFS_SHIFT 16
|
|
|
|
|
|
+#define CPSW_MAX_BLKS_TX 15
|
|
|
+#define CPSW_MAX_BLKS_TX_SHIFT 4
|
|
|
+#define CPSW_MAX_BLKS_RX 5
|
|
|
+
|
|
|
struct cpsw_host_regs {
|
|
|
u32 max_blks;
|
|
|
u32 blk_cnt;
|
|
@@ -1278,11 +1282,23 @@ static void cpsw_slave_open(struct cpsw_slave *slave, struct cpsw_priv *priv)
|
|
|
switch (cpsw->version) {
|
|
|
case CPSW_VERSION_1:
|
|
|
slave_write(slave, TX_PRIORITY_MAPPING, CPSW1_TX_PRI_MAP);
|
|
|
+ /* Increase RX FIFO size to 5 for supporting fullduplex
|
|
|
+ * flow control mode
|
|
|
+ */
|
|
|
+ slave_write(slave,
|
|
|
+ (CPSW_MAX_BLKS_TX << CPSW_MAX_BLKS_TX_SHIFT) |
|
|
|
+ CPSW_MAX_BLKS_RX, CPSW1_MAX_BLKS);
|
|
|
break;
|
|
|
case CPSW_VERSION_2:
|
|
|
case CPSW_VERSION_3:
|
|
|
case CPSW_VERSION_4:
|
|
|
slave_write(slave, TX_PRIORITY_MAPPING, CPSW2_TX_PRI_MAP);
|
|
|
+ /* Increase RX FIFO size to 5 for supporting fullduplex
|
|
|
+ * flow control mode
|
|
|
+ */
|
|
|
+ slave_write(slave,
|
|
|
+ (CPSW_MAX_BLKS_TX << CPSW_MAX_BLKS_TX_SHIFT) |
|
|
|
+ CPSW_MAX_BLKS_RX, CPSW2_MAX_BLKS);
|
|
|
break;
|
|
|
}
|
|
|
|