1. set gmac core reg intrecvlazy with 1 shifted left by IRL_FC_SHIFT
  2. call gmac_txflowcontrol with true

  3. call gmac_promisc with true if in promiscuous mode

  4. if not in promiscuous mode
    1. init spftware multicats filtering list
  5. set gmac core reg macaddrhigh with first 4 octets of own mac address in network byte order
  6. set gmac core reg macaddrlow with last 2 octets of own mac address in network byte order
  7. if in loopback mode
    1. call gmac_macloopback with true

  8. else
    1. call gmac_macloopback with false

  9. set gmac core reg rxmaxlength to ETHER_MAX_LEN + 32
  10. if Ethernet speed is not set to auto
    1. call gmac_speed with the given Ethernet speed

    2. call chipphyforce with phyaddr

  11. else if Ethernet speed should be advertied and auto negoshiated
    1. call chipphyadvertise with phyaddr

  12. call dma_ctrlflags with dma[0], DMA_CTRL_ROC | DMA_CTRL_PEN and DMA_CTRL_ROC (source: brcm/shared/hnddma.c)
  13. if it should be fully initialized
    1. for all tx queues
      1. call dma_txinit with dma[idx] (source: brcm/shared/hnddma.c)
    2. call dma_rxinit with dma[0] (source: brcm/shared/hnddma.c)
    3. call dma_rxfill with dma[0] (source: brcm/shared/hnddma.c)
    4. if interrupts should be initialized
      1. call chipintrson

  14. else
    1. call dma_rxenable with dma[0]
  15. call gmac_enable

Exported/Archived from the wiki to HTML on 2016-10-27