You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
377 lines
12 KiB
C
377 lines
12 KiB
C
/*******************************************************************************
|
|
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 */
|