コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
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;
}