Example #1
0
/*
    @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);
}
Example #2
0
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;
}