Esempio n. 1
0
/*******************************************************************************
* mvSysCntmrInit - Initialize the Cntmr subsystem
*
* DESCRIPTION:
*
* INPUT:
*       None
* OUTPUT:
*		None
* RETURN:
*       None
*
*******************************************************************************/
MV_STATUS   mvSysCntmrInit(void)
{
	MV_CNTMR_HAL_DATA halData;

	halData.ctrlModel = mvCtrlModelGet();
	halData.ctrlRev = mvCtrlRevGet();
	halData.ctrlFamily=mvCtrlDevFamilyIdGet(halData.ctrlModel);
	return mvCntmrHalInit(&halData);
}
Esempio n. 2
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;

	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;
}