| /******************************************************************************* |
| 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. |
| |
| *******************************************************************************/ |
| #include "mvCommon.h" |
| #include "mvBoardEnvLib.h" |
| #include "mvBoardEnvSpec.h" |
| #include "twsi/mvTwsi.h" |
| #include "pex/mvPexRegs.h" |
| |
| #define ARRSZ(x) (sizeof(x) / sizeof(x[0])) |
| |
| /***************************************** Customer Boards *****************************************/ |
| /******************************************************************************* |
| * Armada 375 Customer board - Based on DB_88F6720 */ |
| /*******************************************************************************/ |
| |
| #define A375_CUSTOMER_BOARD_0_NOR_READ_PARAMS 0x403E07CF |
| #define A375_CUSTOMER_BOARD_0_NOR_WRITE_PARAMS 0x000F0F0F |
| |
| #define A375_CUSTOMER_BOARD_0_NAND_READ_PARAMS 0x003E07CF |
| #define A375_CUSTOMER_BOARD_0_NAND_WRITE_PARAMS 0x000F0F0F |
| |
| MV_BOARD_TWSI_INFO armada_375_customer_board_0_BoardTwsiDev[] = { |
| /* {{MV_BOARD_DEV_CLASS devClass, MV_U8 devClassId, MV_U8 twsiDevAddr, MV_U8 twsiDevAddrType}} */ |
| { BOARD_DEV_TWSI_SATR, 0, 0x4C, ADDR7_BIT }, |
| { BOARD_DEV_TWSI_SATR, 1, 0x4D, ADDR7_BIT }, |
| { BOARD_DEV_TWSI_EEPROM, 0, 0x52, ADDR7_BIT }, |
| }; |
| |
| MV_BOARD_MAC_INFO armada_375_customer_board_0_BoardMacInfo[] = { |
| /* {{MV_BOARD_MAC_SPEED boardMacSpeed, MV_32 boardEthSmiAddr , MV_32 boardEthSmiAddr0;}} */ |
| { BOARD_MAC_SPEED_AUTO, 0x0, 0x0}, |
| { BOARD_MAC_SPEED_AUTO, 0x3, 0x3}, |
| { N_A, N_A, N_A} |
| }; |
| MV_BOARD_MPP_TYPE_INFO armada_375_customer_board_0_BoardModTypeInfo[] = { |
| { |
| .boardMppSlic = MV_BOARD_SLIC_DISABLED, |
| .ethSataComplexOpt = (MV_ETHCOMP_GE_MAC1_2_GE_PHY_P3 | MV_ETHCOMP_GE_MAC0_2_RGMII0), |
| .ethPortsMode = 0x0 |
| } |
| }; |
| |
| MV_DEV_CS_INFO armada_375_customer_board_0_BoardDeCsInfo[] = { |
| /*{deviceCS, params, devType, devWidth, busWidth, busNum, active }*/ |
| { DEV_BOOCS, N_A, BOARD_DEV_NAND_FLASH, 16, 16, 0, MV_FALSE }, /* NAND DEV */ |
| { DEVICE_CS0, N_A, BOARD_DEV_NAND_FLASH, 16, 16, 0, MV_FALSE }, /* NAND DEV */ |
| { DEVICE_CS1, N_A, BOARD_DEV_NAND_FLASH, 16, 16, 0, MV_FALSE }, /* NAND DEV */ |
| { DEVICE_CS2, N_A, BOARD_DEV_NAND_FLASH, 16, 16, 0, MV_FALSE }, /* NAND DEV */ |
| { DEVICE_CS3, N_A, BOARD_DEV_NAND_FLASH, 16, 16, 0, MV_FALSE }, /* NAND DEV */ |
| { DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 16, 16, 0, MV_FALSE }, /* NOR DEV */ |
| { SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_TRUE }, /* SPI DEV */ |
| { SPI_CS1, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_FALSE }, /* SPI DEV */ |
| { SPI_CS2, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_FALSE }, /* SPI DEV */ |
| { SPI_CS3, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_FALSE }, /* SPI DEV */ |
| { SPI_CS4, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_FALSE }, /* SPI DEV */ |
| { SPI_CS5, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_FALSE }, /* SPI DEV */ |
| { SPI_CS6, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_FALSE }, /* SPI DEV */ |
| { SPI_CS7, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_FALSE } /* SPI DEV */ |
| }; |
| |
| MV_BOARD_MPP_INFO armada_375_customer_board_0_BoardMppConfigValue[] = { |
| { { |
| A375_CUSTOMER_BOARD_0_MPP0_7, |
| A375_CUSTOMER_BOARD_0_MPP8_15, |
| A375_CUSTOMER_BOARD_0_MPP16_23, |
| A375_CUSTOMER_BOARD_0_MPP24_31, |
| A375_CUSTOMER_BOARD_0_MPP32_39, |
| A375_CUSTOMER_BOARD_0_MPP40_47, |
| A375_CUSTOMER_BOARD_0_MPP48_55, |
| A375_CUSTOMER_BOARD_0_MPP56_63, |
| A375_CUSTOMER_BOARD_0_MPP64_67, |
| } } |
| }; |
| |
| MV_BOARD_INFO armada_375_customer_board_0_info = { |
| .boardName = "Armada-375-Customer-Board-0", |
| .numBoardMppTypeValue = ARRSZ(armada_375_customer_board_0_BoardModTypeInfo), |
| .pBoardModTypeValue = armada_375_customer_board_0_BoardModTypeInfo, |
| .pBoardMppConfigValue = armada_375_customer_board_0_BoardMppConfigValue, |
| .intsGppMaskLow = 0, |
| .intsGppMaskMid = 0, |
| .intsGppMaskHigh = 0, |
| .numBoardDeviceIf = ARRSZ(armada_375_customer_board_0_BoardDeCsInfo), |
| .pDevCsInfo = armada_375_customer_board_0_BoardDeCsInfo, |
| .numBoardTwsiDev = ARRSZ(armada_375_customer_board_0_BoardTwsiDev), |
| .pBoardTwsiDev = armada_375_customer_board_0_BoardTwsiDev, |
| .numBoardMacInfo = ARRSZ(armada_375_customer_board_0_BoardMacInfo), |
| .pBoardMacInfo = armada_375_customer_board_0_BoardMacInfo, |
| .numBoardGppInfo = 0, |
| .pBoardGppInfo = 0, |
| .activeLedsNumber = 0, |
| .pLedGppPin = NULL, |
| .ledsPolarity = 0, |
| |
| /* PMU Power */ |
| .pmuPwrUpPolarity = 0, |
| .pmuPwrUpDelay = 80000, |
| |
| /* GPP values */ |
| .gppOutEnValLow = A375_CUSTOMER_BOARD_0_GPP_OUT_ENA_LOW, |
| .gppOutEnValMid = A375_CUSTOMER_BOARD_0_GPP_OUT_ENA_MID, |
| .gppOutEnValHigh = A375_CUSTOMER_BOARD_0_GPP_OUT_ENA_HIGH, |
| .gppOutValLow = A375_CUSTOMER_BOARD_0_GPP_OUT_VAL_LOW, |
| .gppOutValMid = A375_CUSTOMER_BOARD_0_GPP_OUT_VAL_MID, |
| .gppOutValHigh = A375_CUSTOMER_BOARD_0_GPP_OUT_VAL_HIGH, |
| .gppPolarityValLow = A375_CUSTOMER_BOARD_0_GPP_POL_LOW, |
| .gppPolarityValMid = A375_CUSTOMER_BOARD_0_GPP_POL_MID, |
| .gppPolarityValHigh = A375_CUSTOMER_BOARD_0_GPP_POL_HIGH, |
| |
| /* External Switch Configuration */ |
| .switchforceLinkMask = 0x0, |
| |
| /* TDM */ |
| .numBoardTdmInfo = {}, |
| .pBoardTdmInt2CsInfo = {}, |
| .boardTdmInfoIndex = -1, |
| |
| .pBoardSpecInit = NULL, |
| .numPicGpioInfo = 0, |
| |
| /* NAND init params */ |
| .nandFlashReadParams = A375_CUSTOMER_BOARD_0_NAND_READ_PARAMS, |
| .nandFlashWriteParams = A375_CUSTOMER_BOARD_0_NAND_WRITE_PARAMS, |
| .nandFlashControl = 0, |
| .nandIfMode = NAND_IF_NFC, |
| /* NOR init params */ |
| .norFlashReadParams = A375_CUSTOMER_BOARD_0_NOR_READ_PARAMS, |
| .norFlashWriteParams = A375_CUSTOMER_BOARD_0_NOR_WRITE_PARAMS, |
| /* Enable modules auto-detection. */ |
| .configAutoDetect = MV_FALSE |
| }; |
| |
| MV_BOARD_INFO *customerBoardInfoTbl[] = { |
| &armada_375_customer_board_0_info, |
| &armada_375_customer_board_0_info |
| }; |
| |
| /***************************************** Marvell Boards *****************************************/ |
| /******************************************************************************* |
| * Armada 375 DB-88F6720 board */ |
| /*******************************************************************************/ |
| |
| #define DB_88F6720_BOARD_NOR_READ_PARAMS 0x403E07CF |
| #define DB_88F6720_BOARD_NOR_WRITE_PARAMS 0x000F0F0F |
| |
| #define DB_88F6720_BOARD_NAND_READ_PARAMS 0x003E07CF |
| #define DB_88F6720_BOARD_NAND_WRITE_PARAMS 0x000F0F0F |
| |
| MV_BOARD_TWSI_INFO db88f6720InfoBoardTwsiDev[] = { |
| /* {{MV_BOARD_DEV_CLASS devClass, MV_U8 devClassId, MV_U8 twsiDevAddr, MV_U8 twsiDevAddrType}} */ |
| { BOARD_DEV_TWSI_SATR, 0, 0x4C, ADDR7_BIT }, |
| { BOARD_DEV_TWSI_SATR, 1, 0x4D, ADDR7_BIT }, |
| { BOARD_DEV_TWSI_EEPROM, 0, 0x52, ADDR7_BIT }, |
| { BOARD_DEV_TWSI_IO_EXPANDER, 0, 0x24, ADDR7_BIT }, |
| }; |
| |
| MV_BOARD_MAC_INFO db88f6720InfoBoardMacInfo[] = { |
| /* {{MV_BOARD_MAC_SPEED boardMacSpeed, MV_32 boardEthSmiAddr , MV_32 boardEthSmiAddr0;}} */ |
| { BOARD_MAC_SPEED_AUTO, 0x0, 0x0 }, |
| { BOARD_MAC_SPEED_AUTO, 0x3, 0x3 }, |
| { N_A, N_A, N_A }, |
| }; |
| MV_BOARD_MPP_TYPE_INFO db88f6720InfoBoardModTypeInfo[] = { |
| { |
| .boardMppSlic = MV_BOARD_SLIC_DISABLED, |
| .ethSataComplexOpt = (MV_ETHCOMP_GE_MAC1_2_GE_PHY_P3 | MV_ETHCOMP_GE_MAC0_2_RGMII0), |
| .ethPortsMode = 0x0 |
| } |
| }; |
| |
| MV_BOARD_USB_INFO db88f6720InfoBoardUsbInfo[] = { |
| /* {MV_UNIT_ID usbType, MV_U8 usbPortNum, MV_BOOL isActive} */ |
| { USB3_UNIT_ID, 0, MV_TRUE}, |
| { USB_UNIT_ID, 1, MV_TRUE}, |
| }; |
| |
| MV_DEV_CS_INFO db88f6720InfoBoardDeCsInfo[] = { |
| /*{deviceCS, params, devType, devWidth, busWidth, busNum, active }*/ |
| { DEV_BOOCS, N_A, BOARD_DEV_NAND_FLASH, 16, 16, 0, MV_FALSE }, /* NAND DEV */ |
| { DEV_BOOCS, N_A, BOARD_DEV_NOR_FLASH, 16, 16, 0, MV_FALSE }, /* NOR DEV */ |
| { SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8, 8, 0, MV_TRUE } /* SPI DEV */ |
| }; |
| |
| MV_BOARD_MPP_INFO db88f6720InfoBoardMppConfigValue[] = { |
| { { |
| DB_88F6720_MPP0_7, |
| DB_88F6720_MPP8_15, |
| DB_88F6720_MPP16_23, |
| DB_88F6720_MPP24_31, |
| DB_88F6720_MPP32_39, |
| DB_88F6720_MPP40_47, |
| DB_88F6720_MPP48_55, |
| DB_88F6720_MPP56_63, |
| DB_88F6720_MPP64_67, |
| } } |
| }; |
| |
| MV_BOARD_INFO db88f6720_board_info = { |
| .boardName = "DB-88F6720-V2", |
| .compatibleDTName = "db", |
| .numBoardMppTypeValue = ARRSZ(db88f6720InfoBoardModTypeInfo), |
| .pBoardModTypeValue = db88f6720InfoBoardModTypeInfo, |
| .pBoardMppConfigValue = db88f6720InfoBoardMppConfigValue, |
| .intsGppMaskLow = 0, |
| .intsGppMaskMid = 0, |
| .intsGppMaskHigh = 0, |
| .numBoardDeviceIf = ARRSZ(db88f6720InfoBoardDeCsInfo), |
| .pDevCsInfo = db88f6720InfoBoardDeCsInfo, |
| .numBoardTwsiDev = ARRSZ(db88f6720InfoBoardTwsiDev), |
| .pBoardTwsiDev = db88f6720InfoBoardTwsiDev, |
| .numBoardMacInfo = ARRSZ(db88f6720InfoBoardMacInfo), |
| .pBoardMacInfo = db88f6720InfoBoardMacInfo, |
| .numBoardGppInfo = 0, |
| .pBoardGppInfo = 0, |
| .activeLedsNumber = 0, |
| .pLedGppPin = NULL, |
| .ledsPolarity = 0, |
| |
| /* PMU Power */ |
| .pmuPwrUpPolarity = 0, |
| .pmuPwrUpDelay = 80000, |
| |
| /* GPP values */ |
| .gppOutEnValLow = DB_88F6720_GPP_OUT_ENA_LOW, |
| .gppOutEnValMid = DB_88F6720_GPP_OUT_ENA_MID, |
| .gppOutEnValHigh = DB_88F6720_GPP_OUT_ENA_HIGH, |
| .gppOutValLow = DB_88F6720_GPP_OUT_VAL_LOW, |
| .gppOutValMid = DB_88F6720_GPP_OUT_VAL_MID, |
| .gppOutValHigh = DB_88F6720_GPP_OUT_VAL_HIGH, |
| .gppPolarityValLow = DB_88F6720_GPP_POL_LOW, |
| .gppPolarityValMid = DB_88F6720_GPP_POL_MID, |
| .gppPolarityValHigh = DB_88F6720_GPP_POL_HIGH, |
| |
| .pBoardUsbInfo = db88f6720InfoBoardUsbInfo, |
| .numBoardUsbInfo = ARRSZ(db88f6720InfoBoardUsbInfo), |
| |
| /* External Switch Configuration */ |
| .switchforceLinkMask = 0x0, |
| |
| /* TDM */ |
| .numBoardTdmInfo = {}, |
| .pBoardTdmInt2CsInfo = {}, |
| .boardTdmInfoIndex = -1, |
| |
| .pBoardSpecInit = NULL, |
| .numPicGpioInfo = 0, |
| |
| /* NAND init params */ |
| .nandFlashReadParams = DB_88F6720_BOARD_NAND_READ_PARAMS, |
| .nandFlashWriteParams = DB_88F6720_BOARD_NAND_WRITE_PARAMS, |
| .nandFlashControl = 0, |
| /* NOR init params */ |
| .norFlashReadParams = DB_88F6720_BOARD_NOR_READ_PARAMS, |
| .norFlashWriteParams = DB_88F6720_BOARD_NOR_WRITE_PARAMS, |
| /* Enable modules auto-detection. */ |
| .configAutoDetect = MV_TRUE |
| }; |
| |
| /* |
| * All supported Armada 375 boards |
| */ |
| MV_BOARD_INFO *marvellBoardInfoTbl[] = { |
| &db88f6720_board_info, |
| }; |
| |