From owner-svn-src-head@FreeBSD.ORG Sat Feb 20 17:24:34 2010 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0D8D91065695; Sat, 20 Feb 2010 17:24:34 +0000 (UTC) (envelope-from rrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D5C8E8FC17; Sat, 20 Feb 2010 17:24:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o1KHOXAe069335; Sat, 20 Feb 2010 17:24:33 GMT (envelope-from rrs@svn.freebsd.org) Received: (from rrs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o1KHOXiJ069332; Sat, 20 Feb 2010 17:24:33 GMT (envelope-from rrs@svn.freebsd.org) Message-Id: <201002201724.o1KHOXiJ069332@svn.freebsd.org> From: Randall Stewart Date: Sat, 20 Feb 2010 17:24:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r204137 - head/sys/mips/rmi X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Feb 2010 17:24:34 -0000 Author: rrs Date: Sat Feb 20 17:24:33 2010 New Revision: 204137 URL: http://svn.freebsd.org/changeset/base/204137 Log: Fix for the rge driver for boards without rge6 and rge7. - changes to avoid adding theses instances on specific chips Obtained from: C. Jayachandran - JC - c.jayachandran@gmail.com Modified: head/sys/mips/rmi/board.c head/sys/mips/rmi/iodi.c Modified: head/sys/mips/rmi/board.c ============================================================================== --- head/sys/mips/rmi/board.c Sat Feb 20 17:19:16 2010 (r204136) +++ head/sys/mips/rmi/board.c Sat Feb 20 17:24:33 2010 (r204137) @@ -27,6 +27,8 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * *****************************RMI_2**********************************/ +#include /* RCS ID & Copyright macro defns */ +__FBSDID("$FreeBSD$"); #include #include #include @@ -93,6 +95,7 @@ struct xlr_board_info xlr_board_info; int xlr_board_info_setup() { + if (xlr_is_xls()) { xlr_board_info.is_xls = 1; xlr_board_info.nr_cpus = 8; @@ -122,6 +125,18 @@ xlr_board_info_setup() /* network block 1 */ xlr_board_info.gmac_block[1].type = XLR_GMAC; xlr_board_info.gmac_block[1].enabled = 0xf; + if (xlr_is_xls4xx()) { + xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_GPIO_OFFSET); + uint32_t tmp; + + /* some ports are not enabled on 4xx, figure this out + from the GPIO fuse bank */ + tmp = xlr_read_reg(mmio, 35); + if (tmp & (1<<28)) + xlr_board_info.gmac_block[1].enabled &= ~0x8; + if (tmp & (1<<29)) + xlr_board_info.gmac_block[1].enabled &= ~0x4; + } xlr_board_info.gmac_block[1].credit_config = &xls_cc_table_gmac1; xlr_board_info.gmac_block[1].station_txbase = MSGRNG_STNID_GMAC1_TX0; xlr_board_info.gmac_block[1].station_rfr = MSGRNG_STNID_GMAC1_FR_0; Modified: head/sys/mips/rmi/iodi.c ============================================================================== --- head/sys/mips/rmi/iodi.c Sat Feb 20 17:19:16 2010 (r204136) +++ head/sys/mips/rmi/iodi.c Sat Feb 20 17:24:33 2010 (r204137) @@ -271,11 +271,15 @@ iodi_attach(device_t dev) tmpd = device_add_child(dev, "rge", 5); device_set_ivars(tmpd, &xlr_board_info.gmac_block[1]); - tmpd = device_add_child(dev, "rge", 6); - device_set_ivars(tmpd, &xlr_board_info.gmac_block[1]); - - tmpd = device_add_child(dev, "rge", 7); - device_set_ivars(tmpd, &xlr_board_info.gmac_block[1]); + if (xlr_board_info.gmac_block[1].enabled & 0x4) { + tmpd = device_add_child(dev, "rge", 6); + device_set_ivars(tmpd, &xlr_board_info.gmac_block[1]); + } + + if (xlr_board_info.gmac_block[1].enabled & 0x8) { + tmpd = device_add_child(dev, "rge", 7); + device_set_ivars(tmpd, &xlr_board_info.gmac_block[1]); + } } else if (xlr_board_info.gmac_block[1].type == XLR_XGMAC) { #if 0 /* XGMAC not yet */ tmpd = device_add_child(dev, "rge", 4);