/* @func BOOL | InitEthDevice | Initializes the Ethernet device to be used for download. @rdesc TRUE = Success, FALSE = Failure. @comm @xref */ BOOL InitEthDevice(PBOOT_CFG pBootCfg) { PBYTE pBaseIOAddress = NULL; UINT32 MemoryBase = 0; BOOL bResult = FALSE; OALMSG(OAL_FUNC, (TEXT("+InitEthDevice.\r\n"))); InitSROMC_CS8900(); // Use the MAC address programmed into flash by the user. // memcpy(pBSPArgs->kitl.mac, pBootCfg->EdbgAddr.wMAC, 6); // Use the CS8900A Ethernet controller for download. // pfnEDbgInit = CS8900DBG_Init; pfnEDbgGetFrame = CS8900DBG_GetFrame; pfnEDbgSendFrame = CS8900DBG_SendFrame; pBaseIOAddress = (PBYTE)OALPAtoVA(pBSPArgs->kitl.devLoc.LogicalLoc, FALSE); MemoryBase = (UINT32)OALPAtoVA(BSP_BASE_REG_PA_CS8900A_MEMBASE, FALSE); //RETAILMSG(1,(TEXT("0x%X 0x%X\n"),pBaseIOAddress,MemoryBase)); // Initialize the Ethernet controller. // if (!pfnEDbgInit((PBYTE)pBaseIOAddress, MemoryBase, pBSPArgs->kitl.mac)) { OALMSG(OAL_ERROR, (TEXT("ERROR: InitEthDevice: Failed to initialize Ethernet controller.\r\n"))); goto CleanUp; } // Make sure MAC address has been programmed. // if (!pBSPArgs->kitl.mac[0] && !pBSPArgs->kitl.mac[1] && !pBSPArgs->kitl.mac[2]) { OALMSG(OAL_ERROR, (TEXT("ERROR: InitEthDevice: Invalid MAC address.\r\n"))); goto CleanUp; } bResult = TRUE; CleanUp: OALMSG(OAL_FUNC, (TEXT("-InitEthDevice.\r\n"))); return(bResult); }
BOOL InitKitlEtherArgs (OAL_KITL_ARGS *pKitlArgs) { // Initialize flags pKitlArgs->flags = OAL_KITL_FLAGS_ENABLED | OAL_KITL_FLAGS_VMINI; #ifdef CS8900A_KITL_POLLMODE pKitlArgs->flags |= OAL_KITL_FLAGS_POLL; #endif #ifdef CS8900A_KITL_DHCP pKitlArgs->flags |= OAL_KITL_FLAGS_DHCP; #endif pKitlArgs->devLoc.IfcType = Internal; pKitlArgs->devLoc.BusNumber = 0; pKitlArgs->devLoc.LogicalLoc = BSP_BASE_REG_PA_CS8900A_IOBASE; pKitlArgs->devLoc.Pin = 0; OALKitlStringToMAC(CS8900A_MAC,pKitlArgs->mac); #ifndef CS8900A_KITL_DHCP pKitlArgs->ipAddress = OALKitlStringToIP(CS8900A_IP_ADDRESS); pKitlArgs->ipMask = OALKitlStringToIP(CS8900A_IP_MASK); pKitlArgs->ipRoute = OALKitlStringToIP(CS8900A_IP_ROUTER); #endif g_kitlDevice.name = L"6400Ethernet"; g_kitlDevice.ifcType = Internal; g_kitlDevice.type = OAL_KITL_TYPE_ETH; g_kitlDevice.pDriver = (void *)&g_kitlEthCS8900A; //configure nCS3 for cs8900a InitSROMC_CS8900(); //setting EINT10 as IRQ_LAN if (!(pKitlArgs->flags & OAL_KITL_FLAGS_POLL)) { g_pGPIOReg = (S3C6400_GPIO_REG *)OALPAtoVA(S3C6400_BASE_REG_PA_GPIO, FALSE); g_pGPIOReg->GPNCON = (g_pGPIOReg->GPNCON & ~(0x3<<20)) | (0x2<<20); g_pGPIOReg->GPGPUD = (g_pGPIOReg->GPGPUD & ~(0x3<<20)); // pull-up/down disable g_pGPIOReg->EINT0CON0 = (g_pGPIOReg->EINT0CON0 & ~(0x7<<20)) | (0x1<<20); // High Level trigger } return TRUE; }