chipinit
- set gmac core reg intrecvlazy with 1 shifted left by IRL_FC_SHIFT
call gmac_txflowcontrol with true
call gmac_promisc with true if in promiscuous mode
- if not in promiscuous mode
- init spftware multicats filtering list
- set gmac core reg macaddrhigh with first 4 octets of own mac address in network byte order
- set gmac core reg macaddrlow with last 2 octets of own mac address in network byte order
- if in loopback mode
call gmac_macloopback with true
- else
call gmac_macloopback with false
- set gmac core reg rxmaxlength to ETHER_MAX_LEN + 32
- if Ethernet speed is not set to auto
call gmac_speed with the given Ethernet speed
call chipphyforce with phyaddr
- else if Ethernet speed should be advertied and auto negoshiated
call chipphyadvertise with phyaddr
- call dma_ctrlflags with dma[0], DMA_CTRL_ROC | DMA_CTRL_PEN and DMA_CTRL_ROC (source: brcm/shared/hnddma.c)
- if it should be fully initialized
- for all tx queues
- call dma_txinit with dma[idx] (source: brcm/shared/hnddma.c)
- call dma_rxinit with dma[0] (source: brcm/shared/hnddma.c)
- call dma_rxfill with dma[0] (source: brcm/shared/hnddma.c)
- if interrupts should be initialized
call chipintrson
- for all tx queues
- else
- call dma_rxenable with dma[0]
call gmac_enable