bcm4908_enet.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. #ifndef __BCM4908_ENET_H
  3. #define __BCM4908_ENET_H
  4. #define ENET_CONTROL 0x000
  5. #define ENET_MIB_CTRL 0x004
  6. #define ENET_MIB_CTRL_CLR_MIB 0x00000001
  7. #define ENET_RX_ERR_MASK 0x008
  8. #define ENET_MIB_MAX_PKT_SIZE 0x00C
  9. #define ENET_MIB_MAX_PKT_SIZE_VAL 0x00003fff
  10. #define ENET_DIAG_OUT 0x01c
  11. #define ENET_ENABLE_DROP_PKT 0x020
  12. #define ENET_IRQ_ENABLE 0x024
  13. #define ENET_IRQ_ENABLE_OVFL 0x00000001
  14. #define ENET_GMAC_STATUS 0x028
  15. #define ENET_GMAC_STATUS_ETH_SPEED_MASK 0x00000003
  16. #define ENET_GMAC_STATUS_ETH_SPEED_10 0x00000000
  17. #define ENET_GMAC_STATUS_ETH_SPEED_100 0x00000001
  18. #define ENET_GMAC_STATUS_ETH_SPEED_1000 0x00000002
  19. #define ENET_GMAC_STATUS_HD 0x00000004
  20. #define ENET_GMAC_STATUS_AUTO_CFG_EN 0x00000008
  21. #define ENET_GMAC_STATUS_LINK_UP 0x00000010
  22. #define ENET_IRQ_STATUS 0x02c
  23. #define ENET_IRQ_STATUS_OVFL 0x00000001
  24. #define ENET_OVERFLOW_COUNTER 0x030
  25. #define ENET_FLUSH 0x034
  26. #define ENET_FLUSH_RXFIFO_FLUSH 0x00000001
  27. #define ENET_FLUSH_TXFIFO_FLUSH 0x00000002
  28. #define ENET_RSV_SELECT 0x038
  29. #define ENET_BP_FORCE 0x03c
  30. #define ENET_BP_FORCE_FORCE 0x00000001
  31. #define ENET_DMA_RX_OK_TO_SEND_COUNT 0x040
  32. #define ENET_DMA_RX_OK_TO_SEND_COUNT_VAL 0x0000000f
  33. #define ENET_TX_CRC_CTRL 0x044
  34. #define ENET_MIB 0x200
  35. #define ENET_UNIMAC 0x400
  36. #define ENET_DMA 0x800
  37. #define ENET_DMA_CONTROLLER_CFG 0x800
  38. #define ENET_DMA_CTRL_CFG_MASTER_EN 0x00000001
  39. #define ENET_DMA_CTRL_CFG_FLOWC_CH1_EN 0x00000002
  40. #define ENET_DMA_CTRL_CFG_FLOWC_CH3_EN 0x00000004
  41. #define ENET_DMA_FLOWCTL_CH1_THRESH_LO 0x804
  42. #define ENET_DMA_FLOWCTL_CH1_THRESH_HI 0x808
  43. #define ENET_DMA_FLOWCTL_CH1_ALLOC 0x80c
  44. #define ENET_DMA_FLOWCTL_CH1_ALLOC_FORCE 0x80000000
  45. #define ENET_DMA_FLOWCTL_CH3_THRESH_LO 0x810
  46. #define ENET_DMA_FLOWCTL_CH3_THRESH_HI 0x814
  47. #define ENET_DMA_FLOWCTL_CH3_ALLOC 0x818
  48. #define ENET_DMA_FLOWCTL_CH5_THRESH_LO 0x81C
  49. #define ENET_DMA_FLOWCTL_CH5_THRESH_HI 0x820
  50. #define ENET_DMA_FLOWCTL_CH5_ALLOC 0x824
  51. #define ENET_DMA_FLOWCTL_CH7_THRESH_LO 0x828
  52. #define ENET_DMA_FLOWCTL_CH7_THRESH_HI 0x82C
  53. #define ENET_DMA_FLOWCTL_CH7_ALLOC 0x830
  54. #define ENET_DMA_CTRL_CHANNEL_RESET 0x834
  55. #define ENET_DMA_CTRL_CHANNEL_DEBUG 0x838
  56. #define ENET_DMA_CTRL_GLOBAL_INTERRUPT_STATUS 0x840
  57. #define ENET_DMA_CTRL_GLOBAL_INTERRUPT_MASK 0x844
  58. #define ENET_DMA_CH0_CFG 0xa00 /* RX */
  59. #define ENET_DMA_CH1_CFG 0xa10 /* TX */
  60. #define ENET_DMA_CH0_STATE_RAM 0xc00 /* RX */
  61. #define ENET_DMA_CH1_STATE_RAM 0xc10 /* TX */
  62. #define ENET_DMA_CH_CFG 0x00 /* assorted configuration */
  63. #define ENET_DMA_CH_CFG_ENABLE 0x00000001 /* set to enable channel */
  64. #define ENET_DMA_CH_CFG_PKT_HALT 0x00000002 /* idle after an EOP flag is detected */
  65. #define ENET_DMA_CH_CFG_BURST_HALT 0x00000004 /* idle after finish current memory burst */
  66. #define ENET_DMA_CH_CFG_INT_STAT 0x04 /* interrupts control and status */
  67. #define ENET_DMA_CH_CFG_INT_MASK 0x08 /* interrupts mask */
  68. #define ENET_DMA_CH_CFG_INT_BUFF_DONE 0x00000001 /* buffer done */
  69. #define ENET_DMA_CH_CFG_INT_DONE 0x00000002 /* packet xfer complete */
  70. #define ENET_DMA_CH_CFG_INT_NO_DESC 0x00000004 /* no valid descriptors */
  71. #define ENET_DMA_CH_CFG_INT_RX_ERROR 0x00000008 /* rxdma detect client protocol error */
  72. #define ENET_DMA_CH_CFG_MAX_BURST 0x0c /* max burst length permitted */
  73. #define ENET_DMA_CH_CFG_MAX_BURST_DESCSIZE_SEL 0x00040000 /* DMA Descriptor Size Selection */
  74. #define ENET_DMA_CH_CFG_SIZE 0x10
  75. #define ENET_DMA_CH_STATE_RAM_BASE_DESC_PTR 0x00 /* descriptor ring start address */
  76. #define ENET_DMA_CH_STATE_RAM_STATE_DATA 0x04 /* state/bytes done/ring offset */
  77. #define ENET_DMA_CH_STATE_RAM_DESC_LEN_STATUS 0x08 /* buffer descriptor status and len */
  78. #define ENET_DMA_CH_STATE_RAM_DESC_BASE_BUFPTR 0x0c /* buffer descrpitor current processing */
  79. #define ENET_DMA_CH_STATE_RAM_SIZE 0x10
  80. #define DMA_CTL_STATUS_APPEND_CRC 0x00000100
  81. #define DMA_CTL_STATUS_APPEND_BRCM_TAG 0x00000200
  82. #define DMA_CTL_STATUS_PRIO 0x00000C00 /* Prio for Tx */
  83. #define DMA_CTL_STATUS_WRAP 0x00001000 /* */
  84. #define DMA_CTL_STATUS_SOP 0x00002000 /* first buffer in packet */
  85. #define DMA_CTL_STATUS_EOP 0x00004000 /* last buffer in packet */
  86. #define DMA_CTL_STATUS_OWN 0x00008000 /* cleared by DMA, set by SW */
  87. #define DMA_CTL_LEN_DESC_BUFLENGTH 0x0fff0000
  88. #define DMA_CTL_LEN_DESC_BUFLENGTH_SHIFT 16
  89. #define DMA_CTL_LEN_DESC_MULTICAST 0x40000000
  90. #define DMA_CTL_LEN_DESC_USEFPM 0x80000000
  91. #endif