altera_tse: Add support for dedicated descriptor memory
Signed-off-by: Joachim Foerster <joachim.foerster@missinglinkelectronics.com>
This commit is contained in:
parent
29095f1a5c
commit
b962ac794a
@ -74,7 +74,15 @@ int board_eth_init(bd_t *bis)
|
||||
rc += altera_tse_initialize(0,
|
||||
CONFIG_SYS_ALTERA_TSE_MAC_BASE,
|
||||
CONFIG_SYS_ALTERA_TSE_SGDMA_RX_BASE,
|
||||
CONFIG_SYS_ALTERA_TSE_SGDMA_TX_BASE);
|
||||
CONFIG_SYS_ALTERA_TSE_SGDMA_TX_BASE,
|
||||
#if defined(CONFIG_SYS_ALTERA_TSE_SGDMA_DESC_BASE) && \
|
||||
(CONFIG_SYS_ALTERA_TSE_SGDMA_DESC_SIZE > 0)
|
||||
CONFIG_SYS_ALTERA_TSE_SGDMA_DESC_BASE,
|
||||
CONFIG_SYS_ALTERA_TSE_SGDMA_DESC_SIZE);
|
||||
#else
|
||||
0,
|
||||
0);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_ETHOC
|
||||
rc += ethoc_initialize(0, CONFIG_SYS_ETHOC_BASE);
|
||||
|
@ -882,7 +882,8 @@ static int tse_eth_init(struct eth_device *dev, bd_t * bd)
|
||||
|
||||
/* TSE init code */
|
||||
int altera_tse_initialize(u8 dev_num, int mac_base,
|
||||
int sgdma_rx_base, int sgdma_tx_base)
|
||||
int sgdma_rx_base, int sgdma_tx_base,
|
||||
u32 sgdma_desc_base, u32 sgdma_desc_size)
|
||||
{
|
||||
struct altera_tse_priv *priv;
|
||||
struct eth_device *dev;
|
||||
@ -903,8 +904,20 @@ int altera_tse_initialize(u8 dev_num, int mac_base,
|
||||
free(dev);
|
||||
return 0;
|
||||
}
|
||||
tx_desc = dma_alloc_coherent(sizeof(*tx_desc) * (3 + PKTBUFSRX),
|
||||
&dma_handle);
|
||||
if (sgdma_desc_size) {
|
||||
if (sgdma_desc_size < (sizeof(*tx_desc) * (3 + PKTBUFSRX))) {
|
||||
printf("ALTERA_TSE-%hu: "
|
||||
"descriptor memory is too small\n", dev_num);
|
||||
free(priv);
|
||||
free(dev);
|
||||
return 0;
|
||||
}
|
||||
tx_desc = (struct alt_sgdma_descriptor *)sgdma_desc_base;
|
||||
} else {
|
||||
tx_desc = dma_alloc_coherent(sizeof(*tx_desc) * (3 + PKTBUFSRX),
|
||||
&dma_handle);
|
||||
}
|
||||
|
||||
rx_desc = tx_desc + 2;
|
||||
debug("tx desc: address = 0x%x\n", (unsigned int)tx_desc);
|
||||
debug("rx desc: address = 0x%x\n", (unsigned int)rx_desc);
|
||||
|
@ -42,7 +42,8 @@ int cpu_eth_init(bd_t *bis);
|
||||
|
||||
/* Driver initialization prototypes */
|
||||
int altera_tse_initialize(u8 dev_num, int mac_base,
|
||||
int sgdma_rx_base, int sgdma_tx_base);
|
||||
int sgdma_rx_base, int sgdma_tx_base,
|
||||
u32 sgdma_desc_base, u32 sgdma_desc_size);
|
||||
int at91emac_register(bd_t *bis, unsigned long iobase);
|
||||
int au1x00_enet_initialize(bd_t*);
|
||||
int ax88180_initialize(bd_t *bis);
|
||||
|
Loading…
Reference in New Issue
Block a user