[generic-2.4] add OCF 20100325 support to brcm-2.4
[openwrt/svn-archive/archive.git] / target / linux / generic-2.4 / files / crypto / ocf / kirkwood / mvHal / kw_family / boardEnv / mvBoardEnvLib.h
diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/boardEnv/mvBoardEnvLib.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/boardEnv/mvBoardEnvLib.h
new file mode 100644 (file)
index 0000000..dead633
--- /dev/null
@@ -0,0 +1,376 @@
+/*******************************************************************************
+Copyright (C) Marvell International Ltd. and its affiliates
+
+This software file (the "File") is owned and distributed by Marvell
+International Ltd. and/or its affiliates ("Marvell") under the following
+alternative licensing terms.  Once you have made an election to distribute the
+File under one of the following license alternatives, please (i) delete this
+introductory statement regarding license alternatives, (ii) delete the two
+license alternatives that you have not elected to use and (iii) preserve the
+Marvell copyright notice above.
+
+********************************************************************************
+Marvell Commercial License Option
+
+If you received this File from Marvell and you have entered into a commercial
+license agreement (a "Commercial License") with Marvell, the File is licensed
+to you under the terms of the applicable Commercial License.
+
+********************************************************************************
+Marvell GPL License Option
+
+If you received this File from Marvell, you may opt to use, redistribute and/or
+modify this File in accordance with the terms and conditions of the General
+Public License Version 2, June 1991 (the "GPL License"), a copy of which is
+available along with the File in the license.txt file or by writing to the Free
+Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
+on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
+
+THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
+WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
+DISCLAIMED.  The GPL License provides additional details about this warranty
+disclaimer.
+********************************************************************************
+Marvell BSD License Option
+
+If you received this File from Marvell, you may opt to use, redistribute and/or
+modify this File under the following licensing terms.
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    *   Redistributions of source code must retain the above copyright notice,
+           this list of conditions and the following disclaimer.
+
+    *   Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+    *   Neither the name of Marvell nor the names of its contributors may be
+        used to endorse or promote products derived from this software without
+        specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+*******************************************************************************/
+#ifndef __INCmvBoardEnvLibh
+#define __INCmvBoardEnvLibh
+
+/* defines */
+/* The below constant macros defines the board I2C EEPROM data offsets */
+
+
+
+#include "ctrlEnv/mvCtrlEnvLib.h"
+#include "mvSysHwConfig.h"
+#include "boardEnv/mvBoardEnvSpec.h"
+
+
+/* DUART stuff for Tclk detection only */
+#define DUART_BAUD_RATE                        115200
+#define MAX_CLOCK_MARGINE              5000000 /* Maximum detected clock margine */
+
+/* Voice devices assembly modes */
+#define DAISY_CHAIN_MODE       1
+#define DUAL_CHIP_SELECT_MODE   0
+#define INTERRUPT_TO_MPP        1
+#define INTERRUPT_TO_TDM       0
+
+
+#define BOARD_ETH_PORT_NUM  MV_ETH_MAX_PORTS
+#define BOARD_ETH_SWITCH_PORT_NUM      5
+
+#define        MV_BOARD_MAX_USB_IF             1
+#define MV_BOARD_MAX_MPP               7
+#define MV_BOARD_NAME_LEN              0x20
+
+typedef struct _boardData
+{
+   MV_U32 magic;
+   MV_U16 boardId;
+   MV_U8 boardVer;
+   MV_U8 boardRev;
+   MV_U32 reserved1;
+   MV_U32 reserved2;
+
+}BOARD_DATA;
+
+typedef enum _devBoardMppGroupClass
+{
+       MV_BOARD_MPP_GROUP_1,
+       MV_BOARD_MPP_GROUP_2,
+       MV_BOARD_MAX_MPP_GROUP
+}MV_BOARD_MPP_GROUP_CLASS;
+
+typedef enum _devBoardMppTypeClass
+{
+       MV_BOARD_AUTO,
+       MV_BOARD_TDM,
+       MV_BOARD_AUDIO,
+       MV_BOARD_RGMII,
+       MV_BOARD_GMII,
+       MV_BOARD_TS,
+       MV_BOARD_MII,
+       MV_BOARD_OTHER
+}MV_BOARD_MPP_TYPE_CLASS;
+
+typedef enum _devBoardModuleIdClass
+{
+       MV_BOARD_MODULE_TDM_ID = 1,
+       MV_BOARD_MODULE_AUDIO_ID,
+       MV_BOARD_MODULE_RGMII_ID,
+       MV_BOARD_MODULE_GMII_ID,
+       MV_BOARD_MODULE_TS_ID,
+       MV_BOARD_MODULE_MII_ID,
+       MV_BOARD_MODULE_TDM_5CHAN_ID,
+       MV_BOARD_MODULE_OTHER_ID
+}MV_BOARD_MODULE_ID_CLASS;
+
+typedef struct _boardMppTypeInfo
+{
+       MV_BOARD_MPP_TYPE_CLASS boardMppGroup1;
+       MV_BOARD_MPP_TYPE_CLASS boardMppGroup2;
+
+}MV_BOARD_MPP_TYPE_INFO;
+
+
+typedef enum _devBoardClass
+{
+       BOARD_DEV_NOR_FLASH,
+       BOARD_DEV_NAND_FLASH,
+       BOARD_DEV_SEVEN_SEG,
+       BOARD_DEV_FPGA,
+       BOARD_DEV_SRAM,
+       BOARD_DEV_SPI_FLASH,
+       BOARD_DEV_OTHER,
+}MV_BOARD_DEV_CLASS;
+
+typedef enum _devTwsiBoardClass
+{
+       BOARD_TWSI_RTC,
+       BOARD_DEV_TWSI_EXP,
+       BOARD_DEV_TWSI_SATR,
+       BOARD_TWSI_AUDIO_DEC,
+       BOARD_TWSI_OTHER
+}MV_BOARD_TWSI_CLASS;
+       
+typedef enum _devGppBoardClass
+{
+       BOARD_GPP_RTC,
+       BOARD_GPP_MV_SWITCH,
+       BOARD_GPP_USB_VBUS,
+       BOARD_GPP_USB_VBUS_EN,
+       BOARD_GPP_USB_OC,
+       BOARD_GPP_USB_HOST_DEVICE,
+       BOARD_GPP_REF_CLCK,
+       BOARD_GPP_VOIP_SLIC,
+       BOARD_GPP_LIFELINE,
+       BOARD_GPP_BUTTON,
+       BOARD_GPP_TS_BUTTON_C,
+       BOARD_GPP_TS_BUTTON_U,
+       BOARD_GPP_TS_BUTTON_D,
+       BOARD_GPP_TS_BUTTON_L,
+       BOARD_GPP_TS_BUTTON_R,
+       BOARD_GPP_POWER_BUTTON,
+       BOARD_GPP_RESTOR_BUTTON,
+       BOARD_GPP_WPS_BUTTON,
+       BOARD_GPP_HDD0_POWER,
+       BOARD_GPP_HDD1_POWER,
+       BOARD_GPP_FAN_POWER,
+       BOARD_GPP_RESET,
+       BOARD_GPP_POWER_ON_LED,
+       BOARD_GPP_HDD_POWER,
+    BOARD_GPP_SDIO_POWER,
+    BOARD_GPP_SDIO_DETECT,
+    BOARD_GPP_SDIO_WP,
+       BOARD_GPP_SWITCH_PHY_INT,
+       BOARD_GPP_TSU_DIRCTION,
+       BOARD_GPP_OTHER
+}MV_BOARD_GPP_CLASS;
+
+
+typedef struct _devCsInfo
+{
+    MV_U8              deviceCS;
+    MV_U32             params;
+    MV_U32             devClass;       /* MV_BOARD_DEV_CLASS */
+    MV_U8              devWidth;
+
+}MV_DEV_CS_INFO;
+
+
+#define MV_BOARD_PHY_FORCE_10MB                0x0
+#define MV_BOARD_PHY_FORCE_100MB       0x1
+#define MV_BOARD_PHY_FORCE_1000MB      0x2
+#define MV_BOARD_PHY_SPEED_AUTO                0x3
+
+typedef struct _boardSwitchInfo
+{
+       MV_32   linkStatusIrq;
+       MV_32   qdPort[BOARD_ETH_SWITCH_PORT_NUM];
+       MV_32   qdCpuPort;
+       MV_32   smiScanMode; /* 1 for SMI_MANUAL_MODE, 0 otherwise */
+       MV_32   switchOnPort;
+
+}MV_BOARD_SWITCH_INFO;
+
+typedef struct _boardLedInfo
+{
+       MV_U8   activeLedsNumber;
+       MV_U8   ledsPolarity;   /* '0' or '1' to turn on led */
+       MV_U8*  gppPinNum;      /* Pointer to GPP values */
+
+}MV_BOARD_LED_INFO;
+
+typedef struct _boardGppInfo
+{
+       MV_BOARD_GPP_CLASS      devClass;
+       MV_U8   gppPinNum;
+
+}MV_BOARD_GPP_INFO;
+
+
+typedef struct _boardTwsiInfo
+{
+       MV_BOARD_TWSI_CLASS     devClass;
+       MV_U8   twsiDevAddr;
+       MV_U8   twsiDevAddrType;
+
+}MV_BOARD_TWSI_INFO;
+
+
+typedef enum _boardMacSpeed
+{
+       BOARD_MAC_SPEED_10M,
+       BOARD_MAC_SPEED_100M,
+       BOARD_MAC_SPEED_1000M,
+       BOARD_MAC_SPEED_AUTO,
+
+}MV_BOARD_MAC_SPEED;
+
+typedef struct _boardMacInfo
+{
+       MV_BOARD_MAC_SPEED      boardMacSpeed;
+       MV_U8   boardEthSmiAddr;
+
+}MV_BOARD_MAC_INFO;
+
+typedef struct _boardMppInfo
+{
+       MV_U32          mppGroup[MV_BOARD_MAX_MPP];
+
+}MV_BOARD_MPP_INFO;
+
+typedef struct _boardInfo
+{
+       char                            boardName[MV_BOARD_NAME_LEN];
+       MV_U8                           numBoardMppTypeValue;
+       MV_BOARD_MPP_TYPE_INFO*         pBoardMppTypeValue;
+       MV_U8                           numBoardMppConfigValue;
+       MV_BOARD_MPP_INFO*              pBoardMppConfigValue;
+       MV_U32                          intsGppMaskLow;
+       MV_U32                          intsGppMaskHigh;
+       MV_U8                           numBoardDeviceIf;
+       MV_DEV_CS_INFO*                 pDevCsInfo;
+       MV_U8                           numBoardTwsiDev;
+       MV_BOARD_TWSI_INFO*             pBoardTwsiDev;
+       MV_U8                           numBoardMacInfo;
+       MV_BOARD_MAC_INFO*              pBoardMacInfo;
+       MV_U8                           numBoardGppInfo;
+       MV_BOARD_GPP_INFO*              pBoardGppInfo;
+       MV_U8                           activeLedsNumber;
+       MV_U8*                          pLedGppPin;
+       MV_U8                           ledsPolarity;   /* '0' or '1' to turn on led */
+       /* GPP values */
+       MV_U32                          gppOutEnValLow;
+       MV_U32                          gppOutEnValHigh;
+       MV_U32                          gppOutValLow;
+       MV_U32                          gppOutValHigh;
+       MV_U32                          gppPolarityValLow;
+       MV_U32                          gppPolarityValHigh;
+
+       /* Switch Configuration */
+       MV_BOARD_SWITCH_INFO*           pSwitchInfo;
+}MV_BOARD_INFO;
+
+
+
+MV_VOID        mvBoardEnvInit(MV_VOID);
+MV_U32         mvBoardIdGet(MV_VOID);
+MV_U16         mvBoardModelGet(MV_VOID);
+MV_U16         mvBoardRevGet(MV_VOID);
+MV_STATUS      mvBoardNameGet(char *pNameBuff);
+MV_32          mvBoardPhyAddrGet(MV_U32 ethPortNum);
+MV_BOARD_MAC_SPEED      mvBoardMacSpeedGet(MV_U32 ethPortNum);
+MV_32          mvBoardLinkStatusIrqGet(MV_U32 ethPortNum);
+MV_32          mvBoardSwitchPortGet(MV_U32 ethPortNum, MV_U8 boardPortNum);
+MV_32          mvBoardSwitchCpuPortGet(MV_U32 ethPortNum);
+MV_32          mvBoardIsSwitchConnected(MV_U32 ethPortNum);
+MV_32          mvBoardSmiScanModeGet(MV_U32 ethPortNum);
+MV_BOOL        mvBoardIsPortInSgmii(MV_U32 ethPortNum);
+MV_BOOL        mvBoardIsPortInGmii(MV_VOID);
+MV_U32                 mvBoardTclkGet(MV_VOID);
+MV_U32         mvBoardSysClkGet(MV_VOID);
+MV_U32                 mvBoardDebugLedNumGet(MV_U32 boardId);
+MV_VOID        mvBoardDebugLed(MV_U32 hexNum);
+MV_32          mvBoardMppGet(MV_U32 mppGroupNum);
+
+MV_U8          mvBoardRtcTwsiAddrTypeGet(MV_VOID);
+MV_U8          mvBoardRtcTwsiAddrGet(MV_VOID);
+
+MV_U8          mvBoardA2DTwsiAddrTypeGet(MV_VOID);
+MV_U8          mvBoardA2DTwsiAddrGet(MV_VOID);
+
+MV_U8          mvBoardTwsiExpAddrGet(MV_U32 index);
+MV_U8          mvBoardTwsiSatRAddrTypeGet(MV_U32 index);
+MV_U8          mvBoardTwsiSatRAddrGet(MV_U32 index);
+MV_U8          mvBoardTwsiExpAddrTypeGet(MV_U32 index);
+MV_BOARD_MODULE_ID_CLASS       mvBoarModuleTypeGet(MV_BOARD_MPP_GROUP_CLASS devClass);
+MV_BOARD_MPP_TYPE_CLASS        mvBoardMppGroupTypeGet(MV_BOARD_MPP_GROUP_CLASS mppGroupClass);
+MV_VOID        mvBoardMppGroupTypeSet(MV_BOARD_MPP_GROUP_CLASS mppGroupClass,
+                                               MV_BOARD_MPP_TYPE_CLASS mppGroupType);
+MV_VOID        mvBoardMppGroupIdUpdate(MV_VOID);
+MV_VOID        mvBoardMppMuxSet(MV_VOID);
+MV_VOID        mvBoardTdmMppSet(MV_32 chType);
+MV_VOID        mvBoardVoiceConnModeGet(MV_32* connMode, MV_32* irqMode);
+
+MV_VOID        mvBoardMppModuleTypePrint(MV_VOID);
+MV_VOID                mvBoardReset(MV_VOID);
+MV_U8          mvBoarTwsiSatRGet(MV_U8 devNum, MV_U8 regNum);
+MV_STATUS              mvBoarTwsiSatRSet(MV_U8 devNum, MV_U8 regNum, MV_U8 regVal);
+MV_BOOL        mvBoardSpecInitGet(MV_U32* regOff, MV_U32* data);
+/* Board devices API managments */
+MV_32              mvBoardGetDevicesNumber(MV_BOARD_DEV_CLASS devClass);
+MV_32              mvBoardGetDeviceBaseAddr(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
+MV_32      mvBoardGetDeviceBusWidth(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
+MV_32              mvBoardGetDeviceWidth(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
+MV_32              mvBoardGetDeviceWinSize(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
+MV_U32             boardGetDevCSNum(MV_32 devNum, MV_BOARD_DEV_CLASS devClass);
+
+/* Gpio Pin Connections API */
+MV_32      mvBoardUSBVbusGpioPinGet(int devId);
+MV_32      mvBoardUSBVbusEnGpioPinGet(int devId);
+MV_U32      mvBoardPexBridgeIntPinGet(MV_U32 devNum, MV_U32 intPin);
+
+MV_32      mvBoardResetGpioPinGet(MV_VOID);
+MV_32      mvBoardRTCGpioPinGet(MV_VOID);
+MV_32      mvBoardGpioIntMaskLowGet(MV_VOID);
+MV_32      mvBoardGpioIntMaskHighGet(MV_VOID);
+MV_32      mvBoardSlicGpioPinGet(MV_U32 slicNum);
+
+MV_32      mvBoardSDIOGpioPinGet(MV_VOID);
+MV_STATUS   mvBoardSDioWPControl(MV_BOOL mode);
+MV_32      mvBoarGpioPinNumGet(MV_BOARD_GPP_CLASS class, MV_U32 index);
+
+MV_32      mvBoardNandWidthGet(void);
+MV_STATUS   mvBoardFanPowerControl(MV_BOOL mode);
+MV_STATUS   mvBoardHDDPowerControl(MV_BOOL mode);
+#endif /* __INCmvBoardEnvLibh */