2013/2/18 Stefan Hajnoczi <stefa...@gmail.com>: > On Mon, Feb 18, 2013 at 05:44:38PM +0800, Kuo-Jung Su wrote: >> 2013/2/18 Stefan Hajnoczi <stefa...@gmail.com>: >> > On Wed, Feb 06, 2013 at 05:45:19PM +0800, Kuo-Jung Su wrote: >> >> From: Kuo-Jung Su <dant...@faraday-tech.com> >> >> >> >> The FTMAC110 is an Ethernet controller that provides AHB master capability >> >> and is in full compliance with the IEEE 802.3 10/100 Mbps specifications. >> >> Its DMA controller handles all data transfers between system memory >> >> and on-chip memories. >> >> It supports half-word data transfer for Linux. However it has a weird DMA >> >> alignment issue: >> >> >> >> (1) Tx DMA Buffer Address: >> >> 1 bytes aligned: Invalid >> >> 2 bytes aligned: O.K >> >> 4 bytes aligned: O.K >> >> >> >> (2) Rx DMA Buffer Address: >> >> 1 bytes aligned: Invalid >> >> 2 bytes aligned: O.K >> >> 4 bytes aligned: Invalid (It means 0x0, 0x4, 0x8, 0xC are invalid) >> >> >> >> Signed-off-by: Kuo-Jung Su <dant...@faraday-tech.com> >> >> --- >> >> hw/arm/Makefile.objs | 1 + >> >> hw/arm/faraday_a360.c | 10 + >> >> hw/arm/ftmac110.c | 681 >> >> +++++++++++++++++++++++++++++++++++++++++++++++++ >> >> hw/arm/ftmac110.h | 131 ++++++++++ >> >> 4 files changed, 823 insertions(+) >> >> create mode 100644 hw/arm/ftmac110.c >> >> create mode 100644 hw/arm/ftmac110.h >> > >> > Hi Kuo-Jung, >> > Is there a datasheet and/or driver programming guide for this Ethernet >> > controller? >> > >> >> The datasheet distribution is prohibited in Faraday, while it's absolutely >> O.K >> to deliver software codes along with register description. >> >> So, I can't share the datasheets with you, but I can add register description >> to the source files. Is this what you need? > > I'm asking because I'd like to confirm that the device keeps checking > for available receive descriptors via DMA reads (owner bit) and there is > no hw register access to kick the Ethernet controller? >
In a descriptor based ethernet MAC, there is usually a dedicated register to kick-off DMA engine, and of course, FTMAC110/FTGMAC100 has such register, too. They are: 1. ftgmac100: 1-1. REG_TXPD (0x18): Kick-off Tx DMA engine 1-2. REG_RXPD (0x1c): Kick-off Rx DMA engine 1-3. REG_HPTXPD (0x28): Kick-off High Priority Tx DMA engine 2. ftmac110: 2-1. REG_TXPD (0x18): Kick-off Tx DMA engine 2-2. REG_RXPD (0x1c): Kick-off Rx DMA engine Writing an arbitrary value to these registers would trigger the corresponding DMA engine. > You work at Faraday, so maybe you have the definitive answer to this :). > > Stefan -- Best wishes, Kuo-Jung Su