Print this page
Just the 5719/5720 changes
        
*** 21,30 ****
--- 21,34 ----
  
  /*
   * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
   */
  
+ /*
+  * Copyright 2012 Nexenta Systems, Inc. All rights reserved.
+  */
+ 
  #ifndef _BGE_HW_H
  #define _BGE_HW_H
  
  #ifdef __cplusplus
  extern "C" {
*** 66,75 ****
--- 70,81 ----
  #define DEVICE_ID_5717                  0x1655
  #define DEVICE_ID_5718                  0x1656
  #define DEVICE_ID_5724                  0x165c
  #define DEVICE_ID_5705M                 0x165d
  #define DEVICE_ID_5705MA3               0x165e
+ #define DEVICE_ID_5719                  0x1657
+ #define DEVICE_ID_5720                  0x165f
  #define DEVICE_ID_5705F                 0x166e
  #define DEVICE_ID_5780                  0x166a
  #define DEVICE_ID_5782                  0x1696
  #define DEVICE_ID_5784M                 0x1698
  #define DEVICE_ID_5785                  0x1699
*** 102,111 ****
--- 108,127 ----
  #define DEVICE_ID_5906M                 0x1713
  #define DEVICE_ID_57760                 0x1690
  #define DEVICE_ID_57780                 0x1692
  #define DEVICE_ID_57788                 0x1691
  #define DEVICE_ID_57790                 0x1694
+ #define DEVICE_ID_57781                 0x16b1
+ #define DEVICE_ID_57785                 0x16b5
+ #define DEVICE_ID_57761                 0x16b0
+ #define DEVICE_ID_57765                 0x16b4
+ #define DEVICE_ID_57791                 0x16b2
+ #define DEVICE_ID_57795                 0x16b6
+ #define DEVICE_ID_57762                 0x1682
+ #define DEVICE_ID_57766                 0x1686
+ #define DEVICE_ID_57786                 0x16b3
+ #define DEVICE_ID_57782                 0x16b7
  
  #define REVISION_ID_5700_B0             0x10
  #define REVISION_ID_5700_B2             0x12
  #define REVISION_ID_5700_B3             0x13
  #define REVISION_ID_5700_C0             0x20
*** 193,202 ****
--- 209,220 ----
                  (bgep->chipid.device == DEVICE_ID_5789))
  
  #define DEVICE_5717_SERIES_CHIPSETS(bgep) \
                  (bgep->chipid.device == DEVICE_ID_5717) ||\
                  (bgep->chipid.device == DEVICE_ID_5718) ||\
+                 (bgep->chipid.device == DEVICE_ID_5719) ||\
+                 (bgep->chipid.device == DEVICE_ID_5720) ||\
                  (bgep->chipid.device == DEVICE_ID_5724)
  
  #define DEVICE_5723_SERIES_CHIPSETS(bgep) \
                  ((bgep->chipid.device == DEVICE_ID_5723) ||\
                  (bgep->chipid.device == DEVICE_ID_5761) ||\
*** 219,228 ****
--- 237,260 ----
  
  #define DEVICE_5906_SERIES_CHIPSETS(bgep) \
                  ((bgep->chipid.device == DEVICE_ID_5906) ||\
                  (bgep->chipid.device == DEVICE_ID_5906M))
  
+ 
+ #define CHIP_TYPE_5705_PLUS   (1 << 0)
+ #define CHIP_TYPE_5750_PLUS   (1 << 1)
+ #define CHIP_TYPE_5780_CLASS  (1 << 2)
+ #define CHIP_TYPE_5755_PLUS   (1 << 3)
+ #define CHIP_TYPE_57765_CLASS (1 << 4)
+ #define CHIP_TYPE_57765_PLUS  (1 << 5)
+ #define CHIP_TYPE_5717_PLUS   (1 << 6)
+ 
+ #define DEVICE_IS_57765_PLUS(bgep) \
+         (bgep->chipid.chip_type & CHIP_TYPE_57765_PLUS)
+ #define DEVICE_IS_5755_PLUS(bgep) \
+         (bgep->chipid.chip_type & CHIP_TYPE_5755_PLUS)
+ 
  /*
   * Second section:
   *      Offsets of important registers & definitions for bits therein
   */
  
*** 235,244 ****
--- 267,277 ----
  /*
   * Miscellaneous Host Control Register, in PCI config space
   */
  #define PCI_CONF_BGE_MHCR               0x68
  #define MHCR_CHIP_REV_MASK              0xffff0000
+ #define MHCR_CHIP_REV_SHIFT             16
  #define MHCR_ENABLE_TAGGED_STATUS_MODE  0x00000200
  #define MHCR_MASK_INTERRUPT_MODE        0x00000100
  #define MHCR_ENABLE_INDIRECT_ACCESS     0x00000080
  #define MHCR_ENABLE_REGISTER_WORD_SWAP  0x00000040
  #define MHCR_ENABLE_CLOCK_CONTROL_WRITE 0x00000020
*** 246,345 ****
  #define MHCR_ENABLE_ENDIAN_WORD_SWAP    0x00000008
  #define MHCR_ENABLE_ENDIAN_BYTE_SWAP    0x00000004
  #define MHCR_MASK_PCI_INT_OUTPUT        0x00000002
  #define MHCR_CLEAR_INTERRUPT_INTA       0x00000001
  
! #define MHCR_CHIP_REV_5700_B0           0x71000000
! #define MHCR_CHIP_REV_5700_B2           0x71020000
! #define MHCR_CHIP_REV_5700_B3           0x71030000
! #define MHCR_CHIP_REV_5700_C0           0x72000000
! #define MHCR_CHIP_REV_5700_C1           0x72010000
! #define MHCR_CHIP_REV_5700_C2           0x72020000
  
! #define MHCR_CHIP_REV_5701_A0           0x00000000
! #define MHCR_CHIP_REV_5701_A2           0x00020000
! #define MHCR_CHIP_REV_5701_A3           0x00030000
! #define MHCR_CHIP_REV_5701_A5           0x01050000
  
- #define MHCR_CHIP_REV_5702_A0           0x10000000
- #define MHCR_CHIP_REV_5702_A1           0x10010000
- #define MHCR_CHIP_REV_5702_A2           0x10020000
- 
- #define MHCR_CHIP_REV_5703_A0           0x10000000
- #define MHCR_CHIP_REV_5703_A1           0x10010000
- #define MHCR_CHIP_REV_5703_A2           0x10020000
- #define MHCR_CHIP_REV_5703_B0           0x11000000
- #define MHCR_CHIP_REV_5703_B1           0x11010000
- 
- #define MHCR_CHIP_REV_5704_A0           0x20000000
- #define MHCR_CHIP_REV_5704_A1           0x20010000
- #define MHCR_CHIP_REV_5704_A2           0x20020000
- #define MHCR_CHIP_REV_5704_A3           0x20030000
- #define MHCR_CHIP_REV_5704_B0           0x21000000
- 
- #define MHCR_CHIP_REV_5705_A0           0x30000000
- #define MHCR_CHIP_REV_5705_A1           0x30010000
- #define MHCR_CHIP_REV_5705_A2           0x30020000
- #define MHCR_CHIP_REV_5705_A3           0x30030000
- #define MHCR_CHIP_REV_5705_A5           0x30050000
- 
- #define MHCR_CHIP_REV_5782_A0           0x30030000
- #define MHCR_CHIP_REV_5782_A1           0x30030088
- 
- #define MHCR_CHIP_REV_5788_A1           0x30050000
- 
- #define MHCR_CHIP_REV_5751_A0           0x40000000
- #define MHCR_CHIP_REV_5751_A1           0x40010000
- 
- #define MHCR_CHIP_REV_5721_A0           0x41000000
- #define MHCR_CHIP_REV_5721_A1           0x41010000
- 
- #define MHCR_CHIP_REV_5714_A0           0x50000000
- #define MHCR_CHIP_REV_5714_A1           0x90010000
- 
- #define MHCR_CHIP_REV_5715_A0           0x50000000
- #define MHCR_CHIP_REV_5715_A1           0x90010000
- 
- #define MHCR_CHIP_REV_5715S_A0          0x50000000
- #define MHCR_CHIP_REV_5715S_A1          0x90010000
- 
- #define MHCR_CHIP_REV_5754_A0           0xb0000000
- #define MHCR_CHIP_REV_5754_A1           0xb0010000
- 
- #define MHCR_CHIP_REV_5787_A0           0xb0000000
- #define MHCR_CHIP_REV_5787_A1           0xb0010000
- #define MHCR_CHIP_REV_5787_A2           0xb0020000
- 
- #define MHCR_CHIP_REV_5755_A0           0xa0000000
- #define MHCR_CHIP_REV_5755_A1           0xa0010000
- 
- #define MHCR_CHIP_REV_5906_A0           0xc0000000
- #define MHCR_CHIP_REV_5906_A1           0xc0010000
- #define MHCR_CHIP_REV_5906_A2           0xc0020000
- 
- #define MHCR_CHIP_REV_5723_A0           0xf0000000
- #define MHCR_CHIP_REV_5723_A1           0xf0010000
- #define MHCR_CHIP_REV_5723_A2           0xf0020000
- #define MHCR_CHIP_REV_5723_B0           0xf1000000
- 
- #define MHCR_CHIP_ASIC_REV(ChipRevId)   ((ChipRevId) & 0xf0000000)
- #define MHCR_CHIP_ASIC_REV_5700         (0x7 << 28)
- #define MHCR_CHIP_ASIC_REV_5701         (0x0 << 28)
- #define MHCR_CHIP_ASIC_REV_5703         (0x1 << 28)
- #define MHCR_CHIP_ASIC_REV_5704         (0x2 << 28)
- #define MHCR_CHIP_ASIC_REV_5705         (0x3 << 28)
- #define MHCR_CHIP_ASIC_REV_5721_5751    (0x4 << 28)
- #define MHCR_CHIP_ASIC_REV_5714         (0x5 << 28)
- #define MHCR_CHIP_ASIC_REV_5752         (0x6 << 28)
- #define MHCR_CHIP_ASIC_REV_5754         (0xb << 28)
- #define MHCR_CHIP_ASIC_REV_5787         ((uint32_t)0xb << 28)
- #define MHCR_CHIP_ASIC_REV_5755         ((uint32_t)0xa << 28)
- #define MHCR_CHIP_ASIC_REV_5715         ((uint32_t)0x9 << 28)
- #define MHCR_CHIP_ASIC_REV_5906         ((uint32_t)0xc << 28)
- #define MHCR_CHIP_ASIC_REV_5723         ((uint32_t)0xf << 28)
- 
- 
  /*
   * PCI DMA read/write Control Register, in PCI config space
   *
   * Note that several fields previously defined here have been deleted
   * as they are not implemented in the 5703/4.
--- 279,321 ----
  #define MHCR_ENABLE_ENDIAN_WORD_SWAP    0x00000008
  #define MHCR_ENABLE_ENDIAN_BYTE_SWAP    0x00000004
  #define MHCR_MASK_PCI_INT_OUTPUT        0x00000002
  #define MHCR_CLEAR_INTERRUPT_INTA       0x00000001
  
! #define MHCR_CHIP_REV_5703_A0           0x1000
! #define MHCR_CHIP_REV_5704_A0           0x2000
! #define MHCR_CHIP_REV_5751_A0           0x4000
! #define MHCR_CHIP_REV_5721_A0           0x4100
! #define MHCR_CHIP_REV_5755_A0           0xa000
! #define MHCR_CHIP_REV_5755_A1           0xa001
! #define MHCR_CHIP_REV_5719_A0           0x05719000
! #define MHCR_CHIP_REV_5720_A0           0x05720000
  
! #define MHCR_CHIP_ASIC_REV(ChipRevId)   ((ChipRevId) >> 12)
! #define MHCR_CHIP_ASIC_REV_5700         0x07
! #define MHCR_CHIP_ASIC_REV_5701         0x00
! #define MHCR_CHIP_ASIC_REV_5703         0x01
! #define MHCR_CHIP_ASIC_REV_5704         0x02
! #define MHCR_CHIP_ASIC_REV_5705         0x03
! #define MHCR_CHIP_ASIC_REV_5750         0x04
! #define MHCR_CHIP_ASIC_REV_5752         0x06
! #define MHCR_CHIP_ASIC_REV_5780         0x08
! #define MHCR_CHIP_ASIC_REV_5714         0x09
! #define MHCR_CHIP_ASIC_REV_5755         0x0a
! #define MHCR_CHIP_ASIC_REV_5787         0x0b
! #define MHCR_CHIP_ASIC_REV_5906         0x0c
! #define MHCR_CHIP_ASIC_REV_PRODID       0x0f
! #define MHCR_CHIP_ASIC_REV_5784         0x5784
! #define MHCR_CHIP_ASIC_REV_5761         0x5761
! #define MHCR_CHIP_ASIC_REV_5785         0x5785
! #define MHCR_CHIP_ASIC_REV_5717         0x5717
! #define MHCR_CHIP_ASIC_REV_5719         0x5719
! #define MHCR_CHIP_ASIC_REV_5720         0x5720
! #define MHCR_CHIP_ASIC_REV_57780        0x57780
! #define MHCR_CHIP_ASIC_REV_57765        0x57785
! #define MHCR_CHIP_ASIC_REV_57766        0x57766
  
  /*
   * PCI DMA read/write Control Register, in PCI config space
   *
   * Note that several fields previously defined here have been deleted
   * as they are not implemented in the 5703/4.
*** 476,485 ****
--- 452,465 ----
  
  #define PCI_CONF_DEV_STUS               0xda
  #define PCI_CONF_DEV_STUS_5723          0xd6
  #define DEVICE_ERROR_STUS               0xf
  
+ #define PCI_CONF_PRODID_ASICREV         0x000000bc
+ #define PCI_CONF_GEN2_PRODID_ASICREV    0x000000f4
+ #define PCI_CONF_GEN15_PRODID_ASICREV   0x000000fc
+ 
  #define NIC_MEM_WINDOW_OFFSET           0x00008000      /* 32k  */
  
  /*
   * Where to find things in NIC-local (on-chip) memory
   */
*** 551,560 ****
--- 531,541 ----
  #define MBUF_CLUSTER_FREE_MODE_REG      0x3800
  #define HOST_COALESCE_MODE_REG          0x3c00
  #define MEMORY_ARBITER_MODE_REG         0x4000
  #define BUFFER_MANAGER_MODE_REG         0x4400
  #define READ_DMA_MODE_REG               0x4800
+ #define READ_DMA_RESERVED_CONTROL_REG   0x4900
  #define WRITE_DMA_MODE_REG              0x4c00
  #define DMA_COMPLETION_MODE_REG         0x6400
  
  /*
   * Other bits in some of the above state machine control registers
*** 562,571 ****
--- 543,555 ----
  
  /*
   * Transmit MAC Mode Register
   * (TRANSMIT_MAC_MODE_REG, 0x045c)
   */
+ #define TRANSMIT_MODE_HTX2B_CNT_DN_MODE 0x00800000
+ #define TRANSMIT_MODE_HTX2B_JMB_FRM_LEN 0x00400000
+ #define TRANSMIT_MODE_MBUF_LOCKUP_FIX   0x00000100
  #define TRANSMIT_MODE_LONG_PAUSE        0x00000040
  #define TRANSMIT_MODE_BIG_BACKOFF       0x00000020
  #define TRANSMIT_MODE_FLOW_CONTROL      0x00000010
  
  /*
*** 629,644 ****
   * In addition to the usual error-attn common to most state machines
   * this register has a separate bit for attn on running-low-on-mbufs
   */
  #define BUFF_MGR_TEST_MODE              0x00000008
  #define BUFF_MGR_MBUF_LOW_ATTN_ENABLE   0x00000010
  
  #define BUFF_MGR_ALL_ATTN_BITS          0x00000014
  
  /*
   * Read and Write DMA Mode Registers (READ_DMA_MODE_REG,
!  * 0x4800 and WRITE_DMA_MODE_REG, 0x4c00)
   *
   * These registers each contain a 2-bit priority field, which controls
   * the relative priority of that type of DMA (read vs. write vs. MSI),
   * and a set of bits that control whether ATTN is asserted on each
   * particular condition
--- 613,630 ----
   * In addition to the usual error-attn common to most state machines
   * this register has a separate bit for attn on running-low-on-mbufs
   */
  #define BUFF_MGR_TEST_MODE              0x00000008
  #define BUFF_MGR_MBUF_LOW_ATTN_ENABLE   0x00000010
+ #define BUFF_MGR_NO_TX_UNDERRUN         0x80000000
  
  #define BUFF_MGR_ALL_ATTN_BITS          0x00000014
  
  /*
   * Read and Write DMA Mode Registers (READ_DMA_MODE_REG,
!  * 0x4800, READ_DMA_RESERVED_CONTROL_REG, 0x4900,
!  * WRITE_DMA_MODE_REG, 0x4c00)
   *
   * These registers each contain a 2-bit priority field, which controls
   * the relative priority of that type of DMA (read vs. write vs. MSI),
   * and a set of bits that control whether ATTN is asserted on each
   * particular condition
*** 645,663 ****
--- 631,662 ----
   */
  #define DMA_PRIORITY_MASK               0xc0000000
  #define DMA_PRIORITY_SHIFT              30
  #define ALL_DMA_ATTN_BITS               0x000003fc
  
+ #define RDMA_RSRVCTRL_FIFO_OFLW_FIX      0x00000004
+ #define RDMA_RSRVCTRL_FIFO_LWM_1_5K      0x00000c00
+ #define RDMA_RSRVCTRL_FIFO_LWM_MASK      0x00000ff0
+ #define RDMA_RSRVCTRL_FIFO_HWM_1_5K      0x000c0000
+ #define RDMA_RSRVCTRL_FIFO_HWM_MASK      0x000ff000
+ #define RDMA_RSRVCTRL_TXMRGN_320B        0x28000000
+ #define RDMA_RSRVCTRL_TXMRGN_MASK        0xffe00000
+ 
+ 
  /*
   * BCM5755, 5755M, 5906, 5906M only
   * 1 - Enable Fix. Device will send out the status block before
   *     the interrupt message
   * 0 - Disable fix. Device will send out the interrupt message
   *     before the status block
   */
  #define DMA_STATUS_TAG_FIX_CQ12384      0x20000000
  
+ /* 5720 only */
+ #define DMA_H2BNC_VLAN_DET              0x20000000
+ 
+ 
  /*
   * End of state machine control register definitions
   */
  
  
*** 791,800 ****
--- 790,801 ----
  #define MAC_TX_RANDOM_BACKOFF_REG       0x0438
  #define MAC_RX_MTU_SIZE_REG             0x043c
  #define MAC_RX_MTU_DEFAULT              0x000005f2      /* 1522 */
  #define MAC_TX_LENGTHS_REG              0x0464
  #define MAC_TX_LENGTHS_DEFAULT          0x00002620
+ #define MAC_TX_LENGTHS_JMB_FRM_LEN_MSK   0x00ff0000
+ #define MAC_TX_LENGTHS_CNT_DWN_VAL_MSK   0xff000000
  
  /*
   * MII access registers
   */
  #define MI_COMMS_REG                    0x044c
*** 1079,1093 ****
  #define STD_RCV_BD_REPLENISH_DEFAULT    0x00000002      /* 2    */
  #define JUMBO_RCV_BD_REPLENISH_REG      0x2c1c
  #define JUMBO_RCV_BD_REPLENISH_DEFAULT  0x00000020      /* 32   */
  
  /*
!  * CPMU registers (5717/5718 only)
   */
  #define CPMU_STATUS_REG 0x362c
! #define CPMU_STATUS_FUN_NUM     0x20000000
  
  /*
   * Host Coalescing Engine Control Registers
   */
  #define RCV_COALESCE_TICKS_REG          0x3c08
  #define RCV_COALESCE_TICKS_DEFAULT      0x00000096      /* 150  */
--- 1080,1100 ----
  #define STD_RCV_BD_REPLENISH_DEFAULT    0x00000002      /* 2    */
  #define JUMBO_RCV_BD_REPLENISH_REG      0x2c1c
  #define JUMBO_RCV_BD_REPLENISH_DEFAULT  0x00000020      /* 32   */
  
  /*
!  * CPMU registers (5717/5718/5719/5720 only)
   */
+ #define CPMU_CLCK_ORIDE_REG             0x3624
+ #define CPMU_CLCK_ORIDE_MAC_ORIDE_EN    0x80000000
+ 
  #define CPMU_STATUS_REG                 0x362c
! #define CPMU_STATUS_FUN_NUM_5717        0x20000000
! #define CPMU_STATUS_FUN_NUM_5719        0xc0000000
! #define CPMU_STATUS_FUN_NUM_5719_SHIFT  30
  
+ 
  /*
   * Host Coalescing Engine Control Registers
   */
  #define RCV_COALESCE_TICKS_REG          0x3c08
  #define RCV_COALESCE_TICKS_DEFAULT      0x00000096      /* 150  */
*** 1201,1210 ****
--- 1208,1219 ----
  #define VCPU_DRV_RESET                  0x08000000
  
  #define VCPU_EXT_CTL                    0x6890
  #define VCPU_EXT_CTL_HALF               0x00400000
  
+ #define GRC_FASTBOOT_PC                 0x6894
+ 
  #define FTQ_RESET_REG                   0x5c00
  
  #define MSI_MODE_REG                    0x6000
  #define MSI_PRI_HIGHEST                 0xc0000000
  #define MSI_MSI_ENABLE                  0x00000002
*** 1220,1237 ****
--- 1229,1250 ----
  #define MODE_INT_ON_MAC_ATTN            0x04000000
  #define MODE_INT_ON_RXRISC_ATTN         0x02000000
  #define MODE_INT_ON_TXRISC_ATTN         0x01000000
  #define MODE_RECV_NO_PSEUDO_HDR_CSUM    0x00800000
  #define MODE_SEND_NO_PSEUDO_HDR_CSUM    0x00100000
+ #define MODE_HTX2B_ENABLE               0x00040000
  #define MODE_HOST_SEND_BDS              0x00020000
  #define MODE_HOST_STACK_UP              0x00010000
  #define MODE_FORCE_32_BIT_PCI           0x00008000
+ #define MODE_B2HRX_ENABLE               0x00008000
  #define MODE_NO_INT_ON_RECV             0x00004000
  #define MODE_NO_INT_ON_SEND             0x00002000
  #define MODE_ALLOW_BAD_FRAMES           0x00000800
  #define MODE_NO_CRC                     0x00000400
  #define MODE_NO_FRAME_CRACKING          0x00000200
+ #define MODE_WORD_SWAP_B2HRX_DATA       0x00000080
+ #define MODE_BYTE_SWAP_B2HRX_DATA       0x00000040
  #define MODE_WORD_SWAP_FRAME            0x00000020
  #define MODE_BYTE_SWAP_FRAME            0x00000010
  #define MODE_WORD_SWAP_NONFRAME         0x00000004
  #define MODE_BYTE_SWAP_NONFRAME         0x00000002
  #define MODE_UPDATE_ON_COAL_ONLY        0x00000001
*** 1577,1586 ****
--- 1590,1600 ----
  #define BGE_STD_SLOTS_MAX               512
  #define BGE_JUMBO_SLOTS_MAX             256
  #define BGE_MINI_SLOTS_MAX              1024
  #define BGE_RECV_SLOTS_MAX              2048
  #define BGE_RECV_SLOTS_5705             512
+ #define BGE_RECV_SLOTS_5717             1024
  #define BGE_RECV_SLOTS_5782             512
  #define BGE_RECV_SLOTS_5721             512
  
  /*
   * Hardware-defined Ring Control Block