summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/fsl_mcdmafec.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/net/fsl_mcdmafec.c b/drivers/net/fsl_mcdmafec.c
index 0c876f3..2ef91f2 100644
--- a/drivers/net/fsl_mcdmafec.c
+++ b/drivers/net/fsl_mcdmafec.c
@@ -95,7 +95,11 @@ struct fec_info_dma fec_info[] = {
0, /* duplex and speed */
0, /* phy name */
0, /* phy name init */
+#ifdef CFG_DMA_USE_INTSRAM
+ DBUF_LENGTH, /* RX BD */
+#else
0, /* RX BD */
+#endif
0, /* TX BD */
0, /* rx Index */
0, /* tx Index */
@@ -164,7 +168,8 @@ static void dbg_fec_regs(struct eth_device *dev)
}
#endif
-static void set_fec_duplex_speed(volatile fecdma_t * fecp, bd_t * bd, int dup_spd)
+static void set_fec_duplex_speed(volatile fecdma_t * fecp, bd_t * bd,
+ int dup_spd)
{
if ((dup_spd >> 16) == FULL) {
/* Set maximum frame length */
@@ -513,6 +518,9 @@ int mcdmafec_initialize(bd_t * bis)
{
struct eth_device *dev;
int i;
+#ifdef CFG_DMA_USE_INTSRAM
+ u32 tmp = CFG_INTSRAM + 0x2000;
+#endif
for (i = 0; i < sizeof(fec_info) / sizeof(fec_info[0]); i++) {
@@ -533,6 +541,17 @@ int mcdmafec_initialize(bd_t * bis)
dev->recv = fec_recv;
/* setup Receive and Transmit buffer descriptor */
+#ifdef CFG_DMA_USE_INTSRAM
+ fec_info[i].rxbd = (int)fec_info[i].rxbd + tmp;
+ tmp = fec_info[i].rxbd;
+ fec_info[i].txbd =
+ (int)fec_info[i].txbd + tmp + (PKTBUFSRX * sizeof(cbd_t));
+ tmp = fec_info[i].txbd;
+ fec_info[i].txbuf =
+ (int)fec_info[i].txbuf + tmp +
+ (CFG_TX_ETH_BUFFER * sizeof(cbd_t));
+ tmp = fec_info[i].txbuf;
+#else
fec_info[i].rxbd =
(cbd_t *) memalign(CFG_CACHELINE_SIZE,
(PKTBUFSRX * sizeof(cbd_t)));
@@ -541,6 +560,7 @@ int mcdmafec_initialize(bd_t * bis)
(CFG_TX_ETH_BUFFER * sizeof(cbd_t)));
fec_info[i].txbuf =
(char *)memalign(CFG_CACHELINE_SIZE, DBUF_LENGTH);
+#endif
#ifdef ET_DEBUG
printf("rxbd %x txbd %x\n",