NvBool NvRmPrivAp20RmModuleToOdmModule( NvRmModuleID RmModule, NvOdmIoModule *OdmModule, NvU32 *OdmInstance, NvU32 *pCnt) { NvRmModuleID Module = NVRM_MODULE_ID_MODULE(RmModule); NvU32 Instance = NVRM_MODULE_ID_INSTANCE(RmModule); NvBool Success = NV_TRUE; *pCnt = 1; switch (Module) { case NvRmModuleID_Usb2Otg: switch (Instance) { case 0: *OdmModule = NvOdmIoModule_Usb; *OdmInstance = 0; break; case 1: *OdmModule = NvOdmIoModule_Ulpi; *OdmInstance = 0; break; case 2: *OdmModule = NvOdmIoModule_Usb; *OdmInstance = 1; break; default: NV_ASSERT(!"Invalid USB instance"); break; } break; case NvRmModuleID_OneWire: *OdmModule = NvOdmIoModule_OneWire; *OdmInstance = Instance; break; case NvRmModuleID_SyncNor: *OdmModule = NvOdmIoModule_SyncNor; *OdmInstance = Instance; break; case NvRmPrivModuleID_Pcie: *OdmModule = NvOdmIoModule_PciExpress; *OdmInstance = Instance; break; default: Success = NV_FALSE; *pCnt = 0; break; } return Success; }
NvError NvRmPowerModuleClockControl( NvRmDeviceHandle hRmDeviceHandle, NvRmModuleID ModuleId, NvU32 ClientId, NvBool Enable) { const char *vcp_names[] = { "vcp", NULL }; const char *bsea_names[] = { "bsea", NULL }; const char *vde_names[] = { "vde", NULL }; const char **names = NULL; if (is_vcp(ModuleId)) names = vcp_names; else if (is_bsea(ModuleId)) names = bsea_names; else if (is_vde(ModuleId)) names = vde_names; if (!names) { pr_err("%s: MOD[%lu] INST[%lu] not supported\n", __func__, NVRM_MODULE_ID_MODULE(ModuleId), NVRM_MODULE_ID_INSTANCE(ModuleId)); return NvError_BadParameter; } for ( ; *names ; names++) { struct clk *clk = clk_get_sys(*names, NULL); if (IS_ERR_OR_NULL(clk)) { pr_err("%s: unable to get struct clk for %s\n", __func__, *names); continue; } if (Enable) clk_enable(clk); else clk_disable(clk); } return NvSuccess; }
static NvError NvRmPrivTvDcControl( NvRmDeviceHandle hDevice, NvBool enable, NvU32 inst, void *Config, NvU32 ConfigLength ) { NvRmAnalogTvDacConfig *cfg; NvU32 ctrl, source; NvU32 src_id; NvU32 src_inst; NV_ASSERT( ConfigLength == 0 || ConfigLength == sizeof(NvRmAnalogTvDacConfig) ); if( enable ) { cfg = (NvRmAnalogTvDacConfig *)Config; NV_ASSERT( cfg ); src_id = NVRM_MODULE_ID_MODULE( cfg->Source ); src_inst = NVRM_MODULE_ID_INSTANCE( cfg->Source ); ctrl = NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_IDDQ, DISABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_POWERDOWN, DISABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_DETECT_EN, ENABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_SLEEPR, DISABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_SLEEPG, DISABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_SLEEPB, DISABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_COMPR_EN, ENABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_COMPG_EN, ENABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_COMPB_EN, ENABLE ); if( src_id == NvRmModuleID_Tvo ) { source = NV_DRF_DEF( APB_MISC_ASYNC, TVDACDINCONFIG, DAC_SOURCE, TVO ); } else { NV_ASSERT( src_id == NvRmModuleID_Display ); if( src_inst == 0 ) { source = NV_DRF_DEF( APB_MISC_ASYNC, TVDACDINCONFIG, DAC_SOURCE, DISPLAY ); } else { source = NV_DRF_DEF( APB_MISC_ASYNC, TVDACDINCONFIG, DAC_SOURCE, DISPLAYB ); } } source = NV_FLD_SET_DRF_NUM( APB_MISC_ASYNC, TVDACDINCONFIG, DAC_AMPIN, cfg->DacAmplitude, source ); } else { ctrl = NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_IDDQ, ENABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_POWERDOWN, ENABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_DETECT_EN, DISABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_SLEEPR, ENABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_SLEEPG, ENABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_SLEEPB, ENABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_COMPR_EN, DISABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_COMPG_EN, DISABLE ) | NV_DRF_DEF( APB_MISC_ASYNC, TVDACCNTL, DAC_COMPB_EN, DISABLE ); source = NV_DRF_DEF( APB_MISC_ASYNC, TVDACDINCONFIG, DAC_SOURCE, TVDAC_OFF ); } NV_REGW( hDevice, NvRmModuleID_Misc, 0, APB_MISC_ASYNC_TVDACCNTL_0, ctrl ); NV_REGW( hDevice, NvRmModuleID_Misc, 0, APB_MISC_ASYNC_TVDACDINCONFIG_0, source ); return NvSuccess; }