mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
bcm63xx_enet: add support Broadcom BCM6345 Ethernet
This patch adds support for the Broadcom BCM6345 SoC Ethernet. BCM6345
has a slightly different and older DMA engine which requires the
following modifications:
- the width of the DMA channels on BCM6345 is 64 bytes vs 16 bytes,
which means that the helpers enet_dma{c,s} need to account for this
channel width and we can no longer use macros
- BCM6345 DMA engine does not have any internal SRAM for transfering
buffers
- BCM6345 buffer allocation and flow control is not per-channel but
global (done in RSET_ENETDMA)
- the DMA engine bits are right-shifted by 3 compared to other DMA
generations
- the DMA enable/interrupt masks are a little different (we need to
enabled more bits for 6345)
- some register have the same meaning but are offsetted in the ENET_DMAC
space so a lookup table is required to return the proper offset
The MAC itself is identical and requires no modifications to work.
Signed-off-by: Florian Fainelli <florian@openwrt.org>
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
ca4ec90b31
commit
3dc6475c0c
@@ -339,6 +339,21 @@ struct bcm_enet_priv {
|
||||
/* used to poll switch port state */
|
||||
struct timer_list swphy_poll;
|
||||
spinlock_t enetsw_mdio_lock;
|
||||
|
||||
/* dma channel enable mask */
|
||||
u32 dma_chan_en_mask;
|
||||
|
||||
/* dma channel interrupt mask */
|
||||
u32 dma_chan_int_mask;
|
||||
|
||||
/* DMA engine has internal SRAM */
|
||||
bool dma_has_sram;
|
||||
|
||||
/* dma channel width */
|
||||
unsigned int dma_chan_width;
|
||||
|
||||
/* dma descriptor shift value */
|
||||
unsigned int dma_desc_shift;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user