示例#1
0
/*******************************************************************************
* mvSysTdmInit - Initialize the TDM subsystem
*
* DESCRIPTION:
*
* INPUT:
*       None
* OUTPUT:
*		None
* RETURN:
*       None
*
*******************************************************************************/
MV_STATUS mvSysTdmInit(MV_TDM_PARAMS* tdmParams)
{
	MV_TDM_HAL_DATA halData;
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status;

	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);
	if(status == MV_OK)
#ifdef MV_TDM_SUPPORT
		status = mvTdmWinInit(addrWinMap);
#else
		status = mvCommUnitWinInit(addrWinMap);
#endif

	if(status == MV_OK) {
		halData.spiMode = mvBoardTdmSpiModeGet();
		halData.model = mvCtrlModelGet();
#ifdef MV_TDM_SUPPORT
		status = mvTdmHalInit (tdmParams, &halData);
#else
		halData.maxCs = mvBoardTdmDevicesCountGet();
		status = mvCommUnitHalInit (tdmParams, &halData);
		
		/* Issue SLIC reset */
		mvGppValueSet(0, BIT25, 0);
		mvOsDelay(1);
		mvGppValueSet(0, BIT25, BIT25);
#endif
	}

	return status;
}
示例#2
0
MV_STATUS my_mvSysCesaInit(int numOfSession, int queueDepth, void *osHandle)
{
	MV_CESA_HAL_DATA halData;
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status;
	MV_U8 chan;

	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);

	if (status == MV_OK) {
		for (chan = 0; chan < MV_CESA_CHANNELS; chan++) {
			status = mvCesaTdmaWinInit(chan, addrWinMap);
			if (status != MV_OK) {
				mvOsPrintf("Error, unable to initialize CESA windows for channel(%d)\n", chan);
				break;
			}
			halData.sramPhysBase[chan] = (MV_ULONG)mv_crypto_virt_base_get(chan);
			halData.sramVirtBase[chan] = (MV_U8 *)mv_crypto_virt_base_get(chan);
			halData.sramOffset[chan] = 0;
		}

		if (status == MV_OK) {
		halData.ctrlModel = mvCtrlModelGet();
		halData.ctrlRev = mvCtrlRevGet();
			status = mvCesaHalInit(numOfSession, queueDepth,
					osHandle, &halData);
	}
	}

	return status;
}
MV_STATUS mvSysSDmmcWinInit(MV_VOID)
{
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status;

	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);
	if (status == MV_OK)
		status = mvSdmmcWinInit(addrWinMap);

	return status;
}
MV_VOID mvSysXorInit (void)
{
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status;

	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);
	if(status == MV_OK)
		status = mvXorWinInit(addrWinMap);

	if(status == MV_OK)
		mvXorHalInit(MV_XOR_MAX_CHAN);
	return;
}
示例#5
0
MV_VOID mvSysXorInit (void)
{
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status, unit;

	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);
	if (status == MV_OK)
		status = mvXorWinInit(addrWinMap);

	if (status == MV_OK) {
		for (unit = 0; unit < MV_XOR_MAX_UNIT; unit++)
			mvXorHalInit(unit);

	}
	return;
}
示例#6
0
/*******************************************************************************
* mvSysAudioInit - Initialize the Audio subsystem
*
* DESCRIPTION:
*
* INPUT:
*       None
* OUTPUT:
*		None
* RETURN:
*       None
*
*******************************************************************************/
MV_VOID mvSysAudioInit(MV_U8 unit)
{
	MV_AUDIO_HAL_DATA halData;
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status = MV_OK;
#if 0
	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);
	if(status == MV_OK)
		status = mvAudioWinInit(unit, addrWinMap);
#endif
	if(status == MV_OK) {
		halData.tclk = mvBoardTclkGet();
		mvAudioHalInit(unit,&halData);
	}

	return;
}
/*******************************************************************************
* mvSysEthInit - Initialize the Eth subsystem
*
* DESCRIPTION:
*
* INPUT:
*       None
* OUTPUT:
*		None
* RETURN:
*       None
*
*******************************************************************************/
MV_VOID mvSysEthInit(MV_VOID)
{
	MV_ETH_HAL_DATA halData;
	MV_U32 port;
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status;
	int i;

	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);
	if (status != MV_OK)
		return;

	for (i = 0; i < MAX_TARGETS; i++) {
		if (addrWinMap[i].enable == MV_FALSE)
			continue;

	}

	halData.maxPortNum = mvCtrlEthMaxPortGet();
	halData.cpuPclk = mvCpuPclkGet();
	halData.tclk = mvBoardTclkGet();
#ifdef ETH_DESCR_IN_SRAM
	halData.sramSize = mvCtrlSramSizeGet();
#endif

	for (port = 0; port < halData.maxPortNum; port++) {

		if (MV_FALSE ==  mvBoardIsGbEPortConnected(port)) continue;

		if (mvCtrlPwrClckGet(ETH_GIG_UNIT_ID, port) == MV_FALSE) {
			halData.portData[port].powerOn = MV_FALSE;
			continue;
		}
		status = mvEthWinInit(port, addrWinMap);
		if (status == MV_OK) {
			halData.portData[port].powerOn = MV_TRUE;
			halData.portData[port].phyAddr = mvBoardPhyAddrGet(port);
			halData.portData[port].isSgmii = mvBoardIsPortInSgmii(port);
			halData.portData[port].macSpeed = mvBoardMacSpeedGet(port);
		}
	}

	mvEthHalInit(&halData);

	return;
}
/*******************************************************************************
* mvSysPexInit - Initialize the Pex subsystem
*
* DESCRIPTION:
*
* INPUT:
*       None
* OUTPUT:
*		None
* RETURN:
*       None
*
*******************************************************************************/
MV_STATUS mvSysPexInit(MV_U32 pexIf, MV_PEX_TYPE pexType)
{
	MV_PEX_HAL_DATA halData;
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status;

	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);
	if(status == MV_OK)
		status = mvPexWinInit(pexIf, pexType, addrWinMap);

	if(status == MV_OK) {
		halData.ctrlModel = mvCtrlModelGet();
		halData.maxPexIf = mvCtrlPexMaxIfGet();
		status = mvPexInit(pexIf, pexType, &halData);
	}

	return status;
}
示例#9
0
/*******************************************************************************
* mvSysUsbHalInit - Initialize the USB subsystem
*
* DESCRIPTION:
*
* INPUT:
*       None
* OUTPUT:
*		None
* RETURN:
*       None
*
*******************************************************************************/
MV_STATUS   mvSysUsbInit(MV_U32 dev, MV_BOOL isHost)
{
	MV_USB_HAL_DATA halData;
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status;

	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);
	if(status == MV_OK)
		status = mvUsbWinInit(dev, addrWinMap);

	if(status == MV_OK) {
		halData.ctrlModel = mvCtrlModelGet();
		halData.ctrlRev = mvCtrlRevGet();
		status = mvUsbHalInit(dev, isHost, &halData);
	}

	return status;
}
示例#10
0
/*******************************************************************************
* mvSysPexInit - Initialize the Pex subsystem
*
* DESCRIPTION:
*
* INPUT:
*       None
* OUTPUT:
*		None
* RETURN:
*       None
*
*******************************************************************************/
MV_STATUS mvSysPexInit(MV_U32 pexIf, MV_PEX_TYPE pexType)
{
	MV_PEX_HAL_DATA halData;
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	MV_STATUS status;

	if (MV_FALSE == mvCtrlPwrClckGet(PEX_UNIT_ID, pexIf))
		return MV_ERROR;

	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);

	if (status == MV_OK)
		status = mvPexWinInit(pexIf, pexType, addrWinMap);

	if (status == MV_OK) {
		halData.ctrlModel = mvCtrlModelGet();
		halData.maxPexIf = mvCtrlPexMaxIfGet();
		halData.ctrlFamily=mvCtrlDevFamilyIdGet(halData.ctrlModel);
		status = mvPexInit(pexIf, pexType, &halData);
	}

	return status;
}
/*******************************************************************************
* mvSysUsbHalInit - Initialize the USB subsystem
*
* DESCRIPTION:
*
* INPUT:
*       None
* OUTPUT:
*		None
* RETURN:
*       None
*
*******************************************************************************/
MV_STATUS mvSysUsbInit(MV_VOID)
{
	MV_USB_HAL_DATA halData;
	MV_STATUS status = MV_OK;
	MV_U32 dev;
	MV_UNIT_WIN_INFO addrWinMap[MAX_TARGETS + 1];
	halData.ctrlModel = mvCtrlModelGet();
	halData.ctrlRev = mvCtrlRevGet();
	halData.ctrlFamily = mvCtrlDevFamilyIdGet(halData.ctrlModel);


	status = mvCtrlAddrWinMapBuild(addrWinMap, MAX_TARGETS + 1);

#ifdef CONFIG_USB_EHCI
		MV_BOOL isHost;
		char envname[10], *env;
		int maxUsbPorts = mvCtrlUsbMaxGet();
		/* for ALP/A375: if using single usb2 port, use Virtual MAC ID since
		 MAC ID0 (usbActive =0) is connected to Physical MAC ID1 */
		int id, mac_id[2] = {1, 0};

		 for (id = 0; id < maxUsbPorts ; id++) {
			if (mvBoardIsUsbPortConnected(USB_UNIT_ID,id) == MV_FALSE)
				continue;
			if (maxUsbPorts == 1 && (halData.ctrlFamily == MV_88F67X0 ||
					(halData.ctrlRev == MV_88F66XX_A0_ID && halData.ctrlFamily == MV_88F66X0)))
				dev = mac_id[id];
			else
				dev = id;

			sprintf(envname, "usb%dMode", dev);
			env = getenv(envname);
			if ((!env) || (strcmp(env, "device") == 0) || (strcmp(env, "Device") == 0))
				isHost = MV_FALSE;
			else
				isHost = MV_TRUE;

			if (status == MV_OK)	/* Map DDR windows to EHCI */
#ifdef CONFIG_USB_XHCI_HCD
/* CONFIG_USB_XHCI_HCD indicate that both xHCI and eHCI are compiled:
 * Last Boolean argument is used to indicate the HAL layer which unit is currently initiated */
				status = mvUsbWinInit(dev, addrWinMap, MV_FALSE);
#else
				status = mvUsbWinInit(dev, addrWinMap);
#endif
			if (status == MV_OK)
				status = mvUsbHalInit(dev, isHost, &halData);
			if (status == MV_OK)
				printf("USB2.0 %d: %s Mode\n", dev, (isHost == MV_TRUE ? "Host" : "Device"));
			else
				mvOsPrintf("%s: Error: USB2.0 initialization failed (port %d).\n", __func__, dev);
		}
#endif
#ifdef CONFIG_USB_XHCI
		MV_U32 reg;
		for (dev = 0; dev < mvCtrlUsb3HostMaxGet(); dev++) {
			if (mvBoardIsUsbPortConnected(USB3_UNIT_ID,dev) == MV_FALSE)
				continue;
			status = mvUsbUtmiPhyInit(dev, &halData);
			if (halData.ctrlFamily == MV_88F66X0 || halData.ctrlFamily == MV_88F67X0) {
				/* ALP/A375: Set UTMI PHY Selector:
				 * - Connect UTMI PHY to USB2 port of USB3 Host
				 * - Powers down the other unit (so USB3.0 unit's registers are accessible) */
				reg = MV_REG_READ(USB_CLUSTER_CONTROL);
				reg = (reg & (~0x1)) | 0x1;
				MV_REG_WRITE(USB_CLUSTER_CONTROL, reg);
			}
			if (status == MV_OK)	/* Map DDR windows to XHCI */
				status = mvUsbWinInit(mvCtrlUsbMapGet(USB3_UNIT_ID, dev), addrWinMap, MV_TRUE);
			if (status == MV_OK)
				printf("USB3.0 %d: Host Mode\n", mvCtrlUsbMapGet(USB3_UNIT_ID, dev));
			else
				mvOsPrintf("%s: Error: USB3.0 initialization failed (port %d).\n", __func__,
						mvCtrlUsbMapGet(USB3_UNIT_ID, dev));
		}
#endif
	return status;
}