Example #1
0
BOOL OEMKitlStartup(void)
{
    OAL_KITL_ARGS KITLArgs;
    OAL_KITL_ARGS *pKITLArgs;
    BOOL bRet = FALSE;
    UCHAR *szDeviceId,buffer[OAL_KITL_ID_SIZE]="\0";

    OALMSG(OAL_KITL&&OAL_FUNC, (L"[KITL] ++OEMKitlStartup()\r\n"));

    // Look for bootargs left by the bootloader or left over from an earlier boot.
    //
    pKITLArgs = (OAL_KITL_ARGS *)OALArgsQuery(OAL_ARGS_QUERY_KITL);
    szDeviceId = (UCHAR*)OALArgsQuery(OAL_ARGS_QUERY_DEVID);

    // If no KITL arguments were found (typically provided by the bootloader), then select
    // some default settings.
    //
    if (pKITLArgs == NULL)
    {
        memset(&KITLArgs, 0, sizeof(OAL_KITL_ARGS));
        
        // By default, enable KITL and use USB Serial
        KITLArgs.flags |= OAL_KITL_FLAGS_ENABLED;

        KITLArgs.devLoc.IfcType     = Internal;
        KITLArgs.devLoc.BusNumber   = 0;
        KITLArgs.devLoc.PhysicalLoc = (PVOID)S3C6410_BASE_REG_PA_USBOTG_LINK;
        KITLArgs.devLoc.LogicalLoc  = (DWORD)KITLArgs.devLoc.PhysicalLoc;

        pKITLArgs = &KITLArgs;
    }

    if (pKITLArgs->devLoc.LogicalLoc == BSP_BASE_REG_PA_DM9000A_IOBASE)
    {
        // Ethernet specific initialization

        //configure chipselect for DM9000A
        InitSROMC_DM9000A();

        //setting EINT7 as IRQ_LAN
        if (!(pKITLArgs->flags & OAL_KITL_FLAGS_POLL))
        {
            g_pGPIOReg = (S3C6410_GPIO_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_GPIO, FALSE);
        }

        // Setup pointers to the power on and power off functions to enable KITL
        // functionality across suspend/resume
        
        // Modify the g_kitlEthCS8900A structure defined in kitl_cfg.h
        g_kitlEthDM9000A.pfnPowerOff = (OAL_KITLETH_POWER_OFF)BSPKitlEthPowerOff;
        g_kitlEthDM9000A.pfnPowerOn = (OAL_KITLETH_POWER_ON)BSPKitlEthPowerOn;
    }
    
    bRet = OALKitlInit ((LPCSTR)szDeviceId, pKITLArgs, g_kitlDevices);

    OALMSG(OAL_KITL&&OAL_FUNC, (L"[KITL] --OEMKitlStartup() = %d\r\n", bRet));

    return bRet;
}
Example #2
0
BOOL OEMKitlStartup(void)
{
    OAL_KITL_ARGS kitlArgs;
    OAL_KITL_ARGS *pArgs;
    BOOL bRet = FALSE;
    UCHAR *szDeviceId,buffer[OAL_KITL_ID_SIZE]="\0";

    OALMSG(OAL_KITL&&OAL_FUNC, (L"[KITL] ++OEMKitlStartup()\r\n"));
    OALMSG(TRUE, (L"[KITL] ++OEMKitlStartup()\r\n"));

    memset(&kitlArgs, 0, sizeof (kitlArgs));

    pArgs = (OAL_KITL_ARGS *)OALArgsQuery(OAL_ARGS_QUERY_KITL);
    szDeviceId = (UCHAR*)OALArgsQuery(OAL_ARGS_QUERY_DEVID);

    // Common parts
    kitlArgs.devLoc.IfcType	= InterfaceTypeUndefined;
    g_kitlDevice.ifcType	= InterfaceTypeUndefined;

    if((pArgs->flags & OAL_KITL_FLAGS_ENABLED) == 0)
    {
        RETAILMSG(1,(TEXT("KITL was Disabled from EBOOT !!\r\nPlease set KITL Configuration in EBoot !!\r\n")));
        return FALSE;
    }

#ifdef	KITL_SERIAL

    KITLOutputDebugString ("[KITL] KITL: Serial\n");
    bRet = InitKitlSerialArgs (&kitlArgs);
    strcpy(buffer,"6400SerialKITL");
    szDeviceId = buffer;
    g_kitlDevice.id = kitlArgs.devLoc.LogicalLoc;

#endif
#ifdef	KITL_USBSERIAL

    KITLOutputDebugString ("[KITL] KITL: USB Serial\n");
    bRet = InitKitlUSBSerialArgs (&kitlArgs);
    strcpy(buffer,"6400USBSerialKITL");
    szDeviceId = buffer;
    g_kitlDevice.id = kitlArgs.devLoc.LogicalLoc;

#endif
#ifdef	KITL_USBRNDIS

    // TODO:  TO be implemented

#endif
#ifdef	KITL_ETHERNET

    KITLOutputDebugString("[KITL]: Ethernet\r\n");
    if (pArgs->devLoc.LogicalLoc == 0)
    {
        KITLOutputDebugString ("[KITL] pArgs = NULL\n");

        bRet = InitKitlEtherArgs(&kitlArgs);
        OALKitlCreateName(BSP_DEVICE_PREFIX, kitlArgs.mac, buffer);
        szDeviceId = buffer;
        g_kitlDevice.id = kitlArgs.devLoc.LogicalLoc;
    }
    else
    {
        KITLOutputDebugString ("[KITL] Kitl args bring from argument setting of RAM\n");

        pArgs->flags |= OAL_KITL_FLAGS_VMINI;
        memcpy(&kitlArgs, pArgs, sizeof(kitlArgs));

        g_kitlDevice.name		= L"6400Ethernet";
        g_kitlDevice.ifcType		= kitlArgs.devLoc.IfcType;
        g_kitlDevice.id			= kitlArgs.devLoc.LogicalLoc;
        g_kitlDevice.type			= OAL_KITL_TYPE_ETH;
        g_kitlDevice.pDriver		= (void *)&g_kitlEthCS8900A;

        bRet = TRUE;
    }

#endif	// KITL_ETHERNET
    RETAILMSG(KITL_DBON, (L"DeviceId................. %hs\r\n", szDeviceId));
    RETAILMSG(KITL_DBON, (L"kitlArgs.flags............. 0x%x\r\n", kitlArgs.flags));
    RETAILMSG(KITL_DBON, (L"kitlArgs.devLoc.IfcType.... %d\r\n",   kitlArgs.devLoc.IfcType));
    RETAILMSG(KITL_DBON, (L"kitlArgs.devLoc.LogicalLoc. 0x%x\r\n", kitlArgs.devLoc.LogicalLoc));
    RETAILMSG(KITL_DBON, (L"kitlArgs.devLoc.PhysicalLoc 0x%x\r\n", kitlArgs.devLoc.PhysicalLoc));
    RETAILMSG(KITL_DBON, (L"kitlArgs.devLoc.Pin........ %d\r\n",   kitlArgs.devLoc.Pin));
    RETAILMSG(KITL_DBON, (L"kitlArgs.ip4address........ %s\r\n",   OALKitlIPtoString(kitlArgs.ipAddress)));

    if (bRet == FALSE)
    {
        KITLOutputDebugString ("[KITL] KITL: None\n");
        RETAILMSG(TRUE, (TEXT("[KITL] KITL Argument Initialize Fail !!\n")));

        return FALSE;
    }

    KITLOutputDebugString ("[KITL] Call OALKitlInit()\r\n");

    bRet = OALKitlInit ((LPCSTR)szDeviceId, &kitlArgs, &g_kitlDevice);

    OALMSG(OAL_KITL&&OAL_FUNC, (L"[KITL] --OEMKitlStartup() = %d\r\n", bRet));
    OALMSG(TRUE, (L"[KITL] --OEMKitlStartup() = %d\r\n", bRet));

    return bRet;
}
Example #3
0
BOOL
OEMKitlStartup(
    )
{
    BOOL rc = FALSE;

    OAL_KITL_ARGS *pArgs, args;
    CHAR *szDeviceId;
    
    KITLSetDebug(
                ZONE_ERROR |
                ZONE_WARNING |
        //        ZONE_INIT |        
        //        ZONE_KITL_OAL |
        //        ZONE_KITL_ETHER |
                0);


    KITL_RETAILMSG(ZONE_KITL_OAL, ("+OALKitlStart\r\n"));

    // First get boot args and device id
    pArgs = (OAL_KITL_ARGS*)OALArgsQuery(OAL_ARGS_QUERY_KITL);

    // If we don't get kitl arguments use default
    if (pArgs == NULL)
        {
		const UINT16 defaultMac[] = DEFAULT_MAC_ADDRESS;
        KITL_RETAILMSG(ZONE_WARNING, (
            "WARN: Boot arguments not found, use defaults\r\n"
            ));
        memset(&args, 0, sizeof(args));
        args.flags = OAL_KITL_FLAGS_ENABLED|OAL_KITL_FLAGS_DHCP;
        args.devLoc.IfcType = Internal;
        args.devLoc.BusNumber = 0;
        args.devLoc.LogicalLoc = BSP_LAN9115_REGS_PA;
		memcpy(args.mac,defaultMac,sizeof(args.mac));
        pArgs = &args;
        }

    // We always create device name
	// Try to generate from device id...

    szDeviceId = OALArgsQuery(OAL_ARGS_QUERY_DEVICE_PREFIX);
    
    if (szDeviceId == NULL) {
        szDeviceId = BSP_DEVICE_35xx_PREFIX;
    }
    pArgs->flags |= OAL_KITL_FLAGS_EXTNAME;
    
    // Initialize debug device
    switch (pArgs->devLoc.IfcType)
        {
        case Internal:
            switch (pArgs->devLoc.LogicalLoc)
                {
                case BSP_LAN9115_REGS_PA:
#if 0
					// enable clocks to GPIO banks that have KITL dependencies so we can do initialization
                    OEMKitlEnableClocks(TRUE);
                    
                    // Reset LAN chip
                    pGPIORegs = OALPAtoUA(BSP_RESET_ETHER_KITL_GPIO_PA);
                    CLRREG32(&pGPIORegs->DATAOUT, 1 << (BSP_RESET_ETHER_KITL_GPIO % 32));
                    OALStall(1000);
                    SETREG32(&pGPIORegs->DATAOUT, 1 << (BSP_RESET_ETHER_KITL_GPIO % 32));
                    OALStall(1000);

                    // Prepare interrupt
                    pGPIORegs = OALPAtoUA(BSP_ETHER_GPIO_PA);
                    SETREG32(&pGPIORegs->OE, 1 << (BSP_IRQ_ETHER_KITL % 32));
                    // Interrupt on falling edge
                    SETREG32(&pGPIORegs->FALLINGDETECT, 1 << (BSP_IRQ_ETHER_KITL % 32));

                    OEMKitlEnableClocks(FALSE);
#endif
                    break;
                }
            break;
        }

    // Finally call KITL library
    rc = OALKitlInit(szDeviceId, pArgs, g_kitlDevices);

    // If it failed or KITL is disabled
    if (!rc || (pArgs->flags & OAL_KITL_FLAGS_ENABLED) == 0) goto cleanUp;

    // enable kitl interrupts
    s_bKitlActive = TRUE;
    OEMKitlEnable(TRUE);
    
cleanUp:
    KITL_RETAILMSG(ZONE_KITL_OAL, ("-OALKitlStart(rc = %d)\r\n", rc));

    return rc;
}