bcm63xx_enet: add support Broadcom BCM6345 Ethernet
authorFlorian Fainelli <florian@openwrt.org>
Wed, 12 Jun 2013 19:53:05 +0000 (20:53 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 14 Jun 2013 00:22:08 +0000 (17:22 -0700)
commit3dc6475c0c9e55ac7f053ad6b8b398e779954545
treeb0dfa7d618905408e6ed1fe369e263c9fc02170c
parentca4ec90b31d1ecf01087c607933cf792057bc8bf
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>
arch/mips/bcm63xx/dev-enet.c
arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h
arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h
arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h
drivers/net/ethernet/broadcom/bcm63xx_enet.c
drivers/net/ethernet/broadcom/bcm63xx_enet.h