diff options
Diffstat (limited to 'target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys')
28 files changed, 0 insertions, 10757 deletions
diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvAhbToMbus.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvAhbToMbus.c deleted file mode 100644 index d21bb074d2..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvAhbToMbus.c +++ /dev/null @@ -1,1048 +0,0 @@ -/******************************************************************************* -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. - -*******************************************************************************/ - - -/* includes */ -#include "ctrlEnv/sys/mvAhbToMbus.h" -#include "ctrlEnv/mvCtrlEnvAddrDec.h" - -#undef MV_DEBUG -/* defines */ -#ifdef MV_DEBUG - #define DB(x) x -#else - #define DB(x) -#endif - -/* typedefs */ - - -/* CPU address remap registers offsets are inconsecutive. This struct */ -/* describes address remap register offsets */ -typedef struct _ahbToMbusRemapRegOffs -{ - MV_U32 lowRegOffs; /* Low 32-bit remap register offset */ - MV_U32 highRegOffs; /* High 32 bit remap register offset */ -}AHB_TO_MBUS_REMAP_REG_OFFS; - -/* locals */ -static MV_STATUS ahbToMbusRemapRegOffsGet (MV_U32 winNum, - AHB_TO_MBUS_REMAP_REG_OFFS *pRemapRegs); - -/******************************************************************************* -* mvAhbToMbusInit - Initialize Ahb To Mbus Address Map ! -* -* DESCRIPTION: -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_OK laways. -* -*******************************************************************************/ -MV_STATUS mvAhbToMbusInit(void) -{ - return MV_OK; - -} - -/******************************************************************************* -* mvAhbToMbusWinSet - Set CPU-to-peripheral winNum address window -* -* DESCRIPTION: -* This function sets -* address window, also known as address decode window. -* A new address decode window is set for specified winNum address window. -* If address decode window parameter structure enables the window, -* the routine will also enable the winNum window, allowing CPU to access -* the winNum window. -* -* INPUT: -* winNum - Windows number. -* pAddrDecWin - CPU winNum window data structure. -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_OK if CPU winNum window was set correctly, MV_ERROR in case of -* address window overlapps with other active CPU winNum window or -* trying to assign 36bit base address while CPU does not support that. -* The function returns MV_NOT_SUPPORTED, if the winNum is unsupported. -* -*******************************************************************************/ -MV_STATUS mvAhbToMbusWinSet(MV_U32 winNum, MV_AHB_TO_MBUS_DEC_WIN *pAddrDecWin) -{ - MV_TARGET_ATTRIB targetAttribs; - MV_DEC_REGS decRegs; - - /* Parameter checking */ - if (winNum >= MAX_AHB_TO_MBUS_WINS) - { - mvOsPrintf("mvAhbToMbusWinSet: ERR. Invalid winNum %d\n", winNum); - return MV_NOT_SUPPORTED; - } - - - /* read base register*/ - if (winNum != MV_AHB_TO_MBUS_INTREG_WIN) - { - decRegs.baseReg = MV_REG_READ(AHB_TO_MBUS_WIN_BASE_REG(winNum)); - } - else - { - decRegs.baseReg = MV_REG_READ(AHB_TO_MBUS_WIN_INTEREG_REG); - } - - /* check if address is aligned to the size */ - if(MV_IS_NOT_ALIGN(pAddrDecWin->addrWin.baseLow, pAddrDecWin->addrWin.size)) - { - mvOsPrintf("mvAhbToMbusWinSet:Error setting AHB to MBUS window %d to "\ - "target %s.\nAddress 0x%08x is unaligned to size 0x%x.\n", - winNum, - mvCtrlTargetNameGet(pAddrDecWin->target), - pAddrDecWin->addrWin.baseLow, - pAddrDecWin->addrWin.size); - return MV_ERROR; - } - - /* read control register*/ - if (winNum != MV_AHB_TO_MBUS_INTREG_WIN) - { - decRegs.sizeReg = MV_REG_READ(AHB_TO_MBUS_WIN_CTRL_REG(winNum)); - } - - if (MV_OK != mvCtrlAddrDecToReg(&(pAddrDecWin->addrWin),&decRegs)) - { - mvOsPrintf("mvAhbToMbusWinSet:mvCtrlAddrDecToReg Failed\n"); - return MV_ERROR; - } - - /* enable\Disable */ - if (MV_TRUE == pAddrDecWin->enable) - { - decRegs.sizeReg |= ATMWCR_WIN_ENABLE; - } - else - { - decRegs.sizeReg &= ~ATMWCR_WIN_ENABLE; - } - - mvCtrlAttribGet(pAddrDecWin->target,&targetAttribs); - - /* set attributes */ - decRegs.sizeReg &= ~ATMWCR_WIN_ATTR_MASK; - decRegs.sizeReg |= targetAttribs.attrib << ATMWCR_WIN_ATTR_OFFS; - /* set target ID */ - decRegs.sizeReg &= ~ATMWCR_WIN_TARGET_MASK; - decRegs.sizeReg |= targetAttribs.targetId << ATMWCR_WIN_TARGET_OFFS; - -#if !defined(MV_RUN_FROM_FLASH) - /* To be on the safe side we disable the window before writing the */ - /* new values. */ - if (winNum != MV_AHB_TO_MBUS_INTREG_WIN) - { - mvAhbToMbusWinEnable(winNum,MV_FALSE); - } -#endif - - /* 3) Write to address decode Base Address Register */ - if (winNum != MV_AHB_TO_MBUS_INTREG_WIN) - { - MV_REG_WRITE(AHB_TO_MBUS_WIN_BASE_REG(winNum), decRegs.baseReg); - } - else - { - MV_REG_WRITE(AHB_TO_MBUS_WIN_INTEREG_REG, decRegs.baseReg); - } - - - /* Internal register space have no size */ - /* register. Do not perform size register assigment for those targets */ - if (winNum != MV_AHB_TO_MBUS_INTREG_WIN) - { - /* Write to address decode Size Register */ - MV_REG_WRITE(AHB_TO_MBUS_WIN_CTRL_REG(winNum), decRegs.sizeReg); - } - - return MV_OK; -} - -/******************************************************************************* -* mvAhbToMbusWinGet - Get CPU-to-peripheral winNum address window -* -* DESCRIPTION: -* Get the CPU peripheral winNum address window. -* -* INPUT: -* winNum - Peripheral winNum enumerator -* -* OUTPUT: -* pAddrDecWin - CPU winNum window information data structure. -* -* RETURN: -* MV_OK if winNum exist, MV_ERROR otherwise. -* -*******************************************************************************/ -MV_STATUS mvAhbToMbusWinGet(MV_U32 winNum, MV_AHB_TO_MBUS_DEC_WIN *pAddrDecWin) -{ - MV_DEC_REGS decRegs; - MV_TARGET_ATTRIB targetAttrib; - - - /* Parameter checking */ - if (winNum >= MAX_AHB_TO_MBUS_WINS) - { - mvOsPrintf("mvAhbToMbusWinGet: ERR. Invalid winNum %d\n", winNum); - return MV_NOT_SUPPORTED; - } - - - /* Internal register space size have no size register*/ - if (winNum != MV_AHB_TO_MBUS_INTREG_WIN) - { - decRegs.sizeReg = MV_REG_READ(AHB_TO_MBUS_WIN_CTRL_REG(winNum)); - } - else - { - decRegs.sizeReg = 0; - } - - - /* Read base and size */ - if (winNum != MV_AHB_TO_MBUS_INTREG_WIN) - { - decRegs.baseReg = MV_REG_READ(AHB_TO_MBUS_WIN_BASE_REG(winNum)); - } - else - { - decRegs.baseReg = MV_REG_READ(AHB_TO_MBUS_WIN_INTEREG_REG); - } - - - - if (MV_OK != mvCtrlRegToAddrDec(&decRegs,&(pAddrDecWin->addrWin))) - { - mvOsPrintf("mvAhbToMbusWinGet: mvCtrlRegToAddrDec Failed \n"); - return MV_ERROR; - } - - if (winNum == MV_AHB_TO_MBUS_INTREG_WIN) - { - pAddrDecWin->addrWin.size = INTER_REGS_SIZE; - pAddrDecWin->target = INTER_REGS; - pAddrDecWin->enable = MV_TRUE; - - return MV_OK; - } - - - if (decRegs.sizeReg & ATMWCR_WIN_ENABLE) - { - pAddrDecWin->enable = MV_TRUE; - } - else - { - pAddrDecWin->enable = MV_FALSE; - - } - - - - if (-1 == pAddrDecWin->addrWin.size) - { - return MV_ERROR; - } - - /* attrib and targetId */ - targetAttrib.attrib = (decRegs.sizeReg & ATMWCR_WIN_ATTR_MASK) >> - ATMWCR_WIN_ATTR_OFFS; - targetAttrib.targetId = (decRegs.sizeReg & ATMWCR_WIN_TARGET_MASK) >> - ATMWCR_WIN_TARGET_OFFS; - - pAddrDecWin->target = mvCtrlTargetGet(&targetAttrib); - - return MV_OK; -} - -/******************************************************************************* -* mvAhbToMbusWinTargetGet - Get Window number associated with target -* -* DESCRIPTION: -* -* INPUT: -* -* OUTPUT: -* -* RETURN: -* -*******************************************************************************/ -MV_U32 mvAhbToMbusWinTargetGet(MV_TARGET target) -{ - MV_AHB_TO_MBUS_DEC_WIN decWin; - MV_U32 winNum; - - /* Check parameters */ - if (target >= MAX_TARGETS) - { - mvOsPrintf("mvAhbToMbusWinTargetGet: target %d is Illigal\n", target); - return 0xffffffff; - } - - if (INTER_REGS == target) - { - return MV_AHB_TO_MBUS_INTREG_WIN; - } - - for (winNum = 0; winNum < MAX_AHB_TO_MBUS_WINS ; winNum++) - { - if (winNum == MV_AHB_TO_MBUS_INTREG_WIN) - continue; - - if (mvAhbToMbusWinGet(winNum,&decWin) != MV_OK) - { - mvOsPrintf("mvAhbToMbusWinTargetGet: mvAhbToMbusWinGet fail\n"); - return 0xffffffff; - - } - - if (decWin.enable == MV_TRUE) - { - if (decWin.target == target) - { - return winNum; - } - - } - - } - - return 0xFFFFFFFF; - - -} - -/******************************************************************************* -* mvAhbToMbusWinAvailGet - Get First Available window number. -* -* DESCRIPTION: -* -* INPUT: -* -* OUTPUT: -* -* RETURN: -* -*******************************************************************************/ -MV_U32 mvAhbToMbusWinAvailGet(MV_VOID) -{ - MV_AHB_TO_MBUS_DEC_WIN decWin; - MV_U32 winNum; - - for (winNum = 0; winNum < MAX_AHB_TO_MBUS_WINS ; winNum++) - { - if (winNum == MV_AHB_TO_MBUS_INTREG_WIN) - continue; - - if (mvAhbToMbusWinGet(winNum,&decWin) != MV_OK) - { - mvOsPrintf("mvAhbToMbusWinTargetGet: mvAhbToMbusWinGet fail\n"); - return 0xffffffff; - - } - - if (decWin.enable == MV_FALSE) - { - return winNum; - } - - } - - return 0xFFFFFFFF; -} - - -/******************************************************************************* -* mvAhbToMbusWinEnable - Enable/disable a CPU address decode window -* -* DESCRIPTION: -* This function enable/disable a CPU address decode window. -* if parameter 'enable' == MV_TRUE the routine will enable the -* window, thus enabling CPU accesses (before enabling the window it is -* tested for overlapping). Otherwise, the window will be disabled. -* -* INPUT: -* winNum - Peripheral winNum enumerator. -* enable - Enable/disable parameter. -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_ERROR if protection window number was wrong, or the window -* overlapps other winNum window. -* -*******************************************************************************/ -MV_STATUS mvAhbToMbusWinEnable(MV_U32 winNum, MV_BOOL enable) -{ - - /* Parameter checking */ - if (winNum >= MAX_AHB_TO_MBUS_WINS) - { - mvOsPrintf("mvAhbToMbusWinEnable: ERR. Invalid winNum %d\n", winNum); - return MV_NOT_SUPPORTED; - } - - /* Internal registers bar can't be disable or enabled */ - if (winNum == MV_AHB_TO_MBUS_INTREG_WIN) - { - return (enable ? MV_OK : MV_ERROR); - } - - if (enable == MV_TRUE) - { - /* enable the window */ - MV_REG_BIT_SET(AHB_TO_MBUS_WIN_CTRL_REG(winNum), ATMWCR_WIN_ENABLE); - } - else - { /* Disable address decode winNum window */ - MV_REG_BIT_RESET(AHB_TO_MBUS_WIN_CTRL_REG(winNum), ATMWCR_WIN_ENABLE); - } - - return MV_OK; -} - - -/******************************************************************************* -* mvAhbToMbusWinRemap - Set CPU remap register for address windows. -* -* DESCRIPTION: -* After a CPU address hits one of PCI address decode windows there is an -* option to remap the address to a different one. For example, CPU -* executes a read from PCI winNum window address 0x1200.0000. This -* can be modified so the address on the PCI bus would be 0x1400.0000 -* Using the PCI address remap mechanism. -* -* INPUT: -* winNum - Peripheral winNum enumerator. Must be a PCI winNum. -* pAddrDecWin - CPU winNum window information data structure. -* Note that caller has to fill in the base field only. The -* size field is ignored. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if winNum is not a PCI one, MV_OK otherwise. -* -*******************************************************************************/ -MV_U32 mvAhbToMbusWinRemap(MV_U32 winNum, MV_ADDR_WIN *pAddrWin) -{ - MV_U32 baseAddr; - AHB_TO_MBUS_REMAP_REG_OFFS remapRegOffs; - - MV_U32 effectiveBaseAddress=0, - baseAddrValue=0,windowSizeValue=0; - - - /* Get registers offsets of given winNum */ - if (MV_NO_SUCH == ahbToMbusRemapRegOffsGet(winNum, &remapRegOffs)) - { - return 0xffffffff; - } - - /* 1) Set address remap low */ - baseAddr = pAddrWin->baseLow; - - /* Check base address aligment */ - /* - if (MV_IS_NOT_ALIGN(baseAddr, ATMWRLR_REMAP_LOW_ALIGNMENT)) - { - mvOsPrintf("mvAhbToMbusPciRemap: Warning. Target base 0x%x unaligned\n", - baseAddr); - return MV_ERROR; - } - */ - - /* BaseLow[31:16] => base register [31:16] */ - baseAddr = baseAddr & ATMWRLR_REMAP_LOW_MASK; - - MV_REG_WRITE(remapRegOffs.lowRegOffs, baseAddr); - - MV_REG_WRITE(remapRegOffs.highRegOffs, pAddrWin->baseHigh); - - - baseAddrValue = MV_REG_READ(AHB_TO_MBUS_WIN_BASE_REG(winNum)); - windowSizeValue = MV_REG_READ(AHB_TO_MBUS_WIN_CTRL_REG(winNum)); - - baseAddrValue &= ATMWBR_BASE_MASK; - windowSizeValue &=ATMWCR_WIN_SIZE_MASK; - - /* Start calculating the effective Base Address */ - effectiveBaseAddress = baseAddrValue ; - - /* The effective base address will be combined from the chopped (if any) - remap value (according to the size value and remap mechanism) and the - window's base address */ - effectiveBaseAddress |= (((windowSizeValue) | 0xffff) & pAddrWin->baseLow); - /* If the effectiveBaseAddress exceed the window boundaries return an - invalid value. */ - - if (effectiveBaseAddress > (baseAddrValue + (windowSizeValue | 0xffff))) - { - mvOsPrintf("mvAhbToMbusPciRemap: Error\n"); - return 0xffffffff; - } - - return effectiveBaseAddress; - - -} -/******************************************************************************* -* mvAhbToMbusWinTargetSwap - Swap AhbToMbus windows between targets -* -* DESCRIPTION: -* -* INPUT: -* target1 - CPU Interface target 1 -* target2 - CPU Interface target 2 -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if targets are illigal, or if one of the targets is not -* associated to a valid window . -* MV_OK otherwise. -* -*******************************************************************************/ - - -MV_STATUS mvAhbToMbusWinTargetSwap(MV_TARGET target1,MV_TARGET target2) -{ - MV_U32 winNum1,winNum2; - MV_AHB_TO_MBUS_DEC_WIN winDec1,winDec2,winDecTemp; - AHB_TO_MBUS_REMAP_REG_OFFS remapRegs1,remapRegs2; - MV_U32 remapBaseLow1=0,remapBaseLow2=0; - MV_U32 remapBaseHigh1=0,remapBaseHigh2=0; - - - /* Check parameters */ - if (target1 >= MAX_TARGETS) - { - mvOsPrintf("mvAhbToMbusWinTargetSwap: target %d is Illigal\n", target1); - return MV_ERROR; - } - - if (target2 >= MAX_TARGETS) - { - mvOsPrintf("mvAhbToMbusWinTargetSwap: target %d is Illigal\n", target1); - return MV_ERROR; - } - - - /* get window associated with this target */ - winNum1 = mvAhbToMbusWinTargetGet(target1); - - if (winNum1 == 0xffffffff) - { - mvOsPrintf("mvAhbToMbusWinTargetSwap: target %d has illigal win %d\n", - target1,winNum1); - return MV_ERROR; - - } - - /* get window associated with this target */ - winNum2 = mvAhbToMbusWinTargetGet(target2); - - if (winNum2 == 0xffffffff) - { - mvOsPrintf("mvAhbToMbusWinTargetSwap: target %d has illigal win %d\n", - target2,winNum2); - return MV_ERROR; - - } - - /* now Get original values of both Windows */ - if (MV_OK != mvAhbToMbusWinGet(winNum1,&winDec1)) - { - mvOsPrintf("mvAhbToMbusWinTargetSwap: mvAhbToMbusWinGet failed win %d\n", - winNum1); - return MV_ERROR; - - } - if (MV_OK != mvAhbToMbusWinGet(winNum2,&winDec2)) - { - mvOsPrintf("mvAhbToMbusWinTargetSwap: mvAhbToMbusWinGet failed win %d\n", - winNum2); - return MV_ERROR; - - } - - - /* disable both windows */ - if (MV_OK != mvAhbToMbusWinEnable(winNum1,MV_FALSE)) - { - mvOsPrintf("mvAhbToMbusWinTargetSwap: failed to enable window %d\n", - winNum1); - return MV_ERROR; - - } - if (MV_OK != mvAhbToMbusWinEnable(winNum2,MV_FALSE)) - { - mvOsPrintf("mvAhbToMbusWinTargetSwap: failed to enable windo %d\n", - winNum2); - return MV_ERROR; - - } - - - /* now swap targets */ - - /* first save winDec2 values */ - winDecTemp.addrWin.baseHigh = winDec2.addrWin.baseHigh; - winDecTemp.addrWin.baseLow = winDec2.addrWin.baseLow; - winDecTemp.addrWin.size = winDec2.addrWin.size; - winDecTemp.enable = winDec2.enable; - winDecTemp.target = winDec2.target; - - /* winDec2 = winDec1 */ - winDec2.addrWin.baseHigh = winDec1.addrWin.baseHigh; - winDec2.addrWin.baseLow = winDec1.addrWin.baseLow; - winDec2.addrWin.size = winDec1.addrWin.size; - winDec2.enable = winDec1.enable; - winDec2.target = winDec1.target; - - - /* winDec1 = winDecTemp */ - winDec1.addrWin.baseHigh = winDecTemp.addrWin.baseHigh; - winDec1.addrWin.baseLow = winDecTemp.addrWin.baseLow; - winDec1.addrWin.size = winDecTemp.addrWin.size; - winDec1.enable = winDecTemp.enable; - winDec1.target = winDecTemp.target; - - - /* now set the new values */ - - - mvAhbToMbusWinSet(winNum1,&winDec1); - mvAhbToMbusWinSet(winNum2,&winDec2); - - - - - - /* now we will treat the remap windows if exist */ - - - /* now check if one or both windows has a remap window - as well after the swap ! */ - - /* if a window had a remap value differnt than the base value - before the swap , then after the swap the remap value will be - equal to the base value unless both windows has a remap windows*/ - - /* first get old values */ - if (MV_NO_SUCH != ahbToMbusRemapRegOffsGet(winNum1,&remapRegs1)) - { - remapBaseLow1 = MV_REG_READ(remapRegs1.lowRegOffs); - remapBaseHigh1 = MV_REG_READ(remapRegs1.highRegOffs); - - } - if (MV_NO_SUCH != ahbToMbusRemapRegOffsGet(winNum2,&remapRegs2)) - { - remapBaseLow2 = MV_REG_READ(remapRegs2.lowRegOffs); - remapBaseHigh2 = MV_REG_READ(remapRegs2.highRegOffs); - - - } - - /* now do the swap */ - if (MV_NO_SUCH != ahbToMbusRemapRegOffsGet(winNum1,&remapRegs1)) - { - if (MV_NO_SUCH != ahbToMbusRemapRegOffsGet(winNum2,&remapRegs2)) - { - /* Two windows has a remap !!! so swap */ - - MV_REG_WRITE(remapRegs2.highRegOffs,remapBaseHigh1); - MV_REG_WRITE(remapRegs2.lowRegOffs,remapBaseLow1); - - MV_REG_WRITE(remapRegs1.highRegOffs,remapBaseHigh2); - MV_REG_WRITE(remapRegs1.lowRegOffs,remapBaseLow2); - - - - } - else - { - /* remap == base */ - MV_REG_WRITE(remapRegs1.highRegOffs,winDec1.addrWin.baseHigh); - MV_REG_WRITE(remapRegs1.lowRegOffs,winDec1.addrWin.baseLow); - - } - - } - else if (MV_NO_SUCH != ahbToMbusRemapRegOffsGet(winNum2,&remapRegs2)) - { - /* remap == base */ - MV_REG_WRITE(remapRegs2.highRegOffs,winDec2.addrWin.baseHigh); - MV_REG_WRITE(remapRegs2.lowRegOffs,winDec2.addrWin.baseLow); - - } - - - - return MV_OK; - - -} - - - -#if defined(MV_88F1181) - -/******************************************************************************* -* mvAhbToMbusXbarCtrlSet - Set The CPU master Xbar arbitration. -* -* DESCRIPTION: -* This function sets CPU Mbus Arbiter -* -* INPUT: -* pPizzaArbArray - A priority Structure describing 16 "pizza slices". At -* each clock cycle, the crossbar arbiter samples all -* requests and gives the bus to the next agent according -* to the "pizza". -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_ERROR if paramers to function invalid. -* -*******************************************************************************/ -MV_STATUS mvMbusArbSet(MV_MBUS_ARB_TARGET *pPizzaArbArray) -{ - MV_U32 sliceNum; - MV_U32 xbarCtrl = 0; - MV_MBUS_ARB_TARGET xbarTarget; - - /* 1) Set crossbar control low register */ - for (sliceNum = 0; sliceNum < MRLR_SLICE_NUM; sliceNum++) - { - xbarTarget = pPizzaArbArray[sliceNum]; - - /* sliceNum parameter check */ - if (xbarTarget > MAX_MBUS_ARB_TARGETS) - { - mvOsPrintf("mvAhbToMbusXbarCtrlSet: ERR. Can't set Target %d\n", - xbarTarget); - return MV_ERROR; - } - xbarCtrl |= (xbarTarget << MRLR_LOW_ARB_OFFS(sliceNum)); - } - /* Write to crossbar control low register */ - MV_REG_WRITE(MBUS_ARBITER_LOW_REG, xbarCtrl); - - xbarCtrl = 0; - - /* 2) Set crossbar control high register */ - for (sliceNum = MRLR_SLICE_NUM; - sliceNum < MRLR_SLICE_NUM+MRHR_SLICE_NUM; - sliceNum++) - { - - xbarTarget = pPizzaArbArray[sliceNum]; - - /* sliceNum parameter check */ - if (xbarTarget > MAX_MBUS_ARB_TARGETS) - { - mvOsPrintf("mvAhbToMbusXbarCtrlSet: ERR. Can't set Target %d\n", - xbarTarget); - return MV_ERROR; - } - xbarCtrl |= (xbarTarget << MRHR_HIGH_ARB_OFFS(sliceNum)); - } - /* Write to crossbar control high register */ - MV_REG_WRITE(MBUS_ARBITER_HIGH_REG, xbarCtrl); - - return MV_OK; -} - -/******************************************************************************* -* mvMbusArbCtrlSet - Set MBus Arbiter control register -* -* DESCRIPTION: -* -* INPUT: -* ctrl - pointer to MV_MBUS_ARB_CTRL register -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_ERROR if paramers to function invalid. -* -*******************************************************************************/ -MV_STATUS mvMbusArbCtrlSet(MV_MBUS_ARB_CTRL *ctrl) -{ - - if (ctrl->highPrio == MV_FALSE) - { - MV_REG_BIT_RESET(MBUS_ARBITER_CTRL_REG, MACR_ARB_ARM_TOP); - } - else - { - MV_REG_BIT_SET(MBUS_ARBITER_CTRL_REG, MACR_ARB_ARM_TOP); - } - - if (ctrl->fixedRoundRobin == MV_FALSE) - { - MV_REG_BIT_RESET(MBUS_ARBITER_CTRL_REG, MACR_ARB_TARGET_FIXED); - } - else - { - MV_REG_BIT_SET(MBUS_ARBITER_CTRL_REG, MACR_ARB_TARGET_FIXED); - } - - if (ctrl->starvEn == MV_FALSE) - { - MV_REG_BIT_RESET(MBUS_ARBITER_CTRL_REG, MACR_ARB_REQ_CTRL_EN); - } - else - { - MV_REG_BIT_SET(MBUS_ARBITER_CTRL_REG, MACR_ARB_REQ_CTRL_EN); - } - - return MV_OK; -} - -/******************************************************************************* -* mvMbusArbCtrlGet - Get MBus Arbiter control register -* -* DESCRIPTION: -* -* INPUT: -* ctrl - pointer to MV_MBUS_ARB_CTRL register -* -* OUTPUT: -* ctrl - pointer to MV_MBUS_ARB_CTRL register -* -* RETURN: -* MV_ERROR if paramers to function invalid. -* -*******************************************************************************/ -MV_STATUS mvMbusArbCtrlGet(MV_MBUS_ARB_CTRL *ctrl) -{ - - MV_U32 ctrlReg = MV_REG_READ(MBUS_ARBITER_CTRL_REG); - - if (ctrlReg & MACR_ARB_ARM_TOP) - { - ctrl->highPrio = MV_TRUE; - } - else - { - ctrl->highPrio = MV_FALSE; - } - - if (ctrlReg & MACR_ARB_TARGET_FIXED) - { - ctrl->fixedRoundRobin = MV_TRUE; - } - else - { - ctrl->fixedRoundRobin = MV_FALSE; - } - - if (ctrlReg & MACR_ARB_REQ_CTRL_EN) - { - ctrl->starvEn = MV_TRUE; - } - else - { - ctrl->starvEn = MV_FALSE; - } - - - return MV_OK; -} - -#endif /* #if defined(MV_88F1181) */ - - - -/******************************************************************************* -* ahbToMbusRemapRegOffsGet - Get CPU address remap register offsets -* -* DESCRIPTION: -* CPU to PCI address remap registers offsets are inconsecutive. -* This function returns PCI address remap registers offsets. -* -* INPUT: -* winNum - Address decode window number. See MV_U32 enumerator. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if winNum is not a PCI one. -* -*******************************************************************************/ -static MV_STATUS ahbToMbusRemapRegOffsGet(MV_U32 winNum, - AHB_TO_MBUS_REMAP_REG_OFFS *pRemapRegs) -{ - switch (winNum) - { - case 0: - case 1: - pRemapRegs->lowRegOffs = AHB_TO_MBUS_WIN_REMAP_LOW_REG(winNum); - pRemapRegs->highRegOffs = AHB_TO_MBUS_WIN_REMAP_HIGH_REG(winNum); - break; - case 2: - case 3: - if((mvCtrlModelGet() == MV_5281_DEV_ID) || - (mvCtrlModelGet() == MV_1281_DEV_ID) || - (mvCtrlModelGet() == MV_6183_DEV_ID) || - (mvCtrlModelGet() == MV_6183L_DEV_ID)) - { - pRemapRegs->lowRegOffs = AHB_TO_MBUS_WIN_REMAP_LOW_REG(winNum); - pRemapRegs->highRegOffs = AHB_TO_MBUS_WIN_REMAP_HIGH_REG(winNum); - break; - } - else - { - pRemapRegs->lowRegOffs = 0; - pRemapRegs->highRegOffs = 0; - - DB(mvOsPrintf("ahbToMbusRemapRegOffsGet: ERR. Invalid winNum %d\n", - winNum)); - return MV_NO_SUCH; - } - default: - { - pRemapRegs->lowRegOffs = 0; - pRemapRegs->highRegOffs = 0; - - DB(mvOsPrintf("ahbToMbusRemapRegOffsGet: ERR. Invalid winNum %d\n", - winNum)); - return MV_NO_SUCH; - } - } - - return MV_OK; -} - -/******************************************************************************* -* mvAhbToMbusAddDecShow - Print the AHB to MBus bridge address decode map. -* -* DESCRIPTION: -* This function print the CPU address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_VOID mvAhbToMbusAddDecShow(MV_VOID) -{ - MV_AHB_TO_MBUS_DEC_WIN win; - MV_U32 winNum; - mvOsOutput( "\n" ); - mvOsOutput( "AHB To MBUS Bridge:\n" ); - mvOsOutput( "-------------------\n" ); - - for( winNum = 0; winNum < MAX_AHB_TO_MBUS_WINS; winNum++ ) - { - memset( &win, 0, sizeof(MV_AHB_TO_MBUS_DEC_WIN) ); - - mvOsOutput( "win%d - ", winNum ); - - if( mvAhbToMbusWinGet( winNum, &win ) == MV_OK ) - { - if( win.enable ) - { - mvOsOutput( "%s base %08x, ", - mvCtrlTargetNameGet(win.target), win.addrWin.baseLow ); - mvOsOutput( "...." ); - mvSizePrint( win.addrWin.size ); - - mvOsOutput( "\n" ); - - } - else - mvOsOutput( "disable\n" ); - } - } - -} - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvAhbToMbus.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvAhbToMbus.h deleted file mode 100644 index 1b352a1f6b..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvAhbToMbus.h +++ /dev/null @@ -1,130 +0,0 @@ -/******************************************************************************* -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 __INCmvAhbToMbush -#define __INCmvAhbToMbush - -/* includes */ -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "ctrlEnv/sys/mvAhbToMbusRegs.h" -#include "ctrlEnv/mvCtrlEnvAddrDec.h" - -/* defines */ - -#if defined(MV_88F1181) -/* This enumerator defines the Marvell controller possible MBUS arbiter */ -/* target ports. It is used to define crossbar priority scheame (pizza) */ -typedef enum _mvMBusArbTargetId -{ - DRAM_MBUS_ARB_TARGET = 0, /* Port 0 -> DRAM interface */ - TWSI_MBUS_ARB_TARGET = 1, /* Port 1 -> TWSI */ - ARM_MBUS_ARB_TARGET = 2, /* Port 2 -> ARM */ - PEX1_MBUS_ARB_TARGET = 3, /* Port 3 -> PCI Express 1 */ - PEX0_MBUS_ARB_TARGET = 4, /* Port 4 -> PCI Express0 */ - MAX_MBUS_ARB_TARGETS -}MV_MBUS_ARB_TARGET; - -typedef struct _mvMBusArbCtrl -{ - MV_BOOL starvEn; - MV_BOOL highPrio; - MV_BOOL fixedRoundRobin; - -}MV_MBUS_ARB_CTRL; - -#endif /* #if defined(MV_88F1181) */ - -typedef struct _mvAhbtoMbusDecWin -{ - MV_TARGET target; - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -}MV_AHB_TO_MBUS_DEC_WIN; - -/* mvAhbToMbus.h API list */ - -MV_STATUS mvAhbToMbusInit(MV_VOID); -MV_STATUS mvAhbToMbusWinSet(MV_U32 winNum, MV_AHB_TO_MBUS_DEC_WIN *pAddrDecWin); -MV_STATUS mvAhbToMbusWinGet(MV_U32 winNum, MV_AHB_TO_MBUS_DEC_WIN *pAddrDecWin); -MV_STATUS mvAhbToMbusWinEnable(MV_U32 winNum,MV_BOOL enable); -MV_U32 mvAhbToMbusWinRemap(MV_U32 winNum, MV_ADDR_WIN *pAddrDecWin); -MV_U32 mvAhbToMbusWinTargetGet(MV_TARGET target); -MV_U32 mvAhbToMbusWinAvailGet(MV_VOID); -MV_STATUS mvAhbToMbusWinTargetSwap(MV_TARGET target1,MV_TARGET target2); - -#if defined(MV_88F1181) - -MV_STATUS mvMbusArbSet(MV_MBUS_ARB_TARGET *pPizzaArbArray); -MV_STATUS mvMbusArbCtrlSet(MV_MBUS_ARB_CTRL *ctrl); -MV_STATUS mvMbusArbCtrlGet(MV_MBUS_ARB_CTRL *ctrl); - -#endif /* #if defined(MV_88F1181) */ - - -MV_VOID mvAhbToMbusAddDecShow(MV_VOID); - - -#endif /* __INCmvAhbToMbush */ diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvAhbToMbusRegs.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvAhbToMbusRegs.h deleted file mode 100644 index 97dc631890..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvAhbToMbusRegs.h +++ /dev/null @@ -1,143 +0,0 @@ -/******************************************************************************* -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 __INCmvAhbToMbusRegsh -#define __INCmvAhbToMbusRegsh - -/******************************/ -/* ARM Address Map Registers */ -/******************************/ - -#define MAX_AHB_TO_MBUS_WINS 9 -#define MV_AHB_TO_MBUS_INTREG_WIN 8 - - -#define AHB_TO_MBUS_WIN_CTRL_REG(winNum) (0x20000 + (winNum)*0x10) -#define AHB_TO_MBUS_WIN_BASE_REG(winNum) (0x20004 + (winNum)*0x10) -#define AHB_TO_MBUS_WIN_REMAP_LOW_REG(winNum) (0x20008 + (winNum)*0x10) -#define AHB_TO_MBUS_WIN_REMAP_HIGH_REG(winNum) (0x2000C + (winNum)*0x10) -#define AHB_TO_MBUS_WIN_INTEREG_REG 0x20080 - -/* Window Control Register */ -/* AHB_TO_MBUS_WIN_CTRL_REG (ATMWCR)*/ -#define ATMWCR_WIN_ENABLE BIT0 /* Window Enable */ - -#define ATMWCR_WIN_TARGET_OFFS 4 /* The target interface associated - with this window*/ -#define ATMWCR_WIN_TARGET_MASK (0xf << ATMWCR_WIN_TARGET_OFFS) - -#define ATMWCR_WIN_ATTR_OFFS 8 /* The target interface attributes - Associated with this window */ -#define ATMWCR_WIN_ATTR_MASK (0xff << ATMWCR_WIN_ATTR_OFFS) - - -/* -Used with the Base register to set the address window size and location -Must be programed from LSB to MSB as sequence of 1’s followed -by sequence of 0’s. The number of 1’s specifies the size of the window -in 64 KB granularity (e.g. a value of 0x00FF specifies 256 = 16 MB). - -NOTE: A value of 0x0 specifies 64KB size. -*/ -#define ATMWCR_WIN_SIZE_OFFS 16 /* Window Size */ -#define ATMWCR_WIN_SIZE_MASK (0xffff << ATMWCR_WIN_SIZE_OFFS) -#define ATMWCR_WIN_SIZE_ALIGNMENT 0x10000 - -/* Window Base Register */ -/* AHB_TO_MBUS_WIN_BASE_REG (ATMWBR) */ - -/* -Used with the size field to set the address window size and location. -Corresponds to transaction address[31:16] -*/ -#define ATMWBR_BASE_OFFS 16 /* Base Address */ -#define ATMWBR_BASE_MASK (0xffff << ATMWBR_BASE_OFFS) -#define ATMWBR_BASE_ALIGNMENT 0x10000 - -/* Window Remap Low Register */ -/* AHB_TO_MBUS_WIN_REMAP_LOW_REG (ATMWRLR) */ - -/* -Used with the size field to specifies address bits[31:0] to be driven to -the target interface.: -target_addr[31:16] = (addr[31:16] & size[15:0]) | (remap[31:16] & ~size[15:0]) -*/ -#define ATMWRLR_REMAP_LOW_OFFS 16 /* Remap Address */ -#define ATMWRLR_REMAP_LOW_MASK (0xffff << ATMWRLR_REMAP_LOW_OFFS) -#define ATMWRLR_REMAP_LOW_ALIGNMENT 0x10000 - -/* Window Remap High Register */ -/* AHB_TO_MBUS_WIN_REMAP_HIGH_REG (ATMWRHR) */ - -/* -Specifies address bits[63:32] to be driven to the target interface. -target_addr[63:32] = (RemapHigh[31:0] -*/ -#define ATMWRHR_REMAP_HIGH_OFFS 0 /* Remap Address */ -#define ATMWRHR_REMAP_HIGH_MASK (0xffffffff << ATMWRHR_REMAP_HIGH_OFFS) - - -#endif /* __INCmvAhbToMbusRegsh */ - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvCpuIf.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvCpuIf.c deleted file mode 100644 index 872dc6e9d8..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvCpuIf.c +++ /dev/null @@ -1,1036 +0,0 @@ -/******************************************************************************* -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. - -*******************************************************************************/ - - -/* includes */ -#include "ctrlEnv/sys/mvCpuIf.h" -#include "ctrlEnv/sys/mvAhbToMbusRegs.h" -#include "cpu/mvCpu.h" -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "mvSysHwConfig.h" -#include "mvSysDram.h" - -/*#define MV_DEBUG*/ -/* defines */ - -#ifdef MV_DEBUG - #define DB(x) x -#else - #define DB(x) -#endif - -/* locals */ -/* static functions */ -static MV_BOOL cpuTargetWinOverlap(MV_TARGET target, MV_ADDR_WIN *pAddrWin); - -MV_TARGET * sampleAtResetTargetArray; -MV_TARGET sampleAtResetTargetArrayP[] = BOOT_TARGETS_NAME_ARRAY; -MV_TARGET sampleAtResetTargetArray6180P[] = BOOT_TARGETS_NAME_ARRAY_6180; -/******************************************************************************* -* mvCpuIfInit - Initialize Controller CPU interface -* -* DESCRIPTION: -* This function initialize Controller CPU interface: -* 1. Set CPU interface configuration registers. -* 2. Set CPU master Pizza arbiter control according to static -* configuration described in configuration file. -* 3. Opens CPU address decode windows. DRAM windows are assumed to be -* already set (auto detection). -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_STATUS mvCpuIfInit(MV_CPU_DEC_WIN *cpuAddrWinMap) -{ - MV_U32 regVal; - MV_TARGET target; - MV_ADDR_WIN addrWin; - - if (cpuAddrWinMap == NULL) - { - DB(mvOsPrintf("mvCpuIfInit:ERR. cpuAddrWinMap == NULL\n")); - return MV_ERROR; - } - - /*Initialize the boot target array according to device type*/ - if(mvCtrlModelGet() == MV_6180_DEV_ID) - sampleAtResetTargetArray = sampleAtResetTargetArray6180P; - else - sampleAtResetTargetArray = sampleAtResetTargetArrayP; - - /* Set ARM Configuration register */ - regVal = MV_REG_READ(CPU_CONFIG_REG); - regVal &= ~CPU_CONFIG_DEFAULT_MASK; - regVal |= CPU_CONFIG_DEFAULT; - MV_REG_WRITE(CPU_CONFIG_REG,regVal); - - /* First disable all CPU target windows */ - for (target = 0; cpuAddrWinMap[target].enable != TBL_TERM; target++) - { - if ((MV_TARGET_IS_DRAM(target))||(target == INTER_REGS)) - { - continue; - } - -#if defined(MV_MEM_OVER_PCI_WA) || defined(MV_UART_OVER_PCI_WA) - /* If the target PEX or PCI and memory is over PEX or PCI we don't touch this CPU windows */ - if (MV_TARGET_IS_PCI(target)) - { - continue; - } -#endif - -#if defined(MV_MEM_OVER_PEX_WA) || defined(MV_UART_OVER_PEX_WA) - /* If the target PEX or PCI and memory is over PEX or PCI we don't touch this CPU windows */ - if (MV_TARGET_IS_PEX(target)) - { - continue; - } -#endif -#if defined(MV_RUN_FROM_FLASH) - /* Don't disable the boot device. */ - if (target == DEV_BOOCS) - { - continue; - } -#endif /* MV_RUN_FROM_FLASH */ - mvCpuIfTargetWinEnable(MV_CHANGE_BOOT_CS(target),MV_FALSE); - } - -#if defined(MV_RUN_FROM_FLASH) - /* Resize the bootcs windows before other windows, because this */ - /* window is enabled and will cause an overlap if not resized. */ - target = DEV_BOOCS; - - if (MV_OK != mvCpuIfTargetWinSet(target, &cpuAddrWinMap[target])) - { - DB(mvOsPrintf("mvCpuIfInit:ERR. mvCpuIfTargetWinSet fail\n")); - return MV_ERROR; - } - - addrWin.baseLow = cpuAddrWinMap[target].addrWin.baseLow; - addrWin.baseHigh = cpuAddrWinMap[target].addrWin.baseHigh; - if (0xffffffff == mvAhbToMbusWinRemap(cpuAddrWinMap[target].winNum ,&addrWin)) - { - DB(mvOsPrintf("mvCpuIfInit:WARN. mvAhbToMbusWinRemap can't remap winNum=%d\n", - cpuAddrWinMap[target].winNum)); - } - -#endif /* MV_RUN_FROM_FLASH */ - - /* Go through all targets in user table until table terminator */ - for (target = 0; cpuAddrWinMap[target].enable != TBL_TERM; target++) - { - -#if defined(MV_RUN_FROM_FLASH) - if (target == DEV_BOOCS) - { - continue; - } -#endif /* MV_RUN_FROM_FLASH */ - - /* if DRAM auto sizing is used do not initialized DRAM target windows, */ - /* assuming this already has been done earlier. */ -#ifdef MV_DRAM_AUTO_SIZE - if (MV_TARGET_IS_DRAM(target)) - { - continue; - } -#endif - -#if defined(MV_MEM_OVER_PCI_WA) || defined(MV_UART_OVER_PCI_WA) - /* If the target PEX or PCI and memory is over PEX or PCI we don't touch this CPU windows */ - if (MV_TARGET_IS_PCI(target)) - { - continue; - } -#endif - -#if defined(MV_MEM_OVER_PEX_WA) || defined(MV_UART_OVER_PEX_WA) - /* If the target PEX or PCI and memory is over PEX or PCI we don't touch this CPU windows */ - if (MV_TARGET_IS_PEX(target)) - { - continue; - } -#endif - /* If the target attribute is the same as the boot device attribute */ - /* then it's stays disable */ - if (MV_TARGET_IS_AS_BOOT(target)) - { - continue; - } - - if((0 == cpuAddrWinMap[target].addrWin.size) || - (DIS == cpuAddrWinMap[target].enable)) - - { - if (MV_OK != mvCpuIfTargetWinEnable(target, MV_FALSE)) - { - DB(mvOsPrintf("mvCpuIfInit:ERR. mvCpuIfTargetWinEnable fail\n")); - return MV_ERROR; - } - - } - else - { - if (MV_OK != mvCpuIfTargetWinSet(target, &cpuAddrWinMap[target])) - { - DB(mvOsPrintf("mvCpuIfInit:ERR. mvCpuIfTargetWinSet fail\n")); - return MV_ERROR; - } - - addrWin.baseLow = cpuAddrWinMap[target].addrWin.baseLow; - addrWin.baseHigh = cpuAddrWinMap[target].addrWin.baseHigh; - if (0xffffffff == mvAhbToMbusWinRemap(cpuAddrWinMap[target].winNum ,&addrWin)) - { - DB(mvOsPrintf("mvCpuIfInit:WARN. mvAhbToMbusWinRemap can't remap winNum=%d\n", - cpuAddrWinMap[target].winNum)); - } - - - } - } - - return MV_OK; - - -} - - -/******************************************************************************* -* mvCpuIfTargetWinSet - Set CPU-to-peripheral target address window -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI0_MEM0) -* address window, also known as address decode window. -* A new address decode window is set for specified target address window. -* If address decode window parameter structure enables the window, -* the routine will also enable the target window, allowing CPU to access -* the target window. -* -* INPUT: -* target - Peripheral target enumerator. -* pAddrDecWin - CPU target window data structure. -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_OK if CPU target window was set correctly, MV_ERROR in case of -* address window overlapps with other active CPU target window or -* trying to assign 36bit base address while CPU does not support that. -* The function returns MV_NOT_SUPPORTED, if the target is unsupported. -* -*******************************************************************************/ -MV_STATUS mvCpuIfTargetWinSet(MV_TARGET target, MV_CPU_DEC_WIN *pAddrDecWin) -{ - MV_AHB_TO_MBUS_DEC_WIN decWin; - MV_U32 existingWinNum; - MV_DRAM_DEC_WIN addrDecWin; - - target = MV_CHANGE_BOOT_CS(target); - - /* Check parameters */ - if (target >= MAX_TARGETS) - { - mvOsPrintf("mvCpuIfTargetWinSet: target %d is Illigal\n", target); - return MV_ERROR; - } - - /* 2) Check if the requested window overlaps with current windows */ - if (MV_TRUE == cpuTargetWinOverlap(target, &pAddrDecWin->addrWin)) - { - mvOsPrintf("mvCpuIfTargetWinSet: ERR. Target %d overlap\n", target); - return MV_BAD_PARAM; - } - - if (MV_TARGET_IS_DRAM(target)) - { - /* copy relevant data to MV_DRAM_DEC_WIN structure */ - addrDecWin.addrWin.baseHigh = pAddrDecWin->addrWin.baseHigh; - addrDecWin.addrWin.baseLow = pAddrDecWin->addrWin.baseLow; - addrDecWin.addrWin.size = pAddrDecWin->addrWin.size; - addrDecWin.enable = pAddrDecWin->enable; - - - if (mvDramIfWinSet(target,&addrDecWin) != MV_OK); - { - mvOsPrintf("mvCpuIfTargetWinSet: mvDramIfWinSet Failed\n"); - return MV_ERROR; - } - - } - else - { - /* copy relevant data to MV_AHB_TO_MBUS_DEC_WIN structure */ - decWin.addrWin.baseLow = pAddrDecWin->addrWin.baseLow; - decWin.addrWin.baseHigh = pAddrDecWin->addrWin.baseHigh; - decWin.addrWin.size = pAddrDecWin->addrWin.size; - decWin.enable = pAddrDecWin->enable; - decWin.target = target; - - existingWinNum = mvAhbToMbusWinTargetGet(target); - - /* check if there is already another Window configured - for this target */ - if ((existingWinNum < MAX_AHB_TO_MBUS_WINS )&& - (existingWinNum != pAddrDecWin->winNum)) - { - /* if we want to enable the new winow number - passed by the user , then the old one should - be disabled */ - if (MV_TRUE == pAddrDecWin->enable) - { - /* be sure it is disabled */ - mvAhbToMbusWinEnable(existingWinNum , MV_FALSE); - } - } - - if (mvAhbToMbusWinSet(pAddrDecWin->winNum,&decWin) != MV_OK) - { - mvOsPrintf("mvCpuIfTargetWinSet: mvAhbToMbusWinSet Failed\n"); - return MV_ERROR; - } - - } - - return MV_OK; -} - -/******************************************************************************* -* mvCpuIfTargetWinGet - Get CPU-to-peripheral target address window -* -* DESCRIPTION: -* Get the CPU peripheral target address window. -* -* INPUT: -* target - Peripheral target enumerator -* -* OUTPUT: -* pAddrDecWin - CPU target window information data structure. -* -* RETURN: -* MV_OK if target exist, MV_ERROR otherwise. -* -*******************************************************************************/ -MV_STATUS mvCpuIfTargetWinGet(MV_TARGET target, MV_CPU_DEC_WIN *pAddrDecWin) -{ - - MV_U32 winNum=0xffffffff; - MV_AHB_TO_MBUS_DEC_WIN decWin; - MV_DRAM_DEC_WIN addrDecWin; - - target = MV_CHANGE_BOOT_CS(target); - - /* Check parameters */ - if (target >= MAX_TARGETS) - { - mvOsPrintf("mvCpuIfTargetWinGet: target %d is Illigal\n", target); - return MV_ERROR; - } - - if (MV_TARGET_IS_DRAM(target)) - { - if (mvDramIfWinGet(target,&addrDecWin) != MV_OK) - { - mvOsPrintf("mvCpuIfTargetWinGet: Failed to get window target %d\n", - target); - return MV_ERROR; - } - - /* copy relevant data to MV_CPU_DEC_WIN structure */ - pAddrDecWin->addrWin.baseLow = addrDecWin.addrWin.baseLow; - pAddrDecWin->addrWin.baseHigh = addrDecWin.addrWin.baseHigh; - pAddrDecWin->addrWin.size = addrDecWin.addrWin.size; - pAddrDecWin->enable = addrDecWin.enable; - pAddrDecWin->winNum = 0xffffffff; - - } - else - { - /* get the Window number associated with this target */ - - winNum = mvAhbToMbusWinTargetGet(target); - if (winNum >= MAX_AHB_TO_MBUS_WINS) - { - return MV_NO_SUCH; - - } - - if (mvAhbToMbusWinGet(winNum , &decWin) != MV_OK) - { - mvOsPrintf("%s: mvAhbToMbusWinGet Failed at winNum = %d\n", - __FUNCTION__, winNum); - return MV_ERROR; - - } - - /* copy relevant data to MV_CPU_DEC_WIN structure */ - pAddrDecWin->addrWin.baseLow = decWin.addrWin.baseLow; - pAddrDecWin->addrWin.baseHigh = decWin.addrWin.baseHigh; - pAddrDecWin->addrWin.size = decWin.addrWin.size; - pAddrDecWin->enable = decWin.enable; - pAddrDecWin->winNum = winNum; - - } - - - - - return MV_OK; -} - - -/******************************************************************************* -* mvCpuIfTargetWinEnable - Enable/disable a CPU address decode window -* -* DESCRIPTION: -* This function enable/disable a CPU address decode window. -* if parameter 'enable' == MV_TRUE the routine will enable the -* window, thus enabling CPU accesses (before enabling the window it is -* tested for overlapping). Otherwise, the window will be disabled. -* -* INPUT: -* target - Peripheral target enumerator. -* enable - Enable/disable parameter. -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_ERROR if protection window number was wrong, or the window -* overlapps other target window. -* -*******************************************************************************/ -MV_STATUS mvCpuIfTargetWinEnable(MV_TARGET target,MV_BOOL enable) -{ - MV_U32 winNum, temp; - MV_CPU_DEC_WIN addrDecWin; - - target = MV_CHANGE_BOOT_CS(target); - - /* Check parameters */ - if (target >= MAX_TARGETS) - { - mvOsPrintf("mvCpuIfTargetWinEnable: target %d is Illigal\n", target); - return MV_ERROR; - } - - /* get the window and check if it exist */ - temp = mvCpuIfTargetWinGet(target, &addrDecWin); - if (MV_NO_SUCH == temp) - { - return (enable? MV_ERROR: MV_OK); - } - else if( MV_OK != temp) - { - mvOsPrintf("%s: ERR. Getting target %d failed.\n",__FUNCTION__, target); - return MV_ERROR; - } - - - /* check overlap */ - - if (MV_TRUE == enable) - { - if (MV_TRUE == cpuTargetWinOverlap(target, &addrDecWin.addrWin)) - { - DB(mvOsPrintf("%s: ERR. Target %d overlap\n",__FUNCTION__, target)); - return MV_ERROR; - } - - } - - - if (MV_TARGET_IS_DRAM(target)) - { - if (mvDramIfWinEnable(target , enable) != MV_OK) - { - mvOsPrintf("mvCpuIfTargetWinGet: mvDramIfWinEnable Failed at \n"); - return MV_ERROR; - - } - - } - else - { - /* get the Window number associated with this target */ - - winNum = mvAhbToMbusWinTargetGet(target); - - if (winNum >= MAX_AHB_TO_MBUS_WINS) - { - return (enable? MV_ERROR: MV_OK); - } - - if (mvAhbToMbusWinEnable(winNum , enable) != MV_OK) - { - mvOsPrintf("mvCpuIfTargetWinGet: Failed to enable window = %d\n", - winNum); - return MV_ERROR; - - } - - } - - return MV_OK; -} - - -/******************************************************************************* -* mvCpuIfTargetWinSizeGet - Get CPU target address window size -* -* DESCRIPTION: -* Get the size of CPU-to-peripheral target window. -* -* INPUT: -* target - Peripheral target enumerator -* -* OUTPUT: -* None. -* -* RETURN: -* 32bit size. Function also returns '0' if window is closed. -* Function returns 0xFFFFFFFF in case of an error. -* -*******************************************************************************/ -MV_U32 mvCpuIfTargetWinSizeGet(MV_TARGET target) -{ - MV_CPU_DEC_WIN addrDecWin; - - target = MV_CHANGE_BOOT_CS(target); - - /* Check parameters */ - if (target >= MAX_TARGETS) - { - mvOsPrintf("mvCpuIfTargetWinSizeGet: target %d is Illigal\n", target); - return 0; - } - - /* Get the winNum window */ - if (MV_OK != mvCpuIfTargetWinGet(target, &addrDecWin)) - { - mvOsPrintf("mvCpuIfTargetWinSizeGet:ERR. Getting target %d failed.\n", - target); - return 0; - } - - /* Check if window is enabled */ - if (addrDecWin.enable == MV_TRUE) - { - return (addrDecWin.addrWin.size); - } - else - { - return 0; /* Window disabled. return 0 */ - } -} - -/******************************************************************************* -* mvCpuIfTargetWinBaseLowGet - Get CPU target address window base low -* -* DESCRIPTION: -* CPU-to-peripheral target address window base is constructed of -* two parts: Low and high. -* This function gets the CPU peripheral target low base address. -* -* INPUT: -* target - Peripheral target enumerator -* -* OUTPUT: -* None. -* -* RETURN: -* 32bit low base address. -* -*******************************************************************************/ -MV_U32 mvCpuIfTargetWinBaseLowGet(MV_TARGET target) -{ - MV_CPU_DEC_WIN addrDecWin; - - target = MV_CHANGE_BOOT_CS(target); - - /* Check parameters */ - if (target >= MAX_TARGETS) - { - mvOsPrintf("mvCpuIfTargetWinBaseLowGet: target %d is Illigal\n", target); - return 0xffffffff; - } - - /* Get the target window */ - if (MV_OK != mvCpuIfTargetWinGet(target, &addrDecWin)) - { - mvOsPrintf("mvCpuIfTargetWinBaseLowGet:ERR. Getting target %d failed.\n", - target); - return 0xffffffff; - } - - if (MV_FALSE == addrDecWin.enable) - { - return 0xffffffff; - } - return (addrDecWin.addrWin.baseLow); -} - -/******************************************************************************* -* mvCpuIfTargetWinBaseHighGet - Get CPU target address window base high -* -* DESCRIPTION: -* CPU-to-peripheral target address window base is constructed of -* two parts: Low and high. -* This function gets the CPU peripheral target high base address. -* -* INPUT: -* target - Peripheral target enumerator -* -* OUTPUT: -* None. -* -* RETURN: -* 32bit high base address. -* -*******************************************************************************/ -MV_U32 mvCpuIfTargetWinBaseHighGet(MV_TARGET target) -{ - MV_CPU_DEC_WIN addrDecWin; - - target = MV_CHANGE_BOOT_CS(target); - - /* Check parameters */ - if (target >= MAX_TARGETS) - { - mvOsPrintf("mvCpuIfTargetWinBaseLowGet: target %d is Illigal\n", target); - return 0xffffffff; - } - - /* Get the target window */ - if (MV_OK != mvCpuIfTargetWinGet(target, &addrDecWin)) - { - mvOsPrintf("mvCpuIfTargetWinBaseHighGet:ERR. Getting target %d failed.\n", - target); - return 0xffffffff; - } - - if (MV_FALSE == addrDecWin.enable) - { - return 0; - } - - return (addrDecWin.addrWin.baseHigh); -} - -#if defined(MV_INCLUDE_PEX) -/******************************************************************************* -* mvCpuIfPexRemap - Set CPU remap register for address windows. -* -* DESCRIPTION: -* -* INPUT: -* pexTarget - Peripheral target enumerator. Must be a PEX target. -* pAddrDecWin - CPU target window information data structure. -* Note that caller has to fill in the base field only. The -* size field is ignored. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if target is not a PEX one, MV_OK otherwise. -* -*******************************************************************************/ -MV_U32 mvCpuIfPexRemap(MV_TARGET pexTarget, MV_ADDR_WIN *pAddrDecWin) -{ - MV_U32 winNum; - - /* Check parameters */ - - if (mvCtrlPexMaxIfGet() > 1) - { - if ((!MV_TARGET_IS_PEX1(pexTarget))&&(!MV_TARGET_IS_PEX0(pexTarget))) - { - mvOsPrintf("mvCpuIfPexRemap: target %d is Illigal\n",pexTarget); - return 0xffffffff; - } - - } - else - { - if (!MV_TARGET_IS_PEX0(pexTarget)) - { - mvOsPrintf("mvCpuIfPexRemap: target %d is Illigal\n",pexTarget); - return 0xffffffff; - } - - } - - /* get the Window number associated with this target */ - winNum = mvAhbToMbusWinTargetGet(pexTarget); - - if (winNum >= MAX_AHB_TO_MBUS_WINS) - { - mvOsPrintf("mvCpuIfPexRemap: mvAhbToMbusWinTargetGet Failed\n"); - return 0xffffffff; - - } - - return mvAhbToMbusWinRemap(winNum , pAddrDecWin); -} - -#endif - -#if defined(MV_INCLUDE_PCI) -/******************************************************************************* -* mvCpuIfPciRemap - Set CPU remap register for address windows. -* -* DESCRIPTION: -* -* INPUT: -* pciTarget - Peripheral target enumerator. Must be a PCI target. -* pAddrDecWin - CPU target window information data structure. -* Note that caller has to fill in the base field only. The -* size field is ignored. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if target is not a PCI one, MV_OK otherwise. -* -*******************************************************************************/ -MV_U32 mvCpuIfPciRemap(MV_TARGET pciTarget, MV_ADDR_WIN *pAddrDecWin) -{ - MV_U32 winNum; - - /* Check parameters */ - if (!MV_TARGET_IS_PCI(pciTarget)) - { - mvOsPrintf("mvCpuIfPciRemap: target %d is Illigal\n",pciTarget); - return 0xffffffff; - } - - /* get the Window number associated with this target */ - winNum = mvAhbToMbusWinTargetGet(pciTarget); - - if (winNum >= MAX_AHB_TO_MBUS_WINS) - { - mvOsPrintf("mvCpuIfPciRemap: mvAhbToMbusWinTargetGet Failed\n"); - return 0xffffffff; - - } - - return mvAhbToMbusWinRemap(winNum , pAddrDecWin); -} -#endif /* MV_INCLUDE_PCI */ - - -/******************************************************************************* -* mvCpuIfPciIfRemap - Set CPU remap register for address windows. -* -* DESCRIPTION: -* -* INPUT: -* pciTarget - Peripheral target enumerator. Must be a PCI target. -* pAddrDecWin - CPU target window information data structure. -* Note that caller has to fill in the base field only. The -* size field is ignored. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if target is not a PCI one, MV_OK otherwise. -* -*******************************************************************************/ -MV_U32 mvCpuIfPciIfRemap(MV_TARGET pciIfTarget, MV_ADDR_WIN *pAddrDecWin) -{ -#if defined(MV_INCLUDE_PEX) - if (MV_TARGET_IS_PEX(pciIfTarget)) - { - return mvCpuIfPexRemap(pciIfTarget,pAddrDecWin); - } -#endif -#if defined(MV_INCLUDE_PCI) - - if (MV_TARGET_IS_PCI(pciIfTarget)) - { - return mvCpuIfPciRemap(pciIfTarget,pAddrDecWin); - } -#endif - return 0; -} - - - -/******************************************************************************* -* mvCpuIfTargetOfBaseAddressGet - Get the target according to base address -* -* DESCRIPTION: -* -* INPUT: -* baseAddress - base address to be checked -* -* OUTPUT: -* None. -* -* RETURN: -* the target number that baseAddress belongs to or MAX_TARGETS is not -* found -* -*******************************************************************************/ - -MV_TARGET mvCpuIfTargetOfBaseAddressGet(MV_U32 baseAddress) -{ - MV_CPU_DEC_WIN win; - MV_U32 target; - - for( target = 0; target < MAX_TARGETS; target++ ) - { - if( mvCpuIfTargetWinGet( target, &win ) == MV_OK ) - { - if( win.enable ) - { - if ((baseAddress >= win.addrWin.baseLow) && - (baseAddress < win.addrWin.baseLow + win.addrWin.size)) break; - } - } - else return MAX_TARGETS; - - } - - return target; -} -/******************************************************************************* -* cpuTargetWinOverlap - Detect CPU address decode windows overlapping -* -* DESCRIPTION: -* An unpredicted behaviur is expected in case CPU address decode -* windows overlapps. -* This function detects CPU address decode windows overlapping of a -* specified target. The function does not check the target itself for -* overlapping. The function also skipps disabled address decode windows. -* -* INPUT: -* target - Peripheral target enumerator. -* pAddrDecWin - An address decode window struct. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlaps current address -* decode map, MV_FALSE otherwise. -* -*******************************************************************************/ -static MV_BOOL cpuTargetWinOverlap(MV_TARGET target, MV_ADDR_WIN *pAddrWin) -{ - MV_U32 targetNum; - MV_CPU_DEC_WIN addrDecWin; - MV_STATUS status; - - - for(targetNum = 0; targetNum < MAX_TARGETS; targetNum++) - { -#if defined(MV_RUN_FROM_FLASH) - if(MV_TARGET_IS_AS_BOOT(target)) - { - if (MV_CHANGE_BOOT_CS(targetNum) == target) - continue; - } -#endif /* MV_RUN_FROM_FLASH */ - - /* don't check our target or illegal targets */ - if (targetNum == target) - { - continue; - } - - /* Get window parameters */ - status = mvCpuIfTargetWinGet(targetNum, &addrDecWin); - if(MV_NO_SUCH == status) - { - continue; - } - if(MV_OK != status) - { - DB(mvOsPrintf("cpuTargetWinOverlap: ERR. TargetWinGet failed\n")); - return MV_TRUE; - } - - /* Do not check disabled windows */ - if (MV_FALSE == addrDecWin.enable) - { - continue; - } - - if(MV_TRUE == ctrlWinOverlapTest(pAddrWin, &addrDecWin.addrWin)) - { - DB(mvOsPrintf( - "cpuTargetWinOverlap: Required target %d overlap current %d\n", - target, targetNum)); - return MV_TRUE; - } - } - - return MV_FALSE; - -} - -/******************************************************************************* -* mvCpuIfAddDecShow - Print the CPU address decode map. -* -* DESCRIPTION: -* This function print the CPU address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_VOID mvCpuIfAddDecShow(MV_VOID) -{ - MV_CPU_DEC_WIN win; - MV_U32 target; - mvOsOutput( "\n" ); - mvOsOutput( "CPU Interface\n" ); - mvOsOutput( "-------------\n" ); - - for( target = 0; target < MAX_TARGETS; target++ ) - { - - memset( &win, 0, sizeof(MV_CPU_DEC_WIN) ); - - mvOsOutput( "%s ",mvCtrlTargetNameGet(target)); - mvOsOutput( "...." ); - - if( mvCpuIfTargetWinGet( target, &win ) == MV_OK ) - { - if( win.enable ) - { - mvOsOutput( "base %08x, ", win.addrWin.baseLow ); - mvSizePrint( win.addrWin.size ); - mvOsOutput( "\n" ); - - } - else - mvOsOutput( "disable\n" ); - } - else if( mvCpuIfTargetWinGet( target, &win ) == MV_NO_SUCH ) - { - mvOsOutput( "no such\n" ); - } - } -} - -/******************************************************************************* -* mvCpuIfEnablePex - Enable PCI Express. -* -* DESCRIPTION: -* This function Enable PCI Express. -* -* INPUT: -* pexIf - PEX interface number. -* pexType - MV_PEX_ROOT_COMPLEX - root complex device -* MV_PEX_END_POINT - end point device -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -#if defined(MV_INCLUDE_PEX) -MV_VOID mvCpuIfEnablePex(MV_U32 pexIf, MV_PEX_TYPE pexType) -{ - /* Set pex mode incase S@R not exist */ - if( pexType == MV_PEX_END_POINT) - { - MV_REG_BIT_RESET(PEX_CTRL_REG(pexIf),PXCR_DEV_TYPE_CTRL_MASK); - /* Change pex mode in capability reg */ - MV_REG_BIT_RESET(PEX_CFG_DIRECT_ACCESS(pexIf,PEX_CAPABILITY_REG), BIT22); - MV_REG_BIT_SET(PEX_CFG_DIRECT_ACCESS(pexIf,PEX_CAPABILITY_REG), BIT20); - - } - else - { - MV_REG_BIT_SET(PEX_CTRL_REG(pexIf),PXCR_DEV_TYPE_CTRL_MASK); - } - - /* CPU config register Pex enable */ - MV_REG_BIT_SET(CPU_CTRL_STAT_REG,CCSR_PCI_ACCESS_MASK); -} -#endif - - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvCpuIf.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvCpuIf.h deleted file mode 100644 index 224ed07f59..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvCpuIf.h +++ /dev/null @@ -1,120 +0,0 @@ -/******************************************************************************* -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 __INCmvCpuIfh -#define __INCmvCpuIfh - -/* includes */ -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "ctrlEnv/sys/mvCpuIfRegs.h" -#include "ctrlEnv/sys/mvAhbToMbus.h" -#include "ddr2/mvDramIf.h" -#include "ctrlEnv/sys/mvSysDram.h" -#if defined(MV_INCLUDE_PEX) -#include "pex/mvPex.h" -#endif - -/* defines */ - -/* typedefs */ -/* This structure describes CPU interface address decode window */ -typedef struct _mvCpuIfDecWin -{ - MV_ADDR_WIN addrWin; /* An address window*/ - MV_U32 winNum; /* Window Number in the AHB To Mbus bridge */ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -}MV_CPU_DEC_WIN; - - - -/* mvCpuIfLib.h API list */ - -/* mvCpuIfLib.h API list */ - -MV_STATUS mvCpuIfInit(MV_CPU_DEC_WIN *cpuAddrWinMap); -MV_STATUS mvCpuIfTargetWinSet(MV_TARGET target, MV_CPU_DEC_WIN *pAddrDecWin); -MV_STATUS mvCpuIfTargetWinGet(MV_TARGET target, MV_CPU_DEC_WIN *pAddrDecWin); -MV_STATUS mvCpuIfTargetWinEnable(MV_TARGET target,MV_BOOL enable); -MV_U32 mvCpuIfTargetWinSizeGet(MV_TARGET target); -MV_U32 mvCpuIfTargetWinBaseLowGet(MV_TARGET target); -MV_U32 mvCpuIfTargetWinBaseHighGet(MV_TARGET target); -MV_TARGET mvCpuIfTargetOfBaseAddressGet(MV_U32 baseAddress); -#if defined(MV_INCLUDE_PEX) -MV_U32 mvCpuIfPexRemap(MV_TARGET pexTarget, MV_ADDR_WIN *pAddrDecWin); -MV_VOID mvCpuIfEnablePex(MV_U32 pexIf, MV_PEX_TYPE pexType); -#endif -#if defined(MV_INCLUDE_PCI) -MV_U32 mvCpuIfPciRemap(MV_TARGET pciTarget, MV_ADDR_WIN *pAddrDecWin); -#endif -MV_U32 mvCpuIfPciIfRemap(MV_TARGET pciTarget, MV_ADDR_WIN *pAddrDecWin); - -MV_VOID mvCpuIfAddDecShow(MV_VOID); - -#if defined(MV88F6281) -MV_STATUS mvCpuIfBridgeReorderWAInit(void); -#endif - -#endif /* __INCmvCpuIfh */ diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvCpuIfRegs.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvCpuIfRegs.h deleted file mode 100644 index 8cfeee2db0..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvCpuIfRegs.h +++ /dev/null @@ -1,304 +0,0 @@ -/******************************************************************************* -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 __INCmvCpuIfRegsh -#define __INCmvCpuIfRegsh - -/****************************************/ -/* ARM Control and Status Registers Map */ -/****************************************/ - -#define CPU_CONFIG_REG 0x20100 -#define CPU_CTRL_STAT_REG 0x20104 -#define CPU_RSTOUTN_MASK_REG 0x20108 -#define CPU_SYS_SOFT_RST_REG 0x2010C -#define CPU_AHB_MBUS_CAUSE_INT_REG 0x20110 -#define CPU_AHB_MBUS_MASK_INT_REG 0x20114 -#define CPU_FTDLL_CONFIG_REG 0x20120 -#define CPU_L2_CONFIG_REG 0x20128 - - - -/* ARM Configuration register */ -/* CPU_CONFIG_REG (CCR) */ - - -/* Reset vector location */ -#define CCR_VEC_INIT_LOC_OFFS 1 -#define CCR_VEC_INIT_LOC_MASK BIT1 -/* reset at 0x00000000 */ -#define CCR_VEC_INIT_LOC_0000 (0 << CCR_VEC_INIT_LOC_OFFS) -/* reset at 0xFFFF0000 */ -#define CCR_VEC_INIT_LOC_FF00 (1 << CCR_VEC_INIT_LOC_OFFS) - - -#define CCR_AHB_ERROR_PROP_OFFS 2 -#define CCR_AHB_ERROR_PROP_MASK BIT2 -/* Erros are not propogated to AHB */ -#define CCR_AHB_ERROR_PROP_NO_INDICATE (0 << CCR_AHB_ERROR_PROP_OFFS) -/* Erros are propogated to AHB */ -#define CCR_AHB_ERROR_PROP_INDICATE (1 << CCR_AHB_ERROR_PROP_OFFS) - - -#define CCR_ENDIAN_INIT_OFFS 3 -#define CCR_ENDIAN_INIT_MASK BIT3 -#define CCR_ENDIAN_INIT_LITTLE (0 << CCR_ENDIAN_INIT_OFFS) -#define CCR_ENDIAN_INIT_BIG (1 << CCR_ENDIAN_INIT_OFFS) - - -#define CCR_INCR_EN_OFFS 4 -#define CCR_INCR_EN_MASK BIT4 -#define CCR_INCR_EN BIT4 - - -#define CCR_NCB_BLOCKING_OFFS 5 -#define CCR_NCB_BLOCKING_MASK (1 << CCR_NCB_BLOCKING_OFFS) -#define CCR_NCB_BLOCKING_NON (0 << CCR_NCB_BLOCKING_OFFS) -#define CCR_NCB_BLOCKING_EN (1 << CCR_NCB_BLOCKING_OFFS) - -#define CCR_CPU_2_MBUSL_TICK_DRV_OFFS 8 -#define CCR_CPU_2_MBUSL_TICK_DRV_MASK (0xF << CCR_CPU_2_MBUSL_TICK_DRV_OFFS) -#define CCR_CPU_2_MBUSL_TICK_SMPL_OFFS 12 -#define CCR_CPU_2_MBUSL_TICK_SMPL_MASK (0xF << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS) -#define CCR_ICACH_PREF_BUF_ENABLE BIT16 -#define CCR_DCACH_PREF_BUF_ENABLE BIT17 - -/* Ratio options for CPU to DDR for 6281/6192/6190 */ -#define CPU_2_DDR_CLK_1x3 4 -#define CPU_2_DDR_CLK_1x4 6 - -/* Ratio options for CPU to DDR for 6281 only */ -#define CPU_2_DDR_CLK_2x9 7 -#define CPU_2_DDR_CLK_1x5 8 -#define CPU_2_DDR_CLK_1x6 9 - -/* Ratio options for CPU to DDR for 6180 only */ -#define CPU_2_DDR_CLK_1x3_1 0x5 -#define CPU_2_DDR_CLK_1x4_1 0x6 - -/* Default values for CPU to Mbus-L DDR Interface Tick Driver and */ -/* CPU to Mbus-L Tick Sample fields in CPU config register */ - -#define TICK_DRV_1x1 0 -#define TICK_DRV_1x2 0 -#define TICK_DRV_1x3 1 -#define TICK_DRV_1x4 2 -#define TICK_SMPL_1x1 0 -#define TICK_SMPL_1x2 1 -#define TICK_SMPL_1x3 0 -#define TICK_SMPL_1x4 0 - -#define CPU_2_MBUSL_DDR_CLK_1x2 \ - ((TICK_DRV_1x2 << CCR_CPU_2_MBUSL_TICK_DRV_OFFS) | \ - (TICK_SMPL_1x2 << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS)) -#define CPU_2_MBUSL_DDR_CLK_1x3 \ - ((TICK_DRV_1x3 << CCR_CPU_2_MBUSL_TICK_DRV_OFFS) | \ - (TICK_SMPL_1x3 << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS)) -#define CPU_2_MBUSL_DDR_CLK_1x4 \ - ((TICK_DRV_1x4 << CCR_CPU_2_MBUSL_TICK_DRV_OFFS) | \ - (TICK_SMPL_1x4 << CCR_CPU_2_MBUSL_TICK_SMPL_OFFS)) - -/* ARM Control and Status register */ -/* CPU_CTRL_STAT_REG (CCSR) */ - - -/* -This is used to block PCI express\PCI from access Socrates/Feroceon GP -while ARM boot is still in progress -*/ - -#define CCSR_PCI_ACCESS_OFFS 0 -#define CCSR_PCI_ACCESS_MASK BIT0 -#define CCSR_PCI_ACCESS_ENABLE (0 << CCSR_PCI_ACCESS_OFFS) -#define CCSR_PCI_ACCESS_DISBALE (1 << CCSR_PCI_ACCESS_OFFS) - -#define CCSR_ARM_RESET BIT1 -#define CCSR_SELF_INT BIT2 -#define CCSR_BIG_ENDIAN BIT15 - - -/* RSTOUTn Mask Register */ -/* CPU_RSTOUTN_MASK_REG (CRMR) */ - -#define CRMR_PEX_RST_OUT_OFFS 0 -#define CRMR_PEX_RST_OUT_MASK BIT0 -#define CRMR_PEX_RST_OUT_ENABLE (1 << CRMR_PEX_RST_OUT_OFFS) -#define CRMR_PEX_RST_OUT_DISABLE (0 << CRMR_PEX_RST_OUT_OFFS) - -#define CRMR_WD_RST_OUT_OFFS 1 -#define CRMR_WD_RST_OUT_MASK BIT1 -#define CRMR_WD_RST_OUT_ENABLE (1 << CRMR_WD_RST_OUT_OFFS) -#define CRMR_WD_RST_OUT_DISBALE (0 << CRMR_WD_RST_OUT_OFFS) - -#define CRMR_SOFT_RST_OUT_OFFS 2 -#define CRMR_SOFT_RST_OUT_MASK BIT2 -#define CRMR_SOFT_RST_OUT_ENABLE (1 << CRMR_SOFT_RST_OUT_OFFS) -#define CRMR_SOFT_RST_OUT_DISBALE (0 << CRMR_SOFT_RST_OUT_OFFS) - -/* System Software Reset Register */ -/* CPU_SYS_SOFT_RST_REG (CSSRR) */ - -#define CSSRR_SYSTEM_SOFT_RST BIT0 - -/* AHB to Mbus Bridge Interrupt Cause Register*/ -/* CPU_AHB_MBUS_CAUSE_INT_REG (CAMCIR) */ - -#define CAMCIR_ARM_SELF_INT BIT0 -#define CAMCIR_ARM_TIMER0_INT_REQ BIT1 -#define CAMCIR_ARM_TIMER1_INT_REQ BIT2 -#define CAMCIR_ARM_WD_TIMER_INT_REQ BIT3 - - -/* AHB to Mbus Bridge Interrupt Mask Register*/ -/* CPU_AHB_MBUS_MASK_INT_REG (CAMMIR) */ - -#define CAMCIR_ARM_SELF_INT_OFFS 0 -#define CAMCIR_ARM_SELF_INT_MASK BIT0 -#define CAMCIR_ARM_SELF_INT_EN (1 << CAMCIR_ARM_SELF_INT_OFFS) -#define CAMCIR_ARM_SELF_INT_DIS (0 << CAMCIR_ARM_SELF_INT_OFFS) - - -#define CAMCIR_ARM_TIMER0_INT_REQ_OFFS 1 -#define CAMCIR_ARM_TIMER0_INT_REQ_MASK BIT1 -#define CAMCIR_ARM_TIMER0_INT_REQ_EN (1 << CAMCIR_ARM_TIMER0_INT_REQ_OFFS) -#define CAMCIR_ARM_TIMER0_INT_REQ_DIS (0 << CAMCIR_ARM_TIMER0_INT_REQ_OFFS) - -#define CAMCIR_ARM_TIMER1_INT_REQ_OFFS 2 -#define CAMCIR_ARM_TIMER1_INT_REQ_MASK BIT2 -#define CAMCIR_ARM_TIMER1_INT_REQ_EN (1 << CAMCIR_ARM_TIMER1_INT_REQ_OFFS) -#define CAMCIR_ARM_TIMER1_INT_REQ_DIS (0 << CAMCIR_ARM_TIMER1_INT_REQ_OFFS) - -#define CAMCIR_ARM_WD_TIMER_INT_REQ_OFFS 3 -#define CAMCIR_ARM_WD_TIMER_INT_REQ_MASK BIT3 -#define CAMCIR_ARM_WD_TIMER_INT_REQ_EN (1 << CAMCIR_ARM_WD_TIMER_INT_REQ_OFFS) -#define CAMCIR_ARM_WD_TIMER_INT_REQ_DIS (0 << CAMCIR_ARM_WD_TIMER_INT_REQ_OFFS) - -/* CPU FTDLL Config register (CFCR) fields */ -#define CFCR_FTDLL_ICACHE_TAG_OFFS 0 -#define CFCR_FTDLL_ICACHE_TAG_MASK (0x7F << CFCR_FTDLL_ICACHE_TAG_OFFS) -#define CFCR_FTDLL_DCACHE_TAG_OFFS 8 -#define CFCR_FTDLL_DCACHE_TAG_MASK (0x7F << CFCR_FTDLL_DCACHE_TAG_OFFS) -#define CFCR_FTDLL_OVERWRITE_ENABLE (1 << 15) -/* For Orion 2 D2 only */ -#define CFCR_MRVL_CPU_ID_OFFS 16 -#define CFCR_MRVL_CPU_ID_MASK (0x1 << CFCR_MRVL_CPU_ID_OFFS) -#define CFCR_ARM_CPU_ID (0x0 << CFCR_MRVL_CPU_ID_OFFS) -#define CFCR_MRVL_CPU_ID (0x1 << CFCR_MRVL_CPU_ID_OFFS) -#define CFCR_VFP_SUB_ARC_NUM_OFFS 7 -#define CFCR_VFP_SUB_ARC_NUM_MASK (0x1 << CFCR_VFP_SUB_ARC_NUM_OFFS) -#define CFCR_VFP_SUB_ARC_NUM_1 (0x0 << CFCR_VFP_SUB_ARC_NUM_OFFS) -#define CFCR_VFP_SUB_ARC_NUM_2 (0x1 << CFCR_VFP_SUB_ARC_NUM_OFFS) - -/* CPU_L2_CONFIG_REG fields */ -#ifdef MV_CPU_LE -#define CL2CR_L2_ECC_EN_OFFS 2 -#define CL2CR_L2_WT_MODE_OFFS 4 -#else -#define CL2CR_L2_ECC_EN_OFFS 26 -#define CL2CR_L2_WT_MODE_OFFS 28 -#endif - -#define CL2CR_L2_ECC_EN_MASK (1 << CL2CR_L2_ECC_EN_OFFS) -#define CL2CR_L2_WT_MODE_MASK (1 << CL2CR_L2_WT_MODE_OFFS) - -/*******************************************/ -/* Main Interrupt Controller Registers Map */ -/*******************************************/ - -#define CPU_MAIN_INT_CAUSE_REG 0x20200 -#define CPU_MAIN_IRQ_MASK_REG 0x20204 -#define CPU_MAIN_FIQ_MASK_REG 0x20208 -#define CPU_ENPOINT_MASK_REG 0x2020C -#define CPU_MAIN_INT_CAUSE_HIGH_REG 0x20210 -#define CPU_MAIN_IRQ_MASK_HIGH_REG 0x20214 -#define CPU_MAIN_FIQ_MASK_HIGH_REG 0x20218 -#define CPU_ENPOINT_MASK_HIGH_REG 0x2021C - - -/*******************************************/ -/* ARM Doorbell Registers Map */ -/*******************************************/ - -#define CPU_HOST_TO_ARM_DRBL_REG 0x20400 -#define CPU_HOST_TO_ARM_MASK_REG 0x20404 -#define CPU_ARM_TO_HOST_DRBL_REG 0x20408 -#define CPU_ARM_TO_HOST_MASK_REG 0x2040C - - - -/* CPU control register map */ -/* Set bits means value is about to change according to new value */ -#define CPU_CONFIG_DEFAULT_MASK (CCR_VEC_INIT_LOC_MASK | CCR_AHB_ERROR_PROP_MASK) - -#define CPU_CONFIG_DEFAULT (CCR_VEC_INIT_LOC_FF00) - -/* CPU Control and status defaults */ -#define CPU_CTRL_STAT_DEFAULT_MASK (CCSR_PCI_ACCESS_MASK) - - -#define CPU_CTRL_STAT_DEFAULT (CCSR_PCI_ACCESS_ENABLE) - -#endif /* __INCmvCpuIfRegsh */ - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysAudio.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysAudio.c deleted file mode 100644 index 769475f8f4..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysAudio.c +++ /dev/null @@ -1,324 +0,0 @@ -/******************************************************************************* -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 "mvSysAudio.h" - -/******************************************************************************* -* mvAudioWinSet - Set AUDIO target address window -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI_MEM0) -* address window, also known as address decode window. -* After setting this target window, the AUDIO will be able to access the -* target within the address window. -* -* INPUT: -* winNum - AUDIO target address decode window number. -* pAddrDecWin - AUDIO target window data structure. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if address window overlapps with other address decode windows. -* MV_BAD_PARAM if base address is invalid parameter or target is -* unknown. -* -*******************************************************************************/ -MV_STATUS mvAudioWinSet(MV_U32 winNum, MV_AUDIO_DEC_WIN *pAddrDecWin) -{ - MV_TARGET_ATTRIB targetAttribs; - MV_DEC_REGS decRegs; - - /* Parameter checking */ - if (winNum >= MV_AUDIO_MAX_ADDR_DECODE_WIN) - { - mvOsPrintf("%s: ERR. Invalid win num %d\n",__FUNCTION__, winNum); - return MV_BAD_PARAM; - } - - /* check if address is aligned to the size */ - if(MV_IS_NOT_ALIGN(pAddrDecWin->addrWin.baseLow, pAddrDecWin->addrWin.size)) - { - mvOsPrintf("mvAudioWinSet:Error setting AUDIO window %d to "\ - "target %s.\nAddress 0x%08x is unaligned to size 0x%x.\n", - winNum, - mvCtrlTargetNameGet(pAddrDecWin->target), - pAddrDecWin->addrWin.baseLow, - pAddrDecWin->addrWin.size); - return MV_ERROR; - } - - decRegs.baseReg = 0; - decRegs.sizeReg = 0; - - if (MV_OK != mvCtrlAddrDecToReg(&(pAddrDecWin->addrWin),&decRegs)) - { - mvOsPrintf("%s: mvCtrlAddrDecToReg Failed\n", __FUNCTION__); - return MV_ERROR; - } - - mvCtrlAttribGet(pAddrDecWin->target, &targetAttribs); - - /* set attributes */ - decRegs.sizeReg &= ~MV_AUDIO_WIN_ATTR_MASK; - decRegs.sizeReg |= (targetAttribs.attrib << MV_AUDIO_WIN_ATTR_OFFSET); - - /* set target ID */ - decRegs.sizeReg &= ~MV_AUDIO_WIN_TARGET_MASK; - decRegs.sizeReg |= (targetAttribs.targetId << MV_AUDIO_WIN_TARGET_OFFSET); - - if (pAddrDecWin->enable == MV_TRUE) - { - decRegs.sizeReg |= MV_AUDIO_WIN_ENABLE_MASK; - } - else - { - decRegs.sizeReg &= ~MV_AUDIO_WIN_ENABLE_MASK; - } - - MV_REG_WRITE( MV_AUDIO_WIN_CTRL_REG(winNum), decRegs.sizeReg); - MV_REG_WRITE( MV_AUDIO_WIN_BASE_REG(winNum), decRegs.baseReg); - - return MV_OK; -} - -/******************************************************************************* -* mvAudioWinGet - Get AUDIO peripheral target address window. -* -* DESCRIPTION: -* Get AUDIO peripheral target address window. -* -* INPUT: -* winNum - AUDIO target address decode window number. -* -* OUTPUT: -* pAddrDecWin - AUDIO target window data structure. -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvAudioWinGet(MV_U32 winNum, MV_AUDIO_DEC_WIN *pAddrDecWin) -{ - MV_DEC_REGS decRegs; - MV_TARGET_ATTRIB targetAttrib; - - /* Parameter checking */ - if (winNum >= MV_AUDIO_MAX_ADDR_DECODE_WIN) - { - mvOsPrintf("%s : ERR. Invalid winNum %d\n", - __FUNCTION__, winNum); - return MV_NOT_SUPPORTED; - } - - decRegs.baseReg = MV_REG_READ( MV_AUDIO_WIN_BASE_REG(winNum) ); - decRegs.sizeReg = MV_REG_READ( MV_AUDIO_WIN_CTRL_REG(winNum) ); - - if (MV_OK != mvCtrlRegToAddrDec(&decRegs, &pAddrDecWin->addrWin) ) - { - mvOsPrintf("%s: mvCtrlRegToAddrDec Failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* attrib and targetId */ - targetAttrib.attrib = (decRegs.sizeReg & MV_AUDIO_WIN_ATTR_MASK) >> - MV_AUDIO_WIN_ATTR_OFFSET; - targetAttrib.targetId = (decRegs.sizeReg & MV_AUDIO_WIN_TARGET_MASK) >> - MV_AUDIO_WIN_TARGET_OFFSET; - - pAddrDecWin->target = mvCtrlTargetGet(&targetAttrib); - - /* Check if window is enabled */ - if(decRegs.sizeReg & MV_AUDIO_WIN_ENABLE_MASK) - { - pAddrDecWin->enable = MV_TRUE; - } - else - { - pAddrDecWin->enable = MV_FALSE; - } - return MV_OK; -} -/******************************************************************************* -* mvAudioAddrDecShow - Print the AUDIO address decode map. -* -* DESCRIPTION: -* This function print the AUDIO address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_VOID mvAudioAddrDecShow(MV_VOID) -{ - - MV_AUDIO_DEC_WIN win; - int i; - - if (MV_FALSE == mvCtrlPwrClckGet(AUDIO_UNIT_ID, 0)) - return; - - - mvOsOutput( "\n" ); - mvOsOutput( "AUDIO:\n" ); - mvOsOutput( "----\n" ); - - for( i = 0; i < MV_AUDIO_MAX_ADDR_DECODE_WIN; i++ ) - { - memset( &win, 0, sizeof(MV_AUDIO_DEC_WIN) ); - - mvOsOutput( "win%d - ", i ); - - if( mvAudioWinGet( i, &win ) == MV_OK ) - { - if( win.enable ) - { - mvOsOutput( "%s base %08x, ", - mvCtrlTargetNameGet(win.target), win.addrWin.baseLow ); - mvOsOutput( "...." ); - - mvSizePrint( win.addrWin.size ); - - mvOsOutput( "\n" ); - } - else - mvOsOutput( "disable\n" ); - } - } -} - - -/******************************************************************************* -* mvAudioWinInit - Initialize the integrated AUDIO target address window. -* -* DESCRIPTION: -* Initialize the AUDIO peripheral target address window. -* -* INPUT: -* -* -* OUTPUT: -* -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvAudioInit(MV_VOID) -{ - int winNum; - MV_AUDIO_DEC_WIN audioWin; - MV_CPU_DEC_WIN cpuAddrDecWin; - MV_U32 status; - - mvAudioHalInit(); - - /* Initiate Audio address decode */ - - /* First disable all address decode windows */ - for(winNum = 0; winNum < MV_AUDIO_MAX_ADDR_DECODE_WIN; winNum++) - { - MV_U32 regVal = MV_REG_READ(MV_AUDIO_WIN_CTRL_REG(winNum)); - regVal &= ~MV_AUDIO_WIN_ENABLE_MASK; - MV_REG_WRITE(MV_AUDIO_WIN_CTRL_REG(winNum), regVal); - } - - for(winNum = 0; winNum < MV_AUDIO_MAX_ADDR_DECODE_WIN; winNum++) - { - - /* We will set the Window to DRAM_CS0 in default */ - /* first get attributes from CPU If */ - status = mvCpuIfTargetWinGet(SDRAM_CS0, - &cpuAddrDecWin); - - if (MV_OK != status) - { - mvOsPrintf("%s: ERR. mvCpuIfTargetWinGet failed\n", __FUNCTION__); - return MV_ERROR; - } - - if (cpuAddrDecWin.enable == MV_TRUE) - { - audioWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; - audioWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; - audioWin.addrWin.size = cpuAddrDecWin.addrWin.size; - audioWin.enable = MV_TRUE; - audioWin.target = SDRAM_CS0; - - if(MV_OK != mvAudioWinSet(winNum, &audioWin)) - { - return MV_ERROR; - } - } - } - - return MV_OK; -} - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysAudio.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysAudio.h deleted file mode 100644 index f59eb9a904..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysAudio.h +++ /dev/null @@ -1,123 +0,0 @@ -/******************************************************************************* -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 __INCMVSysAudioH -#define __INCMVSysAudioH - -#include "mvCommon.h" -#include "audio/mvAudio.h" -#include "ctrlEnv/mvCtrlEnvSpec.h" -#include "ctrlEnv/sys/mvCpuIf.h" - -/***********************************/ -/* Audio Address Decoding registers*/ -/***********************************/ - -#define MV_AUDIO_MAX_ADDR_DECODE_WIN 2 -#define MV_AUDIO_RECORD_WIN_NUM 0 -#define MV_AUDIO_PLAYBACK_WIN_NUM 1 - -#define MV_AUDIO_WIN_CTRL_REG(win) (AUDIO_REG_BASE + 0xA04 + ((win)<<3)) -#define MV_AUDIO_WIN_BASE_REG(win) (AUDIO_REG_BASE + 0xA00 + ((win)<<3)) - -#define MV_AUDIO_RECORD_WIN_CTRL_REG MV_AUDIO_WIN_CTRL_REG(MV_AUDIO_RECORD_WIN_NUM) -#define MV_AUDIO_RECORD_WIN_BASE_REG MV_AUDIO_WIN_BASE_REG(MV_AUDIO_RECORD_WIN_NUM) -#define MV_AUDIO_PLAYBACK_WIN_CTRL_REG MV_AUDIO_WIN_CTRL_REG(MV_AUDIO_PLAYBACK_WIN_NUM) -#define MV_AUDIO_PLAYBACK_WIN_BASE_REG MV_AUDIO_WIN_BASE_REG(MV_AUDIO_PLAYBACK_WIN_NUM) - - -/* BITs in Windows 0-3 Control and Base Registers */ -#define MV_AUDIO_WIN_ENABLE_BIT 0 -#define MV_AUDIO_WIN_ENABLE_MASK (1<<MV_AUDIO_WIN_ENABLE_BIT) - -#define MV_AUDIO_WIN_TARGET_OFFSET 4 -#define MV_AUDIO_WIN_TARGET_MASK (0xF<<MV_AUDIO_WIN_TARGET_OFFSET) - -#define MV_AUDIO_WIN_ATTR_OFFSET 8 -#define MV_AUDIO_WIN_ATTR_MASK (0xFF<<MV_AUDIO_WIN_ATTR_OFFSET) - -#define MV_AUDIO_WIN_SIZE_OFFSET 16 -#define MV_AUDIO_WIN_SIZE_MASK (0xFFFF<<MV_AUDIO_WIN_SIZE_OFFSET) - -#define MV_AUDIO_WIN_BASE_OFFSET 16 -#define MV_AUDIO_WIN_BASE_MASK (0xFFFF<<MV_AUDIO_WIN_BASE_OFFSET) - - -typedef struct _mvAudioDecWin -{ - MV_TARGET target; - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -} MV_AUDIO_DEC_WIN; - - -MV_STATUS mvAudioInit(MV_VOID); -MV_STATUS mvAudioWinGet(MV_U32 winNum, MV_AUDIO_DEC_WIN *pAddrDecWin); -MV_STATUS mvAudioWinSet(MV_U32 winNum, MV_AUDIO_DEC_WIN *pAddrDecWin); -MV_STATUS mvAudioWinInit(MV_VOID); -MV_VOID mvAudioAddrDecShow(MV_VOID); - - -#endif - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysCesa.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysCesa.c deleted file mode 100644 index 84d0cd0bd7..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysCesa.c +++ /dev/null @@ -1,382 +0,0 @@ -/******************************************************************************* -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 "mvSysCesa.h" - -#if (MV_CESA_VERSION >= 2) -MV_TARGET tdmaAddrDecPrioTable[] = -{ -#if defined(MV_INCLUDE_SDRAM_CS0) - SDRAM_CS0, -#endif -#if defined(MV_INCLUDE_SDRAM_CS1) - SDRAM_CS1, -#endif -#if defined(MV_INCLUDE_SDRAM_CS2) - SDRAM_CS2, -#endif -#if defined(MV_INCLUDE_SDRAM_CS3) - SDRAM_CS3, -#endif -#if defined(MV_INCLUDE_PEX) - PEX0_MEM, -#endif - - TBL_TERM -}; - -/******************************************************************************* -* mvCesaWinGet - Get TDMA target address window. -* -* DESCRIPTION: -* Get TDMA target address window. -* -* INPUT: -* winNum - TDMA target address decode window number. -* -* OUTPUT: -* pDecWin - TDMA target window data structure. -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -static MV_STATUS mvCesaWinGet(MV_U32 winNum, MV_DEC_WIN *pDecWin) -{ - MV_DEC_WIN_PARAMS winParam; - MV_U32 sizeReg, baseReg; - - /* Parameter checking */ - if (winNum >= MV_CESA_TDMA_ADDR_DEC_WIN) - { - mvOsPrintf("%s : ERR. Invalid winNum %d\n", - __FUNCTION__, winNum); - return MV_NOT_SUPPORTED; - } - - baseReg = MV_REG_READ( MV_CESA_TDMA_BASE_ADDR_REG(winNum) ); - sizeReg = MV_REG_READ( MV_CESA_TDMA_WIN_CTRL_REG(winNum) ); - - /* Check if window is enabled */ - if(sizeReg & MV_CESA_TDMA_WIN_ENABLE_MASK) - { - pDecWin->enable = MV_TRUE; - - /* Extract window parameters from registers */ - winParam.targetId = (sizeReg & MV_CESA_TDMA_WIN_TARGET_MASK) >> MV_CESA_TDMA_WIN_TARGET_OFFSET; - winParam.attrib = (sizeReg & MV_CESA_TDMA_WIN_ATTR_MASK) >> MV_CESA_TDMA_WIN_ATTR_OFFSET; - winParam.size = (sizeReg & MV_CESA_TDMA_WIN_SIZE_MASK) >> MV_CESA_TDMA_WIN_SIZE_OFFSET; - winParam.baseAddr = (baseReg & MV_CESA_TDMA_WIN_BASE_MASK); - - /* Translate the decode window parameters to address decode struct */ - if (MV_OK != mvCtrlParamsToAddrDec(&winParam, pDecWin)) - { - mvOsPrintf("Failed to translate register parameters to CESA address" \ - " decode window structure\n"); - return MV_ERROR; - } - } - else - { - pDecWin->enable = MV_FALSE; - } - return MV_OK; -} - -/******************************************************************************* -* cesaWinOverlapDetect - Detect CESA TDMA address windows overlapping -* -* DESCRIPTION: -* An unpredicted behaviur is expected in case TDMA address decode -* windows overlapps. -* This function detects TDMA address decode windows overlapping of a -* specified window. The function does not check the window itself for -* overlapping. The function also skipps disabled address decode windows. -* -* INPUT: -* winNum - address decode window number. -* pAddrDecWin - An address decode window struct. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE - if the given address window overlap current address -* decode map, -* MV_FALSE - otherwise, MV_ERROR if reading invalid data -* from registers. -* -*******************************************************************************/ -static MV_STATUS cesaWinOverlapDetect(MV_U32 winNum, MV_ADDR_WIN *pAddrWin) -{ - MV_U32 winNumIndex; - MV_DEC_WIN addrDecWin; - - for(winNumIndex=0; winNumIndex<MV_CESA_TDMA_ADDR_DEC_WIN; winNumIndex++) - { - /* Do not check window itself */ - if (winNumIndex == winNum) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvCesaWinGet(winNumIndex, &addrDecWin)) - { - mvOsPrintf("%s: ERR. TargetWinGet failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* Do not check disabled windows */ - if(addrDecWin.enable == MV_FALSE) - { - continue; - } - - if (MV_TRUE == ctrlWinOverlapTest(pAddrWin, &(addrDecWin.addrWin))) - { - return MV_TRUE; - } - } - return MV_FALSE; -} - -/******************************************************************************* -* mvCesaTdmaWinSet - Set CESA TDMA target address window -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI_MEM0) -* address window, also known as address decode window. -* After setting this target window, the CESA TDMA will be able to access the -* target within the address window. -* -* INPUT: -* winNum - CESA TDMA target address decode window number. -* pAddrDecWin - CESA TDMA target window data structure. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR - if address window overlapps with other address decode windows. -* MV_BAD_PARAM - if base address is invalid parameter or target is -* unknown. -* -*******************************************************************************/ -static MV_STATUS mvCesaTdmaWinSet(MV_U32 winNum, MV_DEC_WIN *pDecWin) -{ - MV_DEC_WIN_PARAMS winParams; - MV_U32 sizeReg, baseReg; - - /* Parameter checking */ - if (winNum >= MV_CESA_TDMA_ADDR_DEC_WIN) - { - mvOsPrintf("mvCesaTdmaWinSet: ERR. Invalid win num %d\n",winNum); - return MV_BAD_PARAM; - } - - /* Check if the requested window overlapps with current windows */ - if (MV_TRUE == cesaWinOverlapDetect(winNum, &pDecWin->addrWin)) - { - mvOsPrintf("%s: ERR. Window %d overlap\n", __FUNCTION__, winNum); - return MV_ERROR; - } - - /* check if address is aligned to the size */ - if(MV_IS_NOT_ALIGN(pDecWin->addrWin.baseLow, pDecWin->addrWin.size)) - { - mvOsPrintf("mvCesaTdmaWinSet: Error setting CESA TDMA window %d to "\ - "target %s.\nAddress 0x%08x is unaligned to size 0x%x.\n", - winNum, - mvCtrlTargetNameGet(pDecWin->target), - pDecWin->addrWin.baseLow, - pDecWin->addrWin.size); - return MV_ERROR; - } - - if(MV_OK != mvCtrlAddrDecToParams(pDecWin, &winParams)) - { - mvOsPrintf("%s: mvCtrlAddrDecToParams Failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* set Size, Attributes and TargetID */ - sizeReg = (((winParams.targetId << MV_CESA_TDMA_WIN_TARGET_OFFSET) & MV_CESA_TDMA_WIN_TARGET_MASK) | - ((winParams.attrib << MV_CESA_TDMA_WIN_ATTR_OFFSET) & MV_CESA_TDMA_WIN_ATTR_MASK) | - ((winParams.size << MV_CESA_TDMA_WIN_SIZE_OFFSET) & MV_CESA_TDMA_WIN_SIZE_MASK)); - - if (pDecWin->enable == MV_TRUE) - { - sizeReg |= MV_CESA_TDMA_WIN_ENABLE_MASK; - } - else - { - sizeReg &= ~MV_CESA_TDMA_WIN_ENABLE_MASK; - } - - /* Update Base value */ - baseReg = (winParams.baseAddr & MV_CESA_TDMA_WIN_BASE_MASK); - - MV_REG_WRITE( MV_CESA_TDMA_WIN_CTRL_REG(winNum), sizeReg); - MV_REG_WRITE( MV_CESA_TDMA_BASE_ADDR_REG(winNum), baseReg); - - return MV_OK; -} - - -static MV_STATUS mvCesaTdmaAddrDecInit (void) -{ - MV_U32 winNum; - MV_STATUS status; - MV_CPU_DEC_WIN cpuAddrDecWin; - MV_DEC_WIN cesaWin; - MV_U32 winPrioIndex = 0; - - /* First disable all address decode windows */ - for(winNum=0; winNum<MV_CESA_TDMA_ADDR_DEC_WIN; winNum++) - { - MV_REG_BIT_RESET(MV_CESA_TDMA_WIN_CTRL_REG(winNum), MV_CESA_TDMA_WIN_ENABLE_MASK); - } - - /* Go through all windows in user table until table terminator */ - winNum = 0; - while( (tdmaAddrDecPrioTable[winPrioIndex] != TBL_TERM) && - (winNum < MV_CESA_TDMA_ADDR_DEC_WIN) ) { - - /* first get attributes from CPU If */ - status = mvCpuIfTargetWinGet(tdmaAddrDecPrioTable[winPrioIndex], - &cpuAddrDecWin); - if(MV_NO_SUCH == status){ - winPrioIndex++; - continue; - } - - if (MV_OK != status) - { - mvOsPrintf("cesaInit: TargetWinGet failed. winNum=%d, winIdx=%d, target=%d, status=0x%x\n", - winNum, winPrioIndex, tdmaAddrDecPrioTable[winPrioIndex], status); - return MV_ERROR; - } - if (cpuAddrDecWin.enable == MV_TRUE) - { - cesaWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; - cesaWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; - cesaWin.addrWin.size = cpuAddrDecWin.addrWin.size; - cesaWin.enable = MV_TRUE; - cesaWin.target = tdmaAddrDecPrioTable[winPrioIndex]; - -#if defined(MV646xx) - /* Get the default attributes for that target window */ - mvCtrlDefAttribGet(cesaWin.target, &cesaWin.addrWinAttr); -#endif /* MV646xx */ - - if(MV_OK != mvCesaTdmaWinSet(winNum, &cesaWin)) - { - mvOsPrintf("mvCesaTdmaWinSet FAILED: winNum=%d\n", - winNum); - return MV_ERROR; - } - winNum++; - } - winPrioIndex++; - } - return MV_OK; -} -#endif /* MV_CESA_VERSION >= 2 */ - - - - -MV_STATUS mvCesaInit (int numOfSession, int queueDepth, char* pSramBase, void *osHandle) -{ - MV_U32 cesaCryptEngBase; - MV_CPU_DEC_WIN addrDecWin; - - if(sizeof(MV_CESA_SRAM_MAP) > MV_CESA_SRAM_SIZE) - { - mvOsPrintf("mvCesaInit: Wrong SRAM map - %ld > %d\n", - sizeof(MV_CESA_SRAM_MAP), MV_CESA_SRAM_SIZE); - return MV_FAIL; - } -#if 0 - if (mvCpuIfTargetWinGet(CRYPT_ENG, &addrDecWin) == MV_OK) - cesaCryptEngBase = addrDecWin.addrWin.baseLow; - else - { - mvOsPrintf("mvCesaInit: ERR. mvCpuIfTargetWinGet failed\n"); - return MV_ERROR; - } -#else - cesaCryptEngBase = (MV_U32)pSramBase; -#endif - -#if 0 /* Already done in the platform init */ -#if (MV_CESA_VERSION >= 2) - mvCesaTdmaAddrDecInit(); -#endif /* MV_CESA_VERSION >= 2 */ -#endif - return mvCesaHalInit(numOfSession, queueDepth, pSramBase, cesaCryptEngBase, - osHandle); - -} diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysCesa.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysCesa.h deleted file mode 100644 index 73bcdc5832..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysCesa.h +++ /dev/null @@ -1,100 +0,0 @@ -/******************************************************************************* -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 __mvSysCesa_h__ -#define __mvSysCesa_h__ - - -#include "mvCommon.h" -#include "cesa/mvCesa.h" -#include "ctrlEnv/mvCtrlEnvSpec.h" -#include "ctrlEnv/sys/mvCpuIf.h" - -/***************************** TDMA Registers *************************************/ - -#define MV_CESA_TDMA_ADDR_DEC_WIN 4 - -#define MV_CESA_TDMA_BASE_ADDR_REG(win) (MV_CESA_TDMA_REG_BASE + 0xa00 + (win<<3)) - -#define MV_CESA_TDMA_WIN_CTRL_REG(win) (MV_CESA_TDMA_REG_BASE + 0xa04 + (win<<3)) - -#define MV_CESA_TDMA_WIN_ENABLE_BIT 0 -#define MV_CESA_TDMA_WIN_ENABLE_MASK (1 << MV_CESA_TDMA_WIN_ENABLE_BIT) - -#define MV_CESA_TDMA_WIN_TARGET_OFFSET 4 -#define MV_CESA_TDMA_WIN_TARGET_MASK (0xf << MV_CESA_TDMA_WIN_TARGET_OFFSET) - -#define MV_CESA_TDMA_WIN_ATTR_OFFSET 8 -#define MV_CESA_TDMA_WIN_ATTR_MASK (0xff << MV_CESA_TDMA_WIN_ATTR_OFFSET) - -#define MV_CESA_TDMA_WIN_SIZE_OFFSET 16 -#define MV_CESA_TDMA_WIN_SIZE_MASK (0xFFFF << MV_CESA_TDMA_WIN_SIZE_OFFSET) - -#define MV_CESA_TDMA_WIN_BASE_OFFSET 16 -#define MV_CESA_TDMA_WIN_BASE_MASK (0xFFFF << MV_CESA_TDMA_WIN_BASE_OFFSET) - - -MV_STATUS mvCesaInit (int numOfSession, int queueDepth, char* pSramBase, void *osHandle); - -#endif diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysDram.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysDram.c deleted file mode 100644 index 6f76c2caa9..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysDram.c +++ /dev/null @@ -1,348 +0,0 @@ -/******************************************************************************* -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. - -*******************************************************************************/ - - -/* includes */ - -#include "ddr2/mvDramIf.h" -#include "ctrlEnv/sys/mvCpuIf.h" -#include "ctrlEnv/sys/mvSysDram.h" - -/* #define MV_DEBUG */ -#ifdef MV_DEBUG -#define DB(x) x -#else -#define DB(x) -#endif - -static MV_BOOL sdramIfWinOverlap(MV_TARGET target, MV_ADDR_WIN *pAddrWin); - -/******************************************************************************* -* mvDramIfWinSet - Set DRAM interface address decode window -* -* DESCRIPTION: -* This function sets DRAM interface address decode window. -* -* INPUT: -* target - System target. Use only SDRAM targets. -* pAddrDecWin - SDRAM address window structure. -* -* OUTPUT: -* None -* -* RETURN: -* MV_BAD_PARAM if parameters are invalid or window is invalid, MV_OK -* otherwise. -*******************************************************************************/ -MV_STATUS mvDramIfWinSet(MV_TARGET target, MV_DRAM_DEC_WIN *pAddrDecWin) -{ - MV_U32 baseReg=0,sizeReg=0; - MV_U32 baseToReg=0 , sizeToReg=0; - - /* Check parameters */ - if (!MV_TARGET_IS_DRAM(target)) - { - mvOsPrintf("mvDramIfWinSet: target %d is not SDRAM\n", target); - return MV_BAD_PARAM; - } - - /* Check if the requested window overlaps with current enabled windows */ - if (MV_TRUE == sdramIfWinOverlap(target, &pAddrDecWin->addrWin)) - { - mvOsPrintf("mvDramIfWinSet: ERR. Target %d overlaps\n", target); - return MV_BAD_PARAM; - } - - /* check if address is aligned to the size */ - if(MV_IS_NOT_ALIGN(pAddrDecWin->addrWin.baseLow, pAddrDecWin->addrWin.size)) - { - mvOsPrintf("mvDramIfWinSet:Error setting DRAM interface window %d."\ - "\nAddress 0x%08x is unaligned to size 0x%x.\n", - target, - pAddrDecWin->addrWin.baseLow, - pAddrDecWin->addrWin.size); - return MV_ERROR; - } - - /* read base register*/ - baseReg = MV_REG_READ(SDRAM_BASE_ADDR_REG(0,target)); - - /* read size register */ - sizeReg = MV_REG_READ(SDRAM_SIZE_REG(0,target)); - - /* BaseLow[31:16] => base register [31:16] */ - baseToReg = pAddrDecWin->addrWin.baseLow & SCBAR_BASE_MASK; - - /* Write to address decode Base Address Register */ - baseReg &= ~SCBAR_BASE_MASK; - baseReg |= baseToReg; - - /* Translate the given window size to register format */ - sizeToReg = ctrlSizeToReg(pAddrDecWin->addrWin.size, SCSR_SIZE_ALIGNMENT); - - /* Size parameter validity check. */ - if (-1 == sizeToReg) - { - mvOsPrintf("mvCtrlAddrDecToReg: ERR. Win %d size invalid.\n",target); - return MV_BAD_PARAM; - } - - /* set size */ - sizeReg &= ~SCSR_SIZE_MASK; - /* Size is located at upper 16 bits */ - sizeReg |= (sizeToReg << SCSR_SIZE_OFFS); - - /* enable/Disable */ - if (MV_TRUE == pAddrDecWin->enable) - { - sizeReg |= SCSR_WIN_EN; - } - else - { - sizeReg &= ~SCSR_WIN_EN; - } - - /* 3) Write to address decode Base Address Register */ - MV_REG_WRITE(SDRAM_BASE_ADDR_REG(0,target), baseReg); - - /* Write to address decode Size Register */ - MV_REG_WRITE(SDRAM_SIZE_REG(0,target), sizeReg); - - return MV_OK; -} -/******************************************************************************* -* mvDramIfWinGet - Get DRAM interface address decode window -* -* DESCRIPTION: -* This function gets DRAM interface address decode window. -* -* INPUT: -* target - System target. Use only SDRAM targets. -* -* OUTPUT: -* pAddrDecWin - SDRAM address window structure. -* -* RETURN: -* MV_BAD_PARAM if parameters are invalid or window is invalid, MV_OK -* otherwise. -*******************************************************************************/ -MV_STATUS mvDramIfWinGet(MV_TARGET target, MV_DRAM_DEC_WIN *pAddrDecWin) -{ - MV_U32 baseReg,sizeReg; - MV_U32 sizeRegVal; - /* Check parameters */ - if (!MV_TARGET_IS_DRAM(target)) - { - mvOsPrintf("mvDramIfWinGet: target %d is Illigal\n", target); - return MV_ERROR; - } - - /* Read base and size registers */ - sizeReg = MV_REG_READ(SDRAM_SIZE_REG(0,target)); - baseReg = MV_REG_READ(SDRAM_BASE_ADDR_REG(0,target)); - - sizeRegVal = (sizeReg & SCSR_SIZE_MASK) >> SCSR_SIZE_OFFS; - - pAddrDecWin->addrWin.size = ctrlRegToSize(sizeRegVal, - SCSR_SIZE_ALIGNMENT); - - /* Check if ctrlRegToSize returned OK */ - if (-1 == pAddrDecWin->addrWin.size) - { - mvOsPrintf("mvDramIfWinGet: size of target %d is Illigal\n", target); - return MV_ERROR; - } - - /* Extract base address */ - /* Base register [31:16] ==> baseLow[31:16] */ - pAddrDecWin->addrWin.baseLow = baseReg & SCBAR_BASE_MASK; - - pAddrDecWin->addrWin.baseHigh = 0; - - - if (sizeReg & SCSR_WIN_EN) - { - pAddrDecWin->enable = MV_TRUE; - } - else - { - pAddrDecWin->enable = MV_FALSE; - } - - return MV_OK; -} -/******************************************************************************* -* mvDramIfWinEnable - Enable/Disable SDRAM address decode window -* -* DESCRIPTION: -* This function enable/Disable SDRAM address decode window. -* -* INPUT: -* target - System target. Use only SDRAM targets. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR in case function parameter are invalid, MV_OK otherewise. -* -*******************************************************************************/ -MV_STATUS mvDramIfWinEnable(MV_TARGET target, MV_BOOL enable) -{ - MV_DRAM_DEC_WIN addrDecWin; - - /* Check parameters */ - if (!MV_TARGET_IS_DRAM(target)) - { - mvOsPrintf("mvDramIfWinEnable: target %d is Illigal\n", target); - return MV_ERROR; - } - - if (enable == MV_TRUE) - { /* First check for overlap with other enabled windows */ - if (MV_OK != mvDramIfWinGet(target, &addrDecWin)) - { - mvOsPrintf("mvDramIfWinEnable:ERR. Getting target %d failed.\n", - target); - return MV_ERROR; - } - /* Check for overlapping */ - if (MV_FALSE == sdramIfWinOverlap(target, &(addrDecWin.addrWin))) - { - /* No Overlap. Enable address decode winNum window */ - MV_REG_BIT_SET(SDRAM_SIZE_REG(0,target), SCSR_WIN_EN); - } - else - { /* Overlap detected */ - mvOsPrintf("mvDramIfWinEnable: ERR. Target %d overlap detect\n", - target); - return MV_ERROR; - } - } - else - { /* Disable address decode winNum window */ - MV_REG_BIT_RESET(SDRAM_SIZE_REG(0, target), SCSR_WIN_EN); - } - - return MV_OK; -} - -/******************************************************************************* -* sdramIfWinOverlap - Check if an address window overlap an SDRAM address window -* -* DESCRIPTION: -* This function scan each SDRAM address decode window to test if it -* overlapps the given address windoow -* -* INPUT: -* target - SDRAM target where the function skips checking. -* pAddrDecWin - The tested address window for overlapping with -* SDRAM windows. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlaps any enabled address -* decode map, MV_FALSE otherwise. -* -*******************************************************************************/ -static MV_BOOL sdramIfWinOverlap(MV_TARGET target, MV_ADDR_WIN *pAddrWin) -{ - MV_TARGET targetNum; - MV_DRAM_DEC_WIN addrDecWin; - - for(targetNum = SDRAM_CS0; targetNum < MV_DRAM_MAX_CS ; targetNum++) - { - /* don't check our winNum or illegal targets */ - if (targetNum == target) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvDramIfWinGet(targetNum, &addrDecWin)) - { - mvOsPrintf("sdramIfWinOverlap: ERR. TargetWinGet failed\n"); - return MV_ERROR; - } - - /* Do not check disabled windows */ - if (MV_FALSE == addrDecWin.enable) - { - continue; - } - - if(MV_TRUE == ctrlWinOverlapTest(pAddrWin, &addrDecWin.addrWin)) - { - mvOsPrintf( - "sdramIfWinOverlap: Required target %d overlap winNum %d\n", - target, targetNum); - return MV_TRUE; - } - } - - return MV_FALSE; -} - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysDram.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysDram.h deleted file mode 100644 index 7bd9c9de27..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysDram.h +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* -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 __sysDram -#define __sysDram - -/* This structure describes CPU interface address decode window */ -typedef struct _mvDramIfDecWin -{ - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ -}MV_DRAM_DEC_WIN; - -MV_STATUS mvDramIfWinSet(MV_TARGET target, MV_DRAM_DEC_WIN *pAddrDecWin); -MV_STATUS mvDramIfWinGet(MV_TARGET target, MV_DRAM_DEC_WIN *pAddrDecWin); -MV_STATUS mvDramIfWinEnable(MV_TARGET target, MV_BOOL enable); - -#endif diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysGbe.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysGbe.c deleted file mode 100644 index 7f6e4a59dd..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysGbe.c +++ /dev/null @@ -1,658 +0,0 @@ -/******************************************************************************* -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 "ctrlEnv/sys/mvSysGbe.h" - - - -typedef struct _mvEthDecWin -{ - MV_TARGET target; - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -}MV_ETH_DEC_WIN; - -MV_TARGET ethAddrDecPrioTap[] = -{ -#if defined(MV_INCLUDE_SDRAM_CS0) - SDRAM_CS0, -#endif -#if defined(MV_INCLUDE_SDRAM_CS1) - SDRAM_CS1, -#endif -#if defined(MV_INCLUDE_SDRAM_CS2) - SDRAM_CS2, -#endif -#if defined(MV_INCLUDE_SDRAM_CS3) - SDRAM_CS3, -#endif -#if defined(MV_INCLUDE_DEVICE_CS0) - DEVICE_CS0, -#endif -#if defined(MV_INCLUDE_DEVICE_CS1) - DEVICE_CS1, -#endif -#if defined(MV_INCLUDE_DEVICE_CS2) - DEVICE_CS2, -#endif -#if defined(MV_INCLUDE_DEVICE_CS3) - DEVICE_CS3, -#endif -#if defined(MV_INCLUDE_PEX) - PEX0_IO, -#endif - TBL_TERM -}; - -static MV_STATUS ethWinOverlapDetect(int port, MV_U32 winNum, MV_ADDR_WIN *pAddrWin); -static MV_STATUS mvEthWinSet(int port, MV_U32 winNum, MV_ETH_DEC_WIN *pAddrDecWin); -static MV_STATUS mvEthWinGet(int port, MV_U32 winNum, MV_ETH_DEC_WIN *pAddrDecWin); - - -/******************************************************************************* -* mvEthWinInit - Initialize ETH address decode windows -* -* DESCRIPTION: -* This function initialize ETH window decode unit. It set the -* default address decode windows of the unit. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if setting fail. -*******************************************************************************/ -/* Configure EthDrv memory map registes. */ -MV_STATUS mvEthWinInit (int port) -{ - MV_U32 winNum, status, winPrioIndex=0, i, regVal=0; - MV_ETH_DEC_WIN ethWin; - MV_CPU_DEC_WIN cpuAddrDecWin; - static MV_U32 accessProtReg = 0; - -#if (MV_ETH_VERSION <= 1) - static MV_BOOL isFirst = MV_TRUE; - - if(isFirst == MV_FALSE) - { - MV_REG_WRITE(ETH_ACCESS_PROTECT_REG(port), accessProtReg); - return MV_OK; - } - isFirst = MV_FALSE; -#endif /* MV_GIGA_ETH_VERSION */ - - /* Initiate Ethernet address decode */ - - /* First disable all address decode windows */ - for(winNum=0; winNum<ETH_MAX_DECODE_WIN; winNum++) - { - regVal |= MV_BIT_MASK(winNum); - } - MV_REG_WRITE(ETH_BASE_ADDR_ENABLE_REG(port), regVal); - - /* Go through all windows in user table until table terminator */ - for (winNum=0; ((ethAddrDecPrioTap[winPrioIndex] != TBL_TERM) && - (winNum < ETH_MAX_DECODE_WIN)); ) - { - /* first get attributes from CPU If */ - status = mvCpuIfTargetWinGet(ethAddrDecPrioTap[winPrioIndex], - &cpuAddrDecWin); - - if(MV_NO_SUCH == status) - { - winPrioIndex++; - continue; - } - if (MV_OK != status) - { - mvOsPrintf("mvEthWinInit: ERR. mvCpuIfTargetWinGet failed\n"); - return MV_ERROR; - } - - if (cpuAddrDecWin.enable == MV_TRUE) - { - ethWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; - ethWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; - ethWin.addrWin.size = cpuAddrDecWin.addrWin.size; - ethWin.enable = MV_TRUE; - ethWin.target = ethAddrDecPrioTap[winPrioIndex]; - - if(MV_OK != mvEthWinSet(port, winNum, ðWin)) - { - mvOsPrintf("mvEthWinInit: ERR. mvEthWinSet failed winNum=%d\n", - winNum); - return MV_ERROR; - } - winNum++; - } - winPrioIndex ++; - } - - /* set full access to all windows. */ - for(i=0; i<winNum; i++) - { - accessProtReg |= (FULL_ACCESS << (i*2)); - } - MV_REG_WRITE(ETH_ACCESS_PROTECT_REG(port), accessProtReg); - - return MV_OK; -} - -/******************************************************************************* -* mvEthWinSet - Set ETH target address window -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI_MEM0) -* address window, also known as address decode window. -* After setting this target window, the ETH will be able to access the -* target within the address window. -* -* INPUT: -* winNum - ETH to target address decode window number. -* pAddrDecWin - ETH target window data structure. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if address window overlapps with other address decode windows. -* MV_BAD_PARAM if base address is invalid parameter or target is -* unknown. -* -*******************************************************************************/ -MV_STATUS mvEthWinSet(int port, MV_U32 winNum, MV_ETH_DEC_WIN *pAddrDecWin) -{ - MV_TARGET_ATTRIB targetAttribs; - MV_DEC_REGS decRegs; - - /* Parameter checking */ - if (winNum >= ETH_MAX_DECODE_WIN) - { - mvOsPrintf("mvEthWinSet: ERR. Invalid win num %d\n",winNum); - return MV_BAD_PARAM; - } - - /* Check if the requested window overlapps with current windows */ - if (MV_TRUE == ethWinOverlapDetect(port, winNum, &pAddrDecWin->addrWin)) - { - mvOsPrintf("mvEthWinSet: ERR. Window %d overlap\n", winNum); - return MV_ERROR; - } - - /* check if address is aligned to the size */ - if(MV_IS_NOT_ALIGN(pAddrDecWin->addrWin.baseLow, pAddrDecWin->addrWin.size)) - { - mvOsPrintf("mvEthWinSet: Error setting Ethernet window %d to "\ - "target %s.\nAddress 0x%08x is unaligned to size 0x%x.\n", - winNum, - mvCtrlTargetNameGet(pAddrDecWin->target), - pAddrDecWin->addrWin.baseLow, - pAddrDecWin->addrWin.size); - return MV_ERROR; - } - - - decRegs.baseReg = MV_REG_READ(ETH_WIN_BASE_REG(port, winNum)); - decRegs.sizeReg = MV_REG_READ(ETH_WIN_SIZE_REG(port, winNum)); - - if (MV_OK != mvCtrlAddrDecToReg(&(pAddrDecWin->addrWin),&decRegs)) - { - mvOsPrintf("mvEthWinSet:mvCtrlAddrDecToReg Failed\n"); - return MV_ERROR; - } - - mvCtrlAttribGet(pAddrDecWin->target,&targetAttribs); - - /* set attributes */ - decRegs.baseReg &= ~ETH_WIN_ATTR_MASK; - decRegs.baseReg |= targetAttribs.attrib << ETH_WIN_ATTR_OFFS; - /* set target ID */ - decRegs.baseReg &= ~ETH_WIN_TARGET_MASK; - decRegs.baseReg |= targetAttribs.targetId << ETH_WIN_TARGET_OFFS; - - /* for the safe side we disable the window before writing the new - values */ - mvEthWinEnable(port, winNum, MV_FALSE); - MV_REG_WRITE(ETH_WIN_BASE_REG(port, winNum), decRegs.baseReg); - - /* Write to address decode Size Register */ - MV_REG_WRITE(ETH_WIN_SIZE_REG(port, winNum), decRegs.sizeReg); - - /* Enable address decode target window */ - if (pAddrDecWin->enable == MV_TRUE) - { - mvEthWinEnable(port, winNum, MV_TRUE); - } - - return MV_OK; -} - -/******************************************************************************* -* mvETHWinGet - Get dma peripheral target address window. -* -* DESCRIPTION: -* Get ETH peripheral target address window. -* -* INPUT: -* winNum - ETH to target address decode window number. -* -* OUTPUT: -* pAddrDecWin - ETH target window data structure. -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvEthWinGet(int port, MV_U32 winNum, MV_ETH_DEC_WIN *pAddrDecWin) -{ - MV_DEC_REGS decRegs; - MV_TARGET_ATTRIB targetAttrib; - - /* Parameter checking */ - if (winNum >= ETH_MAX_DECODE_WIN) - { - mvOsPrintf("mvEthWinGet: ERR. Invalid winNum %d\n", winNum); - return MV_NOT_SUPPORTED; - } - - decRegs.baseReg = MV_REG_READ(ETH_WIN_BASE_REG(port, winNum)); - decRegs.sizeReg = MV_REG_READ(ETH_WIN_SIZE_REG(port, winNum)); - - if (MV_OK != mvCtrlRegToAddrDec(&decRegs,&(pAddrDecWin->addrWin))) - { - mvOsPrintf("mvAhbToMbusWinGet: mvCtrlRegToAddrDec Failed \n"); - return MV_ERROR; - } - - /* attrib and targetId */ - targetAttrib.attrib = - (decRegs.baseReg & ETH_WIN_ATTR_MASK) >> ETH_WIN_ATTR_OFFS; - targetAttrib.targetId = - (decRegs.baseReg & ETH_WIN_TARGET_MASK) >> ETH_WIN_TARGET_OFFS; - - pAddrDecWin->target = mvCtrlTargetGet(&targetAttrib); - - /* Check if window is enabled */ - if (~(MV_REG_READ(ETH_BASE_ADDR_ENABLE_REG(port))) & (1 << winNum) ) - { - pAddrDecWin->enable = MV_TRUE; - } - else - { - pAddrDecWin->enable = MV_FALSE; - } - - return MV_OK; -} - -/******************************************************************************* -* mvEthWinEnable - Enable/disable a ETH to target address window -* -* DESCRIPTION: -* This function enable/disable a ETH to target address window. -* According to parameter 'enable' the routine will enable the -* window, thus enabling ETH accesses (before enabling the window it is -* tested for overlapping). Otherwise, the window will be disabled. -* -* INPUT: -* winNum - ETH to target address decode window number. -* enable - Enable/disable parameter. -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_ERROR if decode window number was wrong or enabled window overlapps. -* -*******************************************************************************/ -MV_STATUS mvEthWinEnable(int port, MV_U32 winNum,MV_BOOL enable) -{ - MV_ETH_DEC_WIN addrDecWin; - - /* Parameter checking */ - if (winNum >= ETH_MAX_DECODE_WIN) - { - mvOsPrintf("mvEthTargetWinEnable:ERR. Invalid winNum%d\n",winNum); - return MV_ERROR; - } - - if (enable == MV_TRUE) - { /* First check for overlap with other enabled windows */ - /* Get current window */ - if (MV_OK != mvEthWinGet(port, winNum, &addrDecWin)) - { - mvOsPrintf("mvEthTargetWinEnable:ERR. targetWinGet fail\n"); - return MV_ERROR; - } - /* Check for overlapping */ - if (MV_FALSE == ethWinOverlapDetect(port, winNum, &(addrDecWin.addrWin))) - { - /* No Overlap. Enable address decode target window */ - MV_REG_BIT_RESET(ETH_BASE_ADDR_ENABLE_REG(port), (1 << winNum)); - } - else - { /* Overlap detected */ - mvOsPrintf("mvEthTargetWinEnable:ERR. Overlap detected\n"); - return MV_ERROR; - } - } - else - { /* Disable address decode target window */ - MV_REG_BIT_SET(ETH_BASE_ADDR_ENABLE_REG(port), (1 << winNum)); - } - return MV_OK; -} - -/******************************************************************************* -* mvEthWinTargetGet - Get Window number associated with target -* -* DESCRIPTION: -* -* INPUT: -* -* OUTPUT: -* -* RETURN: -* window number -* -*******************************************************************************/ -MV_U32 mvEthWinTargetGet(int port, MV_TARGET target) -{ - MV_ETH_DEC_WIN decWin; - MV_U32 winNum; - - /* Check parameters */ - if (target >= MAX_TARGETS) - { - mvOsPrintf("mvAhbToMbusWinTargetGet: target %d is Illigal\n", target); - return 0xffffffff; - } - - for (winNum=0; winNum<ETH_MAX_DECODE_WIN; winNum++) - { - if (mvEthWinGet(port, winNum,&decWin) != MV_OK) - { - mvOsPrintf("mvAhbToMbusWinTargetGet: window returned error\n"); - return 0xffffffff; - } - - if (decWin.enable == MV_TRUE) - { - if (decWin.target == target) - { - return winNum; - } - } - } - return 0xFFFFFFFF; -} - -/******************************************************************************* -* mvEthProtWinSet - Set access protection of Ethernet to target window. -* -* DESCRIPTION: -* Each Ethernet port can be configured with access attributes for each -* of the Ethenret to target windows (address decode windows). This -* function sets access attributes to a given window for the given channel. -* -* INPUTS: -* ethPort - ETH channel number. See MV_ETH_CHANNEL enumerator. -* winNum - IETH to target address decode window number. -* access - IETH access rights. See MV_ACCESS_RIGHTS enumerator. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR in case window number is invalid or access right reserved. -* -*******************************************************************************/ -MV_STATUS mvEthProtWinSet(MV_U32 portNo, MV_U32 winNum, MV_ACCESS_RIGHTS access) -{ - MV_U32 protReg; - - /* Parameter checking */ - if(portNo >= mvCtrlEthMaxPortGet()) - { - mvOsPrintf("mvEthProtWinSet:ERR. Invalid port number %d\n", portNo); - return MV_ERROR; - } - - if (winNum >= ETH_MAX_DECODE_WIN) - { - mvOsPrintf("mvEthProtWinSet:ERR. Invalid winNum%d\n",winNum); - return MV_ERROR; - } - - if((access == ACC_RESERVED) || (access >= MAX_ACC_RIGHTS)) - { - mvOsPrintf("mvEthProtWinSet:ERR. Inv access param %d\n", access); - return MV_ERROR; - } - /* Read current protection register */ - protReg = MV_REG_READ(ETH_ACCESS_PROTECT_REG(portNo)); - - /* Clear protection window field */ - protReg &= ~(ETH_PROT_WIN_MASK(winNum)); - - /* Set new protection field value */ - protReg |= (access << (ETH_PROT_WIN_OFFS(winNum))); - - /* Write protection register back */ - MV_REG_WRITE(ETH_ACCESS_PROTECT_REG(portNo), protReg); - - return MV_OK; -} - -/******************************************************************************* -* ethWinOverlapDetect - Detect ETH address windows overlapping -* -* DESCRIPTION: -* An unpredicted behaviur is expected in case ETH address decode -* windows overlapps. -* This function detects ETH address decode windows overlapping of a -* specified window. The function does not check the window itself for -* overlapping. The function also skipps disabled address decode windows. -* -* INPUT: -* winNum - address decode window number. -* pAddrDecWin - An address decode window struct. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise, MV_ERROR if reading invalid data -* from registers. -* -*******************************************************************************/ -static MV_STATUS ethWinOverlapDetect(int port, MV_U32 winNum, MV_ADDR_WIN *pAddrWin) -{ - MV_U32 baseAddrEnableReg; - MV_U32 winNumIndex; - MV_ETH_DEC_WIN addrDecWin; - - /* Read base address enable register. Do not check disabled windows */ - baseAddrEnableReg = MV_REG_READ(ETH_BASE_ADDR_ENABLE_REG(port)); - - for (winNumIndex=0; winNumIndex<ETH_MAX_DECODE_WIN; winNumIndex++) - { - /* Do not check window itself */ - if (winNumIndex == winNum) - { - continue; - } - - /* Do not check disabled windows */ - if (baseAddrEnableReg & (1 << winNumIndex)) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvEthWinGet(port, winNumIndex, &addrDecWin)) - { - mvOsPrintf("ethWinOverlapDetect: ERR. TargetWinGet failed\n"); - return MV_ERROR; - } -/* - mvOsPrintf("ethWinOverlapDetect:\n - winNumIndex =%d baseHigh =0x%x baseLow=0x%x size=0x%x enable=0x%x\n", - winNumIndex, - addrDecWin.addrWin.baseHigh, - addrDecWin.addrWin.baseLow, - addrDecWin.addrWin.size, - addrDecWin.enable); -*/ - if (MV_TRUE == ctrlWinOverlapTest(pAddrWin, &(addrDecWin.addrWin))) - { - return MV_TRUE; - } - } - return MV_FALSE; -} - -/******************************************************************************* -* mvEthAddrDecShow - Print the Etherent address decode map. -* -* DESCRIPTION: -* This function print the Etherent address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -void mvEthPortAddrDecShow(int port) -{ - MV_ETH_DEC_WIN win; - int i; - - mvOsOutput( "\n" ); - mvOsOutput( "ETH %d:\n", port ); - mvOsOutput( "----\n" ); - - for( i = 0; i < ETH_MAX_DECODE_WIN; i++ ) - { - memset( &win, 0, sizeof(ETH_MAX_DECODE_WIN) ); - - mvOsOutput( "win%d - ", i ); - - if( mvEthWinGet(port, i, &win ) == MV_OK ) - { - if( win.enable ) - { - mvOsOutput( "%s base %08x, ", - mvCtrlTargetNameGet(win.target), win.addrWin.baseLow ); - mvOsOutput( "...." ); - mvSizePrint( win.addrWin.size ); - - mvOsOutput( "\n" ); - } - else - mvOsOutput( "disable\n" ); - } - } - return; -} - -void mvEthAddrDecShow(void) -{ - int port; - - for(port=0; port<mvCtrlEthMaxPortGet(); port++) - { - if (MV_FALSE == mvCtrlPwrClckGet(ETH_GIG_UNIT_ID, port)) continue; - - mvEthPortAddrDecShow(port); - } -} - - -void mvEthInit(void) -{ - MV_U32 port; - - /* Power down all existing ports */ - for(port=0; port<mvCtrlEthMaxPortGet(); port++) - { - if (MV_FALSE == mvCtrlPwrClckGet(ETH_GIG_UNIT_ID, port)) - continue; - - mvEthPortPowerUp(port); - mvEthWinInit(port); - } - mvEthHalInit(); -} diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysGbe.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysGbe.h deleted file mode 100644 index 615af512d3..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysGbe.h +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* -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 __INCmvSysGbeh -#define __INCmvSysGbeh - -#include "mvCommon.h" -#include "eth/mvEth.h" -#include "ctrlEnv/mvCtrlEnvSpec.h" -#include "ctrlEnv/sys/mvCpuIf.h" - -#define ETH_WIN_BASE_REG(port, win) (MV_ETH_REG_BASE(port) + 0x200 + ((win)<<3)) -#define ETH_WIN_SIZE_REG(port, win) (MV_ETH_REG_BASE(port) + 0x204 + ((win)<<3)) -#define ETH_WIN_REMAP_REG(port, win) (MV_ETH_REG_BASE(port) + 0x280 + ((win)<<2)) -#define ETH_BASE_ADDR_ENABLE_REG(port) (MV_ETH_REG_BASE(port) + 0x290) -#define ETH_ACCESS_PROTECT_REG(port) (MV_ETH_REG_BASE(port) + 0x294) - -/**** Address decode parameters ****/ - -/* Ethernet Base Address Register bits */ -#define ETH_MAX_DECODE_WIN 6 -#define ETH_MAX_HIGH_ADDR_REMAP_WIN 4 - -/* Ethernet Port Access Protect (EPAP) register */ - -/* The target associated with this window*/ -#define ETH_WIN_TARGET_OFFS 0 -#define ETH_WIN_TARGET_MASK (0xf << ETH_WIN_TARGET_OFFS) -/* The target attributes Associated with window */ -#define ETH_WIN_ATTR_OFFS 8 -#define ETH_WIN_ATTR_MASK (0xff << ETH_WIN_ATTR_OFFS) - -/* Ethernet Port Access Protect Register (EPAPR) */ -#define ETH_PROT_NO_ACCESS NO_ACCESS_ALLOWED -#define ETH_PROT_READ_ONLY READ_ONLY -#define ETH_PROT_FULL_ACCESS FULL_ACCESS -#define ETH_PROT_WIN_OFFS(winNum) (2 * (winNum)) -#define ETH_PROT_WIN_MASK(winNum) (0x3 << ETH_PROT_WIN_OFFS(winNum)) - -MV_STATUS mvEthWinInit (int port); -MV_STATUS mvEthWinEnable(int port, MV_U32 winNum, MV_BOOL enable); -MV_U32 mvEthWinTargetGet(int port, MV_TARGET target); -MV_STATUS mvEthProtWinSet(MV_U32 portNo, MV_U32 winNum, MV_ACCESS_RIGHTS - access); - -void mvEthPortAddrDecShow(int port); - -MV_VOID mvEthAddrDecShow(MV_VOID); - -void mvEthInit(void); - -#endif diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysPex.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysPex.c deleted file mode 100644 index b0cb466ab3..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysPex.c +++ /dev/null @@ -1,1697 +0,0 @@ -/******************************************************************************* -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 "ctrlEnv/sys/mvSysPex.h" - -/* this structure describes the mapping between a Pex Window and a CPU target*/ -typedef struct _pexWinToTarget -{ - MV_TARGET target; - MV_BOOL enable; - -}PEX_WIN_TO_TARGET; - -/* this array is a priority array that define How Pex windows should be -configured , We have only 6 Pex Windows that can be configured , but we -have maximum of 9 CPU target windows ! the following array is a priority -array where the lowest index has the highest priotiy and the highest -index has the lowest priority of being cnfigured */ - -MV_U32 pexDevBarPrioTable[] = -{ -#if defined(MV_INCLUDE_DEVICE_CS0) - DEVICE_CS0, -#endif -#if defined(MV_INCLUDE_DEVICE_CS1) - DEVICE_CS1, -#endif -#if defined(MV_INCLUDE_DEVICE_CS2) - DEVICE_CS2, -#endif -#if defined(MV_INCLUDE_DEVICE_CS3) - DEVICE_CS3, -#endif -/* -#if defined(MV_INCLUDE_DEVICE_CS4) - DEVICE_CS4, -#endif -*/ - TBL_TERM -}; - - -/* PEX Wins registers offsets are inconsecutive. This struct describes WIN */ -/* register offsets and its function where its is located. */ -/* Also, PEX address remap registers offsets are inconsecutive. This struct */ -/* describes address remap register offsets */ -typedef struct _pexWinRegInfo -{ - MV_U32 baseLowRegOffs; - MV_U32 baseHighRegOffs; - MV_U32 sizeRegOffs; - MV_U32 remapLowRegOffs; - MV_U32 remapHighRegOffs; - -}PEX_WIN_REG_INFO; - -static MV_STATUS pexWinOverlapDetect(MV_U32 pexIf, MV_U32 winNum, - MV_ADDR_WIN *pAddrWin); -static MV_STATUS pexWinRegInfoGet(MV_U32 pexIf, MV_U32 winNum, - PEX_WIN_REG_INFO *pWinRegInfo); - -static MV_STATUS pexBarIsValid(MV_U32 baseLow, MV_U32 size); - -static MV_BOOL pexIsWinWithinBar(MV_U32 pexIf,MV_ADDR_WIN *pAddrWin); -static MV_BOOL pexBarOverlapDetect(MV_U32 pexIf,MV_U32 barNum, - MV_ADDR_WIN *pAddrWin); -const MV_8* pexBarNameGet( MV_U32 bar ); - - -/******************************************************************************* -* mvPexInit - Initialize PEX interfaces -* -* DESCRIPTION: -* -* This function is responsible of intialization of the Pex Interface , It -* configure the Pex Bars and Windows in the following manner: -* -* Assumptions : -* Bar0 is always internal registers bar -* Bar1 is always the DRAM bar -* Bar2 is always the Device bar -* -* 1) Sets the Internal registers bar base by obtaining the base from -* the CPU Interface -* 2) Sets the DRAM bar base and size by getting the base and size from -* the CPU Interface when the size is the sum of all enabled DRAM -* chip selects and the base is the base of CS0 . -* 3) Sets the Device bar base and size by getting these values from the -* CPU Interface when the base is the base of the lowest base of the -* Device chip selects, and the -* -* -* INPUT: -* -* pexIf - PEX interface number. -* -* -* OUTPUT: -* None. -* -* RETURN: -* MV_OK if function success otherwise MV_ERROR or MV_BAD_PARAM -* -*******************************************************************************/ -MV_STATUS mvPexInit(MV_U32 pexIf, MV_PEX_TYPE pexType) -{ - MV_U32 bar; - MV_U32 winNum; - MV_PEX_BAR pexBar; - MV_PEX_DEC_WIN pexWin; - MV_CPU_DEC_WIN addrDecWin; - MV_TARGET target; - MV_U32 pexCurrWin=0; - MV_U32 status; - /* default and exapntion rom - are always configured */ - -#ifndef MV_DISABLE_PEX_DEVICE_BAR - MV_U32 winIndex; - MV_U32 maxBase=0, sizeOfMaxBase=0; - MV_U32 pexStartWindow; -#endif - - /* Parameter checking */ - if(pexIf >= mvCtrlPexMaxIfGet()) - { - mvOsPrintf("mvPexInit: ERR. Invalid PEX interface %d\n", pexIf); - return MV_BAD_PARAM; - } - - /* Enabled CPU access to PCI-Express */ - mvCpuIfEnablePex(pexIf, pexType); - - /* Start with bars */ - /* First disable all PEX bars*/ - for (bar = 0; bar < PEX_MAX_BARS; bar++) - { - if (PEX_INTER_REGS_BAR != bar) - { - if (MV_OK != mvPexBarEnable(pexIf, bar, MV_FALSE)) - { - mvOsPrintf("mvPexInit:mvPexBarEnable bar =%d failed \n",bar); - return MV_ERROR; - } - - } - - } - - /* and disable all PEX target windows */ - for (winNum = 0; winNum < PEX_MAX_TARGET_WIN - 2; winNum++) - { - if (MV_OK != mvPexTargetWinEnable(pexIf, winNum, MV_FALSE)) - { - mvOsPrintf("mvPexInit:mvPexTargetWinEnable winNum =%d failed \n", - winNum); - return MV_ERROR; - - } - } - - /* Now, go through all bars*/ - - - -/******************************************************************************/ -/* Internal registers bar */ -/******************************************************************************/ - bar = PEX_INTER_REGS_BAR; - - /* we only open the bar , no need to open windows for this bar */ - - /* first get the CS attribute from the CPU Interface */ - if (MV_OK !=mvCpuIfTargetWinGet(INTER_REGS,&addrDecWin)) - { - mvOsPrintf("mvPexInit: ERR. mvCpuIfTargetWinGet failed target =%d\n",INTER_REGS); - return MV_ERROR; - } - - pexBar.addrWin.baseHigh = addrDecWin.addrWin.baseHigh; - pexBar.addrWin.baseLow = addrDecWin.addrWin.baseLow; - pexBar.addrWin.size = addrDecWin.addrWin.size; - pexBar.enable = MV_TRUE; - - if (MV_OK != mvPexBarSet(pexIf, bar, &pexBar)) - { - mvOsPrintf("mvPexInit: ERR. mvPexBarSet %d failed\n", bar); - return MV_ERROR; - } - -/******************************************************************************/ -/* DRAM bar */ -/******************************************************************************/ - - bar = PEX_DRAM_BAR; - - pexBar.addrWin.size = 0; - - for (target = SDRAM_CS0;target < MV_DRAM_MAX_CS; target++ ) - { - - status = mvCpuIfTargetWinGet(target,&addrDecWin); - - if((MV_NO_SUCH == status)&&(target != SDRAM_CS0)) - { - continue; - } - - /* first get attributes from CPU If */ - if (MV_OK != status) - { - mvOsPrintf("mvPexInit: ERR. mvCpuIfTargetWinGet failed target =%d\n",target); - return MV_ERROR; - } - if (addrDecWin.enable == MV_TRUE) - { - /* the base is the base of DRAM CS0 always */ - if (SDRAM_CS0 == target ) - { - pexBar.addrWin.baseHigh = addrDecWin.addrWin.baseHigh; - pexBar.addrWin.baseLow = addrDecWin.addrWin.baseLow; - - } - - /* increment the bar size to be the sum of the size of all - DRAM chips selecs */ - pexBar.addrWin.size += addrDecWin.addrWin.size; - - /* set a Pex window for this target ! - DRAM CS always will have a Pex Window , and is not a - part of the priority table */ - pexWin.addrWin.baseHigh = addrDecWin.addrWin.baseHigh; - pexWin.addrWin.baseLow = addrDecWin.addrWin.baseLow; - pexWin.addrWin.size = addrDecWin.addrWin.size; - - /* we disable the windows at first because we are not - sure that it is witihin bar boundries */ - pexWin.enable =MV_FALSE; - pexWin.target = target; - pexWin.targetBar = bar; - - if (MV_OK != mvPexTargetWinSet(pexIf,pexCurrWin++,&pexWin)) - { - mvOsPrintf("mvPexInit: ERR. mvPexTargetWinSet failed\n"); - return MV_ERROR; - } - } - } - - /* check if the size of the bar is illeggal */ - if (-1 == ctrlSizeToReg(pexBar.addrWin.size, PXBCR_BAR_SIZE_ALIGNMENT)) - { - /* try to get a good size */ - pexBar.addrWin.size = ctrlSizeRegRoundUp(pexBar.addrWin.size, - PXBCR_BAR_SIZE_ALIGNMENT); - } - - /* check if the size and base are valid */ - if (MV_TRUE == pexBarOverlapDetect(pexIf,bar,&pexBar.addrWin)) - { - mvOsPrintf("mvPexInit:Warning :Bar %d size is illigal\n",bar); - mvOsPrintf("it will be disabled\n"); - mvOsPrintf("please check Pex and CPU windows configuration\n"); - } - else - { - pexBar.enable = MV_TRUE; - - /* configure the bar */ - if (MV_OK != mvPexBarSet(pexIf, bar, &pexBar)) - { - mvOsPrintf("mvPexInit: ERR. mvPexBarSet %d failed\n", bar); - return MV_ERROR; - } - - /* after the bar was configured then we enable the Pex windows*/ - for (winNum = 0;winNum < pexCurrWin ;winNum++) - { - if (MV_OK != mvPexTargetWinEnable(pexIf, winNum, MV_TRUE)) - { - mvOsPrintf("mvPexInit: Can't enable window =%d\n",winNum); - return MV_ERROR; - } - - } - } - -/******************************************************************************/ -/* DEVICE bar */ -/******************************************************************************/ - -/* Open the Device BAR for non linux only */ -#ifndef MV_DISABLE_PEX_DEVICE_BAR - - /* then device bar*/ - bar = PEX_DEVICE_BAR; - - /* save the starting window */ - pexStartWindow = pexCurrWin; - pexBar.addrWin.size = 0; - pexBar.addrWin.baseLow = 0xffffffff; - pexBar.addrWin.baseHigh = 0; - maxBase = 0; - - for (target = DEV_TO_TARGET(START_DEV_CS);target < DEV_TO_TARGET(MV_DEV_MAX_CS); target++ ) - { - status = mvCpuIfTargetWinGet(target,&addrDecWin); - - if (MV_NO_SUCH == status) - { - continue; - } - - if (MV_OK != status) - { - mvOsPrintf("mvPexInit: ERR. mvCpuIfTargetWinGet failed target =%d\n",target); - return MV_ERROR; - } - - if (addrDecWin.enable == MV_TRUE) - { - /* get the minimum base */ - if (addrDecWin.addrWin.baseLow < pexBar.addrWin.baseLow) - { - pexBar.addrWin.baseLow = addrDecWin.addrWin.baseLow; - } - - /* get the maximum base */ - if (addrDecWin.addrWin.baseLow > maxBase) - { - maxBase = addrDecWin.addrWin.baseLow; - sizeOfMaxBase = addrDecWin.addrWin.size; - } - - /* search in the priority table for this target */ - for (winIndex = 0; pexDevBarPrioTable[winIndex] != TBL_TERM; - winIndex++) - { - if (pexDevBarPrioTable[winIndex] != target) - { - continue; - } - else if (pexDevBarPrioTable[winIndex] == target) - { - /*found it */ - - /* if the index of this target in the prio table is valid - then we set the Pex window for this target, a valid index is - an index that is lower than the number of the windows that - was not configured yet */ - - /* we subtract 2 always because the default and expantion - rom windows are always configured */ - if ( pexCurrWin < PEX_MAX_TARGET_WIN - 2) - { - /* set a Pex window for this target ! */ - pexWin.addrWin.baseHigh = addrDecWin.addrWin.baseHigh; - pexWin.addrWin.baseLow = addrDecWin.addrWin.baseLow; - pexWin.addrWin.size = addrDecWin.addrWin.size; - - /* we disable the windows at first because we are not - sure that it is witihin bar boundries */ - pexWin.enable = MV_FALSE; - pexWin.target = target; - pexWin.targetBar = bar; - - if (MV_OK != mvPexTargetWinSet(pexIf,pexCurrWin++, - &pexWin)) - { - mvOsPrintf("mvPexInit: ERR. Window Set failed\n"); - return MV_ERROR; - } - } - } - } - } - } - - pexBar.addrWin.size = maxBase - pexBar.addrWin.baseLow + sizeOfMaxBase; - pexBar.enable = MV_TRUE; - - /* check if the size of the bar is illegal */ - if (-1 == ctrlSizeToReg(pexBar.addrWin.size, PXBCR_BAR_SIZE_ALIGNMENT)) - { - /* try to get a good size */ - pexBar.addrWin.size = ctrlSizeRegRoundUp(pexBar.addrWin.size, - PXBCR_BAR_SIZE_ALIGNMENT); - } - - /* check if the size and base are valid */ - if (MV_TRUE == pexBarOverlapDetect(pexIf,bar,&pexBar.addrWin)) - { - mvOsPrintf("mvPexInit:Warning :Bar %d size is illigal\n",bar); - mvOsPrintf("it will be disabled\n"); - mvOsPrintf("please check Pex and CPU windows configuration\n"); - } - else - { - if (MV_OK != mvPexBarSet(pexIf, bar, &pexBar)) - { - mvOsPrintf("mvPexInit: ERR. mvPexBarSet %d failed\n", bar); - return MV_ERROR; - } - - /* now enable the windows */ - for (winNum = pexStartWindow; winNum < pexCurrWin ; winNum++) - { - if (MV_OK != mvPexTargetWinEnable(pexIf, winNum, MV_TRUE)) - { - mvOsPrintf("mvPexInit:mvPexTargetWinEnable winNum =%d failed \n", - winNum); - return MV_ERROR; - } - } - } - -#endif - - return mvPexHalInit(pexIf, pexType); - -} - -/******************************************************************************* -* mvPexTargetWinSet - Set PEX to peripheral target address window BAR -* -* DESCRIPTION: -* -* INPUT: -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_OK if PEX BAR target window was set correctly, -* MV_BAD_PARAM on bad params -* MV_ERROR otherwise -* (e.g. address window overlapps with other active PEX target window). -* -*******************************************************************************/ -MV_STATUS mvPexTargetWinSet(MV_U32 pexIf, MV_U32 winNum, - MV_PEX_DEC_WIN *pAddrDecWin) -{ - - MV_DEC_REGS decRegs; - PEX_WIN_REG_INFO winRegInfo; - MV_TARGET_ATTRIB targetAttribs; - - /* Parameter checking */ - if(pexIf >= mvCtrlPexMaxIfGet()) - { - mvOsPrintf("mvPexTargetWinSet: ERR. Invalid PEX interface %d\n", pexIf); - return MV_BAD_PARAM; - } - - if (winNum >= PEX_MAX_TARGET_WIN) - { - mvOsPrintf("mvPexTargetWinSet: ERR. Invalid PEX winNum %d\n", winNum); - return MV_BAD_PARAM; - - } - - /* get the pex Window registers offsets */ - pexWinRegInfoGet(pexIf,winNum,&winRegInfo); - - - if (MV_TRUE == pAddrDecWin->enable) - { - - /* 2) Check if the requested window overlaps with current windows */ - if (MV_TRUE == pexWinOverlapDetect(pexIf,winNum, &pAddrDecWin->addrWin)) - { - mvOsPrintf("mvPexTargetWinSet: ERR. Target %d overlap\n", winNum); - return MV_BAD_PARAM; - } - - /* 2) Check if the requested window overlaps with current windows */ - if (MV_FALSE == pexIsWinWithinBar(pexIf,&pAddrDecWin->addrWin)) - { - mvOsPrintf("mvPexTargetWinSet: Win %d should be in bar boundries\n", - winNum); - return MV_BAD_PARAM; - } - - } - - - - /* read base register*/ - - if (winRegInfo.baseLowRegOffs) - { - decRegs.baseReg = MV_REG_READ(winRegInfo.baseLowRegOffs); - } - else - { - decRegs.baseReg = 0; - } - - if (winRegInfo.sizeRegOffs) - { - decRegs.sizeReg = MV_REG_READ(winRegInfo.sizeRegOffs); - } - else - { - decRegs.sizeReg =0; - } - - if (MV_OK != mvCtrlAddrDecToReg(&(pAddrDecWin->addrWin),&decRegs)) - { - mvOsPrintf("mvPexTargetWinSet:mvCtrlAddrDecToReg Failed\n"); - return MV_ERROR; - } - - /* enable\Disable */ - if (MV_TRUE == pAddrDecWin->enable) - { - decRegs.sizeReg |= PXWCR_WIN_EN; - } - else - { - decRegs.sizeReg &= ~PXWCR_WIN_EN; - } - - - /* clear bit location */ - decRegs.sizeReg &= ~PXWCR_WIN_BAR_MAP_MASK; - - /* set bar Mapping */ - if (pAddrDecWin->targetBar == 1) - { - decRegs.sizeReg |= PXWCR_WIN_BAR_MAP_BAR1; - } - else if (pAddrDecWin->targetBar == 2) - { - decRegs.sizeReg |= PXWCR_WIN_BAR_MAP_BAR2; - } - - mvCtrlAttribGet(pAddrDecWin->target,&targetAttribs); - - /* set attributes */ - decRegs.sizeReg &= ~PXWCR_ATTRIB_MASK; - decRegs.sizeReg |= targetAttribs.attrib << PXWCR_ATTRIB_OFFS; - /* set target ID */ - decRegs.sizeReg &= ~PXWCR_TARGET_MASK; - decRegs.sizeReg |= targetAttribs.targetId << PXWCR_TARGET_OFFS; - - - /* 3) Write to address decode Base Address Register */ - - if (winRegInfo.baseLowRegOffs) - { - MV_REG_WRITE(winRegInfo.baseLowRegOffs, decRegs.baseReg); - } - - /* write size reg */ - if (winRegInfo.sizeRegOffs) - { - if ((MV_PEX_WIN_DEFAULT == winNum)|| - (MV_PEX_WIN_EXP_ROM == winNum)) - { - /* clear size because there is no size field*/ - decRegs.sizeReg &= ~PXWCR_SIZE_MASK; - - /* clear enable because there is no enable field*/ - decRegs.sizeReg &= ~PXWCR_WIN_EN; - - } - - MV_REG_WRITE(winRegInfo.sizeRegOffs, decRegs.sizeReg); - } - - - return MV_OK; - -} - -/******************************************************************************* -* mvPexTargetWinGet - Get PEX to peripheral target address window -* -* DESCRIPTION: -* Get the PEX to peripheral target address window BAR. -* -* INPUT: -* pexIf - PEX interface number. -* bar - BAR to be accessed by slave. -* -* OUTPUT: -* pAddrBarWin - PEX target window information data structure. -* -* RETURN: -* MV_BAD_PARAM for bad parameters ,MV_ERROR on error ! otherwise MV_OK -* -*******************************************************************************/ -MV_STATUS mvPexTargetWinGet(MV_U32 pexIf, MV_U32 winNum, - MV_PEX_DEC_WIN *pAddrDecWin) -{ - MV_TARGET_ATTRIB targetAttrib; - MV_DEC_REGS decRegs; - - PEX_WIN_REG_INFO winRegInfo; - - /* Parameter checking */ - if(pexIf >= mvCtrlPexMaxIfGet()) - { - mvOsPrintf("mvPexTargetWinGet: ERR. Invalid PEX interface %d\n", pexIf); - return MV_BAD_PARAM; - } - - if (winNum >= PEX_MAX_TARGET_WIN) - { - mvOsPrintf("mvPexTargetWinGet: ERR. Invalid PEX winNum %d\n", winNum); - return MV_BAD_PARAM; - - } - - /* get the pex Window registers offsets */ - pexWinRegInfoGet(pexIf,winNum,&winRegInfo); - - /* read base register*/ - if (winRegInfo.baseLowRegOffs) - { - decRegs.baseReg = MV_REG_READ(winRegInfo.baseLowRegOffs); - } - else - { - decRegs.baseReg = 0; - } - - /* read size reg */ - if (winRegInfo.sizeRegOffs) - { - decRegs.sizeReg = MV_REG_READ(winRegInfo.sizeRegOffs); - } - else - { - decRegs.sizeReg =0; - } - - if (MV_OK != mvCtrlRegToAddrDec(&decRegs,&(pAddrDecWin->addrWin))) - { - mvOsPrintf("mvPexTargetWinGet: mvCtrlRegToAddrDec Failed \n"); - return MV_ERROR; - - } - - if (decRegs.sizeReg & PXWCR_WIN_EN) - { - pAddrDecWin->enable = MV_TRUE; - } - else - { - pAddrDecWin->enable = MV_FALSE; - - } - - - #if 0 - if (-1 == pAddrDecWin->addrWin.size) - { - return MV_ERROR; - } - #endif - - - /* get target bar */ - if ((decRegs.sizeReg & PXWCR_WIN_BAR_MAP_MASK) == PXWCR_WIN_BAR_MAP_BAR1 ) - { - pAddrDecWin->targetBar = 1; - } - else if ((decRegs.sizeReg & PXWCR_WIN_BAR_MAP_MASK) == - PXWCR_WIN_BAR_MAP_BAR2 ) - { - pAddrDecWin->targetBar = 2; - } - - /* attrib and targetId */ - pAddrDecWin->attrib = (decRegs.sizeReg & PXWCR_ATTRIB_MASK) >> - PXWCR_ATTRIB_OFFS; - pAddrDecWin->targetId = (decRegs.sizeReg & PXWCR_TARGET_MASK) >> - PXWCR_TARGET_OFFS; - - targetAttrib.attrib = pAddrDecWin->attrib; - targetAttrib.targetId = pAddrDecWin->targetId; - - pAddrDecWin->target = mvCtrlTargetGet(&targetAttrib); - - return MV_OK; - -} - - -/******************************************************************************* -* mvPexTargetWinEnable - Enable/disable a PEX BAR window -* -* DESCRIPTION: -* This function enable/disable a PEX BAR window. -* if parameter 'enable' == MV_TRUE the routine will enable the -* window, thus enabling PEX accesses for that BAR (before enabling the -* window it is tested for overlapping). Otherwise, the window will -* be disabled. -* -* INPUT: -* pexIf - PEX interface number. -* bar - BAR to be accessed by slave. -* enable - Enable/disable parameter. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM for bad parameters ,MV_ERROR on error ! otherwise MV_OK -* -*******************************************************************************/ -MV_STATUS mvPexTargetWinEnable(MV_U32 pexIf,MV_U32 winNum, MV_BOOL enable) -{ - PEX_WIN_REG_INFO winRegInfo; - MV_PEX_DEC_WIN addrDecWin; - - /* Parameter checking */ - if(pexIf >= mvCtrlPexMaxIfGet()) - { - mvOsPrintf("mvPexTargetWinEnable: ERR. Invalid PEX If %d\n", pexIf); - return MV_BAD_PARAM; - } - - if (winNum >= PEX_MAX_TARGET_WIN) - { - mvOsPrintf("mvPexTargetWinEnable ERR. Invalid PEX winNum %d\n", winNum); - return MV_BAD_PARAM; - - } - - - /* get the pex Window registers offsets */ - pexWinRegInfoGet(pexIf,winNum,&winRegInfo); - - - /* if the address windows is disabled , we only disable the appropriare - pex window and ignore other settings */ - - if (MV_FALSE == enable) - { - - /* this is not relevant to default and expantion rom - windows */ - if (winRegInfo.sizeRegOffs) - { - if ((MV_PEX_WIN_DEFAULT != winNum)&& - (MV_PEX_WIN_EXP_ROM != winNum)) - { - MV_REG_BIT_RESET(winRegInfo.sizeRegOffs, PXWCR_WIN_EN); - } - } - - } - else - { - if (MV_OK != mvPexTargetWinGet(pexIf,winNum, &addrDecWin)) - { - mvOsPrintf("mvPexTargetWinEnable: mvPexTargetWinGet Failed\n"); - return MV_ERROR; - } - - /* Check if the requested window overlaps with current windows */ - if (MV_TRUE == pexWinOverlapDetect(pexIf,winNum, &addrDecWin.addrWin)) - { - mvOsPrintf("mvPexTargetWinEnable: ERR. Target %d overlap\n", winNum); - return MV_BAD_PARAM; - } - - if (MV_FALSE == pexIsWinWithinBar(pexIf,&addrDecWin.addrWin)) - { - mvOsPrintf("mvPexTargetWinEnable: Win %d should be in bar boundries\n", - winNum); - return MV_BAD_PARAM; - } - - - /* this is not relevant to default and expantion rom - windows */ - if (winRegInfo.sizeRegOffs) - { - if ((MV_PEX_WIN_DEFAULT != winNum)&& - (MV_PEX_WIN_EXP_ROM != winNum)) - { - MV_REG_BIT_SET(winRegInfo.sizeRegOffs, PXWCR_WIN_EN); - } - } - - - } - - return MV_OK; - -} - - - -/******************************************************************************* -* mvPexTargetWinRemap - Set PEX to target address window remap. -* -* DESCRIPTION: -* The PEX interface supports remap of the BAR original address window. -* For each BAR it is possible to define a remap address. For example -* an address 0x12345678 that hits BAR 0x10 (SDRAM CS[0]) will be modified -* according to remap register but will also be targeted to the -* SDRAM CS[0]. -* -* INPUT: -* pexIf - PEX interface number. -* bar - Peripheral target enumerator accessed by slave. -* pAddrWin - Address window to be checked. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM for bad parameters ,MV_ERROR on error ! otherwise MV_OK -* -*******************************************************************************/ -MV_STATUS mvPexTargetWinRemap(MV_U32 pexIf, MV_U32 winNum, - MV_PEX_REMAP_WIN *pAddrWin) -{ - - PEX_WIN_REG_INFO winRegInfo; - - /* Parameter checking */ - if (pexIf >= mvCtrlPexMaxIfGet()) - { - mvOsPrintf("mvPexTargetWinRemap: ERR. Invalid PEX interface num %d\n", - pexIf); - return MV_BAD_PARAM; - } - if (MV_PEX_WIN_DEFAULT == winNum) - { - mvOsPrintf("mvPexTargetWinRemap: ERR. Invalid PEX win num %d\n", - winNum); - return MV_BAD_PARAM; - - } - - if (MV_IS_NOT_ALIGN(pAddrWin->addrWin.baseLow, PXWRR_REMAP_ALIGNMENT)) - { - mvOsPrintf("mvPexTargetWinRemap: Error remap PEX interface %d win %d."\ - "\nAddress 0x%08x is unaligned to size 0x%x.\n", - pexIf, - winNum, - pAddrWin->addrWin.baseLow, - pAddrWin->addrWin.size); - - return MV_ERROR; - } - - pexWinRegInfoGet(pexIf, winNum, &winRegInfo); - - /* Set remap low register value */ - MV_REG_WRITE(winRegInfo.remapLowRegOffs, pAddrWin->addrWin.baseLow); - - /* Skip base high settings if the BAR has only base low (32-bit) */ - if (0 != winRegInfo.remapHighRegOffs) - { - MV_REG_WRITE(winRegInfo.remapHighRegOffs, pAddrWin->addrWin.baseHigh); - } - - - if (pAddrWin->enable == MV_TRUE) - { - MV_REG_BIT_SET(winRegInfo.remapLowRegOffs,PXWRR_REMAP_EN); - } - else - { - MV_REG_BIT_RESET(winRegInfo.remapLowRegOffs,PXWRR_REMAP_EN); - } - - return MV_OK; -} - -/******************************************************************************* -* mvPexTargetWinRemapEnable - -* -* DESCRIPTION: -* -* INPUT: -* -* OUTPUT: -* -* RETURN: -* MV_BAD_PARAM for bad parameters ,MV_ERROR on error ! otherwise MV_OK -* -*******************************************************************************/ - -MV_STATUS mvPexTargetWinRemapEnable(MV_U32 pexIf, MV_U32 winNum, - MV_BOOL enable) -{ - PEX_WIN_REG_INFO winRegInfo; - - /* Parameter checking */ - if (pexIf >= mvCtrlPexMaxIfGet()) - { - mvOsPrintf("mvPexTargetWinRemap: ERR. Invalid PEX interface num %d\n", - pexIf); - return MV_BAD_PARAM; - } - if (MV_PEX_WIN_DEFAULT == winNum) - { - mvOsPrintf("mvPexTargetWinRemap: ERR. Invalid PEX win num %d\n", - winNum); - return MV_BAD_PARAM; - - } - - - pexWinRegInfoGet(pexIf, winNum, &winRegInfo); - - if (enable == MV_TRUE) - { - MV_REG_BIT_SET(winRegInfo.remapLowRegOffs,PXWRR_REMAP_EN); - } - else - { - MV_REG_BIT_RESET(winRegInfo.remapLowRegOffs,PXWRR_REMAP_EN); - } - - return MV_OK; - -} - -/******************************************************************************* -* mvPexBarSet - Set PEX bar address and size -* -* DESCRIPTION: -* -* INPUT: -* -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM for bad parameters ,MV_ERROR on error ! otherwise MV_OK -* -*******************************************************************************/ -MV_STATUS mvPexBarSet(MV_U32 pexIf, - MV_U32 barNum, - MV_PEX_BAR *pAddrWin) -{ - MV_U32 regBaseLow; - MV_U32 regSize,sizeToReg; - - - /* check parameters */ - if(pexIf >= mvCtrlPexMaxIfGet()) - { - mvOsPrintf("mvPexBarSet: ERR. Invalid PEX interface %d\n", pexIf); - return MV_BAD_PARAM; - } - - if(barNum >= PEX_MAX_BARS) - { - mvOsPrintf("mvPexBarSet: ERR. Invalid bar number %d\n", barNum); - return MV_BAD_PARAM; - } - - - if (pAddrWin->addrWin.size == 0) - { - mvOsPrintf("mvPexBarSet: Size zero is Illigal\n" ); - return MV_BAD_PARAM; - } - - - /* Check if the window complies with PEX spec */ - if (MV_TRUE != pexBarIsValid(pAddrWin->addrWin.baseLow, - pAddrWin->addrWin.size)) - { - mvOsPrintf("mvPexBarSet: ERR. Target %d window invalid\n", barNum); - return MV_BAD_PARAM; - } - - /* 2) Check if the requested bar overlaps with current bars */ - if (MV_TRUE == pexBarOverlapDetect(pexIf,barNum, &pAddrWin->addrWin)) - { - mvOsPrintf("mvPexBarSet: ERR. Target %d overlap\n", barNum); - return MV_BAD_PARAM; - } - - /* Get size register value according to window size */ - sizeToReg = ctrlSizeToReg(pAddrWin->addrWin.size, PXBCR_BAR_SIZE_ALIGNMENT); - - /* Read bar size */ - if (PEX_INTER_REGS_BAR != barNum) /* internal registers have no size */ - { - regSize = MV_REG_READ(PEX_BAR_CTRL_REG(pexIf,barNum)); - - /* Size parameter validity check. */ - if (-1 == sizeToReg) - { - mvOsPrintf("mvPexBarSet: ERR. Target BAR %d size invalid.\n",barNum); - return MV_BAD_PARAM; - } - - regSize &= ~PXBCR_BAR_SIZE_MASK; - regSize |= (sizeToReg << PXBCR_BAR_SIZE_OFFS) ; - - MV_REG_WRITE(PEX_BAR_CTRL_REG(pexIf,barNum),regSize); - - } - - /* set size */ - - - - /* Read base address low */ - regBaseLow = MV_REG_READ(PEX_CFG_DIRECT_ACCESS(pexIf, - PEX_MV_BAR_BASE(barNum))); - - /* clear current base */ - if (PEX_INTER_REGS_BAR == barNum) - { - regBaseLow &= ~PXBIR_BASE_MASK; - regBaseLow |= (pAddrWin->addrWin.baseLow & PXBIR_BASE_MASK); - } - else - { - regBaseLow &= ~PXBR_BASE_MASK; - regBaseLow |= (pAddrWin->addrWin.baseLow & PXBR_BASE_MASK); - } - - /* if we had a previous value that contain the bar type (MeM\IO), we want to - restore it */ - regBaseLow |= PEX_BAR_DEFAULT_ATTRIB; - - - - /* write base low */ - MV_REG_WRITE(PEX_CFG_DIRECT_ACCESS(pexIf,PEX_MV_BAR_BASE(barNum)), - regBaseLow); - - if (pAddrWin->addrWin.baseHigh != 0) - { - /* Read base address high */ - MV_REG_WRITE(PEX_CFG_DIRECT_ACCESS(pexIf,PEX_MV_BAR_BASE_HIGH(barNum)), - pAddrWin->addrWin.baseHigh); - - } - - /* lastly enable the Bar */ - if (pAddrWin->enable == MV_TRUE) - { - if (PEX_INTER_REGS_BAR != barNum) /* internal registers - are enabled always */ - { - MV_REG_BIT_SET(PEX_BAR_CTRL_REG(pexIf,barNum),PXBCR_BAR_EN); - } - } - else if (MV_FALSE == pAddrWin->enable) - { - if (PEX_INTER_REGS_BAR != barNum) /* internal registers - are enabled always */ - { - MV_REG_BIT_RESET(PEX_BAR_CTRL_REG(pexIf,barNum),PXBCR_BAR_EN); - } - - } - - - - return MV_OK; -} - - -/******************************************************************************* -* mvPexBarGet - Get PEX bar address and size -* -* DESCRIPTION: -* -* INPUT: -* -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM for bad parameters ,MV_ERROR on error ! otherwise MV_OK -* -*******************************************************************************/ - -MV_STATUS mvPexBarGet(MV_U32 pexIf, - MV_U32 barNum, - MV_PEX_BAR *pAddrWin) -{ - /* check parameters */ - if(pexIf >= mvCtrlPexMaxIfGet()) - { - mvOsPrintf("mvPexBarGet: ERR. Invalid PEX interface %d\n", pexIf); - return MV_BAD_PARAM; - } - - if(barNum >= PEX_MAX_BARS) - { - mvOsPrintf("mvPexBarGet: ERR. Invalid bar number %d\n", barNum); - return MV_BAD_PARAM; - } - - /* read base low */ - pAddrWin->addrWin.baseLow = - MV_REG_READ(PEX_CFG_DIRECT_ACCESS(pexIf,PEX_MV_BAR_BASE(barNum))); - - - if (PEX_INTER_REGS_BAR == barNum) - { - pAddrWin->addrWin.baseLow &= PXBIR_BASE_MASK; - } - else - { - pAddrWin->addrWin.baseLow &= PXBR_BASE_MASK; - } - - - /* read base high */ - pAddrWin->addrWin.baseHigh = - MV_REG_READ(PEX_CFG_DIRECT_ACCESS(pexIf,PEX_MV_BAR_BASE_HIGH(barNum))); - - - /* Read bar size */ - if (PEX_INTER_REGS_BAR != barNum) /* internal registers have no size */ - { - pAddrWin->addrWin.size = MV_REG_READ(PEX_BAR_CTRL_REG(pexIf,barNum)); - - /* check if enable or not */ - if (pAddrWin->addrWin.size & PXBCR_BAR_EN) - { - pAddrWin->enable = MV_TRUE; - } - else - { - pAddrWin->enable = MV_FALSE; - } - - /* now get the size */ - pAddrWin->addrWin.size &= PXBCR_BAR_SIZE_MASK; - pAddrWin->addrWin.size >>= PXBCR_BAR_SIZE_OFFS; - - pAddrWin->addrWin.size = ctrlRegToSize(pAddrWin->addrWin.size, - PXBCR_BAR_SIZE_ALIGNMENT); - - } - else /* PEX_INTER_REGS_BAR */ - { - pAddrWin->addrWin.size = INTER_REGS_SIZE; - pAddrWin->enable = MV_TRUE; - } - - - return MV_OK; -} - -/******************************************************************************* -* mvPexBarEnable - -* -* DESCRIPTION: -* -* INPUT: -* -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM for bad parameters ,MV_ERROR on error ! otherwise MV_OK -* -*******************************************************************************/ - - -MV_STATUS mvPexBarEnable(MV_U32 pexIf, MV_U32 barNum, MV_BOOL enable) -{ - - MV_PEX_BAR pexBar; - - /* check parameters */ - if(pexIf >= mvCtrlPexMaxIfGet()) - { - mvOsPrintf("mvPexBarEnable: ERR. Invalid PEX interface %d\n", pexIf); - return MV_BAD_PARAM; - } - - - if(barNum >= PEX_MAX_BARS) - { - mvOsPrintf("mvPexBarEnable: ERR. Invalid bar number %d\n", barNum); - return MV_BAD_PARAM; - } - - if (PEX_INTER_REGS_BAR == barNum) - { - if (MV_TRUE == enable) - { - return MV_OK; - } - else - { - return MV_ERROR; - } - } - - - if (MV_FALSE == enable) - { - /* disable bar and quit */ - MV_REG_BIT_RESET(PEX_BAR_CTRL_REG(pexIf,barNum),PXBCR_BAR_EN); - return MV_OK; - } - - /* else */ - - if (mvPexBarGet(pexIf,barNum,&pexBar) != MV_OK) - { - mvOsPrintf("mvPexBarEnable: mvPexBarGet Failed\n"); - return MV_ERROR; - - } - - if (MV_TRUE == pexBar.enable) - { - /* it is already enabled !!! */ - return MV_OK; - } - - /* else enable the bar*/ - - pexBar.enable = MV_TRUE; - - if (mvPexBarSet(pexIf,barNum,&pexBar) != MV_OK) - { - mvOsPrintf("mvPexBarEnable: mvPexBarSet Failed\n"); - return MV_ERROR; - - } - - return MV_OK; -} - - -/******************************************************************************* -* pexWinOverlapDetect - Detect address windows overlapping -* -* DESCRIPTION: -* This function detects address window overlapping of a given address -* window in PEX BARs. -* -* INPUT: -* pAddrWin - Address window to be checked. -* bar - BAR to be accessed by slave. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise. -* -*******************************************************************************/ -static MV_BOOL pexWinOverlapDetect(MV_U32 pexIf, - MV_U32 winNum, - MV_ADDR_WIN *pAddrWin) -{ - MV_U32 win; - MV_PEX_DEC_WIN addrDecWin; - - - for(win = 0; win < PEX_MAX_TARGET_WIN -2 ; win++) - { - /* don't check our target or illegal targets */ - if (winNum == win) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvPexTargetWinGet(pexIf, win, &addrDecWin)) - { - mvOsPrintf("pexWinOverlapDetect: ERR. TargetWinGet failed win=%x\n", - win); - return MV_ERROR; - } - - /* Do not check disabled windows */ - if (MV_FALSE == addrDecWin.enable) - { - continue; - } - - - if(MV_TRUE == ctrlWinOverlapTest(pAddrWin, &addrDecWin.addrWin)) - { - mvOsPrintf("pexWinOverlapDetect: winNum %d overlap current %d\n", - winNum, win); - return MV_TRUE; - } - } - - return MV_FALSE; -} - -/******************************************************************************* -* pexIsWinWithinBar - Detect if address is within PEX bar boundries -* -* DESCRIPTION: -* -* INPUT: -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise. -* -*******************************************************************************/ -static MV_BOOL pexIsWinWithinBar(MV_U32 pexIf, - MV_ADDR_WIN *pAddrWin) -{ - MV_U32 bar; - MV_PEX_BAR addrDecWin; - - for(bar = 0; bar < PEX_MAX_BARS; bar++) - { - - /* Get window parameters */ - if (MV_OK != mvPexBarGet(pexIf, bar, &addrDecWin)) - { - mvOsPrintf("pexIsWinWithinBar: ERR. mvPexBarGet failed\n"); - return MV_ERROR; - } - - /* Do not check disabled bars */ - if (MV_FALSE == addrDecWin.enable) - { - continue; - } - - - if(MV_TRUE == ctrlWinWithinWinTest(pAddrWin, &addrDecWin.addrWin)) - { - return MV_TRUE; - } - } - - return MV_FALSE; - -} - -/******************************************************************************* -* pexBarOverlapDetect - Detect address windows overlapping -* -* DESCRIPTION: -* This function detects address window overlapping of a given address -* window in PEX BARs. -* -* INPUT: -* pAddrWin - Address window to be checked. -* bar - BAR to be accessed by slave. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise. -* -*******************************************************************************/ -static MV_BOOL pexBarOverlapDetect(MV_U32 pexIf, - MV_U32 barNum, - MV_ADDR_WIN *pAddrWin) -{ - MV_U32 bar; - MV_PEX_BAR barDecWin; - - - for(bar = 0; bar < PEX_MAX_BARS; bar++) - { - /* don't check our target or illegal targets */ - if (barNum == bar) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvPexBarGet(pexIf, bar, &barDecWin)) - { - mvOsPrintf("pexBarOverlapDetect: ERR. TargetWinGet failed\n"); - return MV_ERROR; - } - - /* don'nt check disabled bars */ - if (barDecWin.enable == MV_FALSE) - { - continue; - } - - - if(MV_TRUE == ctrlWinOverlapTest(pAddrWin, &barDecWin.addrWin)) - { - mvOsPrintf("pexBarOverlapDetect: winNum %d overlap current %d\n", - barNum, bar); - return MV_TRUE; - } - } - - return MV_FALSE; -} - -/******************************************************************************* -* pexBarIsValid - Check if the given address window is valid -* -* DESCRIPTION: -* PEX spec restrict BAR base to be aligned to BAR size. -* This function checks if the given address window is valid. -* -* INPUT: -* baseLow - 32bit low base address. -* size - Window size. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the address window is valid, MV_FALSE otherwise. -* -*******************************************************************************/ -static MV_STATUS pexBarIsValid(MV_U32 baseLow, MV_U32 size) -{ - - /* PCI spec restrict BAR base to be aligned to BAR size */ - if(MV_IS_NOT_ALIGN(baseLow, size)) - { - return MV_ERROR; - } - else - { - return MV_TRUE; - } - - return MV_TRUE; -} - -/******************************************************************************* -* pexBarRegInfoGet - Get BAR register information -* -* DESCRIPTION: -* PEX BARs registers offsets are inconsecutive. -* This function gets a PEX BAR register information like register offsets -* and function location of the BAR. -* -* INPUT: -* pexIf - PEX interface number. -* bar - The PEX BAR in question. -* -* OUTPUT: -* pBarRegInfo - BAR register info struct. -* -* RETURN: -* MV_BAD_PARAM when bad parameters ,MV_ERROR on error ,othewise MV_OK -* -*******************************************************************************/ -static MV_STATUS pexWinRegInfoGet(MV_U32 pexIf, - MV_U32 winNum, - PEX_WIN_REG_INFO *pWinRegInfo) -{ - - if ((winNum >= 0)&&(winNum <=3)) - { - pWinRegInfo->baseLowRegOffs = PEX_WIN0_3_BASE_REG(pexIf,winNum); - pWinRegInfo->baseHighRegOffs = 0; - pWinRegInfo->sizeRegOffs = PEX_WIN0_3_CTRL_REG(pexIf,winNum); - pWinRegInfo->remapLowRegOffs = PEX_WIN0_3_REMAP_REG(pexIf,winNum); - pWinRegInfo->remapHighRegOffs = 0; - } - else if ((winNum >= 4)&&(winNum <=5)) - { - pWinRegInfo->baseLowRegOffs = PEX_WIN4_5_BASE_REG(pexIf,winNum); - pWinRegInfo->baseHighRegOffs = 0; - pWinRegInfo->sizeRegOffs = PEX_WIN4_5_CTRL_REG(pexIf,winNum); - pWinRegInfo->remapLowRegOffs = PEX_WIN4_5_REMAP_REG(pexIf,winNum); - pWinRegInfo->remapHighRegOffs = PEX_WIN4_5_REMAP_HIGH_REG(pexIf,winNum); - - } - else if (MV_PEX_WIN_DEFAULT == winNum) - { - pWinRegInfo->baseLowRegOffs = 0; - pWinRegInfo->baseHighRegOffs = 0; - pWinRegInfo->sizeRegOffs = PEX_WIN_DEFAULT_CTRL_REG(pexIf); - pWinRegInfo->remapLowRegOffs = 0; - pWinRegInfo->remapHighRegOffs = 0; - } - else if (MV_PEX_WIN_EXP_ROM == winNum) - { - pWinRegInfo->baseLowRegOffs = 0; - pWinRegInfo->baseHighRegOffs = 0; - pWinRegInfo->sizeRegOffs = PEX_WIN_EXP_ROM_CTRL_REG(pexIf); - pWinRegInfo->remapLowRegOffs = PEX_WIN_EXP_ROM_REMAP_REG(pexIf); - pWinRegInfo->remapHighRegOffs = 0; - - } - - return MV_OK; -} - -/******************************************************************************* -* pexBarNameGet - Get the string name of PEX BAR. -* -* DESCRIPTION: -* This function get the string name of PEX BAR. -* -* INPUT: -* bar - PEX bar number. -* -* OUTPUT: -* None. -* -* RETURN: -* pointer to the string name of PEX BAR. -* -*******************************************************************************/ -const MV_8* pexBarNameGet( MV_U32 bar ) -{ - switch( bar ) - { - case PEX_INTER_REGS_BAR: - return "Internal Regs Bar0...."; - case PEX_DRAM_BAR: - return "DRAM Bar1............."; - case PEX_DEVICE_BAR: - return "Devices Bar2.........."; - default: - return "Bar unknown"; - } -} -/******************************************************************************* -* mvPexAddrDecShow - Print the PEX address decode map (BARs and windows). -* -* DESCRIPTION: -* This function print the PEX address decode map (BARs and windows). -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_VOID mvPexAddrDecShow(MV_VOID) -{ - MV_PEX_BAR pexBar; - MV_PEX_DEC_WIN win; - MV_U32 pexIf; - MV_U32 bar,winNum; - - for( pexIf = 0; pexIf < mvCtrlPexMaxIfGet(); pexIf++ ) - { - if (MV_FALSE == mvCtrlPwrClckGet(PEX_UNIT_ID, pexIf)) continue; - mvOsOutput( "\n" ); - mvOsOutput( "PEX%d:\n", pexIf ); - mvOsOutput( "-----\n" ); - - mvOsOutput( "\nPex Bars \n\n"); - - for( bar = 0; bar < PEX_MAX_BARS; bar++ ) - { - memset( &pexBar, 0, sizeof(MV_PEX_BAR) ); - - mvOsOutput( "%s ", pexBarNameGet(bar) ); - - if( mvPexBarGet( pexIf, bar, &pexBar ) == MV_OK ) - { - if( pexBar.enable ) - { - mvOsOutput( "base %08x, ", pexBar.addrWin.baseLow ); - mvSizePrint( pexBar.addrWin.size ); - mvOsOutput( "\n" ); - } - else - mvOsOutput( "disable\n" ); - } - } - mvOsOutput( "\nPex Decode Windows\n\n"); - - for( winNum = 0; winNum < PEX_MAX_TARGET_WIN - 2; winNum++) - { - memset( &win, 0,sizeof(MV_PEX_DEC_WIN) ); - - mvOsOutput( "win%d - ", winNum ); - - if ( mvPexTargetWinGet(pexIf,winNum,&win) == MV_OK) - { - if (win.enable) - { - mvOsOutput( "%s base %08x, ", - mvCtrlTargetNameGet(win.target), win.addrWin.baseLow ); - mvOsOutput( "...." ); - mvSizePrint( win.addrWin.size ); - - mvOsOutput( "\n" ); - } - else - mvOsOutput( "disable\n" ); - - - } - } - - memset( &win, 0,sizeof(MV_PEX_DEC_WIN) ); - - mvOsOutput( "default win - " ); - - if ( mvPexTargetWinGet(pexIf, MV_PEX_WIN_DEFAULT, &win) == MV_OK) - { - mvOsOutput( "%s ", - mvCtrlTargetNameGet(win.target) ); - mvOsOutput( "\n" ); - } - memset( &win, 0,sizeof(MV_PEX_DEC_WIN) ); - - mvOsOutput( "Expansion ROM - " ); - - if ( mvPexTargetWinGet(pexIf, MV_PEX_WIN_EXP_ROM, &win) == MV_OK) - { - mvOsOutput( "%s ", - mvCtrlTargetNameGet(win.target) ); - mvOsOutput( "\n" ); - } - - } -} - - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysPex.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysPex.h deleted file mode 100644 index 3505613b7f..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysPex.h +++ /dev/null @@ -1,348 +0,0 @@ -/******************************************************************************* -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 __INCSysPEXH -#define __INCSysPEXH - -#include "mvCommon.h" -#include "ctrlEnv/sys/mvCpuIf.h" -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "ctrlEnv/mvCtrlEnvAddrDec.h" - -/* 4KB granularity */ -#define MINIMUM_WINDOW_SIZE 0x1000 -#define MINIMUM_BAR_SIZE 0x1000 -#define MINIMUM_BAR_SIZE_MASK 0xFFFFF000 -#define BAR_SIZE_OFFS 12 -#define BAR_SIZE_MASK (0xFFFFF << BAR_SIZE_OFFS) - - - -#define MV_PEX_WIN_DEFAULT 6 -#define MV_PEX_WIN_EXP_ROM 7 -#define PEX_MAX_TARGET_WIN 8 - - -#define PEX_MAX_BARS 3 -#define PEX_INTER_REGS_BAR 0 -#define PEX_DRAM_BAR 1 -#define PEX_DEVICE_BAR 2 - -/*************************************/ -/* PCI Express BAR Control Registers */ -/*************************************/ -#define PEX_BAR_CTRL_REG(pexIf,bar) (0x41804 + (bar-1)*4- (pexIf)*0x10000) -#define PEX_EXP_ROM_BAR_CTRL_REG(pexIf) (0x4180C - (pexIf)*0x10000) - - -/* PCI Express BAR Control Register */ -/* PEX_BAR_CTRL_REG (PXBCR) */ - -#define PXBCR_BAR_EN BIT0 -#define PXBCR_BAR_SIZE_OFFS 16 -#define PXBCR_BAR_SIZE_MASK (0xffff << PXBCR_BAR_SIZE_OFFS) -#define PXBCR_BAR_SIZE_ALIGNMENT 0x10000 - - - -/* PCI Express Expansion ROM BAR Control Register */ -/* PEX_EXP_ROM_BAR_CTRL_REG (PXERBCR) */ - -#define PXERBCR_EXPROM_EN BIT0 -#define PXERBCR_EXPROMSZ_OFFS 19 -#define PXERBCR_EXPROMSZ_MASK (0xf << PXERBCR_EXPROMSZ_OFFS) -#define PXERBCR_EXPROMSZ_512KB (0x0 << PXERBCR_EXPROMSZ_OFFS) -#define PXERBCR_EXPROMSZ_1024KB (0x1 << PXERBCR_EXPROMSZ_OFFS) -#define PXERBCR_EXPROMSZ_2048KB (0x3 << PXERBCR_EXPROMSZ_OFFS) -#define PXERBCR_EXPROMSZ_4096KB (0x7 << PXERBCR_EXPROMSZ_OFFS) - -/************************************************/ -/* PCI Express Address Window Control Registers */ -/************************************************/ -#define PEX_WIN0_3_CTRL_REG(pexIf,winNum) \ - (0x41820 + (winNum) * 0x10 - (pexIf) * 0x10000) -#define PEX_WIN0_3_BASE_REG(pexIf,winNum) \ - (0x41824 + (winNum) * 0x10 - (pexIf) * 0x10000) -#define PEX_WIN0_3_REMAP_REG(pexIf,winNum) \ - (0x4182C + (winNum) * 0x10 - (pexIf) * 0x10000) -#define PEX_WIN4_5_CTRL_REG(pexIf,winNum) \ - (0x41860 + (winNum - 4) * 0x20 - (pexIf) * 0x10000) -#define PEX_WIN4_5_BASE_REG(pexIf,winNum) \ - (0x41864 + (winNum - 4) * 0x20 - (pexIf) * 0x10000) -#define PEX_WIN4_5_REMAP_REG(pexIf,winNum) \ - (0x4186C + (winNum - 4) * 0x20 - (pexIf) * 0x10000) -#define PEX_WIN4_5_REMAP_HIGH_REG(pexIf,winNum) \ - (0x41870 + (winNum - 4) * 0x20 - (pexIf) * 0x10000) - -#define PEX_WIN_DEFAULT_CTRL_REG(pexIf) (0x418B0 - (pexIf) * 0x10000) -#define PEX_WIN_EXP_ROM_CTRL_REG(pexIf) (0x418C0 - (pexIf) * 0x10000) -#define PEX_WIN_EXP_ROM_REMAP_REG(pexIf) (0x418C4 - (pexIf) * 0x10000) - -/* PCI Express Window Control Register */ -/* PEX_WIN_CTRL_REG (PXWCR) */ - -#define PXWCR_WIN_EN BIT0 /* Window Enable.*/ - -#define PXWCR_WIN_BAR_MAP_OFFS 1 /* Mapping to BAR.*/ -#define PXWCR_WIN_BAR_MAP_MASK BIT1 -#define PXWCR_WIN_BAR_MAP_BAR1 (0 << PXWCR_WIN_BAR_MAP_OFFS) -#define PXWCR_WIN_BAR_MAP_BAR2 (1 << PXWCR_WIN_BAR_MAP_OFFS) - -#define PXWCR_TARGET_OFFS 4 /*Unit ID */ -#define PXWCR_TARGET_MASK (0xf << PXWCR_TARGET_OFFS) - -#define PXWCR_ATTRIB_OFFS 8 /* target attributes */ -#define PXWCR_ATTRIB_MASK (0xff << PXWCR_ATTRIB_OFFS) - -#define PXWCR_SIZE_OFFS 16 /* size */ -#define PXWCR_SIZE_MASK (0xffff << PXWCR_SIZE_OFFS) -#define PXWCR_SIZE_ALIGNMENT 0x10000 - -/* PCI Express Window Base Register */ -/* PEX_WIN_BASE_REG (PXWBR)*/ - -#define PXWBR_BASE_OFFS 16 /* address[31:16] */ -#define PXWBR_BASE_MASK (0xffff << PXWBR_BASE_OFFS) -#define PXWBR_BASE_ALIGNMENT 0x10000 - -/* PCI Express Window Remap Register */ -/* PEX_WIN_REMAP_REG (PXWRR)*/ - -#define PXWRR_REMAP_EN BIT0 -#define PXWRR_REMAP_OFFS 16 -#define PXWRR_REMAP_MASK (0xffff << PXWRR_REMAP_OFFS) -#define PXWRR_REMAP_ALIGNMENT 0x10000 - -/* PCI Express Window Remap (High) Register */ -/* PEX_WIN_REMAP_HIGH_REG (PXWRHR)*/ - -#define PXWRHR_REMAP_HIGH_OFFS 0 -#define PXWRHR_REMAP_HIGH_MASK (0xffffffff << PXWRHR_REMAP_HIGH_OFFS) - -/* PCI Express Default Window Control Register */ -/* PEX_WIN_DEFAULT_CTRL_REG (PXWDCR) */ - -#define PXWDCR_TARGET_OFFS 4 /*Unit ID */ -#define PXWDCR_TARGET_MASK (0xf << PXWDCR_TARGET_OFFS) -#define PXWDCR_ATTRIB_OFFS 8 /* target attributes */ -#define PXWDCR_ATTRIB_MASK (0xff << PXWDCR_ATTRIB_OFFS) - -/* PCI Express Expansion ROM Window Control Register */ -/* PEX_WIN_EXP_ROM_CTRL_REG (PXWERCR)*/ - -#define PXWERCR_TARGET_OFFS 4 /*Unit ID */ -#define PXWERCR_TARGET_MASK (0xf << PXWERCR_TARGET_OFFS) -#define PXWERCR_ATTRIB_OFFS 8 /* target attributes */ -#define PXWERCR_ATTRIB_MASK (0xff << PXWERCR_ATTRIB_OFFS) - -/* PCI Express Expansion ROM Window Remap Register */ -/* PEX_WIN_EXP_ROM_REMAP_REG (PXWERRR)*/ - -#define PXWERRR_REMAP_EN BIT0 -#define PXWERRR_REMAP_OFFS 16 -#define PXWERRR_REMAP_MASK (0xffff << PXWERRR_REMAP_OFFS) -#define PXWERRR_REMAP_ALIGNMENT 0x10000 - - - -/*PEX_MEMORY_BAR_BASE_ADDR(barNum) (PXMBBA)*/ -/* PCI Express BAR0 Internal Register*/ -/*PEX BAR0_INTER_REG (PXBIR)*/ - -#define PXBIR_IOSPACE BIT0 /* Memory Space Indicator */ - -#define PXBIR_TYPE_OFFS 1 /* BAR Type/Init Val. */ -#define PXBIR_TYPE_MASK (0x3 << PXBIR_TYPE_OFFS) -#define PXBIR_TYPE_32BIT_ADDR (0x0 << PXBIR_TYPE_OFFS) -#define PXBIR_TYPE_64BIT_ADDR (0x2 << PXBIR_TYPE_OFFS) - -#define PXBIR_PREFETCH_EN BIT3 /* Prefetch Enable */ - -#define PXBIR_BASE_OFFS 20 /* Base address. Address bits [31:20] */ -#define PXBIR_BASE_MASK (0xfff << PXBIR_BASE_OFFS) -#define PXBIR_BASE_ALIGNMET (1 << PXBIR_BASE_OFFS) - - -/* PCI Express BAR0 Internal (High) Register*/ -/*PEX BAR0_INTER_REG_HIGH (PXBIRH)*/ - -#define PXBIRH_BASE_OFFS 0 /* Base address. Bits [63:32] */ -#define PXBIRH_BASE_MASK (0xffffffff << PBBHR_BASE_OFFS) - - -#define PEX_BAR_DEFAULT_ATTRIB 0xc /* Memory - Prefetch - 64 bit address */ -#define PEX_BAR0_DEFAULT_ATTRIB PEX_BAR_DEFAULT_ATTRIB -#define PEX_BAR1_DEFAULT_ATTRIB PEX_BAR_DEFAULT_ATTRIB -#define PEX_BAR2_DEFAULT_ATTRIB PEX_BAR_DEFAULT_ATTRIB - - -/* PCI Express BAR1 Register */ -/* PCI Express BAR2 Register*/ -/*PEX BAR1_REG (PXBR)*/ -/*PEX BAR2_REG (PXBR)*/ - -#define PXBR_IOSPACE BIT0 /* Memory Space Indicator */ - -#define PXBR_TYPE_OFFS 1 /* BAR Type/Init Val. */ -#define PXBR_TYPE_MASK (0x3 << PXBR_TYPE_OFFS) -#define PXBR_TYPE_32BIT_ADDR (0x0 << PXBR_TYPE_OFFS) -#define PXBR_TYPE_64BIT_ADDR (0x2 << PXBR_TYPE_OFFS) - -#define PXBR_PREFETCH_EN BIT3 /* Prefetch Enable */ - -#define PXBR_BASE_OFFS 16 /* Base address. Address bits [31:16] */ -#define PXBR_BASE_MASK (0xffff << PXBR_BASE_OFFS) -#define PXBR_BASE_ALIGNMET (1 << PXBR_BASE_OFFS) - - -/* PCI Express BAR1 (High) Register*/ -/* PCI Express BAR2 (High) Register*/ -/*PEX BAR1_REG_HIGH (PXBRH)*/ -/*PEX BAR2_REG_HIGH (PXBRH)*/ - -#define PXBRH_BASE_OFFS 0 /* Base address. Address bits [63:32] */ -#define PXBRH_BASE_MASK (0xffffffff << PXBRH_BASE_OFFS) - -/* PCI Express Expansion ROM BAR Register*/ -/*PEX_EXPANSION_ROM_BASE_ADDR_REG (PXERBAR)*/ - -#define PXERBAR_EXPROMEN BIT0 /* Expansion ROM Enable */ - -#define PXERBAR_BASE_512K_OFFS 19 /* Expansion ROM Base Address */ -#define PXERBAR_BASE_512K_MASK (0x1fff << PXERBAR_BASE_512K_OFFS) - -#define PXERBAR_BASE_1MB_OFFS 20 /* Expansion ROM Base Address */ -#define PXERBAR_BASE_1MB_MASK (0xfff << PXERBAR_BASE_1MB_OFFS) - -#define PXERBAR_BASE_2MB_OFFS 21 /* Expansion ROM Base Address */ -#define PXERBAR_BASE_2MB_MASK (0x7ff << PXERBAR_BASE_2MB_OFFS) - -#define PXERBAR_BASE_4MB_OFFS 22 /* Expansion ROM Base Address */ -#define PXERBAR_BASE_4MB_MASK (0x3ff << PXERBAR_BASE_4MB_OFFS) - -/* PEX Bar attributes */ -typedef struct _mvPexBar -{ - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -}MV_PEX_BAR; - -/* PEX Remap Window attributes */ -typedef struct _mvPexRemapWin -{ - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -}MV_PEX_REMAP_WIN; - -/* PEX Remap Window attributes */ -typedef struct _mvPexDecWin -{ - MV_TARGET target; - MV_ADDR_WIN addrWin; /* An address window*/ - MV_U32 targetBar; - MV_U8 attrib; /* chip select attributes */ - MV_TARGET_ID targetId; /* Target Id of this MV_TARGET */ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -}MV_PEX_DEC_WIN; - -/* Global Functions prototypes */ -/* mvPexHalInit - Initialize PEX interfaces*/ -MV_STATUS mvPexInit(MV_U32 pexIf, MV_PEX_TYPE pexType); - - -/* mvPexTargetWinSet - Set PEX to peripheral target address window BAR*/ -MV_STATUS mvPexTargetWinSet(MV_U32 pexIf, MV_U32 winNum, - MV_PEX_DEC_WIN *pAddrDecWin); - -/* mvPexTargetWinGet - Get PEX to peripheral target address window*/ -MV_STATUS mvPexTargetWinGet(MV_U32 pexIf, MV_U32 winNum, - MV_PEX_DEC_WIN *pAddrDecWin); - -/* mvPexTargetWinEnable - Enable/disable a PEX BAR window*/ -MV_STATUS mvPexTargetWinEnable(MV_U32 pexIf,MV_U32 winNum, MV_BOOL enable); - -/* mvPexTargetWinRemap - Set PEX to target address window remap.*/ -MV_STATUS mvPexTargetWinRemap(MV_U32 pexIf, MV_U32 winNum, - MV_PEX_REMAP_WIN *pAddrWin); - -/* mvPexTargetWinRemapEnable -enable\disable a PEX Window remap.*/ -MV_STATUS mvPexTargetWinRemapEnable(MV_U32 pexIf, MV_U32 winNum, - MV_BOOL enable); - -/* mvPexBarSet - Set PEX bar address and size */ -MV_STATUS mvPexBarSet(MV_U32 pexIf, MV_U32 barNum, MV_PEX_BAR *addrWin); - -/* mvPexBarGet - Get PEX bar address and size */ -MV_STATUS mvPexBarGet(MV_U32 pexIf, MV_U32 barNum, MV_PEX_BAR *addrWin); - -/* mvPexBarEnable - enable\disable a PEX bar*/ -MV_STATUS mvPexBarEnable(MV_U32 pexIf, MV_U32 barNum, MV_BOOL enable); - -/* mvPexAddrDecShow - Display address decode windows attributes */ -MV_VOID mvPexAddrDecShow(MV_VOID); - -#endif diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSata.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSata.c deleted file mode 100644 index f100a12d10..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSata.c +++ /dev/null @@ -1,430 +0,0 @@ -/******************************************************************************* -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 "mvTypes.h" -#include "mvCommon.h" -#include "mvOs.h" -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "cpu/mvCpu.h" -#include "ctrlEnv/sys/mvCpuIf.h" -#include "sata/CoreDriver/mvRegs.h" -#include "ctrlEnv/sys/mvSysSata.h" - -MV_TARGET sataAddrDecPrioTab[] = -{ -#if defined(MV_INCLUDE_SDRAM_CS0) - SDRAM_CS0, -#endif -#if defined(MV_INCLUDE_SDRAM_CS1) - SDRAM_CS1, -#endif -#if defined(MV_INCLUDE_SDRAM_CS2) - SDRAM_CS2, -#endif -#if defined(MV_INCLUDE_SDRAM_CS3) - SDRAM_CS3, -#endif -#if defined(MV_INCLUDE_PEX) - PEX0_MEM, -#endif - TBL_TERM -}; - - -/******************************************************************************* -* sataWinOverlapDetect - Detect SATA address windows overlapping -* -* DESCRIPTION: -* An unpredicted behaviur is expected in case SATA address decode -* windows overlapps. -* This function detects SATA address decode windows overlapping of a -* specified window. The function does not check the window itself for -* overlapping. The function also skipps disabled address decode windows. -* -* INPUT: -* winNum - address decode window number. -* pAddrDecWin - An address decode window struct. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise, MV_ERROR if reading invalid data -* from registers. -* -*******************************************************************************/ -static MV_STATUS sataWinOverlapDetect(int dev, MV_U32 winNum, - MV_ADDR_WIN *pAddrWin) -{ - MV_U32 winNumIndex; - MV_SATA_DEC_WIN addrDecWin; - - for(winNumIndex=0; winNumIndex<MV_SATA_MAX_ADDR_DECODE_WIN; winNumIndex++) - { - /* Do not check window itself */ - if (winNumIndex == winNum) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvSataWinGet(dev, winNumIndex, &addrDecWin)) - { - mvOsPrintf("%s: ERR. TargetWinGet failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* Do not check disabled windows */ - if(addrDecWin.enable == MV_FALSE) - { - continue; - } - - if (MV_TRUE == ctrlWinOverlapTest(pAddrWin, &(addrDecWin.addrWin))) - { - return MV_TRUE; - } - } - return MV_FALSE; -} - - -/******************************************************************************* -* mvSataWinSet - Set SATA target address window -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI_MEM0) -* address window, also known as address decode window. -* After setting this target window, the SATA will be able to access the -* target within the address window. -* -* INPUT: -* winNum - SATA target address decode window number. -* pAddrDecWin - SATA target window data structure. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if address window overlapps with other address decode windows. -* MV_BAD_PARAM if base address is invalid parameter or target is -* unknown. -* -*******************************************************************************/ -MV_STATUS mvSataWinSet(int dev, MV_U32 winNum, MV_SATA_DEC_WIN *pAddrDecWin) -{ - MV_TARGET_ATTRIB targetAttribs; - MV_DEC_REGS decRegs; - - /* Parameter checking */ - if (winNum >= MV_SATA_MAX_ADDR_DECODE_WIN) - { - mvOsPrintf("%s: ERR. Invalid win num %d\n",__FUNCTION__, winNum); - return MV_BAD_PARAM; - } - - /* Check if the requested window overlapps with current windows */ - if (MV_TRUE == sataWinOverlapDetect(dev, winNum, &pAddrDecWin->addrWin)) - { - mvOsPrintf("%s: ERR. Window %d overlap\n", __FUNCTION__, winNum); - return MV_ERROR; - } - - /* check if address is aligned to the size */ - if(MV_IS_NOT_ALIGN(pAddrDecWin->addrWin.baseLow, pAddrDecWin->addrWin.size)) - { - mvOsPrintf("mvSataWinSet:Error setting SATA window %d to "\ - "target %s.\nAddress 0x%08x is unaligned to size 0x%x.\n", - winNum, - mvCtrlTargetNameGet(pAddrDecWin->target), - pAddrDecWin->addrWin.baseLow, - pAddrDecWin->addrWin.size); - return MV_ERROR; - } - - decRegs.baseReg = 0; - decRegs.sizeReg = 0; - - if (MV_OK != mvCtrlAddrDecToReg(&(pAddrDecWin->addrWin),&decRegs)) - { - mvOsPrintf("%s: mvCtrlAddrDecToReg Failed\n", __FUNCTION__); - return MV_ERROR; - } - - mvCtrlAttribGet(pAddrDecWin->target, &targetAttribs); - - /* set attributes */ - decRegs.sizeReg &= ~MV_SATA_WIN_ATTR_MASK; - decRegs.sizeReg |= (targetAttribs.attrib << MV_SATA_WIN_ATTR_OFFSET); - - /* set target ID */ - decRegs.sizeReg &= ~MV_SATA_WIN_TARGET_MASK; - decRegs.sizeReg |= (targetAttribs.targetId << MV_SATA_WIN_TARGET_OFFSET); - - if (pAddrDecWin->enable == MV_TRUE) - { - decRegs.sizeReg |= MV_SATA_WIN_ENABLE_MASK; - } - else - { - decRegs.sizeReg &= ~MV_SATA_WIN_ENABLE_MASK; - } - - MV_REG_WRITE( MV_SATA_WIN_CTRL_REG(dev, winNum), decRegs.sizeReg); - MV_REG_WRITE( MV_SATA_WIN_BASE_REG(dev, winNum), decRegs.baseReg); - - return MV_OK; -} - -/******************************************************************************* -* mvSataWinGet - Get SATA peripheral target address window. -* -* DESCRIPTION: -* Get SATA peripheral target address window. -* -* INPUT: -* winNum - SATA target address decode window number. -* -* OUTPUT: -* pAddrDecWin - SATA target window data structure. -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvSataWinGet(int dev, MV_U32 winNum, MV_SATA_DEC_WIN *pAddrDecWin) -{ - MV_DEC_REGS decRegs; - MV_TARGET_ATTRIB targetAttrib; - - /* Parameter checking */ - if (winNum >= MV_SATA_MAX_ADDR_DECODE_WIN) - { - mvOsPrintf("%s (dev=%d): ERR. Invalid winNum %d\n", - __FUNCTION__, dev, winNum); - return MV_NOT_SUPPORTED; - } - - decRegs.baseReg = MV_REG_READ( MV_SATA_WIN_BASE_REG(dev, winNum) ); - decRegs.sizeReg = MV_REG_READ( MV_SATA_WIN_CTRL_REG(dev, winNum) ); - - if (MV_OK != mvCtrlRegToAddrDec(&decRegs, &pAddrDecWin->addrWin) ) - { - mvOsPrintf("%s: mvCtrlRegToAddrDec Failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* attrib and targetId */ - targetAttrib.attrib = (decRegs.sizeReg & MV_SATA_WIN_ATTR_MASK) >> - MV_SATA_WIN_ATTR_OFFSET; - targetAttrib.targetId = (decRegs.sizeReg & MV_SATA_WIN_TARGET_MASK) >> - MV_SATA_WIN_TARGET_OFFSET; - - pAddrDecWin->target = mvCtrlTargetGet(&targetAttrib); - - /* Check if window is enabled */ - if(decRegs.sizeReg & MV_SATA_WIN_ENABLE_MASK) - { - pAddrDecWin->enable = MV_TRUE; - } - else - { - pAddrDecWin->enable = MV_FALSE; - } - return MV_OK; -} -/******************************************************************************* -* mvSataAddrDecShow - Print the SATA address decode map. -* -* DESCRIPTION: -* This function print the SATA address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_VOID mvSataAddrDecShow(MV_VOID) -{ - - MV_SATA_DEC_WIN win; - int i,j; - - - - for( j = 0; j < MV_SATA_MAX_CHAN; j++ ) - { - if (MV_FALSE == mvCtrlPwrClckGet(SATA_UNIT_ID, j)) - return; - - mvOsOutput( "\n" ); - mvOsOutput( "SATA %d:\n", j ); - mvOsOutput( "----\n" ); - - for( i = 0; i < MV_SATA_MAX_ADDR_DECODE_WIN; i++ ) - { - memset( &win, 0, sizeof(MV_SATA_DEC_WIN) ); - - mvOsOutput( "win%d - ", i ); - - if( mvSataWinGet(j, i, &win ) == MV_OK ) - { - if( win.enable ) - { - mvOsOutput( "%s base %08x, ", - mvCtrlTargetNameGet(win.target), win.addrWin.baseLow ); - mvOsOutput( "...." ); - - mvSizePrint( win.addrWin.size ); - - mvOsOutput( "\n" ); - } - else - mvOsOutput( "disable\n" ); - } - } - } -} - - -/******************************************************************************* -* mvSataWinInit - Initialize the integrated SATA target address window. -* -* DESCRIPTION: -* Initialize the SATA peripheral target address window. -* -* INPUT: -* -* -* OUTPUT: -* -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvSataWinInit(MV_VOID) -{ - int winNum; - MV_SATA_DEC_WIN sataWin; - MV_CPU_DEC_WIN cpuAddrDecWin; - MV_U32 status, winPrioIndex = 0; - - /* Initiate Sata address decode */ - - /* First disable all address decode windows */ - for(winNum = 0; winNum < MV_SATA_MAX_ADDR_DECODE_WIN; winNum++) - { - MV_U32 regVal = MV_REG_READ(MV_SATA_WIN_CTRL_REG(0, winNum)); - regVal &= ~MV_SATA_WIN_ENABLE_MASK; - MV_REG_WRITE(MV_SATA_WIN_CTRL_REG(0, winNum), regVal); - } - - winNum = 0; - while( (sataAddrDecPrioTab[winPrioIndex] != TBL_TERM) && - (winNum < MV_SATA_MAX_ADDR_DECODE_WIN) ) - { - /* first get attributes from CPU If */ - status = mvCpuIfTargetWinGet(sataAddrDecPrioTab[winPrioIndex], - &cpuAddrDecWin); - - if(MV_NO_SUCH == status) - { - winPrioIndex++; - continue; - } - if (MV_OK != status) - { - mvOsPrintf("%s: ERR. mvCpuIfTargetWinGet failed\n", __FUNCTION__); - return MV_ERROR; - } - - if (cpuAddrDecWin.enable == MV_TRUE) - { - sataWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; - sataWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; - sataWin.addrWin.size = cpuAddrDecWin.addrWin.size; - sataWin.enable = MV_TRUE; - sataWin.target = sataAddrDecPrioTab[winPrioIndex]; - - if(MV_OK != mvSataWinSet(0/*dev*/, winNum, &sataWin)) - { - return MV_ERROR; - } - winNum++; - } - winPrioIndex++; - } - return MV_OK; -} - - - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSata.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSata.h deleted file mode 100644 index 611f5776b7..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSata.h +++ /dev/null @@ -1,128 +0,0 @@ - -/******************************************************************************* -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 __INCMVSysSataAddrDech -#define __INCMVSysSataAddrDech - -#include "mvCommon.h" -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "ctrlEnv/sys/mvCpuIf.h" - - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _mvSataDecWin -{ - MV_TARGET target; - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -} MV_SATA_DEC_WIN; - - -#define MV_SATA_MAX_ADDR_DECODE_WIN 4 - -#define MV_SATA_WIN_CTRL_REG(dev, win) (SATA_REG_BASE + 0x30 + ((win)<<4)) -#define MV_SATA_WIN_BASE_REG(dev, win) (SATA_REG_BASE + 0x34 + ((win)<<4)) - -/* BITs in Bridge Interrupt Cause and Mask registers */ -#define MV_SATA_ADDR_DECODE_ERROR_BIT 0 -#define MV_SATA_ADDR_DECODE_ERROR_MASK (1<<MV_SATA_ADDR_DECODE_ERROR_BIT) - -/* BITs in Windows 0-3 Control and Base Registers */ -#define MV_SATA_WIN_ENABLE_BIT 0 -#define MV_SATA_WIN_ENABLE_MASK (1<<MV_SATA_WIN_ENABLE_BIT) - -#define MV_SATA_WIN_TARGET_OFFSET 4 -#define MV_SATA_WIN_TARGET_MASK (0xF<<MV_SATA_WIN_TARGET_OFFSET) - -#define MV_SATA_WIN_ATTR_OFFSET 8 -#define MV_SATA_WIN_ATTR_MASK (0xFF<<MV_SATA_WIN_ATTR_OFFSET) - -#define MV_SATA_WIN_SIZE_OFFSET 16 -#define MV_SATA_WIN_SIZE_MASK (0xFFFF<<MV_SATA_WIN_SIZE_OFFSET) - -#define MV_SATA_WIN_BASE_OFFSET 16 -#define MV_SATA_WIN_BASE_MASK (0xFFFF<<MV_SATA_WIN_BASE_OFFSET) - -MV_STATUS mvSataWinGet(int dev, MV_U32 winNum, MV_SATA_DEC_WIN *pAddrDecWin); -MV_STATUS mvSataWinSet(int dev, MV_U32 winNum, MV_SATA_DEC_WIN *pAddrDecWin); -MV_STATUS mvSataWinByTargetGet(MV_TARGET target, MV_SATA_DEC_WIN *pAddrDecWin); -MV_STATUS mvSataWinInit(MV_VOID); -MV_VOID mvSataAddrDecShow(MV_VOID); - - -#ifdef __cplusplus -} -#endif - - -#endif - - - - - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSdmmc.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSdmmc.c deleted file mode 100644 index 6d2a919242..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSdmmc.c +++ /dev/null @@ -1,427 +0,0 @@ -/******************************************************************************* -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 "mvTypes.h" -#include "mvCommon.h" -#include "mvOs.h" -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "cpu/mvCpu.h" -#include "ctrlEnv/sys/mvCpuIf.h" -#include "mvRegs.h" -#include "ctrlEnv/sys/mvSysSdmmc.h" - -MV_TARGET sdmmcAddrDecPrioTab[] = -{ -#if defined(MV_INCLUDE_SDRAM_CS0) - SDRAM_CS0, -#endif -#if defined(MV_INCLUDE_SDRAM_CS1) - SDRAM_CS1, -#endif -#if defined(MV_INCLUDE_SDRAM_CS2) - SDRAM_CS2, -#endif -#if defined(MV_INCLUDE_SDRAM_CS3) - SDRAM_CS3, -#endif -#if defined(MV_INCLUDE_PEX) - PEX0_MEM, -#endif - TBL_TERM -}; - - -/******************************************************************************* -* sdmmcWinOverlapDetect - Detect SDMMC address windows overlapping -* -* DESCRIPTION: -* An unpredicted behaviur is expected in case SDMMC address decode -* windows overlapps. -* This function detects SDMMC address decode windows overlapping of a -* specified window. The function does not check the window itself for -* overlapping. The function also skipps disabled address decode windows. -* -* INPUT: -* winNum - address decode window number. -* pAddrDecWin - An address decode window struct. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise, MV_ERROR if reading invalid data -* from registers. -* -*******************************************************************************/ -static MV_STATUS sdmmcWinOverlapDetect(int dev, MV_U32 winNum, - MV_ADDR_WIN *pAddrWin) -{ - MV_U32 winNumIndex; - MV_SDMMC_DEC_WIN addrDecWin; - - for(winNumIndex=0; winNumIndex<MV_SDMMC_MAX_ADDR_DECODE_WIN; winNumIndex++) - { - /* Do not check window itself */ - if (winNumIndex == winNum) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvSdmmcWinGet(dev, winNumIndex, &addrDecWin)) - { - mvOsPrintf("%s: ERR. TargetWinGet failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* Do not check disabled windows */ - if(addrDecWin.enable == MV_FALSE) - { - continue; - } - - if (MV_TRUE == ctrlWinOverlapTest(pAddrWin, &(addrDecWin.addrWin))) - { - return MV_TRUE; - } - } - return MV_FALSE; -} - - -/******************************************************************************* -* mvSdmmcWinSet - Set SDMMC target address window -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI_MEM0) -* address window, also known as address decode window. -* After setting this target window, the SDMMC will be able to access the -* target within the address window. -* -* INPUT: -* winNum - SDMMC target address decode window number. -* pAddrDecWin - SDMMC target window data structure. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if address window overlapps with other address decode windows. -* MV_BAD_PARAM if base address is invalid parameter or target is -* unknown. -* -*******************************************************************************/ -MV_STATUS mvSdmmcWinSet(int dev, MV_U32 winNum, MV_SDMMC_DEC_WIN *pAddrDecWin) -{ - MV_TARGET_ATTRIB targetAttribs; - MV_DEC_REGS decRegs; - - /* Parameter checking */ - if (winNum >= MV_SDMMC_MAX_ADDR_DECODE_WIN) - { - mvOsPrintf("%s: ERR. Invalid win num %d\n",__FUNCTION__, winNum); - return MV_BAD_PARAM; - } - - /* Check if the requested window overlapps with current windows */ - if (MV_TRUE == sdmmcWinOverlapDetect(dev, winNum, &pAddrDecWin->addrWin)) - { - mvOsPrintf("%s: ERR. Window %d overlap\n", __FUNCTION__, winNum); - return MV_ERROR; - } - - /* check if address is aligned to the size */ - if(MV_IS_NOT_ALIGN(pAddrDecWin->addrWin.baseLow, pAddrDecWin->addrWin.size)) - { - mvOsPrintf("mvSdmmcWinSet:Error setting SDMMC window %d to "\ - "target %s.\nAddress 0x%08x is unaligned to size 0x%x.\n", - winNum, - mvCtrlTargetNameGet(pAddrDecWin->target), - pAddrDecWin->addrWin.baseLow, - pAddrDecWin->addrWin.size); - return MV_ERROR; - } - - decRegs.baseReg = 0; - decRegs.sizeReg = 0; - - if (MV_OK != mvCtrlAddrDecToReg(&(pAddrDecWin->addrWin),&decRegs)) - { - mvOsPrintf("%s: mvCtrlAddrDecToReg Failed\n", __FUNCTION__); - return MV_ERROR; - } - - mvCtrlAttribGet(pAddrDecWin->target, &targetAttribs); - - /* set attributes */ - decRegs.sizeReg &= ~MV_SDMMC_WIN_ATTR_MASK; - decRegs.sizeReg |= (targetAttribs.attrib << MV_SDMMC_WIN_ATTR_OFFSET); - - /* set target ID */ - decRegs.sizeReg &= ~MV_SDMMC_WIN_TARGET_MASK; - decRegs.sizeReg |= (targetAttribs.targetId << MV_SDMMC_WIN_TARGET_OFFSET); - - if (pAddrDecWin->enable == MV_TRUE) - { - decRegs.sizeReg |= MV_SDMMC_WIN_ENABLE_MASK; - } - else - { - decRegs.sizeReg &= ~MV_SDMMC_WIN_ENABLE_MASK; - } - - MV_REG_WRITE( MV_SDMMC_WIN_CTRL_REG(dev, winNum), decRegs.sizeReg); - MV_REG_WRITE( MV_SDMMC_WIN_BASE_REG(dev, winNum), decRegs.baseReg); - - return MV_OK; -} - -/******************************************************************************* -* mvSdmmcWinGet - Get SDMMC peripheral target address window. -* -* DESCRIPTION: -* Get SDMMC peripheral target address window. -* -* INPUT: -* winNum - SDMMC target address decode window number. -*d -* OUTPUT: -* pAddrDecWin - SDMMC target window data structure. -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvSdmmcWinGet(int dev, MV_U32 winNum, MV_SDMMC_DEC_WIN *pAddrDecWin) -{ - MV_DEC_REGS decRegs; - MV_TARGET_ATTRIB targetAttrib; - - /* Parameter checking */ - if (winNum >= MV_SDMMC_MAX_ADDR_DECODE_WIN) - { - mvOsPrintf("%s (dev=%d): ERR. Invalid winNum %d\n", - __FUNCTION__, dev, winNum); - return MV_NOT_SUPPORTED; - } - - decRegs.baseReg = MV_REG_READ( MV_SDMMC_WIN_BASE_REG(dev, winNum) ); - decRegs.sizeReg = MV_REG_READ( MV_SDMMC_WIN_CTRL_REG(dev, winNum) ); - - if (MV_OK != mvCtrlRegToAddrDec(&decRegs, &pAddrDecWin->addrWin) ) - { - mvOsPrintf("%s: mvCtrlRegToAddrDec Failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* attrib and targetId */ - targetAttrib.attrib = (decRegs.sizeReg & MV_SDMMC_WIN_ATTR_MASK) >> - MV_SDMMC_WIN_ATTR_OFFSET; - targetAttrib.targetId = (decRegs.sizeReg & MV_SDMMC_WIN_TARGET_MASK) >> - MV_SDMMC_WIN_TARGET_OFFSET; - - pAddrDecWin->target = mvCtrlTargetGet(&targetAttrib); - - /* Check if window is enabled */ - if(decRegs.sizeReg & MV_SDMMC_WIN_ENABLE_MASK) - { - pAddrDecWin->enable = MV_TRUE; - } - else - { - pAddrDecWin->enable = MV_FALSE; - } - return MV_OK; -} -/******************************************************************************* -* mvSdmmcAddrDecShow - Print the SDMMC address decode map. -* -* DESCRIPTION: -* This function print the SDMMC address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_VOID mvSdmmcAddrDecShow(MV_VOID) -{ - - MV_SDMMC_DEC_WIN win; - int i,j=0; - - - - if (MV_FALSE == mvCtrlPwrClckGet(SDIO_UNIT_ID, 0)) - return; - - mvOsOutput( "\n" ); - mvOsOutput( "SDMMC %d:\n", j ); - mvOsOutput( "----\n" ); - - for( i = 0; i < MV_SDMMC_MAX_ADDR_DECODE_WIN; i++ ) - { - memset( &win, 0, sizeof(MV_SDMMC_DEC_WIN) ); - - mvOsOutput( "win%d - ", i ); - - if( mvSdmmcWinGet(j, i, &win ) == MV_OK ) - { - if( win.enable ) - { - mvOsOutput( "%s base %08x, ", - mvCtrlTargetNameGet(win.target), win.addrWin.baseLow ); - mvOsOutput( "...." ); - - mvSizePrint( win.addrWin.size ); - - mvOsOutput( "\n" ); - } - else - mvOsOutput( "disable\n" ); - } - } -} - - -/******************************************************************************* -* mvSdmmcWinInit - Initialize the integrated SDMMC target address window. -* -* DESCRIPTION: -* Initialize the SDMMC peripheral target address window. -* -* INPUT: -* -* -* OUTPUT: -* -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvSdmmcWinInit(MV_VOID) -{ - int winNum; - MV_SDMMC_DEC_WIN sdmmcWin; - MV_CPU_DEC_WIN cpuAddrDecWin; - MV_U32 status, winPrioIndex = 0; - - /* Initiate Sdmmc address decode */ - - /* First disable all address decode windows */ - for(winNum = 0; winNum < MV_SDMMC_MAX_ADDR_DECODE_WIN; winNum++) - { - MV_U32 regVal = MV_REG_READ(MV_SDMMC_WIN_CTRL_REG(0, winNum)); - regVal &= ~MV_SDMMC_WIN_ENABLE_MASK; - MV_REG_WRITE(MV_SDMMC_WIN_CTRL_REG(0, winNum), regVal); - } - - winNum = 0; - while( (sdmmcAddrDecPrioTab[winPrioIndex] != TBL_TERM) && - (winNum < MV_SDMMC_MAX_ADDR_DECODE_WIN) ) - { - /* first get attributes from CPU If */ - status = mvCpuIfTargetWinGet(sdmmcAddrDecPrioTab[winPrioIndex], - &cpuAddrDecWin); - - if(MV_NO_SUCH == status) - { - winPrioIndex++; - continue; - } - if (MV_OK != status) - { - mvOsPrintf("%s: ERR. mvCpuIfTargetWinGet failed\n", __FUNCTION__); - return MV_ERROR; - } - - if (cpuAddrDecWin.enable == MV_TRUE) - { - sdmmcWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; - sdmmcWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; - sdmmcWin.addrWin.size = cpuAddrDecWin.addrWin.size; - sdmmcWin.enable = MV_TRUE; - sdmmcWin.target = sdmmcAddrDecPrioTab[winPrioIndex]; - - if(MV_OK != mvSdmmcWinSet(0/*dev*/, winNum, &sdmmcWin)) - { - return MV_ERROR; - } - winNum++; - } - winPrioIndex++; - } - return MV_OK; -} - - - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSdmmc.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSdmmc.h deleted file mode 100644 index c2f9f79446..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysSdmmc.h +++ /dev/null @@ -1,125 +0,0 @@ - -/******************************************************************************* -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 __INCMVSysSdmmcAddrDech -#define __INCMVSysSdmmcAddrDech - -#include "mvCommon.h" -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "ctrlEnv/sys/mvCpuIf.h" - - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _mvSdmmcDecWin -{ - MV_TARGET target; - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -} MV_SDMMC_DEC_WIN; - - -#define MV_SDMMC_MAX_ADDR_DECODE_WIN 4 - -#define MV_SDMMC_WIN_CTRL_REG(dev, win) (MV_SDIO_REG_BASE + 0x108 + ((win)<<3)) -#define MV_SDMMC_WIN_BASE_REG(dev, win) (MV_SDIO_REG_BASE + 0x10c + ((win)<<3)) - - -/* BITs in Windows 0-3 Control and Base Registers */ -#define MV_SDMMC_WIN_ENABLE_BIT 0 -#define MV_SDMMC_WIN_ENABLE_MASK (1<<MV_SDMMC_WIN_ENABLE_BIT) - -#define MV_SDMMC_WIN_TARGET_OFFSET 4 -#define MV_SDMMC_WIN_TARGET_MASK (0xF<<MV_SDMMC_WIN_TARGET_OFFSET) - -#define MV_SDMMC_WIN_ATTR_OFFSET 8 -#define MV_SDMMC_WIN_ATTR_MASK (0xFF<<MV_SDMMC_WIN_ATTR_OFFSET) - -#define MV_SDMMC_WIN_SIZE_OFFSET 16 -#define MV_SDMMC_WIN_SIZE_MASK (0xFFFF<<MV_SDMMC_WIN_SIZE_OFFSET) - -#define MV_SDMMC_WIN_BASE_OFFSET 16 -#define MV_SDMMC_WIN_BASE_MASK (0xFFFF<<MV_SDMMC_WIN_BASE_OFFSET) - -MV_STATUS mvSdmmcWinGet(int dev, MV_U32 winNum, MV_SDMMC_DEC_WIN *pAddrDecWin); -MV_STATUS mvSdmmcWinSet(int dev, MV_U32 winNum, MV_SDMMC_DEC_WIN *pAddrDecWin); -MV_STATUS mvSdmmcWinByTargetGet(MV_TARGET target, MV_SDMMC_DEC_WIN *pAddrDecWin); -MV_STATUS mvSdmmcWinInit(MV_VOID); -MV_VOID mvSdmmcAddrDecShow(MV_VOID); - - -#ifdef __cplusplus -} -#endif - - -#endif - - - - - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTdm.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTdm.c deleted file mode 100644 index 6ac7f12bfc..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTdm.c +++ /dev/null @@ -1,462 +0,0 @@ -/******************************************************************************* -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 "mvSysTdm.h" - - -/* defines */ -#ifdef MV_DEBUG - #define DB(x) x -#else - #define DB(x) -#endif - -static MV_TARGET tdmAddrDecPrioTap[] = -{ - PEX0_MEM, - SDRAM_CS0, - SDRAM_CS1, - SDRAM_CS2, - SDRAM_CS3, - DEVICE_CS0, - DEVICE_CS1, - DEVICE_CS2, - DEV_BOOCS, - PEX0_IO, - TBL_TERM -};
- -static MV_STATUS tdmWinOverlapDetect(MV_U32 winNum, MV_ADDR_WIN *pAddrWin); - -/******************************************************************************* -* mvTdmWinInit - Initialize TDM address decode windows -* -* DESCRIPTION: -* This function initialize TDM window decode unit. It set the -* default address decode -* windows of the unit. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if setting fail. -*******************************************************************************/ - -MV_STATUS mvTdmWinInit(void) -{ - MV_U32 winNum; - MV_U32 winPrioIndex = 0; - MV_CPU_DEC_WIN cpuAddrDecWin; - MV_TDM_DEC_WIN tdmWin; - MV_STATUS status; - - /*Disable all windows*/ - for (winNum = 0; winNum < TDM_MBUS_MAX_WIN; winNum++) - { - mvTdmWinEnable(winNum, MV_FALSE); - } - - for (winNum = 0; ((tdmAddrDecPrioTap[winPrioIndex] != TBL_TERM) && - (winNum < TDM_MBUS_MAX_WIN)); ) - { - status = mvCpuIfTargetWinGet(tdmAddrDecPrioTap[winPrioIndex], - &cpuAddrDecWin); - if (MV_NO_SUCH == status) - { - winPrioIndex++; - continue; - } - if (MV_OK != status) - { - mvOsPrintf("mvTdmInit: ERR. mvCpuIfTargetWinGet failed\n"); - return MV_ERROR; - } - - if (cpuAddrDecWin.enable == MV_TRUE) - { - tdmWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; - tdmWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; - tdmWin.addrWin.size = cpuAddrDecWin.addrWin.size; - tdmWin.enable = MV_TRUE; - tdmWin.target = tdmAddrDecPrioTap[winPrioIndex]; - if (MV_OK != mvTdmWinSet(winNum, &tdmWin)) - { - return MV_ERROR; - } - winNum++; - } - winPrioIndex++; - } - return MV_OK; -} - -/******************************************************************************* -* mvTdmWinSet - Set TDM target address window -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI_MEM0) -* address window, also known as address decode window. -* After setting this target window, the TDM will be able to access the -* target within the address window. -* -* INPUT: -* winNum - TDM to target address decode window number. -* pAddrDecWin - TDM target window data structure. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if address window overlapps with other address decode windows. -* MV_BAD_PARAM if base address is invalid parameter or target is -* unknown. -* -*******************************************************************************/ - -MV_STATUS mvTdmWinSet(MV_U32 winNum, MV_TDM_DEC_WIN *pAddrDecWin) -{ - MV_TARGET_ATTRIB targetAttribs; - MV_DEC_REGS decRegs; - MV_U32 ctrlReg = 0; - - /* Parameter checking */ - if (winNum >= TDM_MBUS_MAX_WIN) - { - mvOsPrintf("mvTdmWinSet: ERR. Invalid win num %d\n",winNum); - return MV_BAD_PARAM; - } - - /* Check if the requested window overlapps with current windows */ - if (MV_TRUE == tdmWinOverlapDetect(winNum, &pAddrDecWin->addrWin)) - { - mvOsPrintf("mvTdmWinSet: ERR. Window %d overlap\n", winNum); - return MV_ERROR; - } - - /* check if address is aligned to the size */ - if (MV_IS_NOT_ALIGN(pAddrDecWin->addrWin.baseLow, pAddrDecWin->addrWin.size)) - { - mvOsPrintf("mvTdmWinSet: Error setting TDM window %d to "\ - "target %s.\nAddress 0x%08x is unaligned to size 0x%x.\n", - winNum, - mvCtrlTargetNameGet(pAddrDecWin->target), - pAddrDecWin->addrWin.baseLow, - pAddrDecWin->addrWin.size); - return MV_ERROR; - } - - decRegs.baseReg = MV_REG_READ(TDM_WIN_BASE_REG(winNum)); - decRegs.sizeReg = (MV_REG_READ(TDM_WIN_CTRL_REG(winNum)) & TDM_WIN_SIZE_MASK) >> TDM_WIN_SIZE_OFFS; - - if (MV_OK != mvCtrlAddrDecToReg(&(pAddrDecWin->addrWin),&decRegs)) - { - mvOsPrintf("mvTdmWinSet: mvCtrlAddrDecToReg Failed\n"); - return MV_ERROR; - } - - mvCtrlAttribGet(pAddrDecWin->target, &targetAttribs); - - /* for the safe side we disable the window before writing the new - values */ - mvTdmWinEnable(winNum, MV_FALSE); - - ctrlReg |= (targetAttribs.attrib << TDM_WIN_ATTRIB_OFFS); - ctrlReg |= (targetAttribs.targetId << TDM_WIN_TARGET_OFFS); - ctrlReg |= (decRegs.sizeReg & TDM_WIN_SIZE_MASK); - - /* Write to address base and control registers */ - MV_REG_WRITE(TDM_WIN_BASE_REG(winNum), decRegs.baseReg); - MV_REG_WRITE(TDM_WIN_CTRL_REG(winNum), ctrlReg); - /* Enable address decode target window */ - if (pAddrDecWin->enable == MV_TRUE) - { - mvTdmWinEnable(winNum, MV_TRUE); - } - return MV_OK; -} - -/******************************************************************************* -* mvTdmWinGet - Get peripheral target address window. -* -* DESCRIPTION: -* Get TDM peripheral target address window. -* -* INPUT: -* winNum - TDM to target address decode window number. -* -* OUTPUT: -* pAddrDecWin - TDM target window data structure. -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ - -MV_STATUS mvTdmWinGet(MV_U32 winNum, MV_TDM_DEC_WIN *pAddrDecWin) -{ - - MV_DEC_REGS decRegs; - MV_TARGET_ATTRIB targetAttrib; - - /* Parameter checking */ - if (winNum >= TDM_MBUS_MAX_WIN) - { - mvOsPrintf("mvTdmWinGet: ERR. Invalid winNum %d\n", winNum); - return MV_NOT_SUPPORTED; - } - - decRegs.baseReg = MV_REG_READ(TDM_WIN_BASE_REG(winNum)); - decRegs.sizeReg = (MV_REG_READ(TDM_WIN_CTRL_REG(winNum)) & TDM_WIN_SIZE_MASK) >> TDM_WIN_SIZE_OFFS; - - if (MV_OK != mvCtrlRegToAddrDec(&decRegs,&(pAddrDecWin->addrWin))) - { - mvOsPrintf("mvTdmWinGet: mvCtrlRegToAddrDec Failed \n"); - return MV_ERROR; - } - - /* attrib and targetId */ - targetAttrib.attrib = - (MV_REG_READ(TDM_WIN_CTRL_REG(winNum)) & TDM_WIN_ATTRIB_MASK) >> TDM_WIN_ATTRIB_OFFS; - targetAttrib.targetId = - (MV_REG_READ(TDM_WIN_CTRL_REG(winNum)) & TDM_WIN_TARGET_MASK) >> TDM_WIN_TARGET_OFFS; - - pAddrDecWin->target = mvCtrlTargetGet(&targetAttrib); - - /* Check if window is enabled */ - if (MV_REG_READ(TDM_WIN_CTRL_REG(winNum)) & TDM_WIN_ENABLE_MASK) - { - pAddrDecWin->enable = MV_TRUE; - } - else - { - pAddrDecWin->enable = MV_FALSE; - } - - return MV_OK; -} - -/******************************************************************************* -* mvTdmWinEnable - Enable/disable a TDM to target address window -* -* DESCRIPTION: -* This function enable/disable a TDM to target address window. -* According to parameter 'enable' the routine will enable the -* window, thus enabling TDM accesses (before enabling the window it is -* tested for overlapping). Otherwise, the window will be disabled. -* -* INPUT: -* winNum - TDM to target address decode window number. -* enable - Enable/disable parameter. -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_ERROR if decode window number was wrong or enabled window overlapps. -* -*******************************************************************************/ -MV_STATUS mvTdmWinEnable(int winNum, MV_BOOL enable) -{ - MV_TDM_DEC_WIN addrDecWin; - - if (MV_TRUE == enable) - { - if (winNum >= TDM_MBUS_MAX_WIN) - { - mvOsPrintf("mvTdmWinEnable:ERR. Invalid winNum%d\n",winNum); - return MV_ERROR; - } - - /* First check for overlap with other enabled windows */ - /* Get current window */ - if (MV_OK != mvTdmWinGet(winNum, &addrDecWin)) - { - mvOsPrintf("mvTdmWinEnable:ERR. targetWinGet fail\n"); - return MV_ERROR; - } - /* Check for overlapping */ - if (MV_FALSE == tdmWinOverlapDetect(winNum, &(addrDecWin.addrWin))) - { - /* No Overlap. Enable address decode target window */ - MV_REG_BIT_SET(TDM_WIN_CTRL_REG(winNum), TDM_WIN_ENABLE_MASK); - } - else - { /* Overlap detected */ - mvOsPrintf("mvTdmWinEnable:ERR. Overlap detected\n"); - return MV_ERROR; - } - } - else - { - MV_REG_BIT_RESET(TDM_WIN_CTRL_REG(winNum), TDM_WIN_ENABLE_MASK); - } - return MV_OK; -} - - -/******************************************************************************* -* tdmWinOverlapDetect - Detect TDM address windows overlapping -* -* DESCRIPTION: -* An unpredicted behaviour is expected in case TDM address decode -* windows overlapps. -* This function detects TDM address decode windows overlapping of a -* specified window. The function does not check the window itself for -* overlapping. The function also skipps disabled address decode windows. -* -* INPUT: -* winNum - address decode window number. -* pAddrDecWin - An address decode window struct. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise, MV_ERROR if reading invalid data -* from registers. -* -*******************************************************************************/ -static MV_STATUS tdmWinOverlapDetect(MV_U32 winNum, MV_ADDR_WIN *pAddrWin) -{ - MV_U32 winNumIndex; - MV_TDM_DEC_WIN addrDecWin; - - for (winNumIndex = 0; winNumIndex < TDM_MBUS_MAX_WIN; winNumIndex++) - { - /* Do not check window itself */ - if (winNumIndex == winNum) - { - continue; - } - /* Do not check disabled windows */ - if (MV_REG_READ(TDM_WIN_CTRL_REG(winNum)) & TDM_WIN_ENABLE_MASK) - { - /* Get window parameters */ - if (MV_OK != mvTdmWinGet(winNumIndex, &addrDecWin)) - { - DB(mvOsPrintf("dmaWinOverlapDetect: ERR. TargetWinGet failed\n")); - return MV_ERROR; - } - - if (MV_TRUE == ctrlWinOverlapTest(pAddrWin, &(addrDecWin.addrWin))) - { - return MV_TRUE; - } - } - } - return MV_FALSE; -} - -/******************************************************************************* -* mvTdmAddrDecShow - Print the TDM address decode map. -* -* DESCRIPTION: -* This function print the TDM address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_VOID mvTdmAddrDecShow(MV_VOID) -{ - MV_TDM_DEC_WIN win; - int i; - - mvOsOutput( "\n" ); - mvOsOutput( "TDM:\n" ); - mvOsOutput( "----\n" ); - - for( i = 0; i < TDM_MBUS_MAX_WIN; i++ ) - { - memset( &win, 0, sizeof(MV_TDM_DEC_WIN) ); - - mvOsOutput( "win%d - ", i ); - - if (mvTdmWinGet(i, &win ) == MV_OK ) - { - if( win.enable ) - { - mvOsOutput( "%s base %08x, ", - mvCtrlTargetNameGet(win.target), win.addrWin.baseLow); - mvOsOutput( "...." ); - mvSizePrint( win.addrWin.size ); - mvOsOutput( "\n" ); - } - else - mvOsOutput( "disable\n" ); - } - } -} - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTdm.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTdm.h deleted file mode 100644 index 0d3140f5e4..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTdm.h +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* -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 __INCmvSysTdmh -#define __INCmvSysTdmh - -#include "ctrlEnv/sys/mvCpuIf.h" -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "ctrlEnv/mvCtrlEnvAddrDec.h" - -typedef struct _mvTdmDecWin -{ - MV_TARGET target; - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ -} MV_TDM_DEC_WIN; - -MV_STATUS mvTdmWinInit(MV_VOID); -MV_STATUS mvTdmWinSet(MV_U32 winNum, MV_TDM_DEC_WIN *pAddrDecWin); -MV_STATUS mvTdmWinGet(MV_U32 winNum, MV_TDM_DEC_WIN *pAddrDecWin); -MV_STATUS mvTdmWinEnable(int winNum, MV_BOOL enable); -MV_VOID mvTdmAddrDecShow(MV_VOID); - - -#define TDM_MBUS_MAX_WIN 4 -#define TDM_WIN_CTRL_REG(win) ((TDM_REG_BASE + 0x4030) + (win<<4)) -#define TDM_WIN_BASE_REG(win) ((TDM_REG_BASE +0x4034) + (win<<4)) - -/* TDM_WIN_CTRL_REG bits */ -#define TDM_WIN_ENABLE_OFFS 0 -#define TDM_WIN_ENABLE_MASK (1<<TDM_WIN_ENABLE_OFFS) -#define TDM_WIN_ENABLE 1 -#define TDM_WIN_TARGET_OFFS 4 -#define TDM_WIN_TARGET_MASK (0xf<<TDM_WIN_TARGET_OFFS) -#define TDM_WIN_ATTRIB_OFFS 8 -#define TDM_WIN_ATTRIB_MASK (0xff<<TDM_WIN_ATTRIB_OFFS) -#define TDM_WIN_SIZE_OFFS 16 -#define TDM_WIN_SIZE_MASK (0xffff<<TDM_WIN_SIZE_OFFS) - -/* TDM_WIN_BASE_REG bits */ -#define TDM_BASE_OFFS 16 -#define TDM_BASE_MASK (0xffff<<TDM_BASE_OFFS) - -#endif /*__INCmvSysTdmh*/ - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTs.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTs.c deleted file mode 100644 index 4415c7c265..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTs.c +++ /dev/null @@ -1,591 +0,0 @@ -/******************************************************************************* -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 "ctrlEnv/sys/mvSysTs.h" - - -typedef struct _mvTsuDecWin -{ - MV_TARGET target; - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -}MV_TSU_DEC_WIN; - - -MV_TARGET tsuAddrDecPrioTap[] = -{ -#if defined(MV_INCLUDE_PEX) - PEX0_MEM, -#endif -#if defined(MV_INCLUDE_PCI) - PCI0_MEM, -#endif -#if defined(MV_INCLUDE_SDRAM_CS0) - SDRAM_CS0, -#endif -#if defined(MV_INCLUDE_SDRAM_CS1) - SDRAM_CS1, -#endif -#if defined(MV_INCLUDE_SDRAM_CS2) - SDRAM_CS2, -#endif -#if defined(MV_INCLUDE_SDRAM_CS3) - SDRAM_CS3, -#endif -#if defined(MV_INCLUDE_DEVICE_CS0) - DEVICE_CS0, -#endif -#if defined(MV_INCLUDE_DEVICE_CS1) - DEVICE_CS1, -#endif -#if defined(MV_INCLUDE_DEVICE_CS2) - DEVICE_CS2, -#endif -#if defined(MV_INCLUDE_DEVICE_CS3) - DEVICE_CS3, -#endif -#if defined(MV_INCLUDE_PEX) - PEX0_IO, -#endif -#if defined(MV_INCLUDE_PCI) - PCI0_IO, -#endif - TBL_TERM -}; - -static MV_STATUS tsuWinOverlapDetect(MV_U32 winNum, MV_ADDR_WIN *pAddrWin); -static MV_STATUS mvTsuWinSet(MV_U32 winNum, MV_TSU_DEC_WIN *pAddrDecWin); -static MV_STATUS mvTsuWinGet(MV_U32 winNum, MV_TSU_DEC_WIN *pAddrDecWin); -MV_STATUS mvTsuWinEnable(MV_U32 winNum,MV_BOOL enable); - -/******************************************************************************* -* mvTsuWinInit -* -* DESCRIPTION: -* Initialize the TSU unit address decode windows. -* -* INPUT: -* None. -* OUTPUT: -* None. -* RETURN: -* MV_OK - on success, -* -*******************************************************************************/ -MV_STATUS mvTsuWinInit(void) -{ - MV_U32 winNum, status, winPrioIndex=0; - MV_TSU_DEC_WIN tsuWin; - MV_CPU_DEC_WIN cpuAddrDecWin; - - /* First disable all address decode windows */ - for(winNum = 0; winNum < TSU_MAX_DECODE_WIN; winNum++) - { - MV_REG_BIT_RESET(MV_TSU_WIN_CTRL_REG(winNum), - TSU_WIN_CTRL_EN_MASK); - } - - /* Go through all windows in user table until table terminator */ - for(winNum = 0; ((tsuAddrDecPrioTap[winPrioIndex] != TBL_TERM) && - (winNum < TSU_MAX_DECODE_WIN));) - { - /* first get attributes from CPU If */ - status = mvCpuIfTargetWinGet(tsuAddrDecPrioTap[winPrioIndex], - &cpuAddrDecWin); - - if(MV_NO_SUCH == status) - { - winPrioIndex++; - continue; - } - if(MV_OK != status) - { - mvOsPrintf("mvTsuWinInit: ERR. mvCpuIfTargetWinGet failed\n"); - return MV_ERROR; - } - - if (cpuAddrDecWin.enable == MV_TRUE) - { - tsuWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; - tsuWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; - tsuWin.addrWin.size = cpuAddrDecWin.addrWin.size; - tsuWin.enable = MV_TRUE; - tsuWin.target = tsuAddrDecPrioTap[winPrioIndex]; - - if(MV_OK != mvTsuWinSet(winNum, &tsuWin)) - { - mvOsPrintf("mvTsuWinInit: ERR. mvTsuWinSet failed winNum=%d\n", - winNum); - return MV_ERROR; - } - winNum++; - } - winPrioIndex ++; - } - - return MV_OK; -} - - -/******************************************************************************* -* mvTsuWinSet -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI_MEM0) -* address window, also known as address decode window. -* After setting this target window, the TSU will be able to access the -* target within the address window. -* -* INPUT: -* winNum - TSU to target address decode window number. -* pAddrDecWin - TSU target window data structure. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR - if address window overlapps with other address decode -* windows. -* MV_BAD_PARAM - if base address is invalid parameter or target is -* unknown. -* -*******************************************************************************/ -MV_STATUS mvTsuWinSet(MV_U32 winNum, MV_TSU_DEC_WIN *pAddrDecWin) -{ - MV_TARGET_ATTRIB targetAttribs; - MV_DEC_REGS decRegs; - - /* Parameter checking */ - if(winNum >= TSU_MAX_DECODE_WIN) - { - mvOsPrintf("mvTsuWinSet: ERR. Invalid win num %d\n",winNum); - return MV_BAD_PARAM; - } - - /* Check if the requested window overlapps with current windows */ - if(MV_TRUE == tsuWinOverlapDetect(winNum, &pAddrDecWin->addrWin)) - { - mvOsPrintf("mvTsuWinSet: ERR. Window %d overlap\n", winNum); - return MV_ERROR; - } - - /* check if address is aligned to the size */ - if(MV_IS_NOT_ALIGN(pAddrDecWin->addrWin.baseLow,pAddrDecWin->addrWin.size)) - { - mvOsPrintf("mvTsuWinSet: Error setting TSU window %d to target " - "%s.\nAddress 0x%08x is unaligned to size 0x%x.\n", - winNum, mvCtrlTargetNameGet(pAddrDecWin->target), - pAddrDecWin->addrWin.baseLow, - pAddrDecWin->addrWin.size); - return MV_ERROR; - } - - decRegs.baseReg = MV_REG_READ(MV_TSU_WIN_BASE_REG(winNum)); - decRegs.sizeReg = MV_REG_READ(MV_TSU_WIN_CTRL_REG(winNum)); - - if(MV_OK != mvCtrlAddrDecToReg(&(pAddrDecWin->addrWin),&decRegs)) - { - mvOsPrintf("mvTsuWinSet: mvCtrlAddrDecToReg Failed\n"); - return MV_ERROR; - } - - mvCtrlAttribGet(pAddrDecWin->target,&targetAttribs); - - /* set attributes */ - decRegs.sizeReg &= ~TSU_WIN_CTRL_ATTR_MASK; - decRegs.sizeReg |= targetAttribs.attrib << TSU_WIN_CTRL_ATTR_OFFS; - /* set target ID */ - decRegs.sizeReg &= ~TSU_WIN_CTRL_TARGET_MASK; - decRegs.sizeReg |= targetAttribs.targetId << TSU_WIN_CTRL_TARGET_OFFS; - - /* for the safe side we disable the window before writing the new */ - /* values */ - mvTsuWinEnable(winNum, MV_FALSE); - MV_REG_WRITE(MV_TSU_WIN_CTRL_REG(winNum),decRegs.sizeReg); - - /* Write to address decode Size Register */ - MV_REG_WRITE(MV_TSU_WIN_BASE_REG(winNum), decRegs.baseReg); - - /* Enable address decode target window */ - if(pAddrDecWin->enable == MV_TRUE) - { - mvTsuWinEnable(winNum,MV_TRUE); - } - - return MV_OK; -} - - -/******************************************************************************* -* mvTsuWinGet -* -* DESCRIPTION: -* Get TSU peripheral target address window. -* -* INPUT: -* winNum - TSU to target address decode window number. -* -* OUTPUT: -* pAddrDecWin - TSU target window data structure. -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvTsuWinGet(MV_U32 winNum, MV_TSU_DEC_WIN *pAddrDecWin) -{ - MV_DEC_REGS decRegs; - MV_TARGET_ATTRIB targetAttrib; - - /* Parameter checking */ - if(winNum >= TSU_MAX_DECODE_WIN) - { - mvOsPrintf("mvTsuWinGet: ERR. Invalid winNum %d\n", winNum); - return MV_NOT_SUPPORTED; - } - - decRegs.baseReg = MV_REG_READ(MV_TSU_WIN_BASE_REG(winNum)); - decRegs.sizeReg = MV_REG_READ(MV_TSU_WIN_CTRL_REG(winNum)); - - if(MV_OK != mvCtrlRegToAddrDec(&decRegs,&(pAddrDecWin->addrWin))) - { - mvOsPrintf("mvTsuWinGet: mvCtrlRegToAddrDec Failed \n"); - return MV_ERROR; - } - - /* attrib and targetId */ - targetAttrib.attrib = - (decRegs.sizeReg & TSU_WIN_CTRL_ATTR_MASK) >> TSU_WIN_CTRL_ATTR_OFFS; - targetAttrib.targetId = - (decRegs.sizeReg & TSU_WIN_CTRL_TARGET_MASK) >> TSU_WIN_CTRL_TARGET_OFFS; - - pAddrDecWin->target = mvCtrlTargetGet(&targetAttrib); - - /* Check if window is enabled */ - if((MV_REG_READ(MV_TSU_WIN_CTRL_REG(winNum)) & TSU_WIN_CTRL_EN_MASK)) - { - pAddrDecWin->enable = MV_TRUE; - } - else - { - pAddrDecWin->enable = MV_FALSE; - } - - return MV_OK; -} - - -/******************************************************************************* -* mvTsuWinEnable -* -* DESCRIPTION: -* This function enable/disable a TSU to target address window. -* According to parameter 'enable' the routine will enable the -* window, thus enabling TSU accesses (before enabling the window it is -* tested for overlapping). Otherwise, the window will be disabled. -* -* INPUT: -* winNum - TSU to target address decode window number. -* enable - Enable / disable parameter. -* -* OUTPUT: -* N/A -* -* RETURN: -* MV_ERROR if decode window number was wrong or enabled window overlapps. -* -*******************************************************************************/ -MV_STATUS mvTsuWinEnable(MV_U32 winNum,MV_BOOL enable) -{ - MV_TSU_DEC_WIN addrDecWin; - - /* Parameter checking */ - if(winNum >= TSU_MAX_DECODE_WIN) - { - mvOsPrintf("mvTsuWinEnable: ERR. Invalid winNum%d\n",winNum); - return MV_ERROR; - } - - if(enable == MV_TRUE) - { - /* First check for overlap with other enabled windows */ - /* Get current window. */ - if(MV_OK != mvTsuWinGet(winNum,&addrDecWin)) - { - mvOsPrintf("mvTsuWinEnable: ERR. targetWinGet fail\n"); - return MV_ERROR; - } - /* Check for overlapping. */ - if(MV_FALSE == tsuWinOverlapDetect(winNum,&(addrDecWin.addrWin))) - { - /* No Overlap. Enable address decode target window */ - MV_REG_BIT_SET(MV_TSU_WIN_CTRL_REG(winNum), - TSU_WIN_CTRL_EN_MASK); - } - else - { - /* Overlap detected */ - mvOsPrintf("mvTsuWinEnable: ERR. Overlap detected\n"); - return MV_ERROR; - } - } - else - { - /* Disable address decode target window */ - MV_REG_BIT_RESET(MV_TSU_WIN_CTRL_REG(winNum), - TSU_WIN_CTRL_EN_MASK); - } - return MV_OK; -} - -/******************************************************************************* -* mvTsuWinTargetGet -* -* DESCRIPTION: -* Get Window number associated with target -* -* INPUT: -* target - Target ID to get the window number for. -* OUTPUT: -* -* RETURN: -* window number or 0xFFFFFFFF on error. -* -*******************************************************************************/ -MV_U32 mvTsuWinTargetGet(MV_TARGET target) -{ - MV_TSU_DEC_WIN decWin; - MV_U32 winNum; - - /* Check parameters */ - if(target >= MAX_TARGETS) - { - mvOsPrintf("mvTsuWinTargetGet: target %d is Illigal\n", target); - return 0xffffffff; - } - - for(winNum = 0; winNum < TSU_MAX_DECODE_WIN; winNum++) - { - if(mvTsuWinGet(winNum,&decWin) != MV_OK) - { - mvOsPrintf("mvTsuWinGet: window returned error\n"); - return 0xffffffff; - } - - if (decWin.enable == MV_TRUE) - { - if(decWin.target == target) - { - return winNum; - } - } - } - return 0xFFFFFFFF; -} - - -/******************************************************************************* -* tsuWinOverlapDetect -* -* DESCRIPTION: -* Detect TSU address windows overlapping -* An unpredicted behaviur is expected in case TSU address decode -* windows overlapps. -* This function detects TSU address decode windows overlapping of a -* specified window. The function does not check the window itself for -* overlapping. The function also skipps disabled address decode windows. -* -* INPUT: -* winNum - address decode window number. -* pAddrDecWin - An address decode window struct. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise, MV_ERROR if reading invalid data -* from registers. -* -*******************************************************************************/ -static MV_STATUS tsuWinOverlapDetect(MV_U32 winNum, MV_ADDR_WIN *pAddrWin) -{ - MV_U32 ctrlReg; - MV_U32 winNumIndex; - MV_TSU_DEC_WIN addrDecWin; - - for(winNumIndex = 0; winNumIndex < TSU_MAX_DECODE_WIN; winNumIndex++) - { - /* Do not check window itself */ - if(winNumIndex == winNum) - { - continue; - } - - /* Do not check disabled windows */ - ctrlReg = MV_REG_READ(MV_TSU_WIN_CTRL_REG(winNumIndex)); - if((ctrlReg & TSU_WIN_CTRL_EN_MASK) == 0) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvTsuWinGet(winNumIndex, &addrDecWin)) - { - mvOsPrintf("tsuWinOverlapDetect: ERR. mvTsuWinGet failed\n"); - return MV_ERROR; - } - - if (MV_TRUE == ctrlWinOverlapTest(pAddrWin, &(addrDecWin.addrWin))) - { - return MV_TRUE; - } - } - return MV_FALSE; -} - - -/******************************************************************************* -* mvTsuAddrDecShow -* -* DESCRIPTION: -* Print the TSU address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -void mvTsuAddrDecShow(void) -{ - MV_TSU_DEC_WIN win; - int i; - - if (MV_FALSE == mvCtrlPwrClckGet(TS_UNIT_ID, 0)) - return; - - mvOsOutput( "\n" ); - mvOsOutput( "TSU:\n"); - mvOsOutput( "----\n" ); - - for(i = 0; i < TSU_MAX_DECODE_WIN; i++) - { - memset(&win, 0, sizeof(TSU_MAX_DECODE_WIN)); - mvOsOutput( "win%d - ", i ); - - if(mvTsuWinGet(i, &win ) == MV_OK ) - { - if(win.enable == MV_TRUE) - { - mvOsOutput("%s base %08x, ", - mvCtrlTargetNameGet(win.target), - win.addrWin.baseLow); - mvOsOutput( "...." ); - mvSizePrint(win.addrWin.size ); - mvOsOutput( "\n" ); - } - else - { - mvOsOutput( "disable\n" ); - } - } - } - return; -} - - -/******************************************************************************* -* mvTsuInit -* -* DESCRIPTION: -* Initialize the TSU unit, and get unit out of reset. -* -* INPUT: -* coreClock - The core clock at which the TSU should operate. -* mode - The mode on configure the unit into (serial/parallel). -* memHandle - Memory handle used for memory allocations. -* OUTPUT: -* None. -* RETURN: -* MV_OK - on success, -* -*******************************************************************************/ -MV_STATUS mvTsuInit(MV_TSU_CORE_CLOCK coreClock, MV_TSU_PORTS_MODE mode, - void *osHandle) -{ - MV_STATUS status; - - status = mvTsuWinInit(); - if(status == MV_OK) - status = mvTsuHalInit(coreClock,mode,osHandle); - - return status; -} diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTs.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTs.h deleted file mode 100644 index 42825893cd..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysTs.h +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* -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 __INCmvSysTsh -#define __INCmvSysTsh - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* includes */ -#include "ts/mvTsu.h" -#include "ctrlEnv/sys/mvCpuIf.h" -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "ctrlEnv/mvCtrlEnvAddrDec.h" - -#define TSU_MAX_DECODE_WIN 4 - - -/*******************************************/ -/* TSU Windows Registers */ -/*******************************************/ -#define MV_TSU_WIN_CTRL_REG(win) (TSU_GLOBAL_REG_BASE +0x30 + 0x10 * win) -#define MV_TSU_WIN_BASE_REG(win) (TSU_GLOBAL_REG_BASE +0x34 + 0x10 * win) - -/* TSU windows control register. */ -#define TSU_WIN_CTRL_EN_MASK (0x1 << 0) -#define TSU_WIN_CTRL_TARGET_OFFS 4 -#define TSU_WIN_CTRL_TARGET_MASK (0xF << TSU_WIN_CTRL_TARGET_OFFS) -#define TSU_WIN_CTRL_ATTR_OFFS 8 -#define TSU_WIN_CTRL_ATTR_MASK (0xFF << TSU_WIN_CTRL_ATTR_OFFS) -#define TSU_WIN_CTRL_SIZE_OFFS 16 -#define TSU_WIN_CTRL_SIZE_MASK (0xFFFF << TSU_WIN_CTRL_SIZE_OFFS) - -/* TSU windows base register. */ -#define TSU_WIN_BASE_OFFS 16 -#define TSU_WIN_BASE_MASK (0xFFFF << TSU_WIN_BASE_OFFS) - -MV_STATUS mvTsuWinInit(void); - -void mvTsuAddrDecShow(void); -MV_STATUS mvTsuInit(MV_TSU_CORE_CLOCK coreClock, MV_TSU_PORTS_MODE mode, - void *osHandle); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __INCmvTsh */ diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysUsb.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysUsb.c deleted file mode 100644 index 195b5e13e3..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysUsb.c +++ /dev/null @@ -1,497 +0,0 @@ -/******************************************************************************* -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 "ctrlEnv/sys/mvSysUsb.h" - -MV_TARGET usbAddrDecPrioTab[] = -{ -#if defined(MV_INCLUDE_SDRAM_CS0) - SDRAM_CS0, -#endif -#if defined(MV_INCLUDE_SDRAM_CS1) - SDRAM_CS1, -#endif -#if defined(MV_INCLUDE_SDRAM_CS2) - SDRAM_CS2, -#endif -#if defined(MV_INCLUDE_SDRAM_CS3) - SDRAM_CS3, -#endif -#if defined(MV_INCLUDE_CESA) && defined(USB_UNDERRUN_WA) - CRYPT_ENG, -#endif -#if defined(MV_INCLUDE_PEX) - PEX0_MEM, -#endif - TBL_TERM -}; - - - -MV_STATUS mvUsbInit(int dev, MV_BOOL isHost) -{ - MV_STATUS status; - - status = mvUsbWinInit(dev); - if(status != MV_OK) - return status; - - return mvUsbHalInit(dev, isHost); -} - - -/******************************************************************************* -* usbWinOverlapDetect - Detect USB address windows overlapping -* -* DESCRIPTION: -* An unpredicted behaviur is expected in case USB address decode -* windows overlapps. -* This function detects USB address decode windows overlapping of a -* specified window. The function does not check the window itself for -* overlapping. The function also skipps disabled address decode windows. -* -* INPUT: -* winNum - address decode window number. -* pAddrDecWin - An address decode window struct. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise, MV_ERROR if reading invalid data -* from registers. -* -*******************************************************************************/ -static MV_STATUS usbWinOverlapDetect(int dev, MV_U32 winNum, - MV_ADDR_WIN *pAddrWin) -{ - MV_U32 winNumIndex; - MV_DEC_WIN addrDecWin; - - for(winNumIndex=0; winNumIndex<MV_USB_MAX_ADDR_DECODE_WIN; winNumIndex++) - { - /* Do not check window itself */ - if (winNumIndex == winNum) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvUsbWinGet(dev, winNumIndex, &addrDecWin)) - { - mvOsPrintf("%s: ERR. TargetWinGet failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* Do not check disabled windows */ - if(addrDecWin.enable == MV_FALSE) - { - continue; - } - - if (MV_TRUE == ctrlWinOverlapTest(pAddrWin, &(addrDecWin.addrWin))) - { - return MV_TRUE; - } - } - return MV_FALSE; -} - -/******************************************************************************* -* mvUsbWinSet - Set USB target address window -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI_MEM0) -* address window, also known as address decode window. -* After setting this target window, the USB will be able to access the -* target within the address window. -* -* INPUT: -* winNum - USB target address decode window number. -* pAddrDecWin - USB target window data structure. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_ERROR if address window overlapps with other address decode windows. -* MV_BAD_PARAM if base address is invalid parameter or target is -* unknown. -* -*******************************************************************************/ -MV_STATUS mvUsbWinSet(int dev, MV_U32 winNum, MV_DEC_WIN *pDecWin) -{ - MV_DEC_WIN_PARAMS winParams; - MV_U32 sizeReg, baseReg; - - /* Parameter checking */ - if (winNum >= MV_USB_MAX_ADDR_DECODE_WIN) - { - mvOsPrintf("%s: ERR. Invalid win num %d\n",__FUNCTION__, winNum); - return MV_BAD_PARAM; - } - - /* Check if the requested window overlapps with current windows */ - if (MV_TRUE == usbWinOverlapDetect(dev, winNum, &pDecWin->addrWin)) - { - mvOsPrintf("%s: ERR. Window %d overlap\n", __FUNCTION__, winNum); - return MV_ERROR; - } - - /* check if address is aligned to the size */ - if(MV_IS_NOT_ALIGN(pDecWin->addrWin.baseLow, pDecWin->addrWin.size)) - { - mvOsPrintf("mvUsbWinSet:Error setting USB window %d to "\ - "target %s.\nAddress 0x%08x is unaligned to size 0x%x.\n", - winNum, - mvCtrlTargetNameGet(pDecWin->target), - pDecWin->addrWin.baseLow, - pDecWin->addrWin.size); - return MV_ERROR; - } - - if(MV_OK != mvCtrlAddrDecToParams(pDecWin, &winParams)) - { - mvOsPrintf("%s: mvCtrlAddrDecToParams Failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* set Size, Attributes and TargetID */ - sizeReg = (((winParams.targetId << MV_USB_WIN_TARGET_OFFSET) & MV_USB_WIN_TARGET_MASK) | - ((winParams.attrib << MV_USB_WIN_ATTR_OFFSET) & MV_USB_WIN_ATTR_MASK) | - ((winParams.size << MV_USB_WIN_SIZE_OFFSET) & MV_USB_WIN_SIZE_MASK)); - -#if defined(MV645xx) || defined(MV646xx) - /* If window is DRAM with HW cache coherency, make sure bit2 is set */ - sizeReg &= ~MV_USB_WIN_BURST_WR_LIMIT_MASK; - - if((MV_TARGET_IS_DRAM(pDecWin->target)) && - (pDecWin->addrWinAttr.cachePolicy != NO_COHERENCY)) - { - sizeReg |= MV_USB_WIN_BURST_WR_32BIT_LIMIT; - } - else - { - sizeReg |= MV_USB_WIN_BURST_WR_NO_LIMIT; - } -#endif /* MV645xx || MV646xx */ - - if (pDecWin->enable == MV_TRUE) - { - sizeReg |= MV_USB_WIN_ENABLE_MASK; - } - else - { - sizeReg &= ~MV_USB_WIN_ENABLE_MASK; - } - - /* Update Base value */ - baseReg = (winParams.baseAddr & MV_USB_WIN_BASE_MASK); - - MV_REG_WRITE( MV_USB_WIN_CTRL_REG(dev, winNum), sizeReg); - MV_REG_WRITE( MV_USB_WIN_BASE_REG(dev, winNum), baseReg); - - return MV_OK; -} - -/******************************************************************************* -* mvUsbWinGet - Get USB peripheral target address window. -* -* DESCRIPTION: -* Get USB peripheral target address window. -* -* INPUT: -* winNum - USB target address decode window number. -* -* OUTPUT: -* pDecWin - USB target window data structure. -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvUsbWinGet(int dev, MV_U32 winNum, MV_DEC_WIN *pDecWin) -{ - MV_DEC_WIN_PARAMS winParam; - MV_U32 sizeReg, baseReg; - - /* Parameter checking */ - if (winNum >= MV_USB_MAX_ADDR_DECODE_WIN) - { - mvOsPrintf("%s (dev=%d): ERR. Invalid winNum %d\n", - __FUNCTION__, dev, winNum); - return MV_NOT_SUPPORTED; - } - - baseReg = MV_REG_READ( MV_USB_WIN_BASE_REG(dev, winNum) ); - sizeReg = MV_REG_READ( MV_USB_WIN_CTRL_REG(dev, winNum) ); - - /* Check if window is enabled */ - if(sizeReg & MV_USB_WIN_ENABLE_MASK) - { - pDecWin->enable = MV_TRUE; - - /* Extract window parameters from registers */ - winParam.targetId = (sizeReg & MV_USB_WIN_TARGET_MASK) >> MV_USB_WIN_TARGET_OFFSET; - winParam.attrib = (sizeReg & MV_USB_WIN_ATTR_MASK) >> MV_USB_WIN_ATTR_OFFSET; - winParam.size = (sizeReg & MV_USB_WIN_SIZE_MASK) >> MV_USB_WIN_SIZE_OFFSET; - winParam.baseAddr = (baseReg & MV_USB_WIN_BASE_MASK); - - /* Translate the decode window parameters to address decode struct */ - if (MV_OK != mvCtrlParamsToAddrDec(&winParam, pDecWin)) - { - mvOsPrintf("Failed to translate register parameters to USB address" \ - " decode window structure\n"); - return MV_ERROR; - } - } - else - { - pDecWin->enable = MV_FALSE; - } - return MV_OK; -} - -/******************************************************************************* -* mvUsbWinInit - -* -* INPUT: -* -* OUTPUT: -* -* RETURN: -* MV_ERROR if register parameters are invalid. -* -*******************************************************************************/ -MV_STATUS mvUsbWinInit(int dev) -{ - MV_STATUS status; - MV_DEC_WIN usbWin; - MV_CPU_DEC_WIN cpuAddrDecWin; - int winNum; - MV_U32 winPrioIndex = 0; - - /* First disable all address decode windows */ - for(winNum = 0; winNum < MV_USB_MAX_ADDR_DECODE_WIN; winNum++) - { - MV_REG_BIT_RESET(MV_USB_WIN_CTRL_REG(dev, winNum), MV_USB_WIN_ENABLE_MASK); - } - - /* Go through all windows in user table until table terminator */ - winNum = 0; - while( (usbAddrDecPrioTab[winPrioIndex] != TBL_TERM) && - (winNum < MV_USB_MAX_ADDR_DECODE_WIN) ) - { - /* first get attributes from CPU If */ - status = mvCpuIfTargetWinGet(usbAddrDecPrioTab[winPrioIndex], - &cpuAddrDecWin); - - if(MV_NO_SUCH == status) - { - winPrioIndex++; - continue; - } - if (MV_OK != status) - { - mvOsPrintf("%s: ERR. mvCpuIfTargetWinGet failed\n", __FUNCTION__); - return MV_ERROR; - } - - if (cpuAddrDecWin.enable == MV_TRUE) - { - usbWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; - usbWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; - usbWin.addrWin.size = cpuAddrDecWin.addrWin.size; - usbWin.enable = MV_TRUE; - usbWin.target = usbAddrDecPrioTab[winPrioIndex]; - -#if defined(MV645xx) || defined(MV646xx) - /* Get the default attributes for that target window */ - mvCtrlDefAttribGet(usbWin.target, &usbWin.addrWinAttr); -#endif /* MV645xx || MV646xx */ - - if(MV_OK != mvUsbWinSet(dev, winNum, &usbWin)) - { - return MV_ERROR; - } - winNum++; - } - winPrioIndex++; - } - return MV_OK; -} - -/******************************************************************************* -* mvUsbAddrDecShow - Print the USB address decode map. -* -* DESCRIPTION: -* This function print the USB address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_VOID mvUsbAddrDecShow(MV_VOID) -{ - MV_DEC_WIN addrDecWin; - int i, winNum; - - mvOsOutput( "\n" ); - mvOsOutput( "USB:\n" ); - mvOsOutput( "----\n" ); - - for(i=0; i<mvCtrlUsbMaxGet(); i++) - { - mvOsOutput( "Device %d:\n", i); - - for(winNum = 0; winNum < MV_USB_MAX_ADDR_DECODE_WIN; winNum++) - { - memset(&addrDecWin, 0, sizeof(MV_DEC_WIN) ); - - mvOsOutput( "win%d - ", winNum ); - - if( mvUsbWinGet(i, winNum, &addrDecWin ) == MV_OK ) - { - if( addrDecWin.enable ) - { - mvOsOutput( "%s base %08x, ", - mvCtrlTargetNameGet(addrDecWin.target), addrDecWin.addrWin.baseLow ); - - mvSizePrint( addrDecWin.addrWin.size ); - -#if defined(MV645xx) || defined(MV646xx) - switch( addrDecWin.addrWinAttr.swapType) - { - case MV_BYTE_SWAP: - mvOsOutput( "BYTE_SWAP, " ); - break; - case MV_NO_SWAP: - mvOsOutput( "NO_SWAP , " ); - break; - case MV_BYTE_WORD_SWAP: - mvOsOutput( "BYTE_WORD_SWAP, " ); - break; - case MV_WORD_SWAP: - mvOsOutput( "WORD_SWAP, " ); - break; - default: - mvOsOutput( "SWAP N/A , " ); - } - - switch( addrDecWin.addrWinAttr.cachePolicy ) - { - case NO_COHERENCY: - mvOsOutput( "NO_COHERENCY , " ); - break; - case WT_COHERENCY: - mvOsOutput( "WT_COHERENCY , " ); - break; - case WB_COHERENCY: - mvOsOutput( "WB_COHERENCY , " ); - break; - default: - mvOsOutput( "COHERENCY N/A, " ); - } - - switch( addrDecWin.addrWinAttr.pcixNoSnoop ) - { - case 0: - mvOsOutput( "PCI-X NS inactive, " ); - break; - case 1: - mvOsOutput( "PCI-X NS active , " ); - break; - default: - mvOsOutput( "PCI-X NS N/A , " ); - } - - switch( addrDecWin.addrWinAttr.p2pReq64 ) - { - case 0: - mvOsOutput( "REQ64 force" ); - break; - case 1: - mvOsOutput( "REQ64 detect" ); - break; - default: - mvOsOutput( "REQ64 N/A" ); - } -#endif /* MV645xx || MV646xx */ - mvOsOutput( "\n" ); - } - else - mvOsOutput( "disable\n" ); - } - } - } -} - - diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysUsb.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysUsb.h deleted file mode 100644 index 07f98de9c9..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysUsb.h +++ /dev/null @@ -1,125 +0,0 @@ -/******************************************************************************* -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 __INCmvSysUsbh -#define __INCmvSysUsbh - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* includes */ -#include "usb/mvUsb.h" -#include "ctrlEnv/sys/mvCpuIf.h" -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "ctrlEnv/mvCtrlEnvAddrDec.h" - -#define MV_USB_MAX_ADDR_DECODE_WIN 4 - -/*******************************************/ -/* USB Bridge Registers */ -/*******************************************/ -#define MV_USB_BRIDGE_CTRL_REG(dev) (USB_REG_BASE(dev) + 0x300) - -#define MV_USB_WIN_CTRL_REG(dev, win) (USB_REG_BASE(dev) + 0x320 + ((win)<<4)) -#define MV_USB_WIN_BASE_REG(dev, win) (USB_REG_BASE(dev) + 0x324 + ((win)<<4)) - -/* BITs in Windows 0-3 Control and Base Registers */ -#define MV_USB_WIN_ENABLE_BIT 0 -#define MV_USB_WIN_ENABLE_MASK (1 << MV_USB_WIN_ENABLE_BIT) - -#define MV_USB_WIN_BURST_WR_LIMIT_BIT 1 -#define MV_USB_WIN_BURST_WR_LIMIT_MASK (1 << MV_USB_WIN_BURST_WR_LIMIT_BIT) -#define MV_USB_WIN_BURST_WR_NO_LIMIT (0 << MV_USB_WIN_BURST_WR_LIMIT_BIT) -#define MV_USB_WIN_BURST_WR_32BIT_LIMIT (1 << MV_USB_WIN_BURST_WR_LIMIT_BIT) - -#define MV_USB_WIN_TARGET_OFFSET 4 -#define MV_USB_WIN_TARGET_MASK (0xF << MV_USB_WIN_TARGET_OFFSET) - -#define MV_USB_WIN_ATTR_OFFSET 8 -#define MV_USB_WIN_ATTR_MASK (0xFF << MV_USB_WIN_ATTR_OFFSET) - -#define MV_USB_WIN_SIZE_OFFSET 16 -#define MV_USB_WIN_SIZE_MASK (0xFFFF << MV_USB_WIN_SIZE_OFFSET) - -#define MV_USB_WIN_BASE_OFFSET 16 -#define MV_USB_WIN_BASE_MASK (0xFFFF << MV_USB_WIN_BASE_OFFSET) - - -#define MV_USB_BRIDGE_IPG_REG(dev) (USB_REG_BASE(dev) + 0x360) - - -MV_STATUS mvUsbInit(int dev, MV_BOOL isHost); - -MV_STATUS mvUsbWinInit(int dev); -MV_STATUS mvUsbWinSet(int dev, MV_U32 winNum, MV_DEC_WIN *pAddrWin); -MV_STATUS mvUsbWinGet(int dev, MV_U32 winNum, MV_DEC_WIN *pAddrWin); - -void mvUsbAddrDecShow(void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __INCmvUsbh */ diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysXor.c b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysXor.c deleted file mode 100644 index f9d0ab37d4..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysXor.c +++ /dev/null @@ -1,662 +0,0 @@ -/******************************************************************************* -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 "xor/mvXor.h" -#include "mvSysXor.h" - -/* defines */ -#ifdef MV_DEBUG - #define DB(x) x -#else - #define DB(x) -#endif - - -static MV_STATUS xorWinOverlapDetect(MV_U32 unit,MV_U32 winNum, MV_ADDR_WIN *pAddrWin); - -MV_TARGET xorAddrDecPrioTap[] = -{ -#if defined(MV_INCLUDE_DEVICE_CS0) - DEVICE_CS0, -#endif -#if defined(MV_INCLUDE_PEX) - PEX0_MEM, -#endif -#if defined(MV_INCLUDE_SDRAM_CS0) - SDRAM_CS0, -#endif -#if defined(MV_INCLUDE_SDRAM_CS1) - SDRAM_CS1, -#endif -#if defined(MV_INCLUDE_SDRAM_CS2) - SDRAM_CS2, -#endif -#if defined(MV_INCLUDE_SDRAM_CS3) - SDRAM_CS3, -#endif -#if defined(MV_INCLUDE_DEVICE_CS1) - DEVICE_CS1, -#endif -#if defined(MV_INCLUDE_CESA) - CRYPT_ENG, -#endif - TBL_TERM -}; -static MV_STATUS mvXorInitWinsUnit (MV_U32 unit) -{ - MV_U32 winNum; - MV_XOR_DEC_WIN addrDecWin; - MV_CPU_DEC_WIN cpuAddrDecWin; - MV_U32 status; - MV_U32 winPrioIndex=0; - - /* Initiate XOR address decode */ - - /* First disable all address decode windows */ - for(winNum = 0; winNum < XOR_MAX_ADDR_DEC_WIN; winNum++) - { - mvXorTargetWinEnable(unit,winNum, MV_FALSE); - } - - /* Go through all windows in user table until table terminator */ - for (winNum = 0; ((xorAddrDecPrioTap[winPrioIndex] != TBL_TERM) && - (winNum < XOR_MAX_ADDR_DEC_WIN));) - { - /* first get attributes from CPU If */ - status = mvCpuIfTargetWinGet(xorAddrDecPrioTap[winPrioIndex], - &cpuAddrDecWin); - - if(MV_NO_SUCH == status) - { - winPrioIndex++; - continue; - } - if (MV_OK != status) - { - mvOsPrintf("%s: ERR. mvCpuIfTargetWinGet failed\n", __FUNCTION__); - return MV_ERROR; - } - - - if (cpuAddrDecWin.enable == MV_TRUE) - { - - addrDecWin.target = xorAddrDecPrioTap[winPrioIndex]; - addrDecWin.addrWin.baseLow = cpuAddrDecWin.addrWin.baseLow; - addrDecWin.addrWin.baseHigh = cpuAddrDecWin.addrWin.baseHigh; - addrDecWin.addrWin.size = cpuAddrDecWin.addrWin.size; - addrDecWin.enable = MV_TRUE; - - if (MV_OK != mvXorTargetWinSet(unit,winNum, &addrDecWin)) - { - DB(mvOsPrintf("mvXorInit: ERR. mvDmaTargetWinSet failed\n")); - return MV_ERROR; - } - winNum++; - } - winPrioIndex++; - - } - - return MV_OK; -} - - -/******************************************************************************* -* mvXorInit - Initialize XOR engine -* -* DESCRIPTION: -* This function initialize XOR unit. It set the default address decode -* windows of the unit. -* Note that if the address window is disabled in xorAddrDecMap, the -* window parameters will be set but the window will remain disabled. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM if parameters to function invalid, MV_OK otherwise. -*******************************************************************************/ -MV_STATUS mvXorInit (MV_VOID) -{ - MV_U32 i; - - /* Initiate XOR address decode */ - for(i = 0; i < MV_XOR_MAX_UNIT; i++) - mvXorInitWinsUnit(i); - - mvXorHalInit(MV_XOR_MAX_CHAN); - - return MV_OK; -} - -/******************************************************************************* -* mvXorTargetWinSet - Set XOR target address window -* -* DESCRIPTION: -* This function sets a peripheral target (e.g. SDRAM bank0, PCI_MEM0) -* address window. After setting this target window, the XOR will be -* able to access the target within the address window. -* -* INPUT: -* winNum - One of the possible XOR memory decode windows. -* target - Peripheral target enumerator. -* base - Window base address. -* size - Window size. -* enable - Window enable/disable. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM if parameters to function invalid, MV_OK otherwise. -* -*******************************************************************************/ -MV_STATUS mvXorTargetWinSet(MV_U32 unit, MV_U32 winNum, MV_XOR_DEC_WIN *pAddrDecWin) -{ - MV_DEC_REGS xorDecRegs; - MV_TARGET_ATTRIB targetAttribs; - MV_U32 chan; - - /* Parameter checking */ - if (winNum >= XOR_MAX_ADDR_DEC_WIN) - { - DB(mvOsPrintf("%s: ERR. Invalid win num %d\n",__FUNCTION__, winNum)); - return MV_BAD_PARAM; - } - if (pAddrDecWin == NULL) - { - DB(mvOsPrintf("%s: ERR. pAddrDecWin is NULL pointer\n", __FUNCTION__ )); - return MV_BAD_PTR; - } - /* Check if the requested window overlaps with current windows */ - if (MV_TRUE == xorWinOverlapDetect(unit, winNum, &pAddrDecWin->addrWin)) - { - DB(mvOsPrintf("%s: ERR. Window %d overlap\n",__FUNCTION__,winNum)); - return MV_ERROR; - } - - xorDecRegs.baseReg = MV_REG_READ(XOR_BASE_ADDR_REG(unit,winNum)); - xorDecRegs.sizeReg = MV_REG_READ(XOR_SIZE_MASK_REG(unit,winNum)); - - /* Get Base Address and size registers values */ - if(MV_OK != mvCtrlAddrDecToReg(&pAddrDecWin->addrWin, &xorDecRegs)) - { - DB(mvOsPrintf("%s: ERR. Invalid addr dec window\n",__FUNCTION__)); - return MV_BAD_PARAM; - } - - - mvCtrlAttribGet(pAddrDecWin->target,&targetAttribs); - - /* set attributes */ - xorDecRegs.baseReg &= ~XEBARX_ATTR_MASK; - xorDecRegs.baseReg |= targetAttribs.attrib << XEBARX_ATTR_OFFS; - /* set target ID */ - xorDecRegs.baseReg &= ~XEBARX_TARGET_MASK; - xorDecRegs.baseReg |= targetAttribs.targetId << XEBARX_TARGET_OFFS; - - - /* Write to address decode Base Address Register */ - MV_REG_WRITE(XOR_BASE_ADDR_REG(unit,winNum), xorDecRegs.baseReg); - - /* Write to Size Register */ - MV_REG_WRITE(XOR_SIZE_MASK_REG(unit,winNum), xorDecRegs.sizeReg); - - for (chan = 0; chan < MV_XOR_MAX_CHAN_PER_UNIT; chan++) - { - if (pAddrDecWin->enable) - { - MV_REG_BIT_SET(XOR_WINDOW_CTRL_REG(unit,chan), - XEXWCR_WIN_EN_MASK(winNum)); - } - else - { - MV_REG_BIT_RESET(XOR_WINDOW_CTRL_REG(unit,chan), - XEXWCR_WIN_EN_MASK(winNum)); - } - } - return MV_OK; -} - -/******************************************************************************* -* mvXorTargetWinGet - Get xor peripheral target address window. -* -* DESCRIPTION: -* Get xor peripheral target address window. -* -* INPUT: -* winNum - One of the possible XOR memory decode windows. -* -* OUTPUT: -* base - Window base address. -* size - Window size. -* enable - window enable/disable. -* -* RETURN: -* MV_BAD_PARAM if parameters to function invalid, MV_OK otherwise. -* -*******************************************************************************/ -MV_STATUS mvXorTargetWinGet(MV_U32 unit,MV_U32 winNum, MV_XOR_DEC_WIN *pAddrDecWin) -{ - MV_DEC_REGS xorDecRegs; - MV_TARGET_ATTRIB targetAttrib; - MV_U32 chan=0,chanWinEn; - - /* Parameter checking */ - if (winNum >= XOR_MAX_ADDR_DEC_WIN) - { - DB(mvOsPrintf("%s: ERR. Invalid win num %d\n",__FUNCTION__ , winNum)); - return MV_ERROR; - } - - if (NULL == pAddrDecWin) - { - DB(mvOsPrintf("%s: ERR. pAddrDecWin is NULL pointer\n", __FUNCTION__ )); - return MV_BAD_PTR; - } - - chanWinEn = MV_REG_READ(XOR_WINDOW_CTRL_REG(unit,0)) & XEXWCR_WIN_EN_MASK(winNum); - - for (chan = 0; chan < MV_XOR_MAX_CHAN_PER_UNIT; chan++) /* we should scan here all channels per unit */ - { - /* Check if enable bit is equal for all channels */ - if ((MV_REG_READ(XOR_WINDOW_CTRL_REG(unit,chan)) & - XEXWCR_WIN_EN_MASK(winNum)) != chanWinEn) - { - mvOsPrintf("%s: ERR. Window enable field must be equal in " - "all channels(chan=%d)\n",__FUNCTION__, chan); - return MV_ERROR; - } - } - - - - xorDecRegs.baseReg = MV_REG_READ(XOR_BASE_ADDR_REG(unit,winNum)); - xorDecRegs.sizeReg = MV_REG_READ(XOR_SIZE_MASK_REG(unit,winNum)); - - if (MV_OK != mvCtrlRegToAddrDec(&xorDecRegs, &pAddrDecWin->addrWin)) - { - mvOsPrintf("%s: ERR. mvCtrlRegToAddrDec failed\n", __FUNCTION__); - return MV_ERROR; - } - - /* attrib and targetId */ - targetAttrib.attrib = - (xorDecRegs.baseReg & XEBARX_ATTR_MASK) >> XEBARX_ATTR_OFFS; - targetAttrib.targetId = - (xorDecRegs.baseReg & XEBARX_TARGET_MASK) >> XEBARX_TARGET_OFFS; - - - pAddrDecWin->target = mvCtrlTargetGet(&targetAttrib); - - if(chanWinEn) - { - pAddrDecWin->enable = MV_TRUE; - } - else pAddrDecWin->enable = MV_FALSE; - - return MV_OK; -} - -/******************************************************************************* -* mvXorTargetWinEnable - Enable/disable a Xor address decode window -* -* DESCRIPTION: -* This function enable/disable a XOR address decode window. -* if parameter 'enable' == MV_TRUE the routine will enable the -* window, thus enabling XOR accesses (before enabling the window it is -* tested for overlapping). Otherwise, the window will be disabled. -* -* INPUT: -* winNum - Decode window number. -* enable - Enable/disable parameter. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM if parameters to function invalid, MV_OK otherwise. -* -*******************************************************************************/ -MV_STATUS mvXorTargetWinEnable(MV_U32 unit,MV_U32 winNum, MV_BOOL enable) -{ - MV_XOR_DEC_WIN addrDecWin; - MV_U32 chan; - - /* Parameter checking */ - if (winNum >= XOR_MAX_ADDR_DEC_WIN) - { - DB(mvOsPrintf("%s: ERR. Invalid winNum%d\n", __FUNCTION__, winNum)); - return MV_ERROR; - } - - if (enable == MV_TRUE) - { - /* Get current window */ - if (MV_OK != mvXorTargetWinGet(unit,winNum, &addrDecWin)) - { - DB(mvOsPrintf("%s: ERR. targetWinGet fail\n", __FUNCTION__)); - return MV_ERROR; - } - - /* Check for overlapping */ - if (MV_TRUE == xorWinOverlapDetect(unit,winNum, &(addrDecWin.addrWin))) - { - /* Overlap detected */ - DB(mvOsPrintf("%s: ERR. Overlap detected\n", __FUNCTION__)); - return MV_ERROR; - } - - /* No Overlap. Enable address decode target window */ - for (chan = 0; chan < MV_XOR_MAX_CHAN_PER_UNIT; chan++) - { - MV_REG_BIT_SET(XOR_WINDOW_CTRL_REG(unit,chan), - XEXWCR_WIN_EN_MASK(winNum)); - } - - } - else - { - /* Disable address decode target window */ - - for (chan = 0; chan < MV_XOR_MAX_CHAN_PER_UNIT; chan++) - { - MV_REG_BIT_RESET(XOR_WINDOW_CTRL_REG(unit,chan), - XEXWCR_WIN_EN_MASK(winNum)); - } - - } - - return MV_OK; -} - -/******************************************************************************* -* mvXorSetProtWinSet - Configure access attributes of a XOR engine -* to one of the XOR memory windows. -* -* DESCRIPTION: -* Each engine can be configured with access attributes for each of the -* memory spaces. This function sets access attributes -* to a given window for the given engine -* -* INPUTS: -* chan - One of the possible engines. -* winNum - One of the possible XOR memory spaces. -* access - Protection access rights. -* write - Write rights. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM if parameters to function invalid, MV_OK otherwise. -* -*******************************************************************************/ -MV_STATUS mvXorProtWinSet (MV_U32 unit,MV_U32 chan, MV_U32 winNum, MV_BOOL access, - MV_BOOL write) -{ - MV_U32 temp; - - /* Parameter checking */ - if (chan >= MV_XOR_MAX_CHAN_PER_UNIT) - { - DB(mvOsPrintf("%s: ERR. Invalid chan num %d\n", __FUNCTION__ , chan)); - return MV_BAD_PARAM; - } - if (winNum >= XOR_MAX_ADDR_DEC_WIN) - { - DB(mvOsPrintf("%s: ERR. Invalid win num %d\n", __FUNCTION__, winNum)); - return MV_BAD_PARAM; - } - - temp = MV_REG_READ(XOR_WINDOW_CTRL_REG(unit,chan)) & - (~XEXWCR_WIN_ACC_MASK(winNum)); - - /* if access is disable */ - if (!access) - { - /* disable access */ - temp |= XEXWCR_WIN_ACC_NO_ACC(winNum); - } - /* if access is enable */ - else - { - /* if write is enable */ - if (write) - { - /* enable write */ - temp |= XEXWCR_WIN_ACC_RW(winNum); - } - /* if write is disable */ - else - { - /* disable write */ - temp |= XEXWCR_WIN_ACC_RO(winNum); - } - } - MV_REG_WRITE(XOR_WINDOW_CTRL_REG(unit,chan),temp); - return MV_OK; -} - -/******************************************************************************* -* mvXorPciRemap - Set XOR remap register for PCI address windows. -* -* DESCRIPTION: -* only Windows 0-3 can be remapped. -* -* INPUT: -* winNum - window number -* pAddrDecWin - pointer to address space window structure -* OUTPUT: -* None. -* -* RETURN: -* MV_BAD_PARAM if parameters to function invalid, MV_OK otherwise. -* -*******************************************************************************/ -MV_STATUS mvXorPciRemap(MV_U32 unit,MV_U32 winNum, MV_U32 addrHigh) -{ - /* Parameter checking */ - if (winNum >= XOR_MAX_REMAP_WIN) - { - DB(mvOsPrintf("%s: ERR. Invalid win num %d\n", __FUNCTION__, winNum)); - return MV_BAD_PARAM; - } - - MV_REG_WRITE(XOR_HIGH_ADDR_REMAP_REG(unit,winNum), addrHigh); - - return MV_OK; -} - -/******************************************************************************* -* xorWinOverlapDetect - Detect XOR address windows overlaping -* -* DESCRIPTION: -* An unpredicted behaviour is expected in case XOR address decode -* windows overlaps. -* This function detects XOR address decode windows overlaping of a -* specified window. The function does not check the window itself for -* overlaping. The function also skipps disabled address decode windows. -* -* INPUT: -* winNum - address decode window number. -* pAddrDecWin - An address decode window struct. -* -* OUTPUT: -* None. -* -* RETURN: -* MV_TRUE if the given address window overlap current address -* decode map, MV_FALSE otherwise, MV_ERROR if reading invalid data -* from registers. -* -*******************************************************************************/ -static MV_STATUS xorWinOverlapDetect(MV_U32 unit,MV_U32 winNum, MV_ADDR_WIN *pAddrWin) -{ - MV_U32 baseAddrEnableReg; - MV_U32 winNumIndex,chan; - MV_XOR_DEC_WIN addrDecWin; - - if (pAddrWin == NULL) - { - DB(mvOsPrintf("%s: ERR. pAddrWin is NULL pointer\n", __FUNCTION__ )); - return MV_BAD_PTR; - } - - for (chan = 0; chan < MV_XOR_MAX_CHAN_PER_UNIT; chan++) - { - /* Read base address enable register. Do not check disabled windows */ - baseAddrEnableReg = MV_REG_READ(XOR_WINDOW_CTRL_REG(unit,chan)); - - for (winNumIndex = 0; winNumIndex < XOR_MAX_ADDR_DEC_WIN; winNumIndex++) - { - /* Do not check window itself */ - if (winNumIndex == winNum) - { - continue; - } - - /* Do not check disabled windows */ - if ((baseAddrEnableReg & XEXWCR_WIN_EN_MASK(winNumIndex)) == 0) - { - continue; - } - - /* Get window parameters */ - if (MV_OK != mvXorTargetWinGet(unit,winNumIndex, &addrDecWin)) - { - DB(mvOsPrintf("%s: ERR. TargetWinGet failed\n", __FUNCTION__ )); - return MV_ERROR; - } - - if (MV_TRUE == ctrlWinOverlapTest(pAddrWin, &(addrDecWin.addrWin))) - { - return MV_TRUE; - } - } - } - - return MV_FALSE; -} - -static MV_VOID mvXorAddrDecShowUnit(MV_U32 unit) -{ - MV_XOR_DEC_WIN win; - int i; - - mvOsOutput( "\n" ); - mvOsOutput( "XOR %d:\n", unit ); - mvOsOutput( "----\n" ); - - for( i = 0; i < XOR_MAX_ADDR_DEC_WIN; i++ ) - { - memset( &win, 0, sizeof(MV_XOR_DEC_WIN) ); - - mvOsOutput( "win%d - ", i ); - - if( mvXorTargetWinGet(unit, i, &win ) == MV_OK ) - { - if( win.enable ) - { - mvOsOutput( "%s base %x, ", - mvCtrlTargetNameGet(win.target), win.addrWin.baseLow ); - - mvSizePrint( win.addrWin.size ); - - mvOsOutput( "\n" ); - } - else - mvOsOutput( "disable\n" ); - } - } -} - -/******************************************************************************* -* mvXorAddrDecShow - Print the XOR address decode map. -* -* DESCRIPTION: -* This function print the XOR address decode map. -* -* INPUT: -* None. -* -* OUTPUT: -* None. -* -* RETURN: -* None. -* -*******************************************************************************/ -MV_VOID mvXorAddrDecShow(MV_VOID) -{ - int i; - - for( i = 0; i < MV_XOR_MAX_UNIT; i++ ) - mvXorAddrDecShowUnit(i); - -} diff --git a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysXor.h b/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysXor.h deleted file mode 100644 index 73b2d9e6a4..0000000000 --- a/target/linux/generic-2.4/files/crypto/ocf/kirkwood/mvHal/kw_family/ctrlEnv/sys/mvSysXor.h +++ /dev/null @@ -1,140 +0,0 @@ -/******************************************************************************* -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 __INCMVSysXorh -#define __INCMVSysXorh - - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ctrlEnv/sys/mvCpuIf.h" - -#include "ctrlEnv/mvCtrlEnvLib.h" -#include "ctrlEnv/mvCtrlEnvAddrDec.h" - -#define XOR_MAX_ADDR_DEC_WIN 8 /* Maximum address decode windows */ -#define XOR_MAX_REMAP_WIN 4 /* Maximum address arbiter windows */ - -/* XOR Engine Address Decoding Register Map */ -#define XOR_WINDOW_CTRL_REG(unit,chan) (XOR_UNIT_BASE(unit)+(0x240 + ((chan) * 4))) -#define XOR_BASE_ADDR_REG(unit,winNum) (XOR_UNIT_BASE(unit)+(0x250 + ((winNum) * 4))) -#define XOR_SIZE_MASK_REG(unit,winNum) (XOR_UNIT_BASE(unit)+(0x270 + ((winNum) * 4))) -#define XOR_HIGH_ADDR_REMAP_REG(unit,winNum) (XOR_UNIT_BASE(unit)+(0x290 + ((winNum) * 4))) - -/* XOR Engine [0..1] Window Control Registers (XExWCR) */ -#define XEXWCR_WIN_EN_OFFS(winNum) (winNum) -#define XEXWCR_WIN_EN_MASK(winNum) (1 << (XEXWCR_WIN_EN_OFFS(winNum))) -#define XEXWCR_WIN_EN_ENABLE(winNum) (1 << (XEXWCR_WIN_EN_OFFS(winNum))) -#define XEXWCR_WIN_EN_DISABLE(winNum) (0 << (XEXWCR_WIN_EN_OFFS(winNum))) - -#define XEXWCR_WIN_ACC_OFFS(winNum) ((2 * winNum) + 16) -#define XEXWCR_WIN_ACC_MASK(winNum) (3 << (XEXWCR_WIN_ACC_OFFS(winNum))) -#define XEXWCR_WIN_ACC_NO_ACC(winNum) (0 << (XEXWCR_WIN_ACC_OFFS(winNum))) -#define XEXWCR_WIN_ACC_RO(winNum) (1 << (XEXWCR_WIN_ACC_OFFS(winNum))) -#define XEXWCR_WIN_ACC_RW(winNum) (3 << (XEXWCR_WIN_ACC_OFFS(winNum))) - -/* XOR Engine Base Address Registers (XEBARx) */ -#define XEBARX_TARGET_OFFS (0) -#define XEBARX_TARGET_MASK (0xF << XEBARX_TARGET_OFFS) -#define XEBARX_ATTR_OFFS (8) -#define XEBARX_ATTR_MASK (0xFF << XEBARX_ATTR_OFFS) -#define XEBARX_BASE_OFFS (16) -#define XEBARX_BASE_MASK (0xFFFF << XEBARX_BASE_OFFS) - -/* XOR Engine Size Mask Registers (XESMRx) */ -#define XESMRX_SIZE_MASK_OFFS (16) -#define XESMRX_SIZE_MASK_MASK (0xFFFF << XESMRX_SIZE_MASK_OFFS) - -/* XOR Engine High Address Remap Register (XEHARRx1) */ -#define XEHARRX_REMAP_OFFS (0) -#define XEHARRX_REMAP_MASK (0xFFFFFFFF << XEHARRX_REMAP_OFFS) - -typedef struct _mvXorDecWin -{ - MV_TARGET target; - MV_ADDR_WIN addrWin; /* An address window*/ - MV_BOOL enable; /* Address decode window is enabled/disabled */ - -}MV_XOR_DEC_WIN; - -MV_STATUS mvXorInit (MV_VOID); -MV_STATUS mvXorTargetWinSet(MV_U32 unit, MV_U32 winNum, - MV_XOR_DEC_WIN *pAddrDecWin); -MV_STATUS mvXorTargetWinGet(MV_U32 unit, MV_U32 winNum, - MV_XOR_DEC_WIN *pAddrDecWin); -MV_STATUS mvXorTargetWinEnable(MV_U32 unit, - MV_U32 winNum, MV_BOOL enable); -MV_STATUS mvXorProtWinSet (MV_U32 unit,MV_U32 chan, MV_U32 winNum, MV_BOOL access, - MV_BOOL write); -MV_STATUS mvXorPciRemap(MV_U32 unit, MV_U32 winNum, MV_U32 addrHigh); - -MV_VOID mvXorAddrDecShow(MV_VOID); - -#ifdef __cplusplus -} -#endif - -#endif |