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

Unified Diff: arch/arm/mach-tegra/nv/include/nvodm_query_memc.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_query_kbc.h ('k') | arch/arm/mach-tegra/nv/include/nvodm_query_nand.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_memc.h
diff --git a/arch/arm/mach-tegra/nv/include/nvodm_query_memc.h b/arch/arm/mach-tegra/nv/include/nvodm_query_memc.h
new file mode 100644
index 0000000000000000000000000000000000000000..57dfae9afb2d051486a3575c9f5cdef9fcbf997d
--- /dev/null
+++ b/arch/arm/mach-tegra/nv/include/nvodm_query_memc.h
@@ -0,0 +1,251 @@
+/*
+ * 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:
+ * Memory Controller Query Interface</b>
+ *
+ * @b Description: Defines the ODM query interface for Memory Controller.
+ */
+
+#ifndef INCLUDED_NVODM_QUERY_MEMC_H
+#define INCLUDED_NVODM_QUERY_MEMC_H
+
+/**
+ * @defgroup nvodm_memc Memory Controller Query Interface
+ * This is the ODM query interface for memory controller.
+ * @ingroup nvodm_query
+ * @{
+ */
+
+#include "nvcommon.h"
+#include "nvodm_query.h"
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+/**
+ * Holds the configuration parameters for asynchronous memory like NOR flash
+ * or Memory Mapped I/O (MIO).
+ */
+
+typedef struct
+{
+ /// Holds TRUE for enabling access time extension using ROM busy pin.
+ NvBool isRomBusyEnable;
+
+ /// Holds the dead time in nano seconds between the end of a write access and
+ /// the start of the following access (write or read) for NOR/MIO memory.
+ NvU32 WriteDeadTime;
+
+ /// Holds the access time in nano seconds for which write signal is asserted
+ /// during a write access for MIO/NOR memory.
+ NvU32 WriteAccessTime;
+
+ /// Holds the dead time in nano seconds between the end of a read access and
+ /// the start of the following access (write or read) for MIO/NOR memory.
+ NvU32 ReadDeadTime;
+
+ /// Holds the access time in nano seconds for which read signal is asserted
+ /// during a read access.
+ NvU32 ReadAccessTime;
+
+} NvOdmAsynchMemConfig;
+
+/**
+ * Holds synchronous memory (SDRAM) controller configuration parameters for the
+ * specified SDRAM frequency and controller core voltage. This structure is
+ * assigned fixed revision 1.0.
+ */
+typedef struct NvOdmSdramControllerConfigRec
+{
+ /// Holds the SDRAM frequency in kHz.
+ NvU32 SdramKHz;
+
+ /// Holds minimum core voltage in mV for memory controller operations at
+ /// the specified SDRAM frequency. Actual core voltage can be set higher by
+ /// DVFS depending on the operation requirements for other SoC modules.
+ NvU32 EmcCoreVoltageMv;
+
+ /// Holds the memory controller timing parameter 0.
+ NvU32 EmcTiming0;
+
+ /// Holds the memory controller timing parameter 1.
+ NvU32 EmcTiming1;
+
+ /// Holds the memory controller timing parameter 2.
+ NvU32 EmcTiming2;
+
+ /// Holds the memory controller timing parameter 3.
+ NvU32 EmcTiming3;
+
+ /// Holds the memory controller timing parameter 4.
+ NvU32 EmcTiming4;
+
+ /// Holds the memory controller timing parameter 5.
+ NvU32 EmcTiming5;
+
+ /// Holds the memory controller FBIO configuration parameter 6.
+ NvU32 EmcFbioCfg6;
+
+ /// Holds the memory controller FBIO QSIB delay parameter.
+ NvU32 EmcFbioDqsibDly;
+
+ /// Holds the emory controller FBIO QUSE delay parameter.
+ NvU32 EmcFbioQuseDly;
+} NvOdmSdramControllerConfig;
+
+/// Defines revision for basic memory controller configuration structure,
+/// i.e., 0x10 is Rev 1.0.
+#define NV_EMC_BASIC_REV (0x10)
+
+/// Defines maximum number of advanced memory controller timing parameters.
+#define NV_EMC_ADV_PARAM_NUM_MAX (50)
+
+/**
+ * Holds synchronous memory (SDRAM) advanced controller configuration
+ * parameters for the specified SDRAM frequency and controller core voltage.
+ * The revision of this structure is started with 2.0, and it is embedded as
+ * the structure field.
+ */
+typedef struct NvOdmSdramControllerConfigAdvRec
+{
+ /// Holds revision of this structure, e.g., 0x20 is Rev 2.0.
+ NvU32 Revision;
+
+ /// Holds the SDRAM frequency in kHz.
+ NvU32 SdramKHz;
+
+ /// Holds minimum core voltage in mV for memory controller operations at
+ /// the specified SDRAM frequency. Actual core voltage can be set higher by
+ /// DVFS depending on the operation requirements for other SoC modules.
+ NvU32 EmcCoreVoltageMv;
+
+ /// Holds the number of advanced memory controller timing parameters.
+ NvU32 EmcTimingParamNum;
+
+ /// Holds the advanced memory controller timing parameters.
+ NvU32 EmcTimingParameters[NV_EMC_ADV_PARAM_NUM_MAX];
+} NvOdmSdramControllerConfigAdv;
+
+/**
+ * Gets the device memory controller configuration.
+ *
+ * @note This function is called early from the boot process where
+ * global variables are not yet valid. Care must be taken not to
+ * use global variables in the implementation of this function.
+ *
+ * @note The implementation of this function must not make reference to
+ * any global or static variables of any kind whatsoever.
+ *
+ * @see NvOdmAsynchMemConfig
+ *
+ * @param ChipSelect The chip select for which configuration
+ * is required:
+ * - 0 means chip select A
+ * - 1 means chip select B
+ * - 2 means chip select C
+ * - and so on.
+ *
+ * @param pMemConfig A pointer to the returned NOR memory configuration.
+ *
+ * @return NV_TRUE if successful, or NV_FALSE otherwise.
+ *
+ */
+NvBool NvOdmQueryAsynchMemConfig(NvU32 ChipSelect, NvOdmAsynchMemConfig *pMemConfig);
+
+
+/**
+ * Gets the configuration table that provides SDRAM controller parameters for
+ * the selected set of SDRAM frequencies and controller core voltages. This
+ * table is used by the memory controller DVFS.
+ *
+ * @sa NvOdmSdramControllerConfig structure description for the format of each
+ * table entry, revision 1.0.
+ * @sa NvOdmSdramControllerConfigAdv structure description for the format of
+ * each table entry, revision 2.0.
+ *
+ * @note The maximum scaled SDRAM frequency Fmax is limited by boot configuration
+ * of memory:
+ * <pre>
+ * PLL - PLLM: Fmax = (PLLM boot output frequency)/2
+ * </pre>
+ * The minimum scaled SDRAM frequency is fixed as
+ * <pre>
+ * Fmin = 12MHz
+ * </pre>
+ *
+ * @par SDRAM Frequency Ladders
+ *
+ * Revision 1.0 - Only entries for Fmax and evenly
+ * divided from Fmax SDRAM frequencies above Fmin are used by DVFS (e.g. Fmax,
+ * Fmax/2, Fmax/4, Fmax/6, etc). All other entries are ignored. Hence, one
+ * table can contain entries for all different PLLM configurations used for the
+ * particular ODM platform, and DVFS will automatically select the frequency ladder
+ * based on the boot settings. For example, the table can mix entries for Fmax
+ * = 166MHz ladder (166/83/41.5/27.6) and Fmax = 133MHz ladder (133/66.5/33.25/
+ * 21.16). The table is not required to be sorted in any way.
+ *
+ * Revision 2.0 - Only entries for Fmax and ....
+ * ladders
+ *
+ * The memory controller DVFS is enabled, provided all of the following
+ * conditions are true:
+ * - This function returns a non-NULL pointer to the table.
+ * - The table includes an entry for Fmax SDRAM frequency.
+ * - The table includes an entry for boot SDRAM frequency (if boot configuration
+ * utilizes EMC divider to set initial SDRAM frequency different from Fmax).
+ * This condition is applicable only to Revision 1.0 configuration.
+ * If any of the above conditions are not met, memory controller DVFS will be
+ * disabled and boot SDRAM configuration is preserved during run time.
+ *
+ * @param pEntries A pointer to a variable which this function sets to the
+ * number of entires in the configuration table.
+ * @param pRevision A pointer to a variable which this function sets to the
+ * revision number of the configuration table entry structure.
+ *
+ * @return A const pointer to the configuration table, or NULL if EMC DVFS
+ * is disabled.
+ */
+const void*
+NvOdmQuerySdramControllerConfigGet(NvU32 *pEntries, NvU32 *pRevision);
+
+#if defined(__cplusplus)
+}
+#endif
+
+/** @} */
+
+#endif // INCLUDED_NVODM_QUERY_MEMC_H
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvodm_query_kbc.h ('k') | arch/arm/mach-tegra/nv/include/nvodm_query_nand.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698