Mercurial > illumos > illumos-gate
changeset 4330:dfd7c5e23fa0
6551951 BGE need to support NetXtreme 5755
author | ml149210 |
---|---|
date | Sat, 26 May 2007 05:29:40 -0700 |
parents | 35ac1e4ee309 |
children | f784727d3d6a |
files | usr/src/pkgdefs/SUNWbge/postinstall usr/src/uts/common/io/bge/bge_chip2.c usr/src/uts/common/io/bge/bge_hw.h usr/src/uts/common/io/bge/bge_main2.c |
diffstat | 4 files changed, 50 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/pkgdefs/SUNWbge/postinstall Fri May 25 13:25:30 2007 -0700 +++ b/usr/src/pkgdefs/SUNWbge/postinstall Sat May 26 05:29:40 2007 -0700 @@ -161,6 +161,7 @@ "pci14e4,1678" "pci14e4,1679" "pciex14e4,167a" + "pciex14e4,167b" "pci14e4,167d" "pciex14e4,169d"' \ -b "$BASEDIR" bge @@ -185,6 +186,7 @@ "pci14e4,1677" "pci14e4,1678" "pciex14e4,167a" + "pciex14e4,167b" "pci14e4,167d"' \ -b "$BASEDIR" bge fi
--- a/usr/src/uts/common/io/bge/bge_chip2.c Fri May 25 13:25:30 2007 -0700 +++ b/usr/src/uts/common/io/bge/bge_chip2.c Sat May 26 05:29:40 2007 -0700 @@ -1856,6 +1856,7 @@ case DEVICE_ID_5752: case DEVICE_ID_5752M: case DEVICE_ID_5754: + case DEVICE_ID_5755: case DEVICE_ID_5721: case DEVICE_ID_5714C: case DEVICE_ID_5714S: @@ -2047,6 +2048,24 @@ dev_ok = B_TRUE; break; + case DEVICE_ID_5755: + cidp->chip_label = 5755; + cidp->pci_type = BGE_PCI_E; + cidp->mbuf_lo_water_rdma = RDMA_MBUF_LOWAT_5705; + cidp->mbuf_lo_water_rmac = MAC_RX_MBUF_LOWAT_5705; + cidp->mbuf_hi_water = MBUF_HIWAT_5705; + cidp->mbuf_base = bge_mbuf_pool_base_5705; + cidp->mbuf_length = bge_mbuf_pool_len_5705; + cidp->recv_slots = BGE_RECV_SLOTS_5705; + cidp->bge_mlcr_default |= MLCR_MISC_PINS_OUTPUT_ENABLE_1; + cidp->rx_rings = BGE_RECV_RINGS_MAX_5705; + cidp->tx_rings = BGE_SEND_RINGS_MAX_5705; + cidp->flags |= CHIP_FLAG_NO_JUMBO; + cidp->flags |= CHIP_FLAG_PARTIAL_CSUM; + cidp->statistic_type = BGE_STAT_REG; + dev_ok = B_TRUE; + break; + case DEVICE_ID_5706: cidp->chip_label = 5706; cidp->flags |= CHIP_FLAG_NO_JUMBO; @@ -2436,7 +2455,9 @@ if (bgep->chipid.asic_rev == MHCR_CHIP_REV_5751_A0 || bgep->chipid.asic_rev == - MHCR_CHIP_REV_5721_A0) { + MHCR_CHIP_REV_5721_A0 || + bgep->chipid.asic_rev == + MHCR_CHIP_REV_5755_A0) { val32 = bge_reg_get32(bgep, PHY_TEST_CTRL_REG); if (val32 == (PHY_PCIE_SCRAM_MODE | @@ -3140,6 +3161,7 @@ if ((bgep->chipid.chip_label == 5721) || (bgep->chipid.chip_label == 5751) || (bgep->chipid.chip_label == 5752) || + (bgep->chipid.chip_label == 5755) || (bgep->chipid.chip_label == 5789)) bge_reg_set32(bgep, TLP_CONTROL_REG, TLP_DATA_FIFO_PROTECT); @@ -3345,6 +3367,7 @@ uint32_t mtu; uint32_t maxring; uint32_t stats_mask; + uint32_t dma_wrprio; uint64_t ring; int retval = DDI_SUCCESS; @@ -3690,8 +3713,14 @@ if (DEVICE_5704_SERIES_CHIPSETS(bgep)) if (!bge_chip_enable_engine(bgep, DMA_COMPLETION_MODE_REG, 0)) retval = DDI_FAILURE; + dma_wrprio = (bge_dma_wrprio << DMA_PRIORITY_SHIFT) | + ALL_DMA_ATTN_BITS; + if (MHCR_CHIP_ASIC_REV(bgep->chipid.asic_rev) == + MHCR_CHIP_ASIC_REV_5755) { + dma_wrprio |= DMA_STATUS_TAG_FIX_CQ12384; + } if (!bge_chip_enable_engine(bgep, WRITE_DMA_MODE_REG, - (bge_dma_wrprio << DMA_PRIORITY_SHIFT) | ALL_DMA_ATTN_BITS)) + dma_wrprio)) retval = DDI_FAILURE; if (!bge_chip_enable_engine(bgep, READ_DMA_MODE_REG, (bge_dma_rdprio << DMA_PRIORITY_SHIFT) | ALL_DMA_ATTN_BITS))
--- a/usr/src/uts/common/io/bge/bge_hw.h Fri May 25 13:25:30 2007 -0700 +++ b/usr/src/uts/common/io/bge/bge_hw.h Sat May 26 05:29:40 2007 -0700 @@ -78,6 +78,7 @@ #define DEVICE_ID_5752 0x1600 #define DEVICE_ID_5752M 0x1601 #define DEVICE_ID_5754 0x167a +#define DEVICE_ID_5755 0x167b #define DEVICE_ID_5721 0x1659 #define DEVICE_ID_5714C 0x1668 #define DEVICE_ID_5714S 0x1669 @@ -157,7 +158,8 @@ (bgep->chipid.device == DEVICE_ID_5782) ||\ (bgep->chipid.device == DEVICE_ID_5788) ||\ (bgep->chipid.device == DEVICE_ID_5705_2) ||\ - (bgep->chipid.device == DEVICE_ID_5754)) + (bgep->chipid.device == DEVICE_ID_5754) ||\ + (bgep->chipid.device == DEVICE_ID_5755)) #define DEVICE_5721_SERIES_CHIPSETS(bgep) \ ((bgep->chipid.device == DEVICE_ID_5721) ||\ @@ -257,6 +259,9 @@ #define MHCR_CHIP_REV_5754_A0 0xb0000000 #define MHCR_CHIP_REV_5754_A1 0xb0010000 +#define MHCR_CHIP_REV_5755_A0 0xa0000000 +#define MHCR_CHIP_REV_5755_A1 0xa0010000 + #define MHCR_CHIP_ASIC_REV(ChipRevId) ((ChipRevId) & 0xf0000000) #define MHCR_CHIP_ASIC_REV_5700 (0x7 << 28) #define MHCR_CHIP_ASIC_REV_5701 (0x0 << 28) @@ -267,6 +272,7 @@ #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_5755 ((uint32_t)0xa << 28) #define MHCR_CHIP_ASIC_REV_5715 ((uint32_t)0x9 << 28) @@ -576,6 +582,15 @@ #define ALL_DMA_ATTN_BITS 0x000003fc /* + * 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 + +/* * End of state machine control register definitions */
--- a/usr/src/uts/common/io/bge/bge_main2.c Fri May 25 13:25:30 2007 -0700 +++ b/usr/src/uts/common/io/bge/bge_main2.c Sat May 26 05:29:40 2007 -0700 @@ -33,7 +33,7 @@ * This is the string displayed by modinfo, etc. * Make sure you keep the version ID up to date! */ -static char bge_ident[] = "Broadcom Gb Ethernet v0.56"; +static char bge_ident[] = "Broadcom Gb Ethernet v0.57"; /* * Property names