Index: arch/arm/mach-tegra/nv/include/nvodm_query_pinmux.h |
diff --git a/arch/arm/mach-tegra/nv/include/nvodm_query_pinmux.h b/arch/arm/mach-tegra/nv/include/nvodm_query_pinmux.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5365201b8457cfd2b46bbf9050c065e6a74b5a9f |
--- /dev/null |
+++ b/arch/arm/mach-tegra/nv/include/nvodm_query_pinmux.h |
@@ -0,0 +1,534 @@ |
+/* |
+ * 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: |
+ * Pin-Mux Query Interface</b> |
+ * |
+ * @b Description: Defines the ODM query interface for Pin-Mux configurations. |
+ */ |
+ |
+#ifndef INCLUDED_NVODM_QUERY_PINMUX_H |
+#define INCLUDED_NVODM_QUERY_PINMUX_H |
+ |
+/** |
+ * @defgroup nvodm_pinmux PinMux Query Interface |
+ * This is the ODM query interface for pin mux configurations. |
+ * |
+ * Pin-mux configurations are logical definitions. Each I/O module defines |
+ * their configurations (simply an enum), which may be found in the ODM |
+ * adaptation headers. |
+ * |
+ * Every platform defines a unique set of configuration tables. There exists a |
+ * configuration table for each I/O module and each entry in the table |
+ * represents the configuration for an I/O module instance. |
+ * |
+ * This interface is used to query the pin-mux configuration tables defined by |
+ * the ODM, because these configurations are platform-specific. |
+ * @ingroup nvodm_query |
+ * @{ |
+ */ |
+ |
+#include "nvcommon.h" |
+#include "nvodm_modules.h" |
+ |
+#define NVODM_QUERY_PINMAP_MULTIPLEXED 0x40000000UL |
+ |
+#if defined(__cplusplus) |
+extern "C" |
+{ |
+#endif |
+ |
+/* --- Pin-mux Configurations (for each controller) --- */ |
+ |
+/** |
+ * Defines the ATA pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmAtaPinMap_Config1 = 1, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmAtaPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmAtaPinMap; |
+ |
+/** |
+ * Defines the external clock (CDEV, CSUS) pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmExternalClockPinMap_Config1 = 1, |
+ NvOdmExternalClockPinMap_Config2, |
+ NvOdmExternalClockPinMap_Config3, |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmExternalClockPinMap_Force32 = 0x7FFFFFFF |
+} NvOdmExternalClockPinMap; |
+ |
+/** |
+ * Defines the CRT pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmCrtPinMap_Config1 = 1, |
+ NvOdmCrtPinMap_Config2, |
+ NvOdmCrtPinMap_Config3, |
+ NvOdmCrtPinMap_Config4, |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NVOdmCrtPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmCrtPinMap; |
+ |
+/** |
+ * Defines the DAP pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmDapPinMap_Config1 = 1, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmDapPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmDapPinMap; |
+ |
+/** |
+ * Defines the display pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmDisplayPinMap_Config1 = 1, |
+ NvOdmDisplayPinMap_Config2, |
+ NvOdmDisplayPinMap_Config3, |
+ NvOdmDisplayPinMap_Config4, |
+ NvOdmDisplayPinMap_Config5, |
+ NvOdmDisplayPinMap_Config6, |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmDisplayPinMap_Force32 = 0x7FFFFFFFUL, |
+} NvOdmDisplayPinMap; |
+ |
+/** |
+ * Defines the blacklight PWM pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmBacklightPwmPinMap_Config1 = 1, |
+ NvOdmBacklightPwmPinMap_Config2, |
+ NvOdmBacklightPwmPinMap_Config3, |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmBacklightPwmPinMap_Force32 = 0x7FFFFFFFUL, |
+} NvOdmBacklightPwmPinMap; |
+ |
+/** |
+ * Defines the HDCP pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmHdcpPinMap_Config1 = 1, |
+ NvOdmHdcpPinMap_Config2, |
+ NvOdmHdcpPinMap_Config3, |
+ NvOdmHdcpPinMap_Config4, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmHdcpPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmHdcpPinMap; |
+ |
+/** |
+ * Defines the HDCMI pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmHdmiPinMap_Config1 = 1, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmHdmiPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmHdmiPinMap; |
+ |
+/** |
+ * Defines the HSI pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmHsiPinMap_Config1 = 1, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmHsiPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmHsiPinMap; |
+ |
+/** |
+ * Defines the HSMMC pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmHsmmcPinMap_Config1 = 1, |
+ NvOdmHsmmcPinMap_Config2, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmHsmmcPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmHsmmcPinMap; |
+ |
+/** |
+ * Defines the OWR pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmOwrPinMap_Config1 = 1, |
+ NvOdmOwrPinMap_Config2, |
+ NvOdmOwrPinMap_Config3, |
+ |
+ /** |
+ * This configuration disables (tristates) OWR pins. This option may be |
+ * used to change which pins an attached OWR device is using at runtime. |
+ * In some cases, one device might set up OWR, communicate across this bus, |
+ * and then set the OWR bus configuration to "multiplexed" so that another |
+ * device can opt to use OWR with its own configurations at a later time. |
+ */ |
+ NvOdmOwrPinMap_Multiplexed = NVODM_QUERY_PINMAP_MULTIPLEXED, |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmOwrPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmOwrPinMap; |
+ |
+/** |
+ * Defines I2C pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmI2cPinMap_Config1 = 1, |
+ NvOdmI2cPinMap_Config2, |
+ NvOdmI2cPinMap_Config3, |
+ NvOdmI2cPinMap_Config4, |
+ |
+ /** |
+ * This configuration disables (tristates) I2C pins. This option may be |
+ * used to change which pins an attached I2C device is using at runtime. |
+ * |
+ * In some cases, one device might set up I2C, communicate across this bus, |
+ * and then set the I2C bus configuration to "multiplexed" so that another |
+ * device can opt to use I2C with its own configurations at a later time. |
+ * |
+ * This option is only supported on the I2C_2 controller (AP15, AP16, AP20). |
+ */ |
+ NvOdmI2cPinMap_Multiplexed = NVODM_QUERY_PINMAP_MULTIPLEXED, |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmI2cPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmI2cPinMap; |
+ |
+/** |
+ * Defines the I2C PMU pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmI2cPmuPinMap_Config1 = 1, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmI2cPmuPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmI2cPmuPinMap; |
+ |
+/** |
+ * Defines the PWM pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmPwmPinMap_Config1 = 1, |
+ NvOdmPwmPinMap_Config2, |
+ NvOdmPwmPinMap_Config3, |
+ NvOdmPwmPinMap_Config4, |
+ NvOdmPwmPinMap_Config5, |
+ NvOdmPwmPinMap_Config6, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmPwmPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmPwmPinMap; |
+ |
+/** |
+ * Defines KBD pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmKbdPinMap_Config1 = 1, |
+ NvOdmKbdPinMap_Config2, |
+ NvOdmKbdPinMap_Config3, |
+ NvOdmKbdPinMap_Config4, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmKbdPinMap_Forc32 = 0x7FFFFFFF, |
+} NvOdmKbdPinMap; |
+ |
+/** |
+ * Defines MIO pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmMioPinMap_Config1 = 1, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmMioPinMap_Forc32 = 0x7FFFFFFF, |
+} NvOdmMioPinMap; |
+ |
+/** |
+ * Defines NAND pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmNandPinMap_Config1 = 1, |
+ NvOdmNandPinMap_Config2, |
+ NvOdmNandPinMap_Config3, |
+ NvOdmNandPinMap_Config4, |
+ NvOdmNandPinMap_Config5, |
+ NvOdmNandPinMap_Config6, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmNandPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmNandPinMap; |
+ |
+/** |
+ * Defines the SDIO pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmSdioPinMap_Config1 = 1, |
+ NvOdmSdioPinMap_Config2, |
+ NvOdmSdioPinMap_Config3, |
+ NvOdmSdioPinMap_Config4, |
+ NvOdmSdioPinMap_Config5, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmSdioPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmSdioPinMap; |
+ |
+/** |
+ * Defines the SFLASH pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmSflashPinMap_Config1 = 1, |
+ NvOdmSflashPinMap_Config2, |
+ NvOdmSflashPinMap_Config3, |
+ NvOdmSflashPinMap_Config4, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmSflashPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmSflashPinMap; |
+ |
+/** |
+ * Defines the SPDIF pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmSpdifPinMap_Config1 = 1, /**< Default SPDIF configuration. */ |
+ NvOdmSpdifPinMap_Config2, |
+ NvOdmSpdifPinMap_Config3, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmSpdifPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmSpdifPinMap; |
+ |
+/** |
+ * Defines the SPI pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmSpiPinMap_Config1 = 1, |
+ NvOdmSpiPinMap_Config2, |
+ NvOdmSpiPinMap_Config3, |
+ NvOdmSpiPinMap_Config4, |
+ NvOdmSpiPinMap_Config5, |
+ NvOdmSpiPinMap_Config6, |
+ |
+ /** |
+ * This configuration disables (tristates) SPI pins. This option may be |
+ * used to change which pins an attached SPI device is using at runtime. |
+ * |
+ * In some cases, one device might set up SPI, communicate across this bus, |
+ * and then set the SPI bus configuration to "multiplexed" so that another |
+ * device can opt to use SPI with its own configurations at a later time. |
+ * |
+ * This option is only supported on SPI_3 (AP15, AP16). |
+ */ |
+ NvOdmSpiPinMap_Multiplexed = NVODM_QUERY_PINMAP_MULTIPLEXED, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmSpiPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmSpiPinMap; |
+ |
+/** |
+ * Defines the TV-out pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmTvoPinMap_Config1 = 1, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmTvoPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmTvoPinMap; |
+ |
+/** |
+ * Defines the USB-ULPI pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmUsbPinMap_Config1 = 1, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmUsbPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmUsbPinMap; |
+ |
+ |
+/** |
+ * Defines the TWC pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmTwcPinMap_Config1 = 1, |
+ NvOdmTwcPinMap_Config2, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmTwcPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmTwcPinMap; |
+ |
+/** |
+ * Defines the UART pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmUartPinMap_Config1 = 1, |
+ NvOdmUartPinMap_Config2, |
+ NvOdmUartPinMap_Config3, |
+ NvOdmUartPinMap_Config4, |
+ NvOdmUartPinMap_Config5, |
+ NvOdmUartPinMap_Config6, |
+ NvOdmUartPinMap_Config7, |
+ |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmUartPinMap_Force32 = 0x7FFFFFFF, |
+} NvOdmUartPinMap; |
+ |
+/** |
+ * Defines the video input pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmVideoInputPinMap_Config1 = 1, |
+ NvOdmVideoInputPinMap_Config2, |
+ /** Ignore -- Forces compilers to make 32-bit enums. */ |
+ NvOdmVideoInputPinMap_Force32 = 0x7FFFFFFFUL, |
+} NvOdmVideoInputPinMap; |
+ |
+/** |
+ * Defines the PCI-Express pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmPciExpressPinMap_Config1 = 1, |
+ NvOdmPciExpressPinMap_Force32 = 0x7FFFFFFFUL, |
+} NvOdmPciExpressPinMap; |
+ |
+/** |
+ * Defines the SyncNor / OneNAND pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmSyncNorPinMap_Config1 = 1, |
+ NvOdmSyncNorPinMap_Config2, |
+ NvOdmSyncNorPinMap_Config3, |
+ NvOdmSyncNorPinMap_Force32 = 0x7FFFFFFFUL, |
+} NvOdmSyncNorPinMap; |
+ |
+/** |
+ * Defines the PTM pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmPtmPinMap_Config1 = 1, |
+ NvOdmPtmPinMap_Force32 = 0x7FFFFFFFUL, |
+} NvOdmPtmPinMap; |
+ |
+/** |
+ * Defines the one-wire pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmOneWirePinMap_Config1 = 1, |
+ NvOdmOneWirePinMap_Config2, |
+ NvOdmOneWirePinMap_Config3, |
+ NvOdmOneWirePinMap_Force32 = 0x7FFFFFFFUL, |
+} NvOdmOneWirePinMap; |
+ |
+ |
+/** |
+ * Defines the ULPI pin-mux configurations. |
+ */ |
+typedef enum |
+{ |
+ NvOdmUlpiPinMap_Config1 = 1, |
+ NvOdmUlpiPinMap_Force32 = 0x7FFFFFFFUL, |
+} NvOdmUlpiPinMap; |
+ |
+/* --- Pin-mux API --- */ |
+ |
+/** |
+ * Gets the pinmux configuration table for a given module. |
+ * |
+ * @param IoModule The I/O module to query. |
+ * @param pPinMuxConfigTable A const pointer to the module's configuration |
+ * table. Each entry in the table represents the configuration for the I/O |
+ * module instance, where the instance indices start from 0. |
+ * @param pCount A pointer to a variable that this function sets to the |
+ * number of entires in the configuration table. |
+ */ |
+void |
+NvOdmQueryPinMux( |
+ NvOdmIoModule IoModule, |
+ const NvU32 **pPinMuxConfigTable, |
+ NvU32 *pCount); |
+ |
+/** |
+ * Gets the maximum clock speed for a given module as imposed by a board. |
+ * |
+ * @param IoModule The I/O module to query. |
+ * @param pClockSpeedLimits A const pointer to the module's clock speed limit. |
+ * Each entry in the array represents the clock speed limit for the I/O |
+ * module instance, where the instance indices start from 0. |
+ * @param pCount A pointer to a variable that this function sets to the |
+ * number of entries in the \a pClockSpeedLimits array. |
+ */ |
+ |
+void |
+NvOdmQueryClockLimits( |
+ NvOdmIoModule IoModule, |
+ const NvU32 **pClockSpeedLimits, |
+ NvU32 *pCount); |
+ |
+#if defined(__cplusplus) |
+} |
+#endif |
+ |
+/** @} */ |
+ |
+#endif // INCLUDED_NVODM_QUERY_PINMUX_H |