diff options
Diffstat (limited to 'arch/arm/mach-tegra/include/nvodm_query_pinmux.h')
-rw-r--r-- | arch/arm/mach-tegra/include/nvodm_query_pinmux.h | 534 |
1 files changed, 534 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/include/nvodm_query_pinmux.h b/arch/arm/mach-tegra/include/nvodm_query_pinmux.h new file mode 100644 index 000000000000..5365201b8457 --- /dev/null +++ b/arch/arm/mach-tegra/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 |