⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 args.c

📁 三星2440原版bsp
💻 C
字号:
#include <bsp.h>

//------------------------------------------------------------------------------
//
//  Function:  OALArgsQuery
//
//  This function is called from other OAL modules to return boot arguments.
//  Boot arguments are typically placed in fixed memory location and they are
//  filled by boot loader. In case that boot arguments can't be located
//  the function should return NULL. The OAL module then must use default
//  values.
//

void* OALArgsQuery(UINT32 type)
{
	VOID *pData = NULL;
	BSP_ARGS *pArgs=(BSP_ARGS*)IMAGE_SHARE_ARGS_UA_START;
 	static UCHAR deviceId[16] = "";
 	static UCHAR UUId[16] = "32440001";
 	
	OALMSG(OAL_ARGS&&OAL_FUNC, (L"+OALArgsQuery(%d)\r\n", type));

    RETAILMSG(1, (L"+OALArgsQuery(%d)\r\n", type));
	RETAILMSG(1, (L"args[%x,%x,%x].\r\n"), pArgs->header.signature, pArgs->header.oalVersion, pArgs->header.bspVersion);

	// Check if there is expected signature
	if (
		pArgs->header.signature  != OAL_ARGS_SIGNATURE ||
		pArgs->header.oalVersion != OAL_ARGS_VERSION   ||
		pArgs->header.bspVersion != BSP_ARGS_VERSION
	) 
	{
	RETAILMSG(1, (L"Goto Clean up.\r\n"));
	goto cleanUp;
	}

	// Depending on required args
	switch (type) {
		case OAL_ARGS_QUERY_UPDATEMODE:
			pData = &pArgs->fUpdateMode;
		break;

		case OAL_ARGS_QUERY_KITL:
			pData = &pArgs->kitl;
			RETAILMSG(1,(TEXT("OAL_ARGS_QUERY_KITL\r\n")));
		break;

		case OAL_ARGS_QUERY_DEVID:
			if (deviceId[0] == '\0') {
				//OMAP730_CONFIG_REGS *pConfigRegs;
				S3C2440X_IOPORT_REG *v_IOPRegs;
				DWORD count, code, j;
				UCHAR d;
				RETAILMSG(1,(TEXT("OAL_ARGS_QUERY_DEVID //00 \r\n")));
				// Copy prefix	
				count = sizeof(BSP_DEVICE_PREFIX) - 1;	// BSP_DEVICE_PREFIX= "SMDK2440" defined in bsp_cfg.h
				if (count > sizeof(deviceId)/2) count = sizeof(deviceId)/2;
				memcpy(deviceId, BSP_DEVICE_PREFIX, count);
				
				//RETAILMSG(1,(TEXT("deviceID= %s \r\n"),*deviceId));
				// Create unique part of name from SoC ID
				//pConfigRegs = OALPAtoUA(OMAP730_CONFIG_REGS_PA);
				//code  = INREG32(&pConfigRegs->MPU_DIE_ID0);
				//code ^= INREG32(&pConfigRegs->MPU_DIE_ID1);
				v_IOPRegs = OALPAtoUA(S3C2440X_BASE_REG_PA_IOPORT);
				code = v_IOPRegs->GSTATUS1;	// read ID:0x32440001
					
				// Convert it to hexa number	
				for (j = 28; j >= 0 && count < sizeof(deviceId) - 1; j -= 4) {
					d = (UCHAR)((code >> j) & 0xF);
					deviceId[count++] = d < 10 ? '0' + d : 'A' + d - 10;
				}
				
				//RETAILMSG(1,(TEXT("deviceID= %s \r\n"),*deviceId));				
				// End string
				while (count < sizeof(deviceId)) deviceId[count++] = '\0';
			}
			pData = deviceId;
			//RETAILMSG(1,(TEXT("deviceID= %s \r\n"),*deviceId));
		break;
		case OAL_ARGS_QUERY_UUID:
			//S3C2440X_IOPORT_REG *v_IOPRegs = OALPAtoUA(S3C2440X_BASE_REG_PA_IOPORT);
			pData = UUId;
			
		break;

	}

cleanUp:
	//OALMSG(OAL_ARGS&&OAL_FUNC, (L"-OALArgsQuery(pData = 0x%08x)\r\n", pData));
	RETAILMSG(1, (L"-OALArgsQuery(pData = 0x%08x)\r\n", pData));
	return pData;
}



//------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -