Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2059)

Unified Diff: arch/arm/mach-tegra/nv/include/nvodm_query.h

Issue 3256004: [ARM] tegra: add nvos/nvrm/nvmap drivers (Closed) Base URL: ssh://git@gitrw.chromium.org/kernel.git
Patch Set: remove ap15 headers Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvodm_pmu.h ('k') | arch/arm/mach-tegra/nv/include/nvodm_query_discovery.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: arch/arm/mach-tegra/nv/include/nvodm_query.h
diff --git a/arch/arm/mach-tegra/nv/include/nvodm_query.h b/arch/arm/mach-tegra/nv/include/nvodm_query.h
new file mode 100644
index 0000000000000000000000000000000000000000..a7656cfc7cae19f99041f73a8e9a1d3a4888791c
--- /dev/null
+++ b/arch/arm/mach-tegra/nv/include/nvodm_query.h
@@ -0,0 +1,1382 @@
+/*
+ * Copyright (c) 2007-2009 NVIDIA Corporation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of the NVIDIA Corporation nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/**
+ * @file
+ * <b>NVIDIA Tegra ODM Kit:
+ * ODM Query API</b>
+ *
+ * @b Description: Defines a set of query functions for ODMs that may be
+ * accessed at boot-time, runtime, or anywhere in between.
+ */
+
+#ifndef INCLUDED_NVODM_QUERY_H
+#define INCLUDED_NVODM_QUERY_H
+
+/**
+ * @defgroup groupODMQueryAPI ODM Query API
+ * @ingroup nvodm_query
+ * @{
+ */
+
+#include "nvcommon.h"
+#include "nvodm_modules.h"
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+/**
+ * Defines the memory types for which configuration data may be retrieved.
+ */
+typedef enum
+{
+ /// Specifies SDRAM memory; target memory for runtime image and heap.
+ NvOdmMemoryType_Sdram,
+
+ /// Specifies NAND ROM; storage (may include the bootloader).
+ NvOdmMemoryType_Nand,
+
+ /// Specifies NOR ROM; storage (may include the bootloader).
+ NvOdmMemoryType_Nor,
+
+ /// Specifies EEPROM; storage (may include the bootloader).
+ NvOdmMemoryType_I2CEeprom,
+
+ /// Specifies HSMMC NAND; storage (may include the bootloader).
+ NvOdmMemoryType_Hsmmc,
+
+ /// Memory mapped I/O device.
+ NvOdmMemoryType_Mio,
+
+ /// Specifies DPRAM memory
+ NvOdmMemoryType_Dpram,
+
+ NvOdmMemoryType_Num,
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmMemoryType_Force32 = 0x7FFFFFFF
+} NvOdmMemoryType;
+
+/**
+ * Defines the devices that can serve as the debug console.
+ */
+typedef enum
+{
+ /// Specifies that the debug console is undefined.
+ NvOdmDebugConsole_Undefined,
+
+ /// Specifies that no debug console is to be used.
+ NvOdmDebugConsole_None,
+
+ /// Specifies that the ARM Debug Communication Channel
+ /// (Dcc) port is the debug console
+ NvOdmDebugConsole_Dcc,
+
+ /// Specifies that UART-A is the debug console.
+ NvOdmDebugConsole_UartA,
+
+ /// Specifies that UART-B is the debug console.
+ NvOdmDebugConsole_UartB,
+
+ /// Specifies that UART-C is the debug console.
+ NvOdmDebugConsole_UartC,
+
+ /// Specifies that UART-D is the debug console (not available on AP15/AP16).
+ NvOdmDebugConsole_UartD,
+
+ /// Specifies that UART-E is the debug console (not available on AP15/AP16).
+ NvOdmDebugConsole_UartE,
+
+ NvOdmDebugConsole_Num,
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmDebugConsole_Force32 = 0x7FFFFFFF
+} NvOdmDebugConsole;
+
+
+/**
+ * Defines the devices that can serve as the download transport.
+ */
+typedef enum
+{
+ /// Specifies that the download transport is undefined.
+ NvOdmDownloadTransport_Undefined = 0,
+
+ /// Specifies that no download transport device is to be used.
+ NvOdmDownloadTransport_None,
+
+ /// Specifies that an ODM-specific external Ethernet adapter
+ /// is the download transport device.
+ NvOdmDownloadTransport_MioEthernet,
+
+ /// Deprecated name -- retained for backward compatibility.
+ NvOdmDownloadTransport_Ethernet = NvOdmDownloadTransport_MioEthernet,
+
+ /// Specifies that USB is the download transport device.
+ NvOdmDownloadTransport_Usb,
+
+ /// Specifies that SPI (Ethernet) is the download transport device.
+ NvOdmDownloadTransport_SpiEthernet,
+
+ /// Deprecated name -- retained for backward compatibility.
+ NvOdmDownloadTransport_Spi = NvOdmDownloadTransport_SpiEthernet,
+
+ /// Specifies that UART-A is the download transport device.
+ NvOdmDownloadTransport_UartA,
+
+ /// Specifies that UART-B is the download transport device.
+ NvOdmDownloadTransport_UartB,
+
+ /// Specifies that UART-C is the download transport device.
+ NvOdmDownloadTransport_UartC,
+
+ /// Specifies that UART-D is the download transport device (not available on AP15/AP16).
+ NvOdmDownloadTransport_UartD,
+
+ /// Specifies that UART-E is the download transport device (not available on AP15/AP16).
+ NvOdmDownloadTransport_UartE,
+
+ NvOdmDownloadTransport_Num,
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmDownloadTransport_Force32 = 0x7FFFFFFF
+} NvOdmDownloadTransport;
+
+/**
+ * Contains information and settings for the display (such as the default
+ * backlight intensity level).
+ */
+typedef struct
+{
+ /// Default backlight intensity (scaled from 0 to 255).
+ NvU8 BacklightIntensity;
+} NvOdmQueryDisplayInfo;
+
+/**
+ * Defines the SPI signal mode for SPI communications to the device.
+ */
+typedef enum
+{
+ /// Specifies the invalid signal mode.
+ NvOdmQuerySpiSignalMode_Invalid = 0x0,
+
+ /// Specifies mode 0 (CPOL=0, CPHA=0) of SPI controller.
+ NvOdmQuerySpiSignalMode_0,
+
+ /// Specifies mode 1 (CPOL=0, CPHA=1) of SPI controller.
+ NvOdmQuerySpiSignalMode_1,
+
+ /// Specifies mode 2 (CPOL=1, CPHA=0) of SPI controller.
+ NvOdmQuerySpiSignalMode_2,
+
+ /// Specifies mode 3 (CPOL=1, CPHA=1) of SPI controller.
+ NvOdmQuerySpiSignalMode_3,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmQuerySpiSignalMode_Force32 = 0x7FFFFFFF
+} NvOdmQuerySpiSignalMode;
+
+/**
+ * Holds the SPI device information.
+ */
+typedef struct
+{
+ /// Holds the signal mode for the SPI interfacing.
+ NvOdmQuerySpiSignalMode SignalMode;
+
+ /// If this is NV_TRUE, then this device's chip select is an active-low signal
+ /// (the device is selected by driving its chip select line low). If this
+ /// is NV_FALSE, then this device's chip select is an active-high signal.
+ NvBool ChipSelectActiveLow;
+
+ /// If this is NV_TRUE, then this device is an SPI slave.
+ NvBool IsSlave;
+} NvOdmQuerySpiDeviceInfo;
+
+/**
+ * Defines the SPI signal state in idle state, i.e., when no transaction is going on.
+ */
+typedef struct
+{
+ /// Specifies the signal idle state, whether it is normal or tristate.
+ NvBool IsTristate;
+
+ /// Specifies the signal mode for idle state.
+ NvOdmQuerySpiSignalMode SignalMode;
+
+ /// Specifies the idle state data out level.
+ NvBool IsIdleDataOutHigh;
+
+} NvOdmQuerySpiIdleSignalState;
+
+/**
+ * Defines the SDIO slot usage.
+ */
+typedef enum
+{
+ /** Unused interface. */
+ NvOdmQuerySdioSlotUsage_unused = 0x0,
+
+ /** Specifies a Wireless LAN device. */
+ NvOdmQuerySdioSlotUsage_wlan = 0x1,
+
+ /** Specifies the boot slot (contains the operating system code,
+ * typically populated by an eMMC). */
+ NvOdmQuerySdioSlotUsage_Boot = 0x2,
+
+ /** Specifies the media slot, used for user data like audio/video/images. */
+ NvOdmQuerySdioSlotUsage_Media = 0x4,
+
+ /** Ignore -- Forces compilers to make 32-bit enums. */
+ NvOdmQuerySdioSlotUsage_Force32 = 0x7FFFFFFF,
+
+} NvOdmQuerySdioSlotUsage;
+
+/**
+ * Holds the SDIO interface properties.
+ */
+typedef struct
+{
+ /// Holds a flag indicating whether or not the eMMC card connected to the
+ /// SDIO interface is pluggable on the board.
+ ///
+ /// @note If a GPIO is already assigned by NvOdmGpioPinGroup::NvOdmGpioPinGroup_Sdio,
+ /// then this value is ignored.
+ ///
+ /// If this is NV_TRUE, the eMMC card is pluggable on the board.
+ /// If this is NV_FALSE, the eMMC card is fixed permanently (or soldered) on the board.
+ /// For more information, see NvDdkSdioIsCardInserted().
+ NvBool IsCardRemovable;
+
+ /// Holds SDIO card HW settling time after reset, i.e., before reading the OCR.
+ NvU32 SDIOCardSettlingDelayMSec;
+
+ /// Indicates to the driver whether the card must be re-enumerated after returning
+ /// from suspend or deep sleep modes, because of power loss to the card during those
+ /// modes. NV_TRUE means that the card is powered even though the device enters
+ /// suspend or deep sleep mode, and there is no need to re-enumerate the card after
+ /// returning from suspend/deep sleep.
+ NvBool AlwaysON;
+
+ /// Indicates the tap delay to adjust the track delay on the PCB/Boards from SOC to connector.
+ NvU32 TapDelay;
+
+ /// Defines what the slot is used for.
+ NvOdmQuerySdioSlotUsage usage;
+
+} NvOdmQuerySdioInterfaceProperty;
+
+/**
+ * Defines the bus width used by the HSMMC controller on the platform.
+ */
+typedef enum
+{
+ /// Specifies the invalid bus width.
+ NvOdmQueryHsmmcBusWidth_Invalid = 0x0,
+
+ /// Specifies 4-bit wide bus.
+ NvOdmQueryHsmmcBusWidth_FourBitWide,
+
+ /// Specifies 8-bit wide bus.
+ NvOdmQueryHsmmcBusWidth_EightBitWide,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmQueryHsmmcBusWidth_Force32 = 0x7FFFFFFF
+} NvOdmQueryHsmmcBusWidth;
+
+/**
+ * Holds the HSMMC interface properties.
+ */
+typedef struct
+{
+ /// Holds a flag to indicate whether or not the eMMC card connected to
+ /// the HSMMC interface is pluggable on the board. Set this to NV_TRUE
+ /// if the eMMC card is pluggable on the board. If the eMMC card is fixed
+ /// permanently (or soldered) on the board, then set this variable to NV_FALSE.
+ ///
+ /// @note If a GPIO is already assigned by NvOdmGpioPinGroup::NvOdmGpioPinGroup_Hsmmc,
+ /// then this value is ignored.
+ /// For more information, see NvDdkHsmmcIsCardInserted().
+ NvBool IsCardRemovable;
+
+ /// Holds the bus width supported by the platform for the HSMMC controller.
+ NvOdmQueryHsmmcBusWidth Buswidth;
+} NvOdmQueryHsmmcInterfaceProperty;
+
+/**
+* Defines the OWR device details.
+*/
+typedef struct
+{
+ /** Flag to indicate if the "Byte transfer mode" is supported for the given
+ * OWR device. If not supported for a given device, the driver uses
+ * "Bit transfer mode" for reading/writing data to the device.
+ */
+ NvBool IsByteModeSupported;
+
+ /** Read data setup, Tsu = N owr clks, Range = tsu < 1. */
+ NvU32 Tsu;
+ /** Release 1-wire time, Trelease = N owr clks, Range = 0 <= trelease < 45. */
+ NvU32 TRelease;
+ /** Read data valid time, Trdv = N+1 owr clks, Range = Exactly 15. */
+ NvU32 TRdv;
+ /** Write zero time low, Tlow0 = N+1 owr clks, Range = 60 <= tlow0 < tslot < 120. */
+ NvU32 TLow0;
+ /** Write one time low, or TLOWR both are same Tlow1 = N+1 owr clks,
+ * Range = 1 <= tlow1 < 15 TlowR = N+1 owr clks, Range = 1 <= tlowR < 15.
+ */
+ NvU32 TLow1;
+ /** Active time slot for write or read data, Tslot = N+1 owr clks,
+ * Range = 60 <= tslot < 120.
+ */
+ NvU32 TSlot;
+
+
+ /** ::PRESENCE_DETECT_LOW Tpdl = N owr clks, Range = 60 <= tpdl < 240. */
+ NvU32 Tpdl;
+ /** ::PRESENCE_DETECT_HIGH Tpdh = N+1 owr clks, Range = 15 <= tpdh < 60. */
+ NvU32 Tpdh;
+ /** ::RESET_TIME_LOW Trstl = N+1 owr clks, Range = 480 <= trstl < infinity. */
+ NvU32 TRstl;
+ /** ::RESET_TIME_HIGH, Trsth = N+1 owr clks, Range = 480 <= trsth < infinity. */
+ NvU32 TRsth;
+
+ /** Program pulse width, Tpp = N owr clks Range = 480 to 5000. */
+ NvU32 Tpp;
+ /** Program voltage fall time, Tfp = N owr clks Range = 0.5 to 5. */
+ NvU32 Tfp;
+ /** Program voltage rise time, Trp = N owr clks Range = 0.5 to 5. */
+ NvU32 Trp;
+ /** Delay to verify, Tdv = N owr clks, Range = > 5. */
+ NvU32 Tdv;
+ /** Delay to program, Tpd = N+1 owr clks, Range = > 5. */
+ NvU32 Tpd;
+
+ /** Should be less than or equal to (tlow1 - 6) clks, 6 clks are used for Deglitch,
+ * if Deglitch bypassed it is 3 clks.
+ */
+ NvU32 ReadDataSampleClk;
+ /** Should be less than or equal to (tpdl - 6) clks, 6 clks are used for dglitch,
+ * if Deglitch bypassed it is 3 clks.
+ */
+ NvU32 PresenceSampleClk;
+
+ /** OWR device memory address size. */
+ NvU32 AddressSize;
+ /** OWR device Memory size. */
+ NvU32 MemorySize;
+} NvOdmQueryOwrDeviceInfo;
+
+/**
+ * Defines the functional mode for the I2S channel.
+ */
+typedef enum
+{
+ /// Specifies the I2S controller will generate the clock.
+ NvOdmQueryI2sMode_Master = 1,
+
+ /// Specifies the I2S controller will not generate the clock;
+ /// the audio codec will generate the clock.
+ NvOdmQueryI2sMode_Slave,
+
+ /// Specifies the I2S communication is internal to audio codec.
+ NvOdmQueryI2sMode_Internal,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmQueryI2sMode_Force32 = 0x7FFFFFFF
+} NvOdmQueryI2sMode;
+
+/**
+ * Defines the left and right channel data selection control for the audio.
+ */
+typedef enum
+{
+ /// Specifies the left channel when left/right line control signal is low.
+ NvOdmQueryI2sLRLineControl_LeftOnLow = 1,
+
+ /// Specifies the right channel when left/right line control signal is low.
+ NvOdmQueryI2sLRLineControl_RightOnLow,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmQueryI2sLRLineControl_Force32 = 0x7FFFFFFF
+} NvOdmQueryI2sLRLineControl;
+
+/**
+ * Defines the possible I2S data communication formats with the audio codec.
+ */
+typedef enum
+{
+ /// Specifies the I2S format for data communication.
+ NvOdmQueryI2sDataCommFormat_I2S = 0x1,
+
+ /// Specifies right-justified format for data communication.
+ NvOdmQueryI2sDataCommFormat_RightJustified,
+
+ /// Specifies left-justified format for data communication.
+ NvOdmQueryI2sDataCommFormat_LeftJustified,
+
+ /// Specifies DSP format for data communication.
+ NvOdmQueryI2sDataCommFormat_Dsp,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmQueryI2sDataCommFormat_Force32 = 0x7FFFFFFF
+} NvOdmQueryI2sDataCommFormat;
+
+
+/**
+ * Combines the one-time configuration property for the I2S interface with
+ * audio codec.
+ */
+typedef struct
+{
+ /// Holds the I2S controller functional mode.
+ NvOdmQueryI2sMode Mode;
+
+ /// Holds the left and right channel control.
+ NvOdmQueryI2sLRLineControl I2sLRLineControl;
+
+ /// Holds the information about the I2S data communication format.
+ NvOdmQueryI2sDataCommFormat I2sDataCommunicationFormat;
+
+ /// Specifies the codec needs a fixed MCLK when I2s acts as Master
+ NvBool IsFixedMCLK;
+
+ /// Specifies the Fixed MCLK Frequency in Khz.
+ /// Supports only three fixed frequencies: 11289, 12288, and 12000.
+ NvU32 FixedMCLKFrequency;
+
+} NvOdmQueryI2sInterfaceProperty;
+
+/**
+ * Defines the left and right channel data selection control.
+ */
+typedef enum
+{
+ /// Specifies the left channel when left/right line control signal is low.
+ NvOdmQuerySpdifDataCaptureControl_FromLeft = 1,
+
+ /// Specifies the right channel when left/right line control signal is low.
+ NvOdmQuerySpdifDataCaptureControl_FromRight,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmQuerySpdifDataCaptureControl_Force32 = 0x7FFFFFFF
+} NvOdmQuerySpdifDataCaptureControl;
+
+/**
+ * Combines the one time configuration property for the SPDIF interface.
+ */
+typedef struct NvOdmQuerySpdifInterfacePropertyRec
+{
+ /// Holds the left and right channel control.
+ NvOdmQuerySpdifDataCaptureControl SpdifDataCaptureControl;
+} NvOdmQuerySpdifInterfaceProperty;
+
+/**
+ * Combines the one-time configuration property for the AC97 interface.
+ */
+typedef struct
+{
+ /// Identifies whether secondary codec is available.
+ NvBool IsSecondoaryCodecAvailable;
+
+ /// Identifies whether left/right surround sound is enabled.
+ NvBool IsLRSurroundSoundEnable;
+
+ /// Identifies whether LFE is enabled.
+ NvBool IsLFEEnable;
+
+ /// Identifies whether center speaker is enabled.
+ NvBool IsCenterSpeakerEnable;
+
+ /// Identifies whether left right PCM is enabled.
+ NvBool IsLRPcmEnable;
+} NvOdmQueryAc97InterfaceProperty;
+
+/**
+ * Combines the one-time configuration property for the audio codec interfaced
+ * by I2S.
+ */
+typedef struct
+{
+ /// Holds whether the audio codec is in master mode or in slave mode.
+ NvBool IsCodecMasterMode;
+
+ /// Holds the dap port index used to connect to the codec.
+ NvU32 DapPortIndex;
+
+ /// Holds the device address if it is an I2C interface, else the chip
+ /// select ID if it is an SPI interface.
+ NvU32 DeviceAddress;
+
+ /// Tells whether it is the USB mode or normal mode of interfacing for the
+ /// audio codec.
+ NvU32 IsUsbMode;
+
+ /// Holds the left and right channel control.
+ NvOdmQueryI2sLRLineControl I2sCodecLRLineControl;
+
+ /// Holds the information about the I2S data communication format.
+ NvOdmQueryI2sDataCommFormat I2sCodecDataCommFormat;
+} NvOdmQueryI2sACodecInterfaceProp;
+
+/**
+ * Defines the oscillator source.
+ */
+typedef enum
+{
+ /// Specifies the cyrstal oscillator as the clock source.
+ NvOdmQueryOscillator_Xtal = 1,
+
+ /// Specifies an external clock source (bypass mode).
+ NvOdmQueryOscillator_External,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmQueryOscillator_Force32 = 0x7FFFFFFF
+} NvOdmQueryOscillator;
+
+/**
+ * Defines the wakeup polarity.
+ */
+typedef enum
+{
+ NvOdmWakeupPadPolarity_Low = 0,
+ NvOdmWakeupPadPolarity_High,
+ NvOdmWakeupPadPolarity_AnyEdge,
+ NvOdmWakeupPadPolarity_Force32 = 0x7FFFFFFF
+} NvOdmWakeupPadPolarity;
+
+/** Defines the wakeup pad attributes. */
+typedef struct
+{
+ /// Specifies to enable this pad as wakeup or not.
+ NvBool enable;
+
+ /// Specifies the wake up pad number. Valid values for AP15 are 0 to 15.
+ NvU32 WakeupPadNumber;
+
+ /// Specifies wake up polarity.
+ NvOdmWakeupPadPolarity Polarity;
+
+} NvOdmWakeupPadInfo;
+
+/**
+ * Defines the index for possible connection based on the use case.
+ */
+typedef enum
+{
+ /// Specifies the default music path.
+ NvOdmDapConnectionIndex_Music_Path = 0,
+
+ /// Specifies the voice call without Bluetooth.
+ NvOdmDapConnectionIndex_VoiceCall_NoBlueTooth = 1,
+
+ /// Specifies the HD radio.
+ NvOdmDapConnectionIndex_HD_Radio,
+
+ /// Specifies the voice call with Bluetooth.
+ NvOdmDapConnectionIndex_VoiceCall_WithBlueTooth,
+
+ /// Specifies the Bluetooth to codec.
+ NvOdmDapConnectionIndex_BlueTooth_Codec,
+
+ /// Specifies DAC1-to-DAP2 bypass, used for h/w verification.
+ NvOdmDapConnectionIndex_DAC1_DAP2,
+
+ /// Specifies DAC1-to-DAP3 bypass, used for h/w verification.
+ NvOdmDapConnectionIndex_DAC1_DAP3,
+
+ /// Specifies DAC1-to-DAP4 bypass, used for h/w verification.
+ NvOdmDapConnectionIndex_DAC1_DAP4,
+
+ /// Specifies DAC2-to-DAP2 bypass, used for hardware verification.
+ NvOdmDapConnectionIndex_DAC2_DAP2,
+
+ /// Specifies DAC2-to-DAP3 bypass, used for hardware verification.
+ NvOdmDapConnectionIndex_DAC2_DAP3,
+
+ /// Specifies DAC2-to-DAP4 bypass, used for hardware verification.
+ NvOdmDapConnectionIndex_DAC2_DAP4,
+
+ /// Specifies a custom type connection.
+ NvOdmDapConnectionIndex_Custom,
+
+ /// Specifies unknown.
+ NvOdmDapConnectionIndex_Unknown,
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmDapConnectionIndex_Force32 = 0x7FFFFFFF
+
+}NvOdmDapConnectionIndex;
+
+/**
+ * Defines the DAP port source and destination enumerations.
+ */
+typedef enum
+{
+ /// NONE DAP port - no connection.
+ NvOdmDapPort_None = 0,
+
+ /// Specifies DAP port 1.
+ NvOdmDapPort_Dap1,
+
+ /// Specifies DAP port 2.
+ NvOdmDapPort_Dap2,
+
+ /// Specifies DAP port 3.
+ NvOdmDapPort_Dap3,
+
+ /// Specifies DAP port 4.
+ NvOdmDapPort_Dap4,
+
+ /// Specifies DAP port 5.
+ NvOdmDapPort_Dap5,
+
+ /// Specifies I2S DAP port 1.
+ NvOdmDapPort_I2s1,
+
+ /// Specifies I2S DAP port 2.
+ NvOdmDapPort_I2s2,
+
+ /// Specifies AC97 DAP port.
+ NvOdmDapPort_Ac97,
+
+ /// Specifies baseband DAP port.
+ NvOdmDapPort_BaseBand,
+
+ /// Specifies Bluetooth DAP port.
+ NvOdmDapPort_BlueTooth,
+
+ /// Specifies media type DAP port.
+ NvOdmDapPort_MediaType,
+
+ /// Specifies voice type DAP port.
+ NvOdmDapPort_VoiceType,
+
+ /// Specifies high fidelity codec DAP port.
+ NvOdmDapPort_HifiCodecType,
+
+ /// Specifies voice codec DAP port.
+ NvOdmDapPort_VoiceCodecType,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmDapPort_Force32 = 0x7FFFFFFF
+} NvOdmDapPort;
+
+#define NvOdmDapPort_Max NvOdmDapPort_Dap5+1
+/**
+ * Combines the one-time configuration property for DAP device wired to the DAP port.
+ * Currently define only for best suited values. If the device can support more ranges,
+ * you have to consider it accordingly.
+ */
+typedef struct NvOdmDapDevicePropertyRec
+{
+ /// Specifies the number of channels, such as 2 for stereo.
+ NvU32 NumberOfChannels;
+
+ /// Specifies the number of bits per sample, such as 8 or 16 bits.
+ NvU32 NumberOfBitsPerSample;
+
+ /// Specifies the sampling rate in Hz, such as 8000 for 8 kHz, 44100
+ /// for 44.1 kHz.
+ NvU32 SamplingRateInHz;
+
+ /// Holds the information DAP port data communication format.
+ NvOdmQueryI2sDataCommFormat DapPortCommunicationFormat;
+
+}NvOdmDapDeviceProperty;
+
+/**
+* Defines the connection line and connection table.
+*/
+typedef struct NvOdmQueryDapPortConnectionLinesRec
+{
+ /// Specifies the source for the connection line.
+ NvOdmDapPort Source;
+
+ /// Specifies the destination for the connection line.
+ NvOdmDapPort Destination;
+
+ /// Specifies the source to act as master or slave.
+ NvBool IsSourceMaster;
+
+}NvOdmQueryDapPortConnectionLines;
+
+/**
+* Increases the maximum connection line based on use case connection needed.
+*/
+#define NVODM_MAX_CONNECTIONLINES 8
+
+/**
+* Defines the DAP port connection.
+*/
+typedef struct NvOdmQueryDapPortConnectionRec
+{
+ /// Specifie the connection use case from the enum provided.
+ NvU32 UseIndex;
+
+ /// Specifies the number of connection line for the table.
+ NvU32 NumofEntires;
+
+ /// Specifies the connection lines for the table.
+ NvOdmQueryDapPortConnectionLines DapPortConnectionLines[NVODM_MAX_CONNECTIONLINES];
+
+}NvOdmQueryDapPortConnection;
+/**
+ * Combines the one-time configuration property for DAP port setting.
+ */
+typedef struct NvOdmQueryDapPortPropertyRec
+{
+ /// Specifies the source for the DAP port.
+ NvOdmDapPort DapSource;
+
+ /// Specifies the destination for the DAP port.
+ NvOdmDapPort DapDestination;
+
+ /// Specified the property of device wired to DAP port.
+ NvOdmDapDeviceProperty DapDeviceProperty;
+
+} NvOdmQueryDapPortProperty;
+
+/**
+ * Defines ODM interrupt polarity.
+ */
+typedef enum
+{
+ NvOdmInterruptPolarity_Low = 1,
+ NvOdmInterruptPolarity_High,
+ NvOdmInterruptPolarity_Force32 = 0x7FFFFFFF
+} NvOdmInterruptPolarity;
+
+/**
+ * Defines core power request polarity, as required by a PMU.
+ */
+typedef enum
+{
+ NvOdmCorePowerReqPolarity_Low,
+ NvOdmCorePowerReqPolarity_High,
+ NvOdmCorePowerReqPolarity_Force32 = 0x7FFFFFFF
+}NvOdmCorePowerReqPolarity;
+
+/**
+ * Defines system clock request polarity, as required by the clock source.
+ */
+typedef enum
+{
+ NvOdmSysClockReqPolarity_Low,
+ NvOdmSysClockReqPolarity_High,
+ NvOdmSysClockReqPolarity_Force32 = 0x7FFFFFFF
+}NvOdmSysClockReqPolarity;
+
+
+/**
+ * Combines PMU configuration properties.
+ */
+typedef struct NvOdmPmuPropertyRec
+{
+ /// Specifies if PMU interrupt is connected to SoC.
+ NvBool IrqConnected;
+
+ /// Specifies the time required for power to be stable (in 32 kHz counts).
+ NvU32 PowerGoodCount;
+
+ /// Specifies the PMU interrupt polarity.
+ NvOdmInterruptPolarity IrqPolarity;
+
+ /// Specifies the core power request signal polarity.
+ NvOdmCorePowerReqPolarity CorePowerReqPolarity;
+
+ /// Specifies the system clock request signal polarity.
+ NvOdmSysClockReqPolarity SysClockReqPolarity;
+
+ /// Specifies whether or not only one power request input on PMU is available.
+ /// Relevant for SoCs with separate CPU and core power request outputs:
+ /// - NV_TRUE specifies PMU has single power request input, in this case SoC
+ /// CPU and core power requests must be combined by external logic with
+ /// proper pull-up/pull-down.
+ /// - NV_FALSE specifies PMU has at least two power request inputs, in this
+ /// case SoC CPU and core power requests are connected separately to
+ /// the respective PMU inputs.
+ NvBool CombinedPowerReq;
+
+ /// Specifies the time required for CPU power to be stable (in US).
+ /// Relevant for SoC with separate CPU and core power request outputs.
+ NvU32 CpuPowerGoodUs;
+
+ /// Specifies whether or not CPU voltage will switch back to OTP (default)
+ /// value after CPU request on-off-on transition (typically this transition
+ /// happens on entry/exit to/from low power states). Relevant for SoCs with
+ /// separate CPU and core power request outputs:
+ /// - NV_TRUE specifies PMU will switch CPU voltage to default level after
+ /// CPU request on-off-on transition. This PMU mode is not compatible with
+ /// DVFS core voltage scaling, which will be disabled in this case.
+ /// - NV_FALSE specifies PMU will restore CPU voltage after CPU request
+ /// on-off-on transition to the level it has just before the transition
+ /// happens. In this case DVFS core voltage scaling can be enabled.
+ NvBool VCpuOTPOnWakeup;
+
+ /// Specifies PMU Core and CPU voltage regulation accuracy in percent
+ NvU32 AccuracyPercent;
+
+} NvOdmPmuProperty;
+
+/**
+ * Defines SOC power states.
+ */
+typedef enum
+{
+ /// State where power to non-always-on (non-AO) partitions are
+ /// removed, and double-data rate (DDR) SDRAM is in self-refresh
+ /// mode. Wake up by any enabled \a external event/interrupt.
+ NvOdmSocPowerState_DeepSleep,
+
+ /// State where the CPU is halted by the flow controller and power
+ /// is gated, plus DDR is in self-refresh. Wake up by any enabled interrupt.
+ NvOdmSocPowerState_Suspend,
+
+ /// Specifies to disable the SOC power state.
+ NvOdmSocPowerState_Active,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmSocPowerState_Force32 = 0x7FFFFFFFUL
+
+} NvOdmSocPowerState;
+
+/**
+ * SOC power state information.
+ */
+typedef struct NvOdmSocPowerStateInfoRec
+{
+ // Specifies the lowest supported power state.
+ NvOdmSocPowerState LowestPowerState;
+
+ // Specifies the idle time (in Msecs) threshold to enter the power state.
+ NvU32 IdleThreshold;
+
+} NvOdmSocPowerStateInfo;
+
+/** External interface type for USB controllers */
+typedef enum
+{
+ /// Specifies the USB controller is connected to a standard UTMI interface
+ /// (only valid for ::NvOdmIoModule_Usb).
+ NvOdmUsbInterfaceType_Utmi = 1,
+
+ /// Specifies the USB controller is connected to a phy-less ULPI interface
+ /// (only valid for ::NvOdmIoModule_Ulpi).
+ NvOdmUsbInterfaceType_UlpiNullPhy,
+
+ /// Specifies the USB controller is connected to a ULPI interface that has an
+ /// external phy (only valid for \c NvOdmIoModule_Ulpi).
+ NvOdmUsbInterfaceType_UlpiExternalPhy,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmUsbInterfaceType_Force32 = 0x7FFFFFFFUL
+
+} NvOdmUsbInterfaceType;
+
+
+/** Defines the USB line states. */
+typedef enum
+{
+ /// Specifies USB host based charging type.
+ NvOdmUsbChargerType_UsbHost = 0,
+
+ /// Specifies charger type 0, USB compliant charger, when D+ and D- are at low voltage.
+ NvOdmUsbChargerType_SE0 = 1,
+
+ /// Specifies charger type 1, when D+ is high and D- is low.
+ NvOdmUsbChargerType_SJ = 2,
+
+ /// Specifies charger type 2, when D+ is low and D- is high.
+ NvOdmUsbChargerType_SK = 4,
+
+ /// Specifies charger type 3, when D+ and D- are at high voltage.
+ NvOdmUsbChargerType_SE1 = 8,
+
+ /// Specifies charger type 4, D+ and D- are undefined.
+ /// @note If dummy charger is selected, then charger type will be always
+ /// dummy and other type chargers are detected but treated as dummy.
+ NvOdmUsbChargerType_Dummy = 0x10,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmUsbChargerType_Force32 = 0x7FFFFFFF,
+} NvOdmUsbChargerType;
+
+/** Defines the USB mode for the instance. */
+typedef enum
+{
+ /// Specifies the instance is not present or cannot be used for USB.
+ NvOdmUsbModeType_None = 0,
+
+ /// Specifies the instance as USB host.
+ NvOdmUsbModeType_Host = 1,
+
+ /// Specifies the instance as USB Device.
+ NvOdmUsbModeType_Device = 2,
+
+ /// Specifies the instance as USB OTG.
+ NvOdmUsbModeType_OTG= 4,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmUsbModeType_Force32 = 0x7FFFFFFF,
+} NvOdmUsbModeType;
+
+/** Defines the USB ID pin detection type. */
+typedef enum
+{
+ /// Specifies there is no ID pin detection mechanism.
+ NvOdmUsbIdPinType_None = 0,
+
+ /// Specifies ID pin detection is done with GPIO.
+ NvOdmUsbIdPinType_Gpio= 1,
+
+ /// Specifies ID pin detection is done with cable ID.
+ NvOdmUsbIdPinType_CableId= 2,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmUsbIdPinType_Force32 = 0x7FFFFFFF,
+} NvOdmUsbIdPinType;
+
+/** Defines the USB connectors multiplex type. */
+typedef enum
+{
+ /// Specifies there is no connectors mux mechanism
+ NvOdmUsbConnectorsMuxType_None = 0,
+
+ /// Specifies microAB/TypeA mux is available.
+ NvOdmUsbConnectorsMuxType_MicroAB_TypeA= 1,
+
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmUsbConnectorsMuxType_Force32 = 0x7FFFFFFF,
+} NvOdmUsbConnectorsMuxType;
+
+/**
+ * Defines the USB trimmer control values. Keep all values zero unless the
+ * default trimmer values programmed in DDK do not work on the customer board.
+ */
+typedef struct NvOdmUsbTrimmerCtrlRec
+{
+ /// Programmable delay on the Shadow ULPI Clock (0 ~ 31)
+ NvU8 UlpiShadowClkDelay;
+
+ /// Programmable delay on the ULPI Clock out (0 ~ 31)
+ NvU8 UlpiClockOutDelay;
+
+ /// ULPI Data Trimmer Value (0 ~ 7)
+ NvU8 UlpiDataTrimmerSel;
+
+ /// ULPI STP/DIR/NXT Trimmer Value (0 ~ 7)
+ NvU8 UlpiStpDirNxtTrimmerSel;
+} NvOdmUsbTrimmerCtrl;
+
+/** Defines USB interface properties. */
+typedef struct NvOdmUsbPropertyRec
+{
+ /// Specifies the USB controller's external interface type.
+ /// @see NvOdmUsbInterfaceType
+ NvOdmUsbInterfaceType UsbInterfaceType;
+
+ /// Specifies the charger types supported on this interface.
+ /// If dummy charger is selected then other type chargers are detected as dummy.
+ /// @see NvOdmUsbChargerType
+ NvU32 SupportedChargers;
+
+ /// Specifies the time required to wait before checking for the line status.
+ /// @see NvOdmUsbChargerType
+ NvU32 ChargerDetectTimeMs;
+
+ /// Specifies internal PHY to use as source for VBUS detection in the low power mode.
+ /// Set to NV_TRUE to use internal PHY for VBUS detection.
+ /// Set to NV_FALSE to use PMU interrupt for VBUS detection.
+ NvBool UseInternalPhyWakeup;
+
+ /// Specifies the USB mode for the instance.
+ /// @see NvOdmUsbModeType
+ NvU32 UsbMode;
+
+ /// Specifies the USB ID pin detection type.
+ /// @see NvOdmUsbIdPinType
+ NvU32 IdPinDetectionType;
+
+ /// Specifies the USB connectors multiplex type.
+ /// @see NvOdmUsbConnectorsMuxType
+ NvOdmUsbConnectorsMuxType ConMuxType;
+
+ /// Specifies Usb rail to power off or not in the deep sleep mode.
+ /// Set to NV_TRUE to specify usb rail power off in the deep sleep
+ /// Set to NV_FALSE to specify usb rail can not be power off in the deep sleep
+ NvBool UsbRailPoweOffInDeepSleep;
+
+ /// Specifies the USB trimmer values. The default value will be used if all values are zeros.
+ /// @see NvOdmUsbTrimmerCtrl
+ NvOdmUsbTrimmerCtrl TrimmerCtrl;
+} NvOdmUsbProperty;
+
+/** Defines wakeup sources. */
+typedef enum
+{
+ NvOdmGpioWakeupSource_Invalid = 0,
+ NvOdmGpioWakeupSource_RIL,
+ NvOdmGpioWakeupSource_UART,
+ NvOdmGpioWakeupSource_BluetoothIrq,
+ NvOdmGpioWakeupSource_HDMIDetection,
+ NvOdmGpioWakeupSource_USB,
+ NvOdmGpioWakeupSource_Lid,
+ NvOdmGpioWakeupSource_AudioIrq,
+ NvOdmGpioWakeupSource_ACCIrq,
+ NvOdmGpioWakeupSource_HSMMCCardDetect,
+ NvOdmGpioWakeupSource_SdioDat1,
+ NvOdmGpioWakeupSource_SdioCardDetect,
+ NvOdmGpioWakeupSource_KBC,
+ NvOdmGpioWakeupSource_PWR,
+ NvOdmGpioWakeupSource_BasebandModem,
+ NvOdmGpioWakeupSource_DVI,
+ NvOdmGpioWakeupSource_GpsOnOff,
+ NvOdmGpioWakeupSource_GpsInterrupt,
+ NvOdmGpioWakeupSource_Accelerometer,
+ NvOdmGpioWakeupSource_HeadsetDetect,
+ NvOdmGpioWakeupSource_PenInterrupt,
+ NvOdmGpioWakeupSource_WlanInterrupt,
+ NvOdmGpioWakeupSource_UsbVbus,
+ NvOdmGpioWakeupSource_Force32 = 0x7FFFFFFF,
+} NvOdmGpioWakeupSource;
+
+/**
+ * Gets the total memory size for the specified memory type.
+ *
+ * @note The implementation of this function must not make reference to
+ * any global or static variables of any kind whatsoever.
+ *
+ * @param MemType Specifies the memory type.
+ *
+ * @return The memory size (in bytes), or 0 if no memory of that type exists.
+ */
+NvU32 NvOdmQueryMemSize(NvOdmMemoryType MemType);
+
+/**
+ * Gets the memory occupied by the secure region. Must be 1 MB aligned.
+ *
+ * @returns The memory occupied (in bytes).
+ */
+NvU32 NvOdmQuerySecureRegionSize(void);
+
+/**
+ * Gets the size of the carveout region.
+ *
+ * The carveout memory region is contiguous physical memory used by some
+ * software modules instead of allocating memory from the OS heap. This memory
+ * is separate from the operating system's heap.
+ *
+ * The carveout memory region is useful because the OS heap often becomes
+ * fragmented after boot time, making it difficult to obtain physically
+ * contiguous memory.
+ */
+NvU32 NvOdmQueryCarveoutSize(void);
+
+/**
+ * Gets the port to use as the debug console.
+ *
+ * @return The debug console ID.
+ */
+NvOdmDebugConsole NvOdmQueryDebugConsole(void);
+
+/**
+ * Gets the device to use as the download transport.
+ *
+ * @return The download transport device ID.
+ */
+NvOdmDownloadTransport NvOdmQueryDownloadTransport(void);
+
+/**
+ * Gets the null-terminated device name prefix string (i.e., that
+ * part of a device name that is common to all devices of this type).
+ *
+ * @return The device name prefix string.
+ */
+const NvU8* NvOdmQueryDeviceNamePrefix(void);
+
+/**
+ * Gets the configuration info for the display.
+ *
+ * @param Instance The instance number of the display controller.
+ * @return A pointer to the structure containing the display information.
+ */
+const NvOdmQueryDisplayInfo *
+NvOdmQueryGetDisplayInfo(
+ NvU32 Instance);
+
+/**
+ * Gets the interfacing properties of the device connected to a given chip
+ * select on a given SPI controller.
+ *
+ * @param OdmIoModule The ODM I/O module name, such as SPI, S-LINK, or S-Flash.
+ * @param ControllerId The SPI instance ID.
+ * @param ChipSelect The chip select ID from the connected device.
+ *
+ * @return A pointer to a structure describing the device's properties.
+ */
+const NvOdmQuerySpiDeviceInfo *
+NvOdmQuerySpiGetDeviceInfo(
+ NvOdmIoModule OdmIoModule,
+ NvU32 ControllerId,
+ NvU32 ChipSelect);
+
+
+/**
+ * Gets the default signal level of the SPI interfacing lines.
+ * This indicates whether signal lines are in the tristate or not, and if not,
+ * then indicates what is the normal state of the SCLK and data out line.
+ * This state is set once the transaction is completed.
+ * During the transaction, the chip-specific setting is done.
+ *
+ * @param OdmIoModule The ODM I/O module name, such as SPI, S-LINK, or S-Flash.
+ * @param ControllerId The SPI instance ID.
+ *
+ * @return A pointer to a structure describing the idle signal state.
+ */
+const NvOdmQuerySpiIdleSignalState *
+NvOdmQuerySpiGetIdleSignalState(
+ NvOdmIoModule OdmIoModule,
+ NvU32 ControllerId);
+
+/**
+ * Gets the S/PDIF interfacing property parameters with the audio codec that
+ * are set for the data transfer.
+ *
+ * @param SpdifInstanceId The S/PDIF controller instance ID.
+ *
+ * @return A pointer to a structure describing the I2S interface properties.
+ */
+const NvOdmQuerySpdifInterfaceProperty *
+NvOdmQuerySpdifGetInterfaceProperty(
+ NvU32 SpdifInstanceId);
+
+ /**
+ * Gets the I2S interfacing property parameter, which is set for
+ * the data transfer.
+ *
+ * @param I2sInstanceId The I2S controller instance ID.
+ *
+ * @return A pointer to a structure describing the I2S interface properties.
+ *
+ */
+const NvOdmQueryI2sInterfaceProperty *
+NvOdmQueryI2sGetInterfaceProperty(
+ NvU32 I2sInstanceId);
+
+/**
+ * Gets the AC97 interfacing property with AC97 codec parameters that are set
+ * for the data transfer.
+ *
+ * @param Ac97InstanceId The instance ID for the AC97 cotroller.
+ *
+ * @return A pointer to a structure describing the AC97 interface properties.
+ *
+ */
+const NvOdmQueryAc97InterfaceProperty *
+NvOdmQueryAc97GetInterfaceProperty(
+ NvU32 Ac97InstanceId);
+
+/**
+ * Gets the DAP port property.
+ *
+ * This shows how the DAP connection is made along with
+ * the format and mode it supports.
+ *
+ * @param DapPortId The DAP port.
+ *
+ * @return A pointer to a structure holding the DAP port connection properties.
+ */
+const NvOdmQueryDapPortProperty *
+NvOdmQueryDapPortGetProperty(
+ NvU32 DapPortId);
+
+/**
+ * Gets the DAP port connection table.
+ *
+ * This shows how the connections are made along with
+ * the use case.
+ *
+ * @param ConnectionIndex The index to ConnectionTable based on the use case.
+ *
+ * @return A pointer to a structure holding the connection lines.
+ */
+const NvOdmQueryDapPortConnection*
+NvOdmQueryDapPortGetConnectionTable(
+ NvU32 ConnectionIndex);
+
+/**
+ * Gets the I2S audio codec interfacing property.
+ *
+ * @param AudioCodecId The instance ID or the audio codec cotroller.
+ *
+ * @return A pointer to a structure describing the audio codec interface
+ * properties.
+ */
+const NvOdmQueryI2sACodecInterfaceProp *
+NvOdmQueryGetI2sACodecInterfaceProperty(
+ NvU32 AudioCodecId);
+
+/**
+ * Gets the oscillator source.
+ *
+ * @see NvOdmQueryOscillator
+ *
+ * @return The oscillator source.
+ */
+NvOdmQueryOscillator NvOdmQueryGetOscillatorSource(void);
+
+/**
+ * Gets the oscillator drive strength setting.
+ *
+ * @return The oscillator drive strength setting.
+ */
+NvU32 NvOdmQueryGetOscillatorDriveStrength(void);
+
+/**
+ * Gets the null-terminated device manufacturer string.
+ *
+ * @return A pointer to the device manufacturer string.
+ */
+const NvU8* NvOdmQueryManufacturer(void);
+
+/**
+ * Gets the null-terminated device model string.
+ *
+ * @return A pointer to the device model string.
+ */
+const NvU8* NvOdmQueryModel(void);
+
+/**
+ * Gets the null-terminated device platform string.
+ *
+ * @return A pointer to the device platform string.
+ */
+const NvU8* NvOdmQueryPlatform(void);
+
+/**
+ * Gets the null-terminated device project name string.
+ *
+ * @return A pointer to the device project name string.
+ */
+const NvU8* NvOdmQueryProjectName(void);
+
+/**
+ * Gets the wake pads configuration table.
+ *
+ * @param entries A pointer to a variable that this function sets to the
+ * number of entries in the configuration table.
+ *
+ * @return A pointer to the configuration table.
+ */
+const NvOdmWakeupPadInfo *NvOdmQueryGetWakeupPadTable(NvU32 *entries);
+
+/**
+ * Gets the external PMU property.
+ *
+ * @param pPmuProperty A pointer to the returned PMU property structure.
+ *
+ * @return NV_TRUE if successful, or NV_FALSE otherwise.
+ */
+NvBool NvOdmQueryGetPmuProperty(NvOdmPmuProperty* pPmuProperty);
+
+/**
+ * Gets the lowest SOC power state info supported by the ODM.
+ *
+ * @return A pointer to the NvOdmSocPowerStateInfo structure
+ */
+const NvOdmSocPowerStateInfo* NvOdmQueryLowestSocPowerState(void);
+
+/**
+ * Returns the type of the USB interface based on module ID and
+ * instance. The \a Module and \a Instance parameter are identical to the
+ * \a IoModule parameter and array index, respectively, used in the
+ * NvOdmQueryPinMux() and NvOdmQueryClockLimits() APIs.
+ *
+ * @return The properties structure for the USB interface.
+ */
+const NvOdmUsbProperty*
+NvOdmQueryGetUsbProperty(NvOdmIoModule Module, NvU32 Instance);
+
+/**
+ * Gets the interface properties of the SDIO controller.
+ *
+ * @param Instance The instance number of the SDIO controller.
+ * @return A pointer to the structure containing the SDIO interface property.
+ */
+
+const NvOdmQuerySdioInterfaceProperty*
+NvOdmQueryGetSdioInterfaceProperty(
+ NvU32 Instance);
+
+/**
+ * Gets the interface properties of the HSMMC controller.
+ *
+ * @param Instance The instance number of the HSMMC controller.
+ * @return A pointer to the structure containing the HSMMC interface property.
+ */
+
+const NvOdmQueryHsmmcInterfaceProperty*
+NvOdmQueryGetHsmmcInterfaceProperty(
+ NvU32 Instance);
+
+/**
+ * Gets the ODM-specific sector size for block devices.
+ *
+ * @param OdmIoModule The ODM I/O module type.
+ * @return An integer indicating the sector size if non-zero, or
+ * zero if the sector size equals the actual device-reported sector size.
+ */
+NvU32
+NvOdmQueryGetBlockDeviceSectorSize(NvOdmIoModule OdmIoModule);
+
+/**
+ * Gets the OWR device information.
+ *
+ * @param Instance The instance number of the OWR controller.
+ * @return A pointer to the structure containing the OWR device info.
+ */
+const NvOdmQueryOwrDeviceInfo* NvOdmQueryGetOwrDeviceInfo(NvU32 Instance);
+
+/**
+ * Gets the list of supported wakeup sources.
+ *
+ * @param pCount The number of wakeup sources.
+ * @return A pointer to the array containing the wakeup sources.
+ */
+const NvOdmGpioWakeupSource *NvOdmQueryGetWakeupSources(NvU32 *pCount);
+
+#if defined(__cplusplus)
+}
+#endif
+
+/** @} */
+
+#endif // INCLUDED_NVODM_QUERY_H
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvodm_pmu.h ('k') | arch/arm/mach-tegra/nv/include/nvodm_query_discovery.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698