summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/bge/bge_hw.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/bge/bge_hw.h')
-rw-r--r--usr/src/uts/common/io/bge/bge_hw.h56
1 files changed, 49 insertions, 7 deletions
diff --git a/usr/src/uts/common/io/bge/bge_hw.h b/usr/src/uts/common/io/bge/bge_hw.h
index 506b97774e..7dfb86fb0d 100644
--- a/usr/src/uts/common/io/bge/bge_hw.h
+++ b/usr/src/uts/common/io/bge/bge_hw.h
@@ -109,6 +109,16 @@ extern "C" {
#define DEVICE_ID_5906 0x1712
#define DEVICE_ID_5906M 0x1713
#define DEVICE_ID_57780 0x1692
+#define DEVICE_ID_57761 0x16b0
+#define DEVICE_ID_57762 0x1682
+#define DEVICE_ID_57765 0x16b4
+#define DEVICE_ID_57766 0x1686
+#define DEVICE_ID_57781 0x16b1
+#define DEVICE_ID_57782 0x16b7
+#define DEVICE_ID_57785 0x16b5
+#define DEVICE_ID_57786 0x16b3
+#define DEVICE_ID_57791 0x16b2
+#define DEVICE_ID_57795 0x16b6
#define REVISION_ID_5700_B0 0x10
#define REVISION_ID_5700_B2 0x12
@@ -227,6 +237,23 @@ extern "C" {
(bgep->chipid.device == DEVICE_ID_5906M))
/*
+ * Even though the hardware register calls this the 57785 family, all of the
+ * BSDs call this the 57765 series, so we call it that way to make it more
+ * similar.
+ */
+#define DEVICE_57765_SERIES_CHIPSETS(bgep) \
+ ((bgep->chipid.device == DEVICE_ID_57761) || \
+ (bgep->chipid.device == DEVICE_ID_57762) || \
+ (bgep->chipid.device == DEVICE_ID_57765) || \
+ (bgep->chipid.device == DEVICE_ID_57766) || \
+ (bgep->chipid.device == DEVICE_ID_57781) || \
+ (bgep->chipid.device == DEVICE_ID_57782) || \
+ (bgep->chipid.device == DEVICE_ID_57785) || \
+ (bgep->chipid.device == DEVICE_ID_57786) || \
+ (bgep->chipid.device == DEVICE_ID_57791) || \
+ (bgep->chipid.device == DEVICE_ID_57795))
+
+/*
* Second section:
* Offsets of important registers & definitions for bits therein
*/
@@ -334,12 +361,12 @@ extern "C" {
#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_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_5715 ((uint32_t)0x9 << 28)
#define MHCR_CHIP_ASIC_REV_5906 ((uint32_t)0xc << 28)
/* (0xf << 28) touches all 5717 and 5725 series as well (OK) */
#define MHCR_CHIP_ASIC_REV_5723 ((uint32_t)0xf << 28)
@@ -348,6 +375,7 @@ extern "C" {
#define CHIP_ASIC_REV_5761 0x5761
#define CHIP_ASIC_REV_5785 0x5785
#define CHIP_ASIC_REV_57780 0x57780
+#define CHIP_ASIC_REV_57785 0x57785
#define CHIP_ASIC_REV_5717 0x5717
#define CHIP_ASIC_REV_5719 0x5719
@@ -356,6 +384,7 @@ extern "C" {
#define CHIP_ASIC_REV_PROD_ID_REG 0x000000bc
#define CHIP_ASIC_REV_PROD_ID_GEN2_REG 0x000000f4
+#define CHIP_ASIC_REV_PROD_ID_GEN15_REG 0x000000fc
#define CHIP_ASIC_REV_5717_B0 0x05717100
#define CHIP_ASIC_REV_5717_C0 0x05717200
@@ -367,6 +396,11 @@ extern "C" {
#define CHIP_ASIC_REV_5727_B0 0x05762100
/*
+ * Match any Metal Layer Revision.
+ */
+#define CHIP_ASIC_REV_57765_AX 0x577850
+
+/*
* PCI DMA read/write Control Register, in PCI config space
*
* Note that several fields previously defined here have been deleted
@@ -504,7 +538,7 @@ extern "C" {
#define PCI_CONF_DEV_CTRL_5717 0xb4
#define READ_REQ_SIZE_MASK 0x7000
#define READ_REQ_SIZE_MAX 0x5000
-#define READ_REQ_SIZE_2K 0x4000
+#define READ_REQ_SIZE_2K 0x4000
#define DEV_CTRL_NO_SNOOP 0x0800
#define DEV_CTRL_RELAXED 0x0010
@@ -1144,15 +1178,17 @@ extern "C" {
#define JUMBO_RCV_BD_REPLENISH_DEFAULT 0x00000020 /* 32 */
/*
- * CPMU registers (5717/18/19/20 only)
+ * CPMU registers (5717/18/19/20/57765 only)
*/
#define CPMU_CLCK_ORIDE_REG 0x3624
#define CPMU_CLCK_ORIDE_MAC_ORIDE_EN 0x80000000
#define CPMU_STATUS_REG 0x362c
#define CPMU_STATUS_FUNC_NUM 0x20000000
#define CPMU_STATUS_FUNC_NUM_SHIFT 29
-#define CPMU_STATUS_FUNC_NUM_5719 0xc0000000
+#define CPMU_STATUS_FUNC_NUM_5719 0xc0000000
#define CPMU_STATUS_FUNC_NUM_5719_SHIFT 30
+#define CPMU_PADRNG_CTL_REG 0x3668
+#define CPMU_PADRNG_CTL_RDIV2 0x00040000
/*
* EEE registers (5718/19/20 only)
@@ -1444,6 +1480,12 @@ extern "C" {
#define MLCR_DEFAULT_5717 (MLCR_AUTO_SEEPROM_ACCESS)
/*
+ * MLCR_AUTO_SEEPROM_ACCESS is marked reserved in the 57765 family, so we don't
+ * try to enable it like on the 5717.
+ */
+#define MLCR_DEFAULT_57765 0
+
+/*
* Serial EEPROM Data/Address Registers (auto-access mode)
*/
#define SERIAL_EEPROM_DATA_REG 0x683c
@@ -1544,7 +1586,7 @@ extern "C" {
/*
* NVM access register
- * Applicable to BCM5721,BCM5751,BCM5752,BCM5714
+ * Applicable to BCM5721,BCM5751,BCM5752,BCM5714,BCM57725
* and BCM5715 only.
*/
#define NVM_ACCESS_REG 0x7024
@@ -1731,7 +1773,7 @@ extern "C" {
/*
* Third section:
- * Hardware-defined data structures
+ * Hardware-defined data structures
*
* Note that the chip is naturally BIG-endian, so, for a big-endian
* host, the structures defined below match those described in the PRM.