Example #1
0
/**
 * This function is called from early boot process.
 * Therefore, it cannot use global variables.
 */
NvU32 NvOdmQueryMemSize(NvOdmMemoryType MemType)
{
    NvOdmOsOsInfo Info;
    NvU32 SdramSize;
    NvU32 SdramBctCustOpt;

    switch (MemType)
    {
    // NOTE:
    // For Windows CE/WM operating systems the total size of SDRAM may
    // need to be reduced due to limitations in the virtual address map.
    // Under the legacy physical memory manager, Windows OSs have a
    // maximum 512MB statically mapped virtual address space. Under the
    // new physical memory manager, Windows OSs have a maximum 1GB
    // statically mapped virtual address space. Out of that virtual
    // address space, the upper 32 or 36 MB (depending upon the SOC)
    // of the virtual address space is reserved for SOC register
    // apertures.
    //
    // Refer to virtual_tables_apxx.arm for the reserved aperture list.
    // If the cumulative size of the reserved apertures changes, the
    // maximum size of SDRAM will also change.
    case NvOdmMemoryType_Sdram:
    {
        SdramBctCustOpt = GetBctKeyValue();
        switch (NV_DRF_VAL(TEGRA_DEVKIT, BCT_SYSTEM, MEMORY, SdramBctCustOpt))
        {
        case TEGRA_DEVKIT_BCT_SYSTEM_0_MEMORY_1:
            SdramSize = 0x10000000; //256 MB
            break;
        case TEGRA_DEVKIT_BCT_SYSTEM_0_MEMORY_3:
            SdramSize = 0x40000000; //1GB
            break;
        case TEGRA_DEVKIT_BCT_SYSTEM_0_MEMORY_2:
        case TEGRA_DEVKIT_BCT_SYSTEM_0_MEMORY_DEFAULT:
        default:
            SdramSize = 0x20000000; //512 MB
            break;
        }

        if ( NvOdmOsGetOsInformation(&Info) &&
                ((Info.OsType!=NvOdmOsOs_Windows) ||
                 (Info.OsType==NvOdmOsOs_Windows && Info.MajorVersion>=7)) )
            return SdramSize;

        // Legacy Physical Memory Manager: SdramSize MB - Carveout MB
        return (SdramSize - NvOdmQueryCarveoutSize());
    }

    case NvOdmMemoryType_Nor:
        return 0x00400000;  // 4 MB

    case NvOdmMemoryType_Nand:
    case NvOdmMemoryType_I2CEeprom:
    case NvOdmMemoryType_Hsmmc:
    case NvOdmMemoryType_Mio:
    default:
        return 0;
    }
}
Example #2
0
NvU32 NvOdmQueryCarveoutSize(void)
{
    NvU32 CarveBctCustOpt = GetBctKeyValue();

    switch (NV_DRF_VAL(TEGRA_DEVKIT, BCT_CARVEOUT, MEMORY, CarveBctCustOpt))
    {
    case TEGRA_DEVKIT_BCT_CARVEOUT_0_MEMORY_1:
        return 0x00400000;// 4MB
    case TEGRA_DEVKIT_BCT_CARVEOUT_0_MEMORY_2:
        return 0x00800000;// 8MB
    case TEGRA_DEVKIT_BCT_CARVEOUT_0_MEMORY_3:
        return 0x00C00000;// 12MB
    case TEGRA_DEVKIT_BCT_CARVEOUT_0_MEMORY_4:
        return 0x01000000;// 16MB
    case TEGRA_DEVKIT_BCT_CARVEOUT_0_MEMORY_5:
        return 0x01400000;// 20MB
    case TEGRA_DEVKIT_BCT_CARVEOUT_0_MEMORY_6:
        return 0x01800000;// 24MB
    case TEGRA_DEVKIT_BCT_CARVEOUT_0_MEMORY_7:
        return 0x01C00000;// 28MB
    case TEGRA_DEVKIT_BCT_CARVEOUT_0_MEMORY_8:
        return 0x02000000; // 32 MB
    case TEGRA_DEVKIT_BCT_CARVEOUT_0_MEMORY_DEFAULT:
    default:
        return 0x04000000; // 64 MB
    }
}
Example #3
0
const NvOdmQueryDapPortConnection*
NvOdmQueryDapPortGetConnectionTable(
    NvU32 ConnectionIndex)
{
    static const NvOdmQueryDapPortConnection s_Property[] =
    {
        { NvOdmDapConnectionIndex_Music_Path,
          2, { {NvOdmDapPort_I2s1, NvOdmDapPort_Dap1, NV_FALSE},
               {NvOdmDapPort_Dap1, NvOdmDapPort_I2s1, NV_TRUE} } },
    };
    static const NvOdmQueryDapPortConnection s_Property_Ril_Emp_Rainbow[] =
    {
        { NvOdmDapConnectionIndex_Music_Path,
          2, { {NvOdmDapPort_I2s1, NvOdmDapPort_Dap1, NV_FALSE},
               {NvOdmDapPort_Dap1, NvOdmDapPort_I2s1, NV_TRUE} } },

        // Voicecall without Bluetooth
        { NvOdmDapConnectionIndex_VoiceCall_NoBlueTooth,
          2, { {NvOdmDapPort_Dap3, NvOdmDapPort_Dap2, NV_FALSE},
               {NvOdmDapPort_Dap2, NvOdmDapPort_Dap3, NV_TRUE} } },

        // Voicecall with Bluetooth
        { NvOdmDapConnectionIndex_VoiceCall_WithBlueTooth,
          2, { {NvOdmDapPort_Dap4, NvOdmDapPort_Dap3, NV_TRUE},
              {NvOdmDapPort_Dap3, NvOdmDapPort_Dap4, NV_FALSE}
            }},

    };
    NvU32 TableIndex = 0;
    NvU32 CustOpt = GetBctKeyValue();
    switch (NV_DRF_VAL(TEGRA_DEVKIT, BCT_CUSTOPT, RIL, CustOpt))
    {
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_RIL_EMP_RAINBOW:
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_RIL_EMP_RAINBOW_ULPI:
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_RIL_IFX:
        {
            for( TableIndex = 0;
                 TableIndex < NV_ARRAY_SIZE(s_Property_Ril_Emp_Rainbow); TableIndex++)
            {
                if (s_Property_Ril_Emp_Rainbow[TableIndex].UseIndex == ConnectionIndex)
                    return &s_Property_Ril_Emp_Rainbow[TableIndex];
            }
        }
        break;
    default:
        {
            for( TableIndex = 0; TableIndex < NV_ARRAY_SIZE(s_Property); TableIndex++)
            {
                if (s_Property[TableIndex].UseIndex == ConnectionIndex)
                    return &s_Property[TableIndex];
            }
        }
        break;
    }
    return NULL;
}
Example #4
0
const NvOdmQueryDapPortProperty *
NvOdmQueryDapPortGetProperty(
    NvU32 DapPortId)
{
    static const NvOdmQueryDapPortProperty s_Property[] =
    {
        { NvOdmDapPort_None, NvOdmDapPort_None, { 0, 0, 0, 0 } },
        // I2S1 (DAC1) <-> DAP1 <-> HIFICODEC
        {   NvOdmDapPort_I2s1, NvOdmDapPort_HifiCodecType,
            { 2, 16, 44100, NvOdmQueryI2sDataCommFormat_I2S }
        }, // Dap1
        // I2S2 (DAC2) <-> DAP2 <-> VOICECODEC
        {   NvOdmDapPort_I2s2, NvOdmDapPort_VoiceCodecType,
            {2, 16, 8000, NvOdmQueryI2sDataCommFormat_I2S }
        },   // Dap2
    };
    static const NvOdmQueryDapPortProperty s_Property_Ril_Emp_Rainbow[] =
    {
        { NvOdmDapPort_None, NvOdmDapPort_None, { 0, 0, 0, 0 } },
        // I2S1 (DAC1) <-> DAP1 <-> HIFICODEC
        {   NvOdmDapPort_I2s1, NvOdmDapPort_HifiCodecType,
            { 2, 16, 44100, NvOdmQueryI2sDataCommFormat_I2S }
        }, // Dap1
        // I2S2 (DAC2) <-> DAP2 <-> VOICECODEC
        {   NvOdmDapPort_I2s2, NvOdmDapPort_VoiceCodecType,
            {2, 16, 8000, NvOdmQueryI2sDataCommFormat_I2S }
        },   // Dap2
        // I2S2 (DAC2) <-> DAP3 <-> BASEBAND
        {   NvOdmDapPort_I2s2, NvOdmDapPort_BaseBand,
            {2, 16, 8000, NvOdmQueryI2sDataCommFormat_I2S }
        },   // Dap3
        // I2S2 (DAC2) <-> DAP4 <-> BLUETOOTH
        {   NvOdmDapPort_I2s2, NvOdmDapPort_BlueTooth,
            {2, 16, 8000, NvOdmQueryI2sDataCommFormat_I2S }
        },   // Dap4
    };
    NvU32 CustOpt = GetBctKeyValue();
    switch (NV_DRF_VAL(TEGRA_DEVKIT, BCT_CUSTOPT, RIL, CustOpt))
    {
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_RIL_EMP_RAINBOW:
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_RIL_EMP_RAINBOW_ULPI:
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_RIL_IFX:
        if (DapPortId && DapPortId<NV_ARRAY_SIZE(s_Property_Ril_Emp_Rainbow))
            return &s_Property_Ril_Emp_Rainbow[DapPortId];
        break;
    default:
        if (DapPortId && DapPortId<NV_ARRAY_SIZE(s_Property))
            return &s_Property[DapPortId];
        break;
    }
    return NULL;
}
Example #5
0
NvOdmDebugConsole
NvOdmQueryDebugConsole(void)
{
    NvU32 CustOpt = GetBctKeyValue();
    switch (NV_DRF_VAL(TEGRA_DEVKIT, BCT_CUSTOPT, CONSOLE, CustOpt))
    {
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_CONSOLE_DEFAULT:
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_CONSOLE_DCC:
        return NvOdmDebugConsole_Dcc;
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_CONSOLE_NONE:
        return NvOdmDebugConsole_None;
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_CONSOLE_UART:
        return NvOdmDebugConsole_UartA +
               NV_DRF_VAL(TEGRA_DEVKIT, BCT_CUSTOPT, CONSOLE_OPTION, CustOpt);
    default:
        return NvOdmDebugConsole_None;
    }
}
Example #6
0
const NvOdmWakeupPadInfo *NvOdmQueryGetWakeupPadTable(NvU32 *pSize)
{
    NvU32 CustOpt;
    if (pSize)
        *pSize = NV_ARRAY_SIZE(s_NvOdmWakeupPadInfo);

    CustOpt = GetBctKeyValue();
    switch (NV_DRF_VAL(TEGRA_DEVKIT, BCT_CUSTOPT, RIL, CustOpt))
    {
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_RIL_EMP_RAINBOW:
        s_NvOdmWakeupPadInfo[24].enable = NV_TRUE;
        break;
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_RIL_IFX:
        s_NvOdmWakeupPadInfo[13].enable = NV_TRUE;
        break;
    default:
        break;
    }

    return (const NvOdmWakeupPadInfo *) s_NvOdmWakeupPadInfo;
}
Example #7
0
NvOdmDownloadTransport
NvOdmQueryDownloadTransport(void)
{
    NvU32 CustOpt = GetBctKeyValue();

    switch (NV_DRF_VAL(TEGRA_DEVKIT, BCT_CUSTOPT, TRANSPORT, CustOpt))
    {
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_TRANSPORT_NONE:
        return NvOdmDownloadTransport_None;
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_TRANSPORT_USB:
        return NvOdmDownloadTransport_Usb;
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_TRANSPORT_ETHERNET:
        switch (NV_DRF_VAL(TEGRA_DEVKIT, BCT_CUSTOPT, ETHERNET_OPTION, CustOpt))
        {
        case TEGRA_DEVKIT_BCT_CUSTOPT_0_ETHERNET_OPTION_SPI:
        case TEGRA_DEVKIT_BCT_CUSTOPT_0_ETHERNET_OPTION_DEFAULT:
        default:
            return NvOdmDownloadTransport_SpiEthernet;
        }
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_TRANSPORT_UART:
        switch (NV_DRF_VAL(TEGRA_DEVKIT, BCT_CUSTOPT, UART_OPTION, CustOpt))
        {
        case TEGRA_DEVKIT_BCT_CUSTOPT_0_UART_OPTION_B:
            return NvOdmDownloadTransport_UartB;
        case TEGRA_DEVKIT_BCT_CUSTOPT_0_UART_OPTION_C:
            return NvOdmDownloadTransport_UartC;
        case TEGRA_DEVKIT_BCT_CUSTOPT_0_UART_OPTION_DEFAULT:
        case TEGRA_DEVKIT_BCT_CUSTOPT_0_UART_OPTION_A:
        default:
            return NvOdmDownloadTransport_UartA;
        }
    case TEGRA_DEVKIT_BCT_CUSTOPT_0_TRANSPORT_DEFAULT:
    default:
        return s_NvOdmQueryDownloadTransportSetting;
    }
}
Example #8
0
const NvOdmUsbProperty*
NvOdmQueryGetUsbProperty(NvOdmIoModule OdmIoModule,
                         NvU32 Instance)
{
#ifdef CONFIG_TEGRA_USB_VBUS_DETECT_BY_PMU
#define NVODM_USE_INTERNAL_PHY_VBUS_DETECTION  NV_FALSE
#else
#define NVODM_USE_INTERNAL_PHY_VBUS_DETECTION  NV_TRUE
#endif
    static const NvOdmUsbProperty Usb1Property =
    {
        NvOdmUsbInterfaceType_Utmi,
        (NvOdmUsbChargerType_SE0 | NvOdmUsbChargerType_SE1 | NvOdmUsbChargerType_SK),
        20,
        NV_FALSE,
#ifdef CONFIG_USB_TEGRA_OTG
        NvOdmUsbModeType_OTG,
#else
        NvOdmUsbModeType_Device,
#endif
        NvOdmUsbIdPinType_None,
        NvOdmUsbConnectorsMuxType_None,
        NV_FALSE
    };

    static const NvOdmUsbProperty Usb2Property =
    {
        NvOdmUsbInterfaceType_UlpiExternalPhy,
        NvOdmUsbChargerType_UsbHost,
        20,
        NVODM_USE_INTERNAL_PHY_VBUS_DETECTION,
        NvOdmUsbModeType_None,
        NvOdmUsbIdPinType_None,
        NvOdmUsbConnectorsMuxType_None,
        NV_FALSE
    };

    static const NvOdmUsbProperty Usb2NullPhyProperty =
    {
        NvOdmUsbInterfaceType_UlpiNullPhy,
        NvOdmUsbChargerType_UsbHost,
        20,
        NVODM_USE_INTERNAL_PHY_VBUS_DETECTION,
        NvOdmUsbModeType_Host,
        NvOdmUsbIdPinType_None,
        NvOdmUsbConnectorsMuxType_None,
        NV_FALSE,
        {10, 1, 1, 1}
    };

    static const NvOdmUsbProperty Usb3Property =
    {
        NvOdmUsbInterfaceType_Utmi,
        NvOdmUsbChargerType_UsbHost,
        20,
        NVODM_USE_INTERNAL_PHY_VBUS_DETECTION,
        NvOdmUsbModeType_Host,
        NvOdmUsbIdPinType_None,
        NvOdmUsbConnectorsMuxType_None,
        NV_FALSE
    };

    /* E1108 has no ID pin for USB3, so disable USB3 Host */
    static const NvOdmUsbProperty Usb3Property_E1108 =
    {
        NvOdmUsbInterfaceType_Utmi,
        NvOdmUsbChargerType_UsbHost,
        20,
        NVODM_USE_INTERNAL_PHY_VBUS_DETECTION,
        NvOdmUsbModeType_None,
        NvOdmUsbIdPinType_None,
        NvOdmUsbConnectorsMuxType_None,
        NV_FALSE
    };

    if (OdmIoModule == NvOdmIoModule_Usb && Instance == 0)
        return &(Usb1Property);

    if (OdmIoModule == NvOdmIoModule_Usb && Instance == 1)
    {
        NvU32 CustOpt = GetBctKeyValue();

        if (NV_DRF_VAL(TEGRA_DEVKIT, BCT_CUSTOPT, RIL, CustOpt) ==
                TEGRA_DEVKIT_BCT_CUSTOPT_0_RIL_EMP_RAINBOW_ULPI)
            return &(Usb2NullPhyProperty);
        else
            return &(Usb2Property);
    }

    if (OdmIoModule == NvOdmIoModule_Usb && Instance == 2)
    {
        NvOdmBoardInfo BoardInfo;
        if (NvOdmPeripheralGetBoardInfo(BOARD_ID_WHISTLER_E1108, &BoardInfo))
        {
            return &(Usb3Property_E1108);
        }
        else
        {
            return &(Usb3Property);
        }
    }

    return (const NvOdmUsbProperty *)NULL;
}