Split up brcm63xx into files/
[openwrt/svn-archive/archive.git] / target / linux / brcm63xx-2.6 / files / arch / mips / bcm963xx / boardparms.c
diff --git a/target/linux/brcm63xx-2.6/files/arch/mips/bcm963xx/boardparms.c b/target/linux/brcm63xx-2.6/files/arch/mips/bcm963xx/boardparms.c
new file mode 100644 (file)
index 0000000..1143ded
--- /dev/null
@@ -0,0 +1,2391 @@
+/*
+<:copyright-gpl 
+
+ Copyright 2003 Broadcom Corp. All Rights Reserved. 
+ This program is free software; you can distribute it and/or modify it 
+ under the terms of the GNU General Public License (Version 2) as 
+ published by the Free Software Foundation. 
+ This program is distributed in the hope it will be useful, but WITHOUT 
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
+ for more details. 
+ You should have received a copy of the GNU General Public License along 
+ with this program; if not, write to the Free Software Foundation, Inc., 
+ 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 
+
+:>
+*/
+/**************************************************************************
+ * File Name  : boardparms.c
+ *
+ * Description: This file contains the implementation for the BCM63xx board
+ *              parameter access functions.
+ * 
+ * Updates    : 07/14/2003  Created.
+ ***************************************************************************/
+
+/* Includes. */
+#include "boardparms.h"
+
+/* Defines. */
+
+/* Default psi size in K bytes */
+#define BP_PSI_DEFAULT_SIZE                     24   
+
+/* Typedefs */
+typedef struct boardparameters
+{
+    char szBoardId[BP_BOARD_ID_LEN];        /* board id string */
+    ETHERNET_MAC_INFO EnetMacInfos[BP_MAX_ENET_MACS];
+    VOIP_DSP_INFO VoIPDspInfo[BP_MAX_VOIP_DSP];
+    unsigned short usSdramSize;             /* SDRAM size and type */
+    unsigned short usPsiSize;               /* persistent storage in K bytes */
+    unsigned short usGpioRj11InnerPair;     /* GPIO pin or not defined */
+    unsigned short usGpioRj11OuterPair;     /* GPIO pin or not defined */
+    unsigned short usGpioPressAndHoldReset; /* GPIO pin or not defined */
+    unsigned short usGpioPcmciaReset;       /* GPIO pin or not defined */
+    unsigned short usGpioUartRts;           /* GPIO pin or not defined */
+    unsigned short usGpioUartCts;           /* GPIO pin or not defined */
+    unsigned short usGpioLedAdsl;           /* GPIO pin or not defined */
+    unsigned short usGpioLedAdslFail;       /* GPIO pin or not defined */
+    unsigned short usGpioLedWireless;       /* GPIO pin or not defined */
+    unsigned short usGpioLedUsb;            /* GPIO pin or not defined */
+    unsigned short usGpioLedHpna;           /* GPIO pin or not defined */
+    unsigned short usGpioLedWanData;        /* GPIO pin or not defined */
+    unsigned short usGpioLedPpp;            /* GPIO pin or not defined */
+    unsigned short usGpioLedPppFail;        /* GPIO pin or not defined */
+    unsigned short usGpioLedBlPowerOn;      /* GPIO pin or not defined */
+    unsigned short usGpioLedBlAlarm;        /* GPIO pin or not defined */
+    unsigned short usGpioLedBlResetCfg;     /* GPIO pin or not defined */
+    unsigned short usGpioLedBlStop;         /* GPIO pin or not defined */
+    unsigned short usExtIntrWireless;       /* ext intr or not defined */
+    unsigned short usExtIntrAdslDyingGasp;  /* ext intr or not defined */
+    unsigned short usExtIntrHpna;           /* ext intr or not defined */
+    unsigned short usCsHpna;                /* chip select not defined */
+    unsigned short usAntInUseWireless;     /* antenna in use or not defined */
+    unsigned short usGpioSesBtnWireless;    /* GPIO pin or not defined */
+    unsigned short usExtIntrSesBtnWireless; /* ext intr or not defined */        
+    unsigned short usGpioLedSesWireless;    /* GPIO pin or not defined */        
+} BOARD_PARAMETERS, *PBOARD_PARAMETERS;
+
+/* Variables */
+#if defined(_BCM96338_) || defined(CONFIG_BCM96338)
+static BOARD_PARAMETERS g_bcm96338sv =
+{
+    "96338SV",                               /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_NO_PHY}},                     /* ucPhyType */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_16MB_1_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_NOT_DEFINED,                         /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_NOT_DEFINED,                         /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_NOT_DEFINED,                         /* usGpioLedWanData */
+    BP_NOT_DEFINED,                         /* usGpioLedPpp */
+    BP_NOT_DEFINED,                         /* usGpioLedPppFail */
+    BP_NOT_DEFINED,                         /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_NOT_DEFINED,                         /* usGpioLedBlResetCfg */
+    BP_NOT_DEFINED,                         /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_HW_DEFINED,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */     
+};
+static BOARD_PARAMETERS g_bcm96338l2m8m =
+{
+    "96338L-2M-8M",                         /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_NO_PHY}},                     /* ucPhyType */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_8MB_1_CHIP,                   /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_NOT_DEFINED,                         /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_GPIO_2_AL,                           /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_3_AL,                           /* usGpioLedWanData */
+    BP_GPIO_3_AL,                           /* usGpioLedPpp */
+    BP_GPIO_4_AL,                           /* usGpioLedPppFail */
+    BP_GPIO_0_AL,                           /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_GPIO_3_AL,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_1_AL,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_HW_DEFINED,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */    
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */         
+};
+static PBOARD_PARAMETERS g_BoardParms[] =
+    {&g_bcm96338sv, &g_bcm96338l2m8m, 0};
+#endif
+
+#if defined(_BCM96345_) || defined(CONFIG_BCM96345)
+static BOARD_PARAMETERS g_bcm96345r =
+{
+    "96345R",                               /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_NO_PHY}},                     /* ucPhyType */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_8MB_1_CHIP,                   /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_GPIO_11_AH,                          /* usGpioRj11InnerPair */
+    BP_GPIO_12_AH,                          /* usGpioRj11OuterPair */
+    BP_GPIO_13_AH,                          /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_GPIO_8_AH,                           /* usGpioLedAdsl */
+    BP_NOT_DEFINED,                         /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_8_AH,                           /* usGpioLedWanData */
+    BP_GPIO_9_AH,                           /* usGpioLedPpp */
+    BP_NOT_DEFINED,                         /* usGpioLedPppFail */
+    BP_NOT_DEFINED,                         /* usGpioLedBlPowerOn */
+    BP_GPIO_10_AH,                          /* usGpioLedBlAlarm */
+    BP_GPIO_9_AH,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_8_AH,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_EXT_INTR_0,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */
+};
+
+static BOARD_PARAMETERS g_bcm96345gw2 =
+{
+    /* A hardware jumper determines whether GPIO 13 is used for Press and Hold
+     * Reset or RTS.
+     */
+    "96345GW2",                             /* szBoardId */
+    {{BP_ENET_EXTERNAL_SWITCH,              /* ucPhyType */
+      0x00,                                 /* ucPhyAddress */
+      BP_GPIO_0_AH,                         /* usGpioPhySpiSck */
+      BP_GPIO_4_AH,                         /* usGpioPhySpiSs */
+      BP_GPIO_12_AH,                        /* usGpioPhySpiMosi */
+      BP_GPIO_11_AH,                        /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x04,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_GPIO,                  /* usConfigType */
+      BP_ENET_REVERSE_MII},                 /* usReverseMii */
+     {BP_ENET_NO_PHY}},                     /* ucPhyType */
+    {{BP_VOIP_DSP,                          /* ucDspType */
+      0x00,                                 /* ucDspAddress */
+      BP_EXT_INTR_1,                        /* usExtIntrVoip */
+      BP_GPIO_6_AH,                         /* usGpioVoipReset */
+      BP_GPIO_15_AH,                        /* usGpioVoipIntr */
+      BP_NOT_DEFINED,                       /* usGpioLedVoip */
+      BP_CS_2},                             /* usCsVoip */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_16MB_1_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_GPIO_13_AH,                          /* usGpioPressAndHoldReset */
+    BP_GPIO_2_AH,                           /* usGpioPcmciaReset */
+    BP_GPIO_13_AH,                          /* usGpioUartRts */
+    BP_GPIO_9_AH,                           /* usGpioUartCts */
+    BP_GPIO_8_AH,                           /* usGpioLedAdsl */
+    BP_NOT_DEFINED,                         /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_GPIO_7_AH,                           /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_8_AH,                           /* usGpioLedWanData */
+    BP_NOT_DEFINED,                         /* usGpioLedPpp */
+    BP_NOT_DEFINED,                         /* usGpioLedPppFail */
+    BP_NOT_DEFINED,                         /* usGpioLedBlPowerOn */
+    BP_GPIO_10_AH,                          /* usGpioLedBlAlarm */
+    BP_GPIO_7_AH,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_8_AH,                           /* usGpioLedBlStop */
+    BP_EXT_INTR_2,                          /* usExtIntrWireless */
+    BP_EXT_INTR_0,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_WLAN_ANT_MAIN,                       /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */    
+};
+
+static BOARD_PARAMETERS g_bcm96345gw =
+{
+    "96345GW",                              /* szBoardId */
+    {{BP_ENET_EXTERNAL_SWITCH,              /* ucPhyType */
+      0x00,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x04,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_ENET_NO_REVERSE_MII},              /* usReverseMii */
+     {BP_ENET_NO_PHY}},                     /* ucPhyType */
+    {{BP_VOIP_DSP,                          /* ucDspType */
+      0x00,                                 /* ucDspAddress */
+      BP_EXT_INTR_1,                        /* usExtIntrVoip */
+      BP_GPIO_6_AH,                         /* usGpioVoipReset */
+      BP_GPIO_15_AH,                        /* usGpioVoipIntr */
+      BP_NOT_DEFINED,                       /* usGpioLedVoip */
+      BP_CS_2},                             /* usCsVoip */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_16MB_1_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_GPIO_11_AH,                          /* usGpioRj11InnerPair */
+    BP_GPIO_1_AH,                           /* usGpioRj11OuterPair */
+    BP_GPIO_13_AH,                          /* usGpioPressAndHoldReset */
+    BP_GPIO_2_AH,                           /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_GPIO_8_AH,                           /* usGpioLedAdsl */
+    BP_NOT_DEFINED,                         /* usGpioLedAdslFail */
+    BP_GPIO_10_AH,                          /* usGpioLedWireless */
+    BP_GPIO_7_AH,                           /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_8_AH,                           /* usGpioLedWanData */
+    BP_NOT_DEFINED,                         /* usGpioLedPpp */
+    BP_NOT_DEFINED,                         /* usGpioLedPppFail */
+    BP_NOT_DEFINED,                         /* usGpioLedBlPowerOn */
+    BP_GPIO_9_AH,                           /* usGpioLedBlAlarm */
+    BP_GPIO_10_AH,                          /* usGpioLedBlResetCfg */
+    BP_GPIO_8_AH,                           /* usGpioLedBlStop */
+    BP_EXT_INTR_2,                          /* usExtIntrWireless */
+    BP_EXT_INTR_0,                          /* usExtIntrAdslDyingGasp */
+    BP_EXT_INTR_3,                          /* usExtIntrHpna */
+    BP_CS_1,                                /* usCsHpna */
+    BP_WLAN_ANT_MAIN,                       /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */
+};
+
+static BOARD_PARAMETERS g_bcm96335r =
+{
+    "96335R",                               /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_NO_PHY}},                     /* ucPhyType */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_8MB_1_CHIP,                   /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_GPIO_14_AH,                          /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_GPIO_9_AH,                           /* usGpioLedAdsl */
+    BP_NOT_DEFINED,                         /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_9_AH,                           /* usGpioLedWanData */
+    BP_GPIO_8_AH,                           /* usGpioLedPpp */
+    BP_NOT_DEFINED,                         /* usGpioLedPppFail */
+    BP_NOT_DEFINED,                         /* usGpioLedBlPowerOn */
+    BP_GPIO_10_AH,                          /* usGpioLedBlAlarm */
+    BP_GPIO_8_AH,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_9_AH,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */
+};
+
+static BOARD_PARAMETERS g_bcm96345r0 =
+{
+    "96345R0",                              /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_NO_PHY}},                     /* ucPhyType */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_8MB_1_CHIP,                   /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_NOT_DEFINED,                         /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_GPIO_8_AH,                           /* usGpioLedAdsl */
+    BP_NOT_DEFINED,                         /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_9_AH,                           /* usGpioLedWanData */
+    BP_GPIO_9_AH,                           /* usGpioLedPpp */
+    BP_NOT_DEFINED,                         /* usGpioLedPppFail */
+    BP_NOT_DEFINED,                         /* usGpioLedBlPowerOn */
+    BP_GPIO_9_AH,                           /* usGpioLedBlAlarm */
+    BP_GPIO_8_AH,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_8_AH,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */     
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */    
+};
+
+static BOARD_PARAMETERS g_bcm96345rs =
+{
+    "96345RS",                              /* szBoardId */
+    {{BP_ENET_EXTERNAL_SWITCH,              /* ucPhyType */
+      0x00,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_ENET_NO_REVERSE_MII},              /* usReverseMii */
+     {BP_ENET_NO_PHY}},                     /* ucPhyType */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_8MB_1_CHIP,                   /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_GPIO_11_AH,                          /* usGpioRj11InnerPair */
+    BP_GPIO_12_AH,                          /* usGpioRj11OuterPair */
+    BP_GPIO_13_AH,                          /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_GPIO_8_AH,                           /* usGpioLedAdsl */
+    BP_NOT_DEFINED,                         /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_8_AH,                           /* usGpioLedWanData */
+    BP_GPIO_9_AH,                           /* usGpioLedPpp */
+    BP_NOT_DEFINED,                         /* usGpioLedPppFail */
+    BP_NOT_DEFINED,                         /* usGpioLedBlPowerOn */
+    BP_GPIO_10_AH,                          /* usGpioLedBlAlarm */
+    BP_GPIO_9_AH,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_8_AH,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_EXT_INTR_0,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */
+};
+
+static PBOARD_PARAMETERS g_BoardParms[] =
+    {&g_bcm96345r, &g_bcm96345gw2, &g_bcm96345gw, &g_bcm96335r, &g_bcm96345r0,
+     &g_bcm96345rs, 0};
+#endif
+
+#if defined(_BCM96348_) || defined(CONFIG_BCM96348)
+
+static BOARD_PARAMETERS g_bcm96348r =
+{
+    "96348R",                               /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_NO_PHY}},                     /* ucPhyType */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_8MB_1_CHIP,                   /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_GPIO_7_AH,                           /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_GPIO_2_AL,                           /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_3_AL,                           /* usGpioLedWanData */
+    BP_GPIO_3_AL,                           /* usGpioLedPpp */
+    BP_GPIO_4_AL,                           /* usGpioLedPppFail */
+    BP_GPIO_0_AL,                           /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_GPIO_3_AL,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_1_AL,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_HW_DEFINED,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */    
+};
+
+static BOARD_PARAMETERS g_bcm96348lv =
+{
+    "96348LV",                               /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_EXTERNAL_PHY,                 /* ucPhyType */
+      0x02,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_GPIO_5_AL,                         /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED}},                     /* usReverseMii */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_16MB_2_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_GPIO_7_AH,                           /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_GPIO_2_AL,                           /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_3_AL,                           /* usGpioLedWanData */
+    BP_GPIO_3_AL,                           /* usGpioLedPpp */
+    BP_GPIO_4_AL,                           /* usGpioLedPppFail */
+    BP_GPIO_0_AL,                           /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_GPIO_3_AL,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_1_AL,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */
+};
+
+static BOARD_PARAMETERS g_bcm96348gw =
+{
+    "96348GW",                              /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_EXTERNAL_SWITCH,              /* ucPhyType */
+      0x00,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x03,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_SPI_SSB_0,             /* usConfigType */
+      BP_ENET_REVERSE_MII}},                /* usReverseMii */
+    {{BP_VOIP_DSP,                          /* ucDspType */
+      0x00,                                 /* ucDspAddress */
+      BP_EXT_INTR_2,                        /* usExtIntrVoip */
+      BP_GPIO_6_AH,                         /* usGpioVoipReset */
+      BP_GPIO_34_AH,                        /* usGpioVoipIntr */
+      BP_NOT_DEFINED,                       /* usGpioLedVoip */
+      BP_CS_2},                             /* usCsVoip */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_16MB_2_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_GPIO_33_AL,                          /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_GPIO_2_AL,                           /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_3_AL,                           /* usGpioLedWanData */
+    BP_GPIO_3_AL,                           /* usGpioLedPpp */
+    BP_GPIO_4_AL,                           /* usGpioLedPppFail */
+    BP_GPIO_0_AL,                           /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_GPIO_3_AL,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_1_AL,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_HW_DEFINED,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_WLAN_ANT_MAIN,                       /* usAntInUseWireless */
+    BP_NOT_DEFINED, /* BP_GPIO_35_AH, */    /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED, /* BP_EXT_INTR_3, */    /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED  /* BP_GPIO_0_AL   */    /* usGpioLedSesWireless */
+};
+
+
+static BOARD_PARAMETERS g_bcm96348gw_10 =
+{
+    "96348GW-10",                           /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_EXTERNAL_SWITCH,              /* ucPhyType */
+      0x00,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x03,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_SPI_SSB_1,             /* usConfigType */
+      BP_ENET_REVERSE_MII}},                /* usReverseMii */
+    {{BP_VOIP_DSP,                          /* ucDspType */
+      0x00,                                 /* ucDspAddress */
+      BP_EXT_INTR_2,                        /* usExtIntrVoip */
+      BP_GPIO_6_AH,                         /* usGpioVoipReset */
+      BP_GPIO_34_AH,                        /* usGpioVoipIntr */
+      BP_NOT_DEFINED,                       /* usGpioLedVoip */
+      BP_CS_2},                             /* usCsVoip */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_16MB_2_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_GPIO_33_AL,                          /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_GPIO_2_AL,                           /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_3_AL,                           /* usGpioLedWanData */
+    BP_GPIO_3_AL,                           /* usGpioLedPpp */
+    BP_GPIO_4_AL,                           /* usGpioLedPppFail */
+    BP_GPIO_0_AL,                           /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_GPIO_3_AL,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_1_AL,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_HW_DEFINED,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_WLAN_ANT_MAIN,                       /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */
+};
+
+static BOARD_PARAMETERS g_bcm96348gw_11 =
+{
+    "96348GW-11",                           /* szBoardId */
+    {{BP_ENET_NO_PHY},                      /* ucPhyType */
+     {BP_ENET_EXTERNAL_SWITCH,              /* ucPhyType */
+      0x00,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x04,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_SPI_SSB_1,             /* usConfigType */
+      BP_ENET_REVERSE_MII}},                /* usReverseMii */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_16MB_2_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_GPIO_33_AL,                          /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_GPIO_2_AL,                           /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_3_AL,                           /* usGpioLedWanData */
+    BP_GPIO_3_AL,                           /* usGpioLedPpp */
+    BP_GPIO_4_AL,                           /* usGpioLedPppFail */
+    BP_GPIO_0_AL,                           /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_GPIO_3_AL,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_1_AL,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_HW_DEFINED,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */    
+};
+
+static BOARD_PARAMETERS g_bcm96348sv =
+{
+    "96348SV",                              /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_EXTERNAL_PHY,                 /* ucPhyType */
+      0x1f,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED}},                     /* usReverseMii */
+    {{BP_VOIP_NO_DSP},                      /* ucDspType */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_32MB_2_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_NOT_DEFINED,                         /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_NOT_DEFINED,                         /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_NOT_DEFINED,                         /* usGpioLedWanData */
+    BP_NOT_DEFINED,                         /* usGpioLedPpp */
+    BP_NOT_DEFINED,                         /* usGpioLedPppFail */
+    BP_NOT_DEFINED,                         /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_NOT_DEFINED,                         /* usGpioLedBlResetCfg */
+    BP_NOT_DEFINED,                         /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_HW_DEFINED,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */
+};
+
+
+static BOARD_PARAMETERS g_bcm96348gw_dualDsp =
+{
+    "96348GW-DualDSP",                      /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_EXTERNAL_SWITCH,              /* ucPhyType */
+      0x00,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x03,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_SPI_SSB_1,             /* usConfigType */
+      BP_ENET_REVERSE_MII}},                /* usReverseMii */
+    {{BP_VOIP_DSP,                          /* ucDspType */
+      0x00,                                 /* ucDspAddress */
+      BP_EXT_INTR_2,                        /* usExtIntrVoip */
+      BP_UNEQUIPPED,                        /* usGpioVoipReset */
+      BP_GPIO_34_AH,                        /* usGpioVoipIntr */
+      BP_NOT_DEFINED,                       /* usGpioLedVoip */
+      BP_CS_2},                             /* usCsVoip */
+     {BP_VOIP_DSP,                          /* ucDspType */
+      0x01,                                 /* ucDspAddress */
+      BP_EXT_INTR_3,                        /* usExtIntrVoip */
+      BP_UNEQUIPPED ,                       /* usGpioVoipReset */
+      BP_GPIO_35_AH,                        /* usGpioVoipIntr */
+      BP_NOT_DEFINED,                       /* usGpioLedVoip */
+      BP_CS_3}},                            /* usCsVoip */
+    BP_MEMORY_16MB_2_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_GPIO_33_AL,                          /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_GPIO_2_AL,                           /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_3_AL,                           /* usGpioLedWanData */
+    BP_GPIO_3_AL,                           /* usGpioLedPpp */
+    BP_GPIO_4_AL,                           /* usGpioLedPppFail */
+    BP_GPIO_0_AL,                           /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_GPIO_3_AL,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_1_AL,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_HW_DEFINED,                          /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_WLAN_ANT_MAIN,                       /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */
+};
+
+
+static BOARD_PARAMETERS g_bcmCustom_01 =
+{
+     "BCMCUST_01",                          /* szBoardId */
+    {{BP_ENET_INTERNAL_PHY,                 /* ucPhyType */
+      0x01,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_MDIO,                  /* usConfigType */
+      BP_NOT_DEFINED},                      /* usReverseMii */
+     {BP_ENET_NO_PHY,                       /* ucPhyType */
+      0x00,                                 /* ucPhyAddress */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSck */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiSs */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMosi */
+      BP_NOT_DEFINED,                       /* usGpioPhySpiMiso */
+      BP_NOT_DEFINED,                       /* usGpioPhyReset */
+      0x01,                                 /* numSwitchPorts */
+      BP_ENET_CONFIG_SPI_SSB_1,             /* usConfigType */
+      BP_ENET_REVERSE_MII}},                /* usReverseMii */
+    {{BP_VOIP_DSP,                          /* ucDspType */
+      0x00,                                 /* ucDspAddress */
+      BP_EXT_INTR_2,                        /* usExtIntrVoip */
+      BP_GPIO_36_AH,                        /* usGpioVoipReset */
+      BP_GPIO_34_AL,                        /* usGpioVoipIntr */
+      BP_NOT_DEFINED,                       /* usGpioLedVoip */
+      BP_CS_2},                             /* usCsVoip */
+     {BP_VOIP_NO_DSP}},                     /* ucDspType */
+    BP_MEMORY_16MB_2_CHIP,                  /* usSdramSize */
+    BP_PSI_DEFAULT_SIZE,                    /* usPsiSize */
+    BP_NOT_DEFINED,                         /* usGpioRj11InnerPair */
+    BP_NOT_DEFINED,                         /* usGpioRj11OuterPair */
+    BP_GPIO_33_AL,                          /* usGpioPressAndHoldReset */
+    BP_NOT_DEFINED,                         /* usGpioPcmciaReset */
+    BP_NOT_DEFINED,                         /* usGpioUartRts */
+    BP_NOT_DEFINED,                         /* usGpioUartCts */
+    BP_NOT_DEFINED,                         /* usGpioLedAdsl */
+    BP_GPIO_2_AL,                           /* usGpioLedAdslFail */
+    BP_NOT_DEFINED,                         /* usGpioLedWireless */
+    BP_NOT_DEFINED,                         /* usGpioLedUsb */
+    BP_NOT_DEFINED,                         /* usGpioLedHpna */
+    BP_GPIO_3_AL,                           /* usGpioLedWanData */
+    BP_GPIO_3_AL,                           /* usGpioLedPpp */
+    BP_GPIO_4_AL,                           /* usGpioLedPppFail */
+    BP_GPIO_0_AL,                           /* usGpioLedBlPowerOn */
+    BP_NOT_DEFINED,                         /* usGpioLedBlAlarm */
+    BP_GPIO_3_AL,                           /* usGpioLedBlResetCfg */
+    BP_GPIO_1_AL,                           /* usGpioLedBlStop */
+    BP_NOT_DEFINED,                         /* usExtIntrWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrAdslDyingGasp */
+    BP_NOT_DEFINED,                         /* usExtIntrHpna */
+    BP_NOT_DEFINED,                         /* usCsHpna */
+    BP_NOT_DEFINED,                         /* usAntInUseWireless */
+    BP_NOT_DEFINED,                         /* usGpioSesBtnWireless */
+    BP_NOT_DEFINED,                         /* usExtIntrSesBtnWireless */
+    BP_NOT_DEFINED                          /* usGpioLedSesWireless */
+};
+
+static PBOARD_PARAMETERS g_BoardParms[] =
+    {&g_bcm96348r, &g_bcm96348lv, &g_bcm96348gw, &g_bcm96348gw_10,
+     &g_bcm96348gw_11, &g_bcm96348sv, &g_bcm96348gw_dualDsp,
+     &g_bcmCustom_01, 0};
+#endif
+
+static PBOARD_PARAMETERS g_pCurrentBp = 0;
+
+/**************************************************************************
+ * Name       : bpstrcmp
+ *
+ * Description: String compare for this file so it does not depend on an OS.
+ *              (Linux kernel and CFE share this source file.)
+ *
+ * Parameters : [IN] dest - destination string
+ *              [IN] src - source string
+ *
+ * Returns    : -1 - dest < src, 1 - dest > src, 0 dest == src
+ ***************************************************************************/
+static int bpstrcmp(const char *dest,const char *src);
+static int bpstrcmp(const char *dest,const char *src)
+{
+    while (*src && *dest)
+    {
+        if (*dest < *src) return -1;
+        if (*dest > *src) return 1;
+        dest++;
+        src++;
+    }
+
+    if (*dest && !*src) return 1;
+    if (!*dest && *src) return -1;
+    return 0;
+} /* bpstrcmp */
+
+/**************************************************************************
+ * Name       : BpGetVoipDspConfig
+ *
+ * Description: Gets the DSP configuration from the board parameter
+ *              structure for a given DSP index.
+ *
+ * Parameters : [IN] dspNum - DSP index (number)
+ *
+ * Returns    : Pointer to DSP configuration block if found/valid, NULL
+ *              otherwise.
+ ***************************************************************************/
+VOIP_DSP_INFO *BpGetVoipDspConfig( unsigned char dspNum );
+VOIP_DSP_INFO *BpGetVoipDspConfig( unsigned char dspNum )
+{
+    VOIP_DSP_INFO *pDspConfig = 0;
+    int i;
+
+    if( g_pCurrentBp )
+    {
+        for( i = 0 ; i < BP_MAX_VOIP_DSP ; i++ )
+        {
+            if( g_pCurrentBp->VoIPDspInfo[i].ucDspType != BP_VOIP_NO_DSP &&
+                g_pCurrentBp->VoIPDspInfo[i].ucDspAddress == dspNum )
+            {
+                pDspConfig = &g_pCurrentBp->VoIPDspInfo[i];
+                break;
+            }
+        }
+    }
+
+    return pDspConfig;
+}
+
+
+/**************************************************************************
+ * Name       : BpSetBoardId
+ *
+ * Description: This function find the BOARD_PARAMETERS structure for the
+ *              specified board id string and assigns it to a global, static
+ *              variable.
+ *
+ * Parameters : [IN] pszBoardId - Board id string that is saved into NVRAM.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_FOUND - Error, board id input string does not
+ *                  have a board parameters configuration record.
+ ***************************************************************************/
+int BpSetBoardId( char *pszBoardId )
+{
+    int nRet = BP_BOARD_ID_NOT_FOUND;
+    PBOARD_PARAMETERS *ppBp;
+
+    for( ppBp = g_BoardParms; *ppBp; ppBp++ )
+    {
+        if( !bpstrcmp((*ppBp)->szBoardId, pszBoardId) )
+        {
+            g_pCurrentBp = *ppBp;
+            nRet = BP_SUCCESS;
+            break;
+        }
+    }
+
+    return( nRet );
+} /* BpSetBoardId */
+
+/**************************************************************************
+ * Name       : BpGetBoardIds
+ *
+ * Description: This function returns all of the supported board id strings.
+ *
+ * Parameters : [OUT] pszBoardIds - Address of a buffer that the board id
+ *                  strings are returned in.  Each id starts at BP_BOARD_ID_LEN
+ *                  boundary.
+ *              [IN] nBoardIdsSize - Number of BP_BOARD_ID_LEN elements that
+ *                  were allocated in pszBoardIds.
+ *
+ * Returns    : Number of board id strings returned.
+ ***************************************************************************/
+int BpGetBoardIds( char *pszBoardIds, int nBoardIdsSize )
+{
+    PBOARD_PARAMETERS *ppBp;
+    int i;
+    char *src;
+    char *dest;
+
+    for( i = 0, ppBp = g_BoardParms; *ppBp && nBoardIdsSize;
+        i++, ppBp++, nBoardIdsSize--, pszBoardIds += BP_BOARD_ID_LEN )
+    {
+        dest = pszBoardIds;
+        src = (*ppBp)->szBoardId;
+        while( *src )
+            *dest++ = *src++;
+        *dest = '\0';
+    }
+
+    return( i );
+} /* BpGetBoardIds */
+
+/**************************************************************************
+ * Name       : BpGetEthernetMacInfo
+ *
+ * Description: This function returns all of the supported board id strings.
+ *
+ * Parameters : [OUT] pEnetInfos - Address of an array of ETHERNET_MAC_INFO
+ *                  buffers.
+ *              [IN] nNumEnetInfos - Number of ETHERNET_MAC_INFO elements that
+ *                  are pointed to by pEnetInfos.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ ***************************************************************************/
+int BpGetEthernetMacInfo( PETHERNET_MAC_INFO pEnetInfos, int nNumEnetInfos )
+{
+    int i, nRet;
+
+    if( g_pCurrentBp )
+    {
+        for( i = 0; i < nNumEnetInfos; i++, pEnetInfos++ )
+        {
+            if( i < BP_MAX_ENET_MACS )
+            {
+                unsigned char *src = (unsigned char *)
+                    &g_pCurrentBp->EnetMacInfos[i];
+                unsigned char *dest = (unsigned char *) pEnetInfos;
+                int len = sizeof(ETHERNET_MAC_INFO);
+                while( len-- )
+                    *dest++ = *src++;
+            }
+            else
+                pEnetInfos->ucPhyType = BP_ENET_NO_PHY;
+        }
+
+        nRet = BP_SUCCESS;
+    }
+    else
+    {
+        for( i = 0; i < nNumEnetInfos; i++, pEnetInfos++ )
+            pEnetInfos->ucPhyType = BP_ENET_NO_PHY;
+
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetEthernetMacInfo */
+
+/**************************************************************************
+ * Name       : BpGetSdramSize
+ *
+ * Description: This function returns a constant that describees the board's
+ *              SDRAM type and size.
+ *
+ * Parameters : [OUT] pulSdramSize - Address of short word that the SDRAM size
+ *                  is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ ***************************************************************************/
+int BpGetSdramSize( unsigned long *pulSdramSize )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pulSdramSize = g_pCurrentBp->usSdramSize;
+        nRet = BP_SUCCESS;
+    }
+    else
+    {
+        *pulSdramSize = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetSdramSize */
+
+/**************************************************************************
+ * Name       : BpGetPsiSize
+ *
+ * Description: This function returns the persistent storage size in K bytes.
+ *
+ * Parameters : [OUT] pulPsiSize - Address of short word that the persistent
+ *                  storage size is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ ***************************************************************************/
+int BpGetPsiSize( unsigned long *pulPsiSize )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pulPsiSize = g_pCurrentBp->usPsiSize;
+        nRet = BP_SUCCESS;
+    }
+    else
+    {
+        *pulPsiSize = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetPsiSize */
+
+/**************************************************************************
+ * Name       : BpGetRj11InnerOuterPairGpios
+ *
+ * Description: This function returns the GPIO pin assignments for changing
+ *              between the RJ11 inner pair and RJ11 outer pair.
+ *
+ * Parameters : [OUT] pusInner - Address of short word that the RJ11 inner pair
+ *                  GPIO pin is returned in.
+ *              [OUT] pusOuter - Address of short word that the RJ11 outer pair
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, values are returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetRj11InnerOuterPairGpios( unsigned short *pusInner,
+    unsigned short *pusOuter )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusInner = g_pCurrentBp->usGpioRj11InnerPair;
+        *pusOuter = g_pCurrentBp->usGpioRj11OuterPair;
+
+        if( g_pCurrentBp->usGpioRj11InnerPair != BP_NOT_DEFINED &&
+            g_pCurrentBp->usGpioRj11OuterPair != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusInner = *pusOuter = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetRj11InnerOuterPairGpios */
+
+/**************************************************************************
+ * Name       : BpGetPressAndHoldResetGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the press
+ *              and hold reset button.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the press and hold
+ *                  reset button GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetPressAndHoldResetGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioPressAndHoldReset;
+
+        if( g_pCurrentBp->usGpioPressAndHoldReset != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetPressAndHoldResetGpio */
+
+/**************************************************************************
+ * Name       : BpGetVoipResetGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the VOIP
+ *              Reset operation.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the VOIP reset
+ *                  GPIO pin is returned in.
+ *              [IN] dspNum - Address of the DSP to query.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetVoipResetGpio( unsigned char dspNum, unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        VOIP_DSP_INFO *pDspInfo = BpGetVoipDspConfig( dspNum );
+
+        if( pDspInfo )
+        {
+           *pusValue = pDspInfo->usGpioVoipReset;
+
+           if( *pusValue != BP_NOT_DEFINED ||
+               *pusValue == BP_UNEQUIPPED )
+           {
+              nRet = BP_SUCCESS;
+           }
+           else
+           {
+              nRet = BP_VALUE_NOT_DEFINED;
+           }
+        }
+        else
+        {
+           *pusValue = BP_NOT_DEFINED;
+           nRet = BP_BOARD_ID_NOT_FOUND;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetVoipResetGpio */
+
+/**************************************************************************
+ * Name       : BpGetVoipIntrGpio
+ *
+ * Description: This function returns the GPIO pin assignment for VoIP interrupt.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the VOIP interrupt
+ *                  GPIO pin is returned in.
+ *              [IN] dspNum - Address of the DSP to query.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetVoipIntrGpio( unsigned char dspNum, unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        VOIP_DSP_INFO *pDspInfo = BpGetVoipDspConfig( dspNum );
+
+        if( pDspInfo )
+        {
+           *pusValue = pDspInfo->usGpioVoipIntr;
+
+           if( *pusValue != BP_NOT_DEFINED )
+           {
+              nRet = BP_SUCCESS;
+           }
+           else
+           {
+              nRet = BP_VALUE_NOT_DEFINED;
+           }
+        }
+        else
+        {
+           *pusValue = BP_NOT_DEFINED;
+           nRet = BP_BOARD_ID_NOT_FOUND;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetVoipIntrGpio */
+
+/**************************************************************************
+ * Name       : BpGetPcmciaResetGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the PCMCIA
+ *              Reset operation.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the PCMCIA reset
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetPcmciaResetGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioPcmciaReset;
+
+        if( g_pCurrentBp->usGpioPcmciaReset != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetPcmciaResetGpio */
+
+/**************************************************************************
+ * Name       : BpGetUartRtsCtsGpios
+ *
+ * Description: This function returns the GPIO pin assignments for RTS and CTS
+ *              UART signals.
+ *
+ * Parameters : [OUT] pusRts - Address of short word that the UART RTS GPIO
+ *                  pin is returned in.
+ *              [OUT] pusCts - Address of short word that the UART CTS GPIO
+ *                  pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, values are returned.
+ *              BP_BOARD_ID_NOT_SET - Error, board id input string does not
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetRtsCtsUartGpios( unsigned short *pusRts, unsigned short *pusCts )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusRts = g_pCurrentBp->usGpioUartRts;
+        *pusCts = g_pCurrentBp->usGpioUartCts;
+
+        if( g_pCurrentBp->usGpioUartRts != BP_NOT_DEFINED &&
+            g_pCurrentBp->usGpioUartCts != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusRts = *pusCts = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetUartRtsCtsGpios */
+
+/**************************************************************************
+ * Name       : BpGetAdslLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the ADSL
+ *              LED.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the ADSL LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetAdslLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedAdsl;
+
+        if( g_pCurrentBp->usGpioLedAdsl != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetAdslLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetAdslFailLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the ADSL
+ *              LED that is used when there is a DSL connection failure.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the ADSL LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetAdslFailLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedAdslFail;
+
+        if( g_pCurrentBp->usGpioLedAdslFail != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetAdslFailLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetWirelessLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the Wireless
+ *              LED.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the Wireless LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetWirelessLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedWireless;
+
+        if( g_pCurrentBp->usGpioLedWireless != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetWirelessLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetWirelessAntInUse
+ *
+ * Description: This function returns the antennas in use for wireless
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the Wireless Antenna
+ *                  is in use.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetWirelessAntInUse( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usAntInUseWireless;
+
+        if( g_pCurrentBp->usAntInUseWireless != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );    
+} /* BpGetWirelessAntInUse */
+
+/**************************************************************************
+ * Name       : BpGetWirelessSesBtnGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the Wireless
+ *              Ses Button.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the Wireless LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetWirelessSesBtnGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioSesBtnWireless;
+
+        if( g_pCurrentBp->usGpioSesBtnWireless != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );    
+} /* BpGetWirelessSesBtnGpio */
+
+/**************************************************************************
+ * Name       : BpGetWirelessSesExtIntr
+ *
+ * Description: This function returns the external interrupt number for the 
+ *              Wireless Ses Button.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the Wireless Ses
+ *                  external interrup is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetWirelessSesExtIntr( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usExtIntrSesBtnWireless;
+
+        if( g_pCurrentBp->usExtIntrSesBtnWireless != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );    
+               
+} /* BpGetWirelessSesExtIntr */
+
+/**************************************************************************
+ * Name       : BpGetWirelessSesLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the Wireless
+ *              Ses Led.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the Wireless Ses
+ *                  Led GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetWirelessSesLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedSesWireless;
+
+        if( g_pCurrentBp->usGpioLedSesWireless != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+       
+} /* BpGetWirelessSesLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetUsbLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the USB
+ *              LED.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the USB LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetUsbLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedUsb;
+
+        if( g_pCurrentBp->usGpioLedUsb != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetUsbLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetHpnaLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the HPNA
+ *              LED.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the HPNA LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetHpnaLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedHpna;
+
+        if( g_pCurrentBp->usGpioLedHpna != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetHpnaLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetWanDataLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the WAN Data
+ *              LED.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the WAN Data LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetWanDataLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedWanData;
+
+        if( g_pCurrentBp->usGpioLedWanData != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetWanDataLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetPppLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the PPP
+ *              LED.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the PPP LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetPppLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedPpp;
+
+        if( g_pCurrentBp->usGpioLedPpp != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetPppLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetPppFailLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the PPP
+ *              LED that is used when there is a PPP connection failure.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the PPP LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetPppFailLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedPppFail;
+
+        if( g_pCurrentBp->usGpioLedPppFail != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetPppFailLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetBootloaderPowerOnLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the power
+ *              on LED that is set by the bootloader.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the alarm LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetBootloaderPowerOnLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedBlPowerOn;
+
+        if( g_pCurrentBp->usGpioLedBlPowerOn != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetBootloaderPowerOn */
+
+/**************************************************************************
+ * Name       : BpGetBootloaderAlarmLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the alarm
+ *              LED that is set by the bootloader.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the alarm LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetBootloaderAlarmLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedBlAlarm;
+
+        if( g_pCurrentBp->usGpioLedBlAlarm != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetBootloaderAlarmLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetBootloaderResetCfgLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the reset
+ *              configuration LED that is set by the bootloader.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the reset
+ *                  configuration LED GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetBootloaderResetCfgLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedBlResetCfg;
+
+        if( g_pCurrentBp->usGpioLedBlResetCfg != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetBootloaderResetCfgLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetBootloaderStopLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the break
+ *              into bootloader LED that is set by the bootloader.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the break into
+ *                  bootloader LED GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetBootloaderStopLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pusValue = g_pCurrentBp->usGpioLedBlStop;
+
+        if( g_pCurrentBp->usGpioLedBlStop != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetBootloaderStopLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetVoipLedGpio
+ *
+ * Description: This function returns the GPIO pin assignment for the VOIP
+ *              LED.
+ *
+ * Parameters : [OUT] pusValue - Address of short word that the VOIP LED
+ *                  GPIO pin is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ *
+ * Note       : The VoIP structure would allow for having one LED per DSP
+ *              however, the board initialization function assumes only one
+ *              LED per functionality (ie one LED for VoIP).  Therefore in
+ *              order to keep this tidy and simple we do not make usage of the
+ *              one-LED-per-DSP function.  Instead, we assume that the LED for
+ *              VoIP is unique and associated with DSP 0 (always present on
+ *              any VoIP platform).  If changing this to a LED-per-DSP function
+ *              then one need to update the board initialization driver in
+ *              bcmdrivers\opensource\char\board\bcm963xx\impl1
+ ***************************************************************************/
+int BpGetVoipLedGpio( unsigned short *pusValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        VOIP_DSP_INFO *pDspInfo = BpGetVoipDspConfig( 0 );
+
+        if( pDspInfo )
+        {
+           *pusValue = pDspInfo->usGpioLedVoip;
+
+           if( *pusValue != BP_NOT_DEFINED )
+           {
+              nRet = BP_SUCCESS;
+           }
+           else
+           {
+              nRet = BP_VALUE_NOT_DEFINED;
+           }
+        }
+        else
+        {
+           *pusValue = BP_NOT_DEFINED;
+           nRet = BP_BOARD_ID_NOT_FOUND;
+        }
+    }
+    else
+    {
+        *pusValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetVoipLedGpio */
+
+/**************************************************************************
+ * Name       : BpGetWirelessExtIntr
+ *
+ * Description: This function returns the Wireless external interrupt number.
+ *
+ * Parameters : [OUT] pulValue - Address of short word that the wireless
+ *                  external interrupt number is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetWirelessExtIntr( unsigned long *pulValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pulValue = g_pCurrentBp->usExtIntrWireless;
+
+        if( g_pCurrentBp->usExtIntrWireless != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pulValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetWirelessExtIntr */
+
+/**************************************************************************
+ * Name       : BpGetAdslDyingGaspExtIntr
+ *
+ * Description: This function returns the ADSL Dying Gasp external interrupt
+ *              number.
+ *
+ * Parameters : [OUT] pulValue - Address of short word that the ADSL Dying Gasp
+ *                  external interrupt number is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetAdslDyingGaspExtIntr( unsigned long *pulValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pulValue = g_pCurrentBp->usExtIntrAdslDyingGasp;
+
+        if( g_pCurrentBp->usExtIntrAdslDyingGasp != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pulValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetAdslDyingGaspExtIntr */
+
+/**************************************************************************
+ * Name       : BpGetVoipExtIntr
+ *
+ * Description: This function returns the VOIP external interrupt number.
+ *
+ * Parameters : [OUT] pulValue - Address of short word that the VOIP
+ *                  external interrupt number is returned in.
+ *              [IN] dspNum - Address of the DSP to query.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetVoipExtIntr( unsigned char dspNum, unsigned long *pulValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        VOIP_DSP_INFO *pDspInfo = BpGetVoipDspConfig( dspNum );
+
+        if( pDspInfo )
+        {
+           *pulValue = pDspInfo->usExtIntrVoip;
+
+           if( *pulValue != BP_NOT_DEFINED )
+           {
+              nRet = BP_SUCCESS;
+           }
+           else
+           {
+              nRet = BP_VALUE_NOT_DEFINED;
+           }
+        }
+        else
+        {
+           *pulValue = BP_NOT_DEFINED;
+           nRet = BP_BOARD_ID_NOT_FOUND;
+        }
+    }
+    else
+    {
+        *pulValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetVoipExtIntr */
+
+/**************************************************************************
+ * Name       : BpGetHpnaExtIntr
+ *
+ * Description: This function returns the HPNA external interrupt number.
+ *
+ * Parameters : [OUT] pulValue - Address of short word that the HPNA
+ *                  external interrupt number is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetHpnaExtIntr( unsigned long *pulValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pulValue = g_pCurrentBp->usExtIntrHpna;
+
+        if( g_pCurrentBp->usExtIntrHpna != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pulValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetHpnaExtIntr */
+
+/**************************************************************************
+ * Name       : BpGetHpnaChipSelect
+ *
+ * Description: This function returns the HPNA chip select number.
+ *
+ * Parameters : [OUT] pulValue - Address of short word that the HPNA
+ *                  chip select number is returned in.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetHpnaChipSelect( unsigned long *pulValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        *pulValue = g_pCurrentBp->usCsHpna;
+
+        if( g_pCurrentBp->usCsHpna != BP_NOT_DEFINED )
+        {
+            nRet = BP_SUCCESS;
+        }
+        else
+        {
+            nRet = BP_VALUE_NOT_DEFINED;
+        }
+    }
+    else
+    {
+        *pulValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetHpnaChipSelect */
+
+/**************************************************************************
+ * Name       : BpGetVoipChipSelect
+ *
+ * Description: This function returns the VOIP chip select number.
+ *
+ * Parameters : [OUT] pulValue - Address of short word that the VOIP
+ *                  chip select number is returned in.
+ *              [IN] dspNum - Address of the DSP to query.
+ *
+ * Returns    : BP_SUCCESS - Success, value is returned.
+ *              BP_BOARD_ID_NOT_SET - Error, BpSetBoardId has not been called.
+ *              BP_VALUE_NOT_DEFINED - At least one return value is not defined
+ *                  for the board.
+ ***************************************************************************/
+int BpGetVoipChipSelect( unsigned char dspNum, unsigned long *pulValue )
+{
+    int nRet;
+
+    if( g_pCurrentBp )
+    {
+        VOIP_DSP_INFO *pDspInfo = BpGetVoipDspConfig( dspNum );
+
+        if( pDspInfo )
+        {
+           *pulValue = pDspInfo->usCsVoip;
+
+           if( *pulValue != BP_NOT_DEFINED )
+           {
+              nRet = BP_SUCCESS;
+           }
+           else
+           {
+              nRet = BP_VALUE_NOT_DEFINED;
+           }
+        }
+        else
+        {
+           *pulValue = BP_NOT_DEFINED;
+           nRet = BP_BOARD_ID_NOT_FOUND;
+        }
+    }
+    else
+    {
+        *pulValue = BP_NOT_DEFINED;
+        nRet = BP_BOARD_ID_NOT_SET;
+    }
+
+    return( nRet );
+} /* BpGetVoipChipSelect */
+