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