summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2014-04-16 12:09:14 +0530
committerSeema Khowala <seemaj@nvidia.com>2014-04-23 14:05:09 -0700
commite9a1d6c3fbe677ce2f2fb163766bca859b1b4514 (patch)
tree0fe14e27d0c103fcf61f838b6e1762dc75b5457b
parent3b0cc2dfdfc555ecbcb1a9d8b69662a3f68bf200 (diff)
ARM: tegra: remove T114 specific board files.
Remove T114 specific board files as these are not supported on build/latest releases. The platform's board files which are removed are: - Dalmore - Pluto - Macallan - Pismo - Roth Change-Id: Ie532fa8b326cef1aeda98d63215d7ecad26fb1ab Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/396859 Reviewed-by: Automatic_Commit_Validation_User
-rw-r--r--arch/arm/mach-tegra/Makefile48
-rw-r--r--arch/arm/mach-tegra/board-dalmore-kbc.c209
-rw-r--r--arch/arm/mach-tegra/board-dalmore-memory.c8730
-rw-r--r--arch/arm/mach-tegra/board-dalmore-panel.c521
-rw-r--r--arch/arm/mach-tegra/board-dalmore-power.c1454
-rw-r--r--arch/arm/mach-tegra/board-dalmore-sdhci.c441
-rw-r--r--arch/arm/mach-tegra/board-dalmore-sensors.c862
-rw-r--r--arch/arm/mach-tegra/board-dalmore.c750
-rw-r--r--arch/arm/mach-tegra/board-dalmore.h131
-rw-r--r--arch/arm/mach-tegra/board-macallan-kbc.c94
-rw-r--r--arch/arm/mach-tegra/board-macallan-memory.c2010
-rw-r--r--arch/arm/mach-tegra/board-macallan-panel.c450
-rw-r--r--arch/arm/mach-tegra/board-macallan-power.c890
-rw-r--r--arch/arm/mach-tegra/board-macallan-sdhci.c329
-rw-r--r--arch/arm/mach-tegra/board-macallan-sensors.c840
-rw-r--r--arch/arm/mach-tegra/board-macallan.c619
-rw-r--r--arch/arm/mach-tegra/board-macallan.h122
-rw-r--r--arch/arm/mach-tegra/board-pismo-memory.c1620
-rw-r--r--arch/arm/mach-tegra/board-pismo-panel.c431
-rw-r--r--arch/arm/mach-tegra/board-pismo-power.c919
-rw-r--r--arch/arm/mach-tegra/board-pismo-sdhci.c409
-rw-r--r--arch/arm/mach-tegra/board-pismo-sensors.c696
-rw-r--r--arch/arm/mach-tegra/board-pismo.c677
-rw-r--r--arch/arm/mach-tegra/board-pismo.h124
-rw-r--r--arch/arm/mach-tegra/board-pluto-kbc.c136
-rw-r--r--arch/arm/mach-tegra/board-pluto-memory.c4406
-rw-r--r--arch/arm/mach-tegra/board-pluto-panel.c449
-rw-r--r--arch/arm/mach-tegra/board-pluto-power.c946
-rw-r--r--arch/arm/mach-tegra/board-pluto-sdhci.c350
-rw-r--r--arch/arm/mach-tegra/board-pluto-sensors.c1031
-rw-r--r--arch/arm/mach-tegra/board-pluto.c1297
-rw-r--r--arch/arm/mach-tegra/board-pluto.h166
-rw-r--r--arch/arm/mach-tegra/board-roth-fan.c111
-rw-r--r--arch/arm/mach-tegra/board-roth-kbc.c123
-rw-r--r--arch/arm/mach-tegra/board-roth-leds.c106
-rw-r--r--arch/arm/mach-tegra/board-roth-memory.c2597
-rw-r--r--arch/arm/mach-tegra/board-roth-panel.c971
-rw-r--r--arch/arm/mach-tegra/board-roth-power.c882
-rw-r--r--arch/arm/mach-tegra/board-roth-sdhci.c460
-rw-r--r--arch/arm/mach-tegra/board-roth-sensors.c560
-rw-r--r--arch/arm/mach-tegra/board-roth.c660
-rw-r--r--arch/arm/mach-tegra/board-roth.h117
42 files changed, 0 insertions, 38744 deletions
diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile
index ca7a87c1dd1e..994863896811 100644
--- a/arch/arm/mach-tegra/Makefile
+++ b/arch/arm/mach-tegra/Makefile
@@ -182,44 +182,6 @@ obj-y += panel-p-wuxga-10-1.o
obj-y += panel-lgd-wxga-7-0.o
obj-y += panel-s-wqxga-10-1.o
-obj-${CONFIG_MACH_DALMORE} += board-dalmore.o
-obj-${CONFIG_MACH_DALMORE} += board-dalmore-memory.o
-obj-${CONFIG_MACH_DALMORE} += board-dalmore-power.o
-obj-${CONFIG_MACH_DALMORE} += board-dalmore-sdhci.o
-obj-${CONFIG_MACH_DALMORE} += board-dalmore-panel.o
-obj-${CONFIG_MACH_DALMORE} += board-roth-panel.o
-obj-${CONFIG_MACH_DALMORE} += board-dalmore-kbc.o
-obj-${CONFIG_MACH_DALMORE} += board-dalmore-sensors.o
-obj-${CONFIG_MACH_DALMORE} += panel-a-1080p-11-6.o
-obj-${CONFIG_MACH_DALMORE} += panel-s-wqxga-10-1.o
-
-obj-${CONFIG_MACH_PISMO} += board-pismo.o
-obj-${CONFIG_MACH_PISMO} += board-pismo-memory.o
-obj-${CONFIG_MACH_PISMO} += board-pismo-power.o
-obj-${CONFIG_MACH_PISMO} += board-pismo-sdhci.o
-obj-${CONFIG_MACH_PISMO} += board-pismo-panel.o
-obj-${CONFIG_MACH_PISMO} += board-pismo-sensors.o
-
-obj-${CONFIG_MACH_MACALLAN} += board-macallan.o
-obj-${CONFIG_MACH_MACALLAN} += board-macallan-memory.o
-obj-${CONFIG_MACH_MACALLAN} += board-macallan-power.o
-obj-${CONFIG_MACH_MACALLAN} += board-macallan-sdhci.o
-obj-${CONFIG_MACH_MACALLAN} += board-macallan-panel.o
-obj-${CONFIG_MACH_MACALLAN} += board-macallan-kbc.o
-obj-${CONFIG_MACH_MACALLAN} += board-macallan-sensors.o
-
-
-obj-${CONFIG_MACH_TEGRA_PLUTO} += board-pluto.o
-obj-${CONFIG_MACH_TEGRA_PLUTO} += board-pluto-memory.o
-obj-${CONFIG_MACH_TEGRA_PLUTO} += board-pluto-power.o
-obj-${CONFIG_MACH_TEGRA_PLUTO} += board-pluto-sdhci.o
-obj-${CONFIG_MACH_TEGRA_PLUTO} += board-pluto-panel.o
-obj-${CONFIG_MACH_TEGRA_PLUTO} += board-pluto-kbc.o
-obj-${CONFIG_MACH_TEGRA_PLUTO} += board-pluto-sensors.o
-obj-${CONFIG_MACH_TEGRA_PLUTO} += panel-l-720p-5.o
-obj-${CONFIG_MACH_TEGRA_PLUTO} += panel-j-720p-4-7.o
-obj-${CONFIG_MACH_TEGRA_PLUTO} += panel-s-1080p-5.o
-
obj-${CONFIG_MACH_ARDBEG} += board-ardbeg.o
obj-${CONFIG_MACH_ARDBEG} += board-ardbeg-sdhci.o
obj-${CONFIG_MACH_ARDBEG} += board-ardbeg-sensors.o
@@ -288,13 +250,3 @@ obj-$(CONFIG_TEGRA_BBC_THERMAL) += tegra_bbc_thermal.o
obj-${CONFIG_TEGRA_ISOMGR} += isomgr.o
obj-${CONFIG_TEGRA_NVDUMPER} += nvdumper.o
-
-obj-${CONFIG_MACH_ROTH} += board-roth.o
-obj-${CONFIG_MACH_ROTH} += board-roth-memory.o
-obj-${CONFIG_MACH_ROTH} += board-roth-power.o
-obj-${CONFIG_MACH_ROTH} += board-roth-sdhci.o
-obj-${CONFIG_MACH_ROTH} += board-roth-panel.o
-obj-${CONFIG_MACH_ROTH} += board-roth-kbc.o
-obj-${CONFIG_MACH_ROTH} += board-roth-sensors.o
-obj-${CONFIG_MACH_ROTH} += board-roth-fan.o
-obj-${CONFIG_MACH_ROTH} += board-roth-leds.o
diff --git a/arch/arm/mach-tegra/board-dalmore-kbc.c b/arch/arm/mach-tegra/board-dalmore-kbc.c
deleted file mode 100644
index b9c9ea42b6c7..000000000000
--- a/arch/arm/mach-tegra/board-dalmore-kbc.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-dalmore-kbc.c
- * Keys configuration for Nvidia tegra3 dalmore platform.
- *
- * Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307, USA
- */
-
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/input.h>
-#include <linux/input/tegra_kbc.h>
-#include <linux/io.h>
-#include <linux/gpio.h>
-#include <linux/gpio_keys.h>
-#include <linux/mfd/palmas.h>
-
-#include "tegra-board-id.h"
-#include "board.h"
-#include "board-dalmore.h"
-#include "devices.h"
-#include "iomap.h"
-#include "wakeups-t11x.h"
-
-#define DALMORE_ROW_COUNT 3
-#define DALMORE_COL_COUNT 3
-
-static int dalmore_wakeup_key(void)
-{
- int wakeup_key;
- u64 status = readl(IO_ADDRESS(TEGRA_PMC_BASE) + PMC_WAKE_STATUS)
- | (u64)readl(IO_ADDRESS(TEGRA_PMC_BASE)
- + PMC_WAKE2_STATUS) << 32;
-
- if (status & (1ULL << TEGRA_WAKE_GPIO_PQ0))
- wakeup_key = KEY_POWER;
- else if (status & (1ULL << TEGRA_WAKE_GPIO_PS0))
- wakeup_key = SW_LID;
- else
- wakeup_key = KEY_RESERVED;
-
- return wakeup_key;
-}
-
-static const u32 kbd_keymap[] = {
- KEY(0, 0, KEY_POWER),
- KEY(0, 1, KEY_HOME),
-
- KEY(1, 0, KEY_RESERVED),
- KEY(1, 1, KEY_VOLUMEDOWN),
-
- KEY(2, 0, KEY_CAMERA),
- KEY(2, 1, KEY_VOLUMEUP),
- KEY(2, 2, KEY_2),
-};
-
-static const struct matrix_keymap_data keymap_data = {
- .keymap = kbd_keymap,
- .keymap_size = ARRAY_SIZE(kbd_keymap),
-};
-
-static struct tegra_kbc_wake_key dalmore_wake_cfg[] = {
- [0] = {
- .row = 0,
- .col = 0,
- },
-};
-
-static struct tegra_kbc_platform_data dalmore_kbc_platform_data = {
- .debounce_cnt = 20 * 32, /* 20 ms debaunce time */
- .repeat_cnt = 1,
- .scan_count = 30,
- .wakeup = true,
- .keymap_data = &keymap_data,
- .wake_cnt = 1,
- .wake_cfg = &dalmore_wake_cfg[0],
- .wakeup_key = KEY_POWER,
-#ifdef CONFIG_ANDROID
- .disable_ev_rep = true,
-#endif
-};
-
-#define GPIO_KCODE(_kcode, _kev, _gpio, _irq, _iswake, _deb) \
- { \
- .code = _kcode, \
- .gpio = TEGRA_GPIO_##_gpio, \
- .irq = _irq, \
- .active_low = 1, \
- .desc = #_kcode, \
- .type = _kev, \
- .wakeup = _iswake, \
- .debounce_interval = _deb, \
- }
-
-#define GPIO_KEY(_id, _gpio, _iswake) \
- GPIO_KCODE(_id, EV_KEY, _gpio, 0, _iswake, 10)
-
-#define GPIO_IKEY(_id, _irq, _iswake, _deb) \
- GPIO_KCODE(_id, EV_KEY, INVALID, _irq, _iswake, _deb)
-
-static struct gpio_keys_button dalmore_int_keys[] = {
- [0] = GPIO_IKEY(KEY_POWER, MAX77663_IRQ_BASE +
- MAX77663_IRQ_ONOFF_EN0_FALLING, 0, 100),
- [1] = GPIO_IKEY(KEY_POWER, MAX77663_IRQ_BASE +
- MAX77663_IRQ_ONOFF_EN0_1SEC, 0, 3000),
-};
-
-static struct gpio_keys_button dalmore_e1611_1001_keys[] = {
- [0] = GPIO_KEY(KEY_POWER, PQ0, 1),
- [1] = GPIO_KEY(KEY_VOLUMEUP, PR2, 0),
- [2] = GPIO_KEY(KEY_VOLUMEDOWN, PR1, 0),
- [3] = GPIO_KEY(KEY_HOME, PI5, 0),
- [4] = GPIO_KCODE(SW_ROTATE_LOCK, EV_SW, PQ1, 0, 0, 10),
-};
-
-static struct gpio_keys_button dalmore_e1611_1000_keys[] = {
- [0] = GPIO_KCODE(SW_ROTATE_LOCK, EV_SW, PI5, 0, 0, 10),
-};
-
-static struct gpio_keys_platform_data dalmore_int_keys_pdata = {
- .buttons = dalmore_int_keys,
- .nbuttons = ARRAY_SIZE(dalmore_int_keys),
-};
-
-static struct gpio_keys_platform_data dalmore_e1611_1001_keys_pdata = {
- .buttons = dalmore_e1611_1001_keys,
- .nbuttons = ARRAY_SIZE(dalmore_e1611_1001_keys),
- .wakeup_key = dalmore_wakeup_key,
-};
-
-static struct gpio_keys_platform_data dalmore_e1611_1000_keys_pdata = {
- .buttons = dalmore_e1611_1000_keys,
- .nbuttons = ARRAY_SIZE(dalmore_e1611_1000_keys),
-};
-
-static struct platform_device dalmore_gpio_keys_device = {
- .name = "gpio-keys",
- .id = 0,
- .dev = {
- .platform_data = &dalmore_int_keys_pdata,
- },
-};
-
-static void __init dalmore_register_kbc(void)
-{
- struct tegra_kbc_platform_data *data = &dalmore_kbc_platform_data;
- int i;
-
- tegra_kbc_device.dev.platform_data = &dalmore_kbc_platform_data;
-
- for (i = 0; i < DALMORE_ROW_COUNT; i++) {
- data->pin_cfg[i].num = i;
- data->pin_cfg[i].type = PIN_CFG_ROW;
- }
- for (i = 0; i < DALMORE_COL_COUNT; i++) {
- data->pin_cfg[i + KBC_PIN_GPIO_11].num = i;
- data->pin_cfg[i + KBC_PIN_GPIO_11].type = PIN_CFG_COL;
- }
-
- platform_device_register(&tegra_kbc_device);
-}
-
-int __init dalmore_kbc_init(void)
-{
- struct board_info board_info;
-
- tegra_get_board_info(&board_info);
- pr_info("Boardid:SKU = 0x%04x:0x%04x\n", board_info.board_id, board_info.sku);
-
- if (board_info.board_id == BOARD_E1613) {
- dalmore_register_kbc();
- goto gpio_keys;
- }
-
- if ((board_info.board_id == BOARD_E1611) && (board_info.sku == 1000)) {
- dalmore_register_kbc();
- dalmore_gpio_keys_device.dev.platform_data =
- &dalmore_e1611_1000_keys_pdata;
- } else {
- int ret;
-
- ret = gpio_request(TEGRA_GPIO_PR0, "row0");
- if (ret < 0) {
- pr_err("gpio_request for PR0 failed: %d\n", ret);
- } else {
- gpio_direction_output(TEGRA_GPIO_PR0, 0);
- }
-
- dalmore_gpio_keys_device.dev.platform_data =
- &dalmore_e1611_1001_keys_pdata;
- }
-
-gpio_keys:
- platform_device_register(&dalmore_gpio_keys_device);
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-dalmore-memory.c b/arch/arm/mach-tegra/board-dalmore-memory.c
deleted file mode 100644
index 3fe210e28104..000000000000
--- a/arch/arm/mach-tegra/board-dalmore-memory.c
+++ /dev/null
@@ -1,8730 +0,0 @@
-/*
- * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307, USA
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_data/tegra_emc_pdata.h>
-
-#include "board.h"
-#include "board-dalmore.h"
-
-#include "tegra-board-id.h"
-#include "tegra11_emc.h"
-#include "devices.h"
-#include "common.h"
-
-static struct tegra11_emc_table e1611_h5tc4g63afr_rda_T40S_table[] = {
- {
- 0x41, /* Rev 4.0.3 */
- 12750, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000003e, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000060, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000018, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000005, /* EMC_TXSR */
- 0x00000005, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000064, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x800001c6, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40040001, /* MC_EMEM_ARB_CFG */
- 0x8000003f, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x77e30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000000e, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 57820, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 20400, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000026, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000005, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x0000009a, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000026, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000006, /* EMC_TXSR */
- 0x00000006, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x000000a0, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000023a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40020001, /* MC_EMEM_ARB_CFG */
- 0x80000046, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x76230303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000014, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 35610, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 40800, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000012, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000001, /* EMC_RC */
- 0x0000000a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000001, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000134, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000004d, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000008, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000000c, /* EMC_TXSR */
- 0x0000000c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000002, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000013f, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000370, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0xa0000001, /* MC_EMEM_ARB_CFG */
- 0x8000005b, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74a30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000002a, /* MC_PTSA_GRANT_DECREMENT */
- 0x00b000b0, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00b000c4, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00d700eb, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000eb, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00eb00eb, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00eb, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 20850, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 68000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000000a, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000003, /* EMC_RC */
- 0x00000011, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000202, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000080, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000000f, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000013, /* EMC_TXSR */
- 0x00000013, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000003, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000213, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000050e, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000001, /* MC_EMEM_ARB_CFG */
- 0x80000076, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74230403, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000046, /* MC_PTSA_GRANT_DECREMENT */
- 0x00690069, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00690075, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0081008d, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000008d, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x008d008d, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00bc008d, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000bc, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00bc00bc, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 10720, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 102000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000006, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000004, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000003, /* EMC_RAS */
- 0x00000001, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000001, /* EMC_RD_RCD */
- 0x00000001, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000018, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000001c, /* EMC_TXSR */
- 0x0000001c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000005, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000031c, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000714, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x08000001, /* MC_EMEM_ARB_CFG */
- 0x80000098, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000002, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0403, /* MC_EMEM_ARB_DA_COVERS */
- 0x73c30504, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000068, /* MC_PTSA_GRANT_DECREMENT */
- 0x00460046, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0046004e, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0056005e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000005e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x005e005e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x007d005e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000007d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x007d007d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 6890, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000009, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000007, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000032, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000038, /* EMC_TXSR */
- 0x00000038, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000009, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000638, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x000000a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x05057404, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d22, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000004, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0405, /* MC_EMEM_ARB_DA_COVERS */
- 0x73840a06, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 3420, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 312000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000000e, /* EMC_RC */
- 0x00000050, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000009, /* EMC_RAS */
- 0x00000003, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x00000009, /* EMC_W2P */
- 0x00000003, /* EMC_RD_RCD */
- 0x00000003, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00080006, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000945, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000251, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000004d, /* EMC_AR2PDEN */
- 0x0000000e, /* EMC_RW2PDEN */
- 0x00000055, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x0000000d, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000986, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0171000c, /* EMC_MRS_WAIT_CNT */
- 0x0171000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001395, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0b000004, /* MC_EMEM_ARB_CFG */
- 0x8000016a, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000006, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000b0607, /* MC_EMEM_ARB_DA_COVERS */
- 0x76e50f08, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00028000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00024000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00028000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00024000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000140, /* MC_PTSA_GRANT_DECREMENT */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00170019, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x001c001e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000001e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x001e001e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0029001e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000029, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00290029, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff0082, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x5320000e, /* EMC_CFG */
- 0x80000321, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 2680, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000012, /* EMC_RC */
- 0x00000069, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000d, /* EMC_RAS */
- 0x00000004, /* EMC_RP */
- 0x00000005, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000c, /* EMC_W2P */
- 0x00000004, /* EMC_RD_RCD */
- 0x00000004, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00080006, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000c2f, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000030b, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000066, /* EMC_AR2PDEN */
- 0x00000011, /* EMC_RW2PDEN */
- 0x0000006f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000011, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000c70, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c0080, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00018000, /* EMC_DLL_XFORM_DQS4 */
- 0x00018000, /* EMC_DLL_XFORM_DQS5 */
- 0x00018000, /* EMC_DLL_XFORM_DQS6 */
- 0x00018000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001944, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000008, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000e070a, /* MC_EMEM_ARB_DA_COVERS */
- 0x7547130b, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00018000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00020001, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000005, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000005, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000005, /* EMC_DLL_XFORM_ADDR2 */
- 0x00018000, /* EMC_DLL_XFORM_DQS1 */
- 0x00018000, /* EMC_DLL_XFORM_DQS2 */
- 0x00018000, /* EMC_DLL_XFORM_DQS3 */
- 0x00020001, /* EMC_DLL_XFORM_DQ1 */
- 0x00020001, /* EMC_DLL_XFORM_DQ2 */
- 0x00020001, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00018000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00020001, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000005, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000005, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000005, /* EMC_DLL_XFORM_ADDR2 */
- 0x00018000, /* EMC_DLL_XFORM_DQS1 */
- 0x00018000, /* EMC_DLL_XFORM_DQS2 */
- 0x00018000, /* EMC_DLL_XFORM_DQS3 */
- 0x00020001, /* EMC_DLL_XFORM_DQ1 */
- 0x00020001, /* EMC_DLL_XFORM_DQ2 */
- 0x00020001, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200006, /* EMC_CFG */
- 0x80000731, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 528000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000018, /* EMC_RC */
- 0x00000088, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000010, /* EMC_RAS */
- 0x00000006, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000d, /* EMC_W2P */
- 0x00000006, /* EMC_RD_RCD */
- 0x00000006, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000009, /* EMC_IBDLY */
- 0x00090007, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000007, /* EMC_QRST */
- 0x00000010, /* EMC_RDV_MASK */
- 0x00000fd8, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000003f6, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000b, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000085, /* EMC_AR2PDEN */
- 0x00000012, /* EMC_RW2PDEN */
- 0x0000008f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000016, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000005, /* EMC_TCLKSTABLE */
- 0x00000006, /* EMC_TCLKSTOP */
- 0x00001019, /* EMC_TREFBW */
- 0x00000008, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf0120091, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0139000f, /* EMC_MRS_WAIT_CNT */
- 0x0139000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80002066, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0f000007, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x0010090c, /* MC_EMEM_ARB_DA_COVERS */
- 0x7428180d, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000007, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000010, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00010000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000007, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000010, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00010000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000010e, /* MC_PTSA_GRANT_DECREMENT */
- 0x000d000d, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000d000f, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00100012, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000012, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00120012, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00180012, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000018, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00180018, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00a3004d, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00a300a3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x73100004, /* EMC_CFG */
- 0x80000941, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1440, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 624000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000001d, /* EMC_RC */
- 0x000000a1, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000014, /* EMC_RAS */
- 0x00000007, /* EMC_RP */
- 0x00000007, /* EMC_R2W */
- 0x0000000b, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x00000010, /* EMC_W2P */
- 0x00000007, /* EMC_RD_RCD */
- 0x00000007, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x0000000a, /* EMC_IBDLY */
- 0x000c000a, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000007, /* EMC_QRST */
- 0x00000012, /* EMC_RDV_MASK */
- 0x000012c4, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000004b1, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000d, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000009c, /* EMC_AR2PDEN */
- 0x00000015, /* EMC_RW2PDEN */
- 0x000000a9, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000019, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000006, /* EMC_TCLKSTABLE */
- 0x00000007, /* EMC_TCLKSTOP */
- 0x00001305, /* EMC_TREFBW */
- 0x00000009, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf00d0191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS4 */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS5 */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS6 */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0122000c, /* EMC_MRS_WAIT_CNT */
- 0x0122000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000261a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x06000009, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000009, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000b, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_W2R */
- 0x07050202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00130b0f, /* MC_EMEM_ARB_DA_COVERS */
- 0x736a1d10, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x007f400e, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x007f400e, /* EMC_DLL_XFORM_ADDR1 */
- 0x007f400e, /* EMC_DLL_XFORM_ADDR2 */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS1 */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS2 */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000009, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x007f400e, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x007f400e, /* EMC_DLL_XFORM_ADDR1 */
- 0x007f400e, /* EMC_DLL_XFORM_ADDR2 */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS1 */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS2 */
- 0x007fc00b, /* EMC_DLL_XFORM_DQS3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000009, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000013f, /* MC_PTSA_GRANT_DECREMENT */
- 0x000b000b, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000e000f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000f000f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0014000f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000014, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00140014, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x008a0041, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x008a008a, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200000, /* EMC_CFG */
- 0x80000b61, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200010, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1440, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 792000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000024, /* EMC_RC */
- 0x000000cd, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000019, /* EMC_RAS */
- 0x0000000a, /* EMC_RP */
- 0x00000009, /* EMC_R2W */
- 0x0000000d, /* EMC_W2R */
- 0x00000004, /* EMC_R2P */
- 0x00000013, /* EMC_W2P */
- 0x0000000a, /* EMC_RD_RCD */
- 0x0000000a, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000006, /* EMC_WDV */
- 0x00000006, /* EMC_WDV_MASK */
- 0x0000000b, /* EMC_IBDLY */
- 0x000d000a, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000008, /* EMC_QRST */
- 0x00000014, /* EMC_RDV_MASK */
- 0x000017e4, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000005f9, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000003, /* EMC_PDEX2WR */
- 0x00000012, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x000000c6, /* EMC_AR2PDEN */
- 0x00000018, /* EMC_RW2PDEN */
- 0x000000d6, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000020, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000007, /* EMC_TCLKSTABLE */
- 0x00000008, /* EMC_TCLKSTOP */
- 0x00001825, /* EMC_TREFBW */
- 0x0000000a, /* EMC_QUSE_EXTRA */
- 0x80000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf0070191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f508, /* EMC_XM2COMPPADCTRL */
- 0x07077704, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x00f8000f, /* EMC_MRS_WAIT_CNT */
- 0x00f8000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80003018, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0e00000b, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000013, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000008, /* MC_EMEM_ARB_TIMING_W2R */
- 0x08060202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00170e13, /* MC_EMEM_ARB_DA_COVERS */
- 0x734c2414, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000b0b, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR1 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000b0b, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR1 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000196, /* MC_PTSA_GRANT_DECREMENT */
- 0x00090009, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0009000a, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000c, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000c000c, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0010000c, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000010, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00100010, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x006d0033, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x006d006d, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x73000000, /* EMC_CFG */
- 0x80000d71, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200218, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1200, /* expected dvfs latency (ns) */
- },
-};
-
-static struct tegra11_emc_table e1611_h5tc4g63afr_rda_T40T_table[] = {
- {
- 0x41, /* Rev 4.0.3 */
- 12750, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000003e, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000060, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000018, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000005, /* EMC_TXSR */
- 0x00000005, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000064, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x800001c6, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40040001, /* MC_EMEM_ARB_CFG */
- 0x8000003f, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x77e30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000000e, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 57820, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 20400, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000026, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000005, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x0000009a, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000026, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000006, /* EMC_TXSR */
- 0x00000006, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x000000a0, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000023a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40020001, /* MC_EMEM_ARB_CFG */
- 0x80000046, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x76230303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000014, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 35610, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 40800, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000012, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000001, /* EMC_RC */
- 0x0000000a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000001, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000134, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000004d, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000008, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000000c, /* EMC_TXSR */
- 0x0000000c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000002, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000013f, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000370, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0xa0000001, /* MC_EMEM_ARB_CFG */
- 0x8000005b, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74a30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000002a, /* MC_PTSA_GRANT_DECREMENT */
- 0x00b000b0, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00b000c4, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00d700eb, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000eb, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00eb00eb, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00eb, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 20850, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 68000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000000a, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000003, /* EMC_RC */
- 0x00000011, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000202, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000080, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000000f, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000013, /* EMC_TXSR */
- 0x00000013, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000003, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000213, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000050e, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000001, /* MC_EMEM_ARB_CFG */
- 0x80000076, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74230403, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000046, /* MC_PTSA_GRANT_DECREMENT */
- 0x00690069, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00690075, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0081008d, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000008d, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x008d008d, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00bc008d, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000bc, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00bc00bc, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 10720, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 102000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000006, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000004, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000003, /* EMC_RAS */
- 0x00000001, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000001, /* EMC_RD_RCD */
- 0x00000001, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000018, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000001c, /* EMC_TXSR */
- 0x0000001c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000005, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000031c, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000714, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x08000001, /* MC_EMEM_ARB_CFG */
- 0x80000098, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000002, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0403, /* MC_EMEM_ARB_DA_COVERS */
- 0x73c30504, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000068, /* MC_PTSA_GRANT_DECREMENT */
- 0x00460046, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0046004e, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0056005e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000005e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x005e005e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x007d005e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000007d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x007d007d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 6890, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000009, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000007, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000032, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000038, /* EMC_TXSR */
- 0x00000038, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000009, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000638, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x000000a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x05057404, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d22, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000004, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0405, /* MC_EMEM_ARB_DA_COVERS */
- 0x73840a06, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 3420, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 312000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000000e, /* EMC_RC */
- 0x00000050, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000009, /* EMC_RAS */
- 0x00000003, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x00000009, /* EMC_W2P */
- 0x00000003, /* EMC_RD_RCD */
- 0x00000003, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00080006, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000945, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000251, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000004d, /* EMC_AR2PDEN */
- 0x0000000e, /* EMC_RW2PDEN */
- 0x00000055, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x0000000d, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000986, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0171000c, /* EMC_MRS_WAIT_CNT */
- 0x0171000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001395, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0b000004, /* MC_EMEM_ARB_CFG */
- 0x8000016a, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000006, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000b0607, /* MC_EMEM_ARB_DA_COVERS */
- 0x76e50f08, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00028000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00014000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00014000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00028000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00014000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00014000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000140, /* MC_PTSA_GRANT_DECREMENT */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00170019, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x001c001e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000001e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x001e001e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0029001e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000029, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00290029, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff0082, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x5320000e, /* EMC_CFG */
- 0x80000321, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 2680, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000012, /* EMC_RC */
- 0x00000069, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000d, /* EMC_RAS */
- 0x00000004, /* EMC_RP */
- 0x00000005, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000c, /* EMC_W2P */
- 0x00000004, /* EMC_RD_RCD */
- 0x00000004, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00080006, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000c2f, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000030b, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000066, /* EMC_AR2PDEN */
- 0x00000011, /* EMC_RW2PDEN */
- 0x0000006f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000011, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000c70, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c0080, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00028000, /* EMC_DLL_XFORM_DQS4 */
- 0x00028000, /* EMC_DLL_XFORM_DQS5 */
- 0x00028000, /* EMC_DLL_XFORM_DQS6 */
- 0x00028000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001944, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000008, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000e070a, /* MC_EMEM_ARB_DA_COVERS */
- 0x7547130b, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00028000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00014000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00014000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00028000, /* EMC_DLL_XFORM_DQS1 */
- 0x00028000, /* EMC_DLL_XFORM_DQS2 */
- 0x00028000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00028000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00014000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00014000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00028000, /* EMC_DLL_XFORM_DQS1 */
- 0x00028000, /* EMC_DLL_XFORM_DQS2 */
- 0x00028000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200006, /* EMC_CFG */
- 0x80000731, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 624000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000001d, /* EMC_RC */
- 0x000000a1, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000014, /* EMC_RAS */
- 0x00000007, /* EMC_RP */
- 0x00000007, /* EMC_R2W */
- 0x0000000b, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x00000010, /* EMC_W2P */
- 0x00000007, /* EMC_RD_RCD */
- 0x00000007, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x0000000b, /* EMC_IBDLY */
- 0x000c000a, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000007, /* EMC_QRST */
- 0x00000012, /* EMC_RDV_MASK */
- 0x000012c4, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000004b1, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000d, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000009c, /* EMC_AR2PDEN */
- 0x00000015, /* EMC_RW2PDEN */
- 0x000000a9, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000019, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000006, /* EMC_TCLKSTABLE */
- 0x00000007, /* EMC_TCLKSTOP */
- 0x00001305, /* EMC_TREFBW */
- 0x0000000a, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf00d0191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS4 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS5 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS6 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0122000c, /* EMC_MRS_WAIT_CNT */
- 0x0122000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000261a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x06000009, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000009, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000b, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_W2R */
- 0x07050202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00130b0f, /* MC_EMEM_ARB_DA_COVERS */
- 0x736a1d10, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS1 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000009, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS1 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000009, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000013f, /* MC_PTSA_GRANT_DECREMENT */
- 0x000b000b, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000e000f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000f000f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0014000f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000014, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00140014, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x008a0041, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x008a008a, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200000, /* EMC_CFG */
- 0x80000b61, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200010, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1440, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 792000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000024, /* EMC_RC */
- 0x000000cd, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000019, /* EMC_RAS */
- 0x0000000a, /* EMC_RP */
- 0x00000009, /* EMC_R2W */
- 0x0000000d, /* EMC_W2R */
- 0x00000004, /* EMC_R2P */
- 0x00000013, /* EMC_W2P */
- 0x0000000a, /* EMC_RD_RCD */
- 0x0000000a, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000006, /* EMC_WDV */
- 0x00000006, /* EMC_WDV_MASK */
- 0x0000000b, /* EMC_IBDLY */
- 0x000d000a, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000008, /* EMC_QRST */
- 0x00000014, /* EMC_RDV_MASK */
- 0x000017e4, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000005f9, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000003, /* EMC_PDEX2WR */
- 0x00000012, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x000000c6, /* EMC_AR2PDEN */
- 0x00000018, /* EMC_RW2PDEN */
- 0x000000d6, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000020, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000007, /* EMC_TCLKSTABLE */
- 0x00000008, /* EMC_TCLKSTOP */
- 0x00001825, /* EMC_TREFBW */
- 0x0000000a, /* EMC_QUSE_EXTRA */
- 0x80000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf0070191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00000008, /* EMC_DLL_XFORM_DQS4 */
- 0x00000008, /* EMC_DLL_XFORM_DQS5 */
- 0x00000008, /* EMC_DLL_XFORM_DQS6 */
- 0x00000008, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f508, /* EMC_XM2COMPPADCTRL */
- 0x07076604, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x00f8000f, /* EMC_MRS_WAIT_CNT */
- 0x00f8000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80003018, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0e00000b, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000013, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000008, /* MC_EMEM_ARB_TIMING_W2R */
- 0x08060202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00170e13, /* MC_EMEM_ARB_DA_COVERS */
- 0x734c2414, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000008, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000008, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000b0b, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS1 */
- 0x00000008, /* EMC_DLL_XFORM_DQS2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000008, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000008, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000b0b, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS1 */
- 0x00000008, /* EMC_DLL_XFORM_DQS2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000196, /* MC_PTSA_GRANT_DECREMENT */
- 0x00090009, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0009000a, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000c, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000c000c, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0010000c, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000010, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00100010, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x006d0033, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x006d006d, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200000, /* EMC_CFG */
- 0x80000d71, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200418, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1200, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 924000, /* SDRAM frequency */
- 1170, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000002b, /* EMC_RC */
- 0x000000f1, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000001e, /* EMC_RAS */
- 0x0000000b, /* EMC_RP */
- 0x00000009, /* EMC_R2W */
- 0x0000000f, /* EMC_W2R */
- 0x00000005, /* EMC_R2P */
- 0x00000018, /* EMC_W2P */
- 0x0000000b, /* EMC_RD_RCD */
- 0x0000000b, /* EMC_WR_RCD */
- 0x00000004, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000007, /* EMC_WDV */
- 0x00000007, /* EMC_WDV_MASK */
- 0x0000000d, /* EMC_IBDLY */
- 0x000f000c, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x0000000a, /* EMC_QRST */
- 0x00000016, /* EMC_RDV_MASK */
- 0x00001c39, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000070e, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000004, /* EMC_PDEX2WR */
- 0x00000015, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x000000e8, /* EMC_AR2PDEN */
- 0x0000001d, /* EMC_RW2PDEN */
- 0x000000fd, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000006, /* EMC_TCKE */
- 0x00000006, /* EMC_TCKESR */
- 0x00000006, /* EMC_TPD */
- 0x00000026, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000009, /* EMC_TCLKSTABLE */
- 0x0000000a, /* EMC_TCLKSTOP */
- 0x00001c7a, /* EMC_TREFBW */
- 0x00000000, /* EMC_QUSE_EXTRA */
- 0x80000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x00005088, /* EMC_FBIO_CFG5 */
- 0xf0030191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00000007, /* EMC_DLL_XFORM_DQS4 */
- 0x00000007, /* EMC_DLL_XFORM_DQS5 */
- 0x00000007, /* EMC_DLL_XFORM_DQS6 */
- 0x00000007, /* EMC_DLL_XFORM_DQS7 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE4 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE5 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE6 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f508, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000801, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000128, /* EMC_ZCAL_WAIT_CNT */
- 0x00cb000f, /* EMC_MRS_WAIT_CNT */
- 0x00cb000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000004, /* EMC_CTT */
- 0x00000004, /* EMC_CTT_DURATION */
- 0x8000388a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0000000e, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000016, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000e, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000012, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000009, /* MC_EMEM_ARB_TIMING_W2R */
- 0x09060202, /* MC_EMEM_ARB_DA_TURNS */
- 0x001b1016, /* MC_EMEM_ARB_DA_COVERS */
- 0x734f2b17, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000c, /* EMC_QUSE */
- 0x0000000a, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000007, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000016, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00004007, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000008, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000f0f, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000007, /* EMC_DLL_XFORM_DQS1 */
- 0x00000007, /* EMC_DLL_XFORM_DQS2 */
- 0x00000007, /* EMC_DLL_XFORM_DQS3 */
- 0x00004007, /* EMC_DLL_XFORM_DQ1 */
- 0x00004007, /* EMC_DLL_XFORM_DQ2 */
- 0x00004007, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE1 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE2 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000c, /* EMC_QUSE */
- 0x0000000a, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000007, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000016, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00004007, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000008, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000b0b, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000007, /* EMC_DLL_XFORM_DQS1 */
- 0x00000007, /* EMC_DLL_XFORM_DQS2 */
- 0x00000007, /* EMC_DLL_XFORM_DQS3 */
- 0x00004007, /* EMC_DLL_XFORM_DQ1 */
- 0x00004007, /* EMC_DLL_XFORM_DQ2 */
- 0x00004007, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE1 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE2 */
- 0x0002800c, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000001d9, /* MC_PTSA_GRANT_DECREMENT */
- 0x00070007, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00070008, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0009000a, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000a, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000a000a, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x000d000a, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000000d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x000d000d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x005d002c, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x005d005d, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x0000004d, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53000000, /* EMC_CFG */
- 0x80000115, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200420, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1180, /* expected dvfs latency (ns) */
- },
-};
-
-static struct tegra11_emc_table e1611_h5tc4g63mfr_pba_T40S_table[] = {
- {
- 0x41, /* Rev 4.0.3 */
- 12750, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000003e, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000060, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000018, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000005, /* EMC_TXSR */
- 0x00000005, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000064, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x800001c6, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40040001, /* MC_EMEM_ARB_CFG */
- 0x8000003f, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x77e30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000000e, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 57820, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 20400, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000026, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000005, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x0000009a, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000026, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000006, /* EMC_TXSR */
- 0x00000006, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x000000a0, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000023a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40020001, /* MC_EMEM_ARB_CFG */
- 0x80000046, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x76230303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000014, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 35610, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 40800, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000012, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000001, /* EMC_RC */
- 0x0000000a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000001, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000134, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000004d, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000008, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000000c, /* EMC_TXSR */
- 0x0000000c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000002, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000013f, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000370, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0xa0000001, /* MC_EMEM_ARB_CFG */
- 0x8000005b, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74a30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000002a, /* MC_PTSA_GRANT_DECREMENT */
- 0x00b000b0, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00b000c4, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00d700eb, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000eb, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00eb00eb, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00eb, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 20850, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 68000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000000a, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000003, /* EMC_RC */
- 0x00000011, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000202, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000080, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000000f, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000013, /* EMC_TXSR */
- 0x00000013, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000003, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000213, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000050e, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000001, /* MC_EMEM_ARB_CFG */
- 0x80000076, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74230403, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000046, /* MC_PTSA_GRANT_DECREMENT */
- 0x00690069, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00690075, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0081008d, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000008d, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x008d008d, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00bc008d, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000bc, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00bc00bc, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 10720, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 102000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000006, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000004, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000003, /* EMC_RAS */
- 0x00000001, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000001, /* EMC_RD_RCD */
- 0x00000001, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000018, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000001c, /* EMC_TXSR */
- 0x0000001c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000005, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000031c, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000714, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x08000001, /* MC_EMEM_ARB_CFG */
- 0x80000098, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000002, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0403, /* MC_EMEM_ARB_DA_COVERS */
- 0x73c30504, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000068, /* MC_PTSA_GRANT_DECREMENT */
- 0x00460046, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0046004e, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0056005e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000005e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x005e005e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x007d005e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000007d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x007d007d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 6890, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000009, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000007, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000032, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000038, /* EMC_TXSR */
- 0x00000038, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000009, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000638, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x000000a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x05057404, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d22, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000004, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0405, /* MC_EMEM_ARB_DA_COVERS */
- 0x73840a06, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 3420, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 312000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000000e, /* EMC_RC */
- 0x00000050, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000009, /* EMC_RAS */
- 0x00000003, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x00000009, /* EMC_W2P */
- 0x00000003, /* EMC_RD_RCD */
- 0x00000003, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00080006, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000945, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000251, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000004d, /* EMC_AR2PDEN */
- 0x0000000e, /* EMC_RW2PDEN */
- 0x00000055, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x0000000d, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000986, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0171000c, /* EMC_MRS_WAIT_CNT */
- 0x0171000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001395, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0b000004, /* MC_EMEM_ARB_CFG */
- 0x8000016a, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000006, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000b0607, /* MC_EMEM_ARB_DA_COVERS */
- 0x76e50f08, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00028000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00024000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00028000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00024000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000140, /* MC_PTSA_GRANT_DECREMENT */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00170019, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x001c001e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000001e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x001e001e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0029001e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000029, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00290029, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff0082, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x5320000e, /* EMC_CFG */
- 0x80000321, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 2680, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000012, /* EMC_RC */
- 0x00000069, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000d, /* EMC_RAS */
- 0x00000004, /* EMC_RP */
- 0x00000005, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000c, /* EMC_W2P */
- 0x00000004, /* EMC_RD_RCD */
- 0x00000004, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00080006, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000c2f, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000030b, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000066, /* EMC_AR2PDEN */
- 0x00000011, /* EMC_RW2PDEN */
- 0x0000006f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000011, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000c70, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c0080, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00018000, /* EMC_DLL_XFORM_DQS4 */
- 0x00018000, /* EMC_DLL_XFORM_DQS5 */
- 0x00018000, /* EMC_DLL_XFORM_DQS6 */
- 0x00018000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001944, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000008, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000e070a, /* MC_EMEM_ARB_DA_COVERS */
- 0x7547130b, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00018000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00020001, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000005, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000005, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000005, /* EMC_DLL_XFORM_ADDR2 */
- 0x00018000, /* EMC_DLL_XFORM_DQS1 */
- 0x00018000, /* EMC_DLL_XFORM_DQS2 */
- 0x00018000, /* EMC_DLL_XFORM_DQS3 */
- 0x00020001, /* EMC_DLL_XFORM_DQ1 */
- 0x00020001, /* EMC_DLL_XFORM_DQ2 */
- 0x00020001, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00018000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00020001, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000005, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000005, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000005, /* EMC_DLL_XFORM_ADDR2 */
- 0x00018000, /* EMC_DLL_XFORM_DQS1 */
- 0x00018000, /* EMC_DLL_XFORM_DQS2 */
- 0x00018000, /* EMC_DLL_XFORM_DQS3 */
- 0x00020001, /* EMC_DLL_XFORM_DQ1 */
- 0x00020001, /* EMC_DLL_XFORM_DQ2 */
- 0x00020001, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200006, /* EMC_CFG */
- 0x80000731, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 528000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000018, /* EMC_RC */
- 0x00000088, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000010, /* EMC_RAS */
- 0x00000006, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000d, /* EMC_W2P */
- 0x00000006, /* EMC_RD_RCD */
- 0x00000006, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000009, /* EMC_IBDLY */
- 0x00090007, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000007, /* EMC_QRST */
- 0x00000010, /* EMC_RDV_MASK */
- 0x00000fd8, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000003f6, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000b, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000085, /* EMC_AR2PDEN */
- 0x00000012, /* EMC_RW2PDEN */
- 0x0000008f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000016, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000005, /* EMC_TCLKSTABLE */
- 0x00000006, /* EMC_TCLKSTOP */
- 0x00001019, /* EMC_TREFBW */
- 0x00000008, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf0120091, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0139000f, /* EMC_MRS_WAIT_CNT */
- 0x0139000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80002066, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0f000007, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x0010090c, /* MC_EMEM_ARB_DA_COVERS */
- 0x7428180d, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000007, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000010, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00010000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000007, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000010, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00010000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000010e, /* MC_PTSA_GRANT_DECREMENT */
- 0x000d000d, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000d000f, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00100012, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000012, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00120012, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00180012, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000018, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00180018, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00a3004d, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00a300a3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x73100004, /* EMC_CFG */
- 0x80000941, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1440, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 624000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000001d, /* EMC_RC */
- 0x000000a1, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000014, /* EMC_RAS */
- 0x00000007, /* EMC_RP */
- 0x00000007, /* EMC_R2W */
- 0x0000000b, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x00000010, /* EMC_W2P */
- 0x00000007, /* EMC_RD_RCD */
- 0x00000007, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x0000000a, /* EMC_IBDLY */
- 0x000c000a, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000007, /* EMC_QRST */
- 0x00000012, /* EMC_RDV_MASK */
- 0x000012c4, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000004b1, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000d, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000009c, /* EMC_AR2PDEN */
- 0x00000015, /* EMC_RW2PDEN */
- 0x000000a9, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000019, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000006, /* EMC_TCLKSTABLE */
- 0x00000007, /* EMC_TCLKSTOP */
- 0x00001305, /* EMC_TREFBW */
- 0x00000009, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf00d0191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x007f800b, /* EMC_DLL_XFORM_DQS4 */
- 0x007f800b, /* EMC_DLL_XFORM_DQS5 */
- 0x007f800b, /* EMC_DLL_XFORM_DQS6 */
- 0x007f800b, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0122000c, /* EMC_MRS_WAIT_CNT */
- 0x0122000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000261a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x06000009, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000009, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000b, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_W2R */
- 0x07050202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00130b0f, /* MC_EMEM_ARB_DA_COVERS */
- 0x736a1d10, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x007f800b, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR1 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR2 */
- 0x007f800b, /* EMC_DLL_XFORM_DQS1 */
- 0x007f800b, /* EMC_DLL_XFORM_DQS2 */
- 0x007f800b, /* EMC_DLL_XFORM_DQS3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000009, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x007f800b, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR1 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR2 */
- 0x007f800b, /* EMC_DLL_XFORM_DQS1 */
- 0x007f800b, /* EMC_DLL_XFORM_DQS2 */
- 0x007f800b, /* EMC_DLL_XFORM_DQS3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000009, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000013f, /* MC_PTSA_GRANT_DECREMENT */
- 0x000b000b, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000e000f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000f000f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0014000f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000014, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00140014, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x008a0041, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x008a008a, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200000, /* EMC_CFG */
- 0x80000b61, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200010, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1440, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 792000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000024, /* EMC_RC */
- 0x000000cd, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000019, /* EMC_RAS */
- 0x0000000a, /* EMC_RP */
- 0x00000009, /* EMC_R2W */
- 0x0000000d, /* EMC_W2R */
- 0x00000004, /* EMC_R2P */
- 0x00000013, /* EMC_W2P */
- 0x0000000a, /* EMC_RD_RCD */
- 0x0000000a, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000006, /* EMC_WDV */
- 0x00000006, /* EMC_WDV_MASK */
- 0x0000000b, /* EMC_IBDLY */
- 0x000d000a, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000008, /* EMC_QRST */
- 0x00000014, /* EMC_RDV_MASK */
- 0x000017e4, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000005f9, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000003, /* EMC_PDEX2WR */
- 0x00000012, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x000000c6, /* EMC_AR2PDEN */
- 0x00000018, /* EMC_RW2PDEN */
- 0x000000d6, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000020, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000007, /* EMC_TCLKSTABLE */
- 0x00000008, /* EMC_TCLKSTOP */
- 0x00001825, /* EMC_TREFBW */
- 0x0000000a, /* EMC_QUSE_EXTRA */
- 0x80000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf0070191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00000008, /* EMC_DLL_XFORM_DQS4 */
- 0x00000008, /* EMC_DLL_XFORM_DQS5 */
- 0x00000008, /* EMC_DLL_XFORM_DQS6 */
- 0x00000008, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f508, /* EMC_XM2COMPPADCTRL */
- 0x07076604, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x00f8000f, /* EMC_MRS_WAIT_CNT */
- 0x00f8000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80003018, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0e00000b, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000013, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000008, /* MC_EMEM_ARB_TIMING_W2R */
- 0x08060202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00170e13, /* MC_EMEM_ARB_DA_COVERS */
- 0x734c2414, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000008, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000b0b, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR1 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS1 */
- 0x00000008, /* EMC_DLL_XFORM_DQS2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS3 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQ1 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQ2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000008, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000b0b, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR1 */
- 0x007fc00d, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS1 */
- 0x00000008, /* EMC_DLL_XFORM_DQS2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS3 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQ1 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQ2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000196, /* MC_PTSA_GRANT_DECREMENT */
- 0x00090009, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0009000a, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000c, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000c000c, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0010000c, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000010, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00100010, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x006d0033, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x006d006d, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x73000000, /* EMC_CFG */
- 0x80000d71, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200218, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1200, /* expected dvfs latency (ns) */
- },
-};
-
-static struct tegra11_emc_table e1611_h5tc4g63mfr_pba_table[] = {
- {
- 0x41, /* Rev 4.0.3 */
- 12750, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000003e, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000060, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000018, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000005, /* EMC_TXSR */
- 0x00000005, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000064, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x800001c6, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40040001, /* MC_EMEM_ARB_CFG */
- 0x8000003f, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x77e30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000000e, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 57820, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 20400, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000026, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000005, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x0000009a, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000026, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000006, /* EMC_TXSR */
- 0x00000006, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x000000a0, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000023a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40020001, /* MC_EMEM_ARB_CFG */
- 0x80000046, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x76230303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000014, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 35610, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 40800, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000012, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000001, /* EMC_RC */
- 0x0000000a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000001, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000134, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000004d, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000008, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000000c, /* EMC_TXSR */
- 0x0000000c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000002, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000013f, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000370, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0xa0000001, /* MC_EMEM_ARB_CFG */
- 0x8000005b, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74a30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000002a, /* MC_PTSA_GRANT_DECREMENT */
- 0x00b000b0, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00b000c4, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00d700eb, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000eb, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00eb00eb, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00eb, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 20850, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 68000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000000a, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000003, /* EMC_RC */
- 0x00000011, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000c, /* EMC_RDV_MASK */
- 0x00000202, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000080, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000000f, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000013, /* EMC_TXSR */
- 0x00000013, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000003, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000213, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000050e, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000001, /* MC_EMEM_ARB_CFG */
- 0x80000076, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74230403, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000c, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000c, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000046, /* MC_PTSA_GRANT_DECREMENT */
- 0x00690069, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00690075, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0081008d, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000008d, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x008d008d, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00bc008d, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000bc, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00bc00bc, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 10720, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 102000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000006, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000004, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000003, /* EMC_RAS */
- 0x00000001, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000001, /* EMC_RD_RCD */
- 0x00000001, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000c, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000018, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000001c, /* EMC_TXSR */
- 0x0000001c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000005, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000031c, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000714, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x08000001, /* MC_EMEM_ARB_CFG */
- 0x80000098, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000002, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0403, /* MC_EMEM_ARB_DA_COVERS */
- 0x73c30504, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000c, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000c, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000068, /* MC_PTSA_GRANT_DECREMENT */
- 0x00460046, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0046004e, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0056005e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000005e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x005e005e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x007d005e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000007d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x007d007d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 6890, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000009, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000007, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000032, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000038, /* EMC_TXSR */
- 0x00000038, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000009, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000638, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x000000a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00064000, /* EMC_DLL_XFORM_DQS4 */
- 0x00064000, /* EMC_DLL_XFORM_DQS5 */
- 0x00064000, /* EMC_DLL_XFORM_DQS6 */
- 0x00064000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x05057404, /* EMC_XM2VTTGENPADCTRL */
- 0x0000001f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d22, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000004, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0405, /* MC_EMEM_ARB_DA_COVERS */
- 0x73840a06, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00064000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS1 */
- 0x00064000, /* EMC_DLL_XFORM_DQS2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00064000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS1 */
- 0x00064000, /* EMC_DLL_XFORM_DQS2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 3420, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000012, /* EMC_RC */
- 0x00000069, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000d, /* EMC_RAS */
- 0x00000004, /* EMC_RP */
- 0x00000005, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000c, /* EMC_W2P */
- 0x00000004, /* EMC_RD_RCD */
- 0x00000004, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000c2f, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000030b, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000066, /* EMC_AR2PDEN */
- 0x00000011, /* EMC_RW2PDEN */
- 0x0000006f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000011, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000c70, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c0080, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0003033d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT2 */
- 0x07070707, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000404, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001944, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000008, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000e070a, /* MC_EMEM_ARB_DA_COVERS */
- 0x7547130b, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00018000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00008000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00018000, /* EMC_DLL_XFORM_DQ1 */
- 0x00018000, /* EMC_DLL_XFORM_DQ2 */
- 0x00018000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00018000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00008000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00018000, /* EMC_DLL_XFORM_DQ1 */
- 0x00018000, /* EMC_DLL_XFORM_DQ2 */
- 0x00018000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x73200006, /* EMC_CFG */
- 0x80000731, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 480000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000017, /* EMC_RC */
- 0x00000082, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000010, /* EMC_RAS */
- 0x00000005, /* EMC_RP */
- 0x00000005, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000d, /* EMC_W2P */
- 0x00000005, /* EMC_RD_RCD */
- 0x00000005, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000f23, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000003c8, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000b, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000007f, /* EMC_AR2PDEN */
- 0x00000012, /* EMC_RW2PDEN */
- 0x00000089, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000015, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000005, /* EMC_TCLKSTABLE */
- 0x00000006, /* EMC_TCLKSTOP */
- 0x00000f64, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf0140091, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0003033d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077704, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x013f000c, /* EMC_MRS_WAIT_CNT */
- 0x013f000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000808, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001f05, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x09000007, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000f080c, /* MC_EMEM_ARB_DA_COVERS */
- 0x7448170d, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000400b, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ2 */
- 0x0000400b, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000400b, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ2 */
- 0x0000400b, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000f6, /* MC_PTSA_GRANT_DECREMENT */
- 0x000f000f, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000f0010, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00120014, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000014, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00140014, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001a0014, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001a, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001a001a, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00b40055, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00b400b4, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x73200006, /* EMC_CFG */
- 0x80000931, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
-};
-
-static struct tegra11_emc_table e1613_h9ccnnn8jtmlar_ntm_table[] = {
- {
- 0x40, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000000c, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000008, /* EMC_RAS */
- 0x00000003, /* EMC_RP */
- 0x00000008, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000003, /* EMC_RD_RCD */
- 0x00000003, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000002, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000003, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x0000001d, /* EMC_TXSR */
- 0x0000001d, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x0000000b, /* EMC_TFAW */
- 0x00000005, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000351, /* EMC_TREFBW */
- 0x00000000, /* EMC_QUSE_EXTRA */
- 0x00000000, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x00014286, /* EMC_FBIO_CFG5 */
- 0x000000a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00038000, /* EMC_DLL_XFORM_DQS4 */
- 0x00038000, /* EMC_DLL_XFORM_DQS5 */
- 0x00038000, /* EMC_DLL_XFORM_DQS6 */
- 0x00038000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0003003d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000001f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000004a, /* EMC_ZCAL_WAIT_CNT */
- 0x00100010, /* EMC_MRS_WAIT_CNT */
- 0x00100010, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000713, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000005, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05050102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0506, /* MC_EMEM_ARB_DA_COVERS */
- 0x71e40a07, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00038000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x007df7df, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00034000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00030000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00030000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00038000, /* EMC_DLL_XFORM_DQS1 */
- 0x00038000, /* EMC_DLL_XFORM_DQS2 */
- 0x00038000, /* EMC_DLL_XFORM_DQS3 */
- 0x00034000, /* EMC_DLL_XFORM_DQ1 */
- 0x00034000, /* EMC_DLL_XFORM_DQ2 */
- 0x00034000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00038000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x007df7df, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00034000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00030000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00030000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00038000, /* EMC_DLL_XFORM_DQS1 */
- 0x00038000, /* EMC_DLL_XFORM_DQS2 */
- 0x00038000, /* EMC_DLL_XFORM_DQS3 */
- 0x00034000, /* EMC_DLL_XFORM_DQ1 */
- 0x00034000, /* EMC_DLL_XFORM_DQ2 */
- 0x00034000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000017, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010083, /* Mode Register 1 */
- 0x00020004, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- },
- {
- 0x40, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000018, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000011, /* EMC_RAS */
- 0x00000007, /* EMC_RP */
- 0x0000000b, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000d, /* EMC_W2P */
- 0x00000007, /* EMC_RD_RCD */
- 0x00000007, /* EMC_WR_RCD */
- 0x00000004, /* EMC_RRD */
- 0x00000002, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000008, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000005, /* EMC_QRST */
- 0x00000010, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000003, /* EMC_PDEX2WR */
- 0x00000003, /* EMC_PDEX2RD */
- 0x00000007, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000003a, /* EMC_TXSR */
- 0x0000003a, /* EMC_TXSRDLL */
- 0x00000007, /* EMC_TCKE */
- 0x00000007, /* EMC_TCKESR */
- 0x00000007, /* EMC_TPD */
- 0x00000015, /* EMC_TFAW */
- 0x00000009, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x000006a2, /* EMC_TREFBW */
- 0x00000008, /* EMC_QUSE_EXTRA */
- 0x80000722, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x00580088, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00020000, /* EMC_DLL_XFORM_DQS4 */
- 0x00020000, /* EMC_DLL_XFORM_DQS5 */
- 0x00020000, /* EMC_DLL_XFORM_DQS6 */
- 0x00020000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0003023d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x00000093, /* EMC_ZCAL_WAIT_CNT */
- 0x00120012, /* EMC_MRS_WAIT_CNT */
- 0x00120012, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d24, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06070102, /* MC_EMEM_ARB_DA_TURNS */
- 0x0010090c, /* MC_EMEM_ARB_DA_COVERS */
- 0x71c7130d, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00020000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000010, /* EMC_RDV */
- 0x007df7df, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0001c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10606, /* EMC_AUTO_CAL_CONFIG */
- 0x00010000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS1 */
- 0x00020000, /* EMC_DLL_XFORM_DQS2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS3 */
- 0x0001c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0001c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0001c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00020000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000010, /* EMC_RDV */
- 0x007df7df, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0001c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10606, /* EMC_AUTO_CAL_CONFIG */
- 0x00010000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00010000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS1 */
- 0x00020000, /* EMC_DLL_XFORM_DQS2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS3 */
- 0x0001c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0001c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0001c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000029, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf3200006, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x000100c3, /* Mode Register 1 */
- 0x00020006, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- },
- {
- 0x40, /* Rev 4.0.3 */
- 600000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000023, /* EMC_RC */
- 0x0000004d, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000019, /* EMC_RAS */
- 0x0000000a, /* EMC_RP */
- 0x0000000b, /* EMC_R2W */
- 0x0000000b, /* EMC_W2R */
- 0x00000004, /* EMC_R2P */
- 0x0000000f, /* EMC_W2P */
- 0x0000000a, /* EMC_RD_RCD */
- 0x0000000a, /* EMC_WR_RCD */
- 0x00000005, /* EMC_RRD */
- 0x00000003, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x0000000a, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000006, /* EMC_QRST */
- 0x00000015, /* EMC_RDV_MASK */
- 0x000008e4, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000239, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000004, /* EMC_PDEX2WR */
- 0x00000004, /* EMC_PDEX2RD */
- 0x0000000a, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x00000013, /* EMC_RW2PDEN */
- 0x00000054, /* EMC_TXSR */
- 0x00000054, /* EMC_TXSRDLL */
- 0x00000009, /* EMC_TCKE */
- 0x00000009, /* EMC_TCKESR */
- 0x00000009, /* EMC_TPD */
- 0x0000001e, /* EMC_TFAW */
- 0x0000000d, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x000009c0, /* EMC_TREFBW */
- 0x0000000a, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0xf00e0199, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000c, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000c, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000c, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000c, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000003d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc005, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x000000d8, /* EMC_ZCAL_WAIT_CNT */
- 0x00130013, /* EMC_MRS_WAIT_CNT */
- 0x00130013, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x800012d7, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000009, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000012, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000b, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000e, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_W2R */
- 0x07070103, /* MC_EMEM_ARB_DA_TURNS */
- 0x00140d12, /* MC_EMEM_ARB_DA_COVERS */
- 0x71a91b13, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000d, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x0000000c, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000f, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000013, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000e, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f11f1f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000010, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000010, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000c, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000c, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000e, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000e, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000d, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x0000000c, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000f, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000013, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f11f1f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000010, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000010, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000c, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000c, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000133, /* MC_PTSA_GRANT_DECREMENT */
- 0x000c000c, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000c000d, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000e0010, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000010, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00100010, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00150010, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000015, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00150015, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00900044, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00900090, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x0000003a, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xd3200000, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x000100e3, /* Mode Register 1 */
- 0x00020007, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- },
-};
-
-static struct tegra11_emc_pdata e1613_h9ccnnn8jtmlar_ntm_pdata = {
- .description = "e1613_h9ccnnn8jtmlar_ntm",
- .tables = e1613_h9ccnnn8jtmlar_ntm_table,
- .num_tables = ARRAY_SIZE(e1613_h9ccnnn8jtmlar_ntm_table),
-};
-
-static struct tegra11_emc_pdata e1611_h5tc4g63mfr_pba_pdata = {
- .description = "e1611_h5tc4g63mfr_pba",
- .tables = e1611_h5tc4g63mfr_pba_table,
- .num_tables = ARRAY_SIZE(e1611_h5tc4g63mfr_pba_table),
-};
-
-static struct tegra11_emc_pdata e1611_h5tc4g63afr_rda_T40T_pdata = {
- .description = "e1611_h5tc4g63afr_rda_T40T",
- .tables = e1611_h5tc4g63afr_rda_T40T_table,
- .num_tables = ARRAY_SIZE(e1611_h5tc4g63afr_rda_T40T_table),
-};
-
-static struct tegra11_emc_pdata e1611_h5tc4g63afr_rda_T40S_pdata = {
- .description = "e1611_h5tc4g63afr_rda_T40S",
- .tables = e1611_h5tc4g63afr_rda_T40S_table,
- .num_tables = ARRAY_SIZE(e1611_h5tc4g63afr_rda_T40S_table),
-};
-
-static struct tegra11_emc_pdata e1611_h5tc4g63mfr_pba_T40S_pdata = {
- .description = "e1611_h5tc4g63mfr_pba_T40S",
- .tables = e1611_h5tc4g63mfr_pba_T40S_table,
- .num_tables = ARRAY_SIZE(e1611_h5tc4g63mfr_pba_T40S_table),
-};
-
-static struct tegra11_emc_pdata *dalmore_get_emc_data(void)
-{
- struct board_info board_info;
- u32 tegra_sku_id;
-
- tegra_sku_id = tegra_get_sku_id();
- tegra_get_board_info(&board_info);
-
- /* load T40T/T40X Table */
- if (board_info.board_id == BOARD_E1611 &&
- (tegra_sku_id == 0x3 || tegra_sku_id == 0x4))
- return &e1611_h5tc4g63afr_rda_T40T_pdata;
- /* load T40S Table */
- else if (board_info.board_id == BOARD_E1611 &&
- (tegra_sku_id == 0x5 || tegra_sku_id == 0x20)) {
- if (tegra_get_memory_type())
- return &e1611_h5tc4g63afr_rda_T40S_pdata;
- else
- return &e1611_h5tc4g63mfr_pba_T40S_pdata;
- }
- else if (board_info.board_id == BOARD_E1611 ||
- board_info.board_id == BOARD_P2454)
- return &e1611_h5tc4g63mfr_pba_pdata;
- else
- return &e1613_h9ccnnn8jtmlar_ntm_pdata;
-}
-
-int __init dalmore_emc_init(void)
-{
- tegra_emc_device.dev.platform_data = dalmore_get_emc_data();
- platform_device_register(&tegra_emc_device);
- tegra11_emc_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-dalmore-panel.c b/arch/arm/mach-tegra/board-dalmore-panel.c
deleted file mode 100644
index a90f9d9810dd..000000000000
--- a/arch/arm/mach-tegra/board-dalmore-panel.c
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-dalmore-panel.c
- *
- * Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include <linux/ioport.h>
-#include <linux/fb.h>
-#include <linux/nvmap.h>
-#include <linux/nvhost.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/tegra_pwm_bl.h>
-#include <linux/regulator/consumer.h>
-#include <linux/pwm_backlight.h>
-#include <linux/of.h>
-
-#include <mach/irqs.h>
-#include <mach/dc.h>
-#include <mach/pinmux.h>
-#include <mach/pinmux-t11.h>
-
-#include "board.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "board-panel.h"
-#include "common.h"
-#include "iomap.h"
-#include "tegra11_host1x_devices.h"
-
-#define DSI_PANEL_RST_GPIO TEGRA_GPIO_PH3
-#define DSI_PANEL_BL_PWM_GPIO TEGRA_GPIO_PH1
-
-struct platform_device * __init dalmore_host1x_init(void)
-{
- struct platform_device *pdev = NULL;
-
-#ifdef CONFIG_TEGRA_GRHOST
- if (!of_have_populated_dt())
- pdev = tegra11_register_host1x_devices();
- else
- pdev = to_platform_device(bus_find_device_by_name(
- &platform_bus_type, NULL, "host1x"));
-#endif
- return pdev;
-}
-
-/* HDMI Hotplug detection pin */
-#define dalmore_hdmi_hpd TEGRA_GPIO_PN7
-
-static struct regulator *dalmore_hdmi_reg;
-static struct regulator *dalmore_hdmi_pll;
-static struct regulator *dalmore_hdmi_vddio;
-
-static struct resource dalmore_disp1_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_GENERAL,
- .end = INT_DISPLAY_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY_BASE,
- .end = TEGRA_DISPLAY_BASE + TEGRA_DISPLAY_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by dalmore_panel_init() */
- .end = 0, /* Filled in by dalmore_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "ganged_dsia_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "ganged_dsib_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "dsi_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "mipi_cal",
- .start = TEGRA_MIPI_CAL_BASE,
- .end = TEGRA_MIPI_CAL_BASE + TEGRA_MIPI_CAL_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource dalmore_disp2_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_B_GENERAL,
- .end = INT_DISPLAY_B_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY2_BASE,
- .end = TEGRA_DISPLAY2_BASE + TEGRA_DISPLAY2_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by dalmore_panel_init() */
- .end = 0, /* Filled in by dalmore_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "hdmi_regs",
- .start = TEGRA_HDMI_BASE,
- .end = TEGRA_HDMI_BASE + TEGRA_HDMI_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-
-static struct tegra_dc_sd_settings sd_settings;
-
-static struct tegra_dc_out dalmore_disp1_out = {
- .type = TEGRA_DC_OUT_DSI,
- .sd_settings = &sd_settings,
-};
-
-static int dalmore_hdmi_enable(struct device *dev)
-{
- int ret;
- if (!dalmore_hdmi_reg) {
- dalmore_hdmi_reg = regulator_get(dev, "avdd_hdmi");
- if (IS_ERR(dalmore_hdmi_reg)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi\n");
- dalmore_hdmi_reg = NULL;
- return PTR_ERR(dalmore_hdmi_reg);
- }
- }
- ret = regulator_enable(dalmore_hdmi_reg);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi\n");
- return ret;
- }
- if (!dalmore_hdmi_pll) {
- dalmore_hdmi_pll = regulator_get(dev, "avdd_hdmi_pll");
- if (IS_ERR(dalmore_hdmi_pll)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi_pll\n");
- dalmore_hdmi_pll = NULL;
- regulator_put(dalmore_hdmi_reg);
- dalmore_hdmi_reg = NULL;
- return PTR_ERR(dalmore_hdmi_pll);
- }
- }
- ret = regulator_enable(dalmore_hdmi_pll);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi_pll\n");
- return ret;
- }
- return 0;
-}
-
-static int dalmore_hdmi_disable(void)
-{
- if (dalmore_hdmi_reg) {
- regulator_disable(dalmore_hdmi_reg);
- regulator_put(dalmore_hdmi_reg);
- dalmore_hdmi_reg = NULL;
- }
-
- if (dalmore_hdmi_pll) {
- regulator_disable(dalmore_hdmi_pll);
- regulator_put(dalmore_hdmi_pll);
- dalmore_hdmi_pll = NULL;
- }
-
- return 0;
-}
-
-static int dalmore_hdmi_postsuspend(void)
-{
- if (dalmore_hdmi_vddio) {
- regulator_disable(dalmore_hdmi_vddio);
- regulator_put(dalmore_hdmi_vddio);
- dalmore_hdmi_vddio = NULL;
- }
- return 0;
-}
-
-static int dalmore_hdmi_hotplug_init(struct device *dev)
-{
- int e = 0;
-
- if (!dalmore_hdmi_vddio) {
- dalmore_hdmi_vddio = regulator_get(dev, "vdd_hdmi_5v0");
- if (WARN_ON(IS_ERR(dalmore_hdmi_vddio))) {
- e = PTR_ERR(dalmore_hdmi_vddio);
- pr_err("%s: couldn't get regulator vdd_hdmi_5v0: %d\n",
- __func__, e);
- dalmore_hdmi_vddio = NULL;
- } else {
- e = regulator_enable(dalmore_hdmi_vddio);
- }
- }
-
- return e;
-}
-
-static void dalmore_hdmi_hotplug_report(bool state)
-{
- if (state) {
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_DDC_SDA,
- TEGRA_PUPD_PULL_DOWN);
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_DDC_SCL,
- TEGRA_PUPD_PULL_DOWN);
- } else {
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_DDC_SDA,
- TEGRA_PUPD_NORMAL);
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_DDC_SCL,
- TEGRA_PUPD_NORMAL);
- }
-}
-
-/* Electrical characteristics for HDMI, all modes must be declared here */
-struct tmds_config dalmore_tmds_config[] = {
- { /* 480p : 27 MHz and below */
- .pclk = 27000000,
- .pll0 = 0x01003010,
- .pll1 = 0x00301b00,
- .drive_current = 0x23232323,
- .pe_current = 0x00000000,
- .peak_current = 0x00000000,
- },
- { /* 720p : 74.25MHz modes */
- .pclk = 74250000,
- .pll0 = 0x01003110,
- .pll1 = 0x00301b00,
- .drive_current = 0x25252525,
- .pe_current = 0x00000000,
- .peak_current = 0x03030303,
- },
- { /* 1080p : 148.5MHz modes */
- .pclk = 148500000,
- .pll0 = 0x01003310,
- .pll1 = 0x00301b00,
- .drive_current = 0x27272727,
- .pe_current = 0x00000000,
- .peak_current = 0x03030303,
- },
- { /* 4K : 297MHz modes */
- .pclk = INT_MAX,
- .pll0 = 0x01003f10,
- .pll1 = 0x00300f00,
- .drive_current = 0x303f3f3f,
- .pe_current = 0x00000000,
- .peak_current = 0x040f0f0f,
- },
-};
-
-struct tegra_hdmi_out dalmore_hdmi_out = {
- .tmds_config = dalmore_tmds_config,
- .n_tmds_config = ARRAY_SIZE(dalmore_tmds_config),
-};
-
-static struct tegra_dc_out dalmore_disp2_out = {
- .type = TEGRA_DC_OUT_HDMI,
- .flags = TEGRA_DC_OUT_HOTPLUG_HIGH,
- .parent_clk = "pll_d2_out0",
-
- .ddc_bus = 3,
- .hotplug_gpio = dalmore_hdmi_hpd,
- .hdmi_out = &dalmore_hdmi_out,
-
- .max_pixclock = KHZ2PICOS(297000),
-
- .align = TEGRA_DC_ALIGN_MSB,
- .order = TEGRA_DC_ORDER_RED_BLUE,
-
- .enable = dalmore_hdmi_enable,
- .disable = dalmore_hdmi_disable,
- .postsuspend = dalmore_hdmi_postsuspend,
- .hotplug_init = dalmore_hdmi_hotplug_init,
- .hotplug_report = dalmore_hdmi_hotplug_report,
-};
-
-static struct tegra_fb_data dalmore_disp1_fb_data = {
- .win = 0,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
-};
-
-static struct tegra_dc_platform_data dalmore_disp1_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &dalmore_disp1_out,
- .fb = &dalmore_disp1_fb_data,
- .emc_clk_rate = 204000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
-#endif
-};
-
-static struct tegra_fb_data dalmore_disp2_fb_data = {
- .win = 0,
- .xres = 1280,
- .yres = 720,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
-};
-
-static struct tegra_dc_platform_data dalmore_disp2_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &dalmore_disp2_out,
- .fb = &dalmore_disp2_fb_data,
- .emc_clk_rate = 300000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
-#endif
-};
-
-static struct platform_device dalmore_disp2_device = {
- .name = "tegradc",
- .id = 1,
- .resource = dalmore_disp2_resources,
- .num_resources = ARRAY_SIZE(dalmore_disp2_resources),
- .dev = {
- .platform_data = &dalmore_disp2_pdata,
- },
-};
-
-static struct platform_device dalmore_disp1_device = {
- .name = "tegradc",
- .id = 0,
- .resource = dalmore_disp1_resources,
- .num_resources = ARRAY_SIZE(dalmore_disp1_resources),
- .dev = {
- .platform_data = &dalmore_disp1_pdata,
- },
-};
-
-static struct nvmap_platform_carveout dalmore_carveouts[] = {
- [0] = {
- .name = "iram",
- .usage_mask = NVMAP_HEAP_CARVEOUT_IRAM,
- .base = TEGRA_IRAM_BASE + TEGRA_RESET_HANDLER_SIZE,
- .size = TEGRA_IRAM_SIZE - TEGRA_RESET_HANDLER_SIZE,
- },
- [1] = {
- .name = "generic-0",
- .usage_mask = NVMAP_HEAP_CARVEOUT_GENERIC,
- .base = 0, /* Filled in by dalmore_panel_init() */
- .size = 0, /* Filled in by dalmore_panel_init() */
- },
- [2] = {
- .name = "vpr",
- .usage_mask = NVMAP_HEAP_CARVEOUT_VPR,
- .base = 0, /* Filled in by dalmore_panel_init() */
- .size = 0, /* Filled in by dalmore_panel_init() */
- },
-};
-
-static struct nvmap_platform_data dalmore_nvmap_data = {
- .carveouts = dalmore_carveouts,
- .nr_carveouts = ARRAY_SIZE(dalmore_carveouts),
-};
-static struct platform_device dalmore_nvmap_device = {
- .name = "tegra-nvmap",
- .id = -1,
- .dev = {
- .platform_data = &dalmore_nvmap_data,
- },
-};
-
-static void dalmore_panel_select(void)
-{
- struct tegra_panel *panel = NULL;
- struct board_info board;
- u8 dsi_instance;
-
- tegra_get_display_board_info(&board);
-
- switch (board.board_id) {
- case BOARD_E1639:
- panel = &dsi_s_wqxga_10_1;
- /* FIXME: panel used ganged mode,need to check if
- * the dsi_instance is useful in this case
- */
- dsi_instance = DSI_INSTANCE_0;
- break;
- case BOARD_E1631:
- panel = &dsi_a_1080p_11_6;
- dsi_instance = DSI_INSTANCE_0;
- break;
- case BOARD_E1627:
- /* fall through */
- default:
- panel = &dsi_p_wuxga_10_1;
- dsi_instance = DSI_INSTANCE_0;
- break;
- }
- if (panel) {
- if (panel->init_sd_settings)
- panel->init_sd_settings(&sd_settings);
-
- if (panel->init_dc_out) {
- panel->init_dc_out(&dalmore_disp1_out);
- dalmore_disp1_out.dsi->dsi_instance = dsi_instance;
- dalmore_disp1_out.dsi->dsi_panel_rst_gpio =
- DSI_PANEL_RST_GPIO;
- dalmore_disp1_out.dsi->dsi_panel_bl_pwm_gpio =
- DSI_PANEL_BL_PWM_GPIO;
- }
-
- if (panel->init_fb_data)
- panel->init_fb_data(&dalmore_disp1_fb_data);
-
- if (panel->init_cmu_data)
- panel->init_cmu_data(&dalmore_disp1_pdata);
-
- if (panel->set_disp_device)
- panel->set_disp_device(&dalmore_disp1_device);
-
- tegra_dsi_resources_init(dsi_instance, dalmore_disp1_resources,
- ARRAY_SIZE(dalmore_disp1_resources));
-
- if (panel->register_bl_dev)
- panel->register_bl_dev();
-
- if (panel->register_i2c_bridge)
- panel->register_i2c_bridge();
- }
-
-}
-int __init dalmore_panel_init(void)
-{
- int err = 0;
- struct resource __maybe_unused *res;
- struct platform_device *phost1x = NULL;
-
- dalmore_panel_select();
-
-#ifdef CONFIG_TEGRA_NVMAP
- dalmore_carveouts[1].base = tegra_carveout_start;
- dalmore_carveouts[1].size = tegra_carveout_size;
- dalmore_carveouts[2].base = tegra_vpr_start;
- dalmore_carveouts[2].size = tegra_vpr_size;
-#ifdef CONFIG_NVMAP_USE_CMA_FOR_CARVEOUT
- dalmore_carveouts[1].cma_dev = &tegra_generic_cma_dev;
- dalmore_carveouts[1].resize = false;
- dalmore_carveouts[2].cma_dev = &tegra_vpr_cma_dev;
- dalmore_carveouts[2].resize = true;
- dalmore_carveouts[2].cma_chunk_size = SZ_32M;
-#endif
-
- err = platform_device_register(&dalmore_nvmap_device);
- if (err) {
- pr_err("nvmap device registration failed\n");
- return err;
- }
-#endif
-
- phost1x = dalmore_host1x_init();
- if (!phost1x) {
- pr_err("host1x devices registration failed\n");
- return -EINVAL;
- }
-
- res = platform_get_resource_byname(&dalmore_disp1_device,
- IORESOURCE_MEM, "fbmem");
- res->start = tegra_fb_start;
- res->end = tegra_fb_start + tegra_fb_size - 1;
-
- /* Copy the bootloader fb to the fb. */
- if (tegra_bootloader_fb_size)
- __tegra_move_framebuffer(&dalmore_nvmap_device,
- tegra_fb_start, tegra_bootloader_fb_start,
- min(tegra_fb_size, tegra_bootloader_fb_size));
- else
- __tegra_clear_framebuffer(&dalmore_nvmap_device,
- tegra_fb_start, tegra_fb_size);
-
- dalmore_disp1_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&dalmore_disp1_device);
- if (err) {
- pr_err("disp1 device registration failed\n");
- return err;
- }
-
- err = tegra_init_hdmi(&dalmore_disp2_device, phost1x);
- if (err)
- return err;
-
-#ifdef CONFIG_TEGRA_NVAVP
- if (!of_have_populated_dt()) {
- nvavp_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&nvavp_device);
- if (err) {
- pr_err("nvavp device registration failed\n");
- return err;
- }
- }
-#endif
- return err;
-}
diff --git a/arch/arm/mach-tegra/board-dalmore-power.c b/arch/arm/mach-tegra/board-dalmore-power.c
deleted file mode 100644
index 8bab8e0da739..000000000000
--- a/arch/arm/mach-tegra/board-dalmore-power.c
+++ /dev/null
@@ -1,1454 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-dalmore-power.c
- *
- * Copyright (c) 2012-2014 NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/i2c.h>
-#include <linux/pda_power.h>
-#include <linux/platform_device.h>
-#include <linux/resource.h>
-#include <linux/io.h>
-#include <linux/regulator/machine.h>
-#include <linux/regulator/driver.h>
-#include <linux/regulator/fixed.h>
-#include <linux/mfd/max77663-core.h>
-#include <linux/mfd/palmas.h>
-#include <linux/mfd/tps65090.h>
-#include <linux/regulator/max77663-regulator.h>
-#include <linux/regulator/tps51632-regulator.h>
-#include <linux/gpio.h>
-#include <linux/interrupt.h>
-#include <linux/regulator/userspace-consumer.h>
-#include <linux/pid_thermal_gov.h>
-#include <linux/tegra-soc.h>
-#include <linux/tegra-pmc.h>
-
-#include <asm/mach-types.h>
-#include <linux/power/sbs-battery.h>
-
-#include <mach/irqs.h>
-#include <mach/edp.h>
-#include <mach/gpio-tegra.h>
-
-#include "cpu-tegra.h"
-#include "pm.h"
-#include "tegra-board-id.h"
-#include "board-pmu-defines.h"
-#include "board.h"
-#include "gpio-names.h"
-#include "board-common.h"
-#include "board-dalmore.h"
-#include "tegra_cl_dvfs.h"
-#include "devices.h"
-#include "tegra11_soctherm.h"
-#include "iomap.h"
-
-#define PMC_CTRL 0x0
-#define PMC_CTRL_INTR_LOW (1 << 17)
-#define TPS65090_CHARGER_INT TEGRA_GPIO_PJ0
-#define POWER_CONFIG2 0x02
-
-/*TPS65090 consumer rails */
-static struct regulator_consumer_supply tps65090_dcdc1_supply[] = {
- REGULATOR_SUPPLY("vdd_sys_5v0", NULL),
- REGULATOR_SUPPLY("vdd_spk", NULL),
- REGULATOR_SUPPLY("vdd_sys_modem_5v0", NULL),
- REGULATOR_SUPPLY("vdd_sys_cam_5v0", NULL),
-};
-
-static struct regulator_consumer_supply tps65090_dcdc2_supply[] = {
- REGULATOR_SUPPLY("vdd_sys_3v3", NULL),
- REGULATOR_SUPPLY("vddio_hv", "tegradc.1"),
- REGULATOR_SUPPLY("pwrdet_hv", NULL),
- REGULATOR_SUPPLY("vdd_sys_ds_3v3", NULL),
- REGULATOR_SUPPLY("avdd", "0-0028"),
- REGULATOR_SUPPLY("vdd_sys_cam_3v3", NULL),
- REGULATOR_SUPPLY("vdd_sys_sensor_3v3", NULL),
- REGULATOR_SUPPLY("vdd_sys_audio_3v3", NULL),
- REGULATOR_SUPPLY("vdd_sys_dtv_3v3", NULL),
- REGULATOR_SUPPLY("vcc", "0-007c"),
- REGULATOR_SUPPLY("vcc", "0-0030"),
- REGULATOR_SUPPLY("vin", "2-0030"),
-};
-
-static struct regulator_consumer_supply tps65090_dcdc3_supply[] = {
- REGULATOR_SUPPLY("vdd_ao", NULL),
-};
-
-static struct regulator_consumer_supply tps65090_ldo1_supply[] = {
- REGULATOR_SUPPLY("vdd_sby_5v0", NULL),
-};
-
-static struct regulator_consumer_supply tps65090_ldo2_supply[] = {
- REGULATOR_SUPPLY("vdd_sby_3v3", NULL),
-};
-
-static struct regulator_consumer_supply tps65090_fet1_supply[] = {
- REGULATOR_SUPPLY("vdd_lcd_bl", NULL),
-};
-
-static struct regulator_consumer_supply tps65090_fet3_supply[] = {
- REGULATOR_SUPPLY("vdd_modem_3v3", NULL),
-};
-
-static struct regulator_consumer_supply tps65090_fet4_supply[] = {
- REGULATOR_SUPPLY("avdd_lcd", NULL),
- REGULATOR_SUPPLY("avdd", "spi3.2"),
-};
-
-static struct regulator_consumer_supply tps65090_fet5_supply[] = {
- REGULATOR_SUPPLY("vdd_lvds", NULL),
-};
-
-static struct regulator_consumer_supply tps65090_fet6_supply[] = {
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.2"),
-};
-
-static struct regulator_consumer_supply tps65090_fet7_supply[] = {
- REGULATOR_SUPPLY("avdd", "bcm4329_wlan.1"),
- REGULATOR_SUPPLY("avdd", "reg-userspace-consumer.2"),
- REGULATOR_SUPPLY("avdd", "bluedroid_pm.0"),
-};
-
-#define tps65090_rails(id) "tps65090-"#id
-#define TPS65090_PDATA_INIT(_id, _name, _supply_reg, \
- _always_on, _boot_on, _apply_uV, _en_ext_ctrl, _gpio, _wait_to) \
-static struct regulator_init_data ri_data_##_name = \
-{ \
- .supply_regulator = _supply_reg, \
- .constraints = { \
- .name = tps65090_rails(_id), \
- .valid_modes_mask = (REGULATOR_MODE_NORMAL | \
- REGULATOR_MODE_STANDBY), \
- .valid_ops_mask = (REGULATOR_CHANGE_MODE | \
- REGULATOR_CHANGE_STATUS | \
- REGULATOR_CHANGE_VOLTAGE), \
- .always_on = _always_on, \
- .boot_on = _boot_on, \
- .apply_uV = _apply_uV, \
- }, \
- .num_consumer_supplies = \
- ARRAY_SIZE(tps65090_##_name##_supply), \
- .consumer_supplies = tps65090_##_name##_supply, \
-}; \
-static struct tps65090_regulator_plat_data \
- tps65090_regulator_pdata_##_name = \
-{ \
- .enable_ext_control = _en_ext_ctrl, \
- .gpio = _gpio, \
- .reg_init_data = &ri_data_##_name , \
- .wait_timeout_us = _wait_to, \
-}
-
-TPS65090_PDATA_INIT(DCDC1, dcdc1, NULL, 1, 1, 0, true, -1, -1);
-TPS65090_PDATA_INIT(DCDC2, dcdc2, NULL, 1, 1, 0, true, -1, -1);
-TPS65090_PDATA_INIT(DCDC3, dcdc3, NULL, 1, 1, 0, true, -1, -1);
-TPS65090_PDATA_INIT(LDO1, ldo1, NULL, 1, 1, 0, false, -1, -1);
-TPS65090_PDATA_INIT(LDO2, ldo2, NULL, 1, 1, 0, false, -1, -1);
-TPS65090_PDATA_INIT(FET1, fet1, NULL, 0, 0, 0, false, -1, 800);
-TPS65090_PDATA_INIT(FET3, fet3, tps65090_rails(DCDC2), 0, 0, 0, false, -1, 0);
-TPS65090_PDATA_INIT(FET4, fet4, tps65090_rails(DCDC2), 0, 0, 0, false, -1, 0);
-TPS65090_PDATA_INIT(FET5, fet5, tps65090_rails(DCDC2), 0, 0, 0, false, -1, 0);
-TPS65090_PDATA_INIT(FET6, fet6, tps65090_rails(DCDC2), 0, 0, 0, false, -1, 0);
-TPS65090_PDATA_INIT(FET7, fet7, tps65090_rails(DCDC2), 0, 0, 0, false, -1, 0);
-
-static struct tps65090_charger_data bcharger_pdata = {
- .irq_base = TPS65090_TEGRA_IRQ_BASE,
-};
-
-#define ADD_TPS65090_REG(_name) (&tps65090_regulator_pdata_##_name)
-static struct tps65090_platform_data tps65090_pdata = {
- .irq_base = TPS65090_TEGRA_IRQ_BASE,
- .reg_pdata = {
- ADD_TPS65090_REG(dcdc1),
- ADD_TPS65090_REG(dcdc2),
- ADD_TPS65090_REG(dcdc3),
- ADD_TPS65090_REG(fet1),
- NULL,
- ADD_TPS65090_REG(fet3),
- ADD_TPS65090_REG(fet4),
- ADD_TPS65090_REG(fet5),
- ADD_TPS65090_REG(fet6),
- ADD_TPS65090_REG(fet7),
- ADD_TPS65090_REG(ldo1),
- ADD_TPS65090_REG(ldo2),
- },
- .charger_pdata = &bcharger_pdata,
-};
-
-/* MAX77663 consumer rails */
-static struct regulator_consumer_supply max77663_sd0_supply[] = {
- REGULATOR_SUPPLY("vdd_core", NULL),
- REGULATOR_SUPPLY("vdd_core", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("vdd_core", "sdhci-tegra.2"),
- REGULATOR_SUPPLY("vdd_core", "sdhci-tegra.3"),
-};
-
-static struct regulator_consumer_supply max77663_sd1_supply[] = {
- REGULATOR_SUPPLY("vddio_ddr", NULL),
- REGULATOR_SUPPLY("vddio_ddr0", NULL),
- REGULATOR_SUPPLY("vddio_ddr1", NULL),
-};
-
-static struct regulator_consumer_supply max77663_sd2_supply[] = {
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.1"),
- REGULATOR_SUPPLY("vddio_cam", "vi"),
- REGULATOR_SUPPLY("pwrdet_cam", NULL),
- REGULATOR_SUPPLY("avdd_osc", NULL),
- REGULATOR_SUPPLY("vddio_sys", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("pwrdet_sdmmc1", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("pwrdet_sdmmc4", NULL),
- REGULATOR_SUPPLY("vdd_emmc", NULL),
- REGULATOR_SUPPLY("vddio_audio", NULL),
- REGULATOR_SUPPLY("pwrdet_audio", NULL),
- REGULATOR_SUPPLY("avdd_audio_1v8", NULL),
- REGULATOR_SUPPLY("vdd_audio_1v8", NULL),
- REGULATOR_SUPPLY("vddio_modem", NULL),
- REGULATOR_SUPPLY("vddio_modem_1v8", NULL),
- REGULATOR_SUPPLY("vddio_bb", NULL),
- REGULATOR_SUPPLY("pwrdet_bb", NULL),
- REGULATOR_SUPPLY("vddio_bb_1v8", NULL),
- REGULATOR_SUPPLY("vddio_uart", NULL),
- REGULATOR_SUPPLY("pwrdet_uart", NULL),
- REGULATOR_SUPPLY("vddio_gmi", NULL),
- REGULATOR_SUPPLY("pwrdet_nand", NULL),
- REGULATOR_SUPPLY("vdd_sensor_1v8", NULL),
- REGULATOR_SUPPLY("vdd_mic_1v8", NULL),
- REGULATOR_SUPPLY("dvdd", "0-0028"),
- REGULATOR_SUPPLY("vdd_ds_1v8", NULL),
- REGULATOR_SUPPLY("vdd_spi_1v8", NULL),
- REGULATOR_SUPPLY("dvdd_lcd", NULL),
- REGULATOR_SUPPLY("vdd_com_1v8", NULL),
- REGULATOR_SUPPLY("dvdd", "bcm4329_wlan.1"),
- REGULATOR_SUPPLY("dvdd", "reg-userspace-consumer.2"),
- REGULATOR_SUPPLY("dvdd", "bluedroid_pm.0"),
- REGULATOR_SUPPLY("vdd_dtv_1v8", NULL),
- REGULATOR_SUPPLY("vlogic", "0-0069"),
- REGULATOR_SUPPLY("vid", "0-000d"),
- REGULATOR_SUPPLY("vddio", "0-0078"),
-};
-
-static struct regulator_consumer_supply max77663_sd3_supply[] = {
- REGULATOR_SUPPLY("vcore_emmc", NULL),
-};
-
-static struct regulator_consumer_supply max77663_ldo0_supply[] = {
- REGULATOR_SUPPLY("avdd_plla_p_c", NULL),
- REGULATOR_SUPPLY("avdd_pllx", NULL),
- REGULATOR_SUPPLY("avdd_plle", NULL),
- REGULATOR_SUPPLY("avdd_pllm", NULL),
- REGULATOR_SUPPLY("avdd_pllu", NULL),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "vi"),
-};
-
-static struct regulator_consumer_supply max77663_ldo1_supply[] = {
- REGULATOR_SUPPLY("vdd_ddr_hs", NULL),
-};
-
-static struct regulator_consumer_supply max77663_ldo2_supply[] = {
- REGULATOR_SUPPLY("vdd_sensor_2v85", NULL),
- REGULATOR_SUPPLY("vdd_als", NULL),
- REGULATOR_SUPPLY("vdd", "0-0048"),
- REGULATOR_SUPPLY("vdd", "0-004c"),
- REGULATOR_SUPPLY("vdd", "0-0069"),
- REGULATOR_SUPPLY("vdd", "0-000d"),
- REGULATOR_SUPPLY("vdd", "0-0078"),
-};
-
-static struct regulator_consumer_supply max77663_ldo3_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avddio_usb", "tegra-ehci.2"),
-};
-
-static struct regulator_consumer_supply max77663_ldo4_supply[] = {
- REGULATOR_SUPPLY("vdd_rtc", NULL),
-};
-
-static struct regulator_consumer_supply max77663_ldo5_supply[] = {
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "vi"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.1"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.2"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-xhci"),
- REGULATOR_SUPPLY("pwrdet_mipi", NULL),
- REGULATOR_SUPPLY("vddio_bb_hsic", NULL),
-};
-
-static struct regulator_consumer_supply max77663_ldo6_supply[] = {
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.2"),
- REGULATOR_SUPPLY("pwrdet_sdmmc3", NULL),
-};
-
-/* FIXME!! Put the device address of camera */
-static struct regulator_consumer_supply max77663_ldo7_supply[] = {
- REGULATOR_SUPPLY("avdd_cam1", NULL),
- REGULATOR_SUPPLY("avdd_2v8_cam_af", NULL),
- REGULATOR_SUPPLY("vana", "2-0036"),
-};
-
-/* FIXME!! Put the device address of camera */
-static struct regulator_consumer_supply max77663_ldo8_supply[] = {
- REGULATOR_SUPPLY("avdd_cam2", NULL),
- REGULATOR_SUPPLY("avdd", "2-0010"),
-};
-
-static struct max77663_regulator_fps_cfg max77663_fps_cfgs[] = {
- {
- .src = FPS_SRC_0,
- .en_src = FPS_EN_SRC_EN0,
- .time_period = FPS_TIME_PERIOD_DEF,
- },
- {
- .src = FPS_SRC_1,
- .en_src = FPS_EN_SRC_EN1,
- .time_period = FPS_TIME_PERIOD_DEF,
- },
- {
- .src = FPS_SRC_2,
- .en_src = FPS_EN_SRC_EN0,
- .time_period = FPS_TIME_PERIOD_DEF,
- },
-};
-
-#define MAX77663_PDATA_INIT(_rid, _id, _min_uV, _max_uV, _supply_reg, \
- _always_on, _boot_on, _apply_uV, \
- _fps_src, _fps_pu_period, _fps_pd_period, _flags) \
- static struct regulator_init_data max77663_regulator_idata_##_id = { \
- .supply_regulator = _supply_reg, \
- .constraints = { \
- .name = max77663_rails(_id), \
- .min_uV = _min_uV, \
- .max_uV = _max_uV, \
- .valid_modes_mask = (REGULATOR_MODE_NORMAL | \
- REGULATOR_MODE_STANDBY), \
- .valid_ops_mask = (REGULATOR_CHANGE_MODE | \
- REGULATOR_CHANGE_STATUS | \
- REGULATOR_CHANGE_VOLTAGE), \
- .always_on = _always_on, \
- .boot_on = _boot_on, \
- .apply_uV = _apply_uV, \
- }, \
- .num_consumer_supplies = \
- ARRAY_SIZE(max77663_##_id##_supply), \
- .consumer_supplies = max77663_##_id##_supply, \
- }; \
-static struct max77663_regulator_platform_data max77663_regulator_pdata_##_id =\
-{ \
- .reg_init_data = &max77663_regulator_idata_##_id, \
- .id = MAX77663_REGULATOR_ID_##_rid, \
- .fps_src = _fps_src, \
- .fps_pu_period = _fps_pu_period, \
- .fps_pd_period = _fps_pd_period, \
- .fps_cfgs = max77663_fps_cfgs, \
- .flags = _flags, \
- }
-
-MAX77663_PDATA_INIT(SD0, sd0, 900000, 1400000, tps65090_rails(DCDC3), 1, 1, 0,
- FPS_SRC_1, -1, -1, SD_FSRADE_DISABLE);
-
-MAX77663_PDATA_INIT(SD1, sd1, 1200000, 1200000, tps65090_rails(DCDC3), 1, 1, 1,
- FPS_SRC_1, -1, -1, SD_FSRADE_DISABLE);
-
-MAX77663_PDATA_INIT(SD2, sd2, 1800000, 1800000, tps65090_rails(DCDC3), 1, 1, 1,
- FPS_SRC_0, -1, -1, 0);
-
-MAX77663_PDATA_INIT(SD3, sd3, 2850000, 2850000, tps65090_rails(DCDC3), 1, 1, 1,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO0, ldo0, 1050000, 1050000, max77663_rails(sd2), 1, 1, 1,
- FPS_SRC_1, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO1, ldo1, 1050000, 1050000, max77663_rails(sd2), 0, 0, 1,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO2, ldo2, 2850000, 2850000, tps65090_rails(DCDC2), 1, 1,
- 1, FPS_SRC_1, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO3, ldo3, 1050000, 1050000, max77663_rails(sd2), 1, 1, 1,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO4, ldo4, 1100000, 1100000, tps65090_rails(DCDC2), 1, 1,
- 1, FPS_SRC_NONE, -1, -1, LDO4_EN_TRACKING);
-
-MAX77663_PDATA_INIT(LDO5, ldo5, 1200000, 1200000, max77663_rails(sd2), 0, 1, 1,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO6, ldo6, 1800000, 3300000, tps65090_rails(DCDC2), 0, 0, 0,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO7, ldo7, 2800000, 2800000, tps65090_rails(DCDC2), 0, 0, 1,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO8, ldo8, 2800000, 2800000, tps65090_rails(DCDC2), 0, 1, 1,
- FPS_SRC_1, -1, -1, 0);
-
-#define MAX77663_REG(_id, _data) (&max77663_regulator_pdata_##_data)
-
-static struct max77663_regulator_platform_data *max77663_reg_pdata[] = {
- MAX77663_REG(SD0, sd0),
- MAX77663_REG(SD1, sd1),
- MAX77663_REG(SD2, sd2),
- MAX77663_REG(SD3, sd3),
- MAX77663_REG(LDO0, ldo0),
- MAX77663_REG(LDO1, ldo1),
- MAX77663_REG(LDO2, ldo2),
- MAX77663_REG(LDO3, ldo3),
- MAX77663_REG(LDO4, ldo4),
- MAX77663_REG(LDO5, ldo5),
- MAX77663_REG(LDO6, ldo6),
- MAX77663_REG(LDO7, ldo7),
- MAX77663_REG(LDO8, ldo8),
-};
-
-static struct max77663_gpio_config max77663_gpio_cfgs[] = {
- {
- .gpio = MAX77663_GPIO0,
- .dir = GPIO_DIR_OUT,
- .dout = GPIO_DOUT_LOW,
- .out_drv = GPIO_OUT_DRV_PUSH_PULL,
- .alternate = GPIO_ALT_DISABLE,
- },
- {
- .gpio = MAX77663_GPIO1,
- .dir = GPIO_DIR_IN,
- .dout = GPIO_DOUT_HIGH,
- .out_drv = GPIO_OUT_DRV_OPEN_DRAIN,
- .pull_up = GPIO_PU_ENABLE,
- .alternate = GPIO_ALT_DISABLE,
- },
- {
- .gpio = MAX77663_GPIO2,
- .dir = GPIO_DIR_OUT,
- .dout = GPIO_DOUT_HIGH,
- .out_drv = GPIO_OUT_DRV_OPEN_DRAIN,
- .pull_up = GPIO_PU_ENABLE,
- .alternate = GPIO_ALT_DISABLE,
- },
- {
- .gpio = MAX77663_GPIO3,
- .dir = GPIO_DIR_OUT,
- .dout = GPIO_DOUT_HIGH,
- .out_drv = GPIO_OUT_DRV_OPEN_DRAIN,
- .pull_up = GPIO_PU_ENABLE,
- .alternate = GPIO_ALT_DISABLE,
- },
- {
- .gpio = MAX77663_GPIO4,
- .dir = GPIO_DIR_OUT,
- .dout = GPIO_DOUT_HIGH,
- .out_drv = GPIO_OUT_DRV_PUSH_PULL,
- .alternate = GPIO_ALT_ENABLE,
- },
- {
- .gpio = MAX77663_GPIO5,
- .dir = GPIO_DIR_OUT,
- .dout = GPIO_DOUT_LOW,
- .out_drv = GPIO_OUT_DRV_PUSH_PULL,
- .alternate = GPIO_ALT_DISABLE,
- },
- {
- .gpio = MAX77663_GPIO6,
- .dir = GPIO_DIR_OUT,
- .dout = GPIO_DOUT_LOW,
- .out_drv = GPIO_OUT_DRV_OPEN_DRAIN,
- .alternate = GPIO_ALT_DISABLE,
- },
- {
- .gpio = MAX77663_GPIO7,
- .dir = GPIO_DIR_OUT,
- .dout = GPIO_DOUT_LOW,
- .out_drv = GPIO_OUT_DRV_OPEN_DRAIN,
- .alternate = GPIO_ALT_DISABLE,
- },
-};
-
-static struct max77663_platform_data max77663_pdata = {
- .irq_base = MAX77663_IRQ_BASE,
- .gpio_base = MAX77663_GPIO_BASE,
-
- .num_gpio_cfgs = ARRAY_SIZE(max77663_gpio_cfgs),
- .gpio_cfgs = max77663_gpio_cfgs,
-
- .regulator_pdata = max77663_reg_pdata,
- .num_regulator_pdata = ARRAY_SIZE(max77663_reg_pdata),
-
- .rtc_i2c_addr = 0x68,
-
- .use_power_off = false,
-};
-
-static struct i2c_board_info __initdata max77663_regulators[] = {
- {
- /* The I2C address was determined by OTP factory setting */
- I2C_BOARD_INFO("max77663", 0x3c),
- .irq = INT_EXTERNAL_PMU,
- .platform_data = &max77663_pdata,
- },
-};
-
-static struct i2c_board_info __initdata tps65090_regulators[] = {
- {
- I2C_BOARD_INFO("tps65090", 0x48),
- .platform_data = &tps65090_pdata,
- },
-};
-
-/************************ Palmas based regulator ****************/
-static struct regulator_consumer_supply palmas_smps12_supply[] = {
- REGULATOR_SUPPLY("vddio_ddr3l", NULL),
- REGULATOR_SUPPLY("vcore_ddr3l", NULL),
- REGULATOR_SUPPLY("vref2_ddr3l", NULL),
-};
-
-#define palmas_smps3_supply max77663_sd2_supply
-#define palmas_smps45_supply max77663_sd0_supply
-#define palmas_smps457_supply max77663_sd0_supply
-
-static struct regulator_consumer_supply palmas_smps8_supply[] = {
- REGULATOR_SUPPLY("avdd_plla_p_c", NULL),
- REGULATOR_SUPPLY("avdd_pllm", NULL),
- REGULATOR_SUPPLY("avdd_pllu", NULL),
- REGULATOR_SUPPLY("avdd_pllx", NULL),
- REGULATOR_SUPPLY("vdd_ddr_hs", NULL),
- REGULATOR_SUPPLY("avdd_plle", NULL),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "vi"),
- REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avddio_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avddio_usb", "tegra-xhci"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-xhci"),
-};
-
-static struct regulator_consumer_supply palmas_smps8_config2_supply[] = {
- REGULATOR_SUPPLY("avdd_plla_p_c", NULL),
- REGULATOR_SUPPLY("avdd_pllm", NULL),
- REGULATOR_SUPPLY("avdd_pllu", NULL),
- REGULATOR_SUPPLY("avdd_pllx", NULL),
- REGULATOR_SUPPLY("vdd_ddr_hs", NULL),
- REGULATOR_SUPPLY("avdd_plle", NULL),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "vi"),
-};
-
-static struct regulator_consumer_supply palmas_smps9_supply[] = {
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.3"),
-};
-
-#define palmas_ldo1_supply max77663_ldo7_supply
-
-static struct regulator_consumer_supply palmas_ldo1_config2_supply[] = {
- REGULATOR_SUPPLY("avddio_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avddio_usb", "tegra-xhci"),
-};
-
-#define palmas_ldo2_supply max77663_ldo8_supply
-
-/* FIXME!! Put the device address of camera */
-static struct regulator_consumer_supply palmas_ldo2_config2_supply[] = {
- REGULATOR_SUPPLY("avdd_cam1", NULL),
- REGULATOR_SUPPLY("avdd_2v8_cam_af", NULL),
- REGULATOR_SUPPLY("avdd_cam2", NULL),
- REGULATOR_SUPPLY("vana", "2-0036"),
- REGULATOR_SUPPLY("vana", "2-0010"),
- REGULATOR_SUPPLY("vana_imx132", "2-0036"),
- REGULATOR_SUPPLY("avdd", "2-0010"),
-};
-
-#define palmas_ldo3_supply max77663_ldo5_supply
-
-static struct regulator_consumer_supply palmas_ldo4_supply[] = {
- REGULATOR_SUPPLY("vpp_fuse", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo4_config2_supply[] = {
- REGULATOR_SUPPLY("vpp_fuse", NULL),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-xhci"),
-};
-
-#define palmas_ldo6_supply max77663_ldo2_supply
-
-static struct regulator_consumer_supply palmas_ldo7_supply[] = {
- REGULATOR_SUPPLY("vdd_af_cam1", NULL),
- REGULATOR_SUPPLY("vdd", "2-000e"),
-};
-
-#define palmas_ldo8_supply max77663_ldo4_supply
-#define palmas_ldo9_supply max77663_ldo6_supply
-
-static struct regulator_consumer_supply palmas_ldoln_supply[] = {
- REGULATOR_SUPPLY("hvdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("hvdd_usb", "tegra-xhci"),
-};
-
-static struct regulator_consumer_supply palmas_ldoln_fab05_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"),
-};
-
-static struct regulator_consumer_supply palmas_ldousb_supply[] = {
- REGULATOR_SUPPLY("avdd_usb", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"),
-};
-
-static struct regulator_consumer_supply palmas_ldousb_fab05_supply[] = {
- REGULATOR_SUPPLY("hvdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("hvdd_usb", "tegra-xhci"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
-};
-
-static struct regulator_consumer_supply palmas_regen1_supply[] = {
-};
-
-static struct regulator_consumer_supply palmas_regen2_supply[] = {
-};
-
-PALMAS_REGS_PDATA(smps12, 1350, 1350, tps65090_rails(DCDC3), 1, 1, 0, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps3, 1800, 1800, tps65090_rails(DCDC3), 0, 0, 0, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps45, 900, 1400, tps65090_rails(DCDC2), 1, 1, 0, NORMAL,
- 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0);
-PALMAS_REGS_PDATA(smps457, 900, 1400, tps65090_rails(DCDC2), 1, 1, 0, NORMAL,
- 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0);
-PALMAS_REGS_PDATA(smps8, 1050, 1050, tps65090_rails(DCDC2), 0, 1, 1, NORMAL,
- 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0);
-PALMAS_REGS_PDATA(smps8_config2, 1050, 1050, tps65090_rails(DCDC2), 0, 1, 1,
- NORMAL, 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0);
-PALMAS_REGS_PDATA(smps9, 2800, 2800, tps65090_rails(DCDC2), 1, 0, 0, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo1, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo1_config2, 1200, 1200, tps65090_rails(DCDC2), 0, 0, 1, 0,
- 1, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo2, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo2_config2, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo3, 1200, 1200, palmas_rails(smps3), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo4_config2, 1200, 1200, tps65090_rails(DCDC2), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo4, 1800, 1800, tps65090_rails(DCDC2), 0, 0, 0, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo6, 2850, 2850, tps65090_rails(DCDC2), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo7, 2800, 2800, tps65090_rails(DCDC2), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo8, 900, 900, tps65090_rails(DCDC3), 1, 1, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo9, 1800, 3300, palmas_rails(smps9), 0, 0, 1, 0,
- 1, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldoln, 3300, 3300, tps65090_rails(DCDC1), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldoln_fab05, 3300, 3300, tps65090_rails(DCDC1), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldousb, 3300, 3300, tps65090_rails(DCDC1), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldousb_fab05, 3300, 3300, tps65090_rails(DCDC1), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(regen1, 3300, 3300, NULL, 1, 1, 0, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(regen2, 5000, 5000, NULL, 1, 1, 0, 0,
- 0, 0, 0, 0, 0);
-
-#define PALMAS_REG_PDATA(_sname) &reg_idata_##_sname
-
-static struct regulator_init_data *dalmore_e1611_reg_data[PALMAS_NUM_REGS] = {
- PALMAS_REG_PDATA(smps12),
- NULL,
- PALMAS_REG_PDATA(smps3),
- PALMAS_REG_PDATA(smps45),
- PALMAS_REG_PDATA(smps457),
- NULL,
- NULL,
- PALMAS_REG_PDATA(smps8),
- PALMAS_REG_PDATA(smps9),
- NULL,
- NULL,
- PALMAS_REG_PDATA(ldo1),
- PALMAS_REG_PDATA(ldo2),
- PALMAS_REG_PDATA(ldo3),
- PALMAS_REG_PDATA(ldo4),
- NULL,
- PALMAS_REG_PDATA(ldo6),
- PALMAS_REG_PDATA(ldo7),
- PALMAS_REG_PDATA(ldo8),
- PALMAS_REG_PDATA(ldo9),
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- PALMAS_REG_PDATA(ldoln),
- PALMAS_REG_PDATA(ldousb),
- PALMAS_REG_PDATA(regen1),
- PALMAS_REG_PDATA(regen2),
- NULL,
- NULL,
- NULL,
-};
-
-#define PALMAS_REG_INIT_DATA(_sname) &reg_init_data_##_sname
-static struct palmas_reg_init *dalmore_e1611_reg_init[PALMAS_NUM_REGS] = {
- PALMAS_REG_INIT_DATA(smps12),
- NULL,
- PALMAS_REG_INIT_DATA(smps3),
- PALMAS_REG_INIT_DATA(smps45),
- PALMAS_REG_INIT_DATA(smps457),
- NULL,
- NULL,
- PALMAS_REG_INIT_DATA(smps8),
- PALMAS_REG_INIT_DATA(smps9),
- NULL,
- NULL,
- PALMAS_REG_INIT_DATA(ldo1),
- PALMAS_REG_INIT_DATA(ldo2),
- PALMAS_REG_INIT_DATA(ldo3),
- PALMAS_REG_INIT_DATA(ldo4),
- NULL,
- PALMAS_REG_INIT_DATA(ldo6),
- PALMAS_REG_INIT_DATA(ldo7),
- PALMAS_REG_INIT_DATA(ldo8),
- PALMAS_REG_INIT_DATA(ldo9),
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- PALMAS_REG_INIT_DATA(ldoln),
- PALMAS_REG_INIT_DATA(ldousb),
- PALMAS_REG_INIT_DATA(regen1),
- PALMAS_REG_INIT_DATA(regen2),
- NULL,
- NULL,
- NULL,
-};
-
-static struct palmas_pmic_platform_data pmic_platform = {
- .disable_smps10_boost_suspend = false,
-};
-
-static struct palmas_rtc_platform_data rtc_platform = {
- .backup_battery_chargeable = true,
- .backup_battery_charge_high_current = true,
-};
-
-static struct palmas_pinctrl_config palmas_pincfg[] = {
- PALMAS_PINMUX("powergood", "powergood", NULL, NULL),
- PALMAS_PINMUX("vac", "vac", NULL, NULL),
- PALMAS_PINMUX("gpio0", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio1", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio2", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio3", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio4", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio5", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio6", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio7", "gpio", NULL, NULL),
-};
-
-static struct palmas_pinctrl_platform_data palmas_pinctrl_pdata = {
- .pincfg = palmas_pincfg,
- .num_pinctrl = ARRAY_SIZE(palmas_pincfg),
- .dvfs1_enable = true,
- .dvfs2_enable = false,
-};
-
-static struct palmas_platform_data palmas_pdata = {
- .gpio_base = PALMAS_TEGRA_GPIO_BASE,
- .irq_base = PALMAS_TEGRA_IRQ_BASE,
- .pmic_pdata = &pmic_platform,
- .rtc_pdata = &rtc_platform,
- .pinctrl_pdata = &palmas_pinctrl_pdata,
- #ifndef CONFIG_ANDROID
- .long_press_delay = PALMAS_LONG_PRESS_KEY_TIME_8SECONDS,
- #else
- /* Retaining default value, 12 Seconds */
- .long_press_delay = PALMAS_LONG_PRESS_KEY_TIME_DEFAULT,
- #endif
-};
-
-static struct i2c_board_info palma_device[] = {
- {
- I2C_BOARD_INFO("tps65913", 0x58),
- .irq = INT_EXTERNAL_PMU,
- .platform_data = &palmas_pdata,
- },
-};
-
-/* EN_AVDD_USB_HDMI From PMU GP1 */
-static struct regulator_consumer_supply fixed_reg_avdd_usb_hdmi_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("hvdd_usb", "tegra-ehci.2"),
-};
-
-/* EN_CAM_1v8 From PMU GP5 */
-static struct regulator_consumer_supply fixed_reg_en_1v8_cam_supply[] = {
- REGULATOR_SUPPLY("vi2c", "2-0030"),
- REGULATOR_SUPPLY("vif", "2-0036"),
- REGULATOR_SUPPLY("dovdd", "2-0010"),
- REGULATOR_SUPPLY("dvdd", "2-0010"),
- REGULATOR_SUPPLY("vdd_i2c", "2-000e"),
-};
-
-/* EN_CAM_1v8 on e1611 From PMU GP6 */
-static struct regulator_consumer_supply fixed_reg_en_1v8_cam_e1611_supply[] = {
- REGULATOR_SUPPLY("vi2c", "2-0030"),
- REGULATOR_SUPPLY("vif", "2-0036"),
- REGULATOR_SUPPLY("dovdd", "2-0010"),
- REGULATOR_SUPPLY("dvdd", "2-0010"),
- REGULATOR_SUPPLY("vdd_i2c", "2-000e"),
-};
-
-static struct regulator_consumer_supply fixed_reg_vdd_hdmi_5v0_supply[] = {
- REGULATOR_SUPPLY("vdd_hdmi_5v0", "tegradc.1"),
-};
-
-static struct regulator_consumer_supply fixed_reg_lcd_bl_en_supply[] = {
- REGULATOR_SUPPLY("vdd_lcd_bl_en", NULL),
-};
-
-/* EN_USB1_VBUS From TEGRA GPIO PN4 PR3(T30) */
-static struct regulator_consumer_supply fixed_reg_usb1_vbus_supply[] = {
- REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.0"),
- REGULATOR_SUPPLY("usb_vbus", "tegra-otg"),
- REGULATOR_SUPPLY("usb_vbus0", "tegra-xhci"),
-};
-
-/* EN_3V3_FUSE From TEGRA GPIO PX4 */
-static struct regulator_consumer_supply fixed_reg_vpp_fuse_supply[] = {
- REGULATOR_SUPPLY("vpp_fuse", NULL),
-};
-
-/* EN_USB3_VBUS From TEGRA GPIO PM5 */
-static struct regulator_consumer_supply fixed_reg_usb3_vbus_supply[] = {
- REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.2"),
- REGULATOR_SUPPLY("usb_vbus1", "tegra-xhci"),
-};
-
-/* EN_1V8_TS From TEGRA_GPIO_PH5 */
-static struct regulator_consumer_supply fixed_reg_dvdd_ts_supply[] = {
- REGULATOR_SUPPLY("dvdd", "spi3.2"),
-};
-
-/* EN_AVDD_HDMI_PLL From TEGRA_GPIO_PO1 */
-static struct regulator_consumer_supply fixed_reg_avdd_hdmi_pll_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
-};
-
-/* Macro for defining fixed regulator sub device data */
-#define FIXED_SUPPLY(_name) "fixed_reg_"#_name
-#define FIXED_REG(_id, _var, _name, _in_supply, _always_on, _boot_on, \
- _gpio_nr, _open_drain, _active_high, _boot_state, _millivolts) \
- static struct regulator_init_data ri_data_##_var = \
- { \
- .supply_regulator = _in_supply, \
- .num_consumer_supplies = \
- ARRAY_SIZE(fixed_reg_##_name##_supply), \
- .consumer_supplies = fixed_reg_##_name##_supply, \
- .constraints = { \
- .valid_modes_mask = (REGULATOR_MODE_NORMAL | \
- REGULATOR_MODE_STANDBY), \
- .valid_ops_mask = (REGULATOR_CHANGE_MODE | \
- REGULATOR_CHANGE_STATUS | \
- REGULATOR_CHANGE_VOLTAGE), \
- .always_on = _always_on, \
- .boot_on = _boot_on, \
- }, \
- }; \
- static struct fixed_voltage_config fixed_reg_##_var##_pdata = \
- { \
- .supply_name = FIXED_SUPPLY(_name), \
- .microvolts = _millivolts * 1000, \
- .gpio = _gpio_nr, \
- .gpio_is_open_drain = _open_drain, \
- .enable_high = _active_high, \
- .enabled_at_boot = _boot_state, \
- .init_data = &ri_data_##_var, \
- }; \
- static struct platform_device fixed_reg_##_var##_dev = { \
- .name = "reg-fixed-voltage", \
- .id = _id, \
- .dev = { \
- .platform_data = &fixed_reg_##_var##_pdata, \
- }, \
- }
-
-FIXED_REG(1, avdd_usb_hdmi, avdd_usb_hdmi,
- tps65090_rails(DCDC2), 0, 0,
- MAX77663_GPIO_BASE + MAX77663_GPIO1, true, true, 1, 3300);
-
-FIXED_REG(2, en_1v8_cam, en_1v8_cam,
- max77663_rails(sd2), 0, 0,
- MAX77663_GPIO_BASE + MAX77663_GPIO5, false, true, 0, 1800);
-
-FIXED_REG(3, vdd_hdmi_5v0, vdd_hdmi_5v0,
- tps65090_rails(DCDC1), 0, 0,
- TEGRA_GPIO_PK1, false, true, 0, 5000);
-
-FIXED_REG(4, vpp_fuse, vpp_fuse,
- max77663_rails(sd2), 0, 0,
- TEGRA_GPIO_PX4, false, true, 0, 3300);
-
-FIXED_REG(5, usb1_vbus, usb1_vbus,
- tps65090_rails(DCDC1), 0, 0,
- TEGRA_GPIO_PN4, true, true, 0, 5000);
-
-FIXED_REG(6, usb3_vbus, usb3_vbus,
- tps65090_rails(DCDC1), 0, 0,
- TEGRA_GPIO_PK6, true, true, 0, 5000);
-
-FIXED_REG(7, en_1v8_cam_e1611, en_1v8_cam_e1611,
- palmas_rails(smps3), 0, 0,
- PALMAS_TEGRA_GPIO_BASE + PALMAS_GPIO6, false, true, 0, 1800);
-
-FIXED_REG(8, dvdd_ts, dvdd_ts,
- palmas_rails(smps3), 0, 0,
- TEGRA_GPIO_PH5, false, false, 1, 1800);
-
-FIXED_REG(9, lcd_bl_en, lcd_bl_en,
- NULL, 0, 0,
- TEGRA_GPIO_PH2, false, true, 0, 5000);
-
-FIXED_REG(10, avdd_hdmi_pll, avdd_hdmi_pll,
- palmas_rails(ldo3), 0, 0,
- TEGRA_GPIO_PO1, false, true, 1, 1200);
-/*
- * Creating the fixed regulator device tables
- */
-
-#define ADD_FIXED_REG(_name) (&fixed_reg_##_name##_dev)
-
-#define DALMORE_COMMON_FIXED_REG \
- ADD_FIXED_REG(usb1_vbus), \
- ADD_FIXED_REG(usb3_vbus), \
- ADD_FIXED_REG(vdd_hdmi_5v0), \
- ADD_FIXED_REG(lcd_bl_en),
-
-#define E1612_FIXED_REG \
- ADD_FIXED_REG(avdd_usb_hdmi), \
- ADD_FIXED_REG(en_1v8_cam), \
- ADD_FIXED_REG(vpp_fuse), \
-
-#define E1611_FIXED_REG \
- ADD_FIXED_REG(en_1v8_cam_e1611), \
- ADD_FIXED_REG(dvdd_ts),
-
-#define DALMORE_POWER_CONFIG_2 \
- ADD_FIXED_REG(avdd_hdmi_pll),
-
-/* Gpio switch regulator platform data for Dalmore E1611 */
-static struct platform_device *fixed_reg_devs_e1611_a00[] = {
- DALMORE_COMMON_FIXED_REG
- E1611_FIXED_REG
-};
-
-/* Gpio switch regulator platform data for Dalmore E1612 */
-static struct platform_device *fixed_reg_devs_e1612_a00[] = {
- DALMORE_COMMON_FIXED_REG
- E1612_FIXED_REG
-};
-
-static struct platform_device *fixed_reg_devs_dalmore_config2[] = {
- DALMORE_POWER_CONFIG_2
-};
-
-static void set_dalmore_power_fab05(void)
-{
- dalmore_e1611_reg_data[PALMAS_REG_LDOLN] =
- PALMAS_REG_PDATA(ldoln_fab05);
- dalmore_e1611_reg_init[PALMAS_REG_LDOLN] =
- PALMAS_REG_INIT_DATA(ldoln_fab05);
- dalmore_e1611_reg_data[PALMAS_REG_LDOUSB] =
- PALMAS_REG_PDATA(ldousb_fab05);
- dalmore_e1611_reg_init[PALMAS_REG_LDOUSB] =
- PALMAS_REG_INIT_DATA(ldousb_fab05);
- return;
-}
-
-static void set_dalmore_power_config2(void)
-{
- dalmore_e1611_reg_data[PALMAS_REG_SMPS8] =
- PALMAS_REG_PDATA(smps8_config2);
- dalmore_e1611_reg_init[PALMAS_REG_SMPS8] =
- PALMAS_REG_INIT_DATA(smps8_config2);
- dalmore_e1611_reg_data[PALMAS_REG_LDO1] =
- PALMAS_REG_PDATA(ldo1_config2);
- dalmore_e1611_reg_init[PALMAS_REG_LDO1] =
- PALMAS_REG_INIT_DATA(ldo1_config2);
- dalmore_e1611_reg_data[PALMAS_REG_LDO2] =
- PALMAS_REG_PDATA(ldo2_config2);
- dalmore_e1611_reg_init[PALMAS_REG_LDO2] =
- PALMAS_REG_INIT_DATA(ldo2_config2);
- dalmore_e1611_reg_data[PALMAS_REG_LDO4] =
- PALMAS_REG_PDATA(ldo4_config2);
- dalmore_e1611_reg_init[PALMAS_REG_LDO4] =
- PALMAS_REG_INIT_DATA(ldo4_config2);
- return;
-}
-
-int __init dalmore_palmas_regulator_init(void)
-{
- void __iomem *pmc = IO_ADDRESS(TEGRA_PMC_BASE);
- u32 pmc_ctrl;
- u8 power_config;
- struct board_info board_info;
- int i;
-
- tegra_get_board_info(&board_info);
-
- /* TPS65913: Normal state of INT request line is LOW.
- * configure the power management controller to trigger PMU
- * interrupts when HIGH.
- */
- pmc_ctrl = readl(pmc + PMC_CTRL);
- writel(pmc_ctrl | PMC_CTRL_INTR_LOW, pmc + PMC_CTRL);
-
- /* Enable regulator full constraints */
- regulator_has_full_constraints();
-
- reg_idata_ldo6.constraints.enable_time = 1000;
- ri_data_fet1.constraints.disable_time = 1500;
-
- /* Tracking configuration */
- reg_init_data_ldo8.config_flags =
- PALMAS_REGULATOR_CONFIG_TRACKING_ENABLE |
- PALMAS_REGULATOR_CONFIG_SUSPEND_TRACKING_DISABLE;
-
- power_config = get_power_config();
- if (board_info.fab == BOARD_FAB_A05) {
- set_dalmore_power_config2();
- set_dalmore_power_fab05();
- } else if (power_config & POWER_CONFIG2) {
- set_dalmore_power_config2();
- }
-
- for (i = 0; i < PALMAS_NUM_REGS ; i++) {
- pmic_platform.reg_data[i] = dalmore_e1611_reg_data[i];
- pmic_platform.reg_init[i] = dalmore_e1611_reg_init[i];
- }
-
- i2c_register_board_info(4, palma_device,
- ARRAY_SIZE(palma_device));
- return 0;
-}
-
-static int ac_online(void)
-{
- return 1;
-}
-
-static struct resource dalmore_pda_resources[] = {
- [0] = {
- .name = "ac",
- },
-};
-
-static struct pda_power_pdata dalmore_pda_data = {
- .is_ac_online = ac_online,
-};
-
-static struct platform_device dalmore_pda_power_device = {
- .name = "pda-power",
- .id = -1,
- .resource = dalmore_pda_resources,
- .num_resources = ARRAY_SIZE(dalmore_pda_resources),
- .dev = {
- .platform_data = &dalmore_pda_data,
- },
-};
-
-static struct tegra_suspend_platform_data dalmore_suspend_data = {
- .cpu_timer = 500,
- .cpu_off_timer = 300,
- .suspend_mode = TEGRA_SUSPEND_LP0,
- .core_timer = 0x157e,
- .core_off_timer = 2000,
- .corereq_high = true,
- .sysclkreq_high = true,
- .cpu_lp2_min_residency = 1000,
- .min_residency_crail = 20000,
-#ifdef CONFIG_TEGRA_LP1_LOW_COREVOLTAGE
- .lp1_lowvolt_support = false,
- .i2c_base_addr = 0,
- .pmuslave_addr = 0,
- .core_reg_addr = 0,
- .lp1_core_volt_low_cold = 0,
- .lp1_core_volt_low = 0,
- .lp1_core_volt_high = 0,
-#endif
- .usb_vbus_internal_wake = true,
- .usb_id_internal_wake = true,
-};
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-/* board parameters for cpu dfll */
-static struct tegra_cl_dvfs_cfg_param dalmore_cl_dvfs_param = {
- .sample_rate = 12500,
-
- .force_mode = TEGRA_CL_DVFS_FORCE_FIXED,
- .cf = 10,
- .ci = 0,
- .cg = 2,
-
- .droop_cut_value = 0xF,
- .droop_restore_ramp = 0x0,
- .scale_out_ramp = 0x0,
-};
-#endif
-
-/* TPS51632: fixed 10mV steps from 600mV to 1400mV, with offset 0x23 */
-#define PMU_CPU_VDD_MAP_SIZE ((1400000 - 600000) / 10000 + 1)
-static struct voltage_reg_map pmu_cpu_vdd_map[PMU_CPU_VDD_MAP_SIZE];
-static inline void fill_reg_map(void)
-{
- int i;
- for (i = 0; i < PMU_CPU_VDD_MAP_SIZE; i++) {
- pmu_cpu_vdd_map[i].reg_value = i + 0x23;
- pmu_cpu_vdd_map[i].reg_uV = 600000 + 10000 * i;
- }
-}
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-static struct tegra_cl_dvfs_platform_data dalmore_cl_dvfs_data = {
- .dfll_clk_name = "dfll_cpu",
- .pmu_if = TEGRA_CL_DVFS_PMU_I2C,
- .u.pmu_i2c = {
- .fs_rate = 400000,
- .slave_addr = 0x86,
- .reg = 0x00,
- },
- .vdd_map = pmu_cpu_vdd_map,
- .vdd_map_size = PMU_CPU_VDD_MAP_SIZE,
-
- .cfg_param = &dalmore_cl_dvfs_param,
-};
-
-static int __init dalmore_cl_dvfs_init(void)
-{
- fill_reg_map();
- if (tegra_revision < TEGRA_REVISION_A02)
- dalmore_cl_dvfs_data.flags = TEGRA_CL_DVFS_FLAGS_I2C_WAIT_QUIET;
- tegra_cl_dvfs_device.dev.platform_data = &dalmore_cl_dvfs_data;
- platform_device_register(&tegra_cl_dvfs_device);
-
- return 0;
-}
-#endif
-
-static int __init dalmore_max77663_regulator_init(void)
-{
- struct board_info board_info;
- void __iomem *pmc = IO_ADDRESS(TEGRA_PMC_BASE);
- u32 pmc_ctrl;
-
- tegra_get_board_info(&board_info);
- if (board_info.fab < BOARD_FAB_A02)
- max77663_regulator_pdata_ldo4.flags = 0;
-
- /* configure the power management controller to trigger PMU
- * interrupts when low */
- pmc_ctrl = readl(pmc + PMC_CTRL);
- writel(pmc_ctrl | PMC_CTRL_INTR_LOW, pmc + PMC_CTRL);
-
- i2c_register_board_info(4, max77663_regulators,
- ARRAY_SIZE(max77663_regulators));
-
- return 0;
-}
-
-static struct regulator_bulk_data dalmore_gps_regulator_supply[] = {
- [0] = {
- .supply = "avdd",
- },
- [1] = {
- .supply = "dvdd",
- },
-};
-
-static struct regulator_userspace_consumer_data dalmore_gps_regulator_pdata = {
- .num_supplies = ARRAY_SIZE(dalmore_gps_regulator_supply),
- .supplies = dalmore_gps_regulator_supply,
-};
-
-static struct platform_device dalmore_gps_regulator_device = {
- .name = "reg-userspace-consumer",
- .id = 2,
- .dev = {
- .platform_data = &dalmore_gps_regulator_pdata,
- },
-};
-
-static int __init dalmore_fixed_regulator_init(void)
-{
- struct board_info board_info;
- u8 power_config;
-
- if (!of_machine_is_compatible("nvidia,dalmore"))
- return 0;
-
- power_config = get_power_config();
- tegra_get_board_info(&board_info);
-
- /* Fab05 and power-type2 have the same fixed regs */
- if (board_info.fab == BOARD_FAB_A05 || power_config & POWER_CONFIG2)
- platform_add_devices(fixed_reg_devs_dalmore_config2,
- ARRAY_SIZE(fixed_reg_devs_dalmore_config2));
-
- if (board_info.board_id == BOARD_E1611 ||
- board_info.board_id == BOARD_P2454)
- return platform_add_devices(fixed_reg_devs_e1611_a00,
- ARRAY_SIZE(fixed_reg_devs_e1611_a00));
- else
- return platform_add_devices(fixed_reg_devs_e1612_a00,
- ARRAY_SIZE(fixed_reg_devs_e1612_a00));
-}
-subsys_initcall_sync(dalmore_fixed_regulator_init);
-
-static void dalmore_tps65090_init(void)
-{
- int err;
-
- err = gpio_request(TPS65090_CHARGER_INT, "CHARGER_INT");
- if (err < 0) {
- pr_err("%s: gpio_request failed %d\n", __func__, err);
- goto fail_init_irq;
- }
-
- err = gpio_direction_input(TPS65090_CHARGER_INT);
- if (err < 0) {
- pr_err("%s: gpio_direction_input failed %d\n", __func__, err);
- goto fail_init_irq;
- }
-
- tps65090_regulators[0].irq = gpio_to_irq(TPS65090_CHARGER_INT);
-fail_init_irq:
- i2c_register_board_info(4, tps65090_regulators,
- ARRAY_SIZE(tps65090_regulators));
- return;
-}
-
-int __init dalmore_regulator_init(void)
-{
- struct board_info board_info;
-
- dalmore_tps65090_init();
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
- dalmore_cl_dvfs_init();
-#endif
- tegra_get_board_info(&board_info);
- if (board_info.board_id == BOARD_E1611 ||
- board_info.board_id == BOARD_P2454)
- dalmore_palmas_regulator_init();
- else
- dalmore_max77663_regulator_init();
-
- platform_device_register(&dalmore_pda_power_device);
- platform_device_register(&dalmore_gps_regulator_device);
- return 0;
-}
-
-int __init dalmore_suspend_init(void)
-{
- tegra_init_suspend(&dalmore_suspend_data);
- /* Enable dalmore USB wake for VBUS/ID without using PMIC */
- tegra_set_usb_vbus_internal_wake(
- dalmore_suspend_data.usb_vbus_internal_wake);
- tegra_set_usb_id_internal_wake(
- dalmore_suspend_data.usb_id_internal_wake);
- return 0;
-}
-
-int __init dalmore_edp_init(void)
-{
- unsigned int regulator_mA;
-
- regulator_mA = get_maximum_cpu_current_supported();
- if (!regulator_mA)
- regulator_mA = 15000;
-
- pr_info("%s: CPU regulator %d mA\n", __func__, regulator_mA);
- tegra_init_cpu_edp_limits(regulator_mA);
-
- regulator_mA = get_maximum_core_current_supported();
- if (!regulator_mA)
- regulator_mA = 4000;
-
- pr_info("%s: core regulator %d mA\n", __func__, regulator_mA);
- tegra_init_core_edp_limits(regulator_mA);
-
- return 0;
-}
-
-static struct pid_thermal_gov_params soctherm_pid_params = {
- .max_err_temp = 9000,
- .max_err_gain = 1000,
-
- .gain_p = 1000,
- .gain_d = 0,
-
- .up_compensation = 20,
- .down_compensation = 20,
-};
-
-static struct thermal_zone_params soctherm_tzp = {
- .governor_name = "pid_thermal_gov",
- .governor_params = &soctherm_pid_params,
-};
-
-static struct tegra_thermtrip_pmic_data tpdata_palmas = {
- .reset_tegra = 1,
- .pmu_16bit_ops = 0,
- .controller_type = 0,
- .pmu_i2c_addr = 0x58,
- .i2c_controller_id = 4,
- .poweroff_reg_addr = 0xa0,
- .poweroff_reg_data = 0x0,
-};
-
-static struct tegra_thermtrip_pmic_data tpdata_max77663 = {
- .reset_tegra = 1,
- .pmu_16bit_ops = 0,
- .controller_type = 0,
- .pmu_i2c_addr = 0x3c,
- .i2c_controller_id = 4,
- .poweroff_reg_addr = 0x41,
- .poweroff_reg_data = 0x80,
-};
-
-static struct soctherm_platform_data dalmore_soctherm_data = {
- .therm = {
- [THERM_CPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 3,
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- .tzp = &soctherm_tzp,
- },
- [THERM_GPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 3,
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- .tzp = &soctherm_tzp,
- },
- [THERM_PLL] = {
- .zone_enable = true,
- },
- },
- .throttle = {
- [THROTTLE_HEAVY] = {
- .priority = 100,
- .devs = {
- [THROTTLE_DEV_CPU] = {
- .enable = true,
- .depth = 80,
- },
- [THROTTLE_DEV_GPU] = {
- .enable = true,
- .depth = 80,
- },
- },
- },
- },
- .tshut_pmu_trip_data = &tpdata_palmas,
-};
-
-int __init dalmore_soctherm_init(void)
-{
- struct board_info board_info;
-
- tegra_get_board_info(&board_info);
- if (!(board_info.board_id == BOARD_E1611 ||
- board_info.board_id == BOARD_P2454))
- dalmore_soctherm_data.tshut_pmu_trip_data = &tpdata_max77663;
-
- tegra_platform_edp_init(dalmore_soctherm_data.therm[THERM_CPU].trips,
- &dalmore_soctherm_data.therm[THERM_CPU].num_trips,
- 6000); /* edp temperature margin */
- tegra_add_cpu_vmax_trips(dalmore_soctherm_data.therm[THERM_CPU].trips,
- &dalmore_soctherm_data.therm[THERM_CPU].num_trips);
- tegra_add_core_edp_trips(dalmore_soctherm_data.therm[THERM_CPU].trips,
- &dalmore_soctherm_data.therm[THERM_CPU].num_trips);
-
- return tegra11_soctherm_init(&dalmore_soctherm_data);
-}
diff --git a/arch/arm/mach-tegra/board-dalmore-sdhci.c b/arch/arm/mach-tegra/board-dalmore-sdhci.c
deleted file mode 100644
index 1933479888c4..000000000000
--- a/arch/arm/mach-tegra/board-dalmore-sdhci.c
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-dalmore-sdhci.c
- *
- * Copyright (C) 2010 Google, Inc.
- * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
-
-#include <linux/resource.h>
-#include <linux/platform_device.h>
-#include <linux/wlan_plat.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/clk.h>
-#include <linux/err.h>
-#include <linux/regulator/consumer.h>
-#include <linux/mmc/host.h>
-#include <linux/wl12xx.h>
-#include <linux/platform_data/mmc-sdhci-tegra.h>
-
-#include <asm/mach-types.h>
-#include <mach/irqs.h>
-#include <mach/gpio-tegra.h>
-
-#include "tegra-board-id.h"
-#include "gpio-names.h"
-#include "board.h"
-#include "board-dalmore.h"
-#include "dvfs.h"
-#include "iomap.h"
-
-#define DALMORE_WLAN_PWR TEGRA_GPIO_PCC5
-#define DALMORE_WLAN_RST TEGRA_GPIO_PX7
-#define DALMORE_WLAN_WOW TEGRA_GPIO_PU5
-#define DALMORE_SD_CD TEGRA_GPIO_PV2
-#define DALMORE_SD_WP TEGRA_GPIO_PQ4
-static void (*wifi_status_cb)(int card_present, void *dev_id);
-static void *wifi_status_cb_devid;
-static int dalmore_wifi_status_register(void (*callback)(int , void *), void *);
-
-static int dalmore_wifi_reset(int on);
-static int dalmore_wifi_power(int on);
-static int dalmore_wifi_set_carddetect(int val);
-
-static struct wifi_platform_data dalmore_wifi_control = {
- .set_power = dalmore_wifi_power,
- .set_reset = dalmore_wifi_reset,
- .set_carddetect = dalmore_wifi_set_carddetect,
-};
-
-static struct resource wifi_resource[] = {
- [0] = {
- .name = "bcm4329_wlan_irq",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL
- | IORESOURCE_IRQ_SHAREABLE,
- },
-};
-
-static struct platform_device dalmore_wifi_device = {
- .name = "bcm4329_wlan",
- .id = 1,
- .num_resources = 1,
- .resource = wifi_resource,
- .dev = {
- .platform_data = &dalmore_wifi_control,
- },
-};
-
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
-static struct embedded_sdio_data embedded_sdio_data0 = {
- .cccr = {
- .sdio_vsn = 2,
- .multi_block = 1,
- .low_speed = 0,
- .wide_bus = 0,
- .high_power = 1,
- .high_speed = 1,
- },
- .cis = {
- .vendor = 0x02d0,
- .device = 0x4329,
- },
-};
-#endif
-
-struct tegra_sdhci_platform_data dalmore_tegra_sdhci_platform_data0 = {
- .mmc_data = {
- .register_status_notify = dalmore_wifi_status_register,
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
- .embedded_sdio = &embedded_sdio_data0,
-#endif
- .built_in = 0,
- .ocr_mask = MMC_OCR_1V8_MASK,
- },
-#ifndef CONFIG_MMC_EMBEDDED_SDIO
- .pm_flags = MMC_PM_KEEP_POWER,
-#endif
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .tap_delay = 0x2,
- .trim_delay = 0x2,
- .ddr_clk_limit = 41000000,
- .max_clk_limit = 82000000,
-/*FIXME: Enable UHS modes for WiFI */
- .uhs_mask = MMC_UHS_MASK_DDR50 | MMC_UHS_MASK_SDR50 |
- MMC_UHS_MASK_SDR104 | MMC_UHS_MASK_SDR12 | MMC_UHS_MASK_SDR25,
- .disable_clock_gate = true,
-};
-
-static struct resource sdhci_resource0[] = {
- [0] = {
- .start = INT_SDMMC1,
- .end = INT_SDMMC1,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC1_BASE,
- .end = TEGRA_SDMMC1_BASE + TEGRA_SDMMC1_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource2[] = {
- [0] = {
- .start = INT_SDMMC3,
- .end = INT_SDMMC3,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC3_BASE,
- .end = TEGRA_SDMMC3_BASE + TEGRA_SDMMC3_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource3[] = {
- [0] = {
- .start = INT_SDMMC4,
- .end = INT_SDMMC4,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC4_BASE,
- .end = TEGRA_SDMMC4_BASE + TEGRA_SDMMC4_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = {
- .cd_gpio = DALMORE_SD_CD,
- .wp_gpio = DALMORE_SD_WP,
- .power_gpio = -1,
- .tap_delay = 0x3,
- .trim_delay = 0x3,
- .ddr_clk_limit = 41000000,
- .max_clk_limit = 82000000,
- .uhs_mask = MMC_UHS_MASK_DDR50,
- .power_off_rail = true,
-};
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data3 = {
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .is_8bit = 1,
- .tap_delay = 0x5,
- .trim_delay = 0xA,
- .ddr_trim_delay = -1,
- .ddr_clk_limit = 41000000,
- .max_clk_limit = 156000000,
- .mmc_data = {
- .built_in = 1,
- .ocr_mask = MMC_OCR_1V8_MASK,
- }
-};
-
-static struct platform_device tegra_sdhci_device0 = {
- .name = "sdhci-tegra",
- .id = 0,
- .resource = sdhci_resource0,
- .num_resources = ARRAY_SIZE(sdhci_resource0),
- .dev = {
- .platform_data = &dalmore_tegra_sdhci_platform_data0,
- },
-};
-
-static struct platform_device tegra_sdhci_device2 = {
- .name = "sdhci-tegra",
- .id = 2,
- .resource = sdhci_resource2,
- .num_resources = ARRAY_SIZE(sdhci_resource2),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data2,
- },
-};
-
-static struct platform_device tegra_sdhci_device3 = {
- .name = "sdhci-tegra",
- .id = 3,
- .resource = sdhci_resource3,
- .num_resources = ARRAY_SIZE(sdhci_resource3),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data3,
- },
-};
-
-static int dalmore_wifi_status_register(
- void (*callback)(int card_present, void *dev_id),
- void *dev_id)
-{
- if (wifi_status_cb)
- return -EAGAIN;
- wifi_status_cb = callback;
- wifi_status_cb_devid = dev_id;
- return 0;
-}
-
-static int dalmore_wifi_set_carddetect(int val)
-{
- pr_debug("%s: %d\n", __func__, val);
- if (wifi_status_cb)
- wifi_status_cb(val, wifi_status_cb_devid);
- else
- pr_warning("%s: Nobody to notify\n", __func__);
- return 0;
-}
-
-static struct regulator *dalmore_vdd_com_3v3;
-static struct regulator *dalmore_vddio_com_1v8;
-#define DALMORE_VDD_WIFI_3V3 "avdd"
-#define DALMORE_VDD_WIFI_1V8 "dvdd"
-
-static int dalmore_wifi_regulator_enable(void)
-{
- int ret = 0;
-
- /* Enable COM's vdd_com_3v3 regulator*/
- if (IS_ERR_OR_NULL(dalmore_vdd_com_3v3)) {
- dalmore_vdd_com_3v3 = regulator_get(&dalmore_wifi_device.dev,
- DALMORE_VDD_WIFI_3V3);
- if (IS_ERR(dalmore_vdd_com_3v3)) {
- pr_err("Couldn't get regulator "
- DALMORE_VDD_WIFI_3V3 "\n");
- return PTR_ERR(dalmore_vdd_com_3v3);
- }
-
- ret = regulator_enable(dalmore_vdd_com_3v3);
- if (ret < 0) {
- pr_err("Couldn't enable regulator "
- DALMORE_VDD_WIFI_3V3 "\n");
- regulator_put(dalmore_vdd_com_3v3);
- dalmore_vdd_com_3v3 = NULL;
- return ret;
- }
- }
-
- /* Enable COM's vddio_com_1v8 regulator*/
- if (IS_ERR_OR_NULL(dalmore_vddio_com_1v8)) {
- dalmore_vddio_com_1v8 = regulator_get(&dalmore_wifi_device.dev,
- DALMORE_VDD_WIFI_1V8);
- if (IS_ERR(dalmore_vddio_com_1v8)) {
- pr_err("Couldn't get regulator "
- DALMORE_VDD_WIFI_1V8 "\n");
- regulator_disable(dalmore_vdd_com_3v3);
-
- regulator_put(dalmore_vdd_com_3v3);
- dalmore_vdd_com_3v3 = NULL;
- return PTR_ERR(dalmore_vddio_com_1v8);
- }
-
- ret = regulator_enable(dalmore_vddio_com_1v8);
- if (ret < 0) {
- pr_err("Couldn't enable regulator "
- DALMORE_VDD_WIFI_1V8 "\n");
- regulator_put(dalmore_vddio_com_1v8);
- dalmore_vddio_com_1v8 = NULL;
-
- regulator_disable(dalmore_vdd_com_3v3);
- regulator_put(dalmore_vdd_com_3v3);
- dalmore_vdd_com_3v3 = NULL;
- return ret;
- }
- }
-
- return ret;
-}
-
-static void dalmore_wifi_regulator_disable(void)
-{
- /* Disable COM's vdd_com_3v3 regulator*/
- if (!IS_ERR_OR_NULL(dalmore_vdd_com_3v3)) {
- regulator_disable(dalmore_vdd_com_3v3);
- regulator_put(dalmore_vdd_com_3v3);
- dalmore_vdd_com_3v3 = NULL;
- }
-
- /* Disable COM's vddio_com_1v8 regulator*/
- if (!IS_ERR_OR_NULL(dalmore_vddio_com_1v8)) {
- regulator_disable(dalmore_vddio_com_1v8);
- regulator_put(dalmore_vddio_com_1v8);
- dalmore_vddio_com_1v8 = NULL;
- }
-}
-
-static int dalmore_wifi_power(int on)
-{
- int ret = 0;
-
- pr_debug("%s: %d\n", __func__, on);
- /* Enable COM's regulators on wi-fi poer on*/
- if (on == 1) {
- ret = dalmore_wifi_regulator_enable();
- if (ret < 0) {
- pr_err("Failed to enable COM regulators\n");
- return ret;
- }
- }
-
- gpio_set_value(DALMORE_WLAN_PWR, on);
- mdelay(100);
- gpio_set_value(DALMORE_WLAN_RST, on);
- mdelay(200);
-
- /* Disable COM's regulators on wi-fi poer off*/
- if (on != 1) {
- pr_debug("Disabling COM regulators\n");
- dalmore_wifi_regulator_disable();
- }
-
- return ret;
-}
-
-static int dalmore_wifi_reset(int on)
-{
- pr_debug("%s: do nothing\n", __func__);
- return 0;
-}
-
-static int __init dalmore_wifi_init(void)
-{
- int rc;
-
- rc = gpio_request(DALMORE_WLAN_PWR, "wlan_power");
- if (rc)
- pr_err("WLAN_PWR gpio request failed:%d\n", rc);
- rc = gpio_request(DALMORE_WLAN_RST, "wlan_rst");
- if (rc)
- pr_err("WLAN_RST gpio request failed:%d\n", rc);
- rc = gpio_request(DALMORE_WLAN_WOW, "bcmsdh_sdmmc");
- if (rc)
- pr_err("WLAN_WOW gpio request failed:%d\n", rc);
-
- rc = gpio_direction_output(DALMORE_WLAN_PWR, 0);
- if (rc)
- pr_err("WLAN_PWR gpio direction configuration failed:%d\n", rc);
- gpio_direction_output(DALMORE_WLAN_RST, 0);
- if (rc)
- pr_err("WLAN_RST gpio direction configuration failed:%d\n", rc);
- rc = gpio_direction_input(DALMORE_WLAN_WOW);
- if (rc)
- pr_err("WLAN_WOW gpio direction configuration failed:%d\n", rc);
-
- wifi_resource[0].start = wifi_resource[0].end =
- gpio_to_irq(DALMORE_WLAN_WOW);
-
- platform_device_register(&dalmore_wifi_device);
- return 0;
-}
-
-#ifdef CONFIG_TEGRA_PREPOWER_WIFI
-static int __init dalmore_wifi_prepower(void)
-{
- if (!machine_is_dalmore())
- return 0;
-
- dalmore_wifi_power(1);
-
- return 0;
-}
-
-subsys_initcall_sync(dalmore_wifi_prepower);
-#endif
-
-int __init dalmore_sdhci_init(void)
-{
- int nominal_core_mv;
- int min_vcore_override_mv;
- int boot_vcore_mv;
- struct board_info board_info;
-
- nominal_core_mv =
- tegra_dvfs_rail_get_nominal_millivolts(tegra_core_rail);
- if (nominal_core_mv) {
- dalmore_tegra_sdhci_platform_data0.nominal_vcore_mv =
- nominal_core_mv;
- tegra_sdhci_platform_data2.nominal_vcore_mv = nominal_core_mv;
- tegra_sdhci_platform_data3.nominal_vcore_mv = nominal_core_mv;
- }
- min_vcore_override_mv =
- tegra_dvfs_rail_get_override_floor(tegra_core_rail);
- if (min_vcore_override_mv) {
- dalmore_tegra_sdhci_platform_data0.min_vcore_override_mv =
- min_vcore_override_mv;
- tegra_sdhci_platform_data2.min_vcore_override_mv =
- min_vcore_override_mv;
- tegra_sdhci_platform_data3.min_vcore_override_mv =
- min_vcore_override_mv;
- }
- boot_vcore_mv = tegra_dvfs_rail_get_boot_level(tegra_core_rail);
- if (boot_vcore_mv) {
- dalmore_tegra_sdhci_platform_data0.boot_vcore_mv =
- boot_vcore_mv;
- tegra_sdhci_platform_data2.boot_vcore_mv = boot_vcore_mv;
- tegra_sdhci_platform_data3.boot_vcore_mv = boot_vcore_mv;
- }
- if ((tegra_sdhci_platform_data3.uhs_mask & MMC_MASK_HS200)
- && (!(tegra_sdhci_platform_data3.uhs_mask &
- MMC_UHS_MASK_DDR50)))
- tegra_sdhci_platform_data3.trim_delay = 0;
- tegra_get_board_info(&board_info);
- if (board_info.fab == BOARD_FAB_A05) {
- tegra_sdhci_platform_data2.wp_gpio = -1;
- dalmore_tegra_sdhci_platform_data0.max_clk_limit = 156000000;
- tegra_sdhci_platform_data2.max_clk_limit = 156000000;
- }
- platform_device_register(&tegra_sdhci_device3);
- platform_device_register(&tegra_sdhci_device2);
- platform_device_register(&tegra_sdhci_device0);
- dalmore_wifi_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-dalmore-sensors.c b/arch/arm/mach-tegra/board-dalmore-sensors.c
deleted file mode 100644
index 8011e6821949..000000000000
--- a/arch/arm/mach-tegra/board-dalmore-sensors.c
+++ /dev/null
@@ -1,862 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-dalmore-sensors.c
- *
- * Copyright (c) 2012-2014 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 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 licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <linux/i2c.h>
-#include <linux/delay.h>
-#include <linux/mpu.h>
-#include <linux/regulator/consumer.h>
-#include <linux/gpio.h>
-#include <linux/therm_est.h>
-#include <linux/nct1008.h>
-#include <linux/pid_thermal_gov.h>
-#include <mach/edp.h>
-#include <linux/edp.h>
-#include <mach/gpio-tegra.h>
-#include <mach/pinmux-t11.h>
-#include <mach/pinmux.h>
-#ifndef CONFIG_OF
-#include <media/imx091.h>
-#include <media/ad5816.h>
-#include <media/ov9772.h>
-#endif
-#include <media/as364x.h>
-#include <generated/mach-types.h>
-#include <linux/power/sbs-battery.h>
-
-#include "gpio-names.h"
-#include "board.h"
-#include "board-common.h"
-#include "board-dalmore.h"
-#include "cpu-tegra.h"
-#include "devices.h"
-#include "tegra-board-id.h"
-#include "dvfs.h"
-
-#ifndef CONFIG_OF
-static struct nvc_gpio_pdata imx091_gpio_pdata[] = {
- {IMX091_GPIO_RESET, CAM_RSTN, true, false},
- {IMX091_GPIO_PWDN, CAM1_POWER_DWN_GPIO, true, false},
- {IMX091_GPIO_GP1, CAM_GPIO1, true, false}
-};
-#endif
-
-static struct board_info board_info;
-
-static struct throttle_table tj_throttle_table[] = {
- /* CPU_THROT_LOW cannot be used by other than CPU */
- /* CPU, C2BUS, C3BUS, SCLK, EMC */
- { { 1810500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1785000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1759500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1734000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1708500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1683000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1657500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1632000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1606500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1581000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1555500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1530000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1504500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1479000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1453500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1428000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1402500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1377000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1351500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1326000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1300500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1275000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1249500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1224000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1198500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1173000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1147500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1122000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1096500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1071000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1045500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1020000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 994500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 969000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 943500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 918000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 892500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 867000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 841500, 564000, NO_CAP, NO_CAP, NO_CAP } },
- { { 816000, 564000, NO_CAP, NO_CAP, 792000 } },
- { { 790500, 564000, NO_CAP, 372000, 792000 } },
- { { 765000, 564000, 468000, 372000, 792000 } },
- { { 739500, 528000, 468000, 372000, 792000 } },
- { { 714000, 528000, 468000, 336000, 792000 } },
- { { 688500, 528000, 420000, 336000, 792000 } },
- { { 663000, 492000, 420000, 336000, 792000 } },
- { { 637500, 492000, 420000, 336000, 408000 } },
- { { 612000, 492000, 420000, 300000, 408000 } },
- { { 586500, 492000, 360000, 336000, 408000 } },
- { { 561000, 420000, 420000, 300000, 408000 } },
- { { 535500, 420000, 360000, 228000, 408000 } },
- { { 510000, 420000, 288000, 228000, 408000 } },
- { { 484500, 324000, 288000, 228000, 408000 } },
- { { 459000, 324000, 288000, 228000, 408000 } },
- { { 433500, 324000, 288000, 228000, 408000 } },
- { { 408000, 324000, 288000, 228000, 408000 } },
-};
-
-static struct balanced_throttle tj_throttle = {
- .throt_tab_size = ARRAY_SIZE(tj_throttle_table),
- .throt_tab = tj_throttle_table,
-};
-
-static int __init dalmore_throttle_init(void)
-{
- if (machine_is_dalmore())
- balanced_throttle_register(&tj_throttle, "tegra-balanced");
- return 0;
-}
-module_init(dalmore_throttle_init);
-
-static struct nct1008_platform_data dalmore_nct1008_pdata = {
- .supported_hwrev = true,
- .extended_range = true,
- .conv_rate = 0x06, /* 4Hz conversion rate */
-
- .sensors = {
- [LOC] = {
- .shutdown_limit = 120, /* C */
- .num_trips = 0,
- .tzp = NULL,
- },
- [EXT] = {
- .shutdown_limit = 105, /* C */
- .num_trips = 1,
- .tzp = NULL,
- .trips = {
- {
- .cdev_type = "suspend_soctherm",
- .trip_temp = 50000,
- .trip_type = THERMAL_TRIP_ACTIVE,
- .upper = 1,
- .lower = 1,
- .hysteresis = 5000,
- .mask = 1,
- },
- },
- }
- }
-};
-
-static struct i2c_board_info dalmore_i2c4_nct1008_board_info[] = {
- {
- I2C_BOARD_INFO("nct1008", 0x4C),
- .platform_data = &dalmore_nct1008_pdata,
- .irq = -1,
- }
-};
-
-#define VI_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _ioreset) \
- { \
- .pingroup = TEGRA_PINGROUP_##_pingroup, \
- .func = TEGRA_MUX_##_mux, \
- .pupd = TEGRA_PUPD_##_pupd, \
- .tristate = TEGRA_TRI_##_tri, \
- .io = TEGRA_PIN_##_io, \
- .lock = TEGRA_PIN_LOCK_##_lock, \
- .od = TEGRA_PIN_OD_DEFAULT, \
- .ioreset = TEGRA_PIN_IO_RESET_##_ioreset \
-}
-
-#ifndef CONFIG_OF
-static int dalmore_focuser_power_on(struct ad5816_power_rail *pw)
-{
- int err;
-
- if (unlikely(WARN_ON(!pw || !pw->vdd || !pw->vdd_i2c)))
- return -EFAULT;
-
- err = regulator_enable(pw->vdd_i2c);
- if (unlikely(err))
- goto ad5816_vdd_i2c_fail;
-
- err = regulator_enable(pw->vdd);
- if (unlikely(err))
- goto ad5816_vdd_fail;
-
- return 0;
-
-ad5816_vdd_fail:
- regulator_disable(pw->vdd_i2c);
-
-ad5816_vdd_i2c_fail:
- pr_err("%s FAILED\n", __func__);
-
- return -ENODEV;
-}
-
-static int dalmore_focuser_power_off(struct ad5816_power_rail *pw)
-{
- if (unlikely(WARN_ON(!pw || !pw->vdd || !pw->vdd_i2c)))
- return -EFAULT;
-
- regulator_disable(pw->vdd);
- regulator_disable(pw->vdd_i2c);
-
- return 0;
-}
-
-static struct tegra_pingroup_config mclk_disable =
- VI_PINMUX(CAM_MCLK, VI, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config mclk_enable =
- VI_PINMUX(CAM_MCLK, VI_ALT3, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config pbb0_disable =
- VI_PINMUX(GPIO_PBB0, VI, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config pbb0_enable =
- VI_PINMUX(GPIO_PBB0, VI_ALT3, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-#endif
-
-/*
- * As a workaround, dalmore_vcmvdd need to be allocated to activate the
- * sensor devices. This is due to the focuser device(AD5816) will hook up
- * the i2c bus if it is not powered up.
-*/
-static struct regulator *dalmore_vcmvdd;
-
-static int dalmore_get_vcmvdd(void)
-{
- if (!dalmore_vcmvdd) {
- dalmore_vcmvdd = regulator_get(NULL, "vdd_af_cam1");
- if (unlikely(WARN_ON(IS_ERR(dalmore_vcmvdd)))) {
- pr_err("%s: can't get regulator vcmvdd: %ld\n",
- __func__, PTR_ERR(dalmore_vcmvdd));
- dalmore_vcmvdd = NULL;
- return -ENODEV;
- }
- }
- return 0;
-}
-
-#ifndef CONFIG_OF
-static int dalmore_imx091_power_on(struct nvc_regulator *vreg)
-{
- int err;
-
- if (unlikely(WARN_ON(!vreg)))
- return -EFAULT;
-
- if (dalmore_get_vcmvdd())
- goto imx091_poweron_fail;
-
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
- usleep_range(10, 20);
-
- err = regulator_enable(vreg[IMX091_VREG_AVDD].vreg);
- if (err)
- goto imx091_avdd_fail;
-
- err = regulator_enable(vreg[IMX091_VREG_IOVDD].vreg);
- if (err)
- goto imx091_iovdd_fail;
-
- usleep_range(1, 2);
- gpio_set_value(CAM1_POWER_DWN_GPIO, 1);
-
- err = regulator_enable(dalmore_vcmvdd);
- if (unlikely(err))
- goto imx091_vcmvdd_fail;
-
- tegra_pinmux_config_table(&mclk_enable, 1);
- usleep_range(300, 310);
-
- return 1;
-
-imx091_vcmvdd_fail:
- regulator_disable(vreg[IMX091_VREG_IOVDD].vreg);
-
-imx091_iovdd_fail:
- regulator_disable(vreg[IMX091_VREG_AVDD].vreg);
-
-imx091_avdd_fail:
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
-
-imx091_poweron_fail:
- pr_err("%s FAILED\n", __func__);
- return -ENODEV;
-}
-
-static int dalmore_imx091_power_off(struct nvc_regulator *vreg)
-{
- if (unlikely(WARN_ON(!vreg)))
- return -EFAULT;
-
- usleep_range(1, 2);
- tegra_pinmux_config_table(&mclk_disable, 1);
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
- usleep_range(1, 2);
-
- regulator_disable(dalmore_vcmvdd);
- regulator_disable(vreg[IMX091_VREG_IOVDD].vreg);
- regulator_disable(vreg[IMX091_VREG_AVDD].vreg);
-
- return 1;
-}
-
-static struct nvc_imager_cap imx091_cap = {
- .identifier = "IMX091",
- .sensor_nvc_interface = 3,
- .pixel_types[0] = 0x100,
- .orientation = 0,
- .direction = 0,
- .initial_clock_rate_khz = 6000,
- .clock_profiles[0] = {
- .external_clock_khz = 24000,
- .clock_multiplier = 850000, /* value / 1,000,000 */
- },
- .clock_profiles[1] = {
- .external_clock_khz = 0,
- .clock_multiplier = 0,
- },
- .h_sync_edge = 0,
- .v_sync_edge = 0,
- .mclk_on_vgp0 = 0,
- .csi_port = 0,
- .data_lanes = 4,
- .virtual_channel_id = 0,
- .discontinuous_clk_mode = 1,
- .cil_threshold_settle = 0x0,
- .min_blank_time_width = 16,
- .min_blank_time_height = 16,
- .preferred_mode_index = 0,
- .focuser_guid = NVC_FOCUS_GUID(0),
- .torch_guid = NVC_TORCH_GUID(0),
- .cap_version = NVC_IMAGER_CAPABILITIES_VERSION2,
-};
-
-static struct imx091_platform_data imx091_pdata = {
- .num = 0,
- .sync = 0,
- .dev_name = "camera",
- .gpio_count = ARRAY_SIZE(imx091_gpio_pdata),
- .gpio = imx091_gpio_pdata,
- .flash_cap = {
- .sdo_trigger_enabled = 1,
- .adjustable_flash_timing = 1,
- },
- .cap = &imx091_cap,
- .power_on = dalmore_imx091_power_on,
- .power_off = dalmore_imx091_power_off,
-};
-#endif
-
-static struct sbs_platform_data sbs_pdata = {
- .poll_retry_count = 100,
- .i2c_retry_count = 2,
-};
-
-#ifndef CONFIG_OF
-static int dalmore_ov9772_power_on(struct ov9772_power_rail *pw)
-{
- int err;
-
- if (unlikely(!pw || !pw->avdd || !pw->dovdd))
- return -EFAULT;
-
- if (dalmore_get_vcmvdd())
- goto ov9772_get_vcmvdd_fail;
-
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
- gpio_set_value(CAM_RSTN, 0);
-
- err = regulator_enable(pw->avdd);
- if (unlikely(err))
- goto ov9772_avdd_fail;
-
- err = regulator_enable(pw->dovdd);
- if (unlikely(err))
- goto ov9772_dovdd_fail;
-
- gpio_set_value(CAM_RSTN, 1);
- gpio_set_value(CAM2_POWER_DWN_GPIO, 1);
-
- err = regulator_enable(dalmore_vcmvdd);
- if (unlikely(err))
- goto ov9772_vcmvdd_fail;
-
- tegra_pinmux_config_table(&pbb0_enable, 1);
- usleep_range(340, 380);
-
- /* return 1 to skip the in-driver power_on sequence */
- return 1;
-
-ov9772_vcmvdd_fail:
- regulator_disable(pw->dovdd);
-
-ov9772_dovdd_fail:
- regulator_disable(pw->avdd);
-
-ov9772_avdd_fail:
- gpio_set_value(CAM_RSTN, 0);
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
-
-ov9772_get_vcmvdd_fail:
- pr_err("%s FAILED\n", __func__);
- return -ENODEV;
-}
-
-static int dalmore_ov9772_power_off(struct ov9772_power_rail *pw)
-{
- if (unlikely(!pw || !dalmore_vcmvdd || !pw->avdd || !pw->dovdd))
- return -EFAULT;
-
- usleep_range(21, 25);
- tegra_pinmux_config_table(&pbb0_disable, 1);
-
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
- gpio_set_value(CAM_RSTN, 0);
-
- regulator_disable(dalmore_vcmvdd);
- regulator_disable(pw->dovdd);
- regulator_disable(pw->avdd);
-
- /* return 1 to skip the in-driver power_off sequence */
- return 1;
-}
-
-static struct nvc_gpio_pdata ov9772_gpio_pdata[] = {
- { OV9772_GPIO_TYPE_SHTDN, CAM2_POWER_DWN_GPIO, true, 0, },
- { OV9772_GPIO_TYPE_PWRDN, CAM_RSTN, true, 0, },
-};
-
-static struct ov9772_platform_data dalmore_ov9772_pdata = {
- .num = 1,
- .dev_name = "camera",
- .gpio_count = ARRAY_SIZE(ov9772_gpio_pdata),
- .gpio = ov9772_gpio_pdata,
- .power_on = dalmore_ov9772_power_on,
- .power_off = dalmore_ov9772_power_off,
-};
-#endif
-
-static int dalmore_as3648_power_on(struct as364x_power_rail *pw)
-{
- int err = dalmore_get_vcmvdd();
-
- if (err)
- return err;
-
- return regulator_enable(dalmore_vcmvdd);
-}
-
-static int dalmore_as3648_power_off(struct as364x_power_rail *pw)
-{
- if (!dalmore_vcmvdd)
- return -ENODEV;
-
- return regulator_disable(dalmore_vcmvdd);
-}
-
-static struct as364x_platform_data dalmore_as3648_pdata = {
- .config = {
- .led_mask = 3,
- .max_total_current_mA = 1000,
- .max_peak_current_mA = 600,
- .vin_low_v_run_mV = 3070,
- .strobe_type = 1,
- },
- .pinstate = {
- .mask = 1 << (CAM_FLASH_STROBE - TEGRA_GPIO_PBB0),
- .values = 1 << (CAM_FLASH_STROBE - TEGRA_GPIO_PBB0)
- },
- .dev_name = "torch",
- .type = AS3648,
- .gpio_strobe = CAM_FLASH_STROBE,
-
- .power_on_callback = dalmore_as3648_power_on,
- .power_off_callback = dalmore_as3648_power_off,
-};
-
-#ifndef CONFIG_OF
-static struct ad5816_platform_data dalmore_ad5816_pdata = {
- .cfg = 0,
- .num = 0,
- .sync = 0,
- .dev_name = "focuser",
- .power_on = dalmore_focuser_power_on,
- .power_off = dalmore_focuser_power_off,
-};
-#endif
-
-static struct i2c_board_info dalmore_i2c_board_info_e1625[] = {
-#ifndef CONFIG_OF
- {
- I2C_BOARD_INFO("imx091", 0x36),
- .platform_data = &imx091_pdata,
- },
- {
- I2C_BOARD_INFO("ov9772", 0x10),
- .platform_data = &dalmore_ov9772_pdata,
- },
-#endif
- {
- I2C_BOARD_INFO("as3648", 0x30),
- .platform_data = &dalmore_as3648_pdata,
- },
-#ifndef CONFIG_OF
- {
- I2C_BOARD_INFO("ad5816", 0x0E),
- .platform_data = &dalmore_ad5816_pdata,
- },
-#endif
-};
-
-static int dalmore_camera_init(void)
-{
-#ifndef CONFIG_OF
- tegra_pinmux_config_table(&mclk_disable, 1);
- tegra_pinmux_config_table(&pbb0_disable, 1);
-#endif
-
- i2c_register_board_info(2, dalmore_i2c_board_info_e1625,
- ARRAY_SIZE(dalmore_i2c_board_info_e1625));
- return 0;
-}
-
-#define TEGRA_CAMERA_GPIO(_gpio, _label, _value) \
- { \
- .gpio = _gpio, \
- .label = _label, \
- .value = _value, \
- }
-
-static struct i2c_board_info dalmore_i2c_board_info_cm3218[] = {
- {
- I2C_BOARD_INFO("cm3218", 0x48),
- },
-};
-
-/* MPU board file definition */
-static struct mpu_platform_data mpu9150_gyro_data = {
- .int_config = 0x10,
- .level_shifter = 0,
- /* Located in board_[platformname].h */
- .orientation = MPU_GYRO_ORIENTATION,
- .sec_slave_type = SECONDARY_SLAVE_TYPE_NONE,
- .key = {0x4E, 0xCC, 0x7E, 0xEB, 0xF6, 0x1E, 0x35, 0x22,
- 0x00, 0x34, 0x0D, 0x65, 0x32, 0xE9, 0x94, 0x89},
-};
-
-static struct mpu_platform_data mpu_compass_data = {
- .orientation = MPU_COMPASS_ORIENTATION,
- .config = NVI_CONFIG_BOOT_MPU,
-};
-
-static struct mpu_platform_data bmp180_pdata = {
- .config = NVI_CONFIG_BOOT_MPU,
-};
-
-static struct i2c_board_info __initdata inv_mpu9150_i2c2_board_info[] = {
- {
- I2C_BOARD_INFO(MPU_GYRO_NAME, MPU_GYRO_ADDR),
- .platform_data = &mpu9150_gyro_data,
- },
- {
- /* The actual BMP180 address is 0x77 but because this conflicts
- * with another device, this address is hacked so Linux will
- * call the driver. The conflict is technically okay since the
- * BMP180 is behind the MPU. Also, the BMP180 driver uses a
- * hard-coded address of 0x77 since it can't be changed anyway.
- */
- I2C_BOARD_INFO("bmp180", 0x78),
- .platform_data = &bmp180_pdata,
- },
- {
- I2C_BOARD_INFO(MPU_COMPASS_NAME, MPU_COMPASS_ADDR),
- .platform_data = &mpu_compass_data,
- },
-};
-
-static void mpuirq_init(void)
-{
- int ret = 0;
- unsigned gyro_irq_gpio = MPU_GYRO_IRQ_GPIO;
- unsigned gyro_bus_num = MPU_GYRO_BUS_NUM;
- char *gyro_name = MPU_GYRO_NAME;
-
- pr_info("*** MPU START *** mpuirq_init...\n");
-
- ret = gpio_request(gyro_irq_gpio, gyro_name);
-
- if (ret < 0) {
- pr_err("%s: gpio_request failed %d\n", __func__, ret);
- return;
- }
-
- ret = gpio_direction_input(gyro_irq_gpio);
- if (ret < 0) {
- pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
- gpio_free(gyro_irq_gpio);
- return;
- }
- pr_info("*** MPU END *** mpuirq_init...\n");
-
- inv_mpu9150_i2c2_board_info[0].irq = gpio_to_irq(MPU_GYRO_IRQ_GPIO);
- i2c_register_board_info(gyro_bus_num, inv_mpu9150_i2c2_board_info,
- ARRAY_SIZE(inv_mpu9150_i2c2_board_info));
-}
-
-static int dalmore_nct1008_init(void)
-{
- int nct1008_port;
- int ret = 0;
-
- if ((board_info.board_id == BOARD_E1612) ||
- (board_info.board_id == BOARD_E1641) ||
- (board_info.board_id == BOARD_E1613) ||
- (board_info.board_id == BOARD_P2454))
- {
- /* per email from Matt 9/10/2012 */
- nct1008_port = TEGRA_GPIO_PX6;
- } else if (board_info.board_id == BOARD_E1611) {
- if (board_info.fab == 0x04)
- nct1008_port = TEGRA_GPIO_PO4;
- else
- nct1008_port = TEGRA_GPIO_PX6;
- } else {
- nct1008_port = TEGRA_GPIO_PX6;
- pr_err("Warning: nct alert_port assumed TEGRA_GPIO_PX6"
- " for unknown dalmore board id E%d\n",
- board_info.board_id);
- }
-
- tegra_add_all_vmin_trips(dalmore_nct1008_pdata.sensors[EXT].trips,
- &dalmore_nct1008_pdata.sensors[EXT].num_trips);
-
- dalmore_i2c4_nct1008_board_info[0].irq = gpio_to_irq(nct1008_port);
- pr_info("%s: dalmore nct1008 irq %d",
- __func__, dalmore_i2c4_nct1008_board_info[0].irq);
-
- ret = gpio_request(nct1008_port, "temp_alert");
- if (ret < 0)
- return ret;
-
- ret = gpio_direction_input(nct1008_port);
- if (ret < 0) {
- pr_info("%s: calling gpio_free(nct1008_port)", __func__);
- gpio_free(nct1008_port);
- }
-
- /* dalmore has thermal sensor on GEN1-I2C i.e. instance 0 */
- i2c_register_board_info(0, dalmore_i2c4_nct1008_board_info,
- ARRAY_SIZE(dalmore_i2c4_nct1008_board_info));
-
- return ret;
-}
-
-static struct i2c_board_info __initdata bq20z45_pdata[] = {
- {
- I2C_BOARD_INFO("sbs-battery", 0x0B),
- .platform_data = &sbs_pdata,
- },
-};
-
-#ifdef CONFIG_TEGRA_SKIN_THROTTLE
-static struct thermal_trip_info skin_trips[] = {
- {
- .cdev_type = "skin-balanced",
- .trip_temp = 43000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- .hysteresis = 0,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 57000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- .hysteresis = 0,
- },
-};
-
-static struct therm_est_subdevice skin_devs[] = {
- {
- .dev_data = "Tdiode",
- .coeffs = {
- 2, 1, 1, 1,
- 1, 1, 1, 1,
- 1, 1, 1, 0,
- 1, 1, 0, 0,
- 0, 0, -1, -7
- },
- },
- {
- .dev_data = "Tboard",
- .coeffs = {
- -11, -7, -5, -3,
- -3, -2, -1, 0,
- 0, 0, 1, 1,
- 1, 2, 2, 3,
- 4, 6, 11, 18
- },
- },
-};
-
-static struct pid_thermal_gov_params skin_pid_params = {
- .max_err_temp = 4000,
- .max_err_gain = 1000,
-
- .gain_p = 1000,
- .gain_d = 0,
-
- .up_compensation = 15,
- .down_compensation = 15,
-};
-
-static struct thermal_zone_params skin_tzp = {
- .governor_name = "pid_thermal_gov",
- .governor_params = &skin_pid_params,
-};
-
-static struct therm_est_data skin_data = {
- .num_trips = ARRAY_SIZE(skin_trips),
- .trips = skin_trips,
- .toffset = 9793,
- .polling_period = 1100,
- .passive_delay = 15000,
- .tc1 = 10,
- .tc2 = 1,
- .ndevs = ARRAY_SIZE(skin_devs),
- .devs = skin_devs,
- .tzp = &skin_tzp,
-};
-
-static struct throttle_table skin_throttle_table[] = {
- /* CPU_THROT_LOW cannot be used by other than CPU */
- /* CPU, C2BUS, C3BUS, SCLK, EMC */
- { { 1810500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1785000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1759500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1734000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1708500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1683000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1657500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1632000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1606500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1581000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1555500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1530000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1504500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1479000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1453500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1428000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1402500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1377000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1351500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1326000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1300500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1275000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1249500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1224000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1198500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1173000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1147500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1122000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1096500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1071000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1045500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1020000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 994500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 969000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 943500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 918000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 892500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 867000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 841500, 564000, NO_CAP, NO_CAP, NO_CAP } },
- { { 816000, 564000, NO_CAP, NO_CAP, 792000 } },
- { { 790500, 564000, NO_CAP, 372000, 792000 } },
- { { 765000, 564000, 468000, 372000, 792000 } },
- { { 739500, 528000, 468000, 372000, 792000 } },
- { { 714000, 528000, 468000, 336000, 792000 } },
- { { 688500, 528000, 420000, 336000, 792000 } },
- { { 663000, 492000, 420000, 336000, 792000 } },
- { { 637500, 492000, 420000, 336000, 408000 } },
- { { 612000, 492000, 420000, 300000, 408000 } },
- { { 586500, 492000, 360000, 336000, 408000 } },
- { { 561000, 420000, 420000, 300000, 408000 } },
- { { 535500, 420000, 360000, 228000, 408000 } },
- { { 510000, 420000, 288000, 228000, 408000 } },
- { { 484500, 324000, 288000, 228000, 408000 } },
- { { 459000, 324000, 288000, 228000, 408000 } },
- { { 433500, 324000, 288000, 228000, 408000 } },
- { { 408000, 324000, 288000, 228000, 408000 } },
-};
-
-static struct balanced_throttle skin_throttle = {
- .throt_tab_size = ARRAY_SIZE(skin_throttle_table),
- .throt_tab = skin_throttle_table,
-};
-
-static int __init dalmore_skin_init(void)
-{
- if (machine_is_dalmore()) {
- balanced_throttle_register(&skin_throttle, "skin-balanced");
- tegra_skin_therm_est_device.dev.platform_data = &skin_data;
- platform_device_register(&tegra_skin_therm_est_device);
- }
-
- return 0;
-}
-late_initcall(dalmore_skin_init);
-#endif
-
-int __init dalmore_sensors_init(void)
-{
- int err;
-
- tegra_get_board_info(&board_info);
-
- err = dalmore_nct1008_init();
- if (err)
- return err;
-
- dalmore_camera_init();
- mpuirq_init();
-
- i2c_register_board_info(0, dalmore_i2c_board_info_cm3218,
- ARRAY_SIZE(dalmore_i2c_board_info_cm3218));
-
- i2c_register_board_info(0, bq20z45_pdata,
- ARRAY_SIZE(bq20z45_pdata));
-
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-dalmore.c b/arch/arm/mach-tegra/board-dalmore.c
deleted file mode 100644
index 42dfda4f697d..000000000000
--- a/arch/arm/mach-tegra/board-dalmore.c
+++ /dev/null
@@ -1,750 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-dalmore.c
- *
- * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/ctype.h>
-#include <linux/platform_device.h>
-#include <linux/clk.h>
-#include <linux/serial_8250.h>
-#include <linux/i2c.h>
-#include <linux/dma-mapping.h>
-#include <linux/delay.h>
-#include <linux/i2c-tegra.h>
-#include <linux/gpio.h>
-#include <linux/input.h>
-#include <linux/platform_data/tegra_usb.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/rm31080a_ts.h>
-#include <linux/platform_data/serial-tegra.h>
-#include <linux/memblock.h>
-#include <linux/spi/spi-tegra.h>
-#include <linux/nfc/pn544.h>
-#include <linux/rfkill-gpio.h>
-#include <linux/skbuff.h>
-#include <linux/ti_wilink_st.h>
-#include <linux/regulator/consumer.h>
-#include <linux/smb349-charger.h>
-#include <linux/max17048_battery.h>
-#include <linux/leds.h>
-#include <linux/i2c/at24.h>
-#include <linux/of_platform.h>
-#include <linux/edp.h>
-#include <linux/usb/tegra_usb_phy.h>
-#include <linux/clk/tegra.h>
-#include <linux/clocksource.h>
-#include <linux/irqchip.h>
-#include <linux/irqchip/tegra.h>
-#include <linux/tegra_fiq_debugger.h>
-#include <linux/platform_data/tegra_usb_modem_power.h>
-
-#include <mach/irqs.h>
-#include <mach/pinmux.h>
-#include <mach/pinmux-t11.h>
-#include <mach/io_dpd.h>
-#include <mach/i2s.h>
-#include <mach/isomgr.h>
-#include <mach/tegra_asoc_pdata.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <mach/gpio-tegra.h>
-#include <mach/xusb.h>
-
-#include "board-touch-raydium.h"
-#include "board.h"
-#include "board-common.h"
-#include "clock.h"
-#include "board-dalmore.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "iomap.h"
-#include "pm.h"
-#include "common.h"
-#include "tegra-board-id.h"
-#include "tegra-of-dev-auxdata.h"
-
-static struct board_info board_info, display_board_info;
-
-#if defined(CONFIG_BT_BLUESLEEP) || defined(CONFIG_BT_BLUESLEEP_MODULE)
-static struct rfkill_gpio_platform_data dalmore_bt_rfkill_pdata = {
- .name = "bt_rfkill",
- .shutdown_gpio = TEGRA_GPIO_PQ7,
- .reset_gpio = TEGRA_GPIO_PQ6,
- .type = RFKILL_TYPE_BLUETOOTH,
-};
-
-static struct platform_device dalmore_bt_rfkill_device = {
- .name = "rfkill_gpio",
- .id = -1,
- .dev = {
- .platform_data = &dalmore_bt_rfkill_pdata,
- },
-};
-
-static struct resource dalmore_bluesleep_resources[] = {
- [0] = {
- .name = "gpio_host_wake",
- .start = TEGRA_GPIO_PU6,
- .end = TEGRA_GPIO_PU6,
- .flags = IORESOURCE_IO,
- },
- [1] = {
- .name = "gpio_ext_wake",
- .start = TEGRA_GPIO_PEE1,
- .end = TEGRA_GPIO_PEE1,
- .flags = IORESOURCE_IO,
- },
- [2] = {
- .name = "host_wake",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- },
-};
-
-static struct platform_device dalmore_bluesleep_device = {
- .name = "bluesleep",
- .id = -1,
- .num_resources = ARRAY_SIZE(dalmore_bluesleep_resources),
- .resource = dalmore_bluesleep_resources,
-};
-
-static noinline void __init dalmore_setup_bt_rfkill(void)
-{
- platform_device_register(&dalmore_bt_rfkill_device);
-}
-
-static noinline void __init dalmore_setup_bluesleep(void)
-{
- dalmore_bluesleep_resources[2].start =
- dalmore_bluesleep_resources[2].end =
- gpio_to_irq(TEGRA_GPIO_PU6);
- platform_device_register(&dalmore_bluesleep_device);
- return;
-}
-#elif defined(CONFIG_BLUEDROID_PM) || defined(CONFIG_BLUEDROID_PM_MODULE)
-static struct resource dalmore_bluedroid_pm_resources[] = {
- [0] = {
- .name = "shutdown_gpio",
- .start = TEGRA_GPIO_PQ7,
- .end = TEGRA_GPIO_PQ7,
- .flags = IORESOURCE_IO,
- },
- [1] = {
- .name = "host_wake",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- },
- [2] = {
- .name = "gpio_ext_wake",
- .start = TEGRA_GPIO_PEE1,
- .end = TEGRA_GPIO_PEE1,
- .flags = IORESOURCE_IO,
- },
- [3] = {
- .name = "gpio_host_wake",
- .start = TEGRA_GPIO_PU6,
- .end = TEGRA_GPIO_PU6,
- .flags = IORESOURCE_IO,
- },
- [4] = {
- .name = "reset_gpio",
- .start = TEGRA_GPIO_PQ6,
- .end = TEGRA_GPIO_PQ6,
- .flags = IORESOURCE_IO,
- },
-};
-
-static struct platform_device dalmore_bluedroid_pm_device = {
- .name = "bluedroid_pm",
- .id = 0,
- .num_resources = ARRAY_SIZE(dalmore_bluedroid_pm_resources),
- .resource = dalmore_bluedroid_pm_resources,
-};
-
-static noinline void __init dalmore_setup_bluedroid_pm(void)
-{
- dalmore_bluedroid_pm_resources[1].start =
- dalmore_bluedroid_pm_resources[1].end =
- gpio_to_irq(TEGRA_GPIO_PU6);
- platform_device_register(&dalmore_bluedroid_pm_device);
-}
-#endif
-
-static __initdata struct tegra_clk_init_table dalmore_clk_init_table[] = {
- /* name parent rate enabled */
- { "pll_m", NULL, 0, false},
- { "hda", "pll_p", 108000000, false},
- { "hda2codec_2x", "pll_p", 48000000, false},
- { "pwm", "pll_p", 3187500, false},
- { "blink", "clk_32k", 32768, true},
- { "i2s1", "pll_a_out0", 0, false},
- { "i2s3", "pll_a_out0", 0, false},
- { "i2s4", "pll_a_out0", 0, false},
- { "spdif_out", "pll_a_out0", 0, false},
- { "d_audio", "clk_m", 12000000, false},
- { "dam0", "clk_m", 12000000, false},
- { "dam1", "clk_m", 12000000, false},
- { "dam2", "clk_m", 12000000, false},
- { "audio1", "i2s1_sync", 0, false},
- { "audio3", "i2s3_sync", 0, false},
- /* Setting vi_sensor-clk to true for validation purpose, will imapact
- * power, later set to be false.*/
- { "vi_sensor", "pll_p", 150000000, false},
- { "cilab", "pll_p", 150000000, false},
- { "cilcd", "pll_p", 150000000, false},
- { "cile", "pll_p", 150000000, false},
- { "i2c1", "pll_p", 3200000, false},
- { "i2c2", "pll_p", 3200000, false},
- { "i2c3", "pll_p", 3200000, false},
- { "i2c4", "pll_p", 3200000, false},
- { "i2c5", "pll_p", 3200000, false},
- { "sbc1", "pll_p", 25000000, false},
- { "sbc2", "pll_p", 25000000, false},
- { "sbc3", "pll_p", 25000000, false},
- { "sbc4", "pll_p", 25000000, false},
- { "sbc5", "pll_p", 25000000, false},
- { "sbc6", "pll_p", 25000000, false},
- { "uarta", "pll_p", 408000000, false},
- { "uartb", "pll_p", 408000000, false},
- { "uartc", "pll_p", 408000000, false},
- { "uartd", "pll_p", 408000000, false},
- { NULL, NULL, 0, 0},
-};
-
-static struct i2c_board_info __initdata rt5640_board_info = {
- I2C_BOARD_INFO("rt5640", 0x1c),
-};
-
-static struct pn544_i2c_platform_data nfc_pdata = {
- .irq_gpio = TEGRA_GPIO_PW2,
- .ven_gpio = TEGRA_GPIO_PQ3,
- .firm_gpio = TEGRA_GPIO_PH0,
-};
-
-static struct i2c_board_info __initdata nfc_board_info = {
- I2C_BOARD_INFO("pn544", 0x28),
- .platform_data = &nfc_pdata,
-};
-
-static void dalmore_i2c_init(void)
-{
- nfc_board_info.irq = gpio_to_irq(TEGRA_GPIO_PW2);
- i2c_register_board_info(0, &nfc_board_info, 1);
- i2c_register_board_info(0, &rt5640_board_info, 1);
-}
-
-static struct tegra_serial_platform_data dalmore_uartd_pdata = {
- .dma_req_selector = 19,
- .modem_interrupt = false,
-};
-
-static void __init dalmore_uart_init(void)
-{
- int debug_port_id;
-
- /* Register low speed only if it is selected */
- if (!is_tegra_debug_uartport_hs()) {
- debug_port_id = uart_console_debug_init(3);
- if (debug_port_id < 0)
- return;
-
- platform_device_register(uart_console_debug_device);
-
- } else {
- tegra_uartd_device.dev.platform_data = &dalmore_uartd_pdata;
- platform_device_register(&tegra_uartd_device);
- }
-
-}
-
-static struct resource tegra_rtc_resources[] = {
- [0] = {
- .start = TEGRA_RTC_BASE,
- .end = TEGRA_RTC_BASE + TEGRA_RTC_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = INT_RTC,
- .end = INT_RTC,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device tegra_rtc_device = {
- .name = "tegra_rtc",
- .id = -1,
- .resource = tegra_rtc_resources,
- .num_resources = ARRAY_SIZE(tegra_rtc_resources),
-};
-
-static struct tegra_asoc_platform_data dalmore_audio_pdata = {
- .gpio_spkr_en = TEGRA_GPIO_SPKR_EN,
- .gpio_hp_det = TEGRA_GPIO_HP_DET,
- .gpio_hp_mute = -1,
- .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN,
- .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN,
- .gpio_ldo1_en = TEGRA_GPIO_LDO1_EN,
- .gpio_codec1 = TEGRA_GPIO_CODEC1_EN,
- .gpio_codec2 = TEGRA_GPIO_CODEC2_EN,
- .gpio_codec3 = TEGRA_GPIO_CODEC3_EN,
- .i2s_param[HIFI_CODEC] = {
- .audio_port_id = 1,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- },
- .i2s_param[BT_SCO] = {
- .audio_port_id = 3,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_DSP_A,
- },
-};
-
-static struct platform_device dalmore_audio_device = {
- .name = "tegra-snd-rt5640",
- .id = 0,
- .dev = {
- .platform_data = &dalmore_audio_pdata,
- },
-};
-
-static struct platform_device *dalmore_devices[] __initdata = {
- &tegra_pmu_device,
- &tegra_rtc_device,
- &tegra_udc_device,
-#if defined(CONFIG_TEGRA_AVP)
- &tegra_avp_device,
-#endif
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_SE)
- &tegra11_se_device,
-#endif
- &tegra_ahub_device,
- &tegra_dam_device0,
- &tegra_dam_device1,
- &tegra_dam_device2,
- &tegra_i2s_device1,
- &tegra_i2s_device3,
- &tegra_i2s_device4,
- &tegra_spdif_device,
- &spdif_dit_device,
- &bluetooth_dit_device,
- &tegra_pcm_device,
- &tegra_offload_device,
- &tegra30_avp_audio_device,
- &dalmore_audio_device,
- &tegra_hda_device,
-#if defined(CONFIG_TEGRA_CEC_SUPPORT)
- &tegra_cec_device,
-#endif
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_AES)
- &tegra_aes_device,
-#endif
-};
-
-#ifdef CONFIG_USB_SUPPORT
-static struct tegra_usb_platform_data tegra_udc_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .unaligned_dma_buf_supported = false,
- .op_mode = TEGRA_USB_OPMODE_DEVICE,
- .u_data.dev = {
- .vbus_pmu_irq = 0,
- .vbus_gpio = -1,
- .charging_supported = true,
- .remote_wakeup_supported = false,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 8,
- .xcvr_lsfslew = 0,
- .xcvr_lsrslew = 3,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- },
-};
-
-static struct tegra_usb_platform_data tegra_ehci1_utmi_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 15,
- .xcvr_lsfslew = 0,
- .xcvr_lsrslew = 3,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- .vbus_oc_map = 0x4,
- },
-};
-
-static struct tegra_usb_platform_data tegra_ehci3_utmi_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 8,
- .xcvr_lsfslew = 0,
- .xcvr_lsrslew = 3,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- .vbus_oc_map = 0x5,
- },
-};
-
-static struct tegra_usb_otg_data tegra_otg_pdata = {
- .ehci_device = &tegra_ehci1_device,
- .ehci_pdata = &tegra_ehci1_utmi_pdata,
-};
-
-static void dalmore_usb_init(void)
-{
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
-
- /* Set USB wake sources for dalmore */
- tegra_set_usb_wake_source();
-
- if (!(usb_port_owner_info & UTMI1_PORT_OWNER_XUSB)) {
- tegra_otg_pdata.is_xhci = false;
- tegra_udc_pdata.u_data.dev.is_xhci = false;
- } else {
- tegra_otg_pdata.is_xhci = true;
- tegra_udc_pdata.u_data.dev.is_xhci = true;
- }
- tegra_otg_device.dev.platform_data = &tegra_otg_pdata;
- platform_device_register(&tegra_otg_device);
- /* Setup the udc platform data */
- tegra_udc_device.dev.platform_data = &tegra_udc_pdata;
-
- if (!(usb_port_owner_info & UTMI2_PORT_OWNER_XUSB)) {
- tegra_ehci3_device.dev.platform_data = &tegra_ehci3_utmi_pdata;
- platform_device_register(&tegra_ehci3_device);
- }
-}
-
-static struct tegra_xusb_platform_data xusb_pdata = {
- .portmap = TEGRA_XUSB_SS_P0 | TEGRA_XUSB_USB2_P1 |
- TEGRA_XUSB_USB2_P0,
-};
-
-static void dalmore_xusb_init(void)
-{
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
-
- if (!(usb_port_owner_info & UTMI1_PORT_OWNER_XUSB))
- xusb_pdata.portmap &= ~TEGRA_XUSB_USB2_P0;
- if (!(usb_port_owner_info & UTMI2_PORT_OWNER_XUSB))
- xusb_pdata.portmap &= ~(TEGRA_XUSB_USB2_P1 | TEGRA_XUSB_SS_P0);
-}
-
-static struct gpio modem_gpios[] = { /* Nemo modem */
- {MODEM_EN, GPIOF_OUT_INIT_HIGH, "MODEM EN"},
- {MDM_RST, GPIOF_OUT_INIT_LOW, "MODEM RESET"},
-};
-
-static struct tegra_usb_platform_data tegra_ehci2_hsic_baseband_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_HSIC,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
-};
-
-static int baseband_init(void)
-{
- int ret;
-
- ret = gpio_request_array(modem_gpios, ARRAY_SIZE(modem_gpios));
- if (ret) {
- pr_warn("%s:gpio request failed\n", __func__);
- return ret;
- }
-
- /* enable pull-down for MDM_COLD_BOOT */
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_KB_COL5,
- TEGRA_PUPD_PULL_DOWN);
-
- /* export GPIO for user space access through sysfs */
- gpio_export(MDM_RST, false);
-
- return 0;
-}
-
-static const struct tegra_modem_operations baseband_operations = {
- .init = baseband_init,
-};
-
-static struct tegra_usb_modem_power_platform_data baseband_pdata = {
- .ops = &baseband_operations,
- .regulator_name = "vdd_modem_3v3",
- .wake_gpio = -1,
- .boot_gpio = MDM_COLDBOOT,
- .boot_irq_flags = IRQF_TRIGGER_RISING |
- IRQF_TRIGGER_FALLING |
- IRQF_ONESHOT,
- .autosuspend_delay = 2000,
- .short_autosuspend_delay = 50,
- .tegra_ehci_device = &tegra_ehci2_device,
- .tegra_ehci_pdata = &tegra_ehci2_hsic_baseband_pdata,
-};
-
-static struct platform_device icera_nemo_device = {
- .name = "tegra_usb_modem_power",
- .id = -1,
- .dev = {
- .platform_data = &baseband_pdata,
- },
-};
-
-static void dalmore_modem_init(void)
-{
- int modem_id = tegra_get_modem_id();
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
- switch (modem_id) {
- case TEGRA_BB_NEMO: /* on board i500 HSIC */
- if (!(usb_port_owner_info & HSIC1_PORT_OWNER_XUSB)) {
- platform_device_register(&icera_nemo_device);
- }
- break;
- }
-}
-
-#else
-static void dalmore_usb_init(void) { }
-static void dalmore_modem_init(void) { }
-static void dalmore_xusb_init(void) { }
-#endif
-
-static void dalmore_audio_init(void)
-{
- dalmore_audio_pdata.codec_name = "rt5640.0-001c";
- dalmore_audio_pdata.codec_dai_name = "rt5640-aif1";
-}
-
-static __initdata struct tegra_clk_init_table touch_clk_init_table[] = {
- /* name parent rate enabled */
- { "extern2", "pll_p", 41000000, false},
- { "clk_out_2", "extern2", 40800000, false},
- { NULL, NULL, 0, 0},
-};
-
-struct rm_spi_ts_platform_data rm31080ts_dalmore_data = {
- .gpio_reset = TOUCH_GPIO_RST_RAYDIUM_SPI,
- .config = 0,
- .platform_id = RM_PLATFORM_D010,
- .name_of_clock = "clk_out_2",
- .name_of_clock_con = "extern2",
-};
-
-static struct tegra_spi_device_controller_data dev_cdata = {
- .rx_clk_tap_delay = 16,
- .tx_clk_tap_delay = 16,
-};
-
-struct spi_board_info rm31080a_dalmore_spi_board[1] = {
- {
- .modalias = "rm_ts_spidev",
- .bus_num = 3,
- .chip_select = 2,
- .max_speed_hz = 12 * 1000 * 1000,
- .mode = SPI_MODE_0,
- .controller_data = &dev_cdata,
- .platform_data = &rm31080ts_dalmore_data,
- },
-};
-
-static int __init dalmore_touch_init(void)
-{
- tegra_clk_init_from_table(touch_clk_init_table);
- if (display_board_info.board_id == BOARD_E1582)
- rm31080ts_dalmore_data.platform_id = RM_PLATFORM_P005;
- else
- rm31080ts_dalmore_data.platform_id = RM_PLATFORM_D010;
- mdelay(20);
- rm31080a_dalmore_spi_board[0].irq = gpio_to_irq(TOUCH_GPIO_IRQ_RAYDIUM_SPI);
- touch_init_raydium(TOUCH_GPIO_IRQ_RAYDIUM_SPI,
- TOUCH_GPIO_RST_RAYDIUM_SPI,
- &rm31080ts_dalmore_data,
- &rm31080a_dalmore_spi_board[0],
- ARRAY_SIZE(rm31080a_dalmore_spi_board));
- return 0;
-}
-
-#ifdef CONFIG_USE_OF
-struct of_dev_auxdata dalmore_auxdata_lookup[] __initdata = {
- OF_DEV_AUXDATA("nvidia,tegra114-sdhci", 0x78000600, "sdhci-tegra.3",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-sdhci", 0x78000400, "sdhci-tegra.2",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-sdhci", 0x78000000, "sdhci-tegra.0",
- &dalmore_tegra_sdhci_platform_data0),
- OF_DEV_AUXDATA("nvidia,tegra114-camera", 0x0, "tegra_camera",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-host1x", TEGRA_HOST1X_BASE, "host1x",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr3d", TEGRA_GR3D_BASE, "gr3d",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr2d", TEGRA_GR2D_BASE, "gr2d",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-msenc", TEGRA_MSENC_BASE, "msenc",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-vi", TEGRA_VI_BASE, "vi",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-isp", TEGRA_ISP_BASE, "isp",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-tsec", TEGRA_TSEC_BASE, "tsec",
- NULL),
-
- T114_I2C_OF_DEV_AUXDATA,
- T114_SPI_OF_DEV_AUXDATA,
- OF_DEV_AUXDATA("nvidia,tegra114-apbdma", 0x6000a000, "tegra-apbdma",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-hsuart", 0x70006000, "serial-tegra.0",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-hsuart", 0x70006040, "serial-tegra.1",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-hsuart", 0x70006200, "serial-tegra.2",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-xhci", 0x70090000, "tegra-xhci",
- &xusb_pdata),
- OF_DEV_AUXDATA("nvidia,tegra114-nvavp", 0x60001000, "nvavp",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-pwm", 0x7000a000, "tegra-pwm", NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-efuse", TEGRA_FUSE_BASE, "tegra-fuse",
- NULL),
- {}
-};
-#endif
-
-static void __init tegra_dalmore_early_init(void)
-{
- tegra_clk_init_from_table(dalmore_clk_init_table);
- tegra_clk_verify_parents();
- tegra_soc_device_init("dalmore");
-}
-
-static void __init tegra_dalmore_late_init(void)
-{
- dalmore_i2c_init();
- dalmore_usb_init();
- dalmore_xusb_init();
- dalmore_uart_init();
- dalmore_audio_init();
- platform_add_devices(dalmore_devices, ARRAY_SIZE(dalmore_devices));
- tegra_io_dpd_init();
- dalmore_regulator_init();
- dalmore_sdhci_init();
- dalmore_suspend_init();
- dalmore_emc_init();
- dalmore_edp_init();
- isomgr_init();
- dalmore_touch_init();
- if (board_info.board_id == BOARD_E1582)
- roth_panel_init(board_info.board_id);
- else
- dalmore_panel_init();
- dalmore_kbc_init();
-#if defined(CONFIG_BT_BLUESLEEP) || defined(CONFIG_BT_BLUESLEEP_MODULE)
- dalmore_setup_bluesleep();
- dalmore_setup_bt_rfkill();
-#elif defined(CONFIG_BLUEDROID_PM) || defined(CONFIG_BLUEDROID_PM_MODULE)
- dalmore_setup_bluedroid_pm();
-#endif
- dalmore_modem_init();
-#ifdef CONFIG_TEGRA_WDT_RECOVERY
- tegra_wdt_recovery_init();
-#endif
- tegra_serial_debug_init(TEGRA_UARTD_BASE, INT_WDT_CPU, NULL, -1, -1);
- dalmore_sensors_init();
- dalmore_soctherm_init();
-}
-
-static void __init tegra_dalmore_dt_init(void)
-{
- tegra_get_board_info(&board_info);
- tegra_get_display_board_info(&display_board_info);
-
- tegra_dalmore_early_init();
-
- of_platform_populate(NULL,
- of_default_bus_match_table, dalmore_auxdata_lookup,
- &platform_bus);
-
- tegra_dalmore_late_init();
-}
-
-static void __init tegra_dalmore_reserve(void)
-{
-#if defined(CONFIG_NVMAP_CONVERT_CARVEOUT_TO_IOVMM)
- /* 1920*1200*4*2 = 18432000 bytes */
- tegra_reserve(0, SZ_16M + SZ_2M, SZ_16M);
-#else
- tegra_reserve(SZ_512M, SZ_16M + SZ_2M, SZ_4M);
-#endif
-}
-
-static const char * const dalmore_dt_board_compat[] = {
- "nvidia,dalmore",
- NULL
-};
-
-MACHINE_START(DALMORE, "dalmore")
- .atag_offset = 0x100,
- .smp = smp_ops(tegra_smp_ops),
- .map_io = tegra_map_common_io,
- .reserve = tegra_dalmore_reserve,
- .init_early = tegra11x_init_early,
- .init_irq = irqchip_init,
- .init_time = clocksource_of_init,
- .init_machine = tegra_dalmore_dt_init,
- .restart = tegra_assert_system_reset,
- .dt_compat = dalmore_dt_board_compat,
- .init_late = tegra_init_late,
-MACHINE_END
diff --git a/arch/arm/mach-tegra/board-dalmore.h b/arch/arm/mach-tegra/board-dalmore.h
deleted file mode 100644
index b0b54649c251..000000000000
--- a/arch/arm/mach-tegra/board-dalmore.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-dalmore.h
- *
- * Copyright (c) 2012-2013, NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _MACH_TEGRA_BOARD_DALMORE_H
-#define _MACH_TEGRA_BOARD_DALMORE_H
-
-#include <mach/irqs.h>
-#include <linux/mfd/max77663-core.h>
-#include <linux/mfd/tps65090.h>
-#include "gpio-names.h"
-
-/* External peripheral act as gpio */
-/* MAX77663 GPIO */
-#define MAX77663_GPIO_BASE TEGRA_NR_GPIOS
-#define PALMAS_TEGRA_GPIO_BASE TEGRA_NR_GPIOS
-#define MAX77663_GPIO_END (MAX77663_GPIO_BASE + MAX77663_GPIO_NR)
-
-/* Hall Effect Sensor GPIO */
-#define TEGRA_GPIO_HALL TEGRA_GPIO_PS0
-
-/* Audio-related GPIOs */
-#define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PW3
-#define TEGRA_GPIO_LDO1_EN TEGRA_GPIO_PV3
-#define TEGRA_GPIO_CODEC1_EN TEGRA_GPIO_PP3
-#define TEGRA_GPIO_CODEC2_EN TEGRA_GPIO_PP1
-#define TEGRA_GPIO_CODEC3_EN TEGRA_GPIO_PV0
-
-#define TEGRA_GPIO_SPKR_EN -1
-#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PR7
-#define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PK3
-#define TEGRA_GPIO_EXT_MIC_EN -1
-
-#define TEGRA_GPIO_W_DISABLE TEGRA_GPIO_PDD7
-#define TEGRA_GPIO_MODEM_RSVD1 TEGRA_GPIO_PV0
-#define TEGRA_GPIO_MODEM_RSVD2 TEGRA_GPIO_PH7
-
-#define TPS65090_TEGRA_IRQ_BASE TEGRA_NR_IRQS
-#define TPS65090_TEGRA_IRQ_END (TPS65090_TEGRA_IRQ_BASE + 16)
-/* External peripheral act as interrupt controller */
-/* MAX77663 IRQs */
-#define PALMAS_TEGRA_IRQ_BASE TPS65090_TEGRA_IRQ_END
-#define PALMAS_TEGRA_IRQ_END (PALMAS_TEGRA_IRQ_BASE + PALMAS_NUM_IRQ)
-#define MAX77663_IRQ_BASE TPS65090_TEGRA_IRQ_END
-#define MAX77663_IRQ_END (MAX77663_IRQ_BASE + MAX77663_IRQ_NR)
-#define MAX77663_IRQ_ACOK_RISING MAX77663_IRQ_ONOFF_ACOK_RISING
-
-/* PMC Wake status registers */
-#define PMC_WAKE_STATUS 0x14
-#define PMC_WAKE2_STATUS 0x168
-
-/* I2C related GPIOs */
-#define TEGRA_GPIO_I2C1_SCL TEGRA_GPIO_PC4
-#define TEGRA_GPIO_I2C1_SDA TEGRA_GPIO_PC5
-#define TEGRA_GPIO_I2C2_SCL TEGRA_GPIO_PT5
-#define TEGRA_GPIO_I2C2_SDA TEGRA_GPIO_PT6
-#define TEGRA_GPIO_I2C3_SCL TEGRA_GPIO_PBB1
-#define TEGRA_GPIO_I2C3_SDA TEGRA_GPIO_PBB2
-#define TEGRA_GPIO_I2C4_SCL TEGRA_GPIO_PV4
-#define TEGRA_GPIO_I2C4_SDA TEGRA_GPIO_PV5
-#define TEGRA_GPIO_I2C5_SCL TEGRA_GPIO_PZ6
-#define TEGRA_GPIO_I2C5_SDA TEGRA_GPIO_PZ7
-
-/* Camera related GPIOs */
-#define CAM_RSTN TEGRA_GPIO_PBB3
-#define CAM_FLASH_STROBE TEGRA_GPIO_PBB4
-#define CAM1_POWER_DWN_GPIO TEGRA_GPIO_PBB5
-#define CAM2_POWER_DWN_GPIO TEGRA_GPIO_PBB6
-#define CAM_AF_PWDN TEGRA_GPIO_PBB7
-#define CAM_GPIO1 TEGRA_GPIO_PCC1
-#define CAM_GPIO2 TEGRA_GPIO_PCC2
-
-/* Touchscreen definitions */
-#define TOUCH_GPIO_IRQ_RAYDIUM_SPI TEGRA_GPIO_PK2
-#define TOUCH_GPIO_RST_RAYDIUM_SPI TEGRA_GPIO_PK4
-
-/* Invensense MPU Definitions */
-#define MPU_GYRO_NAME "mpu9150"
-#define MPU_GYRO_IRQ_GPIO TEGRA_GPIO_PR3
-#define MPU_GYRO_ADDR 0x69
-#define MPU_GYRO_BUS_NUM 0
-#define MPU_GYRO_ORIENTATION { -1, 0, 0, 0, 1, 0, 0, 0, -1 }
-#define MPU_COMPASS_NAME "ak8975"
-#define MPU_COMPASS_IRQ_GPIO 0
-#define MPU_COMPASS_ADDR 0x0D
-#define MPU_COMPASS_BUS_NUM 0
-#define MPU_COMPASS_ORIENTATION { 0, -1, 0, 1, 0, 0, 0, 0, 1 }
-
-/* Modem related GPIOs */
-#define MODEM_EN TEGRA_GPIO_PP2
-#define MDM_RST TEGRA_GPIO_PP0
-#define MDM_COLDBOOT TEGRA_GPIO_PQ5
-
-int dalmore_regulator_init(void);
-int dalmore_suspend_init(void);
-int dalmore_sdhci_init(void);
-int dalmore_sensors_init(void);
-int dalmore_emc_init(void);
-int dalmore_edp_init(void);
-int dalmore_panel_init(void);
-int roth_panel_init(int board_id);
-int dalmore_kbc_init(void);
-int dalmore_soctherm_init(void);
-
-extern struct tegra_sdhci_platform_data dalmore_tegra_sdhci_platform_data0;
-
-/* Baseband IDs */
-enum tegra_bb_type {
- TEGRA_BB_NEMO = 1,
-};
-
-#define UTMI1_PORT_OWNER_XUSB 0x1
-#define UTMI2_PORT_OWNER_XUSB 0x2
-#define HSIC1_PORT_OWNER_XUSB 0x4
-
-#endif
diff --git a/arch/arm/mach-tegra/board-macallan-kbc.c b/arch/arm/mach-tegra/board-macallan-kbc.c
deleted file mode 100644
index 37e387e553ac..000000000000
--- a/arch/arm/mach-tegra/board-macallan-kbc.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-macallan-kbc.c
- * Keys configuration for Nvidia t114 macallan platform.
- *
- * Copyright (C) 2013 NVIDIA, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307, USA
- */
-
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/input.h>
-#include <linux/io.h>
-#include <linux/input/tegra_kbc.h>
-#include <linux/gpio.h>
-#include <linux/gpio_keys.h>
-#include <linux/mfd/palmas.h>
-
-#include "tegra-board-id.h"
-#include "board.h"
-#include "board-macallan.h"
-#include "devices.h"
-#include "iomap.h"
-#include "wakeups-t11x.h"
-
-#define GPIO_KEY(_id, _gpio, _iswake) \
- { \
- .code = _id, \
- .gpio = TEGRA_GPIO_##_gpio, \
- .active_low = 1, \
- .desc = #_id, \
- .type = EV_KEY, \
- .wakeup = _iswake, \
- .debounce_interval = 10, \
- }
-
-static struct gpio_keys_button macallan_e1545_keys[] = {
- [0] = GPIO_KEY(KEY_POWER, PQ0, 1),
- [1] = GPIO_KEY(KEY_VOLUMEUP, PR2, 0),
- [2] = GPIO_KEY(KEY_VOLUMEDOWN, PR1, 0),
- [3] = GPIO_KEY(KEY_HOME, PI5, 0),
- [4] = GPIO_KEY(KEY_BACK, PQ2, 0), /* Todo : CAMF */
- [5] = GPIO_KEY(KEY_MENU, PR0, 0), /* Todo : CAMS */
-};
-
-static int macallan_wakeup_key(void)
-{
- int wakeup_key;
- u64 status = readl(IO_ADDRESS(TEGRA_PMC_BASE) + PMC_WAKE_STATUS)
- | (u64)readl(IO_ADDRESS(TEGRA_PMC_BASE)
- + PMC_WAKE2_STATUS) << 32;
- if (status & ((u64)1 << TEGRA_WAKE_GPIO_PQ0))
- wakeup_key = KEY_POWER;
- else if (status & ((u64)1 << TEGRA_WAKE_GPIO_PS0))
- wakeup_key = SW_LID;
- else
- wakeup_key = KEY_RESERVED;
-
- return wakeup_key;
-}
-
-static struct gpio_keys_platform_data macallan_e1545_keys_pdata = {
- .buttons = macallan_e1545_keys,
- .nbuttons = ARRAY_SIZE(macallan_e1545_keys),
- .wakeup_key = macallan_wakeup_key,
-};
-
-static struct platform_device macallan_e1545_keys_device = {
- .name = "gpio-keys",
- .id = 0,
- .dev = {
- .platform_data = &macallan_e1545_keys_pdata,
- },
-};
-
-int __init macallan_kbc_init(void)
-{
- platform_device_register(&macallan_e1545_keys_device);
-
- return 0;
-}
-
diff --git a/arch/arm/mach-tegra/board-macallan-memory.c b/arch/arm/mach-tegra/board-macallan-memory.c
deleted file mode 100644
index 400d989d37b5..000000000000
--- a/arch/arm/mach-tegra/board-macallan-memory.c
+++ /dev/null
@@ -1,2010 +0,0 @@
-/*
- * Copyright (C) 2013-2014, NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307, USA
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_data/tegra_emc_pdata.h>
-
-#include "board.h"
-#include "board-macallan.h"
-
-#include "tegra-board-id.h"
-#include "tegra11_emc.h"
-#include "devices.h"
-
-static struct tegra11_emc_table e1545_h5tc4g63mfr_pba_T40S_table[] = {
- {
- 0x41, /* Rev 4.0.3 */
- 12750, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000003e, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000060, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000018, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000005, /* EMC_TXSR */
- 0x00000005, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000004, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000064, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x800001c6, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40040001, /* MC_EMEM_ARB_CFG */
- 0x8000003f, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x77e30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000000e, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 57820, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 20400, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000026, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000005, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x0000009a, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000026, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000006, /* EMC_TXSR */
- 0x00000006, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000004, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x000000a0, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000023a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40020001, /* MC_EMEM_ARB_CFG */
- 0x80000046, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x76230303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000014, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 35610, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 40800, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000012, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000001, /* EMC_RC */
- 0x0000000a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000001, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000131, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000004c, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000008, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000000b, /* EMC_TXSR */
- 0x0000000b, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000004, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000013c, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000036b, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0xa0000001, /* MC_EMEM_ARB_CFG */
- 0x8000005b, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74a30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000002a, /* MC_PTSA_GRANT_DECREMENT */
- 0x00b000b0, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00b000c4, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00d700eb, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000eb, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00eb00eb, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00eb, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 20850, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 68000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000000a, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000003, /* EMC_RC */
- 0x00000011, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000202, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000080, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000000f, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000013, /* EMC_TXSR */
- 0x00000013, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000004, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000213, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000050e, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000001, /* MC_EMEM_ARB_CFG */
- 0x80000076, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74230403, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000046, /* MC_PTSA_GRANT_DECREMENT */
- 0x00690069, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00690075, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0081008d, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000008d, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x008d008d, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00bc008d, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000bc, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00bc00bc, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 10720, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 102000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000006, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000004, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000003, /* EMC_RAS */
- 0x00000001, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000001, /* EMC_RD_RCD */
- 0x00000001, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000018, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000001c, /* EMC_TXSR */
- 0x0000001c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000005, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000031c, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000714, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x08000001, /* MC_EMEM_ARB_CFG */
- 0x80000098, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000002, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0403, /* MC_EMEM_ARB_DA_COVERS */
- 0x73c30504, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000068, /* MC_PTSA_GRANT_DECREMENT */
- 0x00460046, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0046004e, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0056005e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000005e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x005e005e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x007d005e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000007d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x007d007d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 6890, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000009, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000007, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000032, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000038, /* EMC_TXSR */
- 0x00000038, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000009, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000638, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0006c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x05057404, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d24, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000004, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0405, /* MC_EMEM_ARB_DA_COVERS */
- 0x73840a06, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0006c000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 3420, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 312000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000000e, /* EMC_RC */
- 0x00000050, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000009, /* EMC_RAS */
- 0x00000003, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x00000009, /* EMC_W2P */
- 0x00000003, /* EMC_RD_RCD */
- 0x00000003, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000945, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000251, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000004d, /* EMC_AR2PDEN */
- 0x0000000e, /* EMC_RW2PDEN */
- 0x00000055, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x0000000d, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000986, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0171000c, /* EMC_MRS_WAIT_CNT */
- 0x0171000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001395, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0b000004, /* MC_EMEM_ARB_CFG */
- 0x8000016a, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000006, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000b0607, /* MC_EMEM_ARB_DA_COVERS */
- 0x76e50f08, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00028000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00014000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00014000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00028000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00014000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00014000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00028000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000140, /* MC_PTSA_GRANT_DECREMENT */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00170019, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x001c001e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000001e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x001e001e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0029001e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000029, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00290029, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff0082, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x5320000e, /* EMC_CFG */
- 0x80000321, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 2180, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000012, /* EMC_RC */
- 0x00000069, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000d, /* EMC_RAS */
- 0x00000004, /* EMC_RP */
- 0x00000005, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000c, /* EMC_W2P */
- 0x00000004, /* EMC_RD_RCD */
- 0x00000004, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000c2f, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000030b, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000066, /* EMC_AR2PDEN */
- 0x00000011, /* EMC_RW2PDEN */
- 0x0000006f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000011, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000c70, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c0080, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00028000, /* EMC_DLL_XFORM_DQS4 */
- 0x00028000, /* EMC_DLL_XFORM_DQS5 */
- 0x00028000, /* EMC_DLL_XFORM_DQS6 */
- 0x00028000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001944, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000008, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000e070a, /* MC_EMEM_ARB_DA_COVERS */
- 0x7547130b, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00028000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00014000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00014000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00028000, /* EMC_DLL_XFORM_DQS1 */
- 0x00028000, /* EMC_DLL_XFORM_DQS2 */
- 0x00028000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00028000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00014000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00014000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00028000, /* EMC_DLL_XFORM_DQS1 */
- 0x00028000, /* EMC_DLL_XFORM_DQS2 */
- 0x00028000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200006, /* EMC_CFG */
- 0x80000731, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 624000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000001d, /* EMC_RC */
- 0x000000a1, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000014, /* EMC_RAS */
- 0x00000007, /* EMC_RP */
- 0x00000007, /* EMC_R2W */
- 0x0000000b, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x00000010, /* EMC_W2P */
- 0x00000007, /* EMC_RD_RCD */
- 0x00000007, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x0000000b, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000007, /* EMC_QRST */
- 0x00000012, /* EMC_RDV_MASK */
- 0x000012cb, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000004b2, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000d, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000009c, /* EMC_AR2PDEN */
- 0x00000015, /* EMC_RW2PDEN */
- 0x000000a9, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000019, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000006, /* EMC_TCLKSTABLE */
- 0x00000007, /* EMC_TCLKSTOP */
- 0x0000130b, /* EMC_TREFBW */
- 0x0000000a, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf00d0191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS4 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS5 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS6 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0122000c, /* EMC_MRS_WAIT_CNT */
- 0x0122000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80002626, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x06000009, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000009, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000b, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_W2R */
- 0x07050202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00130b0f, /* MC_EMEM_ARB_DA_COVERS */
- 0x736a1d10, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS1 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000009, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x0028a28a, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS1 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS2 */
- 0x007fc00a, /* EMC_DLL_XFORM_DQS3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000009, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000013f, /* MC_PTSA_GRANT_DECREMENT */
- 0x000b000b, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000e000f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000f000f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0014000f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000014, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00140014, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x008a0041, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x008a008a, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200000, /* EMC_CFG */
- 0x80000b61, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200010, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1230, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 792000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000025, /* EMC_RC */
- 0x000000cd, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000001a, /* EMC_RAS */
- 0x00000009, /* EMC_RP */
- 0x00000008, /* EMC_R2W */
- 0x0000000d, /* EMC_W2R */
- 0x00000004, /* EMC_R2P */
- 0x00000013, /* EMC_W2P */
- 0x00000009, /* EMC_RD_RCD */
- 0x00000009, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000006, /* EMC_WDV */
- 0x00000006, /* EMC_WDV_MASK */
- 0x0000000b, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000008, /* EMC_QRST */
- 0x00000014, /* EMC_RDV_MASK */
- 0x000017ee, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000005fb, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000003, /* EMC_PDEX2WR */
- 0x00000012, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x000000c6, /* EMC_AR2PDEN */
- 0x00000018, /* EMC_RW2PDEN */
- 0x000000d7, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000020, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000007, /* EMC_TCLKSTABLE */
- 0x00000008, /* EMC_TCLKSTOP */
- 0x0000182f, /* EMC_TREFBW */
- 0x0000000a, /* EMC_QUSE_EXTRA */
- 0x80000000, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf0070191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00000008, /* EMC_DLL_XFORM_DQS4 */
- 0x00000008, /* EMC_DLL_XFORM_DQS5 */
- 0x00000008, /* EMC_DLL_XFORM_DQS6 */
- 0x00000008, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07076604, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x00f8000c, /* EMC_MRS_WAIT_CNT */
- 0x00f8000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000302b, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0e00000b, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000013, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000008, /* MC_EMEM_ARB_TIMING_W2R */
- 0x08060202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00160d13, /* MC_EMEM_ARB_DA_COVERS */
- 0x734c2414, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000008, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000008, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000b0b, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS1 */
- 0x00000008, /* EMC_DLL_XFORM_DQS2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000008, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410400, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000008, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000b0b, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS1 */
- 0x00000008, /* EMC_DLL_XFORM_DQS2 */
- 0x00000008, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000196, /* MC_PTSA_GRANT_DECREMENT */
- 0x00090009, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0009000a, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000c, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000c000c, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0010000c, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000010, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00100010, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x006d0033, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x006d006d, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x00000001, /* EMC_AUTO_CAL_INTERVAL */
- 0x53200000, /* EMC_CFG */
- 0x80000d71, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200418, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1200, /* expected dvfs latency (ns) */
- },
-};
-
-static struct tegra11_emc_pdata e1545_h5tc4g63mfr_pba_T40S_pdata = {
- .description = "e1545_h5tc4g63mfr_pba_T40S",
- .tables = e1545_h5tc4g63mfr_pba_T40S_table,
- .num_tables = ARRAY_SIZE(e1545_h5tc4g63mfr_pba_T40S_table),
-};
-
-static struct tegra11_emc_pdata *macallan_get_emc_data(void)
-{
- return &e1545_h5tc4g63mfr_pba_T40S_pdata;
-}
-
-int __init macallan_emc_init(void)
-{
- tegra_emc_device.dev.platform_data = macallan_get_emc_data();
- platform_device_register(&tegra_emc_device);
- tegra11_emc_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-macallan-panel.c b/arch/arm/mach-tegra/board-macallan-panel.c
deleted file mode 100644
index 36d7d758cc37..000000000000
--- a/arch/arm/mach-tegra/board-macallan-panel.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-macallan-panel.c
- *
- * Copyright (c) 2013, NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#include <linux/ioport.h>
-#include <linux/fb.h>
-#include <linux/nvmap.h>
-#include <linux/nvhost.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/tegra_pwm_bl.h>
-#include <linux/regulator/consumer.h>
-#include <linux/pwm_backlight.h>
-
-#include <mach/irqs.h>
-#include <mach/dc.h>
-
-#include "board.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "board-panel.h"
-#include "common.h"
-#include "iomap.h"
-#include "tegra11_host1x_devices.h"
-
-#define DSI_PANEL_RST_GPIO TEGRA_GPIO_PH5
-#define DSI_PANEL_BL_PWM_GPIO TEGRA_GPIO_PH1
-
-struct platform_device * __init macallan_host1x_init(void)
-{
- struct platform_device *pdev = NULL;
-
-#ifdef CONFIG_TEGRA_GRHOST
- if (!of_have_populated_dt())
- pdev = tegra11_register_host1x_devices();
- else
- pdev = to_platform_device(bus_find_device_by_name(
- &platform_bus_type, NULL, "host1x"));
-#endif
- return pdev;
-}
-
-#ifdef CONFIG_TEGRA_DC
-
-/* HDMI Hotplug detection pin */
-#define macallan_hdmi_hpd TEGRA_GPIO_PN7
-
-static struct regulator *macallan_hdmi_reg;
-static struct regulator *macallan_hdmi_pll;
-static struct regulator *macallan_hdmi_vddio;
-
-static struct resource macallan_disp1_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_GENERAL,
- .end = INT_DISPLAY_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY_BASE,
- .end = TEGRA_DISPLAY_BASE + TEGRA_DISPLAY_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by macallan_panel_init() */
- .end = 0, /* Filled in by macallan_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "ganged_dsia_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "ganged_dsib_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "dsi_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "mipi_cal",
- .start = TEGRA_MIPI_CAL_BASE,
- .end = TEGRA_MIPI_CAL_BASE + TEGRA_MIPI_CAL_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource macallan_disp2_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_B_GENERAL,
- .end = INT_DISPLAY_B_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY2_BASE,
- .end = TEGRA_DISPLAY2_BASE + TEGRA_DISPLAY2_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by macallan_panel_init() */
- .end = 0, /* Filled in by macallan_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "hdmi_regs",
- .start = TEGRA_HDMI_BASE,
- .end = TEGRA_HDMI_BASE + TEGRA_HDMI_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-
-static struct tegra_dc_sd_settings sd_settings;
-
-static struct tegra_dc_out macallan_disp1_out = {
- .type = TEGRA_DC_OUT_DSI,
- .sd_settings = &sd_settings,
-};
-
-static int macallan_hdmi_enable(struct device *dev)
-{
- int ret;
- if (!macallan_hdmi_reg) {
- macallan_hdmi_reg = regulator_get(dev, "avdd_hdmi");
- if (IS_ERR(macallan_hdmi_reg)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi\n");
- macallan_hdmi_reg = NULL;
- return PTR_ERR(macallan_hdmi_reg);
- }
- }
- ret = regulator_enable(macallan_hdmi_reg);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi\n");
- return ret;
- }
- if (!macallan_hdmi_pll) {
- macallan_hdmi_pll = regulator_get(dev, "avdd_hdmi_pll");
- if (IS_ERR(macallan_hdmi_pll)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi_pll\n");
- macallan_hdmi_pll = NULL;
- regulator_put(macallan_hdmi_reg);
- macallan_hdmi_reg = NULL;
- return PTR_ERR(macallan_hdmi_pll);
- }
- }
- ret = regulator_enable(macallan_hdmi_pll);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi_pll\n");
- return ret;
- }
- return 0;
-}
-
-static int macallan_hdmi_disable(void)
-{
- if (macallan_hdmi_reg) {
- regulator_disable(macallan_hdmi_reg);
- regulator_put(macallan_hdmi_reg);
- macallan_hdmi_reg = NULL;
- }
-
- if (macallan_hdmi_pll) {
- regulator_disable(macallan_hdmi_pll);
- regulator_put(macallan_hdmi_pll);
- macallan_hdmi_pll = NULL;
- }
-
- return 0;
-}
-
-static int macallan_hdmi_postsuspend(void)
-{
- if (macallan_hdmi_vddio) {
- regulator_disable(macallan_hdmi_vddio);
- regulator_put(macallan_hdmi_vddio);
- macallan_hdmi_vddio = NULL;
- }
- return 0;
-}
-
-static int macallan_hdmi_hotplug_init(struct device *dev)
-{
- int e = 0;
-
- if (!macallan_hdmi_vddio) {
- macallan_hdmi_vddio = regulator_get(dev, "vdd_hdmi_5v0");
- if (WARN_ON(IS_ERR(macallan_hdmi_vddio))) {
- e = PTR_ERR(macallan_hdmi_vddio);
- pr_err("%s: couldn't get regulator vdd_hdmi_5v0: %d\n",
- __func__, e);
- macallan_hdmi_vddio = NULL;
- } else {
- e = regulator_enable(macallan_hdmi_vddio);
- mdelay(5);
- }
- }
-
- return e;
-}
-
-static struct tegra_dc_out macallan_disp2_out = {
- .type = TEGRA_DC_OUT_HDMI,
- .flags = TEGRA_DC_OUT_HOTPLUG_HIGH,
- .parent_clk = "pll_d2_out0",
-
- .ddc_bus = 3,
- .hotplug_gpio = macallan_hdmi_hpd,
-
- .max_pixclock = KHZ2PICOS(297000),
-
- .align = TEGRA_DC_ALIGN_MSB,
- .order = TEGRA_DC_ORDER_RED_BLUE,
-
- .enable = macallan_hdmi_enable,
- .disable = macallan_hdmi_disable,
- .postsuspend = macallan_hdmi_postsuspend,
- .hotplug_init = macallan_hdmi_hotplug_init,
-};
-
-static struct tegra_fb_data macallan_disp1_fb_data = {
- .win = 0,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
-};
-
-static struct tegra_dc_platform_data macallan_disp1_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &macallan_disp1_out,
- .fb = &macallan_disp1_fb_data,
- .emc_clk_rate = 204000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
-#endif
-};
-
-static struct tegra_fb_data macallan_disp2_fb_data = {
- .win = 0,
- .xres = 1024,
- .yres = 600,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
-};
-
-static struct tegra_dc_platform_data macallan_disp2_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &macallan_disp2_out,
- .fb = &macallan_disp2_fb_data,
- .emc_clk_rate = 300000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
-#endif
-};
-
-static struct platform_device macallan_disp2_device = {
- .name = "tegradc",
- .id = 1,
- .resource = macallan_disp2_resources,
- .num_resources = ARRAY_SIZE(macallan_disp2_resources),
- .dev = {
- .platform_data = &macallan_disp2_pdata,
- },
-};
-
-static struct platform_device macallan_disp1_device = {
- .name = "tegradc",
- .id = 0,
- .resource = macallan_disp1_resources,
- .num_resources = ARRAY_SIZE(macallan_disp1_resources),
- .dev = {
- .platform_data = &macallan_disp1_pdata,
- },
-};
-
-static struct nvmap_platform_carveout macallan_carveouts[] = {
- [0] = {
- .name = "iram",
- .usage_mask = NVMAP_HEAP_CARVEOUT_IRAM,
- .base = TEGRA_IRAM_BASE + TEGRA_RESET_HANDLER_SIZE,
- .size = TEGRA_IRAM_SIZE - TEGRA_RESET_HANDLER_SIZE,
- },
- [1] = {
- .name = "generic-0",
- .usage_mask = NVMAP_HEAP_CARVEOUT_GENERIC,
- .base = 0, /* Filled in by macallan_panel_init() */
- .size = 0, /* Filled in by macallan_panel_init() */
- },
- [2] = {
- .name = "vpr",
- .usage_mask = NVMAP_HEAP_CARVEOUT_VPR,
- .base = 0, /* Filled in by macallan_panel_init() */
- .size = 0, /* Filled in by macallan_panel_init() */
- },
-};
-
-static struct nvmap_platform_data macallan_nvmap_data = {
- .carveouts = macallan_carveouts,
- .nr_carveouts = ARRAY_SIZE(macallan_carveouts),
-};
-static struct platform_device macallan_nvmap_device = {
- .name = "tegra-nvmap",
- .id = -1,
- .dev = {
- .platform_data = &macallan_nvmap_data,
- },
-};
-
-static void macallan_panel_select(void)
-{
- struct tegra_panel *panel = NULL;
- struct board_info board;
- u8 dsi_instance = DSI_INSTANCE_0;
-
- tegra_get_display_board_info(&board);
-
- switch (board.board_id) {
- case BOARD_E1639:
- panel = &dsi_s_wqxga_10_1;
- break;
- default:
- panel = &dsi_p_wuxga_10_1;
- break;
- }
- if (panel) {
- if (panel->init_sd_settings)
- panel->init_sd_settings(&sd_settings);
-
- if (panel->init_dc_out) {
- panel->init_dc_out(&macallan_disp1_out);
- macallan_disp1_out.dsi->dsi_instance = dsi_instance;
- macallan_disp1_out.dsi->dsi_panel_rst_gpio =
- DSI_PANEL_RST_GPIO;
- macallan_disp1_out.dsi->dsi_panel_bl_pwm_gpio =
- DSI_PANEL_BL_PWM_GPIO;
- }
-
- if (panel->init_fb_data)
- panel->init_fb_data(&macallan_disp1_fb_data);
-
- if (panel->init_cmu_data)
- panel->init_cmu_data(&macallan_disp1_pdata);
-
- if (panel->set_disp_device)
- panel->set_disp_device(&macallan_disp1_device);
-
- tegra_dsi_resources_init(dsi_instance, macallan_disp1_resources,
- ARRAY_SIZE(macallan_disp1_resources));
-
- if (panel->register_bl_dev)
- panel->register_bl_dev();
-
- if (panel->register_i2c_bridge)
- panel->register_i2c_bridge();
- }
-
-}
-int __init macallan_panel_init(void)
-{
- int err = 0;
- struct resource __maybe_unused *res;
- struct platform_device *phost1x = NULL;
-
- macallan_panel_select();
-
-#ifdef CONFIG_TEGRA_NVMAP
- macallan_carveouts[1].base = tegra_carveout_start;
- macallan_carveouts[1].size = tegra_carveout_size;
- macallan_carveouts[2].base = tegra_vpr_start;
- macallan_carveouts[2].size = tegra_vpr_size;
-
- err = platform_device_register(&macallan_nvmap_device);
- if (err) {
- pr_err("nvmap device registration failed\n");
- return err;
- }
-#endif
-
- phost1x = macallan_host1x_init();
- if (!phost1x) {
- pr_err("host1x devices registration failed\n");
- return -EINVAL;
- }
-
- res = platform_get_resource_byname(&macallan_disp1_device,
- IORESOURCE_MEM, "fbmem");
- res->start = tegra_fb_start;
- res->end = tegra_fb_start + tegra_fb_size - 1;
-
- /* Copy the bootloader fb to the fb. */
- __tegra_move_framebuffer(&macallan_nvmap_device,
- tegra_fb_start, tegra_bootloader_fb_start,
- min(tegra_fb_size, tegra_bootloader_fb_size));
-
- macallan_disp1_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&macallan_disp1_device);
- if (err) {
- pr_err("disp1 device registration failed\n");
- return err;
- }
-
- err = tegra_init_hdmi(&macallan_disp2_device, phost1x);
- if (err)
- return err;
-
-#ifdef CONFIG_TEGRA_NVAVP
- nvavp_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&nvavp_device);
- if (err) {
- pr_err("nvavp device registration failed\n");
- return err;
- }
-#endif
- return err;
-}
-#else
-int __init macallan_panel_init(void)
-{
- if (macallan_host1x_init())
- return 0;
- else
- return -EINVAL;
-}
-#endif
diff --git a/arch/arm/mach-tegra/board-macallan-power.c b/arch/arm/mach-tegra/board-macallan-power.c
deleted file mode 100644
index a6c022e26fc8..000000000000
--- a/arch/arm/mach-tegra/board-macallan-power.c
+++ /dev/null
@@ -1,890 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-macallan-power.c
- *
- * Copyright (C) 2012-2014 NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/i2c.h>
-#include <linux/pda_power.h>
-#include <linux/platform_device.h>
-#include <linux/resource.h>
-#include <linux/io.h>
-#include <linux/regulator/machine.h>
-#include <linux/regulator/driver.h>
-#include <linux/regulator/fixed.h>
-#include <linux/mfd/palmas.h>
-#include <linux/power/bq2419x-charger.h>
-#include <linux/max17048_battery.h>
-#include <linux/power/power_supply_extcon.h>
-#include <linux/gpio.h>
-#include <linux/interrupt.h>
-#include <linux/regulator/userspace-consumer.h>
-#include <linux/pid_thermal_gov.h>
-#include <linux/tegra-soc.h>
-#include <linux/tegra-pmc.h>
-
-#include <asm/mach-types.h>
-#include <linux/power/sbs-battery.h>
-
-#include <mach/irqs.h>
-#include <mach/edp.h>
-#include <mach/gpio-tegra.h>
-
-#include "cpu-tegra.h"
-#include "pm.h"
-#include "tegra-board-id.h"
-#include "board-pmu-defines.h"
-#include "board.h"
-#include "gpio-names.h"
-#include "board-common.h"
-#include "board-macallan.h"
-#include "tegra_cl_dvfs.h"
-#include "devices.h"
-#include "tegra11_soctherm.h"
-#include "iomap.h"
-#include "battery-ini-model-data.h"
-
-#define PMC_CTRL 0x0
-#define PMC_CTRL_INTR_LOW (1 << 17)
-
-/* BQ2419X VBUS regulator */
-static struct regulator_consumer_supply bq2419x_vbus_supply[] = {
- REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.0"),
- REGULATOR_SUPPLY("usb_vbus", "tegra-otg"),
-};
-
-static struct regulator_consumer_supply bq2419x_batt_supply[] = {
- REGULATOR_SUPPLY("usb_bat_chg", "tegra-udc.0"),
-};
-
-static struct bq2419x_vbus_platform_data macallan_bq2419x_vbus_pdata = {
- .num_consumer_supplies = ARRAY_SIZE(bq2419x_vbus_supply),
- .consumer_supplies = bq2419x_vbus_supply,
-};
-
-struct bq2419x_charger_platform_data macallan_bq2419x_charger_pdata = {
- .max_charge_current_mA = 3000,
- .termination_current_limit_mA = 100,
- .consumer_supplies = bq2419x_batt_supply,
- .num_consumer_supplies = ARRAY_SIZE(bq2419x_batt_supply),
- .wdt_timeout = 40,
- .rtc_alarm_time = 3600,
- .chg_restart_time = 1800,
-};
-
-struct max17048_platform_data macallan_max17048_pdata = {
- .model_data = &macallan_yoku_4100mA_max17048_battery,
-};
-
-static struct i2c_board_info __initdata macallan_max17048_boardinfo[] = {
- {
- I2C_BOARD_INFO("max17048", 0x36),
- .platform_data = &macallan_max17048_pdata,
- },
-};
-
-struct bq2419x_platform_data macallan_bq2419x_pdata = {
- .vbus_pdata = &macallan_bq2419x_vbus_pdata,
- .bcharger_pdata = &macallan_bq2419x_charger_pdata,
-};
-
-static struct i2c_board_info __initdata bq2419x_boardinfo[] = {
- {
- I2C_BOARD_INFO("bq2419x", 0x6b),
- .platform_data = &macallan_bq2419x_pdata,
- },
-};
-
-static struct power_supply_extcon_plat_data psy_extcon_pdata = {
- .extcon_name = "tegra-udc",
-};
-
-static struct platform_device psy_extcon_device = {
- .name = "power-supply-extcon",
- .id = -1,
- .dev = {
- .platform_data = &psy_extcon_pdata,
- },
-};
-
-/************************ Macallan based regulator ****************/
-static struct regulator_consumer_supply palmas_smps123_supply[] = {
- REGULATOR_SUPPLY("vdd_cpu", NULL),
-};
-
-static struct regulator_consumer_supply palmas_smps45_supply[] = {
- REGULATOR_SUPPLY("vdd_core", NULL),
- REGULATOR_SUPPLY("vdd_core", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("vdd_core", "sdhci-tegra.3"),
-};
-
-static struct regulator_consumer_supply palmas_smps6_supply[] = {
- REGULATOR_SUPPLY("vdd_lcd_hv", NULL),
- REGULATOR_SUPPLY("avdd_lcd", NULL),
- REGULATOR_SUPPLY("avdd", "spi0.0"),
-};
-
-static struct regulator_consumer_supply palmas_smps7_supply[] = {
- REGULATOR_SUPPLY("vddio_ddr", NULL),
-};
-
-static struct regulator_consumer_supply palmas_smps8_supply[] = {
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_osc", NULL),
- REGULATOR_SUPPLY("vddio_sys", NULL),
- REGULATOR_SUPPLY("vddio_bb", NULL),
- REGULATOR_SUPPLY("pwrdet_bb", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("pwrdet_sdmmc1", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("vdd_emmc", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("pwrdet_sdmmc4", NULL),
- REGULATOR_SUPPLY("vddio_audio", NULL),
- REGULATOR_SUPPLY("pwrdet_audio", NULL),
- REGULATOR_SUPPLY("vddio_uart", NULL),
- REGULATOR_SUPPLY("pwrdet_uart", NULL),
- REGULATOR_SUPPLY("vddio_gmi", NULL),
- REGULATOR_SUPPLY("pwrdet_nand", NULL),
- REGULATOR_SUPPLY("vlogic", "0-0069"),
- REGULATOR_SUPPLY("vid", "0-000d"),
- REGULATOR_SUPPLY("vddio", "0-0078"),
- REGULATOR_SUPPLY("vdd", "0-004c"),
-};
-
-static struct regulator_consumer_supply palmas_smps9_supply[] = {
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("vddio_hv", "tegradc.1"),
- REGULATOR_SUPPLY("pwrdet_hv", NULL),
-};
-
-static struct regulator_consumer_supply palmas_smps10_out1_supply[] = {
-};
-
-static struct regulator_consumer_supply palmas_ldo1_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "vi"),
- REGULATOR_SUPPLY("avdd_pllm", NULL),
- REGULATOR_SUPPLY("avdd_pllu", NULL),
- REGULATOR_SUPPLY("avdd_plla_p_c", NULL),
- REGULATOR_SUPPLY("avdd_pllx", NULL),
- REGULATOR_SUPPLY("vdd_ddr_hs", NULL),
- REGULATOR_SUPPLY("avdd_plle", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo2_supply[] = {
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "vi"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.1"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.2"),
- REGULATOR_SUPPLY("pwrdet_mipi", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo3_supply[] = {
- REGULATOR_SUPPLY("vpp_fuse", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo4_supply[] = {
- REGULATOR_SUPPLY("vdd_1v2_cam", NULL),
- REGULATOR_SUPPLY("dvdd", "2-0010"),
- REGULATOR_SUPPLY("vdig", "2-0036"),
-};
-
-static struct regulator_consumer_supply palmas_ldo5_supply[] = {
- REGULATOR_SUPPLY("avdd_cam2", NULL),
- REGULATOR_SUPPLY("avdd", "2-0010"),
-};
-
-static struct regulator_consumer_supply palmas_ldo5_e1569_supply[] = {
- REGULATOR_SUPPLY("avdd_cam2", NULL),
- REGULATOR_SUPPLY("avdd", "2-0010"),
- REGULATOR_SUPPLY("vdd_af_cam1", NULL),
- REGULATOR_SUPPLY("vdd", "2-000e"),
-};
-
-static struct regulator_consumer_supply palmas_ldo6_supply[] = {
- REGULATOR_SUPPLY("vdd", "0-0069"),
- REGULATOR_SUPPLY("vdd", "0-000d"),
- REGULATOR_SUPPLY("vdd", "0-0078"),
-};
-
-static struct regulator_consumer_supply palmas_ldo7_supply[] = {
- REGULATOR_SUPPLY("avdd_2v8_cam_af", NULL),
- REGULATOR_SUPPLY("vdd_af_cam1", NULL),
- REGULATOR_SUPPLY("avdd_cam1", NULL),
- REGULATOR_SUPPLY("vana", "2-0036"),
- REGULATOR_SUPPLY("vdd", "2-000e"),
-};
-
-static struct regulator_consumer_supply palmas_ldo7_e1569_supply[] = {
- REGULATOR_SUPPLY("avdd_2v8_cam_af", NULL),
- REGULATOR_SUPPLY("avdd_cam1", NULL),
- REGULATOR_SUPPLY("vana", "2-0036"),
-};
-
-static struct regulator_consumer_supply palmas_ldo8_supply[] = {
- REGULATOR_SUPPLY("vdd_rtc", NULL),
-};
-static struct regulator_consumer_supply palmas_ldo9_supply[] = {
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.2"),
- REGULATOR_SUPPLY("pwrdet_sdmmc3", NULL),
-};
-static struct regulator_consumer_supply palmas_ldoln_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"),
-};
-
-static struct regulator_consumer_supply palmas_ldousb_supply[] = {
- REGULATOR_SUPPLY("avdd_usb", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("hvdd_usb", "tegra-ehci.2"),
-
-};
-
-static struct regulator_consumer_supply palmas_regen1_supply[] = {
-};
-
-static struct regulator_consumer_supply palmas_regen2_supply[] = {
-};
-
-PALMAS_REGS_PDATA(smps123, 900, 1350, NULL, 0, 0, 0, 0,
- 0, PALMAS_EXT_CONTROL_ENABLE1, 0, 0, 0);
-PALMAS_REGS_PDATA(smps45, 900, 1400, NULL, 0, 0, 0, 0,
- 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0);
-PALMAS_REGS_PDATA(smps6, 3200, 3200, NULL, 0, 0, 1, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps7, 1350, 1350, NULL, 0, 0, 1, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps8, 1800, 1800, NULL, 1, 1, 1, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps9, 2900, 2900, NULL, 1, 0, 1, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps10_out1, 5000, 5000, NULL, 0, 0, 0, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo1, 1050, 1050, palmas_rails(smps7), 1, 0, 1, 0,
- 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo2, 1200, 1200, palmas_rails(smps7), 0, 1, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo3, 1800, 1800, NULL, 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo4, 1200, 1200, palmas_rails(smps8), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo5, 2800, 2800, palmas_rails(smps9), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo6, 2850, 2850, palmas_rails(smps9), 1, 1, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo7, 2700, 2700, palmas_rails(smps9), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo8, 950, 950, NULL, 1, 1, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo9, 1800, 2900, palmas_rails(smps9), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldoln, 3300, 3300, NULL, 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldousb, 3300, 3300, NULL, 0, 0, 1, 0,
- 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0);
-PALMAS_REGS_PDATA(regen1, 4200, 4200, NULL, 0, 0, 0, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(regen2, 4200, 4200, palmas_rails(smps8), 0, 0, 0, 0,
- 0, 0, 0, 0, 0);
-
-#define PALMAS_REG_PDATA(_sname) (&reg_idata_##_sname)
-static struct regulator_init_data *macallan_reg_data[PALMAS_NUM_REGS] = {
- NULL,
- PALMAS_REG_PDATA(smps123),
- NULL,
- PALMAS_REG_PDATA(smps45),
- NULL,
- PALMAS_REG_PDATA(smps6),
- PALMAS_REG_PDATA(smps7),
- PALMAS_REG_PDATA(smps8),
- PALMAS_REG_PDATA(smps9),
- NULL,
- PALMAS_REG_PDATA(smps10_out1),
- PALMAS_REG_PDATA(ldo1),
- PALMAS_REG_PDATA(ldo2),
- PALMAS_REG_PDATA(ldo3),
- PALMAS_REG_PDATA(ldo4),
- PALMAS_REG_PDATA(ldo5),
- PALMAS_REG_PDATA(ldo6),
- PALMAS_REG_PDATA(ldo7),
- PALMAS_REG_PDATA(ldo8),
- PALMAS_REG_PDATA(ldo9),
- PALMAS_REG_PDATA(ldoln),
- PALMAS_REG_PDATA(ldousb),
- PALMAS_REG_PDATA(regen1),
- PALMAS_REG_PDATA(regen2),
- NULL,
- NULL,
- NULL,
-};
-
-#define PALMAS_REG_INIT_DATA(_sname) (&reg_init_data_##_sname)
-static struct palmas_reg_init *macallan_reg_init[PALMAS_NUM_REGS] = {
- NULL,
- PALMAS_REG_INIT_DATA(smps123),
- NULL,
- PALMAS_REG_INIT_DATA(smps45),
- NULL,
- PALMAS_REG_INIT_DATA(smps6),
- PALMAS_REG_INIT_DATA(smps7),
- PALMAS_REG_INIT_DATA(smps8),
- PALMAS_REG_INIT_DATA(smps9),
- NULL,
- PALMAS_REG_INIT_DATA(smps10_out1),
- PALMAS_REG_INIT_DATA(ldo1),
- PALMAS_REG_INIT_DATA(ldo2),
- PALMAS_REG_INIT_DATA(ldo3),
- PALMAS_REG_INIT_DATA(ldo4),
- PALMAS_REG_INIT_DATA(ldo5),
- PALMAS_REG_INIT_DATA(ldo6),
- PALMAS_REG_INIT_DATA(ldo7),
- PALMAS_REG_INIT_DATA(ldo8),
- PALMAS_REG_INIT_DATA(ldo9),
- PALMAS_REG_INIT_DATA(ldoln),
- PALMAS_REG_INIT_DATA(ldousb),
- PALMAS_REG_INIT_DATA(regen1),
- PALMAS_REG_INIT_DATA(regen2),
- NULL,
- NULL,
- NULL,
-};
-
-static struct palmas_pmic_platform_data pmic_platform = {
- .disable_smps10_boost_suspend = true,
-};
-
-static struct palmas_pinctrl_config palmas_pincfg[] = {
- PALMAS_PINMUX("powergood", "powergood", NULL, NULL),
- PALMAS_PINMUX("vac", "vac", NULL, NULL),
- PALMAS_PINMUX("gpio0", "id", "pull-up", NULL),
- PALMAS_PINMUX("gpio1", "vbus_det", NULL, NULL),
- PALMAS_PINMUX("gpio2", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio3", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio4", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio5", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio6", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio7", "gpio", NULL, NULL),
-};
-
-static struct palmas_pinctrl_platform_data palmas_pinctrl_pdata = {
- .pincfg = palmas_pincfg,
- .num_pinctrl = ARRAY_SIZE(palmas_pincfg),
- .dvfs1_enable = true,
- .dvfs2_enable = false,
-};
-
-static struct palmas_extcon_platform_data palmas_extcon_pdata = {
- .connection_name = "palmas-extcon",
- .enable_vbus_detection = true,
- .enable_id_pin_detection = true,
-};
-
-static struct palmas_platform_data palmas_pdata = {
- .gpio_base = PALMAS_TEGRA_GPIO_BASE,
- .irq_base = PALMAS_TEGRA_IRQ_BASE,
- .pmic_pdata = &pmic_platform,
- .pinctrl_pdata = &palmas_pinctrl_pdata,
- .extcon_pdata = &palmas_extcon_pdata,
-};
-
-static struct i2c_board_info palma_device[] = {
- {
- I2C_BOARD_INFO("tps65913", 0x58),
- .irq = INT_EXTERNAL_PMU,
- .platform_data = &palmas_pdata,
- },
-};
-
-static struct regulator_consumer_supply fixed_reg_dvdd_lcd_1v8_supply[] = {
- REGULATOR_SUPPLY("dvdd_lcd", NULL),
-};
-
-static struct regulator_consumer_supply fixed_reg_vdd_lcd_bl_en_supply[] = {
- REGULATOR_SUPPLY("vdd_lcd_bl_en", NULL),
-};
-
-/* EN_1V8_TS From TEGRA_GPIO_PH4 */
-static struct regulator_consumer_supply fixed_reg_dvdd_ts_supply[] = {
- REGULATOR_SUPPLY("dvdd", "spi0.0"),
-};
-
-/* ENABLE 5v0 for HDMI */
-static struct regulator_consumer_supply fixed_reg_vdd_hdmi_5v0_supply[] = {
- REGULATOR_SUPPLY("vdd_hdmi_5v0", "tegradc.1"),
-};
-
-static struct regulator_consumer_supply fixed_reg_vddio_sd_slot_supply[] = {
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.2"),
-};
-
-static struct regulator_consumer_supply fixed_reg_vd_cam_1v8_supply[] = {
- REGULATOR_SUPPLY("vdd_cam_1v8", NULL),
- REGULATOR_SUPPLY("vi2c", "2-0030"),
- REGULATOR_SUPPLY("vif", "2-0036"),
- REGULATOR_SUPPLY("dovdd", "2-0010"),
- REGULATOR_SUPPLY("vdd_i2c", "2-000e"),
- REGULATOR_SUPPLY("vddio_cam", "vi"),
- REGULATOR_SUPPLY("pwrdet_cam", NULL),
-};
-
-/* Macro for defining fixed regulator sub device data */
-#define FIXED_SUPPLY(_name) "fixed_reg_"#_name
-#define FIXED_REG(_id, _var, _name, _in_supply, _always_on, _boot_on, \
- _gpio_nr, _open_drain, _active_high, _boot_state, _millivolts) \
- static struct regulator_init_data ri_data_##_var = \
- { \
- .supply_regulator = _in_supply, \
- .num_consumer_supplies = \
- ARRAY_SIZE(fixed_reg_##_name##_supply), \
- .consumer_supplies = fixed_reg_##_name##_supply, \
- .constraints = { \
- .valid_modes_mask = (REGULATOR_MODE_NORMAL | \
- REGULATOR_MODE_STANDBY), \
- .valid_ops_mask = (REGULATOR_CHANGE_MODE | \
- REGULATOR_CHANGE_STATUS | \
- REGULATOR_CHANGE_VOLTAGE), \
- .always_on = _always_on, \
- .boot_on = _boot_on, \
- }, \
- }; \
- static struct fixed_voltage_config fixed_reg_##_var##_pdata = \
- { \
- .supply_name = FIXED_SUPPLY(_name), \
- .microvolts = _millivolts * 1000, \
- .gpio = _gpio_nr, \
- .gpio_is_open_drain = _open_drain, \
- .enable_high = _active_high, \
- .enabled_at_boot = _boot_state, \
- .init_data = &ri_data_##_var, \
- }; \
- static struct platform_device fixed_reg_##_var##_dev = { \
- .name = "reg-fixed-voltage", \
- .id = _id, \
- .dev = { \
- .platform_data = &fixed_reg_##_var##_pdata, \
- }, \
- }
-
-/*
- * Creating the fixed regulator device table
- */
-
-FIXED_REG(1, dvdd_lcd_1v8, dvdd_lcd_1v8,
- palmas_rails(smps8), 0, 1,
- PALMAS_TEGRA_GPIO_BASE + PALMAS_GPIO4, false, true, 1, 1800);
-
-FIXED_REG(2, vdd_lcd_bl_en, vdd_lcd_bl_en,
- NULL, 0, 1,
- TEGRA_GPIO_PH2, false, true, 1, 3700);
-
-FIXED_REG(3, dvdd_ts, dvdd_ts,
- palmas_rails(smps8), 0, 0,
- TEGRA_GPIO_PH4, false, false, 1, 1800);
-
-FIXED_REG(4, vdd_hdmi_5v0, vdd_hdmi_5v0,
- palmas_rails(smps10_out1), 0, 0,
- TEGRA_GPIO_PK6, true, true, 0, 5000);
-
-FIXED_REG(5, vddio_sd_slot, vddio_sd_slot,
- palmas_rails(smps9), 0, 0,
- TEGRA_GPIO_PK1, false, true, 0, 2900);
-
-FIXED_REG(6, vd_cam_1v8, vd_cam_1v8,
- palmas_rails(smps8), 0, 0,
- PALMAS_TEGRA_GPIO_BASE + PALMAS_GPIO6, false, true, 0, 1800);
-
-#define ADD_FIXED_REG(_name) (&fixed_reg_##_name##_dev)
-
-/* Gpio switch regulator platform data for Macallan E1545 */
-static struct platform_device *fixed_reg_devs[] = {
- ADD_FIXED_REG(dvdd_lcd_1v8),
- ADD_FIXED_REG(vdd_lcd_bl_en),
- ADD_FIXED_REG(dvdd_ts),
- ADD_FIXED_REG(vdd_hdmi_5v0),
- ADD_FIXED_REG(vddio_sd_slot),
- ADD_FIXED_REG(vd_cam_1v8),
-};
-
-
-int __init macallan_palmas_regulator_init(void)
-{
- void __iomem *pmc = IO_ADDRESS(TEGRA_PMC_BASE);
- u32 pmc_ctrl;
- int i;
- struct board_info board_info;
-
- /* TPS65913: Normal state of INT request line is LOW.
- * configure the power management controller to trigger PMU
- * interrupts when HIGH.
- */
- pmc_ctrl = readl(pmc + PMC_CTRL);
- writel(pmc_ctrl | PMC_CTRL_INTR_LOW, pmc + PMC_CTRL);
-
- /* Tracking configuration */
- reg_init_data_ldo8.config_flags =
- PALMAS_REGULATOR_CONFIG_TRACKING_ENABLE |
- PALMAS_REGULATOR_CONFIG_SUSPEND_TRACKING_DISABLE;
-
- tegra_get_board_info(&board_info);
- if (board_info.board_id == BOARD_E1569) {
- reg_idata_ldo5.consumer_supplies = palmas_ldo5_e1569_supply;
- reg_idata_ldo5.num_consumer_supplies =
- ARRAY_SIZE(palmas_ldo5_e1569_supply);
- reg_idata_ldo7.consumer_supplies = palmas_ldo7_e1569_supply;
- reg_idata_ldo7.num_consumer_supplies =
- ARRAY_SIZE(palmas_ldo7_e1569_supply);
- }
-
- for (i = 0; i < PALMAS_NUM_REGS ; i++) {
- pmic_platform.reg_data[i] = macallan_reg_data[i];
- pmic_platform.reg_init[i] = macallan_reg_init[i];
- }
-
- i2c_register_board_info(4, palma_device,
- ARRAY_SIZE(palma_device));
-
- return 0;
-}
-
-static int ac_online(void)
-{
- return 1;
-}
-
-static struct resource macallan_pda_resources[] = {
- [0] = {
- .name = "ac",
- },
-};
-
-static struct pda_power_pdata macallan_pda_data = {
- .is_ac_online = ac_online,
-};
-
-static struct platform_device macallan_pda_power_device = {
- .name = "pda-power",
- .id = -1,
- .resource = macallan_pda_resources,
- .num_resources = ARRAY_SIZE(macallan_pda_resources),
- .dev = {
- .platform_data = &macallan_pda_data,
- },
-};
-
-static void macallan_board_suspend(int state, enum suspend_stage stage)
-{
-}
-
-static struct tegra_suspend_platform_data macallan_suspend_data = {
- .cpu_timer = 300,
- .cpu_off_timer = 300,
- .suspend_mode = TEGRA_SUSPEND_LP0,
- .core_timer = 0x157e,
- .core_off_timer = 2000,
- .corereq_high = true,
- .sysclkreq_high = true,
- .cpu_lp2_min_residency = 1000,
- .min_residency_crail = 20000,
-#ifdef CONFIG_TEGRA_LP1_LOW_COREVOLTAGE
- .lp1_lowvolt_support = false,
- .i2c_base_addr = 0,
- .pmuslave_addr = 0,
- .core_reg_addr = 0,
- .lp1_core_volt_low_cold = 0,
- .lp1_core_volt_low = 0,
- .lp1_core_volt_high = 0,
-#endif
- .board_suspend = macallan_board_suspend,
-};
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-/* board parameters for cpu dfll */
-static struct tegra_cl_dvfs_cfg_param macallan_cl_dvfs_param = {
- .sample_rate = 12500,
-
- .force_mode = TEGRA_CL_DVFS_FORCE_FIXED,
- .cf = 10,
- .ci = 0,
- .cg = 2,
-
- .droop_cut_value = 0xF,
- .droop_restore_ramp = 0x0,
- .scale_out_ramp = 0x0,
-};
-#endif
-
-/* palmas: fixed 10mV steps from 600mV to 1400mV, with offset 0x10 */
-#define PMU_CPU_VDD_MAP_SIZE ((1400000 - 600000) / 10000 + 1)
-static struct voltage_reg_map pmu_cpu_vdd_map[PMU_CPU_VDD_MAP_SIZE];
-static inline void fill_reg_map(void)
-{
- int i;
- for (i = 0; i < PMU_CPU_VDD_MAP_SIZE; i++) {
- pmu_cpu_vdd_map[i].reg_value = i + 0x10;
- pmu_cpu_vdd_map[i].reg_uV = 600000 + 10000 * i;
- }
-}
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-static struct tegra_cl_dvfs_platform_data macallan_cl_dvfs_data = {
- .dfll_clk_name = "dfll_cpu",
- .pmu_if = TEGRA_CL_DVFS_PMU_I2C,
- .u.pmu_i2c = {
- .fs_rate = 400000,
- .slave_addr = 0xb0,
- .reg = 0x23,
- },
- .vdd_map = pmu_cpu_vdd_map,
- .vdd_map_size = PMU_CPU_VDD_MAP_SIZE,
- .pmu_undershoot_gb = 100,
-
- .cfg_param = &macallan_cl_dvfs_param,
-};
-
-static int __init macallan_cl_dvfs_init(void)
-{
- fill_reg_map();
- if (tegra_revision < TEGRA_REVISION_A02)
- macallan_cl_dvfs_data.flags =
- TEGRA_CL_DVFS_FLAGS_I2C_WAIT_QUIET;
- tegra_cl_dvfs_device.dev.platform_data = &macallan_cl_dvfs_data;
- platform_device_register(&tegra_cl_dvfs_device);
-
- return 0;
-}
-#endif
-
-static int __init macallan_fixed_regulator_init(void)
-{
- if (!of_machine_is_compatible("nvidia,macallan"))
- return 0;
-
- return platform_add_devices(fixed_reg_devs,
- ARRAY_SIZE(fixed_reg_devs));
-}
-subsys_initcall_sync(macallan_fixed_regulator_init);
-
-int __init macallan_regulator_init(void)
-{
- struct board_info board_info;
- tegra_get_board_info(&board_info);
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
- macallan_cl_dvfs_init();
-#endif
- macallan_palmas_regulator_init();
-
- if (board_info.board_id == BOARD_E1569) {
- if (get_power_supply_type() != POWER_SUPPLY_TYPE_BATTERY) {
- /* Disable charger when adapter is power source. */
- macallan_bq2419x_pdata.bcharger_pdata = NULL;
- } else {
- /* Only register fuel gauge when using battery. */
- i2c_register_board_info(0, macallan_max17048_boardinfo,
- 1);
- }
- } else {
- /* forced make null to prevent charging for E1545. */
- macallan_bq2419x_pdata.bcharger_pdata = NULL;
- }
-
- bq2419x_boardinfo[0].irq = gpio_to_irq(TEGRA_GPIO_PJ0);
- i2c_register_board_info(0, bq2419x_boardinfo,
- ARRAY_SIZE(bq2419x_boardinfo));
-
- platform_device_register(&psy_extcon_device);
- platform_device_register(&macallan_pda_power_device);
-
- return 0;
-}
-
-int __init macallan_suspend_init(void)
-{
- tegra_init_suspend(&macallan_suspend_data);
- return 0;
-}
-
-int __init macallan_edp_init(void)
-{
- unsigned int regulator_mA;
-
- regulator_mA = get_maximum_cpu_current_supported();
- if (!regulator_mA)
- regulator_mA = 15000;
-
- pr_info("%s: CPU regulator %d mA\n", __func__, regulator_mA);
- tegra_init_cpu_edp_limits(regulator_mA);
-
- regulator_mA = get_maximum_core_current_supported();
- if (!regulator_mA)
- regulator_mA = 4000;
-
- pr_info("%s: core regulator %d mA\n", __func__, regulator_mA);
- tegra_init_core_edp_limits(regulator_mA);
-
- return 0;
-}
-
-static struct pid_thermal_gov_params soctherm_cpu_pid_params = {
- .max_err_temp = 9000,
- .max_err_gain = 1000,
-
- .gain_p = 1000,
- .gain_d = 0,
-
- .up_compensation = 20,
- .down_compensation = 20,
-};
-
-static struct thermal_zone_params macallan_soctherm_therm_cpu_tzp = {
- .governor_name = "pid_thermal_gov",
- .governor_params = &soctherm_cpu_pid_params,
-};
-
-static struct tegra_thermtrip_pmic_data tpdata_palmas = {
- .reset_tegra = 1,
- .pmu_16bit_ops = 0,
- .controller_type = 0,
- .pmu_i2c_addr = 0x58,
- .i2c_controller_id = 4,
- .poweroff_reg_addr = 0xa0,
- .poweroff_reg_data = 0x0,
-};
-
-static struct soctherm_platform_data macallan_soctherm_data = {
- .oc_irq_base = TEGRA_SOC_OC_IRQ_BASE,
- .num_oc_irqs = TEGRA_SOC_OC_NUM_IRQ,
- .therm = {
- [THERM_CPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 3,
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- .tzp = &macallan_soctherm_therm_cpu_tzp,
- },
- [THERM_GPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 3,
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- .tzp = &macallan_soctherm_therm_cpu_tzp,
- },
- [THERM_PLL] = {
- .zone_enable = true,
- },
- },
- .throttle = {
- [THROTTLE_HEAVY] = {
- .priority = 100,
- .devs = {
- [THROTTLE_DEV_CPU] = {
- .enable = true,
- .depth = 80,
- },
- [THROTTLE_DEV_GPU] = {
- .enable = true,
- .depth = 80,
- },
- },
- },
- [THROTTLE_OC4] = {
- .throt_mode = BRIEF,
- .polarity = 1,
- .intr = true,
- .devs = {
- [THROTTLE_DEV_CPU] = {
- .enable = true,
- .depth = 50,
- },
- [THROTTLE_DEV_GPU] = {
- .enable = true,
- .depth = 50,
- },
- },
- },
- },
- .tshut_pmu_trip_data = &tpdata_palmas,
-};
-
-int __init macallan_soctherm_init(void)
-{
- struct board_info board_info;
- tegra_get_board_info(&board_info);
- if (board_info.board_id == BOARD_E1545)
- tegra_add_all_vmin_trips(
- macallan_soctherm_data.therm[THERM_CPU].trips,
- &macallan_soctherm_data.therm[THERM_CPU].num_trips);
- tegra_platform_edp_init(macallan_soctherm_data.therm[THERM_CPU].trips,
- &macallan_soctherm_data.therm[THERM_CPU].num_trips,
- 6000); /* edp temperature margin */
- tegra_add_cpu_vmax_trips(macallan_soctherm_data.therm[THERM_CPU].trips,
- &macallan_soctherm_data.therm[THERM_CPU].num_trips);
- tegra_add_core_edp_trips(macallan_soctherm_data.therm[THERM_CPU].trips,
- &macallan_soctherm_data.therm[THERM_CPU].num_trips);
-
- return tegra11_soctherm_init(&macallan_soctherm_data);
-}
diff --git a/arch/arm/mach-tegra/board-macallan-sdhci.c b/arch/arm/mach-tegra/board-macallan-sdhci.c
deleted file mode 100644
index 732b470fd84d..000000000000
--- a/arch/arm/mach-tegra/board-macallan-sdhci.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-macallan-sdhci.c
- *
- * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
-
-#include <linux/resource.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/clk.h>
-#include <linux/err.h>
-#include <linux/regulator/consumer.h>
-#include <linux/mmc/host.h>
-#include <linux/platform_data/mmc-sdhci-tegra.h>
-
-#include <asm/mach-types.h>
-#include <mach/irqs.h>
-#include <mach/gpio-tegra.h>
-#include <mach/io_dpd.h>
-#include <linux/wl12xx.h>
-
-#include "gpio-names.h"
-#include "board.h"
-#include "board-macallan.h"
-#include "dvfs.h"
-#include "iomap.h"
-
-#define MACALLAN_SD_CD TEGRA_GPIO_PV2
-#define MACALLAN_SD_WP TEGRA_GPIO_PQ4
-#define MACALLAN_WLAN_PWR TEGRA_GPIO_PCC5
-#define MACALLAN_WLAN_RST TEGRA_GPIO_PX7
-#define MACALLAN_WLAN_WOW TEGRA_GPIO_PU5
-static void (*wifi_status_cb)(int card_present, void *dev_id);
-static void *wifi_status_cb_devid;
-static int macallan_wifi_status_register(void (*callback)(int , void *), void *);
-
-static int macallan_wifi_power(int on);
-static int macallan_wifi_set_carddetect(int val);
-
-static struct wl12xx_platform_data macallan_wl12xx_wlan_data __initdata = {
- .board_ref_clock = WL12XX_REFCLOCK_26,
- .board_tcxo_clock = 1,
- .set_power = macallan_wifi_power,
- .set_carddetect = macallan_wifi_set_carddetect,
-};
-
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
-static struct embedded_sdio_data embedded_sdio_data0 = {
- .cccr = {
- .sdio_vsn = 2,
- .multi_block = 1,
- .low_speed = 0,
- .wide_bus = 0,
- .high_power = 1,
- .high_speed = 1,
- },
- .cis = {
- .vendor = 0x02d0,
- .device = 0x4329,
- },
-};
-#endif
-
-struct tegra_sdhci_platform_data macallan_tegra_sdhci_platform_data0 = {
- .mmc_data = {
- .register_status_notify = macallan_wifi_status_register,
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
- .embedded_sdio = &embedded_sdio_data0,
-#endif
- .built_in = 0,
- .ocr_mask = MMC_OCR_1V8_MASK,
- },
-#ifndef CONFIG_MMC_EMBEDDED_SDIO
- .pm_flags = MMC_PM_KEEP_POWER,
-#endif
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .tap_delay = 0x2,
- .trim_delay = 0x2,
- .ddr_clk_limit = 41000000,
- .uhs_mask = MMC_UHS_MASK_DDR50,
- .disable_clock_gate = true,
-};
-
-#ifndef CONFIG_USE_OF
-static struct resource sdhci_resource0[] = {
- [0] = {
- .start = INT_SDMMC1,
- .end = INT_SDMMC1,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC1_BASE,
- .end = TEGRA_SDMMC1_BASE + TEGRA_SDMMC1_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource2[] = {
- [0] = {
- .start = INT_SDMMC3,
- .end = INT_SDMMC3,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC3_BASE,
- .end = TEGRA_SDMMC3_BASE + TEGRA_SDMMC3_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource3[] = {
- [0] = {
- .start = INT_SDMMC4,
- .end = INT_SDMMC4,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC4_BASE,
- .end = TEGRA_SDMMC4_BASE + TEGRA_SDMMC4_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = {
- .cd_gpio = MACALLAN_SD_CD,
- .wp_gpio = MACALLAN_SD_WP,
- .power_gpio = -1,
- .tap_delay = 0x3,
- .trim_delay = 0x3,
- .ddr_clk_limit = 41000000,
- .uhs_mask = MMC_UHS_MASK_DDR50,
-};
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data3 = {
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .is_8bit = 1,
- .tap_delay = 0x5,
- .trim_delay = 0xA,
- .ddr_trim_delay = -1,
- .ddr_clk_limit = 41000000,
- .max_clk_limit = 156000000,
- .mmc_data = {
- .built_in = 1,
- .ocr_mask = MMC_OCR_1V8_MASK,
- }
-};
-
-static struct platform_device tegra_sdhci_device0 = {
- .name = "sdhci-tegra",
- .id = 0,
- .resource = sdhci_resource0,
- .num_resources = ARRAY_SIZE(sdhci_resource0),
- .dev = {
- .platform_data = &macallan_tegra_sdhci_platform_data0,
- },
-};
-
-static struct platform_device tegra_sdhci_device2 = {
- .name = "sdhci-tegra",
- .id = 2,
- .resource = sdhci_resource2,
- .num_resources = ARRAY_SIZE(sdhci_resource2),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data2,
- },
-};
-
-static struct platform_device tegra_sdhci_device3 = {
- .name = "sdhci-tegra",
- .id = 3,
- .resource = sdhci_resource3,
- .num_resources = ARRAY_SIZE(sdhci_resource3),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data3,
- },
-};
-#endif
-
-static int macallan_wifi_status_register(
- void (*callback)(int card_present, void *dev_id),
- void *dev_id)
-{
- if (wifi_status_cb)
- return -EAGAIN;
- wifi_status_cb = callback;
- wifi_status_cb_devid = dev_id;
- return 0;
-}
-
-static int macallan_wifi_set_carddetect(int val)
-{
- pr_debug("%s: %d\n", __func__, val);
- if (wifi_status_cb)
- wifi_status_cb(val, wifi_status_cb_devid);
- else
- pr_warning("%s: Nobody to notify\n", __func__);
- return 0;
-}
-
-static int macallan_wifi_power(int on)
-{
- pr_debug("%s: %d\n", __func__, on);
-
- if (on) {
- gpio_set_value(MACALLAN_WLAN_RST, 1);
- mdelay(100);
- gpio_set_value(MACALLAN_WLAN_RST, 0);
- mdelay(100);
- gpio_set_value(MACALLAN_WLAN_RST, 1);
- mdelay(100);
- gpio_set_value(MACALLAN_WLAN_PWR, 1);
- mdelay(200);
- } else {
- gpio_set_value(MACALLAN_WLAN_RST, 0);
- mdelay(100);
- gpio_set_value(MACALLAN_WLAN_PWR, 0);
- }
-
- return 0;
-}
-
-static int __init macallan_wifi_init(void)
-{
- int rc;
-
- rc = gpio_request(MACALLAN_WLAN_PWR, "wlan_power");
- if (rc)
- pr_err("WLAN_PWR gpio request failed:%d\n", rc);
- rc = gpio_request(MACALLAN_WLAN_RST, "wlan_rst");
- if (rc)
- pr_err("WLAN_RST gpio request failed:%d\n", rc);
- rc = gpio_request(MACALLAN_WLAN_WOW, "bcmsdh_sdmmc");
- if (rc)
- pr_err("WLAN_WOW gpio request failed:%d\n", rc);
-
- rc = gpio_direction_output(MACALLAN_WLAN_PWR, 0);
- if (rc)
- pr_err("WLAN_PWR gpio direction configuration failed:%d\n", rc);
- rc = gpio_direction_output(MACALLAN_WLAN_RST, 0);
- if (rc)
- pr_err("WLAN_RST gpio direction configuration failed:%d\n", rc);
- rc = gpio_direction_input(MACALLAN_WLAN_WOW);
- if (rc)
- pr_err("WLAN_WOW gpio direction configuration failed:%d\n", rc);
- macallan_wl12xx_wlan_data.irq = gpio_to_irq(MACALLAN_WLAN_WOW);
- wl12xx_set_platform_data(&macallan_wl12xx_wlan_data);
- return 0;
-}
-
-#ifdef CONFIG_TEGRA_PREPOWER_WIFI
-static int __init macallan_wifi_prepower(void)
-{
- if (!machine_is_macallan())
- return 0;
-
- macallan_wifi_power(1);
-
- return 0;
-}
-
-subsys_initcall_sync(macallan_wifi_prepower);
-#endif
-
-int __init macallan_sdhci_init(void)
-{
-#ifndef CONFIG_USE_OF
- if ((tegra_sdhci_platform_data3.uhs_mask & MMC_MASK_HS200)
- && (!(tegra_sdhci_platform_data3.uhs_mask &
- MMC_UHS_MASK_DDR50)))
- tegra_sdhci_platform_data3.trim_delay = 0;
-
- int nominal_core_mv;
- int min_vcore_override_mv;
- int boot_vcore_mv;
-
- nominal_core_mv =
- tegra_dvfs_rail_get_nominal_millivolts(tegra_core_rail);
- if (nominal_core_mv > 0) {
- macallan_tegra_sdhci_platform_data0.nominal_vcore_mv =
- nominal_core_mv;
- tegra_sdhci_platform_data2.nominal_vcore_mv = nominal_core_mv;
- tegra_sdhci_platform_data3.nominal_vcore_mv = nominal_core_mv;
- }
- min_vcore_override_mv =
- tegra_dvfs_rail_get_override_floor(tegra_core_rail);
- if (min_vcore_override_mv) {
- macallan_tegra_sdhci_platform_data0.min_vcore_override_mv =
- min_vcore_override_mv;
- tegra_sdhci_platform_data2.min_vcore_override_mv =
- min_vcore_override_mv;
- tegra_sdhci_platform_data3.min_vcore_override_mv =
- min_vcore_override_mv;
- }
- boot_vcore_mv = tegra_dvfs_rail_get_boot_level(tegra_core_rail);
- if (boot_vcore_mv) {
- macallan_tegra_sdhci_platform_data0.boot_vcore_mv =
- boot_vcore_mv;
- tegra_sdhci_platform_data2.boot_vcore_mv = boot_vcore_mv;
- tegra_sdhci_platform_data3.boot_vcore_mv = boot_vcore_mv;
- }
-
- if ((tegra_sdhci_platform_data3.uhs_mask & MMC_MASK_HS200)
- && (!(tegra_sdhci_platform_data3.uhs_mask &
- MMC_UHS_MASK_DDR50)))
- tegra_sdhci_platform_data3.trim_delay = 0;
-
- platform_device_register(&tegra_sdhci_device3);
- platform_device_register(&tegra_sdhci_device2);
- platform_device_register(&tegra_sdhci_device0);
-#endif
- macallan_wifi_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-macallan-sensors.c b/arch/arm/mach-tegra/board-macallan-sensors.c
deleted file mode 100644
index dfbdeeb7f0cb..000000000000
--- a/arch/arm/mach-tegra/board-macallan-sensors.c
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-macallan-sensors.c
- *
- * Copyright (c) 2013-2014 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 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 licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <linux/i2c.h>
-#include <linux/delay.h>
-#include <linux/mpu.h>
-#include <linux/regulator/consumer.h>
-#include <linux/gpio.h>
-#include <linux/therm_est.h>
-#include <linux/nct1008.h>
-#include <linux/cm3217.h>
-#include <linux/pid_thermal_gov.h>
-#include <mach/edp.h>
-#include <linux/edp.h>
-#include <mach/gpio-tegra.h>
-#include <mach/pinmux-t11.h>
-#include <mach/pinmux.h>
-#include <media/imx091.h>
-#include <media/ov9772.h>
-#include <media/as364x.h>
-#include <media/ad5816.h>
-#include <generated/mach-types.h>
-#include <linux/power/sbs-battery.h>
-
-#include "gpio-names.h"
-#include "board.h"
-#include "board-common.h"
-#include "board-macallan.h"
-#include "cpu-tegra.h"
-#include "devices.h"
-#include "tegra-board-id.h"
-#include "dvfs.h"
-
-static struct nvc_gpio_pdata imx091_gpio_pdata[] = {
- {IMX091_GPIO_RESET, CAM_RSTN, true, false},
- {IMX091_GPIO_PWDN, CAM1_POWER_DWN_GPIO, true, false},
- {IMX091_GPIO_GP1, CAM_GPIO1, true, false}
-};
-
-static struct board_info board_info;
-
-static struct throttle_table tj_throttle_table[] = {
- /* CPU_THROT_LOW cannot be used by other than CPU */
- /* CPU, C2BUS, C3BUS, SCLK, EMC */
- { { 1810500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1785000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1759500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1734000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1708500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1683000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1657500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1632000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1606500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1581000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1555500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1530000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1504500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1479000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1453500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1428000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1402500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1377000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1351500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1326000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1300500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1275000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1249500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1224000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1198500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1173000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1147500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1122000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1096500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1071000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1045500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1020000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 994500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 969000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 943500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 918000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 892500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 867000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 841500, 564000, NO_CAP, NO_CAP, NO_CAP } },
- { { 816000, 564000, NO_CAP, NO_CAP, 792000 } },
- { { 790500, 564000, NO_CAP, 372000, 792000 } },
- { { 765000, 564000, 468000, 372000, 792000 } },
- { { 739500, 528000, 468000, 372000, 792000 } },
- { { 714000, 528000, 468000, 336000, 792000 } },
- { { 688500, 528000, 420000, 336000, 792000 } },
- { { 663000, 492000, 420000, 336000, 792000 } },
- { { 637500, 492000, 420000, 336000, 408000 } },
- { { 612000, 492000, 420000, 300000, 408000 } },
- { { 586500, 492000, 360000, 336000, 408000 } },
- { { 561000, 420000, 420000, 300000, 408000 } },
- { { 535500, 420000, 360000, 228000, 408000 } },
- { { 510000, 420000, 288000, 228000, 408000 } },
- { { 484500, 324000, 288000, 228000, 408000 } },
- { { 459000, 324000, 288000, 228000, 408000 } },
- { { 433500, 324000, 288000, 228000, 408000 } },
- { { 408000, 324000, 288000, 228000, 408000 } },
-};
-
-static struct balanced_throttle tj_throttle = {
- .throt_tab_size = ARRAY_SIZE(tj_throttle_table),
- .throt_tab = tj_throttle_table,
-};
-
-static int __init macallan_throttle_init(void)
-{
- if (machine_is_macallan())
- balanced_throttle_register(&tj_throttle, "tegra-balanced");
- return 0;
-}
-module_init(macallan_throttle_init);
-
-static struct nct1008_platform_data macallan_nct1008_pdata = {
- .supported_hwrev = true,
- .extended_range = true,
- .conv_rate = 0x06, /* 4Hz conversion rate */
-
- .sensors = {
- [LOC] = {
- .shutdown_limit = 120, /* C */
- .num_trips = 0,
- .tzp = NULL,
- },
- [EXT] = {
- .shutdown_limit = 105, /* C */
- .num_trips = 1,
- .tzp = NULL,
- .trips = {
- {
- .cdev_type = "suspend_soctherm",
- .trip_temp = 50000,
- .trip_type = THERMAL_TRIP_ACTIVE,
- .upper = 1,
- .lower = 1,
- .hysteresis = 5000,
- .mask = 1,
- },
- },
- }
- }
-};
-
-static struct i2c_board_info macallan_i2c4_nct1008_board_info[] = {
- {
- I2C_BOARD_INFO("nct1008", 0x4C),
- .platform_data = &macallan_nct1008_pdata,
- .irq = -1,
- }
-};
-
-#define VI_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _ioreset) \
- { \
- .pingroup = TEGRA_PINGROUP_##_pingroup, \
- .func = TEGRA_MUX_##_mux, \
- .pupd = TEGRA_PUPD_##_pupd, \
- .tristate = TEGRA_TRI_##_tri, \
- .io = TEGRA_PIN_##_io, \
- .lock = TEGRA_PIN_LOCK_##_lock, \
- .od = TEGRA_PIN_OD_DEFAULT, \
- .ioreset = TEGRA_PIN_IO_RESET_##_ioreset \
-}
-
-static int macallan_focuser_power_on(struct ad5816_power_rail *pw)
-{
- int err;
-
- if (unlikely(WARN_ON(!pw || !pw->vdd || !pw->vdd_i2c)))
- return -EFAULT;
-
- err = regulator_enable(pw->vdd_i2c);
- if (unlikely(err))
- goto ad5816_vdd_i2c_fail;
-
- err = regulator_enable(pw->vdd);
- if (unlikely(err))
- goto ad5816_vdd_fail;
-
- return 0;
-
-ad5816_vdd_fail:
- regulator_disable(pw->vdd_i2c);
-
-ad5816_vdd_i2c_fail:
- pr_err("%s FAILED\n", __func__);
-
- return -ENODEV;
-}
-
-static int macallan_focuser_power_off(struct ad5816_power_rail *pw)
-{
- if (unlikely(WARN_ON(!pw || !pw->vdd || !pw->vdd_i2c)))
- return -EFAULT;
-
- regulator_disable(pw->vdd);
- regulator_disable(pw->vdd_i2c);
-
- return 0;
-}
-
-static struct tegra_pingroup_config mclk_disable =
- VI_PINMUX(CAM_MCLK, VI, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config mclk_enable =
- VI_PINMUX(CAM_MCLK, VI_ALT3, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config pbb0_disable =
- VI_PINMUX(GPIO_PBB0, VI, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config pbb0_enable =
- VI_PINMUX(GPIO_PBB0, VI_ALT3, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-/*
- * As a workaround, macallan_vcmvdd need to be allocated to activate the
- * sensor devices. This is due to the focuser device(AD5816) will hook up
- * the i2c bus if it is not powered up.
-*/
-static struct regulator *macallan_vcmvdd;
-
-static int macallan_get_vcmvdd(void)
-{
- if (!macallan_vcmvdd) {
- macallan_vcmvdd = regulator_get(NULL, "vdd_af_cam1");
- if (unlikely(WARN_ON(IS_ERR(macallan_vcmvdd)))) {
- pr_err("%s: can't get regulator vcmvdd: %ld\n",
- __func__, PTR_ERR(macallan_vcmvdd));
- macallan_vcmvdd = NULL;
- return -ENODEV;
- }
- }
- return 0;
-}
-
-static int macallan_imx091_power_on(struct nvc_regulator *vreg)
-{
- int err;
-
- if (unlikely(WARN_ON(!vreg)))
- return -EFAULT;
-
- if (macallan_get_vcmvdd())
- goto imx091_poweron_fail;
-
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
- usleep_range(10, 20);
-
- err = regulator_enable(vreg[IMX091_VREG_AVDD].vreg);
- if (err)
- goto imx091_avdd_fail;
-
- err = regulator_enable(vreg[IMX091_VREG_DVDD].vreg);
- if (err)
- goto imx091_dvdd_fail;
-
- err = regulator_enable(vreg[IMX091_VREG_IOVDD].vreg);
- if (err)
- goto imx091_iovdd_fail;
-
- usleep_range(1, 2);
- gpio_set_value(CAM1_POWER_DWN_GPIO, 1);
-
- err = regulator_enable(macallan_vcmvdd);
- if (unlikely(err))
- goto imx091_vcmvdd_fail;
-
- tegra_pinmux_config_table(&mclk_enable, 1);
- usleep_range(300, 310);
-
- return 1;
-
-imx091_vcmvdd_fail:
- regulator_disable(vreg[IMX091_VREG_IOVDD].vreg);
-
-imx091_iovdd_fail:
- regulator_disable(vreg[IMX091_VREG_DVDD].vreg);
-
-imx091_dvdd_fail:
- regulator_disable(vreg[IMX091_VREG_AVDD].vreg);
-
-imx091_avdd_fail:
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
-
-imx091_poweron_fail:
- pr_err("%s FAILED\n", __func__);
- return -ENODEV;
-}
-
-static int macallan_imx091_power_off(struct nvc_regulator *vreg)
-{
- if (unlikely(WARN_ON(!vreg)))
- return -EFAULT;
-
- usleep_range(1, 2);
- tegra_pinmux_config_table(&mclk_disable, 1);
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
- usleep_range(1, 2);
-
- regulator_disable(macallan_vcmvdd);
- regulator_disable(vreg[IMX091_VREG_IOVDD].vreg);
- regulator_disable(vreg[IMX091_VREG_DVDD].vreg);
- regulator_disable(vreg[IMX091_VREG_AVDD].vreg);
-
- return 1;
-}
-
-static struct nvc_imager_cap imx091_cap = {
- .identifier = "IMX091",
- .sensor_nvc_interface = 3,
- .pixel_types[0] = 0x100,
- .orientation = 0,
- .direction = 0,
- .initial_clock_rate_khz = 6000,
- .clock_profiles[0] = {
- .external_clock_khz = 24000,
- .clock_multiplier = 850000, /* value / 1,000,000 */
- },
- .clock_profiles[1] = {
- .external_clock_khz = 0,
- .clock_multiplier = 0,
- },
- .h_sync_edge = 0,
- .v_sync_edge = 0,
- .mclk_on_vgp0 = 0,
- .csi_port = 0,
- .data_lanes = 4,
- .virtual_channel_id = 0,
- .discontinuous_clk_mode = 1,
- .cil_threshold_settle = 0x0,
- .min_blank_time_width = 16,
- .min_blank_time_height = 16,
- .preferred_mode_index = 0,
- .focuser_guid = NVC_FOCUS_GUID(0),
- .torch_guid = NVC_TORCH_GUID(0),
- .cap_version = NVC_IMAGER_CAPABILITIES_VERSION2,
-};
-
-static struct imx091_platform_data imx091_pdata = {
- .num = 0,
- .sync = 0,
- .dev_name = "camera",
- .gpio_count = ARRAY_SIZE(imx091_gpio_pdata),
- .gpio = imx091_gpio_pdata,
- .flash_cap = {
- .sdo_trigger_enabled = 1,
- .adjustable_flash_timing = 1,
- },
- .cap = &imx091_cap,
- .power_on = macallan_imx091_power_on,
- .power_off = macallan_imx091_power_off,
-};
-
-static int macallan_ov9772_power_on(struct ov9772_power_rail *pw)
-{
- int err;
-
- if (unlikely(!pw || !pw->avdd || !pw->dovdd))
- return -EFAULT;
-
- if (macallan_get_vcmvdd())
- goto ov9772_get_vcmvdd_fail;
-
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
- gpio_set_value(CAM_RSTN, 0);
-
- err = regulator_enable(pw->avdd);
- if (unlikely(err))
- goto ov9772_avdd_fail;
-
- err = regulator_enable(pw->dvdd);
- if (unlikely(err))
- goto ov9772_dvdd_fail;
-
- err = regulator_enable(pw->dovdd);
- if (unlikely(err))
- goto ov9772_dovdd_fail;
-
- gpio_set_value(CAM_RSTN, 1);
- gpio_set_value(CAM2_POWER_DWN_GPIO, 1);
-
- err = regulator_enable(macallan_vcmvdd);
- if (unlikely(err))
- goto ov9772_vcmvdd_fail;
-
- tegra_pinmux_config_table(&pbb0_enable, 1);
- usleep_range(340, 380);
-
- /* return 1 to skip the in-driver power_on sequence */
- return 1;
-
-ov9772_vcmvdd_fail:
- regulator_disable(pw->dovdd);
-
-ov9772_dovdd_fail:
- regulator_disable(pw->dvdd);
-
-ov9772_dvdd_fail:
- regulator_disable(pw->avdd);
-
-ov9772_avdd_fail:
- gpio_set_value(CAM_RSTN, 0);
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
-
-ov9772_get_vcmvdd_fail:
- pr_err("%s FAILED\n", __func__);
- return -ENODEV;
-}
-
-static int macallan_ov9772_power_off(struct ov9772_power_rail *pw)
-{
- if (unlikely(!pw || !macallan_vcmvdd || !pw->avdd || !pw->dovdd))
- return -EFAULT;
-
- usleep_range(21, 25);
- tegra_pinmux_config_table(&pbb0_disable, 1);
-
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
- gpio_set_value(CAM_RSTN, 0);
-
- regulator_disable(macallan_vcmvdd);
- regulator_disable(pw->dovdd);
- regulator_disable(pw->dvdd);
- regulator_disable(pw->avdd);
-
- /* return 1 to skip the in-driver power_off sequence */
- return 1;
-}
-
-static struct nvc_gpio_pdata ov9772_gpio_pdata[] = {
- { OV9772_GPIO_TYPE_SHTDN, CAM2_POWER_DWN_GPIO, true, 0, },
- { OV9772_GPIO_TYPE_PWRDN, CAM_RSTN, true, 0, },
-};
-
-static struct ov9772_platform_data macallan_ov9772_pdata = {
- .num = 1,
- .dev_name = "camera",
- .gpio_count = ARRAY_SIZE(ov9772_gpio_pdata),
- .gpio = ov9772_gpio_pdata,
- .power_on = macallan_ov9772_power_on,
- .power_off = macallan_ov9772_power_off,
-};
-
-static int macallan_as3648_power_on(struct as364x_power_rail *pw)
-{
- int err = macallan_get_vcmvdd();
-
- if (err)
- return err;
-
- return regulator_enable(macallan_vcmvdd);
-}
-
-static int macallan_as3648_power_off(struct as364x_power_rail *pw)
-{
- if (!macallan_vcmvdd)
- return -ENODEV;
-
- return regulator_disable(macallan_vcmvdd);
-}
-
-static struct as364x_platform_data macallan_as3648_pdata = {
- .config = {
- .led_mask = 3,
- .max_total_current_mA = 1000,
- .max_peak_current_mA = 600,
- .vin_low_v_run_mV = 3070,
- .strobe_type = 1,
- },
- .pinstate = {
- .mask = 1 << (CAM_FLASH_STROBE - TEGRA_GPIO_PBB0),
- .values = 1 << (CAM_FLASH_STROBE - TEGRA_GPIO_PBB0)
- },
- .dev_name = "torch",
- .type = AS3648,
- .gpio_strobe = CAM_FLASH_STROBE,
- .power_on_callback = macallan_as3648_power_on,
- .power_off_callback = macallan_as3648_power_off,
-};
-
-static struct ad5816_platform_data macallan_ad5816_pdata = {
- .cfg = 0,
- .num = 0,
- .sync = 0,
- .dev_name = "focuser",
- .power_on = macallan_focuser_power_on,
- .power_off = macallan_focuser_power_off,
-};
-
-static struct i2c_board_info macallan_i2c_board_info_e1625[] = {
- {
- I2C_BOARD_INFO("imx091", 0x36),
- .platform_data = &imx091_pdata,
- },
- {
- I2C_BOARD_INFO("ov9772", 0x10),
- .platform_data = &macallan_ov9772_pdata,
- },
- {
- I2C_BOARD_INFO("as3648", 0x30),
- .platform_data = &macallan_as3648_pdata,
- },
- {
- I2C_BOARD_INFO("ad5816", 0x0E),
- .platform_data = &macallan_ad5816_pdata,
- },
-};
-
-static int macallan_camera_init(void)
-{
- tegra_pinmux_config_table(&mclk_disable, 1);
- tegra_pinmux_config_table(&pbb0_disable, 1);
-
- i2c_register_board_info(2, macallan_i2c_board_info_e1625,
- ARRAY_SIZE(macallan_i2c_board_info_e1625));
- return 0;
-}
-
-#define TEGRA_CAMERA_GPIO(_gpio, _label, _value) \
- { \
- .gpio = _gpio, \
- .label = _label, \
- .value = _value, \
- }
-
-static struct cm3217_platform_data macallan_cm3217_pdata = {
- .levels = {10, 160, 225, 320, 640, 1280, 2600, 5800, 8000, 10240},
- .golden_adc = 0,
- .power = 0,
-};
-
-static struct i2c_board_info macallan_i2c0_board_info_cm3217[] = {
- {
- I2C_BOARD_INFO("cm3217", 0x10),
- .platform_data = &macallan_cm3217_pdata,
- },
-};
-
-/* MPU board file definition */
-static struct mpu_platform_data mpu6050_gyro_data = {
- .int_config = 0x10,
- .level_shifter = 0,
- /* Located in board_[platformname].h */
- .orientation = MPU_GYRO_ORIENTATION,
- .sec_slave_type = SECONDARY_SLAVE_TYPE_NONE,
- .key = {0x4E, 0xCC, 0x7E, 0xEB, 0xF6, 0x1E, 0x35, 0x22,
- 0x00, 0x34, 0x0D, 0x65, 0x32, 0xE9, 0x94, 0x89},
-};
-
-static struct mpu_platform_data mpu_compass_data = {
- .orientation = MPU_COMPASS_ORIENTATION,
- .config = NVI_CONFIG_BOOT_MPU,
-};
-
-static struct mpu_platform_data bmp180_pdata = {
- .config = NVI_CONFIG_BOOT_MPU,
-};
-
-static struct i2c_board_info __initdata inv_mpu6050_i2c2_board_info[] = {
- {
- I2C_BOARD_INFO(MPU_GYRO_NAME, MPU_GYRO_ADDR),
- .platform_data = &mpu6050_gyro_data,
- },
- {
- /* The actual BMP180 address is 0x77 but because this conflicts
- * with another device, this address is hacked so Linux will
- * call the driver. The conflict is technically okay since the
- * BMP180 is behind the MPU. Also, the BMP180 driver uses a
- * hard-coded address of 0x77 since it can't be changed anyway.
- */
- I2C_BOARD_INFO("bmp180", 0x78),
- .platform_data = &bmp180_pdata,
- },
- {
- I2C_BOARD_INFO(MPU_COMPASS_NAME, MPU_COMPASS_ADDR),
- .platform_data = &mpu_compass_data,
- },
-};
-
-static void mpuirq_init(void)
-{
- int ret = 0;
- unsigned gyro_irq_gpio = MPU_GYRO_IRQ_GPIO;
- unsigned gyro_bus_num = MPU_GYRO_BUS_NUM;
- char *gyro_name = MPU_GYRO_NAME;
-
- pr_info("*** MPU START *** mpuirq_init...\n");
-
- ret = gpio_request(gyro_irq_gpio, gyro_name);
-
- if (ret < 0) {
- pr_err("%s: gpio_request failed %d\n", __func__, ret);
- return;
- }
-
- ret = gpio_direction_input(gyro_irq_gpio);
- if (ret < 0) {
- pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
- gpio_free(gyro_irq_gpio);
- return;
- }
- pr_info("*** MPU END *** mpuirq_init...\n");
-
- inv_mpu6050_i2c2_board_info[0].irq = gpio_to_irq(MPU_GYRO_IRQ_GPIO);
- i2c_register_board_info(gyro_bus_num, inv_mpu6050_i2c2_board_info,
- ARRAY_SIZE(inv_mpu6050_i2c2_board_info));
-}
-
-static int macallan_nct1008_init(void)
-{
- int nct1008_port;
- int ret = 0;
-
- nct1008_port = TEGRA_GPIO_PO4;
-
- tegra_add_all_vmin_trips(macallan_nct1008_pdata.sensors[EXT].trips,
- &macallan_nct1008_pdata.sensors[EXT].num_trips);
-
- macallan_i2c4_nct1008_board_info[0].irq = gpio_to_irq(nct1008_port);
- pr_info("%s: macallan nct1008 irq %d",
- __func__, macallan_i2c4_nct1008_board_info[0].irq);
-
- ret = gpio_request(nct1008_port, "temp_alert");
- if (ret < 0)
- return ret;
-
- ret = gpio_direction_input(nct1008_port);
- if (ret < 0) {
- pr_info("%s: calling gpio_free(nct1008_port)", __func__);
- gpio_free(nct1008_port);
- }
-
- /* macallan has thermal sensor on GEN1-I2C i.e. instance 0 */
- i2c_register_board_info(0, macallan_i2c4_nct1008_board_info,
- ARRAY_SIZE(macallan_i2c4_nct1008_board_info));
-
- return ret;
-}
-
-#ifdef CONFIG_TEGRA_SKIN_THROTTLE
-static struct thermal_trip_info skin_trips[] = {
- {
- .cdev_type = "skin-balanced",
- .trip_temp = 43000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- .hysteresis = 0,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 57000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- .hysteresis = 0,
- },
-};
-
-static struct therm_est_subdevice skin_devs[] = {
- {
- .dev_data = "Tdiode",
- .coeffs = {
- 2, 1, 1, 1,
- 1, 1, 1, 1,
- 1, 1, 1, 0,
- 1, 1, 0, 0,
- 0, 0, -1, -7
- },
- },
- {
- .dev_data = "Tboard",
- .coeffs = {
- -11, -7, -5, -3,
- -3, -2, -1, 0,
- 0, 0, 1, 1,
- 1, 2, 2, 3,
- 4, 6, 11, 18
- },
- },
-};
-
-static struct pid_thermal_gov_params skin_pid_params = {
- .max_err_temp = 4000,
- .max_err_gain = 1000,
-
- .gain_p = 1000,
- .gain_d = 0,
-
- .up_compensation = 15,
- .down_compensation = 15,
-};
-
-static struct thermal_zone_params skin_tzp = {
- .governor_name = "pid_thermal_gov",
- .governor_params = &skin_pid_params,
-};
-
-static struct therm_est_data skin_data = {
- .num_trips = ARRAY_SIZE(skin_trips),
- .trips = skin_trips,
- .toffset = 9793,
- .polling_period = 1100,
- .passive_delay = 15000,
- .tc1 = 10,
- .tc2 = 1,
- .ndevs = ARRAY_SIZE(skin_devs),
- .devs = skin_devs,
- .tzp = &skin_tzp,
-};
-
-static struct throttle_table skin_throttle_table[] = {
- /* CPU_THROT_LOW cannot be used by other than CPU */
- /* CPU, C2BUS, C3BUS, SCLK, EMC */
- { { 1810500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1785000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1759500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1734000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1708500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1683000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1657500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1632000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1606500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1581000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1555500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1530000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1504500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1479000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1453500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1428000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1402500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1377000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1351500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1326000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1300500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1275000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1249500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1224000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1198500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1173000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1147500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1122000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1096500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1071000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1045500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1020000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 994500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 969000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 943500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 918000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 892500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 867000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 841500, 564000, NO_CAP, NO_CAP, NO_CAP } },
- { { 816000, 564000, NO_CAP, NO_CAP, 792000 } },
- { { 790500, 564000, NO_CAP, 372000, 792000 } },
- { { 765000, 564000, 468000, 372000, 792000 } },
- { { 739500, 528000, 468000, 372000, 792000 } },
- { { 714000, 528000, 468000, 336000, 792000 } },
- { { 688500, 528000, 420000, 336000, 792000 } },
- { { 663000, 492000, 420000, 336000, 792000 } },
- { { 637500, 492000, 420000, 336000, 408000 } },
- { { 612000, 492000, 420000, 300000, 408000 } },
- { { 586500, 492000, 360000, 336000, 408000 } },
- { { 561000, 420000, 420000, 300000, 408000 } },
- { { 535500, 420000, 360000, 228000, 408000 } },
- { { 510000, 420000, 288000, 228000, 408000 } },
- { { 484500, 324000, 288000, 228000, 408000 } },
- { { 459000, 324000, 288000, 228000, 408000 } },
- { { 433500, 324000, 288000, 228000, 408000 } },
- { { 408000, 324000, 288000, 228000, 408000 } },
-};
-
-static struct balanced_throttle skin_throttle = {
- .throt_tab_size = ARRAY_SIZE(skin_throttle_table),
- .throt_tab = skin_throttle_table,
-};
-
-static int __init macallan_skin_init(void)
-{
- if (machine_is_macallan()) {
- balanced_throttle_register(&skin_throttle, "skin-balanced");
- tegra_skin_therm_est_device.dev.platform_data = &skin_data;
- platform_device_register(&tegra_skin_therm_est_device);
- }
-
- return 0;
-}
-late_initcall(macallan_skin_init);
-#endif
-
-int __init macallan_sensors_init(void)
-{
- int err;
-
- tegra_get_board_info(&board_info);
-
- /* E1545+E1604 has no temp sensor. */
- if (board_info.board_id != BOARD_E1545) {
- err = macallan_nct1008_init();
- if (err) {
- pr_err("%s: nct1008 register failed.\n", __func__);
- return err;
- }
- }
-
- macallan_camera_init();
- mpuirq_init();
-
- i2c_register_board_info(0, macallan_i2c0_board_info_cm3217,
- ARRAY_SIZE(macallan_i2c0_board_info_cm3217));
-
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-macallan.c b/arch/arm/mach-tegra/board-macallan.c
deleted file mode 100644
index e32101661e7b..000000000000
--- a/arch/arm/mach-tegra/board-macallan.c
+++ /dev/null
@@ -1,619 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-macallan.c
- *
- * Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/ctype.h>
-#include <linux/platform_device.h>
-#include <linux/clk.h>
-#include <linux/serial_8250.h>
-#include <linux/i2c.h>
-#include <linux/dma-mapping.h>
-#include <linux/delay.h>
-#include <linux/i2c-tegra.h>
-#include <linux/gpio.h>
-#include <linux/input.h>
-#include <linux/platform_data/tegra_usb.h>
-#include <linux/usb/tegra_usb_phy.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/rm31080a_ts.h>
-#include <linux/memblock.h>
-#include <linux/spi/spi-tegra.h>
-#include <linux/nfc/pn544.h>
-#include <linux/skbuff.h>
-#include <linux/ti_wilink_st.h>
-#include <linux/regulator/consumer.h>
-#include <linux/smb349-charger.h>
-#include <linux/max17048_battery.h>
-#include <linux/leds.h>
-#include <linux/i2c/at24.h>
-#include <linux/of_platform.h>
-#include <linux/clk/tegra.h>
-#include <linux/tegra-soc.h>
-#include <linux/clocksource.h>
-#include <linux/irqchip.h>
-#include <linux/irqchip/tegra.h>
-#include <linux/tegra_fiq_debugger.h>
-
-#include <mach/irqs.h>
-#include <mach/pinmux.h>
-#include <mach/pinmux-t11.h>
-#include <mach/io_dpd.h>
-#include <mach/i2s.h>
-#include <mach/isomgr.h>
-#include <mach/tegra_asoc_pdata.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <mach/gpio-tegra.h>
-#include <linux/platform_data/tegra_usb_modem_power.h>
-
-#include "board-touch-raydium.h"
-#include "board.h"
-#include "board-common.h"
-#include "clock.h"
-#include "board-macallan.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "iomap.h"
-#include "pm.h"
-#include "common.h"
-#include "tegra-board-id.h"
-#include "tegra-of-dev-auxdata.h"
-
-static struct board_info board_info, display_board_info;
-
-#if defined CONFIG_TI_ST || defined CONFIG_TI_ST_MODULE
-struct ti_st_plat_data macallan_wilink_pdata = {
- .nshutdown_gpio = TEGRA_GPIO_PQ7,
- .dev_name = BLUETOOTH_UART_DEV_NAME,
- .flow_cntrl = 1,
- .baud_rate = 3000000,
-};
-
-static struct platform_device wl128x_device = {
- .name = "kim",
- .id = -1,
- .dev.platform_data = &macallan_wilink_pdata,
-};
-
-static struct platform_device btwilink_device = {
- .name = "btwilink",
- .id = -1,
-};
-
-static noinline void __init macallan_bt_st(void)
-{
- pr_info("macallan_bt_st");
-
- platform_device_register(&wl128x_device);
- platform_device_register(&btwilink_device);
-}
-
-static struct resource macallan_st_host_wake_resources[] = {
- [0] = {
- .name = "host_wake",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- },
-};
-
-static struct platform_device macallan_st_host_wake_device = {
- .name = "st_host_wake",
- .id = 0,
- .num_resources = ARRAY_SIZE(macallan_st_host_wake_resources),
- .resource = macallan_st_host_wake_resources,
-};
-
-static noinline void __init macallan_tegra_setup_st_host_wake(void)
-{
- macallan_st_host_wake_resources[0].start =
- macallan_st_host_wake_resources[0].end =
- gpio_to_irq(TEGRA_GPIO_PU6);
- platform_device_register(&macallan_st_host_wake_device);
-}
-#endif
-
-static __initdata struct tegra_clk_init_table macallan_clk_init_table[] = {
- /* name parent rate enabled */
- { "pll_m", NULL, 0, false},
- { "hda", "pll_p", 108000000, false},
- { "hda2codec_2x", "pll_p", 48000000, false},
- { "pwm", "pll_p", 3187500, false},
- { "blink", "clk_32k", 32768, true},
- { "i2s1", "pll_a_out0", 0, false},
- { "i2s3", "pll_a_out0", 0, false},
- { "i2s4", "pll_a_out0", 0, false},
- { "spdif_out", "pll_a_out0", 0, false},
- { "d_audio", "clk_m", 12000000, false},
- { "dam0", "clk_m", 12000000, false},
- { "dam1", "clk_m", 12000000, false},
- { "dam2", "clk_m", 12000000, false},
- { "audio1", "i2s1_sync", 0, false},
- { "audio3", "i2s3_sync", 0, false},
- /* Setting vi_sensor-clk to true for validation purpose, will imapact
- * power, later set to be false.*/
- { "vi_sensor", "pll_p", 150000000, false},
- { "cilab", "pll_p", 150000000, false},
- { "cilcd", "pll_p", 150000000, false},
- { "cile", "pll_p", 150000000, false},
- { "i2c1", "pll_p", 3200000, false},
- { "i2c2", "pll_p", 3200000, false},
- { "i2c3", "pll_p", 3200000, false},
- { "i2c4", "pll_p", 3200000, false},
- { "i2c5", "pll_p", 3200000, false},
- { NULL, NULL, 0, 0},
-};
-
-static struct i2c_board_info __initdata rt5640_board_info = {
- I2C_BOARD_INFO("rt5640", 0x1c),
-};
-
-static struct pn544_i2c_platform_data nfc_pdata = {
- .irq_gpio = TEGRA_GPIO_PW2,
- .ven_gpio = TEGRA_GPIO_PQ3,
- .firm_gpio = TEGRA_GPIO_PH0,
-};
-
-static struct i2c_board_info __initdata nfc_board_info = {
- I2C_BOARD_INFO("pn544", 0x28),
- .platform_data = &nfc_pdata,
-};
-
-static void macallan_i2c_init(void)
-{
- nfc_board_info.irq = gpio_to_irq(TEGRA_GPIO_PW2);
- i2c_register_board_info(0, &nfc_board_info, 1);
- i2c_register_board_info(0, &rt5640_board_info, 1);
-}
-
-static struct platform_device *macallan_uart_devices[] __initdata = {
- &tegra_uarta_device,
- &tegra_uartb_device,
- &tegra_uartc_device,
- &tegra_uartd_device,
-};
-
-static void __init uart_debug_init(void)
-{
- int debug_port_id;
-
- debug_port_id = uart_console_debug_init(3);
- if (debug_port_id < 0)
- return;
-
- macallan_uart_devices[debug_port_id] = uart_console_debug_device;
-}
-
-static void __init macallan_uart_init(void)
-{
- /* Register low speed only if it is selected */
- if (!is_tegra_debug_uartport_hs())
- uart_debug_init();
-
- platform_add_devices(macallan_uart_devices,
- ARRAY_SIZE(macallan_uart_devices));
-}
-
-static struct resource tegra_rtc_resources[] = {
- [0] = {
- .start = TEGRA_RTC_BASE,
- .end = TEGRA_RTC_BASE + TEGRA_RTC_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = INT_RTC,
- .end = INT_RTC,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device tegra_rtc_device = {
- .name = "tegra_rtc",
- .id = -1,
- .resource = tegra_rtc_resources,
- .num_resources = ARRAY_SIZE(tegra_rtc_resources),
-};
-
-static struct tegra_asoc_platform_data macallan_audio_pdata = {
- .gpio_spkr_en = TEGRA_GPIO_SPKR_EN,
- .gpio_hp_det = TEGRA_GPIO_HP_DET,
- .gpio_hp_mute = -1,
- .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN,
- .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN,
- .gpio_ldo1_en = TEGRA_GPIO_LDO1_EN,
- .gpio_codec1 = TEGRA_GPIO_CODEC1_EN,
- .gpio_codec2 = TEGRA_GPIO_CODEC2_EN,
- .gpio_codec3 = TEGRA_GPIO_CODEC3_EN,
- .i2s_param[HIFI_CODEC] = {
- .audio_port_id = 1,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- },
- .i2s_param[BT_SCO] = {
- .audio_port_id = 3,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_DSP_A,
- },
-};
-
-static struct platform_device macallan_audio_device = {
- .name = "tegra-snd-rt5640",
- .id = 0,
- .dev = {
- .platform_data = &macallan_audio_pdata,
- },
-};
-
-static struct platform_device *macallan_devices[] __initdata = {
- &tegra_pmu_device,
- &tegra_rtc_device,
- &tegra_udc_device,
-#if defined(CONFIG_TEGRA_AVP)
- &tegra_avp_device,
-#endif
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_SE)
- &tegra11_se_device,
-#endif
- &tegra_ahub_device,
- &tegra_dam_device0,
- &tegra_dam_device1,
- &tegra_dam_device2,
- &tegra_i2s_device1,
- &tegra_i2s_device3,
- &tegra_i2s_device4,
- &tegra_spdif_device,
- &spdif_dit_device,
- &bluetooth_dit_device,
- &macallan_audio_device,
- &tegra_hda_device,
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_AES)
- &tegra_aes_device,
-#endif
-};
-
-#ifdef CONFIG_USB_SUPPORT
-static struct tegra_usb_platform_data tegra_udc_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .support_pmu_vbus = true,
- .id_det_type = TEGRA_USB_PMU_ID,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_DEVICE,
- .vbus_extcon_dev_name = "palmas-extcon",
- .u_data.dev = {
- .vbus_pmu_irq = 0,
- .vbus_gpio = -1,
- .charging_supported = true,
- .remote_wakeup_supported = false,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 8,
- .xcvr_lsfslew = 0,
- .xcvr_lsrslew = 3,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- },
-};
-
-static struct tegra_usb_platform_data tegra_ehci1_utmi_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .support_pmu_vbus = true,
- .id_det_type = TEGRA_USB_PMU_ID,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .vbus_extcon_dev_name = "palmas-extcon",
- .id_extcon_dev_name = "palmas-extcon",
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 15,
- .xcvr_lsfslew = 0,
- .xcvr_lsrslew = 3,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- .vbus_oc_map = 0x4,
- },
-};
-
-static struct tegra_usb_otg_data tegra_otg_pdata = {
- .ehci_device = &tegra_ehci1_device,
- .ehci_pdata = &tegra_ehci1_utmi_pdata,
-};
-
-static void macallan_usb_init(void)
-{
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
-
- /* Set USB wake sources for macallan */
- tegra_set_usb_wake_source();
-
- if (!(usb_port_owner_info & UTMI1_PORT_OWNER_XUSB)) {
- tegra_otg_device.dev.platform_data = &tegra_otg_pdata;
- platform_device_register(&tegra_otg_device);
- /* Setup the udc platform data */
- tegra_udc_device.dev.platform_data = &tegra_udc_pdata;
- }
-}
-
-static struct gpio modem_gpios[] = { /* Nemo modem */
- {MODEM_EN, GPIOF_OUT_INIT_HIGH, "MODEM EN"},
- {MDM_RST, GPIOF_OUT_INIT_LOW, "MODEM RESET"},
-};
-
-static struct tegra_usb_platform_data tegra_ehci2_hsic_baseband_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_HSIC,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
-};
-
-static int baseband_init(void)
-{
- int ret;
-
- ret = gpio_request_array(modem_gpios, ARRAY_SIZE(modem_gpios));
- if (ret) {
- pr_warn("%s:gpio request failed\n", __func__);
- return ret;
- }
-
- /* enable pull-down for MDM_COLD_BOOT */
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_ULPI_DATA4,
- TEGRA_PUPD_PULL_DOWN);
-
- /* export GPIO for user space access through sysfs */
- gpio_export(MDM_RST, false);
-
- return 0;
-}
-
-static const struct tegra_modem_operations baseband_operations = {
- .init = baseband_init,
-};
-
-static struct tegra_usb_modem_power_platform_data baseband_pdata = {
- .ops = &baseband_operations,
- .wake_gpio = -1,
- .boot_gpio = MDM_COLDBOOT,
- .boot_irq_flags = IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
- .autosuspend_delay = 2000,
- .short_autosuspend_delay = 50,
- .tegra_ehci_device = &tegra_ehci2_device,
- .tegra_ehci_pdata = &tegra_ehci2_hsic_baseband_pdata,
-};
-
-static struct platform_device icera_nemo_device = {
- .name = "tegra_usb_modem_power",
- .id = -1,
- .dev = {
- .platform_data = &baseband_pdata,
- },
-};
-
-static void macallan_modem_init(void)
-{
- int modem_id = tegra_get_modem_id();
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
- switch (modem_id) {
- case TEGRA_BB_NEMO: /* on board i500 HSIC */
- if (!(usb_port_owner_info & HSIC1_PORT_OWNER_XUSB))
- platform_device_register(&icera_nemo_device);
- break;
- }
-}
-
-#else
-static void macallan_usb_init(void) { }
-static void macallan_modem_init(void) { }
-#endif
-
-static void macallan_audio_init(void)
-{
- macallan_audio_pdata.codec_name = "rt5640.0-001c";
- macallan_audio_pdata.codec_dai_name = "rt5640-aif1";
-}
-
-
-static __initdata struct tegra_clk_init_table touch_clk_init_table[] = {
- /* name parent rate enabled */
- { "extern2", "pll_p", 41000000, false},
- { "clk_out_2", "extern2", 40800000, false},
- { NULL, NULL, 0, 0},
-};
-
-struct rm_spi_ts_platform_data rm31080ts_macallan_data = {
- .gpio_reset = TOUCH_GPIO_RST_RAYDIUM_SPI,
- .config = 0,
- .platform_id = RM_PLATFORM_D010,
- .name_of_clock = "clk_out_2",
- .name_of_clock_con = "extern2",
-};
-
-static struct tegra_spi_device_controller_data dev_cdata = {
- .rx_clk_tap_delay = 16,
- .tx_clk_tap_delay = 16,
-};
-
-struct spi_board_info rm31080a_macallan_spi_board[1] = {
- {
- .modalias = "rm_ts_spidev",
- .bus_num = 0,
- .chip_select = 0,
- .max_speed_hz = 12 * 1000 * 1000,
- .mode = SPI_MODE_0,
- .controller_data = &dev_cdata,
- .platform_data = &rm31080ts_macallan_data,
- },
-};
-
-static int __init macallan_touch_init(void)
-{
- tegra_clk_init_from_table(touch_clk_init_table);
- if (display_board_info.board_id == BOARD_E1582)
- rm31080ts_macallan_data.platform_id = RM_PLATFORM_P005;
- else
- rm31080ts_macallan_data.platform_id = RM_PLATFORM_D010;
- mdelay(20);
- rm31080a_macallan_spi_board[0].irq = gpio_to_irq(TOUCH_GPIO_IRQ_RAYDIUM_SPI);
- touch_init_raydium(TOUCH_GPIO_IRQ_RAYDIUM_SPI,
- TOUCH_GPIO_RST_RAYDIUM_SPI,
- &rm31080ts_macallan_data,
- &rm31080a_macallan_spi_board[0],
- ARRAY_SIZE(rm31080a_macallan_spi_board));
- return 0;
-}
-
-#ifdef CONFIG_USE_OF
-struct of_dev_auxdata macallan_auxdata_lookup[] __initdata = {
- OF_DEV_AUXDATA("nvidia,tegra114-sdhci", 0x78000600, "sdhci-tegra.3",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-sdhci", 0x78000400, "sdhci-tegra.2",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-sdhci", 0x78000000, "sdhci-tegra.0",
- &macallan_tegra_sdhci_platform_data0),
- OF_DEV_AUXDATA("nvidia,tegra114-camera", 0x0, "tegra_camera",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-host1x", TEGRA_HOST1X_BASE, "host1x",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr3d", TEGRA_GR3D_BASE, "gr3d",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr2d", TEGRA_GR2D_BASE, "gr2d",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-msenc", TEGRA_MSENC_BASE, "msenc",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-vi", TEGRA_VI_BASE, "vi",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-isp", TEGRA_ISP_BASE, "isp",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-tsec", TEGRA_TSEC_BASE, "tsec",
- NULL),
- T114_I2C_OF_DEV_AUXDATA,
- T114_SPI_OF_DEV_AUXDATA,
- OF_DEV_AUXDATA("nvidia,tegra114-nvavp", 0x60001000, "nvavp",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-pwm", 0x7000a000, "tegra-pwm", NULL),
- {}
-};
-#endif
-
-static void __init tegra_macallan_early_init(void)
-{
- tegra_clk_init_from_table(macallan_clk_init_table);
- tegra_clk_verify_parents();
- tegra_soc_device_init("macallan");
-}
-
-
-static void __init tegra_macallan_late_init(void)
-{
- macallan_i2c_init();
- macallan_usb_init();
- macallan_uart_init();
- macallan_audio_init();
- platform_add_devices(macallan_devices, ARRAY_SIZE(macallan_devices));
- tegra_io_dpd_init();
- macallan_regulator_init();
- macallan_sdhci_init();
- macallan_suspend_init();
- macallan_emc_init();
- macallan_edp_init();
- isomgr_init();
- macallan_touch_init();
- macallan_panel_init();
- macallan_kbc_init();
-#if defined CONFIG_TI_ST || defined CONFIG_TI_ST_MODULE
- macallan_bt_st();
- macallan_tegra_setup_st_host_wake();
-#endif
- macallan_modem_init();
-#ifdef CONFIG_TEGRA_WDT_RECOVERY
- tegra_wdt_recovery_init();
-#endif
- tegra_serial_debug_init(TEGRA_UARTD_BASE, INT_WDT_CPU, NULL, -1, -1);
- macallan_sensors_init();
- macallan_soctherm_init();
- tegra_register_fuse();
-}
-
-static void __init tegra_macallan_dt_init(void)
-{
- tegra_get_board_info(&board_info);
- tegra_get_display_board_info(&display_board_info);
-
- tegra_macallan_early_init();
-
-#ifdef CONFIG_USE_OF
- of_platform_populate(NULL,
- of_default_bus_match_table, macallan_auxdata_lookup,
- &platform_bus);
-#else
- platform_device_register(&tegra_gpio_device);
-#endif
-
- tegra_macallan_late_init();
-}
-
-static void __init tegra_macallan_reserve(void)
-{
-#if defined(CONFIG_NVMAP_CONVERT_CARVEOUT_TO_IOVMM)
- /* 1920*1200*4*2 = 18432000 bytes */
- tegra_reserve(0, SZ_16M + SZ_2M, SZ_16M + SZ_2M);
-#else
- tegra_reserve(SZ_128M, SZ_16M + SZ_2M, SZ_16M + SZ_2M);
-#endif
-}
-
-static const char * const macallan_dt_board_compat[] = {
- "nvidia,macallan",
- NULL
-};
-
-MACHINE_START(MACALLAN, "macallan")
- .atag_offset = 0x100,
- .smp = smp_ops(tegra_smp_ops),
- .map_io = tegra_map_common_io,
- .reserve = tegra_macallan_reserve,
- .init_early = tegra11x_init_early,
- .init_irq = irqchip_init,
- .init_time = clocksource_of_init,
- .init_machine = tegra_macallan_dt_init,
- .restart = tegra_assert_system_reset,
- .dt_compat = macallan_dt_board_compat,
-MACHINE_END
diff --git a/arch/arm/mach-tegra/board-macallan.h b/arch/arm/mach-tegra/board-macallan.h
deleted file mode 100644
index 8f38153125ac..000000000000
--- a/arch/arm/mach-tegra/board-macallan.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-macallan.h
- *
- * Copyright (c) 2013, NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _MACH_TEGRA_BOARD_MACALLAN_H
-#define _MACH_TEGRA_BOARD_MACALLAN_H
-
-#include <mach/irqs.h>
-#include "gpio-names.h"
-#include <linux/thermal.h>
-#include <linux/platform_data/thermal_sensors.h>
-#include "tegra11_soctherm.h"
-
-#define PMC_WAKE_STATUS 0x14
-#define PMC_WAKE2_STATUS 0x168
-
-/* External peripheral act as gpio */
-#define PALMAS_TEGRA_GPIO_BASE TEGRA_NR_GPIOS
-
-/* Audio-related GPIOs */
-#define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PW3
-#define TEGRA_GPIO_LDO1_EN TEGRA_GPIO_PV3
-#define TEGRA_GPIO_CODEC1_EN TEGRA_GPIO_PP3
-#define TEGRA_GPIO_CODEC2_EN TEGRA_GPIO_PP1
-#define TEGRA_GPIO_CODEC3_EN TEGRA_GPIO_PV0
-
-#define TEGRA_GPIO_SPKR_EN -1
-#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PR7
-#define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PK3
-#define TEGRA_GPIO_EXT_MIC_EN -1
-
-#define TEGRA_SOC_OC_IRQ_BASE TEGRA_NR_IRQS
-#define TEGRA_SOC_OC_NUM_IRQ TEGRA_SOC_OC_IRQ_MAX
-
-/* External peripheral act as interrupt controller */
-#define PALMAS_TEGRA_IRQ_BASE (TEGRA_SOC_OC_IRQ_BASE + TEGRA_SOC_OC_NUM_IRQ)
-#define PALMAS_TEGRA_IRQ_END (PALMAS_TEGRA_IRQ_BASE + PALMAS_NUM_IRQ)
-
-/* I2C related GPIOs */
-#define TEGRA_GPIO_I2C1_SCL TEGRA_GPIO_PC4
-#define TEGRA_GPIO_I2C1_SDA TEGRA_GPIO_PC5
-#define TEGRA_GPIO_I2C2_SCL TEGRA_GPIO_PT5
-#define TEGRA_GPIO_I2C2_SDA TEGRA_GPIO_PT6
-#define TEGRA_GPIO_I2C3_SCL TEGRA_GPIO_PBB1
-#define TEGRA_GPIO_I2C3_SDA TEGRA_GPIO_PBB2
-#define TEGRA_GPIO_I2C4_SCL TEGRA_GPIO_PV4
-#define TEGRA_GPIO_I2C4_SDA TEGRA_GPIO_PV5
-#define TEGRA_GPIO_I2C5_SCL TEGRA_GPIO_PZ6
-#define TEGRA_GPIO_I2C5_SDA TEGRA_GPIO_PZ7
-
-/* Camera related GPIOs */
-#define CAM_RSTN TEGRA_GPIO_PBB3
-#define CAM_FLASH_STROBE TEGRA_GPIO_PBB4
-#define CAM1_POWER_DWN_GPIO TEGRA_GPIO_PBB5
-#define CAM2_POWER_DWN_GPIO TEGRA_GPIO_PBB6
-#define CAM_AF_PWDN TEGRA_GPIO_PBB7
-#define CAM_GPIO1 TEGRA_GPIO_PCC1
-#define CAM_GPIO2 TEGRA_GPIO_PCC2
-
-/* Touchscreen definitions */
-#define TOUCH_GPIO_IRQ_RAYDIUM_SPI TEGRA_GPIO_PK2
-#define TOUCH_GPIO_RST_RAYDIUM_SPI TEGRA_GPIO_PK4
-
-/* Invensense MPU Definitions */
-#define MPU_GYRO_NAME "mpu6050"
-#define MPU_GYRO_IRQ_GPIO TEGRA_GPIO_PR3
-#define MPU_GYRO_ADDR 0x69
-#define MPU_GYRO_BUS_NUM 0
-#define MPU_GYRO_ORIENTATION { 0, 1, 0, 1, 0, 0, 0, 0, -1 }
-#define MPU_COMPASS_NAME "ak8975"
-#define MPU_COMPASS_IRQ_GPIO 0
-#define MPU_COMPASS_ADDR 0x0D
-#define MPU_COMPASS_BUS_NUM 0
-#define MPU_COMPASS_ORIENTATION { 0, 1, 0, 1, 0, 0, 0, 0, -1 }
-
-/* Modem related GPIOs */
-#define MODEM_EN TEGRA_GPIO_PP2
-#define MDM_RST TEGRA_GPIO_PP0
-#define MDM_COLDBOOT TEGRA_GPIO_PO5
-
-int macallan_regulator_init(void);
-int macallan_suspend_init(void);
-int macallan_sdhci_init(void);
-int macallan_sensors_init(void);
-int macallan_emc_init(void);
-int macallan_edp_init(void);
-int macallan_panel_init(void);
-int roth_panel_init(void);
-int macallan_kbc_init(void);
-int macallan_soctherm_init(void);
-
-
-extern struct tegra_sdhci_platform_data macallan_tegra_sdhci_platform_data0;
-
-/* UART port which is used by bluetooth*/
-#define BLUETOOTH_UART_DEV_NAME "/dev/ttyTHS2"
-
-/* Baseband IDs */
-enum tegra_bb_type {
- TEGRA_BB_NEMO = 1,
-};
-
-#define UTMI1_PORT_OWNER_XUSB 0x1
-#define UTMI2_PORT_OWNER_XUSB 0x2
-#define HSIC1_PORT_OWNER_XUSB 0x4
-
-#endif
diff --git a/arch/arm/mach-tegra/board-pismo-memory.c b/arch/arm/mach-tegra/board-pismo-memory.c
deleted file mode 100644
index 6526ad0f0c07..000000000000
--- a/arch/arm/mach-tegra/board-pismo-memory.c
+++ /dev/null
@@ -1,1620 +0,0 @@
-/*
- * Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307, USA
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_data/tegra_emc_pdata.h>
-
-#include "board.h"
-#include "board-pismo.h"
-
-#include "tegra-board-id.h"
-#include "tegra11_emc.h"
-#include "devices.h"
-
-static struct tegra11_emc_table e1611_h5tc4g63mfr_pba_table[] = {
- {
- 0x41, /* Rev 4.0.3 */
- 12750, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000003e, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000060, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000018, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000005, /* EMC_TXSR */
- 0x00000005, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000064, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x800001c6, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40040001, /* MC_EMEM_ARB_CFG */
- 0x8000003f, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x77e30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000000e, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 57820, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 20400, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000026, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000005, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x0000009a, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000026, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000006, /* EMC_TXSR */
- 0x00000006, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000001, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x000000a0, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000023a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40020001, /* MC_EMEM_ARB_CFG */
- 0x80000046, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x76230303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000014, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 35610, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 40800, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000012, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000001, /* EMC_RC */
- 0x0000000a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000001, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000134, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000004d, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000008, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000000c, /* EMC_TXSR */
- 0x0000000c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000002, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000013f, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000370, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0xa0000001, /* MC_EMEM_ARB_CFG */
- 0x8000005b, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74a30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000002a, /* MC_PTSA_GRANT_DECREMENT */
- 0x00b000b0, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00b000c4, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00d700eb, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000eb, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00eb00eb, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00eb, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 20850, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 68000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000000a, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000003, /* EMC_RC */
- 0x00000011, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000c, /* EMC_RDV_MASK */
- 0x00000202, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000080, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000000f, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000013, /* EMC_TXSR */
- 0x00000013, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000003, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000213, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000050e, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000001, /* MC_EMEM_ARB_CFG */
- 0x80000076, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74230403, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000c, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000c, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000046, /* MC_PTSA_GRANT_DECREMENT */
- 0x00690069, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00690075, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0081008d, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000008d, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x008d008d, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00bc008d, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000bc, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00bc00bc, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 10720, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 102000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000006, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000004, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000003, /* EMC_RAS */
- 0x00000001, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000001, /* EMC_RD_RCD */
- 0x00000001, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000c, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000018, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000001c, /* EMC_TXSR */
- 0x0000001c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000005, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000031c, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00060000, /* EMC_DLL_XFORM_DQS4 */
- 0x00060000, /* EMC_DLL_XFORM_DQS5 */
- 0x00060000, /* EMC_DLL_XFORM_DQS6 */
- 0x00060000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000714, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x08000001, /* MC_EMEM_ARB_CFG */
- 0x80000098, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000002, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0403, /* MC_EMEM_ARB_DA_COVERS */
- 0x73c30504, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000c, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00060000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000c, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS1 */
- 0x00060000, /* EMC_DLL_XFORM_DQS2 */
- 0x00060000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000068, /* MC_PTSA_GRANT_DECREMENT */
- 0x00460046, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0046004e, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0056005e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000005e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x005e005e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x007d005e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000007d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x007d007d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 6890, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000009, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000007, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x00000005, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000032, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000038, /* EMC_TXSR */
- 0x00000038, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000009, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000638, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x000000a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00064000, /* EMC_DLL_XFORM_DQS4 */
- 0x00064000, /* EMC_DLL_XFORM_DQS5 */
- 0x00064000, /* EMC_DLL_XFORM_DQS6 */
- 0x00064000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x05057404, /* EMC_XM2VTTGENPADCTRL */
- 0x0000001f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT */
- 0x000c000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d22, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000004, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0405, /* MC_EMEM_ARB_DA_COVERS */
- 0x73840a06, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00064000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS1 */
- 0x00064000, /* EMC_DLL_XFORM_DQS2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00064000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS1 */
- 0x00064000, /* EMC_DLL_XFORM_DQS2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 3420, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000012, /* EMC_RC */
- 0x00000069, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000d, /* EMC_RAS */
- 0x00000004, /* EMC_RP */
- 0x00000005, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000c, /* EMC_W2P */
- 0x00000004, /* EMC_RD_RCD */
- 0x00000004, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000c2f, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000030b, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000066, /* EMC_AR2PDEN */
- 0x00000011, /* EMC_RW2PDEN */
- 0x0000006f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000011, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000c70, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0x002c0080, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0003033d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03035504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT */
- 0x0158000c, /* EMC_MRS_WAIT_CNT2 */
- 0x07070707, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000404, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001944, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000008, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000e070a, /* MC_EMEM_ARB_DA_COVERS */
- 0x7547130b, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00018000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00008000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00018000, /* EMC_DLL_XFORM_DQ1 */
- 0x00018000, /* EMC_DLL_XFORM_DQ2 */
- 0x00018000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00018000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00008000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00018000, /* EMC_DLL_XFORM_DQ1 */
- 0x00018000, /* EMC_DLL_XFORM_DQ2 */
- 0x00018000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x73200006, /* EMC_CFG */
- 0x80000731, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 480000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000017, /* EMC_RC */
- 0x00000082, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000010, /* EMC_RAS */
- 0x00000005, /* EMC_RP */
- 0x00000005, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000d, /* EMC_W2P */
- 0x00000005, /* EMC_RD_RCD */
- 0x00000005, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x00000004, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000f23, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000003c8, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000b, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000007f, /* EMC_AR2PDEN */
- 0x00000012, /* EMC_RW2PDEN */
- 0x00000089, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000015, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000005, /* EMC_TCLKSTABLE */
- 0x00000006, /* EMC_TCLKSTOP */
- 0x00000f64, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf0140091, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0003033d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc084, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077704, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x013f000c, /* EMC_MRS_WAIT_CNT */
- 0x013f000c, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000808, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001f05, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x09000007, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000f080c, /* MC_EMEM_ARB_DA_COVERS */
- 0x7448170d, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000400b, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ2 */
- 0x0000400b, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x0079e79e, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000400b, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ2 */
- 0x0000400b, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000f6, /* MC_PTSA_GRANT_DECREMENT */
- 0x000f000f, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000f0010, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00120014, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000014, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00140014, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001a0014, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001a, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001a001a, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00b40055, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00b400b4, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x73200006, /* EMC_CFG */
- 0x80000931, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
-};
-
-static struct tegra11_emc_pdata e1611_h5tc4g63mfr_pba_pdata = {
- .description = "e1611_h5tc4g63mfr_pba",
- .tables = e1611_h5tc4g63mfr_pba_table,
- .num_tables = ARRAY_SIZE(e1611_h5tc4g63mfr_pba_table),
-};
-
-static struct tegra11_emc_pdata *pismo_get_emc_data(void)
-{
-
- /* load T40T Table */
- return &e1611_h5tc4g63mfr_pba_pdata;
-}
-
-int __init pismo_emc_init(void)
-{
- tegra_emc_device.dev.platform_data = pismo_get_emc_data();
- platform_device_register(&tegra_emc_device);
- tegra11_emc_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-pismo-panel.c b/arch/arm/mach-tegra/board-pismo-panel.c
deleted file mode 100644
index 3e149e47e859..000000000000
--- a/arch/arm/mach-tegra/board-pismo-panel.c
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pismo-panel.c
- *
- * Copyright (c) 2011-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#include <linux/ioport.h>
-#include <linux/fb.h>
-#include <linux/nvmap.h>
-#include <linux/nvhost.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/tegra_pwm_bl.h>
-#include <linux/regulator/consumer.h>
-#include <linux/pwm_backlight.h>
-#include <linux/of.h>
-
-#include <mach/irqs.h>
-#include <mach/dc.h>
-
-#include "board.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "board-panel.h"
-#include "common.h"
-#include "iomap.h"
-#include "tegra11_host1x_devices.h"
-
-#define DSI_PANEL_RST_GPIO TEGRA_GPIO_PH3
-#define DSI_PANEL_BL_PWM_GPIO TEGRA_GPIO_PH1
-
-struct platform_device * __init pismo_host1x_init(void)
-{
- struct platform_device *pdev = NULL;
-
-#ifdef CONFIG_TEGRA_GRHOST
- if (!of_have_populated_dt())
- pdev = tegra11_register_host1x_devices();
- else
- pdev = to_platform_device(bus_find_device_by_name(
- &platform_bus_type, NULL, "host1x"));
-#endif
- return pdev;
-}
-
-/* HDMI Hotplug detection pin */
-#define pismo_hdmi_hpd TEGRA_GPIO_PN7
-
-static struct regulator *pismo_hdmi_reg;
-static struct regulator *pismo_hdmi_pll;
-static struct regulator *pismo_hdmi_vddio;
-
-static struct resource pismo_disp1_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_GENERAL,
- .end = INT_DISPLAY_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY_BASE,
- .end = TEGRA_DISPLAY_BASE + TEGRA_DISPLAY_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by pismo_panel_init() */
- .end = 0, /* Filled in by pismo_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "ganged_dsia_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "ganged_dsib_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "dsi_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "mipi_cal",
- .start = TEGRA_MIPI_CAL_BASE,
- .end = TEGRA_MIPI_CAL_BASE + TEGRA_MIPI_CAL_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource pismo_disp2_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_B_GENERAL,
- .end = INT_DISPLAY_B_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY2_BASE,
- .end = TEGRA_DISPLAY2_BASE + TEGRA_DISPLAY2_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by pismo_panel_init() */
- .end = 0, /* Filled in by pismo_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "hdmi_regs",
- .start = TEGRA_HDMI_BASE,
- .end = TEGRA_HDMI_BASE + TEGRA_HDMI_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-
-static struct tegra_dc_sd_settings sd_settings;
-
-static struct tegra_dc_out pismo_disp1_out = {
- .type = TEGRA_DC_OUT_DSI,
- .sd_settings = &sd_settings,
-};
-
-static int pismo_hdmi_enable(struct device *dev)
-{
- int ret;
- if (!pismo_hdmi_reg) {
- pismo_hdmi_reg = regulator_get(dev, "avdd_hdmi");
- if (IS_ERR(pismo_hdmi_reg)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi\n");
- pismo_hdmi_reg = NULL;
- return PTR_ERR(pismo_hdmi_reg);
- }
- }
- ret = regulator_enable(pismo_hdmi_reg);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi\n");
- return ret;
- }
- if (!pismo_hdmi_pll) {
- pismo_hdmi_pll = regulator_get(dev, "avdd_hdmi_pll");
- if (IS_ERR(pismo_hdmi_pll)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi_pll\n");
- pismo_hdmi_pll = NULL;
- regulator_put(pismo_hdmi_reg);
- pismo_hdmi_reg = NULL;
- return PTR_ERR(pismo_hdmi_pll);
- }
- }
- ret = regulator_enable(pismo_hdmi_pll);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi_pll\n");
- return ret;
- }
- return 0;
-}
-
-static int pismo_hdmi_disable(void)
-{
- if (pismo_hdmi_reg) {
- regulator_disable(pismo_hdmi_reg);
- regulator_put(pismo_hdmi_reg);
- pismo_hdmi_reg = NULL;
- }
-
- if (pismo_hdmi_pll) {
- regulator_disable(pismo_hdmi_pll);
- regulator_put(pismo_hdmi_pll);
- pismo_hdmi_pll = NULL;
- }
-
- return 0;
-}
-
-static int pismo_hdmi_postsuspend(void)
-{
- if (pismo_hdmi_vddio) {
- regulator_disable(pismo_hdmi_vddio);
- regulator_put(pismo_hdmi_vddio);
- pismo_hdmi_vddio = NULL;
- }
- return 0;
-}
-
-static int pismo_hdmi_hotplug_init(struct device *dev)
-{
- int ret = 0;
- if (!pismo_hdmi_vddio) {
- pismo_hdmi_vddio = regulator_get(dev, "vdd_hdmi_5v0");
- if (WARN_ON(IS_ERR(pismo_hdmi_vddio))) {
- pr_err("%s: couldn't get regulator vdd_hdmi_5v0: %ld\n",
- __func__, PTR_ERR(pismo_hdmi_vddio));
- pismo_hdmi_vddio = NULL;
- ret = -EINVAL;
- } else {
- ret = regulator_enable(pismo_hdmi_vddio);
- if (ret)
- pr_err("Pismo_hdmi regulator enable failed\n");
- }
- }
- return ret;
-}
-
-static struct tegra_dc_out pismo_disp2_out = {
- .type = TEGRA_DC_OUT_HDMI,
- .flags = TEGRA_DC_OUT_HOTPLUG_HIGH,
- .parent_clk = "pll_d2_out0",
-
- .ddc_bus = 3,
- .hotplug_gpio = pismo_hdmi_hpd,
-
- .max_pixclock = KHZ2PICOS(148500),
-
- .align = TEGRA_DC_ALIGN_MSB,
- .order = TEGRA_DC_ORDER_RED_BLUE,
-
- .enable = pismo_hdmi_enable,
- .disable = pismo_hdmi_disable,
- .postsuspend = pismo_hdmi_postsuspend,
- .hotplug_init = pismo_hdmi_hotplug_init,
-};
-
-static struct tegra_fb_data pismo_disp1_fb_data = {
- .win = 0,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
-};
-
-static struct tegra_dc_platform_data pismo_disp1_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &pismo_disp1_out,
- .fb = &pismo_disp1_fb_data,
- .emc_clk_rate = 204000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
-#endif
-};
-
-static struct tegra_fb_data pismo_disp2_fb_data = {
- .win = 0,
- .xres = 1280,
- .yres = 720,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
-};
-
-static struct tegra_dc_platform_data pismo_disp2_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &pismo_disp2_out,
- .fb = &pismo_disp2_fb_data,
- .emc_clk_rate = 300000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
-#endif
-};
-
-static struct platform_device pismo_disp2_device = {
- .name = "tegradc",
- .id = 1,
- .resource = pismo_disp2_resources,
- .num_resources = ARRAY_SIZE(pismo_disp2_resources),
- .dev = {
- .platform_data = &pismo_disp2_pdata,
- },
-};
-
-static struct platform_device pismo_disp1_device = {
- .name = "tegradc",
- .id = 0,
- .resource = pismo_disp1_resources,
- .num_resources = ARRAY_SIZE(pismo_disp1_resources),
- .dev = {
- .platform_data = &pismo_disp1_pdata,
- },
-};
-
-static struct nvmap_platform_carveout pismo_carveouts[] = {
- [0] = {
- .name = "iram",
- .usage_mask = NVMAP_HEAP_CARVEOUT_IRAM,
- .base = TEGRA_IRAM_BASE + TEGRA_RESET_HANDLER_SIZE,
- .size = TEGRA_IRAM_SIZE - TEGRA_RESET_HANDLER_SIZE,
- },
- [1] = {
- .name = "generic-0",
- .usage_mask = NVMAP_HEAP_CARVEOUT_GENERIC,
- .base = 0, /* Filled in by pismo_panel_init() */
- .size = 0, /* Filled in by pismo_panel_init() */
- },
- [2] = {
- .name = "vpr",
- .usage_mask = NVMAP_HEAP_CARVEOUT_VPR,
- .base = 0, /* Filled in by pismo_panel_init() */
- .size = 0, /* Filled in by pismo_panel_init() */
- },
-};
-
-static struct nvmap_platform_data pismo_nvmap_data = {
- .carveouts = pismo_carveouts,
- .nr_carveouts = ARRAY_SIZE(pismo_carveouts),
-};
-static struct platform_device pismo_nvmap_device = {
- .name = "tegra-nvmap",
- .id = -1,
- .dev = {
- .platform_data = &pismo_nvmap_data,
- },
-};
-
-static void pismo_panel_select(void)
-{
- struct tegra_panel *panel = NULL;
-
- panel = &dsi_a_1080p_11_6;
- if (panel) {
- if (panel->init_sd_settings)
- panel->init_sd_settings(&sd_settings);
-
- if (panel->init_dc_out) {
- panel->init_dc_out(&pismo_disp1_out);
- pismo_disp1_out.dsi->dsi_instance = DSI_INSTANCE_0;
- pismo_disp1_out.dsi->dsi_panel_rst_gpio =
- DSI_PANEL_RST_GPIO;
- pismo_disp1_out.dsi->dsi_panel_bl_pwm_gpio =
- DSI_PANEL_BL_PWM_GPIO;
- }
-
- if (panel->init_fb_data)
- panel->init_fb_data(&pismo_disp1_fb_data);
-
- if (panel->init_cmu_data)
- panel->init_cmu_data(&pismo_disp1_pdata);
-
- if (panel->set_disp_device)
- panel->set_disp_device(&pismo_disp1_device);
-
- tegra_dsi_resources_init(pismo_disp1_out.dsi->dsi_instance,
- pismo_disp1_resources,
- ARRAY_SIZE(pismo_disp1_resources));
-
- if (panel->register_bl_dev)
- panel->register_bl_dev();
-
- if (panel->register_i2c_bridge)
- panel->register_i2c_bridge();
- }
-
-}
-int __init pismo_panel_init(void)
-{
- int err = 0;
- struct resource __maybe_unused *res;
- struct platform_device *phost1x = NULL;
-
- pismo_panel_select();
-
-#ifdef CONFIG_TEGRA_NVMAP
- pismo_carveouts[1].base = tegra_carveout_start;
- pismo_carveouts[1].size = tegra_carveout_size;
- pismo_carveouts[2].base = tegra_vpr_start;
- pismo_carveouts[2].size = tegra_vpr_size;
-
- err = platform_device_register(&pismo_nvmap_device);
- if (err) {
- pr_err("nvmap device registration failed\n");
- return err;
- }
-#endif
-
- phost1x = pismo_host1x_init();
- if (!phost1x) {
- pr_err("host1x devices registration failed\n");
- return -EINVAL;
- }
-
- res = platform_get_resource_byname(&pismo_disp1_device,
- IORESOURCE_MEM, "fbmem");
- res->start = tegra_fb_start;
- res->end = tegra_fb_start + tegra_fb_size - 1;
-
- /* Copy the bootloader fb to the fb. */
- __tegra_move_framebuffer(&pismo_nvmap_device,
- tegra_fb_start, tegra_bootloader_fb_start,
- min(tegra_fb_size, tegra_bootloader_fb_size));
-
- pismo_disp1_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&pismo_disp1_device);
- if (err) {
- pr_err("disp1 device registration failed\n");
- return err;
- }
-
- err = tegra_init_hdmi(&pismo_disp2_device, phost1x);
- if (err)
- return err;
-
-#ifdef CONFIG_TEGRA_NVAVP
- if (!of_have_populated_dt()) {
- nvavp_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&nvavp_device);
- if (err) {
- pr_err("nvavp device registration failed\n");
- return err;
- }
- }
-#endif
- return err;
-}
diff --git a/arch/arm/mach-tegra/board-pismo-power.c b/arch/arm/mach-tegra/board-pismo-power.c
deleted file mode 100644
index fcc45b90fbf7..000000000000
--- a/arch/arm/mach-tegra/board-pismo-power.c
+++ /dev/null
@@ -1,919 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pismo-power.c
- *
- * Copyright (c) 2012-2013 NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/i2c.h>
-#include <linux/pda_power.h>
-#include <linux/platform_device.h>
-#include <linux/resource.h>
-#include <linux/io.h>
-#include <linux/regulator/machine.h>
-#include <linux/regulator/driver.h>
-#include <linux/regulator/fixed.h>
-#include <linux/mfd/as3720.h>
-#include <linux/gpio.h>
-#include <linux/regulator/userspace-consumer.h>
-
-#include <asm/mach-types.h>
-
-#include <mach/irqs.h>
-#include <mach/edp.h>
-#include <mach/gpio-tegra.h>
-
-#include "cpu-tegra.h"
-#include "pm.h"
-#include "tegra-board-id.h"
-#include "board.h"
-#include "gpio-names.h"
-#include "board-common.h"
-#include "board-pismo.h"
-#include "tegra_cl_dvfs.h"
-#include "devices.h"
-#include "tegra11_soctherm.h"
-#include "iomap.h"
-
-#define PMC_CTRL 0x0
-#define PMC_CTRL_INTR_LOW (1 << 17)
-
-static struct regulator_consumer_supply as3720_ldo0_supply[] = {
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegra_camera"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.1"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.2"),
-};
-
-static struct regulator_consumer_supply as3720_ldo1_supply[] = {
- REGULATOR_SUPPLY("vddio_cam", "tegra_camera"),
- REGULATOR_SUPPLY("pwrdet_cam", NULL),
-};
-
-static struct regulator_consumer_supply as3720_ldo2_supply[] = {
- REGULATOR_SUPPLY("vpp_fuse", NULL),
-};
-
-static struct regulator_consumer_supply as3720_ldo3_supply[] = {
- REGULATOR_SUPPLY("vdd_rtc", NULL),
-};
-
-static struct regulator_consumer_supply as3720_ldo5_supply[] = {
- REGULATOR_SUPPLY("vdd_sensor_2v85", NULL),
- REGULATOR_SUPPLY("vdd_als", NULL),
- REGULATOR_SUPPLY("vdd", "0-004c"),
- REGULATOR_SUPPLY("vdd", "0-0069"),
-};
-
-static struct regulator_consumer_supply as3720_ldo6_supply[] = {
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.2"),
- REGULATOR_SUPPLY("pwrdet_sdmmc3", NULL),
-};
-
-static struct regulator_consumer_supply as3720_ldo8_supply[] = {
- REGULATOR_SUPPLY("hvdd_usb", "tegra-ehci.2"),
-};
-
-static struct regulator_consumer_supply as3720_sd0_supply[] = {
- REGULATOR_SUPPLY("vdd_cpu", NULL),
-};
-
-static struct regulator_consumer_supply as3720_sd1_supply[] = {
- REGULATOR_SUPPLY("vdd_core", NULL),
-};
-
-static struct regulator_consumer_supply as3720_sd2_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"),
- REGULATOR_SUPPLY("vcore_emmc", NULL),
- REGULATOR_SUPPLY("avdd", "reg-userspace-consumer.2"),
- REGULATOR_SUPPLY("vdd_af_cam1", NULL),
-};
-
-static struct regulator_consumer_supply as3720_sd3_supply[] = {
- REGULATOR_SUPPLY("vdd_emmc", NULL),
- REGULATOR_SUPPLY("vddio_sys", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("pwrdet_sdmmc1", NULL),
- REGULATOR_SUPPLY("vddio_bb", NULL),
- REGULATOR_SUPPLY("pwrdet_bb", NULL),
- REGULATOR_SUPPLY("vddio_uart", NULL),
- REGULATOR_SUPPLY("pwrdet_uart", NULL),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_osc", NULL),
- REGULATOR_SUPPLY("vddio_gmi", NULL),
- REGULATOR_SUPPLY("pwrdet_nand", NULL),
- REGULATOR_SUPPLY("vddio_audio", NULL),
- REGULATOR_SUPPLY("pwrdet_audio", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("pwrdet_sdmmc4", NULL),
- REGULATOR_SUPPLY("pwrdet_mipi", NULL),
- REGULATOR_SUPPLY("dvdd", "reg-userspace-consumer.1"),
- REGULATOR_SUPPLY("dvdd", "bcm4329_wlan.1"),
- REGULATOR_SUPPLY("dvdd", "reg-userspace-consumer.2"),
-};
-
-static struct regulator_consumer_supply as3720_sd4_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_plle", NULL),
- REGULATOR_SUPPLY("avdd_pllm", NULL),
- REGULATOR_SUPPLY("avdd_pllu", NULL),
- REGULATOR_SUPPLY("avdd_pllx", NULL),
- REGULATOR_SUPPLY("avdd_plla_p_c", NULL),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegra_camera"),
- REGULATOR_SUPPLY("vddio_ddr_hs", NULL),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avddio_usb", NULL),
-};
-
-static struct regulator_consumer_supply as3720_sd5_supply[] = {
- REGULATOR_SUPPLY("avdd_usb", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("vddio_hv", "tegradc.1"),
- REGULATOR_SUPPLY("pwrdet_hv", NULL),
- REGULATOR_SUPPLY("avdd", "reg-userspace-consumer.1"),
- REGULATOR_SUPPLY("avdd", "bcm4329_wlan.1"),
-};
-
-static struct regulator_consumer_supply as3720_sd6_supply[] = {
- REGULATOR_SUPPLY("vddio_ddr", NULL),
- REGULATOR_SUPPLY("vddio_ddr0", NULL),
- REGULATOR_SUPPLY("vddio_ddr1", NULL),
-};
-
-static struct regulator_init_data as3720_ldo0 = {
- .constraints = {
- .min_uV = 1200000,
- .max_uV = 1200000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = false,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_ldo0_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_ldo0_supply),
-};
-
-static struct regulator_init_data as3720_ldo1 = {
- .constraints = {
- .min_uV = 1800000,
- .max_uV = 1800000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_ldo1_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_ldo1_supply),
-};
-
-static struct regulator_init_data as3720_ldo2 = {
- .constraints = {
- .min_uV = 1800000,
- .max_uV = 1800000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = false,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_ldo2_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_ldo2_supply),
-};
-
-static struct regulator_init_data as3720_ldo3 = {
- .constraints = {
- .min_uV = 1100000,
- .max_uV = 1100000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_ldo3_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_ldo3_supply),
-};
-
-static struct regulator_init_data as3720_ldo5 = {
- .constraints = {
- .min_uV = 3300000,
- .max_uV = 3300000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_ldo5_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_ldo5_supply),
-};
-static struct regulator_init_data as3720_ldo6 = {
- .constraints = {
- .min_uV = 1800000,
- .max_uV = 3300000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = false,
- .boot_on = 0,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_ldo6_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_ldo6_supply),
-};
-
-static struct regulator_init_data as3720_ldo8 = {
- .constraints = {
- .min_uV = 3300000,
- .max_uV = 3300000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_ldo8_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_ldo8_supply),
-};
-
-static struct regulator_init_data as3720_sd0 = {
- .constraints = {
- .min_uV = 1100000,
- .max_uV = 1100000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_sd0_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_sd0_supply),
-};
-
-static struct regulator_init_data as3720_sd1 = {
- .constraints = {
- .min_uV = 900000,
- .max_uV = 1400000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 0,
- },
- .consumer_supplies = as3720_sd1_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_sd1_supply),
-};
-
-static struct regulator_init_data as3720_sd2 = {
- .constraints = {
- .min_uV = 2850000,
- .max_uV = 3300000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_sd2_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_sd2_supply),
-};
-
-static struct regulator_init_data as3720_sd3 = {
- .constraints = {
- .min_uV = 1800000,
- .max_uV = 1800000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_sd3_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_sd3_supply),
-};
-
-static struct regulator_init_data as3720_sd4 = {
- .constraints = {
- .min_uV = 1050000,
- .max_uV = 1050000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_sd4_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_sd4_supply),
-};
-
-static struct regulator_init_data as3720_sd5 = {
- .constraints = {
- .min_uV = 3300000,
- .max_uV = 3300000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_sd5_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_sd5_supply),
-};
-
-static struct regulator_init_data as3720_sd6 = {
- .constraints = {
- .min_uV = 1350000,
- .max_uV = 1350000,
- .valid_modes_mask = REGULATOR_MODE_NORMAL
- | REGULATOR_MODE_STANDBY,
- .valid_ops_mask = REGULATOR_CHANGE_MODE
- | REGULATOR_CHANGE_STATUS
- | REGULATOR_CHANGE_VOLTAGE,
- .always_on = true,
- .boot_on = 1,
- .apply_uV = 1,
- },
- .consumer_supplies = as3720_sd6_supply,
- .num_consumer_supplies = ARRAY_SIZE(as3720_sd6_supply),
-};
-
-static struct as3720_reg_init as3720_core_init_data[] = {
- /* disable all regulators */
- AS3720_REG_INIT(AS3720_SD_CONTROL_REG, 0x7f),
- AS3720_REG_INIT(AS3720_LDOCONTROL0_REG, 0xef),
- AS3720_REG_INIT(AS3720_LDOCONTROL1_REG, 0x01),
- /* set to lowest voltage output */
- /* set to OTP settings */
- AS3720_REG_INIT(AS3720_SD0_VOLTAGE_REG, 0x32),
- AS3720_REG_INIT(AS3720_SD1_VOLTAGE_REG, 0x32),
- AS3720_REG_INIT(AS3720_SD2_VOLTAGE_REG, 0xFF),
- AS3720_REG_INIT(AS3720_SD3_VOLTAGE_REG, 0xD0),
- AS3720_REG_INIT(AS3720_SD4_VOLTAGE_REG, 0xA4),
- AS3720_REG_INIT(AS3720_SD5_VOLTAGE_REG, 0xFE),
- AS3720_REG_INIT(AS3720_SD6_VOLTAGE_REG, 0x52),
- AS3720_REG_INIT(AS3720_LDO0_VOLTAGE_REG, 0x90),
- AS3720_REG_INIT(AS3720_LDO1_VOLTAGE_REG, 0x43),
- AS3720_REG_INIT(AS3720_LDO2_VOLTAGE_REG, 0x43),
- AS3720_REG_INIT(AS3720_LDO3_VOLTAGE_REG, 0xA8),
- AS3720_REG_INIT(AS3720_LDO4_VOLTAGE_REG, 0x00),
- AS3720_REG_INIT(AS3720_LDO5_VOLTAGE_REG, 0xff),
- AS3720_REG_INIT(AS3720_LDO6_VOLTAGE_REG, 0xff),
- AS3720_REG_INIT(AS3720_LDO7_VOLTAGE_REG, 0x90),
- AS3720_REG_INIT(AS3720_LDO8_VOLTAGE_REG, 0x7F),
- AS3720_REG_INIT(AS3720_LDO9_VOLTAGE_REG, 0x00),
- AS3720_REG_INIT(AS3720_LDO10_VOLTAGE_REG, 0x00),
- AS3720_REG_INIT(AS3720_LDO11_VOLTAGE_REG, 0x00),
- {.reg = AS3720_REG_INIT_TERMINATE},
-};
-
-/* config settings are OTP plus initial state
- * GPIOsignal_out at 20h not configurable through OTP and is initialized to
- * zero. To enable output, the invert bit must be turned on.
- * GPIOxcontrol register format
- * bit(s) bitname
- * ---------------------
- * 7 gpiox_invert invert input or output
- * 6:3 gpiox_iosf 0: normal
- * 2:0 gpiox_mode 0: input, 1: output push/pull, 3: ADC input (tristate)
- *
- * Examples:
- * otp meaning
- * ------------
- * 0x3 gpiox_invert=0(no invert), gpiox_iosf=0(normal), gpiox_mode=3(ADC input)
- * 0x81 gpiox_invert=1(invert), gpiox_iosf=0(normal), gpiox_mode=1(output)
- *
- * Note: output state should be defined for gpiox_mode = output. Do not change
- * the state of the invert bit for critical devices such as GPIO 7 which enables
- * SDRAM. Driver applies invert mask to output state to configure GPIOsignal_out
- * register correctly.
- * E.g. Invert = 1, (requested) output state = 1 => GPIOsignal_out = 0
- */
-
-static struct as3720_gpio_config as3720_gpio_cfgs[] = {
- {
- /* otp = 0x3 */
- .gpio = AS3720_GPIO0,
- .mode = AS3720_GPIO_MODE_ADC_IN,
- },
- {
- /* otp = 0x3 */
- .gpio = AS3720_GPIO1,
- .mode = AS3720_GPIO_MODE_ADC_IN,
- },
- {
- /* otp = 0x3 */
- .gpio = AS3720_GPIO2,
- .mode = AS3720_GPIO_MODE_ADC_IN,
- },
- {
- /* otp = 0x01 => REGEN_3 = LP0 gate (1.8V, 5 V) */
- .gpio = AS3720_GPIO3,
- .invert = AS3720_GPIO_CFG_INVERT, /* don't go into LP0 */
- .mode = AS3720_GPIO_MODE_OUTPUT_VDDH,
- .output_state = AS3720_GPIO_CFG_OUTPUT_ENABLED,
- },
- {
- /* otp = 0x81 => on by default
- * gates SDMMC3
- */
- .gpio = AS3720_GPIO4,
- .invert = AS3720_GPIO_CFG_NO_INVERT,
- .mode = AS3720_GPIO_MODE_OUTPUT_VDDH,
- .output_state = AS3720_GPIO_CFG_OUTPUT_DISABLED,
- },
- {
- /* otp = 0x3 EN_MIC_BIAS_L */
- .gpio = AS3720_GPIO5,
- .mode = AS3720_GPIO_MODE_ADC_IN,
- },
- {
- /* otp = 0x3 CAM_LDO1_EN */
- .gpio = AS3720_GPIO6,
- .mode = AS3720_GPIO_MODE_ADC_IN,
- },
- {
- /* otp = 0x81 */
- .gpio = AS3720_GPIO7,
- .invert = AS3720_GPIO_CFG_INVERT,
- .mode = AS3720_GPIO_MODE_OUTPUT_VDDH,
- .output_state = AS3720_GPIO_CFG_OUTPUT_ENABLED,
- },
-};
-
-static struct as3720_platform_data as3720_pdata = {
- .reg_init[AS3720_LDO0] = &as3720_ldo0,
- .reg_init[AS3720_LDO1] = &as3720_ldo1,
- .reg_init[AS3720_LDO2] = &as3720_ldo2,
- .reg_init[AS3720_LDO3] = &as3720_ldo3,
- .reg_init[AS3720_LDO5] = &as3720_ldo5,
- .reg_init[AS3720_LDO6] = &as3720_ldo6,
- .reg_init[AS3720_LDO8] = &as3720_ldo8,
- .reg_init[AS3720_SD0] = &as3720_sd0,
- .reg_init[AS3720_SD1] = &as3720_sd1,
- .reg_init[AS3720_SD2] = &as3720_sd2,
- .reg_init[AS3720_SD3] = &as3720_sd3,
- .reg_init[AS3720_SD4] = &as3720_sd4,
- .reg_init[AS3720_SD5] = &as3720_sd5,
- .reg_init[AS3720_SD6] = &as3720_sd6,
-
- .core_init_data = &as3720_core_init_data[0],
- .gpio_base = AS3720_GPIO_BASE,
- .rtc_start_year = 2010,
-
- .num_gpio_cfgs = ARRAY_SIZE(as3720_gpio_cfgs),
- .gpio_cfgs = as3720_gpio_cfgs,
-};
-
-static struct i2c_board_info __initdata as3720_regulators[] = {
- {
- I2C_BOARD_INFO("as3720", 0x40),
- .flags = I2C_CLIENT_WAKE,
- .irq = INT_EXTERNAL_PMU,
- .platform_data = &as3720_pdata,
- },
-};
-
-int __init pismo_as3720_regulator_init(void)
-{
- printk(KERN_INFO "%s: i2c_register_board_info\n",
- __func__);
- i2c_register_board_info(4, as3720_regulators,
- ARRAY_SIZE(as3720_regulators));
- return 0;
-}
-
-static int ac_online(void)
-{
- return 1;
-}
-
-static struct resource pismo_pda_resources[] = {
- [0] = {
- .name = "ac",
- },
-};
-
-static struct pda_power_pdata pismo_pda_data = {
- .is_ac_online = ac_online,
-};
-
-static struct platform_device pismo_pda_power_device = {
- .name = "pda-power",
- .id = -1,
- .resource = pismo_pda_resources,
- .num_resources = ARRAY_SIZE(pismo_pda_resources),
- .dev = {
- .platform_data = &pismo_pda_data,
- },
-};
-
-static struct tegra_suspend_platform_data pismo_suspend_data = {
- .cpu_timer = 2000,
- .cpu_off_timer = 2000,
- .suspend_mode = TEGRA_SUSPEND_NONE,
- .core_timer = 0x7e7e,
- .core_off_timer = 2000,
- .corereq_high = true,
- .sysclkreq_high = true,
- .cpu_lp2_min_residency = 1000,
-};
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-/* board parameters for cpu dfll */
-static struct tegra_cl_dvfs_cfg_param pismo_cl_dvfs_param = {
- .sample_rate = 12500,
-
- .force_mode = TEGRA_CL_DVFS_FORCE_FIXED,
- .cf = 10,
- .ci = 0,
- .cg = 2,
-
- .droop_cut_value = 0xF,
- .droop_restore_ramp = 0x0,
- .scale_out_ramp = 0x0,
-};
-#endif
-
-/* TPS51632: fixed 10mV steps from 600mV to 1400mV, with offset 0x23 */
-#define PMU_CPU_VDD_MAP_SIZE ((1400000 - 600000) / 10000 + 1)
-static struct voltage_reg_map pmu_cpu_vdd_map[PMU_CPU_VDD_MAP_SIZE];
-static inline void fill_reg_map(void)
-{
- int i;
- for (i = 0; i < PMU_CPU_VDD_MAP_SIZE; i++) {
- pmu_cpu_vdd_map[i].reg_value = i + 0x23;
- pmu_cpu_vdd_map[i].reg_uV = 600000 + 10000 * i;
- }
-}
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-static struct tegra_cl_dvfs_platform_data pismo_cl_dvfs_data = {
- .dfll_clk_name = "dfll_cpu",
- .pmu_if = TEGRA_CL_DVFS_PMU_I2C,
- .u.pmu_i2c = {
- .fs_rate = 400000,
- .slave_addr = 0x86,
- .reg = 0x00,
- },
- .vdd_map = pmu_cpu_vdd_map,
- .vdd_map_size = PMU_CPU_VDD_MAP_SIZE,
-
- .cfg_param = &pismo_cl_dvfs_param,
-};
-
-static int __init pismo_cl_dvfs_init(void)
-{
- fill_reg_map();
- tegra_cl_dvfs_device.dev.platform_data = &pismo_cl_dvfs_data;
- platform_device_register(&tegra_cl_dvfs_device);
-
- return 0;
-}
-#endif
-
-static struct regulator_bulk_data pismo_gps_regulator_supply[] = {
- [0] = {
- .supply = "avdd",
- },
- [1] = {
- .supply = "dvdd",
- },
-};
-
-static struct regulator_userspace_consumer_data pismo_gps_regulator_pdata = {
- .num_supplies = ARRAY_SIZE(pismo_gps_regulator_supply),
- .supplies = pismo_gps_regulator_supply,
-};
-
-static struct platform_device pismo_gps_regulator_device = {
- .name = "reg-userspace-consumer",
- .id = 2,
- .dev = {
- .platform_data = &pismo_gps_regulator_pdata,
- },
-};
-
-static struct regulator_bulk_data pismo_bt_regulator_supply[] = {
- [0] = {
- .supply = "avdd",
- },
- [1] = {
- .supply = "dvdd",
- },
-};
-
-static struct regulator_userspace_consumer_data pismo_bt_regulator_pdata = {
- .num_supplies = ARRAY_SIZE(pismo_bt_regulator_supply),
- .supplies = pismo_bt_regulator_supply,
-};
-
-static struct platform_device pismo_bt_regulator_device = {
- .name = "reg-userspace-consumer",
- .id = 1,
- .dev = {
- .platform_data = &pismo_bt_regulator_pdata,
- },
-};
-
-/* Gated by CAM_LDO1_EN From AMS7230 GPIO6*/
-static struct regulator_consumer_supply fixed_reg_en_1v8_cam_supply[] = {
- REGULATOR_SUPPLY("dvdd_cam", NULL),
- REGULATOR_SUPPLY("vdd_cam_1v8", NULL),
- REGULATOR_SUPPLY("vi2c", "2-0030"),
- REGULATOR_SUPPLY("vif", "2-0036"),
- REGULATOR_SUPPLY("dovdd", "2-0010"),
- REGULATOR_SUPPLY("vdd_i2c", "2-000e"),
-};
-
-/* Gated by PMU_REGEN3 From AMS7230 GPIO3*/
-static struct regulator_consumer_supply fixed_reg_vdd_hdmi_5v0_supply[] = {
- REGULATOR_SUPPLY("vdd_hdmi_5v0", "tegradc.1"),
-};
-
-/* Not gated */
-static struct regulator_consumer_supply fixed_reg_usb1_vbus_supply[] = {
- REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.0"),
- REGULATOR_SUPPLY("usb_vbus", "tegra-otg"),
-};
-
-/* Not Gated */
-static struct regulator_consumer_supply fixed_reg_usb3_vbus_supply[] = {
- REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.2"),
-};
-
-/* Macro for defining fixed regulator sub device data */
-#define FIXED_SUPPLY(_name) "fixed_reg_"#_name
-#define FIXED_REG(_id, _var, _name, _always_on, _boot_on, \
- _gpio_nr, _open_drain, _active_high, _boot_state, _millivolts) \
- static struct regulator_init_data ri_data_##_var = \
- { \
- .num_consumer_supplies = \
- ARRAY_SIZE(fixed_reg_##_name##_supply), \
- .consumer_supplies = fixed_reg_##_name##_supply, \
- .constraints = { \
- .valid_modes_mask = (REGULATOR_MODE_NORMAL | \
- REGULATOR_MODE_STANDBY), \
- .valid_ops_mask = (REGULATOR_CHANGE_MODE | \
- REGULATOR_CHANGE_STATUS | \
- REGULATOR_CHANGE_VOLTAGE), \
- .always_on = _always_on, \
- .boot_on = _boot_on, \
- }, \
- }; \
- static struct fixed_voltage_config fixed_reg_##_var##_pdata = \
- { \
- .supply_name = FIXED_SUPPLY(_name), \
- .microvolts = _millivolts * 1000, \
- .gpio = _gpio_nr, \
- .gpio_is_open_drain = _open_drain, \
- .enable_high = _active_high, \
- .enabled_at_boot = _boot_state, \
- .init_data = &ri_data_##_var, \
- }; \
- static struct platform_device fixed_reg_##_var##_dev = { \
- .name = "reg-fixed-voltage", \
- .id = _id, \
- .dev = { \
- .platform_data = &fixed_reg_##_var##_pdata, \
- }, \
- }
-
-FIXED_REG(1, en_1v8_cam, en_1v8_cam, 0, 0,
- AS3720_GPIO_BASE + AS3720_GPIO6, false, true, 0, 1800);
-
-FIXED_REG(2, vdd_hdmi_5v0, vdd_hdmi_5v0, 0, 0,
- TEGRA_GPIO_PK1, false, true, 0, 5000);
-
-FIXED_REG(3, usb1_vbus, usb1_vbus, 0, 0,
- -EINVAL, true, true, 1, 5000);
-
-FIXED_REG(4, usb3_vbus, usb3_vbus, 0, 0,
- -EINVAL, true, true, 1, 5000);
-
-/*
- * Creating the fixed regulator device tables
- */
-
-#define ADD_FIXED_REG(_name) (&fixed_reg_##_name##_dev)
-
-#define PISMO_COMMON_FIXED_REG \
- ADD_FIXED_REG(usb1_vbus), \
- ADD_FIXED_REG(usb3_vbus), \
- ADD_FIXED_REG(vdd_hdmi_5v0), \
- ADD_FIXED_REG(en_1v8_cam),
-
-/* Gpio switch regulator platform data for pluto */
-static struct platform_device *fixed_reg_devs_pm347[] = {
- PISMO_COMMON_FIXED_REG
-};
-
-
-static int __init pismo_fixed_regulator_init(void)
-{
-
- if (!machine_is_pismo())
- return 0;
-
- return platform_add_devices(fixed_reg_devs_pm347,
- ARRAY_SIZE(fixed_reg_devs_pm347));
-}
-
-subsys_initcall_sync(pismo_fixed_regulator_init);
-
-int __init pismo_regulator_init(void)
-{
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
- pismo_cl_dvfs_init();
-#endif
- pismo_as3720_regulator_init();
-
- platform_device_register(&pismo_pda_power_device);
- platform_device_register(&pismo_bt_regulator_device);
- platform_device_register(&pismo_gps_regulator_device);
- return 0;
-}
-
-int __init pismo_suspend_init(void)
-{
- tegra_init_suspend(&pismo_suspend_data);
- return 0;
-}
-
-int __init pismo_edp_init(void)
-{
-#ifdef CONFIG_TEGRA_EDP_LIMITS
- unsigned int regulator_mA;
-
- regulator_mA = get_maximum_cpu_current_supported();
- if (!regulator_mA)
- regulator_mA = 15000;
-
- pr_info("%s: CPU regulator %d mA\n", __func__, regulator_mA);
-
- tegra_init_cpu_edp_limits(regulator_mA);
-#endif
- return 0;
-}
-
-/* place holder for tpdata for as3720 regulator
- * TODO: fill the correct i2c type, bus, reg_addr and data here:
-static struct tegra_thermtrip_pmic_data tpdata_as3720 = {
- .reset_tegra = ,
- .pmu_16bit_ops = ,
- .controller_type = ,
- .pmu_i2c_addr = ,
- .i2c_controller_id = ,
- .poweroff_reg_addr = ,
- .poweroff_reg_data = ,
-};
-*/
-
-static struct soctherm_platform_data pismo_soctherm_data = {
- .therm = {
- [THERM_CPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 3,
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- },
- [THERM_GPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 3,
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- },
- [THERM_PLL] = {
- .zone_enable = true,
- },
- },
- .throttle = {
- [THROTTLE_HEAVY] = {
- .devs = {
- [THROTTLE_DEV_CPU] = {
- .enable = 1,
- },
- },
- },
- },
- /* ENABLE THIS AFTER correctly setting up tpdata_as3720
- * .tshut_pmu_trip_data = &tpdata_as3720, */
-};
-
-int __init pismo_soctherm_init(void)
-{
- tegra_platform_edp_init(pismo_soctherm_data.therm[THERM_CPU].trips,
- &pismo_soctherm_data.therm[THERM_CPU].num_trips,
- 6000); /* edp temperature margin */
- tegra_add_cpu_vmax_trips(pismo_soctherm_data.therm[THERM_CPU].trips,
- &pismo_soctherm_data.therm[THERM_CPU].num_trips);
- tegra_add_core_edp_trips(pismo_soctherm_data.therm[THERM_CPU].trips,
- &pismo_soctherm_data.therm[THERM_CPU].num_trips);
-
- return tegra11_soctherm_init(&pismo_soctherm_data);
-}
diff --git a/arch/arm/mach-tegra/board-pismo-sdhci.c b/arch/arm/mach-tegra/board-pismo-sdhci.c
deleted file mode 100644
index 1a8f35a69465..000000000000
--- a/arch/arm/mach-tegra/board-pismo-sdhci.c
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pismo-sdhci.c
- *
- * Copyright (C) 2010 Google, Inc.
- * Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
-#include <linux/resource.h>
-#include <linux/platform_device.h>
-#include <linux/wlan_plat.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/clk.h>
-#include <linux/err.h>
-#include <linux/regulator/consumer.h>
-#include <linux/mmc/host.h>
-#include <linux/wl12xx.h>
-#include <linux/platform_data/mmc-sdhci-tegra.h>
-
-#include <asm/mach-types.h>
-#include <mach/irqs.h>
-#include <mach/gpio-tegra.h>
-#include <mach/io_dpd.h>
-
-#include "gpio-names.h"
-#include "board.h"
-#include "board-pismo.h"
-#include "iomap.h"
-
-#define PISMO_WLAN_PWR TEGRA_GPIO_PCC5
-#define PISMO_WLAN_RST TEGRA_GPIO_PX7
-#define PISMO_WLAN_WOW TEGRA_GPIO_PU5
-#define PISMO_SD_CD TEGRA_GPIO_PV2
-static void (*wifi_status_cb)(int card_present, void *dev_id);
-static void *wifi_status_cb_devid;
-static int pismo_wifi_status_register(void (*callback)(int , void *), void *);
-
-static int pismo_wifi_reset(int on);
-static int pismo_wifi_power(int on);
-static int pismo_wifi_set_carddetect(int val);
-
-static struct wifi_platform_data pismo_wifi_control = {
- .set_power = pismo_wifi_power,
- .set_reset = pismo_wifi_reset,
- .set_carddetect = pismo_wifi_set_carddetect,
-};
-
-static struct resource wifi_resource[] = {
- [0] = {
- .name = "bcm4329_wlan_irq",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL
- | IORESOURCE_IRQ_SHAREABLE,
- },
-};
-
-static struct platform_device pismo_wifi_device = {
- .name = "bcm4329_wlan",
- .id = 1,
- .num_resources = 1,
- .resource = wifi_resource,
- .dev = {
- .platform_data = &pismo_wifi_control,
- },
-};
-
-static struct resource sdhci_resource0[] = {
- [0] = {
- .start = INT_SDMMC1,
- .end = INT_SDMMC1,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC1_BASE,
- .end = TEGRA_SDMMC1_BASE + TEGRA_SDMMC1_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource2[] = {
- [0] = {
- .start = INT_SDMMC3,
- .end = INT_SDMMC3,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC3_BASE,
- .end = TEGRA_SDMMC3_BASE + TEGRA_SDMMC3_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource3[] = {
- [0] = {
- .start = INT_SDMMC4,
- .end = INT_SDMMC4,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC4_BASE,
- .end = TEGRA_SDMMC4_BASE + TEGRA_SDMMC4_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
-static struct embedded_sdio_data embedded_sdio_data0 = {
- .cccr = {
- .sdio_vsn = 2,
- .multi_block = 1,
- .low_speed = 0,
- .wide_bus = 0,
- .high_power = 1,
- .high_speed = 1,
- },
- .cis = {
- .vendor = 0x02d0,
- .device = 0x4329,
- },
-};
-#endif
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data0 = {
- .mmc_data = {
- .register_status_notify = pismo_wifi_status_register,
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
- .embedded_sdio = &embedded_sdio_data0,
-#endif
- .built_in = 0,
- .ocr_mask = MMC_OCR_1V8_MASK,
- },
-#ifndef CONFIG_MMC_EMBEDDED_SDIO
- .pm_flags = MMC_PM_KEEP_POWER,
-#endif
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .tap_delay = 0x2,
- .trim_delay = 0x2,
- .ddr_clk_limit = 41000000,
- .uhs_mask = MMC_UHS_MASK_SDR104 |
- MMC_UHS_MASK_DDR50,
- .disable_clock_gate = true,
-};
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = {
- .cd_gpio = PISMO_SD_CD,
- .wp_gpio = -1,
- .power_gpio = -1,
- .tap_delay = 0x3,
- .trim_delay = 0x3,
- .ddr_clk_limit = 41000000,
-};
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data3 = {
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .is_8bit = 1,
- .tap_delay = 0x5,
- .trim_delay = 0x3,
- .ddr_clk_limit = 41000000,
- .mmc_data = {
- .built_in = 1,
- .ocr_mask = MMC_OCR_1V8_MASK,
- }
-};
-
-static struct platform_device tegra_sdhci_device0 = {
- .name = "sdhci-tegra",
- .id = 0,
- .resource = sdhci_resource0,
- .num_resources = ARRAY_SIZE(sdhci_resource0),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data0,
- },
-};
-
-static struct platform_device tegra_sdhci_device2 = {
- .name = "sdhci-tegra",
- .id = 2,
- .resource = sdhci_resource2,
- .num_resources = ARRAY_SIZE(sdhci_resource2),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data2,
- },
-};
-
-static struct platform_device tegra_sdhci_device3 = {
- .name = "sdhci-tegra",
- .id = 3,
- .resource = sdhci_resource3,
- .num_resources = ARRAY_SIZE(sdhci_resource3),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data3,
- },
-};
-
-static int pismo_wifi_status_register(
- void (*callback)(int card_present, void *dev_id),
- void *dev_id)
-{
- if (wifi_status_cb)
- return -EAGAIN;
- wifi_status_cb = callback;
- wifi_status_cb_devid = dev_id;
- return 0;
-}
-
-static int pismo_wifi_set_carddetect(int val)
-{
- pr_debug("%s: %d\n", __func__, val);
- if (wifi_status_cb)
- wifi_status_cb(val, wifi_status_cb_devid);
- else
- pr_warning("%s: Nobody to notify\n", __func__);
- return 0;
-}
-
-static struct regulator *pismo_vdd_com_3v3;
-static struct regulator *pismo_vddio_com_1v8;
-#define PISMO_VDD_WIFI_3V3 "avdd"
-#define PISMO_VDD_WIFI_1V8 "dvdd"
-
-static int pismo_wifi_regulator_enable(void)
-{
- int ret = 0;
-
- /* Enable COM's vdd_com_3v3 regulator*/
- if (IS_ERR_OR_NULL(pismo_vdd_com_3v3)) {
- pismo_vdd_com_3v3 = regulator_get(&pismo_wifi_device.dev,
- PISMO_VDD_WIFI_3V3);
- if (IS_ERR(pismo_vdd_com_3v3)) {
- pr_err("Couldn't get regulator "
- PISMO_VDD_WIFI_3V3 "\n");
- return PTR_ERR(pismo_vdd_com_3v3);
- }
-
- ret = regulator_enable(pismo_vdd_com_3v3);
- if (ret < 0) {
- pr_err("Couldn't enable regulator "
- PISMO_VDD_WIFI_3V3 "\n");
- regulator_put(pismo_vdd_com_3v3);
- pismo_vdd_com_3v3 = NULL;
- return ret;
- }
- }
-
- /* Enable COM's vddio_com_1v8 regulator*/
- if (IS_ERR_OR_NULL(pismo_vddio_com_1v8)) {
- pismo_vddio_com_1v8 = regulator_get(&pismo_wifi_device.dev,
- PISMO_VDD_WIFI_1V8);
- if (IS_ERR(pismo_vddio_com_1v8)) {
- pr_err("Couldn't get regulator "
- PISMO_VDD_WIFI_1V8 "\n");
- regulator_disable(pismo_vdd_com_3v3);
-
- regulator_put(pismo_vdd_com_3v3);
- pismo_vdd_com_3v3 = NULL;
- return PTR_ERR(pismo_vddio_com_1v8);
- }
-
- ret = regulator_enable(pismo_vddio_com_1v8);
- if (ret < 0) {
- pr_err("Couldn't enable regulator "
- PISMO_VDD_WIFI_1V8 "\n");
- regulator_put(pismo_vddio_com_1v8);
- pismo_vddio_com_1v8 = NULL;
-
- regulator_disable(pismo_vdd_com_3v3);
- regulator_put(pismo_vdd_com_3v3);
- pismo_vdd_com_3v3 = NULL;
- return ret;
- }
- }
-
- return ret;
-}
-
-static void pismo_wifi_regulator_disable(void)
-{
- /* Disable COM's vdd_com_3v3 regulator*/
- if (!IS_ERR_OR_NULL(pismo_vdd_com_3v3)) {
- regulator_disable(pismo_vdd_com_3v3);
- regulator_put(pismo_vdd_com_3v3);
- pismo_vdd_com_3v3 = NULL;
- }
-
- /* Disable COM's vddio_com_1v8 regulator*/
- if (!IS_ERR_OR_NULL(pismo_vddio_com_1v8)) {
- regulator_disable(pismo_vddio_com_1v8);
- regulator_put(pismo_vddio_com_1v8);
- pismo_vddio_com_1v8 = NULL;
- }
-}
-
-static int pismo_wifi_power(int on)
-{
- struct tegra_io_dpd *sd_dpd;
- int ret = 0;
-
- pr_debug("%s: %d\n", __func__, on);
- /* Enable COM's regulators on wi-fi poer on*/
- if (on == 1) {
- ret = pismo_wifi_regulator_enable();
- if (ret < 0) {
- pr_err("Failed to enable COM regulators\n");
- return ret;
- }
- }
-
- /*
- * FIXME : we need to revisit IO DPD code
- * on how should multiple pins under DPD get controlled
- *
- * pismo GPIO WLAN enable is part of SDMMC3 pin group
- */
- sd_dpd = tegra_io_dpd_get(&tegra_sdhci_device2.dev);
- if (sd_dpd) {
- mutex_lock(&sd_dpd->delay_lock);
- tegra_io_dpd_disable(sd_dpd);
- mutex_unlock(&sd_dpd->delay_lock);
- }
- gpio_set_value(PISMO_WLAN_PWR, on);
- mdelay(100);
- gpio_set_value(PISMO_WLAN_RST, on);
- mdelay(200);
- if (sd_dpd) {
- mutex_lock(&sd_dpd->delay_lock);
- tegra_io_dpd_enable(sd_dpd);
- mutex_unlock(&sd_dpd->delay_lock);
- }
-
- /* Disable COM's regulators on wi-fi poer off*/
- if (on != 1) {
- pr_debug("Disabling COM regulators\n");
- pismo_wifi_regulator_disable();
- }
-
- return ret;
-}
-
-static int pismo_wifi_reset(int on)
-{
- pr_debug("%s: do nothing\n", __func__);
- return 0;
-}
-
-static int __init pismo_wifi_init(void)
-{
- int rc;
-
- rc = gpio_request(PISMO_WLAN_PWR, "wlan_power");
- if (rc)
- pr_err("WLAN_PWR gpio request failed:%d\n", rc);
- rc = gpio_request(PISMO_WLAN_RST, "wlan_rst");
- if (rc)
- pr_err("WLAN_RST gpio request failed:%d\n", rc);
- rc = gpio_request(PISMO_WLAN_WOW, "bcmsdh_sdmmc");
- if (rc)
- pr_err("WLAN_WOW gpio request failed:%d\n", rc);
-
- rc = gpio_direction_output(PISMO_WLAN_PWR, 0);
- if (rc)
- pr_err("WLAN_PWR gpio direction configuration failed:%d\n", rc);
- gpio_direction_output(PISMO_WLAN_RST, 0);
- if (rc)
- pr_err("WLAN_RST gpio direction configuration failed:%d\n", rc);
- rc = gpio_direction_input(PISMO_WLAN_WOW);
- if (rc)
- pr_err("WLAN_WOW gpio direction configuration failed:%d\n", rc);
-
- wifi_resource[0].start = wifi_resource[0].end =
- gpio_to_irq(PISMO_WLAN_WOW);
-
- platform_device_register(&pismo_wifi_device);
- return 0;
-}
-
-#ifdef CONFIG_TEGRA_PREPOWER_WIFI
-static int __init pismo_wifi_prepower(void)
-{
- if (!machine_is_pismo())
- return 0;
-
- pismo_wifi_power(1);
-
- return 0;
-}
-
-subsys_initcall_sync(pismo_wifi_prepower);
-#endif
-
-int __init pismo_sdhci_init(void)
-{
- platform_device_register(&tegra_sdhci_device3);
- platform_device_register(&tegra_sdhci_device2);
- platform_device_register(&tegra_sdhci_device0);
- pismo_wifi_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-pismo-sensors.c b/arch/arm/mach-tegra/board-pismo-sensors.c
deleted file mode 100644
index d3e56c95c3e0..000000000000
--- a/arch/arm/mach-tegra/board-pismo-sensors.c
+++ /dev/null
@@ -1,696 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pismo-sensors.c
- *
- * Copyright (c) 2012-2014 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 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 licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <linux/i2c.h>
-#include <linux/delay.h>
-#include <linux/mpu.h>
-#include <linux/regulator/consumer.h>
-#include <linux/gpio.h>
-#include <linux/therm_est.h>
-#include <linux/nct1008.h>
-#include <mach/edp.h>
-
-#include <mach/gpio-tegra.h>
-#include <mach/pinmux-t11.h>
-#include <mach/pinmux.h>
-#include <media/imx091.h>
-#include <media/ov9772.h>
-#include <media/as364x.h>
-#include <media/ad5816.h>
-#include <generated/mach-types.h>
-#include <linux/power/sbs-battery.h>
-
-#include "gpio-names.h"
-#include "board.h"
-#include "board-common.h"
-#include "board-pismo.h"
-#include "cpu-tegra.h"
-#include "devices.h"
-#include "tegra-board-id.h"
-#include "dvfs.h"
-
-static struct nvc_gpio_pdata imx091_gpio_pdata[] = {
- {IMX091_GPIO_RESET, CAM_RSTN, true, false},
- {IMX091_GPIO_PWDN, CAM1_POWER_DWN_GPIO, true, false},
- {IMX091_GPIO_GP1, CAM_GPIO1, true, false}
-};
-
-static struct throttle_table tj_throttle_table[] = {
- { { 0, 1000 } },
- { { 51000, 1000 } },
- { { 102000, 1000 } },
- { { 204000, 1000 } },
- { { 252000, 1000 } },
- { { 288000, 1000 } },
- { { 372000, 1000 } },
- { { 468000, 1000 } },
- { { 510000, 1000 } },
- { { 612000, 1000 } },
- { { 714000, 1050 } },
- { { 816000, 1050 } },
- { { 918000, 1050 } },
- { {1020000, 1100 } },
- { {1122000, 1100 } },
- { {1224000, 1100 } },
- { {1326000, 1100 } },
- { {1428000, 1100 } },
- { {1530000, 1100 } },
-};
-
-static struct balanced_throttle tj_throttle = {
- .throt_tab_size = ARRAY_SIZE(tj_throttle_table),
- .throt_tab = tj_throttle_table,
-};
-
-static int __init pismo_throttle_init(void)
-{
- if (machine_is_pismo())
- balanced_throttle_register(&tj_throttle, "pismo-nct");
- return 0;
-}
-module_init(pismo_throttle_init);
-
-static struct nct1008_platform_data pismo_nct1008_pdata = {
- .supported_hwrev = true,
- .extended_range = true,
- .conv_rate = 0x06, /* 4Hz conversion rate */
-
- .sensors = {
- [LOC] = {
- .shutdown_limit = 120, /* C */
- .num_trips = 0,
- .tzp = NULL,
- },
- [EXT] = {
- .shutdown_limit = 105, /* C */
- .num_trips = 1,
- .tzp = NULL,
- .trips = {
- {
- .cdev_type = "suspend_soctherm",
- .trip_temp = 50000,
- .trip_type = THERMAL_TRIP_ACTIVE,
- .upper = 1,
- .lower = 1,
- .hysteresis = 5000,
- .mask = 1,
- },
- },
- }
- }
-};
-
-static struct i2c_board_info pismo_i2c4_nct1008_board_info[] = {
- {
- I2C_BOARD_INFO("nct1008", 0x4C),
- .platform_data = &pismo_nct1008_pdata,
- .irq = -1,
- }
-};
-
-#define VI_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _ioreset) \
- { \
- .pingroup = TEGRA_PINGROUP_##_pingroup, \
- .func = TEGRA_MUX_##_mux, \
- .pupd = TEGRA_PUPD_##_pupd, \
- .tristate = TEGRA_TRI_##_tri, \
- .io = TEGRA_PIN_##_io, \
- .lock = TEGRA_PIN_LOCK_##_lock, \
- .od = TEGRA_PIN_OD_DEFAULT, \
- .ioreset = TEGRA_PIN_IO_RESET_##_ioreset \
-}
-
-static int pismo_focuser_power_on(struct ad5816_power_rail *pw)
-{
- int err;
-
- if (unlikely(WARN_ON(!pw || !pw->vdd || !pw->vdd_i2c)))
- return -EFAULT;
-
- err = regulator_enable(pw->vdd_i2c);
- if (unlikely(err))
- goto ad5816_vdd_i2c_fail;
-
- err = regulator_enable(pw->vdd);
- if (unlikely(err))
- goto ad5816_vdd_fail;
-
- return 0;
-
-ad5816_vdd_fail:
- regulator_disable(pw->vdd_i2c);
-
-ad5816_vdd_i2c_fail:
- pr_err("%s FAILED\n", __func__);
-
- return -ENODEV;
-}
-
-static int pismo_focuser_power_off(struct ad5816_power_rail *pw)
-{
- if (unlikely(WARN_ON(!pw || !pw->vdd || !pw->vdd_i2c)))
- return -EFAULT;
-
- regulator_disable(pw->vdd);
- regulator_disable(pw->vdd_i2c);
-
- return 0;
-}
-
-static struct tegra_pingroup_config mclk_disable =
- VI_PINMUX(CAM_MCLK, VI, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config mclk_enable =
- VI_PINMUX(CAM_MCLK, VI_ALT3, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config pbb0_disable =
- VI_PINMUX(GPIO_PBB0, VI, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config pbb0_enable =
- VI_PINMUX(GPIO_PBB0, VI_ALT3, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-/*
- * As a workaround, pismo_vcmvdd need to be allocated to activate the
- * sensor devices. This is due to the focuser device(AD5816) will hook up
- * the i2c bus if it is not powered up.
-*/
-static struct regulator *pismo_vcmvdd;
-
-static int pismo_get_vcmvdd(void)
-{
- if (!pismo_vcmvdd) {
- pismo_vcmvdd = regulator_get(NULL, "vdd_af_cam1");
- if (unlikely(WARN_ON(IS_ERR(pismo_vcmvdd)))) {
- pr_err("%s: can't get regulator vcmvdd: %ld\n",
- __func__, PTR_ERR(pismo_vcmvdd));
- pismo_vcmvdd = NULL;
- return -ENODEV;
- }
- }
- return 0;
-}
-
-static int pismo_imx091_power_on(struct nvc_regulator *vreg)
-{
- int err;
-
- if (unlikely(WARN_ON(!vreg)))
- return -EFAULT;
-
- if (pismo_get_vcmvdd())
- goto imx091_poweron_fail;
-
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
- usleep_range(10, 20);
-
- err = regulator_enable(vreg[IMX091_VREG_AVDD].vreg);
- if (err)
- goto imx091_avdd_fail;
-
- err = regulator_enable(vreg[IMX091_VREG_IOVDD].vreg);
- if (err)
- goto imx091_iovdd_fail;
-
- usleep_range(1, 2);
- gpio_set_value(CAM1_POWER_DWN_GPIO, 1);
-
- err = regulator_enable(pismo_vcmvdd);
- if (unlikely(err))
- goto imx091_vcmvdd_fail;
-
- tegra_pinmux_config_table(&mclk_enable, 1);
- usleep_range(300, 310);
-
- return 1;
-
-imx091_vcmvdd_fail:
- regulator_disable(vreg[IMX091_VREG_IOVDD].vreg);
-
-imx091_iovdd_fail:
- regulator_disable(vreg[IMX091_VREG_AVDD].vreg);
-
-imx091_avdd_fail:
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
-
-imx091_poweron_fail:
- pr_err("%s FAILED\n", __func__);
- return -ENODEV;
-}
-
-static int pismo_imx091_power_off(struct nvc_regulator *vreg)
-{
- if (unlikely(WARN_ON(!vreg)))
- return -EFAULT;
-
- usleep_range(1, 2);
- tegra_pinmux_config_table(&mclk_disable, 1);
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
- usleep_range(1, 2);
-
- regulator_disable(pismo_vcmvdd);
- regulator_disable(vreg[IMX091_VREG_IOVDD].vreg);
- regulator_disable(vreg[IMX091_VREG_AVDD].vreg);
-
- return 1;
-}
-
-static struct nvc_imager_cap imx091_cap = {
- .identifier = "IMX091",
- .sensor_nvc_interface = 3,
- .pixel_types[0] = 0x100,
- .orientation = 0,
- .direction = 0,
- .initial_clock_rate_khz = 6000,
- .clock_profiles[0] = {
- .external_clock_khz = 24000,
- .clock_multiplier = 10416667, /* value / 1,000,000 */
- },
- .clock_profiles[1] = {
- .external_clock_khz = 0,
- .clock_multiplier = 0,
- },
- .h_sync_edge = 0,
- .v_sync_edge = 0,
- .mclk_on_vgp0 = 0,
- .csi_port = 0,
- .data_lanes = 4,
- .virtual_channel_id = 0,
- .discontinuous_clk_mode = 1,
- .cil_threshold_settle = 0x0,
- .min_blank_time_width = 16,
- .min_blank_time_height = 16,
- .preferred_mode_index = 0,
- .focuser_guid = NVC_FOCUS_GUID(0),
- .torch_guid = NVC_TORCH_GUID(0),
- .cap_version = NVC_IMAGER_CAPABILITIES_VERSION2,
-};
-
-static struct imx091_platform_data imx091_pdata = {
- .num = 0,
- .sync = 0,
- .dev_name = "camera",
- .gpio_count = ARRAY_SIZE(imx091_gpio_pdata),
- .gpio = imx091_gpio_pdata,
- .flash_cap = {
- .sdo_trigger_enabled = 1,
- .adjustable_flash_timing = 1,
- },
- .cap = &imx091_cap,
- .power_on = pismo_imx091_power_on,
- .power_off = pismo_imx091_power_off,
-};
-
-static struct sbs_platform_data sbs_pdata = {
- .poll_retry_count = 100,
- .i2c_retry_count = 2,
-};
-
-static int pismo_ov9772_power_on(struct ov9772_power_rail *pw)
-{
- int err;
-
- if (unlikely(!pw || !pw->avdd || !pw->dovdd))
- return -EFAULT;
-
- if (pismo_get_vcmvdd())
- goto ov9772_get_vcmvdd_fail;
-
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
- gpio_set_value(CAM_RSTN, 0);
-
- err = regulator_enable(pw->avdd);
- if (unlikely(err))
- goto ov9772_avdd_fail;
-
- err = regulator_enable(pw->dovdd);
- if (unlikely(err))
- goto ov9772_dovdd_fail;
-
- gpio_set_value(CAM_RSTN, 1);
- gpio_set_value(CAM2_POWER_DWN_GPIO, 1);
-
- err = regulator_enable(pismo_vcmvdd);
- if (unlikely(err))
- goto ov9772_vcmvdd_fail;
-
- tegra_pinmux_config_table(&pbb0_enable, 1);
- usleep_range(340, 380);
-
- /* return 1 to skip the in-driver power_on sequence */
- return 1;
-
-ov9772_vcmvdd_fail:
- regulator_disable(pw->dovdd);
-
-ov9772_dovdd_fail:
- regulator_disable(pw->avdd);
-
-ov9772_avdd_fail:
- gpio_set_value(CAM_RSTN, 0);
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
-
-ov9772_get_vcmvdd_fail:
- pr_err("%s FAILED\n", __func__);
- return -ENODEV;
-}
-
-static int pismo_ov9772_power_off(struct ov9772_power_rail *pw)
-{
- if (unlikely(!pw || !pismo_vcmvdd || !pw->avdd || !pw->dovdd))
- return -EFAULT;
-
- usleep_range(21, 25);
- tegra_pinmux_config_table(&pbb0_disable, 1);
-
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
- gpio_set_value(CAM_RSTN, 0);
-
- regulator_disable(pismo_vcmvdd);
- regulator_disable(pw->dovdd);
- regulator_disable(pw->avdd);
-
- /* return 1 to skip the in-driver power_off sequence */
- return 1;
-}
-
-static struct nvc_gpio_pdata ov9772_gpio_pdata[] = {
- { OV9772_GPIO_TYPE_SHTDN, CAM2_POWER_DWN_GPIO, true, 0, },
- { OV9772_GPIO_TYPE_PWRDN, CAM_RSTN, true, 0, },
-};
-
-static struct ov9772_platform_data pismo_ov9772_pdata = {
- .num = 1,
- .dev_name = "camera",
- .gpio_count = ARRAY_SIZE(ov9772_gpio_pdata),
- .gpio = ov9772_gpio_pdata,
- .power_on = pismo_ov9772_power_on,
- .power_off = pismo_ov9772_power_off,
-};
-
-static int pismo_as3648_power_on(struct as364x_power_rail *pw)
-{
- int err = pismo_get_vcmvdd();
-
- if (err)
- return err;
-
- return regulator_enable(pismo_vcmvdd);
-}
-
-static int pismo_as3648_power_off(struct as364x_power_rail *pw)
-{
- if (!pismo_vcmvdd)
- return -ENODEV;
-
- return regulator_disable(pismo_vcmvdd);
-}
-
-static struct as364x_platform_data pismo_as3648_pdata = {
- .config = {
- .led_mask = 3,
- .max_total_current_mA = 1000,
- .max_peak_current_mA = 600,
- .vin_low_v_run_mV = 3070,
- .strobe_type = 1,
- },
- .pinstate = {
- .mask = 1 << (CAM_FLASH_STROBE - TEGRA_GPIO_PBB0),
- .values = 1 << (CAM_FLASH_STROBE - TEGRA_GPIO_PBB0)
- },
- .dev_name = "torch",
- .type = AS3648,
- .gpio_strobe = CAM_FLASH_STROBE,
-
- .power_on_callback = pismo_as3648_power_on,
- .power_off_callback = pismo_as3648_power_off,
-};
-
-static struct ad5816_platform_data pismo_ad5816_pdata = {
- .cfg = 0,
- .num = 0,
- .sync = 0,
- .dev_name = "focuser",
- .power_on = pismo_focuser_power_on,
- .power_off = pismo_focuser_power_off,
-};
-
-static struct i2c_board_info pismo_i2c_board_info_e1625[] = {
- {
- I2C_BOARD_INFO("imx091", 0x36),
- .platform_data = &imx091_pdata,
- },
- {
- I2C_BOARD_INFO("ov9772", 0x10),
- .platform_data = &pismo_ov9772_pdata,
- },
- {
- I2C_BOARD_INFO("as3648", 0x30),
- .platform_data = &pismo_as3648_pdata,
- },
- {
- I2C_BOARD_INFO("ad5816", 0x0E),
- .platform_data = &pismo_ad5816_pdata,
- },
-};
-
-static int pismo_camera_init(void)
-{
- tegra_pinmux_config_table(&mclk_disable, 1);
- tegra_pinmux_config_table(&pbb0_disable, 1);
-
- i2c_register_board_info(2, pismo_i2c_board_info_e1625,
- ARRAY_SIZE(pismo_i2c_board_info_e1625));
- return 0;
-}
-
-/* MPU board file definition */
-static struct mpu_platform_data mpu9150_gyro_data = {
- .int_config = 0x10,
- .level_shifter = 0,
- /* Located in board_[platformname].h */
- .orientation = MPU_GYRO_ORIENTATION,
- .sec_slave_type = SECONDARY_SLAVE_TYPE_COMPASS,
- .sec_slave_id = COMPASS_ID_AK8975,
- .secondary_i2c_addr = MPU_COMPASS_ADDR,
- .secondary_read_reg = 0x06,
- .secondary_orientation = MPU_COMPASS_ORIENTATION,
- .key = {0x4E, 0xCC, 0x7E, 0xEB, 0xF6, 0x1E, 0x35, 0x22,
- 0x00, 0x34, 0x0D, 0x65, 0x32, 0xE9, 0x94, 0x89},
-};
-
-#define TEGRA_CAMERA_GPIO(_gpio, _label, _value) \
- { \
- .gpio = _gpio, \
- .label = _label, \
- .value = _value, \
- }
-
-static struct i2c_board_info pismo_i2c_board_info_cm3218[] = {
- {
- I2C_BOARD_INFO("cm3218", 0x48),
- },
-};
-
-static struct i2c_board_info __initdata inv_mpu9150_i2c2_board_info[] = {
- {
- I2C_BOARD_INFO(MPU_GYRO_NAME, MPU_GYRO_ADDR),
- .platform_data = &mpu9150_gyro_data,
- },
-};
-
-static void mpuirq_init(void)
-{
- int ret = 0;
- unsigned gyro_irq_gpio = MPU_GYRO_IRQ_GPIO;
- unsigned gyro_bus_num = MPU_GYRO_BUS_NUM;
- char *gyro_name = MPU_GYRO_NAME;
-
- pr_info("*** MPU START *** mpuirq_init...\n");
-
- ret = gpio_request(gyro_irq_gpio, gyro_name);
-
- if (ret < 0) {
- pr_err("%s: gpio_request failed %d\n", __func__, ret);
- return;
- }
-
- ret = gpio_direction_input(gyro_irq_gpio);
- if (ret < 0) {
- pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
- gpio_free(gyro_irq_gpio);
- return;
- }
- pr_info("*** MPU END *** mpuirq_init...\n");
-
- inv_mpu9150_i2c2_board_info[0].irq = gpio_to_irq(MPU_GYRO_IRQ_GPIO);
- i2c_register_board_info(gyro_bus_num, inv_mpu9150_i2c2_board_info,
- ARRAY_SIZE(inv_mpu9150_i2c2_board_info));
-}
-
-static int pismo_nct1008_init(void)
-{
- int nct1008_port;
- int ret = 0;
-
- nct1008_port = TEGRA_GPIO_PX6;
-
- tegra_add_all_vmin_trips(pismo_nct1008_pdata.sensors[EXT].trips,
- &pismo_nct1008_pdata.sensors[EXT].num_trips);
-
- pismo_i2c4_nct1008_board_info[0].irq =
- gpio_to_irq(nct1008_port);
- pr_info("%s: pismo nct1008 irq %d", __func__,
- pismo_i2c4_nct1008_board_info[0].irq);
-
- ret = gpio_request(nct1008_port, "temp_alert");
- if (ret < 0)
- return ret;
-
- ret = gpio_direction_input(nct1008_port);
- if (ret < 0) {
- pr_info("%s: calling gpio_free(nct1008_port)",
- __func__);
- gpio_free(nct1008_port);
- }
-
- /* pismo has thermal sensor on GEN1-I2C i.e. instance 0 */
- i2c_register_board_info(0, pismo_i2c4_nct1008_board_info,
- ARRAY_SIZE(pismo_i2c4_nct1008_board_info));
-
- return ret;
-}
-
-static struct i2c_board_info __initdata bq20z45_pdata[] = {
- {
- I2C_BOARD_INFO("sbs-battery", 0x0B),
- .platform_data = &sbs_pdata,
- },
-};
-
-#ifdef CONFIG_TEGRA_SKIN_THROTTLE
-static int tegra_skin_match(struct thermal_zone_device *thz, void *data)
-{
- return strcmp((char *)data, thz->type) == 0;
-}
-
-static int tegra_skin_get_temp(void *data, long *temp)
-{
- struct thermal_zone_device *thz;
-
- thz = thermal_zone_device_find(data, tegra_skin_match);
-
- if (!thz || thz->ops->get_temp(thz, temp))
- *temp = 25000;
-
- return 0;
-}
-
-static struct therm_est_data skin_data = {
- .toffset = 9793,
- .polling_period = 1100,
- .ndevs = 2,
- .devs = {
- {
- .dev_data = "nct_ext",
- .get_temp = tegra_skin_get_temp,
- .coeffs = {
- 2, 1, 1, 1,
- 1, 1, 1, 1,
- 1, 1, 1, 0,
- 1, 1, 0, 0,
- 0, 0, -1, -7
- },
- },
- {
- .dev_data = "nct_int",
- .get_temp = tegra_skin_get_temp,
- .coeffs = {
- -11, -7, -5, -3,
- -3, -2, -1, 0,
- 0, 0, 1, 1,
- 1, 2, 2, 3,
- 4, 6, 11, 18
- },
- },
- },
- .trip_temp = 45000,
- .tc1 = 10,
- .tc2 = 1,
- .passive_delay = 15000,
-};
-
-static struct throttle_table skin_throttle_table[] = {
- { { 640000, 1200 } },
- { { 640000, 1200 } },
- { { 760000, 1200 } },
- { { 760000, 1200 } },
- { {1000000, 1200 } },
- { {1000000, 1200 } },
-};
-
-static struct balanced_throttle skin_throttle = {
- .throt_tab_size = ARRAY_SIZE(skin_throttle_table),
- .throt_tab = skin_throttle_table,
-};
-
-static int __init pismo_skin_init(void)
-{
- struct thermal_cooling_device *skin_cdev;
-
- skin_cdev = balanced_throttle_register(&skin_throttle, "pismo-skin");
-
- skin_data.cdev = skin_cdev;
- tegra_skin_therm_est_device.dev.platform_data = &skin_data;
- platform_device_register(&tegra_skin_therm_est_device);
-
- return 0;
-}
-late_initcall(pismo_skin_init);
-#endif
-
-int __init pismo_sensors_init(void)
-{
- int err;
-
- err = pismo_nct1008_init();
- if (err)
- return err;
-
- pismo_camera_init();
- mpuirq_init();
-
- i2c_register_board_info(0, pismo_i2c_board_info_cm3218,
- ARRAY_SIZE(pismo_i2c_board_info_cm3218));
-
- i2c_register_board_info(0, bq20z45_pdata,
- ARRAY_SIZE(bq20z45_pdata));
-
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-pismo.c b/arch/arm/mach-tegra/board-pismo.c
deleted file mode 100644
index 8daa8d93949f..000000000000
--- a/arch/arm/mach-tegra/board-pismo.c
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pismo.c
- *
- * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/ctype.h>
-#include <linux/platform_device.h>
-#include <linux/clk.h>
-#include <linux/serial_8250.h>
-#include <linux/i2c.h>
-#include <linux/i2c/i2c-hid.h>
-#include <linux/dma-mapping.h>
-#include <linux/delay.h>
-#include <linux/i2c-tegra.h>
-#include <linux/gpio.h>
-#include <linux/input.h>
-#include <linux/platform_data/tegra_usb.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/rm31080a_ts.h>
-#include <linux/memblock.h>
-#include <linux/spi/spi-tegra.h>
-#include <linux/nfc/pn544.h>
-#include <linux/rfkill-gpio.h>
-#include <linux/skbuff.h>
-#include <linux/ti_wilink_st.h>
-#include <linux/regulator/consumer.h>
-#include <linux/smb349-charger.h>
-#include <linux/max17048_battery.h>
-#include <linux/leds.h>
-#include <linux/i2c/at24.h>
-#include <linux/of_platform.h>
-#include <linux/edp.h>
-#include <linux/usb/tegra_usb_phy.h>
-#include <linux/clk/tegra.h>
-#include <linux/clocksource.h>
-#include <linux/irqchip.h>
-#include <linux/irqchip/tegra.h>
-#include <linux/tegra_fiq_debugger.h>
-#include <linux/platform_data/tegra_usb_modem_power.h>
-
-#include <mach/irqs.h>
-#include <mach/pinmux.h>
-#include <mach/pinmux-t11.h>
-#include <mach/io_dpd.h>
-#include <mach/i2s.h>
-#include <mach/tegra_asoc_pdata.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <mach/gpio-tegra.h>
-
-#include "board-touch-raydium.h"
-#include "board.h"
-#include "board-common.h"
-#include "clock.h"
-#include "board-pismo.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "pm.h"
-#include "common.h"
-#include "tegra-board-id.h"
-#include "iomap.h"
-#include "tegra-of-dev-auxdata.h"
-
-#ifdef CONFIG_BT_BLUESLEEP
-static struct rfkill_gpio_platform_data pismo_bt_rfkill_pdata = {
- .name = "bt_rfkill",
- .shutdown_gpio = TEGRA_GPIO_PQ7,
- .reset_gpio = TEGRA_GPIO_PQ6,
- .type = RFKILL_TYPE_BLUETOOTH,
-};
-
-static struct platform_device pismo_bt_rfkill_device = {
- .name = "rfkill_gpio",
- .id = -1,
- .dev = {
- .platform_data = &pismo_bt_rfkill_pdata,
- },
-};
-
-static struct resource pismo_bluesleep_resources[] = {
- [0] = {
- .name = "gpio_host_wake",
- .start = TEGRA_GPIO_PU6,
- .end = TEGRA_GPIO_PU6,
- .flags = IORESOURCE_IO,
- },
- [1] = {
- .name = "gpio_ext_wake",
- .start = TEGRA_GPIO_PEE1,
- .end = TEGRA_GPIO_PEE1,
- .flags = IORESOURCE_IO,
- },
- [2] = {
- .name = "host_wake",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- },
-};
-
-static struct platform_device pismo_bluesleep_device = {
- .name = "bluesleep",
- .id = -1,
- .num_resources = ARRAY_SIZE(pismo_bluesleep_resources),
- .resource = pismo_bluesleep_resources,
-};
-
-static noinline void __init pismo_setup_bt_rfkill(void)
-{
- platform_device_register(&pismo_bt_rfkill_device);
-}
-
-static noinline void __init pismo_setup_bluesleep(void)
-{
- pismo_bluesleep_resources[2].start =
- pismo_bluesleep_resources[2].end =
- gpio_to_irq(TEGRA_GPIO_PU6);
- platform_device_register(&pismo_bluesleep_device);
- return;
-}
-#elif defined CONFIG_BLUEDROID_PM
-static struct resource pismo_bluedroid_pm_resources[] = {
- [0] = {
- .name = "shutdown_gpio",
- .start = TEGRA_GPIO_PQ7,
- .end = TEGRA_GPIO_PQ7,
- .flags = IORESOURCE_IO,
- },
- [1] = {
- .name = "host_wake",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- },
- [2] = {
- .name = "gpio_ext_wake",
- .start = TEGRA_GPIO_PEE1,
- .end = TEGRA_GPIO_PEE1,
- .flags = IORESOURCE_IO,
- },
- [3] = {
- .name = "gpio_host_wake",
- .start = TEGRA_GPIO_PU6,
- .end = TEGRA_GPIO_PU6,
- .flags = IORESOURCE_IO,
- },
- [4] = {
- .name = "reset_gpio",
- .start = TEGRA_GPIO_PQ6,
- .end = TEGRA_GPIO_PQ6,
- .flags = IORESOURCE_IO,
- },
-};
-
-static struct platform_device pismo_bluedroid_pm_device = {
- .name = "bluedroid_pm",
- .id = 0,
- .num_resources = ARRAY_SIZE(pismo_bluedroid_pm_resources),
- .resource = pismo_bluedroid_pm_resources,
-};
-
-static noinline void __init pismo_setup_bluedroid_pm(void)
-{
- pismo_bluedroid_pm_resources[1].start =
- pismo_bluedroid_pm_resources[1].end =
- gpio_to_irq(TEGRA_GPIO_PU6);
- platform_device_register(&pismo_bluedroid_pm_device);
-}
-#endif
-
-static __initdata struct tegra_clk_init_table pismo_clk_init_table[] = {
- /* name parent rate enabled */
- { "pll_m", NULL, 0, false},
- { "hda", "pll_p", 108000000, false},
- { "hda2codec_2x", "pll_p", 48000000, false},
- { "pwm", "pll_p", 3187500, false},
- { "blink", "clk_32k", 32768, true},
- { "i2s1", "pll_a_out0", 0, false},
- { "i2s3", "pll_a_out0", 0, false},
- { "i2s4", "pll_a_out0", 0, false},
- { "spdif_out", "pll_a_out0", 0, false},
- { "d_audio", "clk_m", 12000000, false},
- { "dam0", "clk_m", 12000000, false},
- { "dam1", "clk_m", 12000000, false},
- { "dam2", "clk_m", 12000000, false},
- { "audio1", "i2s1_sync", 0, false},
- { "audio3", "i2s3_sync", 0, false},
- /* Setting vi_sensor-clk to true for validation purpose, will imapact
- * power, later set to be false.*/
- { "vi_sensor", "pll_p", 150000000, false},
- { "cilab", "pll_p", 150000000, false},
- { "cilcd", "pll_p", 150000000, false},
- { "cile", "pll_p", 150000000, false},
- { "i2c1", "pll_p", 3200000, false},
- { "i2c2", "pll_p", 3200000, false},
- { "i2c3", "pll_p", 3200000, false},
- { "i2c4", "pll_p", 3200000, false},
- { "i2c5", "pll_p", 3200000, false},
- { NULL, NULL, 0, 0},
-};
-
-static struct i2c_board_info __initdata rt5640_board_info = {
- I2C_BOARD_INFO("rt5640", 0x1c),
-};
-
-static struct pn544_i2c_platform_data nfc_pdata = {
- .irq_gpio = TEGRA_GPIO_PW2,
- .ven_gpio = TEGRA_GPIO_PQ3,
- .firm_gpio = TEGRA_GPIO_PH0,
-};
-
-static struct i2c_board_info __initdata nfc_board_info = {
- I2C_BOARD_INFO("pn544", 0x28),
- .platform_data = &nfc_pdata,
-};
-
-static struct i2c_hid_platform_data i2c_keyboard_pdata = {
- .hid_descriptor_address = 0x0,
-};
-
-static struct i2c_board_info __initdata i2c_keyboard_board_info = {
- I2C_BOARD_INFO("hid", 0x3B),
- .platform_data = &i2c_keyboard_pdata,
-};
-
-static struct i2c_hid_platform_data i2c_touchpad_pdata = {
- .hid_descriptor_address = 0x20,
-};
-
-static struct i2c_board_info __initdata i2c_touchpad_board_info = {
- I2C_BOARD_INFO("hid", 0x2C),
- .platform_data = &i2c_touchpad_pdata,
-};
-
-static void pismo_i2c_init(void)
-{
-
- nfc_board_info.irq = gpio_to_irq(TEGRA_GPIO_PW2);
- i2c_register_board_info(0, &nfc_board_info, 1);
-
- i2c_register_board_info(0, &rt5640_board_info, 1);
-
- i2c_keyboard_board_info.irq = gpio_to_irq(I2C_KB_IRQ);
- i2c_register_board_info(1, &i2c_keyboard_board_info , 1);
-
- i2c_touchpad_board_info.irq = gpio_to_irq(I2C_TP_IRQ);
- i2c_register_board_info(1, &i2c_touchpad_board_info , 1);
-}
-
-static struct platform_device *pismo_uart_devices[] __initdata = {
- &tegra_uarta_device,
- &tegra_uartb_device,
- &tegra_uartc_device,
- &tegra_uartd_device,
-};
-
-static void __init uart_debug_init(void)
-{
- int debug_port_id;
-
- debug_port_id = uart_console_debug_init(3);
- if (debug_port_id < 0)
- return;
-
- pismo_uart_devices[debug_port_id] = uart_console_debug_device;
-}
-
-static void __init pismo_uart_init(void)
-{
- /* Register low speed only if it is selected */
- if (!is_tegra_debug_uartport_hs())
- uart_debug_init();
-
- platform_add_devices(pismo_uart_devices,
- ARRAY_SIZE(pismo_uart_devices));
-}
-
-static struct resource tegra_rtc_resources[] = {
- [0] = {
- .start = TEGRA_RTC_BASE,
- .end = TEGRA_RTC_BASE + TEGRA_RTC_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = INT_RTC,
- .end = INT_RTC,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device tegra_rtc_device = {
- .name = "tegra_rtc",
- .id = -1,
- .resource = tegra_rtc_resources,
- .num_resources = ARRAY_SIZE(tegra_rtc_resources),
-};
-
-static struct tegra_asoc_platform_data pismo_audio_pdata = {
- .gpio_spkr_en = TEGRA_GPIO_SPKR_EN,
- .gpio_hp_det = TEGRA_GPIO_HP_DET,
- .gpio_hp_mute = -1,
- .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN,
- .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN,
- .gpio_ldo1_en = TEGRA_GPIO_LDO1_EN,
- .gpio_codec1 = TEGRA_GPIO_CODEC1_EN,
- .gpio_codec2 = TEGRA_GPIO_CODEC2_EN,
- .gpio_codec3 = TEGRA_GPIO_CODEC3_EN,
- .i2s_param[HIFI_CODEC] = {
- .audio_port_id = 1,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- },
- .i2s_param[BT_SCO] = {
- .audio_port_id = 3,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_DSP_A,
- },
-};
-
-static struct platform_device pismo_audio_device = {
- .name = "tegra-snd-rt5640",
- .id = 0,
- .dev = {
- .platform_data = &pismo_audio_pdata,
- },
-};
-
-static struct platform_device tegra_camera = {
- .name = "tegra_camera",
- .id = -1,
-};
-
-static struct platform_device *pismo_devices[] __initdata = {
- &tegra_pmu_device,
- &tegra_rtc_device,
- &tegra_udc_device,
-#if defined(CONFIG_TEGRA_AVP)
- &tegra_avp_device,
-#endif
- &tegra_camera,
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_SE)
- &tegra11_se_device,
-#endif
- &tegra_ahub_device,
- &tegra_dam_device0,
- &tegra_dam_device1,
- &tegra_dam_device2,
- &tegra_i2s_device1,
- &tegra_i2s_device3,
- &tegra_i2s_device4,
- &tegra_spdif_device,
- &spdif_dit_device,
- &bluetooth_dit_device,
- &pismo_audio_device,
- &tegra_hda_device,
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_AES)
- &tegra_aes_device,
-#endif
-};
-
-#ifdef CONFIG_USB_SUPPORT
-static struct tegra_usb_platform_data tegra_udc_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_DEVICE,
- .u_data.dev = {
- .vbus_pmu_irq = 0,
- .vbus_gpio = -1,
- .charging_supported = true,
- .remote_wakeup_supported = false,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 8,
- .xcvr_lsfslew = 2,
- .xcvr_lsrslew = 2,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- },
-};
-
-static struct tegra_usb_platform_data tegra_ehci1_utmi_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 15,
- .xcvr_lsfslew = 2,
- .xcvr_lsrslew = 2,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- .vbus_oc_map = 0x4,
- },
-};
-
-static struct tegra_usb_platform_data tegra_ehci3_utmi_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 8,
- .xcvr_lsfslew = 2,
- .xcvr_lsrslew = 2,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- .vbus_oc_map = 0x5,
- },
-};
-
-static struct tegra_usb_otg_data tegra_otg_pdata = {
- .ehci_device = &tegra_ehci1_device,
- .ehci_pdata = &tegra_ehci1_utmi_pdata,
-};
-
-static void pismo_usb_init(void)
-{
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
-
- /* Set USB wake sources for pismo */
- tegra_set_usb_wake_source();
-
- if (!(usb_port_owner_info & UTMI1_PORT_OWNER_XUSB)) {
- tegra_otg_device.dev.platform_data = &tegra_otg_pdata;
- platform_device_register(&tegra_otg_device);
- /* Setup the udc platform data */
- tegra_udc_device.dev.platform_data = &tegra_udc_pdata;
- }
-
- if (!(usb_port_owner_info & UTMI2_PORT_OWNER_XUSB)) {
- tegra_ehci3_device.dev.platform_data = &tegra_ehci3_utmi_pdata;
- platform_device_register(&tegra_ehci3_device);
- }
-}
-
-static struct gpio modem_gpios[] = { /* Nemo modem */
- {MODEM_EN, GPIOF_OUT_INIT_HIGH, "MODEM EN"},
- {MDM_RST, GPIOF_OUT_INIT_LOW, "MODEM RESET"},
-};
-
-static struct tegra_usb_platform_data tegra_ehci2_hsic_baseband_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_HSIC,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
-};
-
-static int baseband_init(void)
-{
- int ret;
-
- ret = gpio_request_array(modem_gpios, ARRAY_SIZE(modem_gpios));
- if (ret) {
- pr_warn("%s:gpio request failed\n", __func__);
- return ret;
- }
-
- /* enable pull-down for MDM_COLD_BOOT */
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_KB_COL5,
- TEGRA_PUPD_PULL_DOWN);
-
- /* export GPIO for user space access through sysfs */
- gpio_export(MDM_RST, false);
-
- return 0;
-}
-
-static const struct tegra_modem_operations baseband_operations = {
- .init = baseband_init,
-};
-
-static struct tegra_usb_modem_power_platform_data baseband_pdata = {
- .ops = &baseband_operations,
- .wake_gpio = -1,
- .boot_gpio = MDM_COLDBOOT,
- .boot_irq_flags = IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
- .autosuspend_delay = 2000,
- .short_autosuspend_delay = 50,
- .tegra_ehci_device = &tegra_ehci2_device,
- .tegra_ehci_pdata = &tegra_ehci2_hsic_baseband_pdata,
-};
-
-static struct platform_device icera_nemo_device = {
- .name = "tegra_usb_modem_power",
- .id = -1,
- .dev = {
- .platform_data = &baseband_pdata,
- },
-};
-
-static void pismo_modem_init(void)
-{
- int modem_id = tegra_get_modem_id();
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
- switch (modem_id) {
- case TEGRA_BB_NEMO: /* on board i500 HSIC */
- if (!(usb_port_owner_info & HSIC1_PORT_OWNER_XUSB))
- platform_device_register(&icera_nemo_device);
- break;
- }
-}
-
-#else
-static void pismo_usb_init(void) { }
-static void pismo_modem_init(void) { }
-#endif
-
-static void pismo_audio_init(void)
-{
- pismo_audio_pdata.codec_name = "rt5640.0-001c";
- pismo_audio_pdata.codec_dai_name = "rt5640-aif1";
-}
-
-struct rm_spi_ts_platform_data rm31080ts_pismo_data = {
- .gpio_reset = 0,
- .config = 0,
- .platform_id = RM_PLATFORM_D010,
- .name_of_clock = "clk_out_2",
-};
-
-static struct tegra_spi_device_controller_data dev_cdata = {
- .rx_clk_tap_delay = 16,
- .tx_clk_tap_delay = 16,
-};
-
-struct spi_board_info rm31080a_pismo_spi_board[1] = {
- {
- .modalias = "rm_ts_spidev",
- .bus_num = 3,
- .chip_select = 2,
- .max_speed_hz = 12 * 1000 * 1000,
- .mode = SPI_MODE_0,
- .controller_data = &dev_cdata,
- .platform_data = &rm31080ts_pismo_data,
- },
-};
-
-static void __init tegra_pismo_init(void)
-{
- struct board_info board_info;
-
- tegra_get_display_board_info(&board_info);
- tegra_clk_init_from_table(pismo_clk_init_table);
- tegra_clk_verify_parents();
- tegra_soc_device_init("pismo");
- pismo_i2c_init();
- pismo_usb_init();
- pismo_uart_init();
- pismo_audio_init();
- platform_add_devices(pismo_devices, ARRAY_SIZE(pismo_devices));
- tegra_io_dpd_init();
- pismo_regulator_init();
- pismo_sdhci_init();
- pismo_suspend_init();
- pismo_emc_init();
- pismo_edp_init();
- pismo_panel_init();
-#ifdef CONFIG_BT_BLUESLEEP
- pismo_setup_bluesleep();
- pismo_setup_bt_rfkill();
-#elif defined CONFIG_BLUEDROID_PM
- pismo_setup_bluedroid_pm();
-#endif
- pismo_modem_init();
-#ifdef CONFIG_TEGRA_WDT_RECOVERY
- tegra_wdt_recovery_init();
-#endif
- tegra_serial_debug_init(TEGRA_UARTD_BASE, INT_WDT_CPU, NULL, -1, -1);
- pismo_sensors_init();
- pismo_soctherm_init();
-}
-
-#ifdef CONFIG_USE_OF
-struct of_dev_auxdata pismo_auxdata_lookup[] __initdata = {
- OF_DEV_AUXDATA("nvidia,tegra114-host1x", TEGRA_HOST1X_BASE, "host1x",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr3d", TEGRA_GR3D_BASE, "gr3d", NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr2d", TEGRA_GR2D_BASE, "gr2d", NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-msenc", TEGRA_MSENC_BASE, "msenc",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-vi", TEGRA_VI_BASE, "vi", NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-isp", TEGRA_ISP_BASE, "isp", NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-tsec", TEGRA_TSEC_BASE, "tsec", NULL),
- T114_SPI_OF_DEV_AUXDATA,
- T114_I2C_OF_DEV_AUXDATA,
- OF_DEV_AUXDATA("nvidia,tegra114-nvavp", 0x60001000, "nvavp",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-pwm", 0x7000a000, "tegra-pwm", NULL),
- {}
-};
-#endif
-
-static void __init tegra_pismo_dt_init(void)
-{
-#ifdef CONFIG_USE_OF
- of_platform_populate(NULL,
- of_default_bus_match_table, pismo_auxdata_lookup,
- &platform_bus);
-#endif
-
- tegra_pismo_init();
-}
-
-static void __init tegra_pismo_reserve(void)
-{
-#if defined(CONFIG_NVMAP_CONVERT_CARVEOUT_TO_IOVMM)
- /* 1920*1200*4*2 = 18432000 bytes */
- tegra_reserve(0, SZ_16M + SZ_2M, SZ_16M);
-#else
- tegra_reserve(SZ_128M, SZ_16M + SZ_2M, SZ_4M);
-#endif
-}
-
-static const char * const pismo_dt_board_compat[] = {
- "nvidia,pismo",
- NULL
-};
-
-MACHINE_START(PISMO, "pismo")
- .atag_offset = 0x100,
- .smp = smp_ops(tegra_smp_ops),
- .map_io = tegra_map_common_io,
- .reserve = tegra_pismo_reserve,
- .init_early = tegra11x_init_early,
- .init_irq = irqchip_init,
- .init_time = clocksource_of_init,
- .init_machine = tegra_pismo_dt_init,
- .restart = tegra_assert_system_reset,
- .dt_compat = pismo_dt_board_compat,
-MACHINE_END
diff --git a/arch/arm/mach-tegra/board-pismo.h b/arch/arm/mach-tegra/board-pismo.h
deleted file mode 100644
index c3097b9cf43f..000000000000
--- a/arch/arm/mach-tegra/board-pismo.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pismo.h
- *
- * Copyright (c) 2012, NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _MACH_TEGRA_BOARD_PISMO_H
-#define _MACH_TEGRA_BOARD_PISMO_H
-
-#include <mach/irqs.h>
-#include "gpio-names.h"
-
-/* External peripheral act as gpio */
-/* AS3720 GPIO */
-#define AS3720_GPIO_BASE TEGRA_NR_GPIOS
-
-/* Hall Effect Sensor GPIO */
-#define TEGRA_GPIO_HALL TEGRA_GPIO_PS0
-
-/* Audio-related GPIOs */
-#define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PW3
-#define TEGRA_GPIO_LDO1_EN TEGRA_GPIO_PV3
-#define TEGRA_GPIO_CODEC1_EN TEGRA_GPIO_PP3
-#define TEGRA_GPIO_CODEC2_EN TEGRA_GPIO_PP1
-#define TEGRA_GPIO_CODEC3_EN TEGRA_GPIO_PV0
-
-#define TEGRA_GPIO_SPKR_EN -1
-#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PR7
-#define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PK3
-#define TEGRA_GPIO_EXT_MIC_EN -1
-
-#define TEGRA_GPIO_W_DISABLE TEGRA_GPIO_PDD7
-#define TEGRA_GPIO_MODEM_RSVD1 TEGRA_GPIO_PV0
-#define TEGRA_GPIO_MODEM_RSVD2 TEGRA_GPIO_PH7
-
-/* External peripheral act as interrupt controller */
-/* AS3720 IRQs */
-#define AS3270_IRQ_BASE TEGRA_NR_IRQS
-
-/* I2C related GPIOs */
-#define TEGRA_GPIO_I2C1_SCL TEGRA_GPIO_PC4
-#define TEGRA_GPIO_I2C1_SDA TEGRA_GPIO_PC5
-#define TEGRA_GPIO_I2C2_SCL TEGRA_GPIO_PT5
-#define TEGRA_GPIO_I2C2_SDA TEGRA_GPIO_PT6
-#define TEGRA_GPIO_I2C3_SCL TEGRA_GPIO_PBB1
-#define TEGRA_GPIO_I2C3_SDA TEGRA_GPIO_PBB2
-#define TEGRA_GPIO_I2C4_SCL TEGRA_GPIO_PV4
-#define TEGRA_GPIO_I2C4_SDA TEGRA_GPIO_PV5
-#define TEGRA_GPIO_I2C5_SCL TEGRA_GPIO_PZ6
-#define TEGRA_GPIO_I2C5_SDA TEGRA_GPIO_PZ7
-
-/* Camera related GPIOs */
-#define CAM_RSTN TEGRA_GPIO_PBB3
-#define CAM_FLASH_STROBE TEGRA_GPIO_PBB4
-#define CAM1_POWER_DWN_GPIO TEGRA_GPIO_PBB5
-#define CAM2_POWER_DWN_GPIO TEGRA_GPIO_PBB6
-#define CAM_AF_PWDN TEGRA_GPIO_PBB7
-#define CAM_GPIO1 TEGRA_GPIO_PCC1
-#define CAM_GPIO2 TEGRA_GPIO_PCC2
-
-/* Touchscreen definitions */
-#define TOUCH_GPIO_IRQ_RAYDIUM_SPI TEGRA_GPIO_PK2
-#define TOUCH_GPIO_RST_RAYDIUM_SPI TEGRA_GPIO_PK4
-
-/* HID over I2C GPIOs */
-#define I2C_KB_IRQ TEGRA_GPIO_PC7
-#define I2C_TP_IRQ TEGRA_GPIO_PH4
-
-/* Invensense MPU Definitions */
-#define MPU_GYRO_NAME "mpu9150"
-#define MPU_GYRO_IRQ_GPIO TEGRA_GPIO_PR3
-#define MPU_GYRO_ADDR 0x69
-#define MPU_GYRO_BUS_NUM 0
-#define MPU_GYRO_ORIENTATION { -1, 0, 0, 0, 1, 0, 0, 0, -1 }
-#define MPU_ACCEL_NAME "kxtf9"
-#define MPU_ACCEL_IRQ_GPIO 0 /* DISABLE ACCELIRQ: TEGRA_GPIO_PJ2 */
-#define MPU_ACCEL_ADDR 0x0F
-#define MPU_ACCEL_BUS_NUM 0
-#define MPU_ACCEL_ORIENTATION { 0, 1, 0, -1, 0, 0, 0, 0, 1 }
-#define MPU_COMPASS_NAME "ak8975"
-#define MPU_COMPASS_IRQ_GPIO 0
-#define MPU_COMPASS_ADDR 0x0D
-#define MPU_COMPASS_BUS_NUM 0
-#define MPU_COMPASS_ORIENTATION { 0, 1, 0, -1, 0, 0, 0, 0, 1 }
-
-/* Modem related GPIOs */
-#define MODEM_EN TEGRA_GPIO_PP2
-#define MDM_RST TEGRA_GPIO_PP0
-#define MDM_COLDBOOT TEGRA_GPIO_PQ5
-
-int pismo_regulator_init(void);
-int pismo_suspend_init(void);
-int pismo_sdhci_init(void);
-int pismo_sensors_init(void);
-int pismo_emc_init(void);
-int pismo_edp_init(void);
-int pismo_panel_init(void);
-int roth_panel_init(void);
-int pismo_kbc_init(void);
-int pismo_soctherm_init(void);
-
-/* Baseband IDs */
-enum tegra_bb_type {
- TEGRA_BB_NEMO = 1,
-};
-
-#define UTMI1_PORT_OWNER_XUSB 0x1
-#define UTMI2_PORT_OWNER_XUSB 0x2
-#define HSIC1_PORT_OWNER_XUSB 0x4
-
-#endif
diff --git a/arch/arm/mach-tegra/board-pluto-kbc.c b/arch/arm/mach-tegra/board-pluto-kbc.c
deleted file mode 100644
index 22e71561aa47..000000000000
--- a/arch/arm/mach-tegra/board-pluto-kbc.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pluto-kbc.c
- * Keys configuration for Nvidia tegra3 pluto platform.
- *
- * Copyright (C) 2012 NVIDIA, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307, USA
- */
-
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/input.h>
-#include <linux/input/tegra_kbc.h>
-#include <linux/gpio.h>
-#include <linux/gpio_keys.h>
-
-#include "board.h"
-#include "board-pluto.h"
-#include "devices.h"
-
-#define PLUTO_ROW_COUNT 3
-#define PLUTO_COL_COUNT 3
-
-static const u32 kbd_keymap[] = {
- KEY(0, 0, KEY_POWER),
- KEY(0, 1, KEY_VOLUMEUP),
- KEY(0, 2, KEY_VOLUMEDOWN),
-
- KEY(1, 0, KEY_SEARCH),
- KEY(1, 1, KEY_CAMERA),
- KEY(1, 2, KEY_CAMERA_FOCUS),
-
- KEY(2, 0, KEY_HOME),
- KEY(2, 1, KEY_BACK),
- KEY(2, 2, KEY_MENU),
-};
-
-static const struct matrix_keymap_data keymap_data = {
- .keymap = kbd_keymap,
- .keymap_size = ARRAY_SIZE(kbd_keymap),
-};
-
-static struct tegra_kbc_wake_key pluto_wake_cfg[] = {
- [0] = {
- .row = 0,
- .col = 0,
- },
- [1] = {
- .row = 0,
- .col = 1,
- },
- [2] = {
- .row = 0,
- .col = 2,
- },
-};
-
-static struct tegra_kbc_platform_data pluto_kbc_platform_data = {
- .debounce_cnt = 20 * 32, /* 20 ms debaunce time */
- .repeat_cnt = 1,
- .scan_count = 30,
- .wakeup = true,
- .keymap_data = &keymap_data,
- .wake_cnt = 3,
- .wake_cfg = &pluto_wake_cfg[0],
- .wakeup_key = KEY_POWER,
-#ifdef CONFIG_ANDROID
- .disable_ev_rep = true,
-#endif
-};
-
-static struct gpio_keys_button pluto_keys[] = {
- [0] = {
- .code = KEY_MUTE,
- .gpio = TEGRA_GPIO_PI5,
- .irq = -1,
- .type = EV_KEY,
- .desc = "RINGER",
- .active_low = 0,
- .wakeup = 0,
- .debounce_interval = 100,
- },
-};
-
-static struct gpio_keys_platform_data pluto_keys_pdata = {
- .buttons = pluto_keys,
- .nbuttons = ARRAY_SIZE(pluto_keys),
-};
-
-static struct platform_device pluto_keys_device = {
- .name = "gpio-keys",
- .id = 0,
- .dev = {
- .platform_data = &pluto_keys_pdata,
- },
-};
-
-int __init pluto_kbc_init(void)
-{
- struct tegra_kbc_platform_data *data = &pluto_kbc_platform_data;
- int i;
-
- tegra_kbc_device.dev.platform_data = &pluto_kbc_platform_data;
- pr_info("Registering tegra-kbc\n");
-
- BUG_ON((KBC_MAX_ROW + KBC_MAX_COL) > KBC_MAX_GPIO);
- for (i = 0; i < PLUTO_ROW_COUNT; i++) {
- data->pin_cfg[i].num = i;
- data->pin_cfg[i].type = PIN_CFG_ROW;
- }
- for (i = 0; i < PLUTO_COL_COUNT; i++) {
- data->pin_cfg[i + KBC_PIN_GPIO_11].num = i;
- data->pin_cfg[i + KBC_PIN_GPIO_11].type = PIN_CFG_COL;
- }
-
- platform_device_register(&tegra_kbc_device);
- pr_info("Registering successful tegra-kbc\n");
-
- platform_device_register(&pluto_keys_device);
- pr_info("Registering successful gpio-keys\n");
-
- return 0;
-}
-
diff --git a/arch/arm/mach-tegra/board-pluto-memory.c b/arch/arm/mach-tegra/board-pluto-memory.c
deleted file mode 100644
index 7c7ef4d8d025..000000000000
--- a/arch/arm/mach-tegra/board-pluto-memory.c
+++ /dev/null
@@ -1,4406 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pluto-memory.c
- *
- * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307, USA
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_data/tegra_emc_pdata.h>
-#include <linux/memblock.h>
-
-#include <asm-generic/sizes.h>
-
-#include "board.h"
-#include "board-pluto.h"
-#include "tegra-board-id.h"
-#include "tegra11_emc.h"
-#include "devices.h"
-#include "common.h"
-
-static struct tegra11_emc_table e1580_h9ccnnn8ktmlbr_ntm_AP40_2gb_table[] = {
- {
- 0x41, /* Rev 4.0.3 */
- 12750, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000003e, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x0000002f, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000000b, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x00000002, /* EMC_TXSR */
- 0x00000002, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000036, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00048000, /* EMC_DLL_XFORM_DQS4 */
- 0x00048000, /* EMC_DLL_XFORM_DQS5 */
- 0x00048000, /* EMC_DLL_XFORM_DQS6 */
- 0x00048000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000000f, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000165, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40040001, /* MC_EMEM_ARB_CFG */
- 0x8000003f, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090402, /* MC_EMEM_ARB_DA_COVERS */
- 0x77c30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00048000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS1 */
- 0x00048000, /* EMC_DLL_XFORM_DQS2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00048000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS1 */
- 0x00048000, /* EMC_DLL_XFORM_DQS2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000000e, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000013, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010083, /* Mode Register 1 */
- 0x00020004, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 57820, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 20400, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000026, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000001, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x0000004c, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000013, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x00000003, /* EMC_TXSR */
- 0x00000003, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000055, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00048000, /* EMC_DLL_XFORM_DQS4 */
- 0x00048000, /* EMC_DLL_XFORM_DQS5 */
- 0x00048000, /* EMC_DLL_XFORM_DQS6 */
- 0x00048000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000000f, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000019f, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40020001, /* MC_EMEM_ARB_CFG */
- 0x80000046, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74e30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00048000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS1 */
- 0x00048000, /* EMC_DLL_XFORM_DQS2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00048000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS1 */
- 0x00048000, /* EMC_DLL_XFORM_DQS2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000014, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000013, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010083, /* Mode Register 1 */
- 0x00020004, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 35610, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 40800, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000012, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000002, /* EMC_RC */
- 0x00000005, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x0000009a, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000026, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x00000006, /* EMC_TXSR */
- 0x00000006, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x000000aa, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00048000, /* EMC_DLL_XFORM_DQS4 */
- 0x00048000, /* EMC_DLL_XFORM_DQS5 */
- 0x00048000, /* EMC_DLL_XFORM_DQS6 */
- 0x00048000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000000f, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000023a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0xa0000001, /* MC_EMEM_ARB_CFG */
- 0x8000005b, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090402, /* MC_EMEM_ARB_DA_COVERS */
- 0x73030303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00048000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS1 */
- 0x00048000, /* EMC_DLL_XFORM_DQS2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00048000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS1 */
- 0x00048000, /* EMC_DLL_XFORM_DQS2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000002a, /* MC_PTSA_GRANT_DECREMENT */
- 0x00b000b0, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00b000c4, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00d700eb, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000eb, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00eb00eb, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00eb, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000013, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010083, /* Mode Register 1 */
- 0x00020004, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 20850, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 68000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000000a, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000004, /* EMC_RC */
- 0x00000008, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x00000101, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000040, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x0000000a, /* EMC_TXSR */
- 0x0000000a, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x0000011b, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00048000, /* EMC_DLL_XFORM_DQS4 */
- 0x00048000, /* EMC_DLL_XFORM_DQS5 */
- 0x00048000, /* EMC_DLL_XFORM_DQS6 */
- 0x00048000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x00000019, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000309, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000001, /* MC_EMEM_ARB_CFG */
- 0x80000076, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090402, /* MC_EMEM_ARB_DA_COVERS */
- 0x72630403, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00048000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS1 */
- 0x00048000, /* EMC_DLL_XFORM_DQS2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00048000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS1 */
- 0x00048000, /* EMC_DLL_XFORM_DQS2 */
- 0x00048000, /* EMC_DLL_XFORM_DQS3 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0006c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000046, /* MC_PTSA_GRANT_DECREMENT */
- 0x00690069, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00690075, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0081008d, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000008d, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x008d008d, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00bc008d, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000bc, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00bc00bc, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000013, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010083, /* Mode Register 1 */
- 0x00020004, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 10720, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 102000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000006, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000006, /* EMC_RC */
- 0x0000000d, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000004, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x00000181, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000060, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x0000000f, /* EMC_TXSR */
- 0x0000000f, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x000001a9, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00048000, /* EMC_DLL_XFORM_DQS4 */
- 0x00048000, /* EMC_DLL_XFORM_DQS5 */
- 0x00048000, /* EMC_DLL_XFORM_DQS6 */
- 0x00048000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x00000025, /* EMC_ZCAL_WAIT_CNT */
- 0x000e000e, /* EMC_MRS_WAIT_CNT */
- 0x000e000e, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000040c, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x08000001, /* MC_EMEM_ARB_CFG */
- 0x80000098, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090403, /* MC_EMEM_ARB_DA_COVERS */
- 0x72430504, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x000c0000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x000c0000, /* EMC_DLL_XFORM_DQ1 */
- 0x000c0000, /* EMC_DLL_XFORM_DQ2 */
- 0x000c0000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000003, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x000c0000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00048000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00048000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x000c0000, /* EMC_DLL_XFORM_DQ1 */
- 0x000c0000, /* EMC_DLL_XFORM_DQ2 */
- 0x000c0000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000068, /* MC_PTSA_GRANT_DECREMENT */
- 0x00460046, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0046004e, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0056005e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000005e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x005e005e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x007d005e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000007d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x007d007d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000012, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010083, /* Mode Register 1 */
- 0x00020004, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 6890, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000000c, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000008, /* EMC_RAS */
- 0x00000003, /* EMC_RP */
- 0x00000007, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000003, /* EMC_RD_RCD */
- 0x00000003, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000002, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x00000010, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000003, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x0000001d, /* EMC_TXSR */
- 0x0000001d, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x0000000b, /* EMC_TFAW */
- 0x00000005, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000351, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000004a, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000714, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000005, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05050102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0506, /* MC_EMEM_ARB_DA_COVERS */
- 0x71e40a07, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000008, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00058000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00070000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00070000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00058000, /* EMC_DLL_XFORM_DQ1 */
- 0x00058000, /* EMC_DLL_XFORM_DQ2 */
- 0x00058000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000008, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00058000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00070000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00070000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00058000, /* EMC_DLL_XFORM_DQ1 */
- 0x00058000, /* EMC_DLL_XFORM_DQ2 */
- 0x00058000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000017, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010083, /* Mode Register 1 */
- 0x00020004, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 3420, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 312000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000012, /* EMC_RC */
- 0x00000028, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000d, /* EMC_RAS */
- 0x00000005, /* EMC_RP */
- 0x00000008, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000005, /* EMC_RD_RCD */
- 0x00000005, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000002, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x0000049d, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000127, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000005, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x0000002c, /* EMC_TXSR */
- 0x0000002c, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000010, /* EMC_TFAW */
- 0x00000007, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000514, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00020000, /* EMC_DLL_XFORM_DQS4 */
- 0x00020000, /* EMC_DLL_XFORM_DQS5 */
- 0x00020000, /* EMC_DLL_XFORM_DQS6 */
- 0x00020000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x00000071, /* EMC_ZCAL_WAIT_CNT */
- 0x000e000e, /* EMC_MRS_WAIT_CNT */
- 0x000e000e, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000a4c, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0b000004, /* MC_EMEM_ARB_CFG */
- 0x8000016a, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000009, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000007, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05050102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000c0709, /* MC_EMEM_ARB_DA_COVERS */
- 0x71c50f0a, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000f, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00038000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00038000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00038000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00038000, /* EMC_DLL_XFORM_DQ1 */
- 0x00038000, /* EMC_DLL_XFORM_DQ2 */
- 0x00038000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000f, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00038000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00038000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00038000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00038000, /* EMC_DLL_XFORM_DQ1 */
- 0x00038000, /* EMC_DLL_XFORM_DQ2 */
- 0x00038000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000140, /* MC_PTSA_GRANT_DECREMENT */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00170019, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x001c001e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000001e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x001e001e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0029001e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000029, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00290029, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff0082, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000021, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010083, /* Mode Register 1 */
- 0x00020004, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 2680, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000018, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000011, /* EMC_RAS */
- 0x00000007, /* EMC_RP */
- 0x0000000b, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000d, /* EMC_W2P */
- 0x00000007, /* EMC_RD_RCD */
- 0x00000007, /* EMC_WR_RCD */
- 0x00000004, /* EMC_RRD */
- 0x00000002, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000008, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000005, /* EMC_QRST */
- 0x00000013, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000003, /* EMC_PDEX2WR */
- 0x00000003, /* EMC_PDEX2RD */
- 0x00000007, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000003a, /* EMC_TXSR */
- 0x0000003a, /* EMC_TXSRDLL */
- 0x00000007, /* EMC_TCKE */
- 0x00000007, /* EMC_TCKESR */
- 0x00000007, /* EMC_TPD */
- 0x00000015, /* EMC_TFAW */
- 0x00000009, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x000006a2, /* EMC_TREFBW */
- 0x00000008, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001a886, /* EMC_FBIO_CFG5 */
- 0x00580088, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001003d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x00000093, /* EMC_ZCAL_WAIT_CNT */
- 0x00110011, /* EMC_MRS_WAIT_CNT */
- 0x00110011, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d24, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06070102, /* MC_EMEM_ARB_DA_TURNS */
- 0x0010090c, /* MC_EMEM_ARB_DA_COVERS */
- 0x71c7130d, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000006, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000e, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000011, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410421, /* EMC_XM2DQSPADCTRL3 */
- 0x00020000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00018000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00018000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00020000, /* EMC_DLL_XFORM_DQ1 */
- 0x00020000, /* EMC_DLL_XFORM_DQ2 */
- 0x00020000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000006, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000e, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000011, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x10410421, /* EMC_XM2DQSPADCTRL3 */
- 0x00020000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00018000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00018000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00020000, /* EMC_DLL_XFORM_DQ1 */
- 0x00020000, /* EMC_DLL_XFORM_DQ2 */
- 0x00020000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000029, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf3200006, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x000100c3, /* Mode Register 1 */
- 0x00020006, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 624000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000025, /* EMC_RC */
- 0x00000051, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000001a, /* EMC_RAS */
- 0x0000000b, /* EMC_RP */
- 0x0000000d, /* EMC_R2W */
- 0x0000000c, /* EMC_W2R */
- 0x00000004, /* EMC_R2P */
- 0x00000011, /* EMC_W2P */
- 0x0000000b, /* EMC_RD_RCD */
- 0x0000000b, /* EMC_WR_RCD */
- 0x00000006, /* EMC_RRD */
- 0x00000003, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x0000000b, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000007, /* EMC_QRST */
- 0x00000017, /* EMC_RDV_MASK */
- 0x00000945, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000251, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000004, /* EMC_PDEX2WR */
- 0x00000004, /* EMC_PDEX2RD */
- 0x0000000b, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x00000014, /* EMC_RW2PDEN */
- 0x00000058, /* EMC_TXSR */
- 0x00000058, /* EMC_TXSRDLL */
- 0x0000000a, /* EMC_TCKE */
- 0x0000000a, /* EMC_TCKESR */
- 0x0000000a, /* EMC_TPD */
- 0x00000020, /* EMC_TFAW */
- 0x0000000e, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000a28, /* EMC_TREFBW */
- 0x0000000b, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001a886, /* EMC_FBIO_CFG5 */
- 0xf00d0199, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001003d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000301, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x000000e1, /* EMC_ZCAL_WAIT_CNT */
- 0x00140014, /* EMC_MRS_WAIT_CNT */
- 0x00140014, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001395, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x06000009, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000013, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000b, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000008, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_W2R */
- 0x07080103, /* MC_EMEM_ARB_DA_TURNS */
- 0x00160e13, /* MC_EMEM_ARB_DA_COVERS */
- 0x71ca1d14, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000f, /* EMC_QUSE */
- 0x00000009, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x00000010, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000015, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x18618621, /* EMC_XM2DQSPADCTRL3 */
- 0x00003010, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000010, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000010, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x00003010, /* EMC_DLL_XFORM_DQ1 */
- 0x00003010, /* EMC_DLL_XFORM_DQ2 */
- 0x00003010, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000f, /* EMC_QUSE */
- 0x00000009, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x00000010, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000015, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x18618621, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000010, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000010, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000013f, /* MC_PTSA_GRANT_DECREMENT */
- 0x000b000b, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000e000f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000f000f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0014000f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000014, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00140014, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x008a0041, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x008a008a, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x0000003d, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf3200000, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010003, /* Mode Register 1 */
- 0x00020018, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 1440, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 744000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000002c, /* EMC_RC */
- 0x00000061, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000001f, /* EMC_RAS */
- 0x0000000d, /* EMC_RP */
- 0x0000000f, /* EMC_R2W */
- 0x0000000d, /* EMC_W2R */
- 0x00000005, /* EMC_R2P */
- 0x00000013, /* EMC_W2P */
- 0x0000000d, /* EMC_RD_RCD */
- 0x0000000d, /* EMC_WR_RCD */
- 0x00000007, /* EMC_RRD */
- 0x00000003, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x0000000d, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000009, /* EMC_QRST */
- 0x0000001a, /* EMC_RDV_MASK */
- 0x00000b1e, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000002c7, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000005, /* EMC_PDEX2WR */
- 0x00000005, /* EMC_PDEX2RD */
- 0x0000000d, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x00000016, /* EMC_RW2PDEN */
- 0x00000069, /* EMC_TXSR */
- 0x00000069, /* EMC_TXSRDLL */
- 0x0000000c, /* EMC_TCKE */
- 0x0000000c, /* EMC_TCKESR */
- 0x0000000c, /* EMC_TPD */
- 0x00000026, /* EMC_TFAW */
- 0x00000010, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000c21, /* EMC_TREFBW */
- 0x0000010d, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001a886, /* EMC_FBIO_CFG5 */
- 0xf0080199, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000003d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f408, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000301, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000010c, /* EMC_ZCAL_WAIT_CNT */
- 0x00150015, /* EMC_MRS_WAIT_CNT */
- 0x00150015, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000172f, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0300000b, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000016, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000e, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000012, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000009, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000008, /* MC_EMEM_ARB_TIMING_W2R */
- 0x08090103, /* MC_EMEM_ARB_DA_TURNS */
- 0x00191016, /* MC_EMEM_ARB_DA_COVERS */
- 0x71cc2217, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000012, /* EMC_QUSE */
- 0x0000000b, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x00000011, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000018, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x18618621, /* EMC_XM2DQSPADCTRL3 */
- 0x00008007, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004009, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000707, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004009, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000400a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000800a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000400a, /* EMC_DLL_XFORM_DQS3 */
- 0x00008007, /* EMC_DLL_XFORM_DQ1 */
- 0x00008007, /* EMC_DLL_XFORM_DQ2 */
- 0x00008007, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000012, /* EMC_QUSE */
- 0x0000000b, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x00000011, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000018, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x18618621, /* EMC_XM2DQSPADCTRL3 */
- 0x00008007, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004009, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000909, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004009, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000400a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000800a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000400a, /* EMC_DLL_XFORM_DQS3 */
- 0x00008007, /* EMC_DLL_XFORM_DQ1 */
- 0x00008007, /* EMC_DLL_XFORM_DQ2 */
- 0x00008007, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000017d, /* MC_PTSA_GRANT_DECREMENT */
- 0x00090009, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0009000a, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000c, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000c000c, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0011000c, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000011, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00740036, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00740074, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000048, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf3200000, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x00010043, /* Mode Register 1 */
- 0x0002001a, /* Mode Register 2 */
- 0x000b0000, /* Mode Register 4 */
- 1200, /* expected dvfs latency (ns) */
- },
-};
-
-static struct tegra11_emc_table e1580_h9ccnnn8ktmlbr_ntm_AP40_table[] = {
- {
- 0x41, /* Rev 4.0.3 */
- 12750, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000003e, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x0000002f, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000000b, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x00000002, /* EMC_TXSR */
- 0x00000002, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000036, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0007c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000000f, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000165, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40040001, /* MC_EMEM_ARB_CFG */
- 0x8000003f, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090402, /* MC_EMEM_ARB_DA_COVERS */
- 0x77c30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x0007c000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000000e, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000013, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010083, /* Mode Register 1 */
- 0x80020004, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 57820, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 20400, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000026, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000001, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x0000004c, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000013, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x00000003, /* EMC_TXSR */
- 0x00000003, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000055, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0007c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000000f, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000019f, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40020001, /* MC_EMEM_ARB_CFG */
- 0x80000046, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74e30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x0007c000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000014, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000013, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010083, /* Mode Register 1 */
- 0x80020004, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 35610, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 40800, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000012, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000002, /* EMC_RC */
- 0x00000005, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x0000009a, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000026, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x00000006, /* EMC_TXSR */
- 0x00000006, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x000000aa, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0007c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000000f, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000023a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0xa0000001, /* MC_EMEM_ARB_CFG */
- 0x8000005b, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090402, /* MC_EMEM_ARB_DA_COVERS */
- 0x73030303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x0007c000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000002a, /* MC_PTSA_GRANT_DECREMENT */
- 0x00b000b0, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00b000c4, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00d700eb, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000eb, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00eb00eb, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00eb, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000013, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010083, /* Mode Register 1 */
- 0x80020004, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 20850, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 68000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000000a, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000004, /* EMC_RC */
- 0x00000008, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000101, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000040, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x0000000a, /* EMC_TXSR */
- 0x0000000a, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x0000011b, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0007c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x00000019, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000309, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000001, /* MC_EMEM_ARB_CFG */
- 0x80000076, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090402, /* MC_EMEM_ARB_DA_COVERS */
- 0x72630403, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x0007c000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000046, /* MC_PTSA_GRANT_DECREMENT */
- 0x00690069, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00690075, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0081008d, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000008d, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x008d008d, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00bc008d, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000bc, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00bc00bc, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000013, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010083, /* Mode Register 1 */
- 0x80020004, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 10720, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 102000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000006, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000006, /* EMC_RC */
- 0x0000000d, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000004, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000001, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000005, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000d, /* EMC_RDV_MASK */
- 0x00000181, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000060, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000002, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x0000000f, /* EMC_TXSR */
- 0x0000000f, /* EMC_TXSRDLL */
- 0x00000003, /* EMC_TCKE */
- 0x00000003, /* EMC_TCKESR */
- 0x00000003, /* EMC_TPD */
- 0x00000008, /* EMC_TFAW */
- 0x00000004, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x000001a9, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0007c000, /* EMC_DLL_XFORM_DQS4 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS5 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS6 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x00000025, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000040c, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x08000001, /* MC_EMEM_ARB_CFG */
- 0x80000098, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000003, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05040102, /* MC_EMEM_ARB_DA_TURNS */
- 0x00090403, /* MC_EMEM_ARB_DA_COVERS */
- 0x72430504, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x0007c000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0007c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000068, /* MC_PTSA_GRANT_DECREMENT */
- 0x00460046, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0046004e, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0056005e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000005e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x005e005e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x007d005e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000007d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x007d007d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000013, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010083, /* Mode Register 1 */
- 0x80020004, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 6890, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000000c, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000008, /* EMC_RAS */
- 0x00000003, /* EMC_RP */
- 0x00000007, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000003, /* EMC_RD_RCD */
- 0x00000003, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000002, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000003, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x0000001d, /* EMC_TXSR */
- 0x0000001d, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x0000000b, /* EMC_TFAW */
- 0x00000005, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000351, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000004a, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000714, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000005, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05050102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0506, /* MC_EMEM_ARB_DA_COVERS */
- 0x71e40a07, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00040000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00040000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00040000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00040000, /* EMC_DLL_XFORM_DQ1 */
- 0x00040000, /* EMC_DLL_XFORM_DQ2 */
- 0x00040000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00040000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00040000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00040000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00040000, /* EMC_DLL_XFORM_DQ1 */
- 0x00040000, /* EMC_DLL_XFORM_DQ2 */
- 0x00040000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000017, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010083, /* Mode Register 1 */
- 0x80020004, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 3420, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 312000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000012, /* EMC_RC */
- 0x00000028, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000d, /* EMC_RAS */
- 0x00000005, /* EMC_RP */
- 0x00000008, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000005, /* EMC_RD_RCD */
- 0x00000005, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000002, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x00000011, /* EMC_RDV_MASK */
- 0x0000049d, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000127, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000005, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000d, /* EMC_RW2PDEN */
- 0x0000002c, /* EMC_TXSR */
- 0x0000002c, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000010, /* EMC_TFAW */
- 0x00000007, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000514, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x00580088, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00020000, /* EMC_DLL_XFORM_DQS4 */
- 0x00020000, /* EMC_DLL_XFORM_DQS5 */
- 0x00020000, /* EMC_DLL_XFORM_DQS6 */
- 0x00020000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x00000071, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000a4c, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0b000004, /* MC_EMEM_ARB_CFG */
- 0x8000016a, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000009, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000007, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05050102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000c0709, /* MC_EMEM_ARB_DA_COVERS */
- 0x71c50f0a, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00020000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000f, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00038000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00024000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS1 */
- 0x00020000, /* EMC_DLL_XFORM_DQS2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS3 */
- 0x00038000, /* EMC_DLL_XFORM_DQ1 */
- 0x00038000, /* EMC_DLL_XFORM_DQ2 */
- 0x00038000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00020000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000f, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00038000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00024000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00024000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS1 */
- 0x00020000, /* EMC_DLL_XFORM_DQS2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS3 */
- 0x00038000, /* EMC_DLL_XFORM_DQ1 */
- 0x00038000, /* EMC_DLL_XFORM_DQ2 */
- 0x00038000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000140, /* MC_PTSA_GRANT_DECREMENT */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00170019, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x001c001e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000001e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x001e001e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0029001e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000029, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00290029, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff0082, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000021, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010083, /* Mode Register 1 */
- 0x80020004, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 2680, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000018, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000011, /* EMC_RAS */
- 0x00000007, /* EMC_RP */
- 0x0000000a, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000d, /* EMC_W2P */
- 0x00000007, /* EMC_RD_RCD */
- 0x00000007, /* EMC_WR_RCD */
- 0x00000004, /* EMC_RRD */
- 0x00000002, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000008, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000005, /* EMC_QRST */
- 0x00000013, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000003, /* EMC_PDEX2WR */
- 0x00000003, /* EMC_PDEX2RD */
- 0x00000007, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000003a, /* EMC_TXSR */
- 0x0000003a, /* EMC_TXSRDLL */
- 0x00000007, /* EMC_TCKE */
- 0x00000007, /* EMC_TCKESR */
- 0x00000007, /* EMC_TPD */
- 0x00000015, /* EMC_TFAW */
- 0x00000009, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x000006a2, /* EMC_TREFBW */
- 0x00000007, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001a886, /* EMC_FBIO_CFG5 */
- 0x00580088, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00020000, /* EMC_DLL_XFORM_DQS4 */
- 0x00020000, /* EMC_DLL_XFORM_DQS5 */
- 0x00020000, /* EMC_DLL_XFORM_DQS6 */
- 0x00020000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001003d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0xa1f1f409, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x00000093, /* EMC_ZCAL_WAIT_CNT */
- 0x00110011, /* EMC_MRS_WAIT_CNT */
- 0x00110011, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d24, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06060102, /* MC_EMEM_ARB_DA_TURNS */
- 0x0010090c, /* MC_EMEM_ARB_DA_COVERS */
- 0x71c7130d, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000006, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00020000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000e, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000011, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x14514521, /* EMC_XM2DQSPADCTRL3 */
- 0x00020000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00008000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS1 */
- 0x00020000, /* EMC_DLL_XFORM_DQS2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS3 */
- 0x00020000, /* EMC_DLL_XFORM_DQ1 */
- 0x00020000, /* EMC_DLL_XFORM_DQ2 */
- 0x00020000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000006, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00020000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000e, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000011, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x14514521, /* EMC_XM2DQSPADCTRL3 */
- 0x00020000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00008000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00008000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS1 */
- 0x00020000, /* EMC_DLL_XFORM_DQS2 */
- 0x00020000, /* EMC_DLL_XFORM_DQS3 */
- 0x00020000, /* EMC_DLL_XFORM_DQ1 */
- 0x00020000, /* EMC_DLL_XFORM_DQ2 */
- 0x00020000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000029, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf3200006, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x800100c3, /* Mode Register 1 */
- 0x80020006, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 624000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000025, /* EMC_RC */
- 0x00000051, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000001a, /* EMC_RAS */
- 0x0000000b, /* EMC_RP */
- 0x0000000c, /* EMC_R2W */
- 0x0000000c, /* EMC_W2R */
- 0x00000004, /* EMC_R2P */
- 0x00000011, /* EMC_W2P */
- 0x0000000b, /* EMC_RD_RCD */
- 0x0000000b, /* EMC_WR_RCD */
- 0x00000006, /* EMC_RRD */
- 0x00000003, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x0000000b, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000007, /* EMC_QRST */
- 0x00000017, /* EMC_RDV_MASK */
- 0x00000945, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000251, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000004, /* EMC_PDEX2WR */
- 0x00000004, /* EMC_PDEX2RD */
- 0x0000000b, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x00000014, /* EMC_RW2PDEN */
- 0x00000058, /* EMC_TXSR */
- 0x00000058, /* EMC_TXSRDLL */
- 0x0000000a, /* EMC_TCKE */
- 0x0000000a, /* EMC_TCKESR */
- 0x0000000a, /* EMC_TPD */
- 0x00000020, /* EMC_TFAW */
- 0x0000000e, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000a28, /* EMC_TREFBW */
- 0x0000000b, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001a886, /* EMC_FBIO_CFG5 */
- 0xf00d0199, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001003d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x000000e1, /* EMC_ZCAL_WAIT_CNT */
- 0x00130013, /* EMC_MRS_WAIT_CNT */
- 0x00130013, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001395, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x06000009, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000013, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000b, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_W2R */
- 0x07070103, /* MC_EMEM_ARB_DA_TURNS */
- 0x00160e13, /* MC_EMEM_ARB_DA_COVERS */
- 0x71ca1d14, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000f, /* EMC_QUSE */
- 0x00000009, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x00000010, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000015, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x18618621, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x0000c000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0000c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x00000008, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000008, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x0000000f, /* EMC_QUSE */
- 0x00000009, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x00000010, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000015, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x18618621, /* EMC_XM2DQSPADCTRL3 */
- 0x00000009, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x0000c000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0000c000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x00000008, /* EMC_DLL_XFORM_DQ1 */
- 0x00000009, /* EMC_DLL_XFORM_DQ2 */
- 0x00000008, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000013f, /* MC_PTSA_GRANT_DECREMENT */
- 0x000b000b, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000e000f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000f000f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0014000f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000014, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00140014, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x008a0041, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x008a008a, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x0000003d, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf3200000, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010003, /* Mode Register 1 */
- 0x80020018, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 1440, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 792000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000002f, /* EMC_RC */
- 0x00000066, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000021, /* EMC_RAS */
- 0x0000000e, /* EMC_RP */
- 0x0000000f, /* EMC_R2W */
- 0x0000000d, /* EMC_W2R */
- 0x00000005, /* EMC_R2P */
- 0x00000013, /* EMC_W2P */
- 0x0000000e, /* EMC_RD_RCD */
- 0x0000000e, /* EMC_WR_RCD */
- 0x00000007, /* EMC_RRD */
- 0x00000003, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x0000000e, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000009, /* EMC_QRST */
- 0x0000001a, /* EMC_RDV_MASK */
- 0x00000bd0, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000002f4, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000005, /* EMC_PDEX2WR */
- 0x00000005, /* EMC_PDEX2RD */
- 0x0000000e, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x00000017, /* EMC_RW2PDEN */
- 0x0000006f, /* EMC_TXSR */
- 0x0000006f, /* EMC_TXSRDLL */
- 0x0000000c, /* EMC_TCKE */
- 0x0000000c, /* EMC_TCKESR */
- 0x0000000c, /* EMC_TPD */
- 0x00000028, /* EMC_TFAW */
- 0x00000011, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000cdf, /* EMC_TREFBW */
- 0x0000000d, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0xf0070199, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000003d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f408, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000011e, /* EMC_ZCAL_WAIT_CNT */
- 0x00150015, /* EMC_MRS_WAIT_CNT */
- 0x00150015, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000188b, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0e00000b, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000018, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000013, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000009, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000008, /* MC_EMEM_ARB_TIMING_W2R */
- 0x08090103, /* MC_EMEM_ARB_DA_TURNS */
- 0x001a1118, /* MC_EMEM_ARB_DA_COVERS */
- 0x71ac2419, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000011, /* EMC_QUSE */
- 0x0000000b, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000c, /* EMC_DLL_XFORM_DQS0 */
- 0x00000011, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000018, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000d, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000010, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0000000f, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x00000009, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000b, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000d, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000d, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000d, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000011, /* EMC_QUSE */
- 0x0000000b, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000c, /* EMC_DLL_XFORM_DQS0 */
- 0x00000011, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000018, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000d, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000010, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x0000000f, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x00000009, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000b, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000d, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000d, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000d, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000196, /* MC_PTSA_GRANT_DECREMENT */
- 0x00090009, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0009000a, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000c, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000c000c, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0010000c, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000010, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00100010, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x006d0033, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x006d006d, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x0000004c, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf3200000, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010043, /* Mode Register 1 */
- 0x8002001a, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- 1200, /* expected dvfs latency (ns) */
- },
-};
-
-static struct tegra11_emc_table e1580_h9ccnnn8ktmlbr_ntm_table[] = {
- {
- 0x40, /* Rev 4.0 */
- 204000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000000c, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000008, /* EMC_RAS */
- 0x00000003, /* EMC_RP */
- 0x00000007, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000a, /* EMC_W2P */
- 0x00000003, /* EMC_RD_RCD */
- 0x00000003, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000002, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000e, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000003, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x0000000c, /* EMC_RW2PDEN */
- 0x0000001d, /* EMC_TXSR */
- 0x0000001d, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x0000000b, /* EMC_TFAW */
- 0x00000005, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000351, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0x005800a8, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a01c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x0000004a, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000714, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000005, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_W2R */
- 0x05050102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0506, /* MC_EMEM_ARB_DA_COVERS */
- 0x71e40a07, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00040000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00040000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00040000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00040000, /* EMC_DLL_XFORM_DQ1 */
- 0x00040000, /* EMC_DLL_XFORM_DQ2 */
- 0x00040000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000005, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000a, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00208208, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00040000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00040000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00040000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00040000, /* EMC_DLL_XFORM_DQ1 */
- 0x00040000, /* EMC_DLL_XFORM_DQ2 */
- 0x00040000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000017, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf320000e, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x80010083, /* Mode Register 1 */
- 0x80020004, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- },
- {
- 0x40, /* Rev 4.0 */
- 504000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000001e, /* EMC_RC */
- 0x00000041, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000015, /* EMC_RAS */
- 0x00000009, /* EMC_RP */
- 0x0000000b, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000d, /* EMC_W2P */
- 0x00000009, /* EMC_RD_RCD */
- 0x00000009, /* EMC_WR_RCD */
- 0x00000005, /* EMC_RRD */
- 0x00000003, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000003, /* EMC_WDV */
- 0x00000003, /* EMC_WDV_MASK */
- 0x00000008, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000005, /* EMC_QRST */
- 0x00000012, /* EMC_RDV_MASK */
- 0x00000775, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000001dd, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000003, /* EMC_PDEX2WR */
- 0x00000003, /* EMC_PDEX2RD */
- 0x00000009, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000001, /* EMC_AR2PDEN */
- 0x00000011, /* EMC_RW2PDEN */
- 0x00000047, /* EMC_TXSR */
- 0x00000047, /* EMC_TXSRDLL */
- 0x00000008, /* EMC_TCKE */
- 0x00000008, /* EMC_TCKESR */
- 0x00000008, /* EMC_TPD */
- 0x0000001a, /* EMC_TFAW */
- 0x0000000b, /* EMC_TRPAB */
- 0x00000001, /* EMC_TCLKSTABLE */
- 0x00000003, /* EMC_TCLKSTOP */
- 0x00000836, /* EMC_TREFBW */
- 0x00000007, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0001aa86, /* EMC_FBIO_CFG5 */
- 0xf0140099, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x00010220, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0003023d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc004, /* EMC_XM2CLKPADCTRL */
- 0x81f1f008, /* EMC_XM2COMPPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000000, /* EMC_TXDSRVTTGEN */
- 0x02000100, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00064000, /* EMC_ZCAL_INTERVAL */
- 0x000000b6, /* EMC_ZCAL_WAIT_CNT */
- 0x00110011, /* EMC_MRS_WAIT_CNT */
- 0x00110011, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001004, /* EMC_DYN_SELF_REF_CONTROL */
- 0x09257359, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x00000017, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x09000007, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000009, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06070103, /* MC_EMEM_ARB_DA_TURNS */
- 0x00120b0f, /* MC_EMEM_ARB_DA_COVERS */
- 0x71c81710, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000006, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000f, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x007df7df, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000b, /* EMC_QUSE */
- 0x00000006, /* EMC_EINPUT */
- 0x00000007, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000f, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x007df7df, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10000, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000000, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000102, /* MC_PTSA_GRANT_DECREMENT */
- 0x000e000e, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000e000f, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000013, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00130013, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00190013, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000019, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00190019, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ab0050, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ab00ab, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000032, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0xf3200006, /* EMC_CFG */
- 0x00000000, /* Mode Register 0 */
- 0x800100c3, /* Mode Register 1 */
- 0x80020006, /* Mode Register 2 */
- 0x800b0000, /* Mode Register 4 */
- },
-};
-
-static struct tegra11_emc_pdata e1580_no_dram_pdata = {
- .description = "e1580_h9ccnnn8ktmlbr_ntm",
- .tables = e1580_h9ccnnn8ktmlbr_ntm_table,
- .num_tables = ARRAY_SIZE(e1580_h9ccnnn8ktmlbr_ntm_table),
-};
-
-static struct tegra11_emc_pdata e1580_A01P_AP40_pdata = {
- .description = "e1580_h9ccnnn8ktmlbr_ntm_AP40",
- .tables = e1580_h9ccnnn8ktmlbr_ntm_AP40_table,
- .num_tables = ARRAY_SIZE(e1580_h9ccnnn8ktmlbr_ntm_AP40_table),
-};
-
-static struct tegra11_emc_pdata e1580_A01P_AP40_2gb_pdata = {
- .description = "e1580_h9ccnnn8ktmlbr_ntm_AP40_2gb",
- .tables = e1580_h9ccnnn8ktmlbr_ntm_AP40_2gb_table,
- .num_tables = ARRAY_SIZE(e1580_h9ccnnn8ktmlbr_ntm_AP40_2gb_table),
-};
-
-static struct tegra11_emc_pdata *pluto_get_emc_data(void)
-{
- struct board_info board_info;
- unsigned long mem;
-
- tegra_get_board_info(&board_info);
-
- /* Load AP40 Table */
- if (board_info.board_id == BOARD_E1580
- && tegra_get_sku_id() == 0x6) {
- /* Get the memory size */
- mem = memblock_phys_mem_size();
- if (mem > SZ_1G)
- /* Table for 2 GB memory */
- return &e1580_A01P_AP40_2gb_pdata;
- else
- return &e1580_A01P_AP40_pdata;
- }
-
- /* Default Pluto Table */
- if (board_info.board_id == BOARD_E1580 ||
- board_info.board_id == BOARD_E1575 ||
- board_info.board_id == BOARD_E1577)
- return &e1580_no_dram_pdata;
-
- return NULL;
-}
-
-int __init pluto_emc_init(void)
-{
- tegra_emc_device.dev.platform_data = pluto_get_emc_data();
- platform_device_register(&tegra_emc_device);
- tegra11_emc_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-pluto-panel.c b/arch/arm/mach-tegra/board-pluto-panel.c
deleted file mode 100644
index f77aad087902..000000000000
--- a/arch/arm/mach-tegra/board-pluto-panel.c
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pluto-panel.c
- *
- * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#include <linux/ioport.h>
-#include <linux/fb.h>
-#include <linux/nvmap.h>
-#include <linux/nvhost.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/tegra_pwm_bl.h>
-#include <linux/regulator/consumer.h>
-#include <linux/pwm_backlight.h>
-#include <linux/i2c/pca953x.h>
-#include <linux/of.h>
-#include <mach/irqs.h>
-#include <mach/dc.h>
-
-#include "board.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "board-pluto.h"
-#include "board-panel.h"
-#include "common.h"
-#include "iomap.h"
-
-#include "tegra11_host1x_devices.h"
-
-#define DSI_PANEL_RST_GPIO TEGRA_GPIO_PH5
-#define DSI_PANEL_BL_EN_GPIO TEGRA_GPIO_PH2
-#define DSI_PANEL_BL_PWM_GPIO TEGRA_GPIO_PH1
-
-struct platform_device * __init pluto_host1x_init(void)
-{
- struct platform_device *pdev = NULL;
-
-#ifdef CONFIG_TEGRA_GRHOST
- if (!of_have_populated_dt())
- pdev = tegra11_register_host1x_devices();
- else
- pdev = to_platform_device(bus_find_device_by_name(
- &platform_bus_type, NULL, "host1x"));
-#endif
- return pdev;
-}
-
-
-/* hdmi pins for hotplug */
-#define pluto_hdmi_hpd TEGRA_GPIO_PN7
-
-/* hdmi related regulators */
-static struct regulator *pluto_hdmi_vddio;
-static struct regulator *pluto_hdmi_reg;
-static struct regulator *pluto_hdmi_pll;
-
-static struct resource pluto_disp1_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_GENERAL,
- .end = INT_DISPLAY_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY_BASE,
- .end = TEGRA_DISPLAY_BASE + TEGRA_DISPLAY_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by pluto_panel_init() */
- .end = 0, /* Filled in by pluto_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "dsi_regs",
- .start = 0, /* Filled in the panel file by init_resources() */
- .end = 0, /* Filled in the panel file by init_resources() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "mipi_cal",
- .start = TEGRA_MIPI_CAL_BASE,
- .end = TEGRA_MIPI_CAL_BASE + TEGRA_MIPI_CAL_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource pluto_disp2_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_B_GENERAL,
- .end = INT_DISPLAY_B_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY2_BASE,
- .end = TEGRA_DISPLAY2_BASE + TEGRA_DISPLAY2_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by pluto_panel_init() */
- .end = 0, /* Filled in by pluto_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "hdmi_regs",
- .start = TEGRA_HDMI_BASE,
- .end = TEGRA_HDMI_BASE + TEGRA_HDMI_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct tegra_dc_sd_settings sd_settings;
-
-static struct tegra_dc_out pluto_disp1_out = {
- .type = TEGRA_DC_OUT_DSI,
- .sd_settings = &sd_settings,
-};
-
-static int pluto_hdmi_enable(struct device *dev)
-{
- int ret;
- if (!pluto_hdmi_reg) {
- pluto_hdmi_reg = regulator_get(dev, "avdd_hdmi");
- if (IS_ERR(pluto_hdmi_reg)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi\n");
- pluto_hdmi_reg = NULL;
- return PTR_ERR(pluto_hdmi_reg);
- }
- }
- ret = regulator_enable(pluto_hdmi_reg);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi\n");
- return ret;
- }
- if (!pluto_hdmi_pll) {
- pluto_hdmi_pll = regulator_get(dev, "avdd_hdmi_pll");
- if (IS_ERR(pluto_hdmi_pll)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi_pll\n");
- pluto_hdmi_pll = NULL;
- regulator_put(pluto_hdmi_reg);
- pluto_hdmi_reg = NULL;
- return PTR_ERR(pluto_hdmi_pll);
- }
- }
- ret = regulator_enable(pluto_hdmi_pll);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi_pll\n");
- return ret;
- }
- return 0;
-}
-
-static int pluto_hdmi_disable(void)
-{
- if (pluto_hdmi_reg) {
- regulator_disable(pluto_hdmi_reg);
- regulator_put(pluto_hdmi_reg);
- pluto_hdmi_reg = NULL;
- }
-
- if (pluto_hdmi_pll) {
- regulator_disable(pluto_hdmi_pll);
- regulator_put(pluto_hdmi_pll);
- pluto_hdmi_pll = NULL;
- }
-
- return 0;
-}
-
-static int pluto_hdmi_postsuspend(void)
-{
- if (pluto_hdmi_vddio) {
- regulator_disable(pluto_hdmi_vddio);
- regulator_put(pluto_hdmi_vddio);
- pluto_hdmi_vddio = NULL;
- }
- return 0;
-}
-
-static int pluto_hdmi_hotplug_init(struct device *dev)
-{
- int ret = 0;
- if (!pluto_hdmi_vddio) {
- pluto_hdmi_vddio = regulator_get(dev, "vdd_hdmi_5v0");
- if (IS_ERR(pluto_hdmi_vddio)) {
- ret = PTR_ERR(pluto_hdmi_vddio);
- pr_err("hdmi: couldn't get regulator vdd_hdmi_5v0\n");
- pluto_hdmi_vddio = NULL;
- return ret;
- }
- }
- ret = regulator_enable(pluto_hdmi_vddio);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator vdd_hdmi_5v0\n");
- regulator_put(pluto_hdmi_vddio);
- pluto_hdmi_vddio = NULL;
- return ret;
- }
- return ret;
-}
-
-static struct tegra_dc_out pluto_disp2_out = {
- .type = TEGRA_DC_OUT_HDMI,
- .flags = TEGRA_DC_OUT_HOTPLUG_HIGH,
- .parent_clk = "pll_d2_out0",
-
- .ddc_bus = 3,
- .hotplug_gpio = pluto_hdmi_hpd,
-
- .max_pixclock = KHZ2PICOS(297000),
-
- .enable = pluto_hdmi_enable,
- .disable = pluto_hdmi_disable,
- .postsuspend = pluto_hdmi_postsuspend,
- .hotplug_init = pluto_hdmi_hotplug_init,
-};
-
-static struct tegra_fb_data pluto_disp1_fb_data = {
- .win = 0,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
-};
-
-static struct tegra_dc_platform_data pluto_disp1_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &pluto_disp1_out,
- .fb = &pluto_disp1_fb_data,
- .emc_clk_rate = 204000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
-#endif
-};
-
-static struct tegra_fb_data pluto_disp2_fb_data = {
- .win = 0,
- .xres = 1024,
- .yres = 600,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
-};
-
-static struct tegra_dc_platform_data pluto_disp2_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &pluto_disp2_out,
- .fb = &pluto_disp2_fb_data,
- .emc_clk_rate = 300000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
-#endif
-};
-
-static struct platform_device pluto_disp2_device = {
- .name = "tegradc",
- .id = 1,
- .resource = pluto_disp2_resources,
- .num_resources = ARRAY_SIZE(pluto_disp2_resources),
- .dev = {
- .platform_data = &pluto_disp2_pdata,
- },
-};
-
-static struct platform_device pluto_disp1_device = {
- .name = "tegradc",
- .id = 0,
- .resource = pluto_disp1_resources,
- .num_resources = ARRAY_SIZE(pluto_disp1_resources),
- .dev = {
- .platform_data = &pluto_disp1_pdata,
- },
-};
-
-static struct nvmap_platform_carveout pluto_carveouts[] = {
- [0] = {
- .name = "iram",
- .usage_mask = NVMAP_HEAP_CARVEOUT_IRAM,
- .base = TEGRA_IRAM_BASE + TEGRA_RESET_HANDLER_SIZE,
- .size = TEGRA_IRAM_SIZE - TEGRA_RESET_HANDLER_SIZE,
- },
- [1] = {
- .name = "generic-0",
- .usage_mask = NVMAP_HEAP_CARVEOUT_GENERIC,
- .base = 0, /* Filled in by pluto_panel_init() */
- .size = 0, /* Filled in by pluto_panel_init() */
- },
- [2] = {
- .name = "vpr",
- .usage_mask = NVMAP_HEAP_CARVEOUT_VPR,
- .base = 0, /* Filled in by pluto_panel_init() */
- .size = 0, /* Filled in by pluto_panel_init() */
- },
-};
-
-static struct nvmap_platform_data pluto_nvmap_data = {
- .carveouts = pluto_carveouts,
- .nr_carveouts = ARRAY_SIZE(pluto_carveouts),
-};
-
-static struct platform_device pluto_nvmap_device = {
- .name = "tegra-nvmap",
- .id = -1,
- .dev = {
- .platform_data = &pluto_nvmap_data,
- },
-};
-
-static void pluto_panel_select(void)
-{
- struct tegra_panel *panel;
- struct board_info board;
- u8 dsi_instance = 0;
-
- tegra_get_display_board_info(&board);
-
- switch (board.board_id) {
- case BOARD_E1605:
- panel = &dsi_j_720p_4_7;
- dsi_instance = DSI_INSTANCE_1;
- break;
- case BOARD_E1577:
- panel = &dsi_s_1080p_5;
- break;
- case BOARD_E1582:
- default:
- if (tegra_get_board_panel_id()) {
- panel = &dsi_s_1080p_5;
- dsi_instance = DSI_INSTANCE_1;
- } else {
- panel = &dsi_l_720p_5;
- dsi_instance = DSI_INSTANCE_0;
- }
- break;
- }
-
- if (panel->init_sd_settings)
- panel->init_sd_settings(&sd_settings);
-
- if (panel->init_dc_out) {
- panel->init_dc_out(&pluto_disp1_out);
- pluto_disp1_out.dsi->dsi_instance = dsi_instance;
- pluto_disp1_out.dsi->dsi_panel_rst_gpio = DSI_PANEL_RST_GPIO;
- pluto_disp1_out.dsi->dsi_panel_bl_en_gpio =
- DSI_PANEL_BL_EN_GPIO;
- pluto_disp1_out.dsi->dsi_panel_bl_pwm_gpio =
- DSI_PANEL_BL_PWM_GPIO;
- /* update the init cmd if dependent on reset GPIO */
- tegra_dsi_update_init_cmd_gpio_rst(&pluto_disp1_out);
- }
-
- if (panel->init_fb_data)
- panel->init_fb_data(&pluto_disp1_fb_data);
-
- if (panel->init_cmu_data)
- panel->init_cmu_data(&pluto_disp1_pdata);
-
- if (panel->set_disp_device)
- panel->set_disp_device(&pluto_disp1_device);
-
- tegra_dsi_resources_init(dsi_instance, pluto_disp1_resources,
- ARRAY_SIZE(pluto_disp1_resources));
-
- if (panel->register_bl_dev)
- panel->register_bl_dev();
-
-}
-int __init pluto_panel_init(void)
-{
- int err = 0;
- struct resource __maybe_unused *res;
- struct platform_device *phost1x = NULL;
-
- pluto_panel_select();
-
-#ifdef CONFIG_TEGRA_NVMAP
- pluto_carveouts[1].base = tegra_carveout_start;
- pluto_carveouts[1].size = tegra_carveout_size;
- pluto_carveouts[2].base = tegra_vpr_start;
- pluto_carveouts[2].size = tegra_vpr_size;
-#ifdef CONFIG_NVMAP_USE_CMA_FOR_CARVEOUT
- pluto_carveouts[1].cma_dev = &tegra_generic_cma_dev;
- pluto_carveouts[1].resize = false;
- pluto_carveouts[2].cma_dev = &tegra_vpr_cma_dev;
- pluto_carveouts[2].resize = true;
- pluto_carveouts[2].cma_chunk_size = SZ_32M;
-#endif
-
- err = platform_device_register(&pluto_nvmap_device);
- if (err) {
- pr_err("nvmap device registration failed\n");
- return err;
- }
-#endif
- phost1x = pluto_host1x_init();
- if (!phost1x) {
- pr_err("host1x devices registration failed\n");
- return -EINVAL;
- }
-
- res = platform_get_resource_byname(&pluto_disp1_device,
- IORESOURCE_MEM, "fbmem");
- res->start = tegra_fb_start;
- res->end = tegra_fb_start + tegra_fb_size - 1;
-
- /* Copy the bootloader fb to the fb. */
- __tegra_move_framebuffer(&pluto_nvmap_device,
- tegra_fb_start, tegra_bootloader_fb_start,
- min(tegra_fb_size, tegra_bootloader_fb_size));
-
- pluto_disp1_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&pluto_disp1_device);
- if (err) {
- pr_err("disp1 device registration failed\n");
- return err;
- }
-
- err = tegra_init_hdmi(&pluto_disp2_device, phost1x);
- if (err)
- return err;
-
-#ifdef CONFIG_TEGRA_NVAVP
- if (!of_have_populated_dt()) {
- nvavp_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&nvavp_device);
- if (err) {
- pr_err("nvavp device registration failed\n");
- return err;
- }
- }
-#endif
- return err;
-}
diff --git a/arch/arm/mach-tegra/board-pluto-power.c b/arch/arm/mach-tegra/board-pluto-power.c
deleted file mode 100644
index 39722415e1dc..000000000000
--- a/arch/arm/mach-tegra/board-pluto-power.c
+++ /dev/null
@@ -1,946 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pluto-power.c
- *
- * Copyright (c) 2012-2014 NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/i2c.h>
-#include <linux/pda_power.h>
-#include <linux/platform_device.h>
-#include <linux/resource.h>
-#include <linux/io.h>
-#include <linux/gpio.h>
-
-#include <mach/edp.h>
-#include <mach/irqs.h>
-#include <mach/io_dpd.h>
-#include <linux/tegra-soc.h>
-#include <linux/regulator/fixed.h>
-#include <linux/mfd/palmas.h>
-#include <linux/regulator/machine.h>
-#include <linux/irq.h>
-#include <linux/pid_thermal_gov.h>
-#include <linux/tegra-pmc.h>
-
-#include <asm/mach-types.h>
-
-#include "cpu-tegra.h"
-#include "pm.h"
-#include "board.h"
-#include "board-common.h"
-#include "board-pluto.h"
-#include "board-pmu-defines.h"
-#include "iomap.h"
-#include "tegra_cl_dvfs.h"
-#include "devices.h"
-#include "tegra11_soctherm.h"
-
-#define PMC_CTRL 0x0
-#define PMC_CTRL_INTR_LOW (1 << 17)
-#define PLUTO_4K_REWORKED 0x2
-
-/************************ Pluto based regulator ****************/
-static struct regulator_consumer_supply palmas_smps123_supply[] = {
- REGULATOR_SUPPLY("vdd_cpu", NULL),
-};
-
-static struct regulator_consumer_supply palmas_smps45_supply[] = {
- REGULATOR_SUPPLY("vdd_core", NULL),
- REGULATOR_SUPPLY("vdd_core", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("vdd_core", "sdhci-tegra.2"),
- REGULATOR_SUPPLY("vdd_core", "sdhci-tegra.3"),
-};
-
-static struct regulator_consumer_supply palmas_smps6_supply[] = {
- REGULATOR_SUPPLY("vdd_core_bb", NULL),
-};
-
-static struct regulator_consumer_supply palmas_smps7_supply[] = {
- REGULATOR_SUPPLY("vddio_ddr", NULL),
- REGULATOR_SUPPLY("vddio_lpddr3", NULL),
- REGULATOR_SUPPLY("vcore2_lpddr3", NULL),
- REGULATOR_SUPPLY("vcore_audio_1v2", NULL),
-};
-
-static struct regulator_consumer_supply palmas_smps8_supply[] = {
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_osc", NULL),
- REGULATOR_SUPPLY("vddio_sys", NULL),
- REGULATOR_SUPPLY("vddio_bb", NULL),
- REGULATOR_SUPPLY("pwrdet_bb", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("pwrdet_sdmmc1", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("vdd_emmc", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("pwrdet_sdmmc4", NULL),
- REGULATOR_SUPPLY("vddio_audio", NULL),
- REGULATOR_SUPPLY("pwrdet_audio", NULL),
- REGULATOR_SUPPLY("vddio_uart", NULL),
- REGULATOR_SUPPLY("pwrdet_uart", NULL),
- REGULATOR_SUPPLY("vddio_gmi", NULL),
- REGULATOR_SUPPLY("pwrdet_nand", NULL),
- REGULATOR_SUPPLY("vddio_cam", "vi"),
- REGULATOR_SUPPLY("pwrdet_cam", NULL),
- REGULATOR_SUPPLY("dvdd", "0-0077"),
- REGULATOR_SUPPLY("vlogic", "0-0069"),
- REGULATOR_SUPPLY("vid", "0-000d"),
- REGULATOR_SUPPLY("vddio", "0-0078"),
- REGULATOR_SUPPLY("vdd_dtv", NULL),
- REGULATOR_SUPPLY("vdd_bb", NULL),
- REGULATOR_SUPPLY("vcore1_lpddr", NULL),
- REGULATOR_SUPPLY("vcore_lpddr", NULL),
- REGULATOR_SUPPLY("vddio_lpddr", NULL),
- REGULATOR_SUPPLY("vdd_rf", NULL),
- REGULATOR_SUPPLY("vdd_modem2", NULL),
- REGULATOR_SUPPLY("vdd_dbg", NULL),
- REGULATOR_SUPPLY("vdd_sim_1v8", NULL),
- REGULATOR_SUPPLY("vdd_sim1a_1v8", NULL),
- REGULATOR_SUPPLY("vdd_sim1b_1v8", NULL),
- REGULATOR_SUPPLY("dvdd_audio", NULL),
- REGULATOR_SUPPLY("avdd_audio", NULL),
- REGULATOR_SUPPLY("vdd_com_1v8", NULL),
- REGULATOR_SUPPLY("dvdd", "spi3.2"),
- REGULATOR_SUPPLY("avdd_pll_bb", NULL),
-};
-
-static struct regulator_consumer_supply palmas_smps9_supply[] = {
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("vdd_sim_mmc", NULL),
- REGULATOR_SUPPLY("vdd_sim1a_mmc", NULL),
- REGULATOR_SUPPLY("vdd_sim1b_mmc", NULL),
-};
-
-static struct regulator_consumer_supply palmas_smps10_out1_supply[] = {
- REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.0"),
- REGULATOR_SUPPLY("usb_vbus", "tegra-otg"),
- REGULATOR_SUPPLY("avddio_usb", "tegra-xhci"),
- REGULATOR_SUPPLY("usb_vbus0", "tegra-xhci"),
- REGULATOR_SUPPLY("vdd_lcd", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo1_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "vi"),
- REGULATOR_SUPPLY("avdd_pllm", NULL),
- REGULATOR_SUPPLY("avdd_pllu", NULL),
- REGULATOR_SUPPLY("avdd_plla_p_c", NULL),
- REGULATOR_SUPPLY("avdd_pllx", NULL),
- REGULATOR_SUPPLY("vdd_ddr_hs", NULL),
- REGULATOR_SUPPLY("avdd_plle", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo1_4K_supply[] = {
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "vi"),
- REGULATOR_SUPPLY("avdd_pllm", NULL),
- REGULATOR_SUPPLY("avdd_pllu", NULL),
- REGULATOR_SUPPLY("avdd_plla_p_c", NULL),
- REGULATOR_SUPPLY("avdd_pllx", NULL),
- REGULATOR_SUPPLY("vdd_ddr_hs", NULL),
- REGULATOR_SUPPLY("avdd_plle", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo2_supply[] = {
- REGULATOR_SUPPLY("avdd_lcd", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo3_supply[] = {
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "vi"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.1"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.2"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-xhci"),
- REGULATOR_SUPPLY("pwrdet_mipi", NULL),
- REGULATOR_SUPPLY("vddio_hsic_bb", NULL),
- REGULATOR_SUPPLY("vddio_hsic_modem2", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo4_supply[] = {
- REGULATOR_SUPPLY("vdd_spare", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo4_4K_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("vdd_spare", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo5_supply[] = {
- REGULATOR_SUPPLY("avdd_cam1", NULL),
- REGULATOR_SUPPLY("vana", "2-0010"),
-};
-
-static struct regulator_consumer_supply palmas_ldo6_supply[] = {
- REGULATOR_SUPPLY("vdd_temp", NULL),
- REGULATOR_SUPPLY("vdd_mb", NULL),
- REGULATOR_SUPPLY("vin", "1-004d"),
- REGULATOR_SUPPLY("avdd", "0-0077"),
- REGULATOR_SUPPLY("vdd_irled", NULL),
- REGULATOR_SUPPLY("vdd_sensor_3v0", NULL),
- REGULATOR_SUPPLY("vdd_3v0_pm", NULL),
- REGULATOR_SUPPLY("vaux_3v3", NULL),
- REGULATOR_SUPPLY("vdd", "0-0044"),
- REGULATOR_SUPPLY("vdd", "0-004c"),
- REGULATOR_SUPPLY("avdd", "spi3.2"),
- REGULATOR_SUPPLY("vdd", "0-0069"),
- REGULATOR_SUPPLY("vdd", "0-000d"),
- REGULATOR_SUPPLY("vdd", "0-0078"),
- REGULATOR_SUPPLY("vcc", "1-0071"),
-};
-
-static struct regulator_consumer_supply palmas_ldo7_supply[] = {
- REGULATOR_SUPPLY("vdd_af_cam1", NULL),
- REGULATOR_SUPPLY("imx132_reg1", NULL),
- REGULATOR_SUPPLY("imx091_vcm_vdd", NULL),
- REGULATOR_SUPPLY("vdd", "2-000e"),
-};
-static struct regulator_consumer_supply palmas_ldo8_supply[] = {
- REGULATOR_SUPPLY("vdd_rtc", NULL),
-};
-static struct regulator_consumer_supply palmas_ldo9_supply[] = {
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.2"),
- REGULATOR_SUPPLY("pwrdet_sdmmc3", NULL),
-};
-static struct regulator_consumer_supply palmas_ldoln_supply[] = {
- REGULATOR_SUPPLY("avdd_cam2", NULL),
- REGULATOR_SUPPLY("vana", "2-0036"),
- REGULATOR_SUPPLY("vana_imx132", "2-0036"),
-};
-
-static struct regulator_consumer_supply palmas_ldousb_supply[] = {
- REGULATOR_SUPPLY("avdd_usb", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("hvdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("hvdd_usb", "tegra-xhci"),
- REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"),
- REGULATOR_SUPPLY("vddio_hv", "tegradc.1"),
- REGULATOR_SUPPLY("pwrdet_hv", NULL),
- REGULATOR_SUPPLY("vdd_dtv_3v3", NULL),
-
-};
-
-static struct regulator_consumer_supply palmas_regen1_supply[] = {
- REGULATOR_SUPPLY("mic_ventral", NULL),
-};
-
-static struct regulator_consumer_supply palmas_regen2_supply[] = {
- REGULATOR_SUPPLY("vdd_mic", NULL),
-};
-
-PALMAS_REGS_PDATA(smps123, 900, 1350, NULL, 0, 0, 0, NORMAL,
- 0, PALMAS_EXT_CONTROL_ENABLE1, 0, 2500, 0);
-PALMAS_REGS_PDATA(smps45, 900, 1400, NULL, 0, 0, 0, NORMAL,
- 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 2500, 0);
-PALMAS_REGS_PDATA(smps6, 850, 850, NULL, 0, 0, 1, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps7, 1200, 1200, NULL, 0, 0, 1, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps8, 1800, 1800, NULL, 1, 1, 1, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps9, 2800, 2800, NULL, 1, 0, 1, NORMAL,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(smps10_out1, 5000, 5000, NULL, 0, 0, 0, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo1, 1050, 1050, palmas_rails(smps7), 0, 0, 1, 0,
- 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo2, 2800, 3000, NULL, 0, 0, 0, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo3, 1200, 1200, palmas_rails(smps8), 0, 1, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo4, 1200, 1200, NULL, 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo5, 2700, 2700, NULL, 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo6, 3000, 3000, NULL, 1, 1, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo7, 2800, 2800, NULL, 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo8, 900, 900, NULL, 1, 1, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldo9, 1800, 3300, palmas_rails(smps9), 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldoln, 2700, 2700, NULL, 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(ldousb, 3300, 3300, NULL, 0, 0, 1, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(regen1, 4300, 4300, NULL, 0, 0, 0, 0,
- 0, 0, 0, 0, 0);
-PALMAS_REGS_PDATA(regen2, 4300, 4300, palmas_rails(smps8), 0, 0, 0, 0,
- 0, 0, 0, 0, 0);
-
-#define PALMAS_REG_PDATA(_sname) &reg_idata_##_sname
-static struct regulator_init_data *pluto_reg_data[PALMAS_NUM_REGS] = {
- NULL,
- PALMAS_REG_PDATA(smps123),
- NULL,
- PALMAS_REG_PDATA(smps45),
- NULL,
- PALMAS_REG_PDATA(smps6),
- PALMAS_REG_PDATA(smps7),
- PALMAS_REG_PDATA(smps8),
- PALMAS_REG_PDATA(smps9),
- NULL,
- PALMAS_REG_PDATA(smps10_out1),
- PALMAS_REG_PDATA(ldo1),
- PALMAS_REG_PDATA(ldo2),
- PALMAS_REG_PDATA(ldo3),
- PALMAS_REG_PDATA(ldo4),
- PALMAS_REG_PDATA(ldo5),
- PALMAS_REG_PDATA(ldo6),
- PALMAS_REG_PDATA(ldo7),
- PALMAS_REG_PDATA(ldo8),
- PALMAS_REG_PDATA(ldo9),
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- PALMAS_REG_PDATA(ldoln),
- PALMAS_REG_PDATA(ldousb),
- PALMAS_REG_PDATA(regen1),
- PALMAS_REG_PDATA(regen2),
- NULL,
- NULL,
- NULL,
-};
-
-#define PALMAS_REG_INIT_DATA(_sname) &reg_init_data_##_sname
-static struct palmas_reg_init *pluto_reg_init[PALMAS_NUM_REGS] = {
- NULL,
- PALMAS_REG_INIT_DATA(smps123),
- NULL,
- PALMAS_REG_INIT_DATA(smps45),
- NULL,
- PALMAS_REG_INIT_DATA(smps6),
- PALMAS_REG_INIT_DATA(smps7),
- PALMAS_REG_INIT_DATA(smps8),
- PALMAS_REG_INIT_DATA(smps9),
- NULL,
- PALMAS_REG_INIT_DATA(smps10_out1),
- PALMAS_REG_INIT_DATA(ldo1),
- PALMAS_REG_INIT_DATA(ldo2),
- PALMAS_REG_INIT_DATA(ldo3),
- PALMAS_REG_INIT_DATA(ldo4),
- PALMAS_REG_INIT_DATA(ldo5),
- PALMAS_REG_INIT_DATA(ldo6),
- PALMAS_REG_INIT_DATA(ldo7),
- PALMAS_REG_INIT_DATA(ldo8),
- PALMAS_REG_INIT_DATA(ldo9),
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- PALMAS_REG_INIT_DATA(ldoln),
- PALMAS_REG_INIT_DATA(ldousb),
- PALMAS_REG_INIT_DATA(regen1),
- PALMAS_REG_INIT_DATA(regen2),
- NULL,
- NULL,
- NULL,
-};
-
-static int ac_online(void)
-{
- return 1;
-}
-
-static struct resource pluto_pda_resources[] = {
- [0] = {
- .name = "ac",
- },
-};
-
-static struct pda_power_pdata pluto_pda_data = {
- .is_ac_online = ac_online,
-};
-
-static struct platform_device pluto_pda_power_device = {
- .name = "pda-power",
- .id = -1,
- .resource = pluto_pda_resources,
- .num_resources = ARRAY_SIZE(pluto_pda_resources),
- .dev = {
- .platform_data = &pluto_pda_data,
- },
-};
-
-/* Always ON /Battery regulator */
-static struct regulator_consumer_supply fixed_reg_en_battery_supply[] = {
- REGULATOR_SUPPLY("vdd_sys_cam", NULL),
- REGULATOR_SUPPLY("vdd_sys_bl", NULL),
- REGULATOR_SUPPLY("vdd_sys_com", NULL),
- REGULATOR_SUPPLY("vdd_sys_bt", NULL),
- REGULATOR_SUPPLY("vdd_sys_audio", NULL),
- REGULATOR_SUPPLY("vdd_vbrtr", NULL),
-};
-
-static struct regulator_consumer_supply fixed_reg_en_vdd_1v8_cam_supply[] = {
- REGULATOR_SUPPLY("vddio_cam_mb", NULL),
- REGULATOR_SUPPLY("imx132_reg2", NULL),
- REGULATOR_SUPPLY("imx091_i2c_vdd", NULL),
- REGULATOR_SUPPLY("vdd_1v8_cam12", NULL),
- REGULATOR_SUPPLY("vif", "2-0010"),
- REGULATOR_SUPPLY("vif", "2-0036"),
- REGULATOR_SUPPLY("vdd_i2c", "2-000e"),
-};
-
-static struct regulator_consumer_supply fixed_reg_en_vdd_1v2_cam_supply[] = {
- REGULATOR_SUPPLY("vdd_1v2_cam", NULL),
- REGULATOR_SUPPLY("vdig", "2-0010"),
- REGULATOR_SUPPLY("vdig", "2-0036"),
-};
-
-static struct regulator_consumer_supply fixed_reg_en_avdd_usb3_1v05_supply[] = {
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avddio_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-xhci"),
-};
-
-static struct regulator_consumer_supply fixed_reg_en_vdd_mmc_sdmmc3_supply[] = {
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.2"),
-};
-
-static struct regulator_consumer_supply fixed_reg_en_vdd_lcd_1v8_supply[] = {
- REGULATOR_SUPPLY("vdd_lcd_1v8_s", NULL),
-};
-
-static struct regulator_consumer_supply fixed_reg_en_vdd_lcd_mmc_supply[] = {
- REGULATOR_SUPPLY("vdd_lcd_mmc_s_f", NULL),
-};
-
-static struct regulator_consumer_supply fixed_reg_en_vdd_1v8_mic_supply[] = {
- REGULATOR_SUPPLY("vdd_1v8_mic", NULL),
-};
-
-static struct regulator_consumer_supply fixed_reg_en_vdd_hdmi_5v0_supply[] = {
- REGULATOR_SUPPLY("vdd_hdmi_5v0", "tegradc.1"),
-};
-
-static struct regulator_consumer_supply fixed_reg_en_vpp_fuse_supply[] = {
- REGULATOR_SUPPLY("vpp_fuse", NULL),
- REGULATOR_SUPPLY("v_efuse", NULL),
-};
-
-/* Macro for defining fixed regulator sub device data */
-#define FIXED_SUPPLY(_name) "fixed_reg_en"#_name
-#define FIXED_REG(_id, _var, _name, _in_supply, _always_on, _boot_on, \
- _gpio_nr, _open_drain, _active_high, _boot_state, _millivolts, \
- _sdelay) \
- static struct regulator_init_data ri_data_##_var = \
- { \
- .supply_regulator = _in_supply, \
- .num_consumer_supplies = \
- ARRAY_SIZE(fixed_reg_en_##_name##_supply), \
- .consumer_supplies = fixed_reg_en_##_name##_supply, \
- .constraints = { \
- .valid_modes_mask = (REGULATOR_MODE_NORMAL | \
- REGULATOR_MODE_STANDBY), \
- .valid_ops_mask = (REGULATOR_CHANGE_MODE | \
- REGULATOR_CHANGE_STATUS | \
- REGULATOR_CHANGE_VOLTAGE), \
- .always_on = _always_on, \
- .boot_on = _boot_on, \
- }, \
- }; \
- static struct fixed_voltage_config fixed_reg_en_##_var##_pdata = \
- { \
- .supply_name = FIXED_SUPPLY(_name), \
- .microvolts = _millivolts * 1000, \
- .gpio = _gpio_nr, \
- .gpio_is_open_drain = _open_drain, \
- .enable_high = _active_high, \
- .enabled_at_boot = _boot_state, \
- .init_data = &ri_data_##_var, \
- .startup_delay = _sdelay \
- }; \
- static struct platform_device fixed_reg_en_##_var##_dev = { \
- .name = "reg-fixed-voltage", \
- .id = _id, \
- .dev = { \
- .platform_data = &fixed_reg_en_##_var##_pdata, \
- }, \
- }
-
-FIXED_REG(0, battery, battery,
- NULL, 0, 0,
- -1, false, true, 0, 3300, 0);
-
-FIXED_REG(1, vdd_1v8_cam, vdd_1v8_cam,
- palmas_rails(smps8), 0, 0,
- PALMAS_TEGRA_GPIO_BASE + PALMAS_GPIO1, false, true, 0, 1800,
- 0);
-
-FIXED_REG(2, vdd_1v2_cam, vdd_1v2_cam,
- palmas_rails(smps7), 0, 0,
- PALMAS_TEGRA_GPIO_BASE + PALMAS_GPIO2, false, true, 0, 1200,
- 0);
-
-FIXED_REG(3, avdd_usb3_1v05, avdd_usb3_1v05,
- palmas_rails(smps8), 0, 0,
- TEGRA_GPIO_PK5, false, true, 0, 1050, 0);
-
-FIXED_REG(4, vdd_mmc_sdmmc3, vdd_mmc_sdmmc3,
- palmas_rails(smps9), 0, 0,
- TEGRA_GPIO_PK1, false, true, 0, 3300, 0);
-
-FIXED_REG(5, vdd_lcd_1v8, vdd_lcd_1v8,
- palmas_rails(smps8), 0, 0,
- PALMAS_TEGRA_GPIO_BASE + PALMAS_GPIO4, false, true, 0, 1800,
- 0);
-
-FIXED_REG(6, vdd_lcd_mmc, vdd_lcd_mmc,
- palmas_rails(smps9), 0, 0,
- TEGRA_GPIO_PI4, false, true, 0, 1800, 0);
-
-FIXED_REG(7, vdd_1v8_mic, vdd_1v8_mic,
- palmas_rails(smps8), 0, 0,
- -1, false, true, 0, 1800, 0);
-
-FIXED_REG(8, vdd_hdmi_5v0, vdd_hdmi_5v0,
- NULL, 0, 0,
- TEGRA_GPIO_PK6, true, true, 0, 5000, 5000);
-
-FIXED_REG(9, vpp_fuse, vpp_fuse,
- palmas_rails(smps8), 0, 0,
- TEGRA_GPIO_PX4, false, true, 0, 1800, 0);
-
-/*
- * Creating the fixed regulator device tables
- */
-#define ADD_FIXED_REG(_name) (&fixed_reg_en_##_name##_dev)
-
-#define E1580_COMMON_FIXED_REG \
- ADD_FIXED_REG(battery), \
- ADD_FIXED_REG(vdd_1v8_cam), \
- ADD_FIXED_REG(vdd_1v2_cam), \
- ADD_FIXED_REG(avdd_usb3_1v05), \
- ADD_FIXED_REG(vdd_mmc_sdmmc3), \
- ADD_FIXED_REG(vdd_lcd_1v8), \
- ADD_FIXED_REG(vdd_lcd_mmc), \
- ADD_FIXED_REG(vdd_1v8_mic), \
- ADD_FIXED_REG(vdd_hdmi_5v0),
-
-#define E1580_T114_FIXED_REG \
- ADD_FIXED_REG(vpp_fuse),
-
-/* Gpio switch regulator platform data for Pluto E1580 */
-static struct platform_device *pfixed_reg_devs[] = {
- E1580_COMMON_FIXED_REG
- E1580_T114_FIXED_REG
-};
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-/* board parameters for cpu dfll */
-static struct tegra_cl_dvfs_cfg_param pluto_cl_dvfs_param = {
- .sample_rate = 11500,
-
- .force_mode = TEGRA_CL_DVFS_FORCE_FIXED,
- .cf = 10,
- .ci = 0,
- .cg = 2,
-
- .droop_cut_value = 0xF,
- .droop_restore_ramp = 0x0,
- .scale_out_ramp = 0x0,
-};
-#endif
-
-/* palmas: fixed 10mV steps from 600mV to 1400mV, with offset 0x10 */
-#define PMU_CPU_VDD_MAP_SIZE ((1400000 - 600000) / 10000 + 1)
-static struct voltage_reg_map pmu_cpu_vdd_map[PMU_CPU_VDD_MAP_SIZE];
-static inline void fill_reg_map(void)
-{
- int i;
- for (i = 0; i < PMU_CPU_VDD_MAP_SIZE; i++) {
- pmu_cpu_vdd_map[i].reg_value = i + 0x10;
- pmu_cpu_vdd_map[i].reg_uV = 600000 + 10000 * i;
- }
-}
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-static struct tegra_cl_dvfs_platform_data pluto_cl_dvfs_data = {
- .dfll_clk_name = "dfll_cpu",
- .pmu_if = TEGRA_CL_DVFS_PMU_I2C,
- .u.pmu_i2c = {
- .fs_rate = 400000,
- .slave_addr = 0xb0,
- .reg = 0x23,
- },
- .vdd_map = pmu_cpu_vdd_map,
- .vdd_map_size = PMU_CPU_VDD_MAP_SIZE,
- .pmu_undershoot_gb = 100,
-
- .cfg_param = &pluto_cl_dvfs_param,
-};
-
-static int __init pluto_cl_dvfs_init(void)
-{
- fill_reg_map();
- if (tegra_revision < TEGRA_REVISION_A02)
- pluto_cl_dvfs_data.flags = TEGRA_CL_DVFS_FLAGS_I2C_WAIT_QUIET;
- tegra_cl_dvfs_device.dev.platform_data = &pluto_cl_dvfs_data;
- platform_device_register(&tegra_cl_dvfs_device);
-
- return 0;
-}
-#endif
-
-static struct palmas_dvfs_init_data palmas_dvfs_idata[] = {
- {
- .en_pwm = false,
- }, {
- .en_pwm = true,
- .ext_ctrl = PALMAS_EXT_CONTROL_ENABLE2,
- .reg_id = PALMAS_REG_SMPS6,
- .step_20mV = true,
- .base_voltage_uV = 500000,
- .max_voltage_uV = 1100000,
- },
-};
-
-static struct palmas_pmic_platform_data pmic_platform = {
- .dvfs_init_data = palmas_dvfs_idata,
- .dvfs_init_data_size = ARRAY_SIZE(palmas_dvfs_idata),
-};
-
-static struct palmas_clk32k_init_data palmas_clk32k_idata[] = {
- {
- .clk32k_id = PALMAS_CLOCK32KG,
- .enable = true,
- }, {
- .clk32k_id = PALMAS_CLOCK32KG_AUDIO,
- .enable = true,
- },
-};
-
-static struct palmas_pinctrl_config palmas_pincfg[] = {
- PALMAS_PINMUX("powergood", "powergood", NULL, NULL),
- PALMAS_PINMUX("vac", "vac", NULL, NULL),
- PALMAS_PINMUX("gpio0", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio1", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio2", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio3", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio4", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio5", "clk32kgaudio", NULL, NULL),
- PALMAS_PINMUX("gpio6", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio7", "gpio", NULL, NULL),
-};
-
-static struct palmas_pinctrl_platform_data palmas_pinctrl_pdata = {
- .pincfg = palmas_pincfg,
- .num_pinctrl = ARRAY_SIZE(palmas_pincfg),
- .dvfs1_enable = false,
- .dvfs2_enable = true,
-};
-
-static struct palmas_platform_data palmas_pdata = {
- .gpio_base = PALMAS_TEGRA_GPIO_BASE,
- .irq_base = PALMAS_TEGRA_IRQ_BASE,
- .pmic_pdata = &pmic_platform,
- .clk32k_init_data = palmas_clk32k_idata,
- .clk32k_init_data_size = ARRAY_SIZE(palmas_clk32k_idata),
- .irq_flags = IRQ_TYPE_LEVEL_HIGH,
- .pinctrl_pdata = &palmas_pinctrl_pdata,
-};
-
-static struct i2c_board_info palma_device[] = {
- {
- I2C_BOARD_INFO("tps65913", 0x58),
- .irq = INT_EXTERNAL_PMU,
- .platform_data = &palmas_pdata,
- },
-};
-
-int __init pluto_regulator_init(void)
-{
- void __iomem *pmc = IO_ADDRESS(TEGRA_PMC_BASE);
- u32 pmc_ctrl;
- int i;
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
- pluto_cl_dvfs_init();
-#endif
-
- /* TPS65913: Normal state of INT request line is LOW.
- * configure the power management controller to trigger PMU
- * interrupts when HIGH.
- */
- pmc_ctrl = readl(pmc + PMC_CTRL);
- writel(pmc_ctrl & ~PMC_CTRL_INTR_LOW, pmc + PMC_CTRL);
-
- /* Enable full constraints */
- regulator_has_full_constraints();
-
- /* Tracking configuration */
- reg_init_data_ldo8.config_flags =
- PALMAS_REGULATOR_CONFIG_TRACKING_ENABLE |
- PALMAS_REGULATOR_CONFIG_SUSPEND_TRACKING_DISABLE;
-
- if (get_power_config() & PLUTO_4K_REWORKED) {
- /* Account for the change of avdd_hdmi_pll from ldo1 to ldo4 */
- reg_idata_ldo1.consumer_supplies = palmas_ldo1_4K_supply;
- reg_idata_ldo1.num_consumer_supplies =
- ARRAY_SIZE(palmas_ldo1_4K_supply);
- reg_idata_ldo4.consumer_supplies = palmas_ldo4_4K_supply;
- reg_idata_ldo4.num_consumer_supplies =
- ARRAY_SIZE(palmas_ldo4_4K_supply);
- reg_init_data_ldo4.roof_floor = PALMAS_EXT_CONTROL_NSLEEP;
- reg_idata_ldo4.constraints.always_on = 1;
- reg_idata_ldo4.constraints.boot_on = 1;
- }
-
- for (i = 0; i < PALMAS_NUM_REGS ; i++) {
- pmic_platform.reg_data[i] = pluto_reg_data[i];
- pmic_platform.reg_init[i] = pluto_reg_init[i];
- }
-
- platform_device_register(&pluto_pda_power_device);
- i2c_register_board_info(4, palma_device,
- ARRAY_SIZE(palma_device));
- return 0;
-}
-
-static int __init pluto_fixed_regulator_init(void)
-{
- if (!of_machine_is_compatible("nvidia,pluto"))
- return 0;
-
- return platform_add_devices(pfixed_reg_devs,
- ARRAY_SIZE(pfixed_reg_devs));
-}
-subsys_initcall_sync(pluto_fixed_regulator_init);
-
-static struct tegra_io_dpd hv_io = {
- .name = "HV",
- .io_dpd_reg_index = 1,
- .io_dpd_bit = 6,
-};
-
-static void pluto_board_suspend(int state, enum suspend_stage stage)
-{
- /* put HV IOs into DPD mode to save additional power */
- if (state == TEGRA_SUSPEND_LP1 && stage == TEGRA_SUSPEND_BEFORE_CPU) {
- gpio_direction_input(TEGRA_GPIO_PK6);
- tegra_io_dpd_enable(&hv_io);
- }
-}
-
-static void pluto_board_resume(int state, enum resume_stage stage)
-{
- /* bring HV IOs back from DPD mode, GPIO configuration
- * will be restored by gpio driver
- */
- if (state == TEGRA_SUSPEND_LP1 && stage == TEGRA_RESUME_AFTER_CPU)
- tegra_io_dpd_disable(&hv_io);
-}
-
-static struct tegra_suspend_platform_data pluto_suspend_data = {
- .cpu_timer = 300,
- .cpu_off_timer = 300,
- .suspend_mode = TEGRA_SUSPEND_LP0,
- .core_timer = 0x157e,
- .core_off_timer = 2000,
- .corereq_high = true,
- .sysclkreq_high = true,
- .cpu_lp2_min_residency = 1000,
- .min_residency_crail = 20000,
-#ifdef CONFIG_TEGRA_LP1_LOW_COREVOLTAGE
- .lp1_lowvolt_support = true,
- .i2c_base_addr = TEGRA_I2C5_BASE,
- .pmuslave_addr = 0xB0,
- .core_reg_addr = 0x2B,
- .lp1_core_volt_low_cold = 0x33,
- .lp1_core_volt_low = 0x2e,
- .lp1_core_volt_high = 0x42,
-#endif
- .board_suspend = pluto_board_suspend,
- .board_resume = pluto_board_resume,
-};
-
-int __init pluto_suspend_init(void)
-{
- tegra_init_suspend(&pluto_suspend_data);
- return 0;
-}
-
-int __init pluto_edp_init(void)
-{
- unsigned int regulator_mA;
-
- regulator_mA = get_maximum_cpu_current_supported();
- if (!regulator_mA)
- regulator_mA = 9000;
-
- pr_info("%s: CPU regulator %d mA\n", __func__, regulator_mA);
- tegra_init_cpu_edp_limits(regulator_mA);
-
- regulator_mA = get_maximum_core_current_supported();
- if (!regulator_mA)
- regulator_mA = 4000;
-
- pr_info("%s: core regulator %d mA\n", __func__, regulator_mA);
- tegra_init_core_edp_limits(regulator_mA);
-
- return 0;
-}
-
-static struct pid_thermal_gov_params soctherm_pid_params = {
- .max_err_temp = 9000,
- .max_err_gain = 1000,
-
- .gain_p = 1000,
- .gain_d = 0,
-
- .up_compensation = 20,
- .down_compensation = 20,
-};
-
-static struct thermal_zone_params soctherm_tzp = {
- .governor_name = "pid_thermal_gov",
- .governor_params = &soctherm_pid_params,
-};
-
-static struct tegra_thermtrip_pmic_data tpdata_palmas = {
- .reset_tegra = 1,
- .pmu_16bit_ops = 0,
- .controller_type = 0,
- .pmu_i2c_addr = 0x58,
- .i2c_controller_id = 4,
- .poweroff_reg_addr = 0xa0,
- .poweroff_reg_data = 0x0,
-};
-
-static struct soctherm_platform_data pluto_soctherm_data = {
- .oc_irq_base = TEGRA_SOC_OC_IRQ_BASE,
- .num_oc_irqs = TEGRA_SOC_OC_NUM_IRQ,
- .therm = {
- [THERM_CPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 3,
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- .tzp = &soctherm_tzp,
- },
- [THERM_GPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 3,
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- .tzp = &soctherm_tzp,
- },
- [THERM_PLL] = {
- .zone_enable = true,
- },
- },
- .throttle = {
- [THROTTLE_HEAVY] = {
- .priority = 100,
- .devs = {
- [THROTTLE_DEV_CPU] = {
- .enable = true,
- .depth = 80,
- },
- [THROTTLE_DEV_GPU] = {
- .depth = 80,
- .enable = true,
- },
- },
- },
- [THROTTLE_OC4] = {
- .throt_mode = BRIEF,
- .polarity = 1,
- .intr = true,
- .devs = {
- [THROTTLE_DEV_CPU] = {
- .enable = true,
- .depth = 50,
- },
- [THROTTLE_DEV_GPU] = {
- .enable = true,
- .depth = 50,
- },
- },
- },
- },
- .tshut_pmu_trip_data = &tpdata_palmas,
-};
-
-int __init pluto_soctherm_init(void)
-{
- tegra_platform_edp_init(pluto_soctherm_data.therm[THERM_CPU].trips,
- &pluto_soctherm_data.therm[THERM_CPU].num_trips,
- 6000); /* edp temperature margin */
- tegra_add_cpu_vmax_trips(pluto_soctherm_data.therm[THERM_CPU].trips,
- &pluto_soctherm_data.therm[THERM_CPU].num_trips);
- tegra_add_core_edp_trips(pluto_soctherm_data.therm[THERM_CPU].trips,
- &pluto_soctherm_data.therm[THERM_CPU].num_trips);
-
- return tegra11_soctherm_init(&pluto_soctherm_data);
-}
diff --git a/arch/arm/mach-tegra/board-pluto-sdhci.c b/arch/arm/mach-tegra/board-pluto-sdhci.c
deleted file mode 100644
index fb42b5866447..000000000000
--- a/arch/arm/mach-tegra/board-pluto-sdhci.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pluto-sdhci.c
- *
- * Copyright (c) 2012-2013 NVIDIA Corporation. All rights reserved.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
-
-#include <linux/resource.h>
-#include <linux/platform_device.h>
-#include <linux/wlan_plat.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/clk.h>
-#include <linux/err.h>
-#include <linux/mmc/host.h>
-#include <linux/wl12xx.h>
-#include <linux/platform_data/mmc-sdhci-tegra.h>
-
-#include "tegra-board-id.h"
-#include <asm/mach-types.h>
-#include <mach/irqs.h>
-#include <mach/gpio-tegra.h>
-
-#include "gpio-names.h"
-#include "board.h"
-#include "board-pluto.h"
-#include "dvfs.h"
-#include "iomap.h"
-
-#define PLUTO_WLAN_PWR TEGRA_GPIO_PCC5
-#define PLUTO_WLAN_WOW TEGRA_GPIO_PU5
-#define PLUTO_SD_CD TEGRA_GPIO_PV2
-#define WLAN_PWR_STR "wlan_power"
-#define WLAN_WOW_STR "bcmsdh_sdmmc"
-#if defined(CONFIG_BCMDHD_EDP_SUPPORT)
-/* Wifi power levels */
-#define ON 1080 /* 1080 mW */
-#define OFF 0
-static unsigned int wifi_states[] = {ON, OFF};
-#endif
-
-static void (*wifi_status_cb)(int card_present, void *dev_id);
-static void *wifi_status_cb_devid;
-static int pluto_wifi_status_register(void (*callback)(int , void *), void *);
-
-static int pluto_wifi_reset(int on);
-static int pluto_wifi_power(int on);
-static int pluto_wifi_set_carddetect(int val);
-
-static struct wifi_platform_data pluto_wifi_control = {
- .set_power = pluto_wifi_power,
- .set_reset = pluto_wifi_reset,
- .set_carddetect = pluto_wifi_set_carddetect,
-};
-
-static struct resource wifi_resource[] = {
- [0] = {
- .name = "bcm4329_wlan_irq",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL
- | IORESOURCE_IRQ_SHAREABLE,
- },
-};
-
-static struct platform_device pluto_wifi_device = {
- .name = "bcm4329_wlan",
- .id = 1,
- .num_resources = 1,
- .resource = wifi_resource,
- .dev = {
- .platform_data = &pluto_wifi_control,
- },
-};
-
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
-static struct embedded_sdio_data embedded_sdio_data0 = {
- .cccr = {
- .sdio_vsn = 2,
- .multi_block = 1,
- .low_speed = 0,
- .wide_bus = 0,
- .high_power = 1,
- .high_speed = 1,
- },
- .cis = {
- .vendor = 0x02d0,
- .device = 0x4329,
- },
-};
-#endif
-
-struct tegra_sdhci_platform_data pluto_tegra_sdhci_platform_data0 = {
- .mmc_data = {
- .register_status_notify = pluto_wifi_status_register,
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
- .embedded_sdio = &embedded_sdio_data0,
-#endif
- .built_in = 0,
- .ocr_mask = MMC_OCR_1V8_MASK,
- },
-#ifndef CONFIG_MMC_EMBEDDED_SDIO
- .pm_flags = MMC_PM_KEEP_POWER,
-#endif
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .tap_delay = 0x2,
- .trim_delay = 0x2,
- .ddr_clk_limit = 41000000,
- .max_clk_limit = 82000000,
- .uhs_mask = MMC_UHS_MASK_DDR50,
- .disable_clock_gate = true,
-};
-
-static struct resource sdhci_resource0[] = {
- [0] = {
- .start = INT_SDMMC1,
- .end = INT_SDMMC1,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC1_BASE,
- .end = TEGRA_SDMMC1_BASE + TEGRA_SDMMC1_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource2[] = {
- [0] = {
- .start = INT_SDMMC3,
- .end = INT_SDMMC3,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC3_BASE,
- .end = TEGRA_SDMMC3_BASE + TEGRA_SDMMC3_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource3[] = {
- [0] = {
- .start = INT_SDMMC4,
- .end = INT_SDMMC4,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC4_BASE,
- .end = TEGRA_SDMMC4_BASE + TEGRA_SDMMC4_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = {
- .cd_gpio = PLUTO_SD_CD,
- .wp_gpio = -1,
- .power_gpio = -1,
- .tap_delay = 0x3,
- .trim_delay = 0x3,
- .ddr_clk_limit = 41000000,
- .max_clk_limit = 156000000,
- .uhs_mask = MMC_UHS_MASK_DDR50,
-};
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data3 = {
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .is_8bit = 1,
- .tap_delay = 0x5,
- .trim_delay = 0xA,
- .ddr_trim_delay = -1,
- .ddr_clk_limit = 41000000,
- .max_clk_limit = 156000000,
- .mmc_data = {
- .built_in = 1,
- .ocr_mask = MMC_OCR_1V8_MASK,
- }
-};
-
-static struct platform_device tegra_sdhci_device0 = {
- .name = "sdhci-tegra",
- .id = 0,
- .resource = sdhci_resource0,
- .num_resources = ARRAY_SIZE(sdhci_resource0),
- .dev = {
- .platform_data = &pluto_tegra_sdhci_platform_data0,
- },
-};
-
-static struct platform_device tegra_sdhci_device2 = {
- .name = "sdhci-tegra",
- .id = 2,
- .resource = sdhci_resource2,
- .num_resources = ARRAY_SIZE(sdhci_resource2),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data2,
- },
-};
-
-static struct platform_device tegra_sdhci_device3 = {
- .name = "sdhci-tegra",
- .id = 3,
- .resource = sdhci_resource3,
- .num_resources = ARRAY_SIZE(sdhci_resource3),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data3,
- },
-};
-
-static int pluto_wifi_status_register(
- void (*callback)(int card_present, void *dev_id),
- void *dev_id)
-{
- if (wifi_status_cb)
- return -EAGAIN;
- wifi_status_cb = callback;
- wifi_status_cb_devid = dev_id;
- return 0;
-}
-
-static int pluto_wifi_set_carddetect(int val)
-{
- pr_debug("%s: %d\n", __func__, val);
- if (wifi_status_cb)
- wifi_status_cb(val, wifi_status_cb_devid);
- else
- pr_warning("%s: Nobody to notify\n", __func__);
- return 0;
-}
-
-static int pluto_wifi_power(int on)
-{
- pr_debug("%s: %d\n", __func__, on);
-
- gpio_set_value(PLUTO_WLAN_PWR, on);
- mdelay(100);
-
- return 0;
-}
-
-static int pluto_wifi_reset(int on)
-{
- pr_debug("%s: do nothing\n", __func__);
- return 0;
-}
-
-static int __init pluto_wifi_init(void)
-{
- int rc = 0;
-
- /* init wlan_pwr gpio */
- rc = gpio_request(PLUTO_WLAN_PWR, WLAN_PWR_STR);
- /* Due to pre powering, sometimes gpio req returns EBUSY */
- if ((rc < 0) && (rc != -EBUSY)) {
- pr_err("Wifi init: gpio req failed:%d\n", rc);
- return rc;
- }
-
- /* Due to pre powering, sometimes gpio req returns EBUSY */
- rc = gpio_direction_output(PLUTO_WLAN_PWR, 0);
- if ((rc < 0) && (rc != -EBUSY)) {
- gpio_free(PLUTO_WLAN_PWR);
- return rc;
- }
- /* init wlan_wow gpio */
- rc = gpio_request(PLUTO_WLAN_WOW, WLAN_WOW_STR);
- if (rc < 0) {
- pr_err("wifi init: gpio req failed:%d\n", rc);
- gpio_free(PLUTO_WLAN_PWR);
- return rc;
- }
-
- rc = gpio_direction_input(PLUTO_WLAN_WOW);
- if (rc < 0) {
- gpio_free(PLUTO_WLAN_WOW);
- gpio_free(PLUTO_WLAN_PWR);
- return rc;
- }
-
- wifi_resource[0].start = wifi_resource[0].end =
- gpio_to_irq(PLUTO_WLAN_WOW);
-
- platform_device_register(&pluto_wifi_device);
- return rc;
-}
-
-#ifdef CONFIG_TEGRA_PREPOWER_WIFI
-static int __init pluto_wifi_prepower(void)
-{
- if (!machine_is_tegra_pluto())
- return 0;
-
- pluto_wifi_power(1);
-
- return 0;
-}
-
-subsys_initcall_sync(pluto_wifi_prepower);
-#endif
-
-int __init pluto_sdhci_init(void)
-{
- int nominal_core_mv;
- int min_vcore_override_mv;
- int boot_vcore_mv;
-
- nominal_core_mv =
- tegra_dvfs_rail_get_nominal_millivolts(tegra_core_rail);
- if (nominal_core_mv > 0) {
- pluto_tegra_sdhci_platform_data0.nominal_vcore_mv =
- nominal_core_mv;
- tegra_sdhci_platform_data2.nominal_vcore_mv = nominal_core_mv;
- tegra_sdhci_platform_data3.nominal_vcore_mv = nominal_core_mv;
- }
- min_vcore_override_mv =
- tegra_dvfs_rail_get_override_floor(tegra_core_rail);
- if (min_vcore_override_mv) {
- pluto_tegra_sdhci_platform_data0.min_vcore_override_mv =
- min_vcore_override_mv;
- tegra_sdhci_platform_data2.min_vcore_override_mv =
- min_vcore_override_mv;
- tegra_sdhci_platform_data3.min_vcore_override_mv =
- min_vcore_override_mv;
- }
- boot_vcore_mv = tegra_dvfs_rail_get_boot_level(tegra_core_rail);
- if (boot_vcore_mv) {
- pluto_tegra_sdhci_platform_data0.boot_vcore_mv = boot_vcore_mv;
- tegra_sdhci_platform_data2.boot_vcore_mv = boot_vcore_mv;
- tegra_sdhci_platform_data3.boot_vcore_mv = boot_vcore_mv;
- }
-
- if ((tegra_sdhci_platform_data3.uhs_mask & MMC_MASK_HS200)
- && (!(tegra_sdhci_platform_data3.uhs_mask &
- MMC_UHS_MASK_DDR50)))
- tegra_sdhci_platform_data3.trim_delay = 0;
- platform_device_register(&tegra_sdhci_device3);
- platform_device_register(&tegra_sdhci_device2);
- platform_device_register(&tegra_sdhci_device0);
- pluto_wifi_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-pluto-sensors.c b/arch/arm/mach-tegra/board-pluto-sensors.c
deleted file mode 100644
index caf66f541986..000000000000
--- a/arch/arm/mach-tegra/board-pluto-sensors.c
+++ /dev/null
@@ -1,1031 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pluto-sensors.c
- *
- * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
-
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
-
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include <linux/i2c.h>
-#include <linux/delay.h>
-#include <linux/regulator/consumer.h>
-#include <linux/gpio.h>
-#include <linux/mpu.h>
-#include <linux/max77665-charger.h>
-#include <linux/mfd/max77665.h>
-#include <linux/input/max77665-haptic.h>
-#include <linux/power/max17042_battery.h>
-#include <linux/power/power_supply_extcon.h>
-#include <linux/nct1008.h>
-#include <linux/io.h>
-#include <linux/interrupt.h>
-#include <linux/pid_thermal_gov.h>
-#include <mach/edp.h>
-#include <mach/gpio-tegra.h>
-#include <mach/pinmux-t11.h>
-#include <mach/pinmux.h>
-#include <media/max77665-flash.h>
-#ifndef CONFIG_OF
-#include <media/imx091.h>
-#include <media/imx132.h>
-#include <media/ad5816.h>
-#endif
-#include <asm/mach-types.h>
-
-#include "gpio-names.h"
-#include "board.h"
-#include "board-common.h"
-#include "board-pluto.h"
-#include "cpu-tegra.h"
-#include "devices.h"
-#include "tegra-board-id.h"
-#include "dvfs.h"
-#include "pm.h"
-#include "battery-ini-model-data.h"
-
-#ifndef CONFIG_OF
-static struct nvc_gpio_pdata imx091_gpio_pdata[] = {
- {IMX091_GPIO_RESET, CAM_RSTN, true, false},
- {IMX091_GPIO_PWDN, CAM1_POWER_DWN_GPIO, true, false},
- {IMX091_GPIO_GP1, CAM_GPIO1, true, false}
-};
-#endif
-
-static struct board_info board_info;
-
-static struct max17042_platform_data max17042_pdata = {
- .config_data = &pluto_yoku_2000mA_max17042_battery,
- .init_data = NULL,
- .num_init_data = 0,
- .enable_por_init = 1, /* Use POR init from Maxim appnote */
- .enable_current_sense = 1,
- .r_sns = 0,
- .is_battery_present = false, /* False as default */
-};
-
-static struct i2c_board_info max17042_device[] = {
- {
- I2C_BOARD_INFO("max17042", 0x36),
- .platform_data = &max17042_pdata,
- },
-};
-
-static struct nvc_torch_lumi_level_v1 pluto_max77665_lumi_tbl[] = {
- {0, 100000},
- {1, 201690},
- {2, 298080},
- {3, 387700},
- {4, 479050},
- {5, 562000},
- {6, 652560},
- {7, 732150},
- {8, 816050},
- {9, 896710},
- {10, 976890},
- {11, 1070160},
- {12, 1151000},
- {13, 1227790},
- {14, 1287690},
- {15, 1375060},
-};
-
-static struct max77665_f_platform_data pluto_max77665_flash_pdata = {
- .config = {
- .led_mask = 3,
- /* set to true only when using the torch strobe input
- * to trigger the flash.
- */
- .flash_on_torch = false,
- /* use ONE-SHOOT flash mode - flash triggered at the
- * raising edge of strobe or strobe signal.
- */
- .flash_mode = 1,
- /* .flash_on_torch = true, */
- .max_total_current_mA = 1000,
- .max_peak_current_mA = 600,
- .max_flash_threshold_mV = 3400,
- .max_flash_hysteresis_mV = 200,
- .max_flash_lbdly_f_uS = 256,
- .max_flash_lbdly_r_uS = 256,
- .led_config[0] = {
- .flash_torch_ratio = 18100,
- .granularity = 1000,
- .flash_levels = ARRAY_SIZE(pluto_max77665_lumi_tbl),
- .lumi_levels = pluto_max77665_lumi_tbl,
- },
- .led_config[1] = {
- .flash_torch_ratio = 18100,
- .granularity = 1000,
- .flash_levels = ARRAY_SIZE(pluto_max77665_lumi_tbl),
- .lumi_levels = pluto_max77665_lumi_tbl,
- },
- },
- .pinstate = {
- .mask = 1 << (CAM_FLASH_STROBE - TEGRA_GPIO_PBB0),
- .values = 1 << (CAM_FLASH_STROBE - TEGRA_GPIO_PBB0),
- },
- .dev_name = "torch",
- .gpio_strobe = CAM_FLASH_STROBE,
-};
-
-static struct max77665_haptic_platform_data max77665_haptic_pdata = {
- .pwm_channel_id = 2,
- .pwm_period = 50,
- .type = MAX77665_HAPTIC_LRA,
- .mode = MAX77665_INTERNAL_MODE,
- .internal_mode_pattern = 0,
- .pattern_cycle = 10,
- .pattern_signal_period = 0xD0,
- .pwm_divisor = MAX77665_PWM_DIVISOR_128,
- .feedback_duty_cycle = 12,
- .invert = MAX77665_INVERT_OFF,
- .cont_mode = MAX77665_CONT_MODE,
- .motor_startup_val = 0,
- .scf_val = 2,
-};
-
-static struct max77665_charger_cable maxim_cable[] = {
- {
- .name = "USB",
- },
- {
- .name = "USB-Host",
- },
- {
- .name = "TA",
- },
- {
- .name = "Fast-charger",
- },
- {
- .name = "Slow-charger",
- },
- {
- .name = "Charge-downstream",
- },
-};
-
-static struct regulator_consumer_supply max77665_charger_supply[] = {
- REGULATOR_SUPPLY("usb_bat_chg", "tegra-udc.0"),
-};
-
-static struct max77665_charger_plat_data max77665_charger = {
- .fast_chg_cc = 1500, /* fast charger current*/
- .term_volt = 3700, /* charger termination voltage */
- .curr_lim = 1500, /* input current limit */
- .num_cables = MAX_CABLES,
- .cables = maxim_cable,
- .extcon_name = "tegra-udc",
- .is_battery_present = false, /* false as default */
- .consumer_supplies = max77665_charger_supply,
- .num_consumer_supplies = ARRAY_SIZE(max77665_charger_supply),
-};
-
-static struct max77665_muic_platform_data max77665_muic = {
- .ext_conn_name = "MAX77665_MUIC_ID",
-};
-
-struct max77665_system_interrupt max77665_sys_int = {
- .enable_thermal_interrupt = true,
- .enable_low_sys_interrupt = true,
-};
-
-static struct max77665_platform_data pluto_max77665_pdata = {
- .irq_base = MAX77665_TEGRA_IRQ_BASE,
- .irq_flag = IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
- .system_interrupt = &max77665_sys_int,
- .muic_platform_data = {
- .pdata = &max77665_muic,
- .size = sizeof(max77665_muic),
- },
- .charger_platform_data = {
- .pdata = &max77665_charger,
- .size = sizeof(max77665_charger),
- },
- .flash_platform_data = {
- .pdata = &pluto_max77665_flash_pdata,
- .size = sizeof(pluto_max77665_flash_pdata),
- },
- .haptic_platform_data = {
- .pdata = &max77665_haptic_pdata,
- .size = sizeof(max77665_haptic_pdata),
- },
-};
-
-static struct i2c_board_info pluto_i2c_board_info_max77665[] = {
- {
- I2C_BOARD_INFO("max77665", 0x66),
- .platform_data = &pluto_max77665_pdata,
- .irq = (TEGRA_SOC_OC_IRQ_BASE + TEGRA_SOC_OC_IRQ_4),
- },
-};
-
-static struct power_supply_extcon_plat_data psy_extcon_pdata = {
- .extcon_name = "tegra-udc",
-};
-
-static struct platform_device psy_extcon_device = {
- .name = "power-supply-extcon",
- .id = -1,
- .dev = {
- .platform_data = &psy_extcon_pdata,
- },
-};
-
-
-/* isl29029 support is provided by isl29028*/
-static struct i2c_board_info pluto_i2c1_isl_board_info[] = {
- {
- I2C_BOARD_INFO("isl29028", 0x44),
- }
-};
-
-static struct throttle_table tj_throttle_table[] = {
- /* CPU_THROT_LOW cannot be used by other than CPU */
- /* CPU, C2BUS, C3BUS, SCLK, EMC */
- { { 1810500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1785000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1759500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1734000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1708500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1683000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1657500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1632000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1606500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1581000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1555500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1530000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1504500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1479000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1453500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1428000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1402500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1377000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1351500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1326000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1300500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1275000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1249500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1224000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1198500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1173000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1147500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1122000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1096500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1071000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1045500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1020000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 994500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 969000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 943500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 918000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 892500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 867000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 841500, 564000, NO_CAP, NO_CAP, NO_CAP } },
- { { 816000, 564000, NO_CAP, NO_CAP, 792000 } },
- { { 790500, 564000, NO_CAP, 372000, 792000 } },
- { { 765000, 564000, 468000, 372000, 792000 } },
- { { 739500, 528000, 468000, 372000, 792000 } },
- { { 714000, 528000, 468000, 336000, 792000 } },
- { { 688500, 528000, 420000, 336000, 792000 } },
- { { 663000, 492000, 420000, 336000, 792000 } },
- { { 637500, 492000, 420000, 336000, 408000 } },
- { { 612000, 492000, 420000, 300000, 408000 } },
- { { 586500, 492000, 360000, 336000, 408000 } },
- { { 561000, 420000, 420000, 300000, 408000 } },
- { { 535500, 420000, 360000, 228000, 408000 } },
- { { 510000, 420000, 288000, 228000, 408000 } },
- { { 484500, 324000, 288000, 228000, 408000 } },
- { { 459000, 324000, 288000, 228000, 408000 } },
- { { 433500, 324000, 288000, 228000, 408000 } },
- { { 408000, 324000, 288000, 228000, 408000 } },
-};
-
-static struct balanced_throttle tj_throttle = {
- .throt_tab_size = ARRAY_SIZE(tj_throttle_table),
- .throt_tab = tj_throttle_table,
-};
-
-static int __init pluto_throttle_init(void)
-{
- if (machine_is_tegra_pluto())
- balanced_throttle_register(&tj_throttle, "tegra-balanced");
- return 0;
-}
-module_init(pluto_throttle_init);
-
-static struct nct1008_platform_data pluto_nct1008_pdata = {
- .supported_hwrev = true,
- .extended_range = true,
- .conv_rate = 0x06, /* 4Hz conversion rate */
-
- .sensors = {
- [LOC] = {
- .shutdown_limit = 120, /* C */
- .num_trips = 0,
- .tzp = NULL,
- },
- [EXT] = {
- .shutdown_limit = 105, /* C */
- .num_trips = 1,
- .tzp = NULL,
- .trips = {
- {
- .cdev_type = "suspend_soctherm",
- .trip_temp = 50000,
- .trip_type = THERMAL_TRIP_ACTIVE,
- .upper = 1,
- .lower = 1,
- .hysteresis = 5000,
- .mask = 1,
- },
- },
-#ifdef CONFIG_TEGRA_LP1_LOW_COREVOLTAGE
- .suspend_limit_hi = 25000,
- .suspend_limit_lo = 20000,
-#endif
- }
- },
-#ifdef CONFIG_TEGRA_LP1_LOW_COREVOLTAGE
- .suspend_with_wakeup = tegra_is_lp1_suspend_mode,
-#endif
-};
-
-static struct i2c_board_info pluto_i2c4_nct1008_board_info[] = {
- {
- I2C_BOARD_INFO("nct1008", 0x4C),
- .platform_data = &pluto_nct1008_pdata,
- .irq = -1,
- }
-};
-
-#ifndef CONFIG_OF
-#define VI_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _ioreset) \
- { \
- .pingroup = TEGRA_PINGROUP_##_pingroup, \
- .func = TEGRA_MUX_##_mux, \
- .pupd = TEGRA_PUPD_##_pupd, \
- .tristate = TEGRA_TRI_##_tri, \
- .io = TEGRA_PIN_##_io, \
- .lock = TEGRA_PIN_LOCK_##_lock, \
- .od = TEGRA_PIN_OD_DEFAULT, \
- .ioreset = TEGRA_PIN_IO_RESET_##_ioreset \
-}
-
-static int pluto_focuser_power_on(struct ad5816_power_rail *pw)
-{
- int err;
-
- if (unlikely(WARN_ON(!pw || !pw->vdd || !pw->vdd_i2c)))
- return -EFAULT;
-
- err = regulator_enable(pw->vdd_i2c);
- if (unlikely(err))
- goto ad5816_vdd_i2c_fail;
-
- err = regulator_enable(pw->vdd);
- if (unlikely(err))
- goto ad5816_vdd_fail;
-
- return 0;
-
-ad5816_vdd_fail:
- regulator_disable(pw->vdd_i2c);
-
-ad5816_vdd_i2c_fail:
- pr_err("%s FAILED\n", __func__);
-
- return -ENODEV;
-}
-
-static int pluto_focuser_power_off(struct ad5816_power_rail *pw)
-{
- if (unlikely(WARN_ON(!pw || !pw->vdd || !pw->vdd_i2c)))
- return -EFAULT;
-
- regulator_disable(pw->vdd);
- regulator_disable(pw->vdd_i2c);
-
- return 0;
-}
-
-static struct tegra_pingroup_config mclk_disable =
- VI_PINMUX(CAM_MCLK, VI, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config mclk_enable =
- VI_PINMUX(CAM_MCLK, VI_ALT3, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config pbb0_disable =
- VI_PINMUX(GPIO_PBB0, VI, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-static struct tegra_pingroup_config pbb0_enable =
- VI_PINMUX(GPIO_PBB0, VI_ALT3, NORMAL, NORMAL, OUTPUT, DEFAULT, DEFAULT);
-
-/*
- * more regulators need to be allocated to activate the sensor devices.
- * pluto_vcmvdd: this is a workaround due to the focuser device(AD5816) will
- * hook up the i2c bus if it is not powered up.
- * pluto_i2cvdd: by default, the power supply on the i2c bus is OFF. So it
- * should be turned on every time any sensor device is activated.
-*/
-static struct regulator *pluto_vcmvdd;
-static struct regulator *pluto_i2cvdd;
-
-static int pluto_get_extra_regulators(void)
-{
- if (!pluto_vcmvdd) {
- pluto_vcmvdd = regulator_get(NULL, "vdd_af_cam1");
- if (WARN_ON(IS_ERR(pluto_vcmvdd))) {
- pr_err("%s: can't get regulator vdd_af_cam1: %ld\n",
- __func__, PTR_ERR(pluto_vcmvdd));
- pluto_vcmvdd = NULL;
- return -ENODEV;
- }
- }
-
- if (!pluto_i2cvdd) {
- pluto_i2cvdd = regulator_get(NULL, "vddio_cam_mb");
- if (unlikely(WARN_ON(IS_ERR(pluto_i2cvdd)))) {
- pr_err("%s: can't get regulator vddio_cam_mb: %ld\n",
- __func__, PTR_ERR(pluto_i2cvdd));
- pluto_i2cvdd = NULL;
- return -ENODEV;
- }
- }
-
- return 0;
-}
-
-static int pluto_imx091_power_on(struct nvc_regulator *vreg)
-{
- int err;
-
- if (unlikely(WARN_ON(!vreg)))
- return -EFAULT;
-
- if (pluto_get_extra_regulators())
- goto imx091_poweron_fail;
-
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
- usleep_range(10, 20);
-
- err = regulator_enable(vreg[IMX091_VREG_AVDD].vreg);
- if (unlikely(err))
- goto imx091_avdd_fail;
-
- err = regulator_enable(vreg[IMX091_VREG_DVDD].vreg);
- if (unlikely(err))
- goto imx091_dvdd_fail;
-
- err = regulator_enable(vreg[IMX091_VREG_IOVDD].vreg);
- if (unlikely(err))
- goto imx091_iovdd_fail;
-
- usleep_range(1, 2);
- gpio_set_value(CAM1_POWER_DWN_GPIO, 1);
-
- tegra_pinmux_config_table(&mclk_enable, 1);
- err = regulator_enable(pluto_i2cvdd);
- if (unlikely(err))
- goto imx091_i2c_fail;
-
- err = regulator_enable(pluto_vcmvdd);
- if (unlikely(err))
- goto imx091_vcm_fail;
- usleep_range(300, 310);
-
- return 1;
-
-imx091_vcm_fail:
- regulator_disable(pluto_i2cvdd);
-
-imx091_i2c_fail:
- tegra_pinmux_config_table(&mclk_disable, 1);
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
- regulator_disable(vreg[IMX091_VREG_IOVDD].vreg);
-
-imx091_iovdd_fail:
- regulator_disable(vreg[IMX091_VREG_DVDD].vreg);
-
-imx091_dvdd_fail:
- regulator_disable(vreg[IMX091_VREG_AVDD].vreg);
-
-imx091_avdd_fail:
-imx091_poweron_fail:
- pr_err("%s FAILED\n", __func__);
- return -ENODEV;
-}
-
-static int pluto_imx091_power_off(struct nvc_regulator *vreg)
-{
- if (unlikely(WARN_ON(!vreg)))
- return -EFAULT;
-
- usleep_range(1, 2);
- tegra_pinmux_config_table(&mclk_disable, 1);
- gpio_set_value(CAM1_POWER_DWN_GPIO, 0);
- usleep_range(1, 2);
-
- regulator_disable(vreg[IMX091_VREG_IOVDD].vreg);
- regulator_disable(vreg[IMX091_VREG_DVDD].vreg);
- regulator_disable(vreg[IMX091_VREG_AVDD].vreg);
- if (pluto_i2cvdd)
- regulator_disable(pluto_i2cvdd);
- if (pluto_vcmvdd)
- regulator_disable(pluto_vcmvdd);
-
- return 0;
-}
-
-static struct nvc_imager_cap imx091_cap = {
- .identifier = "IMX091",
- .sensor_nvc_interface = 3,
- .pixel_types[0] = 0x100,
- .orientation = 0,
- .direction = 0,
- .initial_clock_rate_khz = 6000,
- .clock_profiles[0] = {
- .external_clock_khz = 24000,
- .clock_multiplier = 850000, /* value / 1,000,000 */
- },
- .clock_profiles[1] = {
- .external_clock_khz = 0,
- .clock_multiplier = 0,
- },
- .h_sync_edge = 0,
- .v_sync_edge = 0,
- .mclk_on_vgp0 = 0,
- .csi_port = 0,
- .data_lanes = 4,
- .virtual_channel_id = 0,
- .discontinuous_clk_mode = 1,
- .cil_threshold_settle = 0x0,
- .min_blank_time_width = 16,
- .min_blank_time_height = 16,
- .preferred_mode_index = 0,
- .focuser_guid = NVC_FOCUS_GUID(0),
- .torch_guid = NVC_TORCH_GUID(0),
- .cap_version = NVC_IMAGER_CAPABILITIES_VERSION2,
-};
-
-static struct imx091_platform_data imx091_pdata = {
- .num = 0,
- .sync = 0,
- .dev_name = "camera",
- .gpio_count = ARRAY_SIZE(imx091_gpio_pdata),
- .gpio = imx091_gpio_pdata,
- .flash_cap = {
- .sdo_trigger_enabled = 1,
- .adjustable_flash_timing = 1,
- },
- .cap = &imx091_cap,
- .power_on = pluto_imx091_power_on,
- .power_off = pluto_imx091_power_off,
-};
-
-static int pluto_imx132_power_on(struct imx132_power_rail *pw)
-{
- int err;
-
- if (unlikely(WARN_ON(!pw || !pw->avdd || !pw->iovdd || !pw->dvdd)))
- return -EFAULT;
-
- if (pluto_get_extra_regulators())
- goto pluto_imx132_poweron_fail;
-
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
-
- tegra_pinmux_config_table(&pbb0_enable, 1);
-
- err = regulator_enable(pluto_i2cvdd);
- if (unlikely(err))
- goto imx132_i2c_fail;
-
- err = regulator_enable(pluto_vcmvdd);
- if (unlikely(err))
- goto imx132_vcm_fail;
-
- err = regulator_enable(pw->avdd);
- if (unlikely(err))
- goto imx132_avdd_fail;
-
- err = regulator_enable(pw->dvdd);
- if (unlikely(err))
- goto imx132_dvdd_fail;
-
- err = regulator_enable(pw->iovdd);
- if (unlikely(err))
- goto imx132_iovdd_fail;
-
- usleep_range(1, 2);
-
- gpio_set_value(CAM2_POWER_DWN_GPIO, 1);
-
- return 0;
-
-imx132_iovdd_fail:
- regulator_disable(pw->dvdd);
-
-imx132_dvdd_fail:
- regulator_disable(pw->avdd);
-
-imx132_avdd_fail:
- regulator_disable(pluto_vcmvdd);
-
-imx132_vcm_fail:
- regulator_disable(pluto_i2cvdd);
-
-imx132_i2c_fail:
- tegra_pinmux_config_table(&pbb0_disable, 1);
-
-pluto_imx132_poweron_fail:
- pr_err("%s failed.\n", __func__);
- return -ENODEV;
-}
-
-static int pluto_imx132_power_off(struct imx132_power_rail *pw)
-{
- if (unlikely(WARN_ON(!pw || !pw->avdd || !pw->iovdd || !pw->dvdd ||
- !pluto_i2cvdd || !pluto_vcmvdd)))
- return -EFAULT;
-
- gpio_set_value(CAM2_POWER_DWN_GPIO, 0);
-
- usleep_range(1, 2);
-
- regulator_disable(pw->iovdd);
- regulator_disable(pw->dvdd);
- regulator_disable(pw->avdd);
-
- tegra_pinmux_config_table(&pbb0_disable, 1);
-
- regulator_disable(pluto_vcmvdd);
- regulator_disable(pluto_i2cvdd);
-
- return 0;
-}
-
-struct imx132_platform_data imx132_pdata = {
- .power_on = pluto_imx132_power_on,
- .power_off = pluto_imx132_power_off,
-};
-
-static struct ad5816_platform_data pluto_ad5816_pdata = {
- .cfg = 0,
- .num = 0,
- .sync = 0,
- .dev_name = "focuser",
- .power_on = pluto_focuser_power_on,
- .power_off = pluto_focuser_power_off,
-};
-
-static struct i2c_board_info pluto_i2c_board_info_e1625[] = {
- {
- I2C_BOARD_INFO("imx091", 0x10),
- .platform_data = &imx091_pdata,
- },
- {
- I2C_BOARD_INFO("imx132", 0x36),
- .platform_data = &imx132_pdata,
- },
- {
- I2C_BOARD_INFO("ad5816", 0x0E),
- .platform_data = &pluto_ad5816_pdata,
- },
-};
-
-static int pluto_camera_init(void)
-{
- pr_debug("%s: ++\n", __func__);
-
- tegra_pinmux_config_table(&mclk_disable, 1);
- tegra_pinmux_config_table(&pbb0_disable, 1);
- i2c_register_board_info(2, pluto_i2c_board_info_e1625,
- ARRAY_SIZE(pluto_i2c_board_info_e1625));
-
- return 0;
-}
-#endif
-
-/* MPU board file definition */
-static struct mpu_platform_data mpu_gyro_data = {
- .int_config = 0x00,
- .level_shifter = 0,
- .orientation = MPU_GYRO_ORIENTATION,
- .sec_slave_type = SECONDARY_SLAVE_TYPE_NONE,
- .key = {0x4E, 0xCC, 0x7E, 0xEB, 0xF6, 0x1E, 0x35, 0x22,
- 0x00, 0x34, 0x0D, 0x65, 0x32, 0xE9, 0x94, 0x89},
-};
-
-static struct mpu_platform_data mpu_compass_data = {
- .orientation = MPU_COMPASS_ORIENTATION,
- .config = NVI_CONFIG_BOOT_MPU,
-};
-
-static struct mpu_platform_data bmp180_pdata = {
- .config = NVI_CONFIG_BOOT_MPU,
-};
-
-static struct i2c_board_info __initdata inv_mpu_i2c0_board_info[] = {
- {
- I2C_BOARD_INFO(MPU_GYRO_NAME, MPU_GYRO_ADDR),
- .platform_data = &mpu_gyro_data,
- },
- {
- /* The actual BMP180 address is 0x77 but because this conflicts
- * with another device, this address is hacked so Linux will
- * call the driver. The conflict is technically okay since the
- * BMP180 is behind the MPU. Also, the BMP180 driver uses a
- * hard-coded address of 0x77 since it can't be changed anyway.
- */
- I2C_BOARD_INFO("bmp180", 0x78),
- .platform_data = &bmp180_pdata,
- },
- {
- I2C_BOARD_INFO(MPU_COMPASS_NAME, MPU_COMPASS_ADDR),
- .platform_data = &mpu_compass_data,
- },
-};
-
-static void mpuirq_init(void)
-{
- int ret = 0;
- int i = 0;
-
- pr_info("*** MPU START *** mpuirq_init...\n");
-
- /* MPU-IRQ assignment */
- ret = gpio_request(MPU_GYRO_IRQ_GPIO, MPU_GYRO_NAME);
- if (ret < 0) {
- pr_err("%s: gpio_request failed %d\n", __func__, ret);
- return;
- }
-
- ret = gpio_direction_input(MPU_GYRO_IRQ_GPIO);
- if (ret < 0) {
- pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
- gpio_free(MPU_GYRO_IRQ_GPIO);
- return;
- }
- pr_info("*** MPU END *** mpuirq_init...\n");
-
- inv_mpu_i2c0_board_info[i++].irq = gpio_to_irq(MPU_GYRO_IRQ_GPIO);
-#if MPU_COMPASS_IRQ_GPIO
- inv_mpu_i2c0_board_info[i++].irq = gpio_to_irq(MPU_COMPASS_IRQ_GPIO);
-#endif
- i2c_register_board_info(MPU_GYRO_BUS_NUM, inv_mpu_i2c0_board_info,
- ARRAY_SIZE(inv_mpu_i2c0_board_info));
-}
-
-static int pluto_nct1008_init(void)
-{
- int nct1008_port;
- int ret = 0;
-
- if (board_info.board_id == BOARD_E1580 ||
- board_info.board_id == BOARD_E1575 ||
- board_info.board_id == BOARD_E1577) {
- nct1008_port = TEGRA_GPIO_PX6;
- } else {
- nct1008_port = TEGRA_GPIO_PX6;
- pr_err("Warning: nct alert port assumed TEGRA_GPIO_PX6 for unknown pluto board id E%d\n",
- board_info.board_id);
- }
-
- tegra_add_all_vmin_trips(pluto_nct1008_pdata.sensors[EXT].trips,
- &pluto_nct1008_pdata.sensors[EXT].num_trips);
-
- pluto_i2c4_nct1008_board_info[0].irq =
- gpio_to_irq(nct1008_port);
- pr_info("%s: pluto nct1008 irq %d",
- __func__, pluto_i2c4_nct1008_board_info[0].irq);
-
- ret = gpio_request(nct1008_port, "temp_alert");
- if (ret < 0)
- return ret;
-
- ret = gpio_direction_input(nct1008_port);
- if (ret < 0) {
- pr_info("%s: calling gpio_free(nct1008_port)", __func__);
- gpio_free(nct1008_port);
- }
-
- /* pluto has thermal sensor on GEN1-I2C i.e. instance 0 */
- i2c_register_board_info(0, pluto_i2c4_nct1008_board_info,
- ARRAY_SIZE(pluto_i2c4_nct1008_board_info));
-
- return ret;
-}
-
-#ifdef CONFIG_TEGRA_SKIN_THROTTLE
-static struct thermal_trip_info skin_trips[] = {
- {
- .cdev_type = "skin-balanced",
- .trip_temp = 43000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- .hysteresis = 0,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 57000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- .hysteresis = 0,
- },
-};
-
-static struct therm_est_subdevice skin_devs[] = {
- {
- .dev_data = "Tdiode",
- .coeffs = {
- 2, 1, 1, 1,
- 1, 1, 1, 1,
- 1, 1, 1, 0,
- 1, 1, 0, 0,
- 0, 0, -1, -7
- },
- },
- {
- .dev_data = "Tboard",
- .coeffs = {
- -11, -7, -5, -3,
- -3, -2, -1, 0,
- 0, 0, 1, 1,
- 1, 2, 2, 3,
- 4, 6, 11, 18
- },
- },
-};
-
-static struct pid_thermal_gov_params skin_pid_params = {
- .max_err_temp = 4000,
- .max_err_gain = 1000,
-
- .gain_p = 1000,
- .gain_d = 0,
-
- .up_compensation = 15,
- .down_compensation = 15,
-};
-
-static struct thermal_zone_params skin_tzp = {
- .governor_name = "pid_thermal_gov",
- .governor_params = &skin_pid_params,
-};
-
-static struct therm_est_data skin_data = {
- .num_trips = ARRAY_SIZE(skin_trips),
- .trips = skin_trips,
- .toffset = 9793,
- .polling_period = 1100,
- .passive_delay = 15000,
- .tc1 = 10,
- .tc2 = 1,
- .ndevs = ARRAY_SIZE(skin_devs),
- .devs = skin_devs,
- .tzp = &skin_tzp,
-};
-
-static struct throttle_table skin_throttle_table[] = {
- /* CPU_THROT_LOW cannot be used by other than CPU */
- /* CPU, C2BUS, C3BUS, SCLK, EMC */
- { { 1810500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1785000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1759500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1734000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1708500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1683000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1657500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1632000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1606500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1581000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1555500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1530000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1504500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1479000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1453500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1428000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1402500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1377000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1351500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1326000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1300500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1275000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1249500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1224000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1198500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1173000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1147500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1122000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1096500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1071000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1045500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1020000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 994500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 969000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 943500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 918000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 892500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 867000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 841500, 564000, NO_CAP, NO_CAP, NO_CAP } },
- { { 816000, 564000, NO_CAP, NO_CAP, 792000 } },
- { { 790500, 564000, NO_CAP, 372000, 792000 } },
- { { 765000, 564000, 468000, 372000, 792000 } },
- { { 739500, 528000, 468000, 372000, 792000 } },
- { { 714000, 528000, 468000, 336000, 792000 } },
- { { 688500, 528000, 420000, 336000, 792000 } },
- { { 663000, 492000, 420000, 336000, 792000 } },
- { { 637500, 492000, 420000, 336000, 408000 } },
- { { 612000, 492000, 420000, 300000, 408000 } },
- { { 586500, 492000, 360000, 336000, 408000 } },
- { { 561000, 420000, 420000, 300000, 408000 } },
- { { 535500, 420000, 360000, 228000, 408000 } },
- { { 510000, 420000, 288000, 228000, 408000 } },
- { { 484500, 324000, 288000, 228000, 408000 } },
- { { 459000, 324000, 288000, 228000, 408000 } },
- { { 433500, 324000, 288000, 228000, 408000 } },
- { { 408000, 324000, 288000, 228000, 408000 } },
-};
-
-static struct balanced_throttle skin_throttle = {
- .throt_tab_size = ARRAY_SIZE(skin_throttle_table),
- .throt_tab = skin_throttle_table,
-};
-
-static int __init pluto_skin_init(void)
-{
- if (machine_is_tegra_pluto()) {
- balanced_throttle_register(&skin_throttle, "skin-balanced");
- tegra_skin_therm_est_device.dev.platform_data = &skin_data;
- platform_device_register(&tegra_skin_therm_est_device);
- }
-
- return 0;
-}
-late_initcall(pluto_skin_init);
-#endif
-
-void __init max77665_init(void)
-{
- int err;
-
- /* For battery presence into charger driver */
- if (get_power_supply_type() == POWER_SUPPLY_TYPE_BATTERY)
- max77665_charger.is_battery_present = true;
-
- err = i2c_register_board_info(4, pluto_i2c_board_info_max77665,
- ARRAY_SIZE(pluto_i2c_board_info_max77665));
- if (err)
- pr_err("%s: max77665 device register failed.\n", __func__);
-
- platform_device_register(&psy_extcon_device);
-
- return;
-}
-
-int __init pluto_sensors_init(void)
-{
- int err;
-
- tegra_get_board_info(&board_info);
-
- pr_debug("%s: ++\n", __func__);
-
-#ifndef CONFIG_OF
- pluto_camera_init();
-#endif
- err = pluto_nct1008_init();
- if (err)
- return err;
-
- err = i2c_register_board_info(0, pluto_i2c1_isl_board_info,
- ARRAY_SIZE(pluto_i2c1_isl_board_info));
- if (err)
- pr_err("%s: isl board register failed.\n", __func__);
-
- mpuirq_init();
- max77665_init();
-
- if (get_power_supply_type() == POWER_SUPPLY_TYPE_BATTERY)
- max17042_pdata.is_battery_present = true;
-
- err = i2c_register_board_info(0, max17042_device,
- ARRAY_SIZE(max17042_device));
- if (err)
- pr_err("%s: max17042 device register failed.\n", __func__);
-
-
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-pluto.c b/arch/arm/mach-tegra/board-pluto.c
deleted file mode 100644
index 92ebc053da8f..000000000000
--- a/arch/arm/mach-tegra/board-pluto.c
+++ /dev/null
@@ -1,1297 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pluto.c
- *
- * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/ctype.h>
-#include <linux/platform_device.h>
-#include <linux/clk.h>
-#include <linux/serial_8250.h>
-#include <linux/i2c.h>
-#include <linux/dma-mapping.h>
-#include <linux/delay.h>
-#include <linux/i2c-tegra.h>
-#include <linux/gpio.h>
-#include <linux/input.h>
-#include <linux/platform_data/tegra_usb.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/rm31080a_ts.h>
-#include <linux/platform_data/serial-tegra.h>
-#include <linux/memblock.h>
-#include <linux/spi/spi-tegra.h>
-#include <linux/nfc/pn544.h>
-#include <linux/nfc/bcm2079x.h>
-#include <linux/rfkill-gpio.h>
-#include <linux/skbuff.h>
-#include <linux/ti_wilink_st.h>
-#include <linux/regulator/consumer.h>
-#include <linux/smb349-charger.h>
-#include <linux/max17048_battery.h>
-#include <linux/leds.h>
-#include <linux/i2c/at24.h>
-#include <linux/mfd/max8831.h>
-#include <linux/of_platform.h>
-#include <linux/a2220.h>
-#include <linux/mfd/tlv320aic3262-registers.h>
-#include <linux/mfd/tlv320aic3xxx-core.h>
-#include <linux/usb/tegra_usb_phy.h>
-#include <linux/clk/tegra.h>
-#include <linux/clocksource.h>
-#include <linux/irqchip.h>
-#include <linux/tegra_fiq_debugger.h>
-#include <linux/platform_data/tegra_usb_modem_power.h>
-
-#include <mach/irqs.h>
-#include <mach/pinmux.h>
-#include <mach/pinmux-t11.h>
-#include <mach/io_dpd.h>
-#include <mach/i2s.h>
-#include <mach/isomgr.h>
-#include <mach/tegra_asoc_pdata.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <mach/gpio-tegra.h>
-#include <mach/tegra-bb-power.h>
-#include <mach/tegra_wakeup_monitor.h>
-#include <mach/xusb.h>
-#include <media/tegra_dtv.h>
-
-#include "board.h"
-#include "board-common.h"
-#include "board-touch.h"
-#include "board-touch-raydium.h"
-#include "clock.h"
-#include "board-pluto.h"
-#include "baseband-xmm-power.h"
-#include "tegra-board-id.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "pm.h"
-#include "common.h"
-#include "iomap.h"
-#include "tegra-of-dev-auxdata.h"
-
-
-#ifdef CONFIG_BT_BLUESLEEP
-static struct rfkill_gpio_platform_data pluto_bt_rfkill_pdata = {
- .name = "bt_rfkill",
- .shutdown_gpio = TEGRA_GPIO_PQ7,
- .reset_gpio = TEGRA_GPIO_PQ6,
- .type = RFKILL_TYPE_BLUETOOTH,
-};
-
-static struct platform_device pluto_bt_rfkill_device = {
- .name = "rfkill_gpio",
- .id = -1,
- .dev = {
- .platform_data = &pluto_bt_rfkill_pdata,
- },
-};
-
-static noinline void __init pluto_setup_bt_rfkill(void)
-{
- platform_device_register(&pluto_bt_rfkill_device);
-}
-
-static struct resource pluto_bluesleep_resources[] = {
- [0] = {
- .name = "gpio_host_wake",
- .start = TEGRA_GPIO_PU6,
- .end = TEGRA_GPIO_PU6,
- .flags = IORESOURCE_IO,
- },
- [1] = {
- .name = "gpio_ext_wake",
- .start = TEGRA_GPIO_PEE1,
- .end = TEGRA_GPIO_PEE1,
- .flags = IORESOURCE_IO,
- },
- [2] = {
- .name = "host_wake",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- },
-};
-
-static struct platform_device pluto_bluesleep_device = {
- .name = "bluesleep",
- .id = -1,
- .num_resources = ARRAY_SIZE(pluto_bluesleep_resources),
- .resource = pluto_bluesleep_resources,
-};
-
-static noinline void __init pluto_setup_bluesleep(void)
-{
- pluto_bluesleep_resources[2].start =
- pluto_bluesleep_resources[2].end =
- gpio_to_irq(TEGRA_GPIO_PU6);
- platform_device_register(&pluto_bluesleep_device);
- return;
-}
-#elif defined CONFIG_BLUEDROID_PM
-static struct resource pluto_bluedroid_pm_resources[] = {
- [0] = {
- .name = "shutdown_gpio",
- .start = TEGRA_GPIO_PQ7,
- .end = TEGRA_GPIO_PQ7,
- .flags = IORESOURCE_IO,
- },
- [1] = {
- .name = "host_wake",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- },
- [2] = {
- .name = "gpio_ext_wake",
- .start = TEGRA_GPIO_PEE1,
- .end = TEGRA_GPIO_PEE1,
- .flags = IORESOURCE_IO,
- },
- [3] = {
- .name = "gpio_host_wake",
- .start = TEGRA_GPIO_PU6,
- .end = TEGRA_GPIO_PU6,
- .flags = IORESOURCE_IO,
- },
- [4] = {
- .name = "reset_gpio",
- .start = TEGRA_GPIO_PQ6,
- .end = TEGRA_GPIO_PQ6,
- .flags = IORESOURCE_IO,
- },
-};
-
-static struct platform_device pluto_bluedroid_pm_device = {
- .name = "bluedroid_pm",
- .id = 0,
- .num_resources = ARRAY_SIZE(pluto_bluedroid_pm_resources),
- .resource = pluto_bluedroid_pm_resources,
-};
-
-static noinline void __init pluto_setup_bluedroid_pm(void)
-{
- pluto_bluedroid_pm_resources[1].start =
- pluto_bluedroid_pm_resources[1].end =
- gpio_to_irq(TEGRA_GPIO_PU6);
- platform_device_register(&pluto_bluedroid_pm_device);
-}
-#endif
-
-static __initdata struct tegra_clk_init_table pluto_clk_init_table[] = {
- /* name parent rate enabled */
- { "pll_m", NULL, 0, false},
- { "hda", "pll_p", 108000000, false},
- { "hda2codec_2x", "pll_p", 48000000, false},
- { "pwm", "pll_p", 3187500, false},
- { "i2s1", "pll_a_out0", 0, false},
- { "i2s2", "pll_a_out0", 0, false},
- { "i2s3", "pll_a_out0", 0, false},
- { "i2s4", "pll_a_out0", 0, false},
- { "spdif_out", "pll_a_out0", 0, false},
- { "d_audio", "clk_m", 12000000, false},
- { "dam0", "clk_m", 12000000, false},
- { "dam1", "clk_m", 12000000, false},
- { "dam2", "clk_m", 12000000, false},
- { "audio0", "i2s0_sync", 0, false},
- { "audio1", "i2s1_sync", 0, false},
- { "audio2", "i2s2_sync", 0, false},
- { "audio3", "i2s3_sync", 0, false},
- { "audio4", "i2s4_sync", 0, false},
- { "vi_sensor", "pll_p", 150000000, false},
- { "cilab", "pll_p", 150000000, false},
- { "cilcd", "pll_p", 150000000, false},
- { "cile", "pll_p", 150000000, false},
- { "i2c1", "pll_p", 3200000, false},
- { "i2c2", "pll_p", 3200000, false},
- { "i2c3", "pll_p", 3200000, false},
- { "i2c4", "pll_p", 3200000, false},
- { "i2c5", "pll_p", 3200000, false},
- { "sbc1", "pll_p", 25000000, false},
- { "sbc2", "pll_p", 25000000, false},
- { "sbc3", "pll_p", 25000000, false},
- { "sbc4", "pll_p", 25000000, false},
- { "sbc5", "pll_p", 25000000, false},
- { "sbc6", "pll_p", 25000000, false},
- { "extern3", "clk_m", 12000000, false},
- { "dsia", "pll_d2_out0", 0, false},
- { "uarta", "pll_p", 408000000, false},
- { "uartb", "pll_p", 408000000, false},
- { "uartc", "pll_p", 408000000, false},
- { "uartd", "pll_p", 408000000, false},
- { NULL, NULL, 0, 0},
-};
-
-static struct bcm2079x_platform_data nfc_pdata = {
- .irq_gpio = TEGRA_GPIO_PW2,
- .en_gpio = TEGRA_GPIO_PU4,
- .wake_gpio = TEGRA_GPIO_PX7,
- };
-
-static struct i2c_board_info __initdata pluto_i2c_bus3_board_info[] = {
- {
- I2C_BOARD_INFO("bcm2079x-i2c", 0x77),
- .platform_data = &nfc_pdata,
- },
-};
-
-static struct aic3262_gpio_setup aic3262_gpio[] = {
- /* GPIO 1*/
- {
- .used = 1,
- .in = 0,
- .value = AIC3262_GPIO1_FUNC_INT1_OUTPUT ,
- },
- /* GPIO 2*/
- {
- .used = 1,
- .in = 0,
- .value = AIC3262_GPIO2_FUNC_ADC_MOD_CLK_OUTPUT,
- },
- /* GPI1 */
- {
- .used = 1,
- .in = 1,
- },
- /* GPI2 */
- {
- .used = 1,
- .in = 1,
- .in_reg = AIC3262_DMIC_INPUT_CNTL,
- .in_reg_bitmask = AIC3262_DMIC_CONFIGURE_MASK,
- .in_reg_shift = AIC3262_DMIC_CONFIGURE_SHIFT,
- .value = AIC3262_DMIC_GPI2_LEFT_GPI2_RIGHT,
- },
- /* GPO1 */
- {
- .used = 1,
- .in = 0,
- .value = AIC3262_GPO1_FUNC_MSO_OUTPUT_FOR_SPI,
- },
-};
-static struct aic3xxx_pdata aic3262_codec_pdata = {
- .gpio_irq = 0,
- .gpio = aic3262_gpio,
- .naudint_irq = 0,
- .irq_base = AIC3262_CODEC_IRQ_BASE,
-};
-
-static struct i2c_board_info __initdata cs42l73_board_info = {
- I2C_BOARD_INFO("cs42l73", 0x4a),
-};
-
-static struct i2c_board_info __initdata pluto_codec_a2220_info = {
- I2C_BOARD_INFO("audience_a2220", 0x3E),
-};
-
-static struct i2c_board_info __initdata pluto_codec_aic326x_info = {
- I2C_BOARD_INFO("tlv320aic3262", 0x18),
- .platform_data = &aic3262_codec_pdata,
-};
-
-static void pluto_i2c_init(void)
-{
- pluto_i2c_bus3_board_info[0].irq = gpio_to_irq(TEGRA_GPIO_PW2);
- i2c_register_board_info(0, pluto_i2c_bus3_board_info, 1);
- i2c_register_board_info(0, &pluto_codec_aic326x_info, 1);
- i2c_register_board_info(0, &pluto_codec_a2220_info, 1);
- i2c_register_board_info(0, &cs42l73_board_info, 1);
-}
-
-static struct tegra_serial_platform_data pluto_uartd_pdata = {
- .dma_req_selector = 19,
- .modem_interrupt = false,
-};
-
-static void __init pluto_uart_init(void)
-{
- int debug_port_id;
-
- /* Register low speed only if it is selected */
- if (!is_tegra_debug_uartport_hs()) {
- debug_port_id = uart_console_debug_init(3);
- if (debug_port_id < 0)
- return;
-
- platform_device_register(uart_console_debug_device);
-
- } else {
- tegra_uartd_device.dev.platform_data = &pluto_uartd_pdata;
- platform_device_register(&tegra_uartd_device);
- }
-
-}
-
-static struct resource tegra_rtc_resources[] = {
- [0] = {
- .start = TEGRA_RTC_BASE,
- .end = TEGRA_RTC_BASE + TEGRA_RTC_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = INT_RTC,
- .end = INT_RTC,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device tegra_rtc_device = {
- .name = "tegra_rtc",
- .id = -1,
- .resource = tegra_rtc_resources,
- .num_resources = ARRAY_SIZE(tegra_rtc_resources),
-};
-
-#if defined(CONFIG_TEGRA_WAKEUP_MONITOR)
-static struct tegra_wakeup_monitor_platform_data
- pluto_tegra_wakeup_monitor_pdata = {
- .wifi_wakeup_source = 6,
- .rtc_wakeup_source = 18,
-};
-
-static struct platform_device pluto_tegra_wakeup_monitor_device = {
- .name = "tegra_wakeup_monitor",
- .id = -1,
- .dev = {
- .platform_data = &pluto_tegra_wakeup_monitor_pdata,
- },
-};
-#endif
-
-static struct tegra_asoc_platform_data pluto_audio_pdata = {
- .gpio_spkr_en = TEGRA_GPIO_SPKR_EN,
- .gpio_hp_det = TEGRA_GPIO_HP_DET,
- .gpio_hp_mute = -1,
- .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN,
- .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN,
- .gpio_ldo1_en = TEGRA_GPIO_LDO1_EN,
- .i2s_param[HIFI_CODEC] = {
- .audio_port_id = 1,
- .is_i2s_master = 0,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- .sample_size = 16,
- .channels = 2,
- },
- .i2s_param[BASEBAND] = {
- .audio_port_id = 2,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- .sample_size = 16,
- .rate = 16000,
- .channels = 2,
- .bit_clk = 1024000,
- },
- .i2s_param[BT_SCO] = {
- .audio_port_id = 3,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_DSP_A,
- .sample_size = 16,
- .channels = 1,
- .bit_clk = 512000,
- },
- .i2s_param[VOICE_CODEC] = {
- .audio_port_id = 0,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- .sample_size = 16,
- .rate = 16000,
- .channels = 2,
- },
-};
-
-static struct tegra_asoc_platform_data pluto_aic3262_pdata = {
- .gpio_spkr_en = TEGRA_GPIO_SPKR_EN,
- .gpio_hp_det = TEGRA_GPIO_HP_DET,
- .gpio_hp_mute = -1,
- .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN,
- .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN,
- .gpio_ldo1_en = TEGRA_GPIO_LDO1_EN,
- .i2s_param[HIFI_CODEC] = {
- .audio_port_id = 1,
- .is_i2s_master = 0,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- .sample_size = 16,
- .rate = 48000,
- .channels = 2,
- },
- .i2s_param[BASEBAND] = {
- .audio_port_id = 2,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- .sample_size = 16,
- .rate = 16000,
- .channels = 2,
- .bit_clk = 1024000,
- },
- .i2s_param[BT_SCO] = {
- .audio_port_id = 3,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_DSP_A,
- .sample_size = 16,
- .channels = 1,
- .bit_clk = 512000,
- },
- .i2s_param[VOICE_CODEC] = {
- .audio_port_id = 0,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- .sample_size = 16,
- .rate = 16000,
- .channels = 2,
- },
-};
-
-static struct platform_device pluto_audio_device = {
- .name = "tegra-snd-cs42l73",
- .id = 2,
- .dev = {
- .platform_data = &pluto_audio_pdata,
- },
-};
-
-static struct platform_device pluto_audio_aic326x_device = {
- .name = "tegra-snd-aic326x",
- .id = 2,
- .dev = {
- .platform_data = &pluto_aic3262_pdata,
- },
-};
-
-static struct tegra_spi_device_controller_data dev_bdata = {
- .rx_clk_tap_delay = 0,
- .tx_clk_tap_delay = 0,
-};
-static struct spi_board_info aic326x_spi_board_info[] = {
- {
- .modalias = "tlv320aic3xxx",
- .bus_num = 3,
- .chip_select = 0,
- .max_speed_hz = 4*1000*1000,
- .mode = SPI_MODE_1,
- .controller_data = &dev_bdata,
- .platform_data = &aic3262_codec_pdata,
- },
-};
-
-#ifdef CONFIG_MHI_NETDEV
-struct platform_device mhi_netdevice0 = {
- .name = "mhi_net_device",
- .id = 0,
-};
-#endif /* CONFIG_MHI_NETDEV */
-
-static struct platform_device *pluto_devices[] __initdata = {
- &tegra_pmu_device,
- &tegra_rtc_device,
- &tegra_udc_device,
-#if defined(CONFIG_TEGRA_WATCHDOG)
- &tegra_wdt0_device,
-#endif
-#if defined(CONFIG_TEGRA_AVP)
- &tegra_avp_device,
-#endif
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_SE)
- &tegra11_se_device,
-#endif
- &tegra_ahub_device,
- &tegra_dam_device0,
- &tegra_dam_device1,
- &tegra_dam_device2,
- &tegra_i2s_device0,
- &tegra_i2s_device1,
- &tegra_i2s_device2,
- &tegra_i2s_device3,
- &tegra_i2s_device4,
- &tegra_spdif_device,
- &spdif_dit_device,
- &pluto_audio_aic326x_device,
- &bluetooth_dit_device,
- &baseband_dit_device,
-#if defined(CONFIG_TEGRA_WAKEUP_MONITOR)
- &pluto_tegra_wakeup_monitor_device,
-#endif
- &pluto_audio_device,
- &tegra_hda_device,
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_AES)
- &tegra_aes_device,
-#endif
-#ifdef CONFIG_MHI_NETDEV
- &mhi_netdevice0, /* MHI netdevice */
-#endif /* CONFIG_MHI_NETDEV */
-};
-
-#ifdef CONFIG_USB_SUPPORT
-
-static void pluto_usb_hsic_postsupend(void)
-{
- pr_debug("%s\n", __func__);
-#ifdef CONFIG_TEGRA_BB_XMM_POWER
- baseband_xmm_set_power_status(BBXMM_PS_L2);
-#endif
-}
-
-static void pluto_usb_hsic_preresume(void)
-{
- pr_debug("%s\n", __func__);
-#ifdef CONFIG_TEGRA_BB_XMM_POWER
- baseband_xmm_set_power_status(BBXMM_PS_L2TOL0);
-#endif
-}
-
-static void pluto_usb_hsic_post_resume(void)
-{
- pr_debug("%s\n", __func__);
-#ifdef CONFIG_TEGRA_BB_XMM_POWER
- baseband_xmm_set_power_status(BBXMM_PS_L0);
-#endif
-}
-
-static void pluto_usb_hsic_phy_power(void)
-{
- pr_debug("%s\n", __func__);
-#ifdef CONFIG_TEGRA_BB_XMM_POWER
- baseband_xmm_set_power_status(BBXMM_PS_L0);
-#endif
-}
-
-static void pluto_usb_hsic_post_phy_off(void)
-{
- pr_debug("%s\n", __func__);
-#ifdef CONFIG_TEGRA_BB_XMM_POWER
- baseband_xmm_set_power_status(BBXMM_PS_L2);
-#endif
-}
-
-static struct tegra_usb_phy_platform_ops oem2_plat_ops = {
- .post_suspend = pluto_usb_hsic_postsupend,
- .pre_resume = pluto_usb_hsic_preresume,
- .port_power = pluto_usb_hsic_phy_power,
- .post_resume = pluto_usb_hsic_post_resume,
- .post_phy_off = pluto_usb_hsic_post_phy_off,
-};
-
-static struct tegra_usb_platform_data tegra_ehci3_hsic_smsc_hub_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_HSIC,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
-};
-
-static struct tegra_usb_platform_data tegra_udc_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .id_det_type = TEGRA_USB_PMU_ID,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_DEVICE,
- .u_data.dev = {
- .vbus_pmu_irq = 0,
- .vbus_gpio = -1,
- .charging_supported = true,
- .remote_wakeup_supported = false,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 8,
- .xcvr_lsfslew = 0,
- .xcvr_lsrslew = 3,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- },
-};
-
-static struct tegra_usb_platform_data tegra_ehci1_utmi_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .id_det_type = TEGRA_USB_PMU_ID,
- .id_extcon_dev_name = "MAX77665_MUIC_ID",
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 15,
- .xcvr_lsfslew = 0,
- .xcvr_lsrslew = 3,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- .vbus_oc_map = 0x7,
- },
-};
-
-static struct tegra_usb_otg_data tegra_otg_pdata = {
- .ehci_device = &tegra_ehci1_device,
- .ehci_pdata = &tegra_ehci1_utmi_pdata,
-};
-
-static struct regulator *baseband_reg;
-static struct gpio modem_gpios[] = { /* i500 modem */
- {MDM_RST, GPIOF_OUT_INIT_LOW, "MODEM RESET"},
-};
-
-static struct gpio modem2_gpios[] = {
- {MDM2_PWR_ON, GPIOF_OUT_INIT_LOW, "MODEM2 PWR ON"},
- {MDM2_RST, GPIOF_OUT_INIT_LOW, "MODEM2 RESET"},
-};
-
-static struct tegra_usb_platform_data tegra_ehci2_hsic_baseband_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_HSIC,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
-};
-
-static struct tegra_usb_platform_data tegra_ehci3_hsic_baseband2_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_HSIC,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
-};
-
-static struct tegra_usb_platform_data tegra_hsic_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_HSIC,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = false,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = true,
- },
-};
-
-static struct platform_device *
-tegra_usb_hsic_host_register(struct platform_device *ehci_dev)
-{
- struct platform_device *pdev;
- int val;
-
- pdev = platform_device_alloc(ehci_dev->name, ehci_dev->id);
- if (!pdev)
- return NULL;
-
- val = platform_device_add_resources(pdev, ehci_dev->resource,
- ehci_dev->num_resources);
- if (val)
- goto error;
-
- pdev->dev.dma_mask = ehci_dev->dev.dma_mask;
- pdev->dev.coherent_dma_mask = ehci_dev->dev.coherent_dma_mask;
-
- val = platform_device_add_data(pdev, &tegra_hsic_pdata,
- sizeof(struct tegra_usb_platform_data));
- if (val)
- goto error;
-
- val = platform_device_add(pdev);
- if (val)
- goto error;
-
- return pdev;
-
-error:
- pr_err("%s: failed to add the host contoller device\n", __func__);
- platform_device_put(pdev);
- return NULL;
-}
-
-static void tegra_usb_hsic_host_unregister(struct platform_device **platdev)
-{
- struct platform_device *pdev = *platdev;
-
- if (pdev && &pdev->dev) {
- platform_device_unregister(pdev);
- *platdev = NULL;
- } else
- pr_err("%s: no platform device\n", __func__);
-}
-
-static struct tegra_usb_phy_platform_ops oem1_hsic_pops;
-
-static union tegra_bb_gpio_id bb_gpio_oem1 = {
- .oem1 = {
- .reset = BB_OEM1_GPIO_RST,
- .pwron = BB_OEM1_GPIO_ON,
- .awr = BB_OEM1_GPIO_AWR,
- .cwr = BB_OEM1_GPIO_CWR,
- .spare = BB_OEM1_GPIO_SPARE,
- .wdi = BB_OEM1_GPIO_WDI,
- },
-};
-
-static struct tegra_bb_pdata bb_pdata_oem1 = {
- .id = &bb_gpio_oem1,
- .device = &tegra_ehci3_device,
- .ehci_register = tegra_usb_hsic_host_register,
- .ehci_unregister = tegra_usb_hsic_host_unregister,
- .bb_id = TEGRA_BB_OEM1,
-};
-
-static struct platform_device tegra_bb_oem1 = {
- .name = "tegra_baseband_power",
- .id = -1,
- .dev = {
- .platform_data = &bb_pdata_oem1,
- },
-};
-
-static int baseband_init(void)
-{
- int ret;
-
- ret = gpio_request_array(modem_gpios, ARRAY_SIZE(modem_gpios));
- if (ret) {
- pr_warn("%s:gpio request failed\n", __func__);
- return ret;
- }
-
- baseband_reg = regulator_get(NULL, "vdd_core_bb");
- if (IS_ERR(baseband_reg))
- pr_warn("%s: baseband regulator get failed\n", __func__);
- else {
- if (regulator_enable(baseband_reg) != 0)
- pr_warn("baseband regulator enable failed\n");
- }
-
- /* enable pull-up for MDM1 UART RX */
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_GPIO_PU1,
- TEGRA_PUPD_PULL_UP);
-
- /* enable pull-down for MDM1_COLD_BOOT */
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_ULPI_DATA4,
- TEGRA_PUPD_PULL_DOWN);
-
- /* export GPIO for user space access through sysfs */
- gpio_export(MDM_RST, false);
-
- return 0;
-}
-
-static const struct tegra_modem_operations baseband_operations = {
- .init = baseband_init,
-};
-
-static struct tegra_usb_modem_power_platform_data baseband_pdata = {
- .ops = &baseband_operations,
- .wake_gpio = -1,
- .boot_gpio = MDM_COLDBOOT,
- .boot_irq_flags = IRQF_TRIGGER_RISING |
- IRQF_TRIGGER_FALLING |
- IRQF_ONESHOT,
- .autosuspend_delay = 2000,
- .short_autosuspend_delay = 50,
- .tegra_ehci_device = &tegra_ehci2_device,
- .tegra_ehci_pdata = &tegra_ehci2_hsic_baseband_pdata,
-};
-
-static struct platform_device icera_baseband_device = {
- .name = "tegra_usb_modem_power",
- .id = -1,
- .dev = {
- .platform_data = &baseband_pdata,
- },
-};
-
-static void baseband2_start(void)
-{
- pr_info("%s\n", __func__);
- gpio_set_value(MDM2_PWR_ON, 1);
-}
-
-static void baseband2_reset(void)
-{
- /* Initiate power cycle on baseband sub system */
- pr_info("%s\n", __func__);
- gpio_set_value(MDM2_RST, 0);
- mdelay(200);
- gpio_set_value(MDM2_RST, 1);
-}
-
-static int baseband2_init(void)
-{
- int ret;
-
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_GPIO_X1_AUD, TEGRA_TRI_NORMAL);
-
- ret = gpio_request_array(modem2_gpios, ARRAY_SIZE(modem2_gpios));
- if (ret)
- return ret;
-
- /* enable pull-down for MDM2_COLD_BOOT */
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_KB_ROW4,
- TEGRA_PUPD_PULL_DOWN);
-
- /* export GPIO for user space access through sysfs */
- gpio_export(MDM2_RST, false);
-
- return 0;
-}
-
-static const struct tegra_modem_operations baseband2_operations = {
- .init = baseband2_init,
- .start = baseband2_start,
- .reset = baseband2_reset,
-};
-
-static struct tegra_usb_modem_power_platform_data baseband2_pdata = {
- .ops = &baseband2_operations,
- .wake_gpio = -1,
- .boot_gpio = MDM2_COLDBOOT,
- .boot_irq_flags = IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
- .autosuspend_delay = 2000,
- .short_autosuspend_delay = 50,
- .tegra_ehci_device = &tegra_ehci3_device,
- .tegra_ehci_pdata = &tegra_ehci3_hsic_baseband2_pdata,
-};
-
-static struct platform_device icera_baseband2_device = {
- .name = "tegra_usb_modem_power",
- .id = -1,
- .dev = {
- .platform_data = &baseband2_pdata,
- },
-};
-
-static struct baseband_power_platform_data tegra_baseband_xmm_power_data = {
- .baseband_type = BASEBAND_XMM,
- .modem = {
- .xmm = {
- .bb_rst = XMM_GPIO_BB_RST,
- .bb_on = XMM_GPIO_BB_ON,
- .ipc_bb_wake = XMM_GPIO_IPC_BB_WAKE,
- .ipc_ap_wake = XMM_GPIO_IPC_AP_WAKE,
- .ipc_hsic_active = XMM_GPIO_IPC_HSIC_ACTIVE,
- .ipc_hsic_sus_req = XMM_GPIO_IPC_HSIC_SUS_REQ,
- },
- },
-};
-
-static struct platform_device tegra_baseband_xmm_power_device = {
- .name = "baseband_xmm_power",
- .id = -1,
- .dev = {
- .platform_data = &tegra_baseband_xmm_power_data,
- },
-};
-
-static struct platform_device tegra_baseband_xmm_power2_device = {
- .name = "baseband_xmm_power2",
- .id = -1,
- .dev = {
- .platform_data = &tegra_baseband_xmm_power_data,
- },
-};
-
-static void pluto_usb_init(void)
-{
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
-
- if (!(usb_port_owner_info & UTMI1_PORT_OWNER_XUSB)) {
- tegra_otg_pdata.is_xhci = false;
- tegra_udc_pdata.u_data.dev.is_xhci = false;
- } else {
- tegra_otg_pdata.is_xhci = true;
- tegra_udc_pdata.u_data.dev.is_xhci = true;
- }
- tegra_otg_device.dev.platform_data = &tegra_otg_pdata;
- platform_device_register(&tegra_otg_device);
-
- /* Setup the udc platform data */
- tegra_udc_device.dev.platform_data = &tegra_udc_pdata;
-}
-
-static void pluto_modem_init(void)
-{
- int modem_id = tegra_get_modem_id();
- struct board_info board_info;
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
-
- tegra_get_board_info(&board_info);
- pr_info("%s: modem_id = %d\n", __func__, modem_id);
-
- switch (modem_id) {
- case TEGRA_BB_I500: /* on board i500 HSIC */
- if (!(usb_port_owner_info & HSIC1_PORT_OWNER_XUSB))
- platform_device_register(&icera_baseband_device);
- break;
- case TEGRA_BB_I500SWD: /* i500 SWD HSIC */
- if (!(usb_port_owner_info & HSIC2_PORT_OWNER_XUSB))
- platform_device_register(&icera_baseband2_device);
- break;
- case TEGRA_BB_OEM1: /* OEM1 HSIC */
- if ((board_info.board_id == BOARD_E1575) ||
- ((board_info.board_id == BOARD_E1580) &&
- (board_info.fab >= BOARD_FAB_A03))) {
- tegra_pinmux_set_tristate(TEGRA_PINGROUP_GPIO_X1_AUD,
- TEGRA_TRI_NORMAL);
- bb_gpio_oem1.oem1.pwron = BB_OEM1_GPIO_ON_V;
- }
- if (!(usb_port_owner_info & HSIC2_PORT_OWNER_XUSB)) {
- tegra_hsic_pdata.ops = &oem1_hsic_pops;
- tegra_ehci3_device.dev.platform_data
- = &tegra_hsic_pdata;
- platform_device_register(&tegra_bb_oem1);
- }
- break;
- case TEGRA_BB_OEM2: /* XMM6260/XMM6360 HSIC */
- /* fix wrong wiring in Pluto A02 */
- if ((board_info.board_id == BOARD_E1580) &&
- (board_info.fab == BOARD_FAB_A02)) {
- pr_info(
-"%s: Pluto A02: replace MDM2_PWR_ON with MDM2_PWR_ON_FOR_PLUTO_A02\n",
- __func__);
- if (tegra_baseband_xmm_power_data.modem.xmm.bb_on
- != MDM2_PWR_ON)
- pr_err(
-"%s: expected MDM2_PWR_ON default gpio for XMM bb_on\n",
- __func__);
- tegra_baseband_xmm_power_data.modem.xmm.bb_on
- = MDM2_PWR_ON_FOR_PLUTO_A02;
- }
- /* baseband-power.ko will register ehci3 device */
- tegra_hsic_pdata.ops = &oem2_plat_ops;
- tegra_hsic_pdata.u_data.host.remote_wakeup_supported = false;
- tegra_hsic_pdata.u_data.host.power_off_on_suspend = false;
- tegra_ehci3_device.dev.platform_data =
- &tegra_hsic_pdata;
- tegra_baseband_xmm_power_data.hsic_register =
- &tegra_usb_hsic_host_register;
- tegra_baseband_xmm_power_data.hsic_unregister =
- &tegra_usb_hsic_host_unregister;
- tegra_baseband_xmm_power_data.ehci_device =
- &tegra_ehci3_device;
- platform_device_register(&tegra_baseband_xmm_power_device);
- platform_device_register(&tegra_baseband_xmm_power2_device);
- /* override audio settings - use 8kHz */
- pluto_audio_pdata.i2s_param[BASEBAND].audio_port_id
- = pluto_aic3262_pdata.i2s_param[BASEBAND].audio_port_id
- = 2;
- pluto_audio_pdata.i2s_param[BASEBAND].is_i2s_master
- = pluto_aic3262_pdata.i2s_param[BASEBAND].is_i2s_master
- = 1;
- pluto_audio_pdata.i2s_param[BASEBAND].i2s_mode
- = pluto_aic3262_pdata.i2s_param[BASEBAND].i2s_mode
- = TEGRA_DAIFMT_I2S;
- pluto_audio_pdata.i2s_param[BASEBAND].sample_size
- = pluto_aic3262_pdata.i2s_param[BASEBAND].sample_size
- = 16;
- pluto_audio_pdata.i2s_param[BASEBAND].rate
- = pluto_aic3262_pdata.i2s_param[BASEBAND].rate
- = 8000;
- pluto_audio_pdata.i2s_param[BASEBAND].channels
- = pluto_aic3262_pdata.i2s_param[BASEBAND].channels
- = 2;
- break;
- case TEGRA_BB_HSIC_HUB: /* HSIC hub */
- if (!(usb_port_owner_info & HSIC2_PORT_OWNER_XUSB)) {
- tegra_ehci3_device.dev.platform_data =
- &tegra_ehci3_hsic_smsc_hub_pdata;
- platform_device_register(&tegra_ehci3_device);
- }
- break;
- default:
- return;
- }
-}
-
-static struct tegra_xusb_platform_data xusb_pdata = {
- .portmap = TEGRA_XUSB_SS_P0 | TEGRA_XUSB_USB2_P0,
-};
-
-static void pluto_xusb_init(void)
-{
- int usb_port_owner_info = tegra_get_usb_port_owner_info();
-
- if (!(usb_port_owner_info & UTMI1_PORT_OWNER_XUSB))
- xusb_pdata.portmap &= ~(TEGRA_XUSB_USB2_P0 |
- TEGRA_XUSB_SS_P0);
-}
-#else
-static void pluto_usb_init(void) { }
-static void pluto_modem_init(void) { }
-static void pluto_xusb_init(void) { }
-#endif
-
-static void pluto_audio_init(void)
-{
- struct board_info board_info;
-
- tegra_get_board_info(&board_info);
-
- spi_register_board_info(aic326x_spi_board_info,
- ARRAY_SIZE(aic326x_spi_board_info));
-}
-
-static __initdata struct tegra_clk_init_table touch_clk_init_table[] = {
- /* name parent rate enabled */
- { "extern2", "pll_p", 41000000, false},
- { "clk_out_2", "extern2", 40800000, false},
- { NULL, NULL, 0, 0},
-};
-
-struct rm_spi_ts_platform_data rm31080ts_pluto_data = {
- .gpio_reset = TOUCH_GPIO_RST_RAYDIUM_SPI,
- .config = 0,
- .platform_id = RM_PLATFORM_P005,
- .name_of_clock = "clk_out_2",
- .name_of_clock_con = "extern2",
-};
-
-static struct tegra_spi_device_controller_data dev_cdata = {
- .rx_clk_tap_delay = 0,
- .tx_clk_tap_delay = 0,
-};
-
-struct spi_board_info rm31080a_pluto_spi_board[1] = {
- {
- .modalias = "rm_ts_spidev",
- .bus_num = 3,
- .chip_select = 2,
- .max_speed_hz = 12 * 1000 * 1000,
- .mode = SPI_MODE_0,
- .controller_data = &dev_cdata,
- .platform_data = &rm31080ts_pluto_data,
- },
-};
-
-static struct synaptics_gpio_data synaptics_gpio_pluto_data = {
- .attn_gpio = SYNAPTICS_ATTN_GPIO,
- .attn_polarity = RMI_ATTN_ACTIVE_LOW,
- .reset_gpio = SYNAPTICS_RESET_GPIO,
-};
-
-static struct rmi_device_platform_data synaptics_pluto_platformdata = {
- .sensor_name = "TM9999",
- .attn_gpio = SYNAPTICS_ATTN_GPIO,
- .attn_polarity = RMI_ATTN_ACTIVE_LOW,
- .gpio_data = &synaptics_gpio_pluto_data,
- .gpio_config = synaptics_touchpad_gpio_setup,
- .spi_data = {
- .block_delay_us = 100,
- .read_delay_us = 100,
- .write_delay_us = 20,
- },
- .power_management = {
- .nosleep = RMI_F01_NOSLEEP_OFF,
- },
- .f19_button_map = &synaptics_button_map,
- .f54_direct_touch_report_size = 944,
-};
-
-static struct spi_board_info synaptics_9999_spi_board_pluto[] = {
- {
- .modalias = "rmi_spi",
- .bus_num = 3,
- .chip_select = 2,
- .max_speed_hz = 8*1000*1000,
- .mode = SPI_MODE_3,
- .platform_data = &synaptics_pluto_platformdata,
- },
-};
-
-static int __init pluto_touch_init(void)
-{
- tegra_clk_init_from_table(touch_clk_init_table);
- if (tegra_get_touch_vendor_id() == RAYDIUM_TOUCH) {
- pr_info("%s: initializing raydium\n", __func__);
- rm31080a_pluto_spi_board[0].irq =
- gpio_to_irq(TOUCH_GPIO_IRQ_RAYDIUM_SPI);
- touch_init_raydium(TOUCH_GPIO_IRQ_RAYDIUM_SPI,
- TOUCH_GPIO_RST_RAYDIUM_SPI,
- &rm31080ts_pluto_data,
- &rm31080a_pluto_spi_board[0],
- ARRAY_SIZE(rm31080a_pluto_spi_board));
- } else {
- pr_info("%s: initializing synaptics\n", __func__);
- touch_init_synaptics(synaptics_9999_spi_board_pluto,
- ARRAY_SIZE(synaptics_9999_spi_board_pluto));
- }
- return 0;
-}
-
-#ifdef CONFIG_USE_OF
-struct of_dev_auxdata pluto_auxdata_lookup[] __initdata = {
- OF_DEV_AUXDATA("nvidia,tegra114-apbdma", 0x6000a000, "tegra-apbdma",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-sdhci", 0x78000600, "sdhci-tegra.3",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-sdhci", 0x78000400, "sdhci-tegra.2",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-sdhci", 0x78000000, "sdhci-tegra.0",
- &pluto_tegra_sdhci_platform_data0),
- OF_DEV_AUXDATA("nvidia,tegra114-camera", 0x0, "tegra_camera",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-host1x", TEGRA_HOST1X_BASE, "host1x",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr3d", TEGRA_GR3D_BASE, "gr3d",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr2d", TEGRA_GR2D_BASE, "gr2d",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-msenc", TEGRA_MSENC_BASE, "msenc",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-vi", TEGRA_VI_BASE, "vi",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-isp", TEGRA_ISP_BASE, "isp",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-tsec", TEGRA_TSEC_BASE, "tsec",
- NULL),
- T114_I2C_OF_DEV_AUXDATA,
- T114_SPI_OF_DEV_AUXDATA,
- OF_DEV_AUXDATA("nvidia,tegra114-kbc", 0x7000e200, "tegra-kbc",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-hsuart", 0x70006000, "serial-tegra.0",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-hsuart", 0x70006040, "serial-tegra.1",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-hsuart", 0x70006200, "serial-tegra.2",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-xhci", 0x70090000, "tegra-xhci",
- &xusb_pdata),
- OF_DEV_AUXDATA("nvidia,tegra114-nvavp", 0x60001000, "nvavp",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-pwm", 0x7000a000, "tegra-pwm", NULL),
- {}
-};
-#endif
-
-static struct tegra_dtv_platform_data pluto_dtv_pdata = {
- .dma_req_selector = 11,
-};
-
-static void __init pluto_dtv_init(void)
-{
- tegra_dtv_device.dev.platform_data = &pluto_dtv_pdata;
- platform_device_register(&tegra_dtv_device);
-}
-
-static void __init tegra_pluto_early_init(void)
-{
- tegra_clk_init_from_table(pluto_clk_init_table);
- tegra_clk_verify_parents();
- tegra_soc_device_init("tegra_pluto");
-}
-
-static void __init tegra_pluto_late_init(void)
-{
- pluto_i2c_init();
- pluto_usb_init();
- pluto_xusb_init();
- pluto_uart_init();
- pluto_audio_init();
- platform_add_devices(pluto_devices, ARRAY_SIZE(pluto_devices));
- tegra_io_dpd_init();
- pluto_sdhci_init();
- pluto_regulator_init();
- pluto_dtv_init();
- pluto_suspend_init();
- pluto_touch_init();
- pluto_emc_init();
- pluto_edp_init();
- isomgr_init();
- pluto_panel_init();
- pluto_kbc_init();
-#ifdef CONFIG_BT_BLUESLEEP
- pluto_setup_bluesleep();
- pluto_setup_bt_rfkill();
-#elif defined CONFIG_BLUEDROID_PM
- pluto_setup_bluedroid_pm();
-#endif
- pluto_modem_init();
-#ifdef CONFIG_TEGRA_WDT_RECOVERY
- tegra_wdt_recovery_init();
-#endif
- pluto_sensors_init();
- tegra_serial_debug_init(TEGRA_UARTD_BASE, INT_WDT_CPU, NULL, -1, -1);
- pluto_soctherm_init();
- tegra_register_fuse();
-}
-
-
-static void __init tegra_pluto_dt_init(void)
-{
- tegra_pluto_early_init();
-
- of_platform_populate(NULL,
- of_default_bus_match_table, pluto_auxdata_lookup,
- &platform_bus);
-
- tegra_pluto_late_init();
-}
-
-static void __init tegra_pluto_reserve(void)
-{
-#if defined(CONFIG_NVMAP_CONVERT_CARVEOUT_TO_IOVMM)
- /* for PANEL_5_SHARP_1080p: 1920*1080*4*2 = 16588800 bytes */
- tegra_reserve(0, SZ_16M, SZ_4M);
-#else
- tegra_reserve(SZ_128M, SZ_16M, SZ_4M);
-#endif
-}
-
-static const char * const pluto_dt_board_compat[] = {
- "nvidia,pluto",
- NULL
-};
-
-MACHINE_START(TEGRA_PLUTO, "tegra_pluto")
- .atag_offset = 0x100,
- .smp = smp_ops(tegra_smp_ops),
- .map_io = tegra_map_common_io,
- .reserve = tegra_pluto_reserve,
- .init_early = tegra11x_init_early,
- .init_irq = irqchip_init,
- .init_time = clocksource_of_init,
- .init_machine = tegra_pluto_dt_init,
- .restart = tegra_assert_system_reset,
- .dt_compat = pluto_dt_board_compat,
- .init_late = tegra_init_late
-MACHINE_END
diff --git a/arch/arm/mach-tegra/board-pluto.h b/arch/arm/mach-tegra/board-pluto.h
deleted file mode 100644
index 8ff87b372b62..000000000000
--- a/arch/arm/mach-tegra/board-pluto.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-pluto.h
- *
- * Copyright (c) 2012, NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _MACH_TEGRA_BOARD_PLUTO_H
-#define _MACH_TEGRA_BOARD_PLUTO_H
-
-#include <mach/gpio-tegra.h>
-#include <mach/irqs.h>
-#include <linux/mfd/palmas.h>
-#include <linux/mfd/max77665.h>
-#include "gpio-names.h"
-#include <linux/thermal.h>
-#include <linux/platform_data/thermal_sensors.h>
-#include "tegra11_soctherm.h"
-
-/* External peripheral act as gpio */
-/* PALMAS GPIO */
-#define PALMAS_TEGRA_GPIO_BASE TEGRA_NR_GPIOS
-
-/* Audio-related GPIOs */
-#define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PW3
-#define TEGRA_GPIO_LDO1_EN TEGRA_GPIO_PV3
-#define TEGRA_GPIO_SPKR_EN TEGRA_GPIO_PN4
-#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PR7
-#define TEGRA_GPIO_INT_MIC_EN -1
-#define TEGRA_GPIO_EXT_MIC_EN -1
-
-#define TEGRA_SOC_OC_IRQ_BASE TEGRA_NR_IRQS
-#define TEGRA_SOC_OC_NUM_IRQ TEGRA_SOC_OC_IRQ_MAX
-
-/* External peripheral act as interrupt controller */
-/* PLUTO IRQs */
-#define PALMAS_TEGRA_IRQ_BASE (TEGRA_SOC_OC_IRQ_BASE + TEGRA_SOC_OC_NUM_IRQ)
-#define MAX77665_TEGRA_IRQ_BASE (PALMAS_TEGRA_IRQ_BASE + PALMAS_NUM_IRQ)
-
-/* AIC326X IRQs */
-/* Assuming TPS is the PMIC on Ent */
-#define AIC3262_CODEC_IRQ_BASE (MAX77665_TEGRA_IRQ_BASE + MAX77665_NUM_IRQ)
-#define AIC3262_CODEC_IRQ_END (AIC3262_CODEC_IRQ_BASE + 6)
-
-/* I2C related GPIOs */
-#define TEGRA_GPIO_I2C1_SCL TEGRA_GPIO_PC4
-#define TEGRA_GPIO_I2C1_SDA TEGRA_GPIO_PC5
-#define TEGRA_GPIO_I2C2_SCL TEGRA_GPIO_PT5
-#define TEGRA_GPIO_I2C2_SDA TEGRA_GPIO_PT6
-#define TEGRA_GPIO_I2C3_SCL TEGRA_GPIO_PBB1
-#define TEGRA_GPIO_I2C3_SDA TEGRA_GPIO_PBB2
-#define TEGRA_GPIO_I2C4_SCL TEGRA_GPIO_PV4
-#define TEGRA_GPIO_I2C4_SDA TEGRA_GPIO_PV5
-#define TEGRA_GPIO_I2C5_SCL TEGRA_GPIO_PZ6
-#define TEGRA_GPIO_I2C5_SDA TEGRA_GPIO_PZ7
-
-/* Camera related GPIOs */
-#define CAM_RSTN TEGRA_GPIO_PBB3
-#define CAM_FLASH_STROBE TEGRA_GPIO_PBB4
-#define CAM1_POWER_DWN_GPIO TEGRA_GPIO_PBB5
-#define CAM2_POWER_DWN_GPIO TEGRA_GPIO_PBB6
-#define CAM_AF_PWDN TEGRA_GPIO_PBB7
-#define CAM_GPIO1 TEGRA_GPIO_PCC1
-#define CAM_GPIO2 TEGRA_GPIO_PCC2
-
-/* Touchscreen definitions */
-#define SYNAPTICS_ATTN_GPIO TEGRA_GPIO_PK2
-#define SYNAPTICS_RESET_GPIO TEGRA_GPIO_PK4
-
-#define TOUCH_GPIO_IRQ_RAYDIUM_SPI TEGRA_GPIO_PK2
-#define TOUCH_GPIO_RST_RAYDIUM_SPI TEGRA_GPIO_PK4
-
-/* Invensense MPU Definitions */
-#define MPU_GYRO_NAME "mpu6050"
-#define MPU_GYRO_IRQ_GPIO TEGRA_GPIO_PO7
-#define MPU_GYRO_ADDR 0x69
-#define MPU_GYRO_BUS_NUM 0
-#define MPU_GYRO_ORIENTATION { -1, 0, 0, 0, -1, 0, 0, 0, 1 }
-#define MPU_COMPASS_NAME "ak8975"
-#define MPU_COMPASS_IRQ_GPIO 0
-#define MPU_COMPASS_ADDR 0x0D
-#define MPU_COMPASS_BUS_NUM 0
-#define MPU_COMPASS_ORIENTATION { -1, 0, 0, 0, -1, 0, 0, 0, 1 }
-
-/* Modem1 related GPIOs */
-#define MDM_RST TEGRA_GPIO_PR3
-#define MDM_COLDBOOT TEGRA_GPIO_PO5
-
-/* Modem2 related GPIOs */
-#define MDM2_PWR_ON TEGRA_GPIO_PX1
-#define MDM2_RST TEGRA_GPIO_PR5
-#define MDM2_COLDBOOT TEGRA_GPIO_PR4
-#define MDM2_REQ1 TEGRA_GPIO_PV0
-#define MDM2_ACK1 TEGRA_GPIO_PO2
-#define MDM2_REQ2 TEGRA_GPIO_PV1
-#define MDM2_ACK2 TEGRA_GPIO_PO3
-
-/* Modem2 related GPIOs (for Pluto Rev A02 only) */
-#define MDM2_PWR_ON_FOR_PLUTO_A02 TEGRA_GPIO_PR6
- /* If Pluto A03 or later, use PX1 */
-
-/* OEM1 Modem related GPIOs */
-
-#define BB_OEM1_GPIO_RST TEGRA_GPIO_PR5
-#define BB_OEM1_GPIO_ON TEGRA_GPIO_PR6
-#define BB_OEM1_GPIO_ON_V TEGRA_GPIO_PX1
-#define BB_OEM1_GPIO_AWR TEGRA_GPIO_PG2
-#define BB_OEM1_GPIO_CWR TEGRA_GPIO_PV1
-#define BB_OEM1_GPIO_SPARE TEGRA_GPIO_PO2
-#define BB_OEM1_GPIO_WDI TEGRA_GPIO_PV0
-
-/* OEM2 Modem related GPIOs */
-
-#define XMM_GPIO_BB_ON MDM2_PWR_ON /* AP -> BB */
- /* E1193 Rev B7: pin 55 = MDM_PWRON_AP2BB */
-#define XMM_GPIO_BB_RST MDM2_RST /* AP -> BB */
- /* E1193 Rev B7: pin 53 = RESET_AP2BB* */
-#define XMM_GPIO_IPC_HSIC_ACTIVE MDM2_ACK2 /* AP -> BB */
- /* E1193 Rev B7: pin 46 = HS2_AP2BB */
-#define XMM_GPIO_IPC_HSIC_SUS_REQ MDM2_REQ2 /* BB -> AP */
- /* E1193 Rev B7: pin 41 = HS2_BB2AP */
-#define XMM_GPIO_IPC_BB_WAKE MDM2_ACK1 /* AP -> BB */
- /* E1193 Rev B7: pin 45 = HS1_AP2BB */
-#define XMM_GPIO_IPC_AP_WAKE MDM2_REQ1 /* BB -> AP */
- /* E1193 Rev B7: pin 43 = HS1_BB2AP */
-
-int pluto_regulator_init(void);
-int pluto_suspend_init(void);
-int pluto_sdhci_init(void);
-int pluto_sensors_init(void);
-int pluto_emc_init(void);
-int pluto_edp_init(void);
-int pluto_panel_init(void);
-int pluto_kbc_init(void);
-int pluto_baseband_init(void);
-int pluto_soctherm_init(void);
-
-extern struct tegra_sdhci_platform_data pluto_tegra_sdhci_platform_data0;
-
-/* Baseband IDs */
-enum tegra_bb_type {
- TEGRA_BB_I500 = 1,
- TEGRA_BB_I500SWD,
- TEGRA_BB_OEM1,
- TEGRA_BB_OEM2,
- TEGRA_BB_OEM3,
- TEGRA_BB_HSIC_HUB,
-};
-
-#define UTMI1_PORT_OWNER_XUSB 0x1
-#define HSIC1_PORT_OWNER_XUSB 0x4
-#define HSIC2_PORT_OWNER_XUSB 0x8
-
-#endif
diff --git a/arch/arm/mach-tegra/board-roth-fan.c b/arch/arm/mach-tegra/board-roth-fan.c
deleted file mode 100644
index 6d8fe46f4211..000000000000
--- a/arch/arm/mach-tegra/board-roth-fan.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-roth-fan.c
- *
- * Copyright (c) 2012-2013 NVIDIA CORPORATION, All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/gpio.h>
-#include <linux/platform_data/pwm_fan.h>
-#include <linux/platform_device.h>
-
-#include <mach/gpio-tegra.h>
-
-#include "gpio-names.h"
-#include "devices.h"
-#include "board.h"
-#include "board-common.h"
-#include "board-roth.h"
-#include "tegra-board-id.h"
-
-static struct pwm_fan_platform_data fan_data_yltc_8k = {
- .active_steps = MAX_ACTIVE_STATES,
- .active_rpm = {
- 0, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 11000},
- .active_pwm = {0, 158*1024, 227*1024 , 230*1024, 235*1024, 240*1024,
- 245*1024, 250*1024, 252*1024, 255*1024},
- .active_rru = {1024*50, 1024, 1024, 256, 256, 256, 256, 256, 256, 256},
- .active_rrd = {1024*50, 1024, 1024, 256, 256, 256, 256, 128, 128, 128},
- /*Lookup table to get the actual state cap*/
- .state_cap_lookup = {1, 1, 1, 1, 1, 1, 1, 2, 2, 2},
- .pwm_period = 256,
- .pwm_id = 0,
- .step_time = 100, /*msecs*/
- .state_cap = 1,
- .precision_multiplier = 1024,
- .tach_gpio = -1,
-};
-
-static struct pwm_fan_platform_data fan_data_delta_6k = {
- .active_steps = MAX_ACTIVE_STATES,
- .active_rpm = {
- 0, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 10000, 11000},
- .active_pwm = {0, 80*1024, 110*1024 , 150*1024, 235*1024, 240*1024,
- 245*1024, 250*1024, 252*1024, 255*1024},
- .active_rru = {1024*40, 1024*2, 1024, 256,
- 256, 256, 256, 256, 256, 256},
- .active_rrd = {1024*40, 1024*2, 1024, 256, 256,
- 256, 256, 128, 128, 128},
- .state_cap_lookup = {2, 2, 2, 2, 2, 2, 2, 3, 3, 3},
- .pwm_period = 256,
- .pwm_id = 0,
- .step_time = 100, /*msecs*/
- .state_cap = 2,
- .precision_multiplier = 1024,
- .tach_gpio = TEGRA_GPIO_PU2,
-};
-
-static struct platform_device pwm_fan_therm_cooling_device_yltc_8k = {
- .name = "pwm-fan",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &fan_data_yltc_8k,
- },
-};
-
-static struct platform_device pwm_fan_therm_cooling_device_delta_6k = {
- .name = "pwm-fan",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &fan_data_delta_6k,
- },
-};
-
-int __init roth_fan_init(void)
-{
- int err;
- struct board_info board_info;
-
- tegra_get_board_info(&board_info);
-
- err = gpio_request(TEGRA_GPIO_PU3, "pwm-fan");
- if (err < 0) {
- pr_err("FAN:gpio request failed\n");
- return err;
- }
- gpio_free(TEGRA_GPIO_PU3);
-
- if (board_info.board_id == BOARD_P2560) {
- platform_device_register(
- &pwm_fan_therm_cooling_device_delta_6k);
- pr_info("FAN:registering for P2560\n");
- } else {
- platform_device_register(&pwm_fan_therm_cooling_device_yltc_8k);
- pr_info("FAN:registering for P2454\n");
- }
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-roth-kbc.c b/arch/arm/mach-tegra/board-roth-kbc.c
deleted file mode 100644
index a563b66d047b..000000000000
--- a/arch/arm/mach-tegra/board-roth-kbc.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-roth-kbc.c
- * Keys configuration for Nvidia tegra3 roth platform.
- *
- * Copyright (C) 2012 NVIDIA, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307, USA
- */
-
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/input.h>
-#include <linux/io.h>
-#include <linux/gpio.h>
-#include <linux/gpio_keys.h>
-#include <linux/mfd/palmas.h>
-
-#include "tegra-board-id.h"
-#include "board.h"
-#include "board-roth.h"
-#include "devices.h"
-#include "iomap.h"
-#include "wakeups-t11x.h"
-
-#define GPIO_KEY(_id, _gpio, _iswake) \
- { \
- .code = _id, \
- .gpio = TEGRA_GPIO_##_gpio, \
- .active_low = 1, \
- .desc = #_id, \
- .type = EV_KEY, \
- .wakeup = _iswake, \
- .debounce_interval = 10, \
- }
-
-#define GPIO_IKEY(_id, _irq, _iswake, _deb) \
- { \
- .code = _id, \
- .gpio = -1, \
- .irq = _irq, \
- .desc = #_id, \
- .type = EV_KEY, \
- .wakeup = _iswake, \
- .debounce_interval = _deb, \
- }
-
-static struct gpio_keys_button roth_gpio_keys[] = {
- [0] = GPIO_KEY(KEY_POWER, PQ0, 1),
- [1] = GPIO_KEY(KEY_BACK, PR2, 0),
- [2] = GPIO_KEY(KEY_HOME, PR1, 0),
- [3] = {
- .code = KEY_WAKEUP,
- .gpio = TEGRA_GPIO_PI5,
- .irq = -1,
- .type = EV_KEY,
- .desc = "Controller",
- .active_low = 0,
- .wakeup = 1,
- .debounce_interval = 10,
- },
- [4] = {
- .code = SW_LID,
- .gpio = TEGRA_GPIO_HALL,
- .irq = -1,
- .type = EV_SW,
- .desc = "Hall Effect Sensor",
- .active_low = 1,
- .wakeup = 1,
- .debounce_interval = 100,
- },
-};
-
-static int roth_wakeup_key(void)
-{
- int wakeup_key;
- u64 status = readl(IO_ADDRESS(TEGRA_PMC_BASE) + PMC_WAKE_STATUS)
- | (u64)readl(IO_ADDRESS(TEGRA_PMC_BASE)
- + PMC_WAKE2_STATUS) << 32;
-
- if (status & (1ULL << TEGRA_WAKE_GPIO_PQ0))
- wakeup_key = KEY_POWER;
- else if (status & (1ULL << TEGRA_WAKE_GPIO_PI5))
- wakeup_key = KEY_WAKEUP;
- else if (status & (1ULL << TEGRA_WAKE_GPIO_PS0))
- wakeup_key = SW_LID;
- else
- wakeup_key = -1;
-
- return wakeup_key;
-}
-
-static struct gpio_keys_platform_data roth_gpio_keys_pdata = {
- .buttons = roth_gpio_keys,
- .nbuttons = ARRAY_SIZE(roth_gpio_keys),
- .wakeup_key = roth_wakeup_key,
-};
-
-static struct platform_device roth_gpio_keys_device = {
- .name = "gpio-keys",
- .id = 0,
- .dev = {
- .platform_data = &roth_gpio_keys_pdata,
- },
-};
-
-int __init roth_kbc_init(void)
-{
- platform_device_register(&roth_gpio_keys_device);
- return 0;
-}
-
diff --git a/arch/arm/mach-tegra/board-roth-leds.c b/arch/arm/mach-tegra/board-roth-leds.c
deleted file mode 100644
index 68d2b180038b..000000000000
--- a/arch/arm/mach-tegra/board-roth-leds.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-roth-leds.c
- *
- * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/leds.h>
-#include <linux/leds_pwm.h>
-#include <linux/pwm.h>
-#include <mach/gpio-tegra.h>
-#include <mach/pinmux.h>
-#include <mach/pinmux-t11.h>
-
-#include "gpio-names.h"
-#include "devices.h"
-#include "board.h"
-#include "board-common.h"
-#include "board-roth.h"
-#include "tegra-board-id.h"
-
-#define LED_ENABLE_GPIO TEGRA_GPIO_PU1
-
-#ifdef CONFIG_LEDS_PWM
-
-static struct led_pwm roth_led_info[] = {
- {
- .name = "roth-led",
- .default_trigger = "none",
- .pwm_id = 2,
- .active_low = 0,
- .max_brightness = 255,
- .pwm_period_ns = 10000000,
- },
-};
-
-static struct led_pwm_platform_data roth_leds_pdata = {
- .leds = roth_led_info,
- .num_leds = ARRAY_SIZE(roth_led_info),
-};
-
-static struct platform_device roth_leds_pwm_device = {
- .name = "leds_pwm",
- .id = -1,
- .dev = {
- .platform_data = &roth_leds_pdata,
- },
-};
-
-
-#else
-static struct gpio_led roth_led_info[] = {
- {
- .name = "roth-led",
- .default_trigger = "none",
- .gpio = TEGRA_GPIO_PQ3,
- .active_low = 0,
- .retain_state_suspended = 0,
- .default_state = LEDS_GPIO_DEFSTATE_OFF,
- },
-};
-
-static struct gpio_led_platform_data roth_leds_pdata = {
- .leds = roth_led_info,
- .num_leds = ARRAY_SIZE(roth_led_info),
-};
-
-static struct platform_device roth_leds_gpio_device = {
- .name = "leds-gpio",
- .id = -1,
- .dev = {
- .platform_data = &roth_leds_pdata,
- },
-};
-#endif
-
-/*static struct platform_device *roth_led_device[] = {
- &tegra_pwfm2_device,
-};*/
-
-int __init roth_led_init(void)
-{
-#ifdef CONFIG_LEDS_PWM
- platform_device_register(&roth_leds_pwm_device);
-#else
- platform_device_register(&roth_leds_gpio_device);
-#endif
- gpio_request(LED_ENABLE_GPIO, "LED Trisate Buffer OE");
- gpio_direction_output(LED_ENABLE_GPIO, 1);
- gpio_export(LED_ENABLE_GPIO, false);
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-roth-memory.c b/arch/arm/mach-tegra/board-roth-memory.c
deleted file mode 100644
index 5256c4623461..000000000000
--- a/arch/arm/mach-tegra/board-roth-memory.c
+++ /dev/null
@@ -1,2597 +0,0 @@
-/*
- * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307, USA
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_data/tegra_emc_pdata.h>
-
-#include "board.h"
-#include "board-roth.h"
-
-#include "tegra11_emc.h"
-#include "devices.h"
-
-static struct tegra11_emc_table h5tc4g63afr_pba_table[] = {
- {
- 0x41, /* Rev 4.0.3 */
- 12750, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000003e, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000003, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x00000060, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000018, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000005, /* EMC_TXSR */
- 0x00000005, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000004, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000064, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00078000, /* EMC_DLL_XFORM_DQS4 */
- 0x00078000, /* EMC_DLL_XFORM_DQS5 */
- 0x00078000, /* EMC_DLL_XFORM_DQS6 */
- 0x00078000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03037504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000007, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x800001c5, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40040001, /* MC_EMEM_ARB_CFG */
- 0x8000003f, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x77e30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000000e, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7324000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 57820, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 20400, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000026, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000000, /* EMC_RC */
- 0x00000005, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000000, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x0000009a, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000026, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000007, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000006, /* EMC_TXSR */
- 0x00000006, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000004, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x000000a0, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00078000, /* EMC_DLL_XFORM_DQS4 */
- 0x00078000, /* EMC_DLL_XFORM_DQS5 */
- 0x00078000, /* EMC_DLL_XFORM_DQS6 */
- 0x00078000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03037504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x0000000b, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000023a, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x40020001, /* MC_EMEM_ARB_CFG */
- 0x80000046, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x76230303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000014, /* MC_PTSA_GRANT_DECREMENT */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7324000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 35610, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 40800, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000012, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000001, /* EMC_RC */
- 0x0000000a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000001, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x00000134, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000004d, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000008, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000000c, /* EMC_TXSR */
- 0x0000000c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000004, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000013f, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00078000, /* EMC_DLL_XFORM_DQS4 */
- 0x00078000, /* EMC_DLL_XFORM_DQS5 */
- 0x00078000, /* EMC_DLL_XFORM_DQS6 */
- 0x00078000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03037504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000015, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000370, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0xa0000001, /* MC_EMEM_ARB_CFG */
- 0x8000005b, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74a30303, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000002a, /* MC_PTSA_GRANT_DECREMENT */
- 0x00b000b0, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00b000c4, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00d700eb, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x000000eb, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00eb00eb, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00ff00eb, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000ff, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7324000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 20850, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 68000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x4000000a, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000003, /* EMC_RC */
- 0x00000011, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000002, /* EMC_RAS */
- 0x00000000, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000000, /* EMC_RD_RCD */
- 0x00000000, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x00000202, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000080, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000000f, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000013, /* EMC_TXSR */
- 0x00000013, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000004, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000213, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00078000, /* EMC_DLL_XFORM_DQS4 */
- 0x00078000, /* EMC_DLL_XFORM_DQS5 */
- 0x00078000, /* EMC_DLL_XFORM_DQS6 */
- 0x00078000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03037504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000022, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000050e, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x00000001, /* MC_EMEM_ARB_CFG */
- 0x80000076, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000001, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0402, /* MC_EMEM_ARB_DA_COVERS */
- 0x74230403, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000046, /* MC_PTSA_GRANT_DECREMENT */
- 0x00690069, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00690075, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0081008d, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000008d, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x008d008d, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00bc008d, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x000000bc, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00bc00bc, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7324000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 10720, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 102000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000006, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000004, /* EMC_RC */
- 0x0000001a, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000003, /* EMC_RAS */
- 0x00000001, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000001, /* EMC_RD_RCD */
- 0x00000001, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x00000303, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000000c0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000018, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x0000001c, /* EMC_TXSR */
- 0x0000001c, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000005, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x0000031c, /* EMC_TREFBW */
- 0x00000005, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00078000, /* EMC_DLL_XFORM_DQS4 */
- 0x00078000, /* EMC_DLL_XFORM_DQS5 */
- 0x00078000, /* EMC_DLL_XFORM_DQS6 */
- 0x00078000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03037504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000033, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00000000, /* EMC_ZCAL_INTERVAL */
- 0x00000042, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000713, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x08000001, /* MC_EMEM_ARB_CFG */
- 0x80000098, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000000, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000002, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0403, /* MC_EMEM_ARB_DA_COVERS */
- 0x73c30504, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00078000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS1 */
- 0x00078000, /* EMC_DLL_XFORM_DQS2 */
- 0x00078000, /* EMC_DLL_XFORM_DQS3 */
- 0x00078000, /* EMC_DLL_XFORM_DQ1 */
- 0x00078000, /* EMC_DLL_XFORM_DQ2 */
- 0x00078000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000068, /* MC_PTSA_GRANT_DECREMENT */
- 0x00460046, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0046004e, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0056005e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000005e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x005e005e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x007d005e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000007d, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x007d007d, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7324000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 6890, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 204000, /* SDRAM frequency */
- 900, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000009, /* EMC_RC */
- 0x00000035, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000006, /* EMC_RAS */
- 0x00000002, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x0000000a, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x0000000b, /* EMC_W2P */
- 0x00000002, /* EMC_RD_RCD */
- 0x00000002, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x00000607, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000181, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x00000002, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000032, /* EMC_AR2PDEN */
- 0x0000000f, /* EMC_RW2PDEN */
- 0x00000038, /* EMC_TXSR */
- 0x00000038, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000009, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000638, /* EMC_TREFBW */
- 0x00000006, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000aa88, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00064000, /* EMC_DLL_XFORM_DQS4 */
- 0x00064000, /* EMC_DLL_XFORM_DQS5 */
- 0x00064000, /* EMC_DLL_XFORM_DQS6 */
- 0x00064000, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000a11c, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03037504, /* EMC_XM2VTTGENPADCTRL */
- 0x0000003f, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000066, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT */
- 0x000f000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80000d22, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x01000003, /* MC_EMEM_ARB_CFG */
- 0x800000fe, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000004, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000008, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000001, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030102, /* MC_EMEM_ARB_DA_TURNS */
- 0x000a0404, /* MC_EMEM_ARB_DA_COVERS */
- 0x73840a05, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00064000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS1 */
- 0x00064000, /* EMC_DLL_XFORM_DQS2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000004, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00064000, /* EMC_DLL_XFORM_DQS0 */
- 0x00000009, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS1 */
- 0x00064000, /* EMC_DLL_XFORM_DQS2 */
- 0x00064000, /* EMC_DLL_XFORM_DQS3 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ1 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ2 */
- 0x0007c000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d0, /* MC_PTSA_GRANT_DECREMENT */
- 0x00230023, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00230027, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x002b002f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000002f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x002f002f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x003e002f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000003e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x003e003e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff00c8, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x7320000e, /* EMC_CFG */
- 0x80001221, /* Mode Register 0 */
- 0x80100003, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 3420, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 312000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000000d, /* EMC_RC */
- 0x00000050, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000009, /* EMC_RAS */
- 0x00000003, /* EMC_RP */
- 0x00000004, /* EMC_R2W */
- 0x00000008, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x00000009, /* EMC_W2P */
- 0x00000003, /* EMC_RD_RCD */
- 0x00000003, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x0000000f, /* EMC_RDV_MASK */
- 0x00000941, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x00000250, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000004d, /* EMC_AR2PDEN */
- 0x0000000e, /* EMC_RW2PDEN */
- 0x00000055, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x0000000d, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000982, /* EMC_TREFBW */
- 0x00000000, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x00005088, /* EMC_FBIO_CFG5 */
- 0x002c00a0, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03037504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x0000009c, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0171000f, /* EMC_MRS_WAIT_CNT */
- 0x0171000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000138d, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0b000004, /* MC_EMEM_ARB_CFG */
- 0x8000016a, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000006, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000007, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000003, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06030202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000b0607, /* MC_EMEM_ARB_DA_COVERS */
- 0x76e50f08, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00020000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000b, /* EMC_QSAFE */
- 0x00020000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000d, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00048000, /* EMC_DLL_XFORM_DQ1 */
- 0x00048000, /* EMC_DLL_XFORM_DQ2 */
- 0x00048000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000140, /* MC_PTSA_GRANT_DECREMENT */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00170019, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x001c001e, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000001e, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x001e001e, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0029001e, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000029, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00290029, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00ff0082, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00ff00ff, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x5300000e, /* EMC_CFG */
- 0x80000321, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200000, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 2680, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 408000, /* SDRAM frequency */
- 1000, /* min voltage */
- "pll_p", /* clock source id */
- 0x40000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000012, /* EMC_RC */
- 0x00000069, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000c, /* EMC_RAS */
- 0x00000004, /* EMC_RP */
- 0x00000005, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000c, /* EMC_W2P */
- 0x00000004, /* EMC_RD_RCD */
- 0x00000004, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000006, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000004, /* EMC_QRST */
- 0x00000010, /* EMC_RDV_MASK */
- 0x00000c2e, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000030b, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000008, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000066, /* EMC_AR2PDEN */
- 0x00000011, /* EMC_RW2PDEN */
- 0x0000006f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000011, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000c6f, /* EMC_TREFBW */
- 0x00000000, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x00005088, /* EMC_FBIO_CFG5 */
- 0x002c0080, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03037504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x000000cc, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0158000f, /* EMC_MRS_WAIT_CNT */
- 0x0158000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001941, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x02000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000009, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000008, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000004, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06040202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000e0709, /* MC_EMEM_ARB_DA_COVERS */
- 0x7547130a, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00020000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000006, /* EMC_QUSE */
- 0x00000005, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000e, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00030000, /* EMC_DLL_XFORM_DQ1 */
- 0x00030000, /* EMC_DLL_XFORM_DQ2 */
- 0x00030000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000d1, /* MC_PTSA_GRANT_DECREMENT */
- 0x00110011, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00110013, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00150017, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000017, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00170017, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001f0017, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001f, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001f001f, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00d30064, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00d300d3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53000006, /* EMC_CFG */
- 0x80000731, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 450000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x00000002, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000014, /* EMC_RC */
- 0x00000073, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000000e, /* EMC_RAS */
- 0x00000005, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000c, /* EMC_W2P */
- 0x00000005, /* EMC_RD_RCD */
- 0x00000005, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000004, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000007, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000005, /* EMC_QRST */
- 0x00000011, /* EMC_RDV_MASK */
- 0x00000d76, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x0000035d, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000001, /* EMC_PDEX2WR */
- 0x00000009, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000071, /* EMC_AR2PDEN */
- 0x00000011, /* EMC_RW2PDEN */
- 0x0000007a, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000012, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000004, /* EMC_TCLKSTABLE */
- 0x00000005, /* EMC_TCLKSTOP */
- 0x00000db6, /* EMC_TREFBW */
- 0x00000000, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x00005088, /* EMC_FBIO_CFG5 */
- 0x002c0080, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00030000, /* EMC_DLL_XFORM_DQS4 */
- 0x00030000, /* EMC_DLL_XFORM_DQS5 */
- 0x00030000, /* EMC_DLL_XFORM_DQS6 */
- 0x00030000, /* EMC_DLL_XFORM_DQS7 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0001013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x03037504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x000000e1, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x014d000f, /* EMC_MRS_WAIT_CNT */
- 0x014d000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80001bc0, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0c000006, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000b, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000008, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06050202, /* MC_EMEM_ARB_DA_TURNS */
- 0x000f080b, /* MC_EMEM_ARB_DA_COVERS */
- 0x74c7150c, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000006, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00020000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000f, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00034000, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00034000, /* EMC_DLL_XFORM_DQ1 */
- 0x00034000, /* EMC_DLL_XFORM_DQ2 */
- 0x00034000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000004, /* EMC_FBIO_CFG6 */
- 0x00000007, /* EMC_QUSE */
- 0x00000006, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x00030000, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00020000, /* EMC_DLL_XFORM_QUSE0 */
- 0x0000000f, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x00034000, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS1 */
- 0x00030000, /* EMC_DLL_XFORM_DQS2 */
- 0x00030000, /* EMC_DLL_XFORM_DQS3 */
- 0x00034000, /* EMC_DLL_XFORM_DQ1 */
- 0x00034000, /* EMC_DLL_XFORM_DQ2 */
- 0x00034000, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000000e6, /* MC_PTSA_GRANT_DECREMENT */
- 0x00100010, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00100011, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00130015, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000015, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00150015, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x001c0015, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000001c, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x001c001c, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00c0005a, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00c000c0, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53000006, /* EMC_CFG */
- 0x80000741, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1750, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 528000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000018, /* EMC_RC */
- 0x00000088, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000010, /* EMC_RAS */
- 0x00000006, /* EMC_RP */
- 0x00000006, /* EMC_R2W */
- 0x00000009, /* EMC_W2R */
- 0x00000002, /* EMC_R2P */
- 0x0000000d, /* EMC_W2P */
- 0x00000006, /* EMC_RD_RCD */
- 0x00000006, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x00000009, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000006, /* EMC_QRST */
- 0x00000012, /* EMC_RDV_MASK */
- 0x00000fd6, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000003f5, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000b, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x00000084, /* EMC_AR2PDEN */
- 0x00000012, /* EMC_RW2PDEN */
- 0x0000008f, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000004, /* EMC_TCKE */
- 0x00000004, /* EMC_TCKESR */
- 0x00000004, /* EMC_TPD */
- 0x00000016, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000005, /* EMC_TCLKSTABLE */
- 0x00000006, /* EMC_TCLKSTOP */
- 0x00001017, /* EMC_TREFBW */
- 0x00000000, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x00005088, /* EMC_FBIO_CFG5 */
- 0xf0120091, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000108, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x013a000f, /* EMC_MRS_WAIT_CNT */
- 0x013a000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80002062, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0f000007, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000007, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000a, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x00000009, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_W2R */
- 0x06050202, /* MC_EMEM_ARB_DA_TURNS */
- 0x0010090c, /* MC_EMEM_ARB_DA_COVERS */
- 0x7428180d, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000008, /* EMC_QUSE */
- 0x00000007, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000010, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000008, /* EMC_QUSE */
- 0x00000007, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00000000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000010, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000c, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00000000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000010e, /* MC_PTSA_GRANT_DECREMENT */
- 0x000d000d, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000d000f, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x00100012, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x00000012, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x00120012, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x00180012, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000018, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00180018, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x00a3004d, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00a300a3, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53000004, /* EMC_CFG */
- 0x80000941, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200008, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1440, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 624000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_c", /* clock source id */
- 0x24000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000001c, /* EMC_RC */
- 0x000000a1, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000014, /* EMC_RAS */
- 0x00000007, /* EMC_RP */
- 0x00000007, /* EMC_R2W */
- 0x0000000b, /* EMC_W2R */
- 0x00000003, /* EMC_R2P */
- 0x00000010, /* EMC_W2P */
- 0x00000007, /* EMC_RD_RCD */
- 0x00000007, /* EMC_WR_RCD */
- 0x00000002, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000005, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x0000000a, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000007, /* EMC_QRST */
- 0x00000014, /* EMC_RDV_MASK */
- 0x000012c3, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000004b0, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002, /* EMC_PDEX2WR */
- 0x0000000d, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x0000009c, /* EMC_AR2PDEN */
- 0x00000015, /* EMC_RW2PDEN */
- 0x000000a9, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000019, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000006, /* EMC_TCLKSTABLE */
- 0x00000007, /* EMC_TCLKSTOP */
- 0x00001304, /* EMC_TREFBW */
- 0x00000009, /* EMC_QUSE_EXTRA */
- 0x00000020, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x0000ba88, /* EMC_FBIO_CFG5 */
- 0xf00d0191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x00000138, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x0122000f, /* EMC_MRS_WAIT_CNT */
- 0x0122000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80002617, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x06000009, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RP */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_RC */
- 0x00000009, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000001, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000b, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000005, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000007, /* MC_EMEM_ARB_TIMING_W2R */
- 0x07050202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00130b0f, /* MC_EMEM_ARB_DA_COVERS */
- 0x736a1d10, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00020000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000001, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000001, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x00000009, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000004, /* EMC_EINPUT_DURATION */
- 0x0000000a, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000c, /* EMC_QSAFE */
- 0x00020000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000012, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000001, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000808, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000001, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ2 */
- 0x0000000b, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00020000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x0000013f, /* MC_PTSA_GRANT_DECREMENT */
- 0x000b000b, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000e000f, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000f, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000f000f, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0014000f, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000014, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00140014, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x008a0041, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x008a008a, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53000000, /* EMC_CFG */
- 0x80000b61, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200010, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1440, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 792000, /* SDRAM frequency */
- 1100, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x00000024, /* EMC_RC */
- 0x000000cc, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x00000019, /* EMC_RAS */
- 0x0000000a, /* EMC_RP */
- 0x00000008, /* EMC_R2W */
- 0x0000000d, /* EMC_W2R */
- 0x00000004, /* EMC_R2P */
- 0x00000013, /* EMC_W2P */
- 0x0000000a, /* EMC_RD_RCD */
- 0x0000000a, /* EMC_WR_RCD */
- 0x00000003, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000006, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x0000000b, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x00000008, /* EMC_QRST */
- 0x00000016, /* EMC_RDV_MASK */
- 0x000017e1, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000005f8, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000003, /* EMC_PDEX2WR */
- 0x00000011, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x000000c6, /* EMC_AR2PDEN */
- 0x00000018, /* EMC_RW2PDEN */
- 0x000000d6, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000005, /* EMC_TCKE */
- 0x00000005, /* EMC_TCKESR */
- 0x00000005, /* EMC_TPD */
- 0x00000020, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000007, /* EMC_TCLKSTABLE */
- 0x00000008, /* EMC_TCLKSTOP */
- 0x00001822, /* EMC_TREFBW */
- 0x00000000, /* EMC_QUSE_EXTRA */
- 0x80000000, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x00005088, /* EMC_FBIO_CFG5 */
- 0xf0070191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00000007, /* EMC_DLL_XFORM_DQS4 */
- 0x00000007, /* EMC_DLL_XFORM_DQS5 */
- 0x00000007, /* EMC_DLL_XFORM_DQS6 */
- 0x00000007, /* EMC_DLL_XFORM_DQS7 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x0000018c, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000100, /* EMC_ZCAL_WAIT_CNT */
- 0x00f8000f, /* EMC_MRS_WAIT_CNT */
- 0x00f8000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x80003012, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0e00000b, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000013, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_RAS */
- 0x0000000f, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000003, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000c, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000008, /* MC_EMEM_ARB_TIMING_W2R */
- 0x08060202, /* MC_EMEM_ARB_DA_TURNS */
- 0x00170e13, /* MC_EMEM_ARB_DA_COVERS */
- 0x734c2414, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000007, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00008000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000007, /* EMC_DLL_XFORM_DQS1 */
- 0x00000007, /* EMC_DLL_XFORM_DQS2 */
- 0x00000007, /* EMC_DLL_XFORM_DQS3 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000a, /* EMC_QUSE */
- 0x00000008, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000007, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00008000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000014, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00004000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00004000, /* EMC_DLL_XFORM_ADDR2 */
- 0x00000007, /* EMC_DLL_XFORM_DQS1 */
- 0x00000007, /* EMC_DLL_XFORM_DQS2 */
- 0x00000007, /* EMC_DLL_XFORM_DQS3 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00008000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000196, /* MC_PTSA_GRANT_DECREMENT */
- 0x00090009, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x0009000a, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x000b000c, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000c, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000c000c, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x0010000c, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x00000010, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x00100010, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x006d0033, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x006d006d, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x00000042, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53000000, /* EMC_CFG */
- 0x80000d71, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200418, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1200, /* expected dvfs latency (ns) */
- },
- {
- 0x41, /* Rev 4.0.3 */
- 900000, /* SDRAM frequency */
- 1200, /* min voltage */
- "pll_m", /* clock source id */
- 0x80000000, /* CLK_SOURCE_EMC */
- 99, /* number of burst_regs */
- 30, /* number of trim_regs (each channel) */
- 11, /* number of up_down_regs */
- {
- 0x0000002a, /* EMC_RC */
- 0x000000e8, /* EMC_RFC */
- 0x00000000, /* EMC_RFC_SLR */
- 0x0000001d, /* EMC_RAS */
- 0x0000000b, /* EMC_RP */
- 0x00000008, /* EMC_R2W */
- 0x0000000f, /* EMC_W2R */
- 0x00000005, /* EMC_R2P */
- 0x00000016, /* EMC_W2P */
- 0x0000000b, /* EMC_RD_RCD */
- 0x0000000b, /* EMC_WR_RCD */
- 0x00000004, /* EMC_RRD */
- 0x00000001, /* EMC_REXT */
- 0x00000000, /* EMC_WEXT */
- 0x00000007, /* EMC_WDV */
- 0x0000000f, /* EMC_WDV_MASK */
- 0x0000000d, /* EMC_IBDLY */
- 0x00010000, /* EMC_PUTERM_EXTRA */
- 0x00000000, /* EMC_CDB_CNTL_2 */
- 0x0000000a, /* EMC_QRST */
- 0x00000018, /* EMC_RDV_MASK */
- 0x00001b2c, /* EMC_REFRESH */
- 0x00000000, /* EMC_BURST_REFRESH_NUM */
- 0x000006cb, /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000004, /* EMC_PDEX2WR */
- 0x00000014, /* EMC_PDEX2RD */
- 0x00000001, /* EMC_PCHG2PDEN */
- 0x00000000, /* EMC_ACT2PDEN */
- 0x000000e0, /* EMC_AR2PDEN */
- 0x0000001b, /* EMC_RW2PDEN */
- 0x000000f3, /* EMC_TXSR */
- 0x00000200, /* EMC_TXSRDLL */
- 0x00000006, /* EMC_TCKE */
- 0x00000006, /* EMC_TCKESR */
- 0x00000006, /* EMC_TPD */
- 0x00000024, /* EMC_TFAW */
- 0x00000000, /* EMC_TRPAB */
- 0x00000008, /* EMC_TCLKSTABLE */
- 0x00000009, /* EMC_TCLKSTOP */
- 0x00001b6c, /* EMC_TREFBW */
- 0x00000000, /* EMC_QUSE_EXTRA */
- 0x80000000, /* EMC_ODT_WRITE */
- 0x00000000, /* EMC_ODT_READ */
- 0x00005088, /* EMC_FBIO_CFG5 */
- 0xf0040191, /* EMC_CFG_DIG_DLL */
- 0x00008000, /* EMC_CFG_DIG_DLL_PERIOD */
- 0x0000000a, /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS7 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE4 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE5 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE6 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS7 */
- 0x001112a0, /* EMC_XM2CMDPADCTRL */
- 0x00000000, /* EMC_XM2CMDPADCTRL4 */
- 0x0000013d, /* EMC_XM2DQSPADCTRL2 */
- 0x00000000, /* EMC_XM2DQPADCTRL2 */
- 0x77ffc085, /* EMC_XM2CLKPADCTRL */
- 0x81f1f108, /* EMC_XM2COMPPADCTRL */
- 0x07077504, /* EMC_XM2VTTGENPADCTRL */
- 0x00000000, /* EMC_XM2VTTGENPADCTRL2 */
- 0x0000003f, /* EMC_DSR_VTTGEN_DRV */
- 0x000001c2, /* EMC_TXDSRVTTGEN */
- 0x02000000, /* EMC_FBIO_SPARE */
- 0x00000802, /* EMC_CTT_TERM_CTRL */
- 0x00020000, /* EMC_ZCAL_INTERVAL */
- 0x00000120, /* EMC_ZCAL_WAIT_CNT */
- 0x00d6000f, /* EMC_MRS_WAIT_CNT */
- 0x00d6000f, /* EMC_MRS_WAIT_CNT2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG2 */
- 0x00000000, /* EMC_AUTO_CAL_CONFIG3 */
- 0x00000000, /* EMC_CTT */
- 0x00000000, /* EMC_CTT_DURATION */
- 0x8000367c, /* EMC_DYN_SELF_REF_CONTROL */
- 0x1f7df7df, /* EMC_CA_TRAINING_TIMING_CNTL1 */
- 0x0000001f, /* EMC_CA_TRAINING_TIMING_CNTL2 */
- 0x0800000d, /* MC_EMEM_ARB_CFG */
- 0x80000190, /* MC_EMEM_ARB_OUTSTANDING_REQ */
- 0x00000005, /* MC_EMEM_ARB_TIMING_RCD */
- 0x00000006, /* MC_EMEM_ARB_TIMING_RP */
- 0x00000015, /* MC_EMEM_ARB_TIMING_RC */
- 0x0000000e, /* MC_EMEM_ARB_TIMING_RAS */
- 0x00000011, /* MC_EMEM_ARB_TIMING_FAW */
- 0x00000002, /* MC_EMEM_ARB_TIMING_RRD */
- 0x00000004, /* MC_EMEM_ARB_TIMING_RAP2PRE */
- 0x0000000e, /* MC_EMEM_ARB_TIMING_WAP2PRE */
- 0x00000002, /* MC_EMEM_ARB_TIMING_R2R */
- 0x00000002, /* MC_EMEM_ARB_TIMING_W2W */
- 0x00000006, /* MC_EMEM_ARB_TIMING_R2W */
- 0x00000009, /* MC_EMEM_ARB_TIMING_W2R */
- 0x09060202, /* MC_EMEM_ARB_DA_TURNS */
- 0x001a1015, /* MC_EMEM_ARB_DA_COVERS */
- 0x734e2916, /* MC_EMEM_ARB_MISC0 */
- 0x001f0000, /* MC_EMEM_ARB_RING1_THROTTLE */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000c, /* EMC_QUSE */
- 0x0000000a, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000009, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00018000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000016, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ0 */
- 0xa0f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x00000000, /* EMC_CDB_CNTL_1 */
- 0x00000006, /* EMC_FBIO_CFG6 */
- 0x0000000c, /* EMC_QUSE */
- 0x0000000a, /* EMC_EINPUT */
- 0x00000006, /* EMC_EINPUT_DURATION */
- 0x00000009, /* EMC_DLL_XFORM_DQS0 */
- 0x0000000d, /* EMC_QSAFE */
- 0x00018000, /* EMC_DLL_XFORM_QUSE0 */
- 0x00000016, /* EMC_RDV */
- 0x00249249, /* EMC_XM2DQSPADCTRL4 */
- 0x20820800, /* EMC_XM2DQSPADCTRL3 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ0 */
- 0xa8f10f0f, /* EMC_AUTO_CAL_CONFIG */
- 0x00000000, /* EMC_DLL_XFORM_ADDR0 */
- 0x00000a0a, /* EMC_XM2CLKPADCTRL2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR1 */
- 0x00000000, /* EMC_DLL_XFORM_ADDR2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS1 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS2 */
- 0x0000000a, /* EMC_DLL_XFORM_DQS3 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ1 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ2 */
- 0x0000400a, /* EMC_DLL_XFORM_DQ3 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000, /* EMC_DLI_TRIM_TXDQS3 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE1 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE2 */
- 0x00018000, /* EMC_DLL_XFORM_QUSE3 */
- },
- {
- 0x000001cd, /* MC_PTSA_GRANT_DECREMENT */
- 0x00080008, /* MC_LATENCY_ALLOWANCE_G2_0 */
- 0x00080008, /* MC_LATENCY_ALLOWANCE_G2_1 */
- 0x0009000a, /* MC_LATENCY_ALLOWANCE_NV_0 */
- 0x0000000a, /* MC_LATENCY_ALLOWANCE_NV2_0 */
- 0x000a000a, /* MC_LATENCY_ALLOWANCE_NV_2 */
- 0x000e000a, /* MC_LATENCY_ALLOWANCE_NV_1 */
- 0x0000000e, /* MC_LATENCY_ALLOWANCE_NV2_1 */
- 0x000e000e, /* MC_LATENCY_ALLOWANCE_NV3 */
- 0x0060002d, /* MC_LATENCY_ALLOWANCE_EPP_0 */
- 0x00600060, /* MC_LATENCY_ALLOWANCE_EPP_1 */
- },
- 0x0000004a, /* EMC_ZCAL_WAIT_CNT after clock change */
- 0x001fffff, /* EMC_AUTO_CAL_INTERVAL */
- 0x53000000, /* EMC_CFG */
- 0x80000f15, /* Mode Register 0 */
- 0x80100002, /* Mode Register 1 */
- 0x80200420, /* Mode Register 2 */
- 0x00000000, /* Mode Register 4 */
- 1200, /* expected dvfs latency (ns) */
- },
-};
-
-static struct tegra11_emc_pdata h5tc4g63afr_pba_pdata = {
- .description = "h5tc4g63afr_pba",
- .tables = h5tc4g63afr_pba_table,
- .num_tables = ARRAY_SIZE(h5tc4g63afr_pba_table),
-};
-
-static struct tegra11_emc_pdata *roth_get_emc_data(void)
-{
- return &h5tc4g63afr_pba_pdata;
-}
-
-int __init roth_emc_init(void)
-{
- tegra_emc_device.dev.platform_data = roth_get_emc_data();
- platform_device_register(&tegra_emc_device);
- tegra11_emc_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-roth-panel.c b/arch/arm/mach-tegra/board-roth-panel.c
deleted file mode 100644
index e158ffc825da..000000000000
--- a/arch/arm/mach-tegra/board-roth-panel.c
+++ /dev/null
@@ -1,971 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-roth-panel.c
- *
- * Copyright (c) 2011-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-#include <linux/ioport.h>
-#include <linux/fb.h>
-#include <linux/nvmap.h>
-#include <linux/nvhost.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/tegra_pwm_bl.h>
-#include <linux/regulator/consumer.h>
-#include <linux/pwm_backlight.h>
-#include <linux/of.h>
-
-#include <mach/irqs.h>
-#include <mach/dc.h>
-#include <mach/pinmux.h>
-#include <mach/pinmux-t11.h>
-#include <asm/mach-types.h>
-
-#include "board.h"
-#include "board-panel.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "iomap.h"
-#include "tegra11_host1x_devices.h"
-
-struct platform_device * __init roth_host1x_init(void)
-{
- struct platform_device *pdev = NULL;
-
-#ifdef CONFIG_TEGRA_GRHOST
- if (!of_have_populated_dt())
- pdev = tegra11_register_host1x_devices();
- else
- pdev = to_platform_device(bus_find_device_by_name(
- &platform_bus_type, NULL, "host1x"));
-#endif
- return pdev;
-}
-
-#define IS_EXTERNAL_PWM 1
-
-#define DSI_PANEL_RESET 1
-
-#define DSI_PANEL_RST_GPIO TEGRA_GPIO_PH3
-#define DSI_PANEL_BL_PWM TEGRA_GPIO_PH1
-
-#define DSI_PANEL_CE 0
-
-#define DC_CTRL_MODE TEGRA_DC_OUT_CONTINUOUS_MODE
-
-/* HDMI Hotplug detection pin */
-#define roth_hdmi_hpd TEGRA_GPIO_PN7
-
-static bool reg_requested;
-static bool gpio_requested;
-
-static struct regulator *vdd_lcd_s_1v8;
-static struct regulator *vdd_lcd_bl;
-static struct regulator *vdd_lcd_bl_en;
-static struct regulator *avdd_lcd_3v0_2v8;
-
-static struct regulator *roth_hdmi_reg;
-static struct regulator *roth_hdmi_pll;
-static struct regulator *roth_hdmi_vddio;
-
-#ifdef CONFIG_TEGRA_DC_CMU
-static struct tegra_dc_cmu roth_cmu = {
- /* lut1 maps sRGB to linear space. */
- {
- 0, 1, 2, 4, 5, 6, 7, 9,
- 10, 11, 12, 14, 15, 16, 18, 20,
- 21, 23, 25, 27, 29, 31, 33, 35,
- 37, 40, 42, 45, 48, 50, 53, 56,
- 59, 62, 66, 69, 72, 76, 79, 83,
- 87, 91, 95, 99, 103, 107, 112, 116,
- 121, 126, 131, 136, 141, 146, 151, 156,
- 162, 168, 173, 179, 185, 191, 197, 204,
- 210, 216, 223, 230, 237, 244, 251, 258,
- 265, 273, 280, 288, 296, 304, 312, 320,
- 329, 337, 346, 354, 363, 372, 381, 390,
- 400, 409, 419, 428, 438, 448, 458, 469,
- 479, 490, 500, 511, 522, 533, 544, 555,
- 567, 578, 590, 602, 614, 626, 639, 651,
- 664, 676, 689, 702, 715, 728, 742, 755,
- 769, 783, 797, 811, 825, 840, 854, 869,
- 884, 899, 914, 929, 945, 960, 976, 992,
- 1008, 1024, 1041, 1057, 1074, 1091, 1108, 1125,
- 1142, 1159, 1177, 1195, 1213, 1231, 1249, 1267,
- 1286, 1304, 1323, 1342, 1361, 1381, 1400, 1420,
- 1440, 1459, 1480, 1500, 1520, 1541, 1562, 1582,
- 1603, 1625, 1646, 1668, 1689, 1711, 1733, 1755,
- 1778, 1800, 1823, 1846, 1869, 1892, 1916, 1939,
- 1963, 1987, 2011, 2035, 2059, 2084, 2109, 2133,
- 2159, 2184, 2209, 2235, 2260, 2286, 2312, 2339,
- 2365, 2392, 2419, 2446, 2473, 2500, 2527, 2555,
- 2583, 2611, 2639, 2668, 2696, 2725, 2754, 2783,
- 2812, 2841, 2871, 2901, 2931, 2961, 2991, 3022,
- 3052, 3083, 3114, 3146, 3177, 3209, 3240, 3272,
- 3304, 3337, 3369, 3402, 3435, 3468, 3501, 3535,
- 3568, 3602, 3636, 3670, 3705, 3739, 3774, 3809,
- 3844, 3879, 3915, 3950, 3986, 4022, 4059, 4095,
- },
- /* csc */
- {
- 0x100, 0x0, 0x0,
- 0x0, 0x100, 0x0,
- 0x0, 0x0, 0x100,
- },
- /* lut2 maps linear space to sRGB*/
- {
- 0, 0, 1, 2, 3, 3, 4, 5,
- 6, 6, 7, 8, 8, 9, 10, 10,
- 11, 12, 12, 13, 13, 14, 14, 15,
- 16, 16, 17, 17, 18, 18, 19, 19,
- 19, 20, 20, 21, 21, 22, 22, 22,
- 23, 23, 24, 24, 24, 25, 25, 25,
- 26, 26, 27, 27, 27, 28, 28, 28,
- 28, 29, 29, 29, 30, 30, 30, 31,
- 31, 31, 31, 32, 32, 32, 33, 33,
- 33, 33, 34, 34, 34, 35, 35, 35,
- 35, 36, 36, 36, 36, 37, 37, 37,
- 38, 38, 38, 38, 39, 39, 39, 39,
- 40, 40, 40, 40, 40, 41, 41, 41,
- 41, 42, 42, 42, 42, 43, 43, 43,
- 43, 43, 44, 44, 44, 44, 45, 45,
- 45, 45, 45, 46, 46, 46, 46, 46,
- 47, 47, 47, 47, 47, 48, 48, 48,
- 48, 48, 49, 49, 49, 49, 49, 49,
- 50, 50, 50, 50, 50, 50, 51, 51,
- 51, 51, 51, 51, 52, 52, 52, 52,
- 52, 52, 53, 53, 53, 53, 53, 53,
- 54, 54, 54, 54, 54, 54, 54, 55,
- 55, 55, 55, 55, 55, 55, 55, 56,
- 56, 56, 56, 56, 56, 56, 57, 57,
- 57, 57, 57, 57, 57, 57, 58, 58,
- 58, 58, 58, 58, 58, 58, 58, 59,
- 59, 59, 59, 59, 59, 59, 59, 59,
- 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 62, 62, 62, 62, 62,
- 62, 62, 62, 62, 62, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 65, 65, 66, 66,
- 66, 66, 66, 66, 66, 66, 66, 66,
- 66, 66, 67, 67, 67, 67, 67, 67,
- 67, 67, 67, 67, 67, 67, 68, 68,
- 68, 68, 68, 68, 68, 68, 68, 68,
- 68, 68, 69, 69, 69, 69, 69, 69,
- 69, 69, 69, 69, 69, 69, 70, 70,
- 70, 70, 70, 70, 70, 70, 70, 70,
- 70, 70, 70, 71, 71, 71, 71, 71,
- 71, 71, 71, 71, 71, 71, 71, 71,
- 72, 72, 72, 72, 72, 72, 72, 72,
- 72, 72, 72, 72, 72, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78,
- 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 80, 80,
- 80, 80, 80, 80, 80, 80, 80, 80,
- 80, 80, 80, 80, 81, 81, 81, 81,
- 81, 81, 81, 81, 81, 81, 81, 81,
- 81, 81, 82, 82, 82, 82, 82, 82,
- 82, 82, 82, 82, 82, 82, 82, 82,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 84, 84, 85, 85, 86, 86, 87, 88,
- 88, 89, 89, 90, 90, 91, 92, 92,
- 93, 93, 94, 94, 95, 95, 96, 96,
- 97, 97, 98, 98, 99, 99, 100, 100,
- 101, 101, 102, 102, 103, 103, 104, 104,
- 105, 105, 106, 106, 107, 107, 107, 108,
- 108, 109, 109, 110, 110, 111, 111, 111,
- 112, 112, 113, 113, 114, 114, 114, 115,
- 115, 116, 116, 117, 117, 117, 118, 118,
- 119, 119, 119, 120, 120, 121, 121, 121,
- 122, 122, 123, 123, 123, 124, 124, 125,
- 125, 126, 126, 126, 127, 127, 128, 128,
- 128, 129, 129, 129, 130, 130, 131, 131,
- 131, 132, 132, 133, 133, 133, 134, 134,
- 135, 135, 135, 136, 136, 137, 137, 137,
- 138, 138, 138, 139, 139, 140, 140, 140,
- 141, 141, 142, 142, 142, 143, 143, 143,
- 144, 144, 145, 145, 145, 146, 146, 146,
- 147, 147, 147, 148, 148, 149, 149, 149,
- 150, 150, 150, 151, 151, 151, 152, 152,
- 153, 153, 153, 154, 154, 154, 155, 155,
- 156, 156, 156, 157, 157, 157, 158, 158,
- 159, 159, 159, 160, 160, 160, 161, 161,
- 162, 162, 162, 163, 163, 164, 164, 164,
- 165, 165, 166, 166, 166, 167, 167, 168,
- 168, 168, 169, 169, 170, 170, 170, 171,
- 171, 172, 172, 172, 173, 173, 173, 174,
- 174, 175, 175, 175, 176, 176, 176, 177,
- 177, 177, 178, 178, 178, 179, 179, 179,
- 180, 180, 180, 180, 181, 181, 181, 182,
- 182, 182, 182, 183, 183, 183, 184, 184,
- 184, 184, 185, 185, 185, 185, 186, 186,
- 186, 186, 187, 187, 187, 187, 188, 188,
- 188, 188, 189, 189, 189, 190, 190, 190,
- 190, 191, 191, 191, 191, 192, 192, 192,
- 193, 193, 193, 193, 194, 194, 194, 195,
- 195, 195, 195, 196, 196, 196, 197, 197,
- 197, 198, 198, 198, 198, 199, 199, 199,
- 200, 200, 200, 201, 201, 201, 202, 202,
- 202, 203, 203, 204, 204, 204, 205, 205,
- 205, 206, 206, 206, 207, 207, 208, 208,
- 208, 209, 209, 209, 210, 210, 211, 211,
- 211, 212, 212, 213, 213, 213, 214, 214,
- 215, 215, 215, 216, 216, 217, 217, 217,
- 218, 218, 218, 219, 219, 220, 220, 220,
- 221, 221, 221, 222, 222, 222, 223, 223,
- 223, 224, 224, 224, 225, 225, 225, 225,
- 226, 226, 226, 226, 227, 227, 227, 227,
- 228, 228, 228, 228, 229, 229, 229, 229,
- 229, 230, 230, 230, 230, 231, 231, 231,
- 231, 232, 232, 232, 233, 233, 233, 233,
- 234, 234, 234, 235, 235, 235, 236, 236,
- 236, 237, 237, 238, 238, 239, 239, 239,
- 240, 240, 241, 241, 242, 242, 243, 244,
- 244, 245, 245, 246, 247, 247, 248, 249,
- 250, 250, 251, 252, 253, 254, 254, 255,
- },
-};
-#endif
-
-static struct resource roth_disp1_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_GENERAL,
- .end = INT_DISPLAY_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY_BASE,
- .end = TEGRA_DISPLAY_BASE + TEGRA_DISPLAY_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by roth_panel_init() */
- .end = 0, /* Filled in by roth_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "dsi_regs",
- .start = TEGRA_DSI_BASE,
- .end = TEGRA_DSI_BASE + TEGRA_DSI_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "mipi_cal",
- .start = TEGRA_MIPI_CAL_BASE,
- .end = TEGRA_MIPI_CAL_BASE + TEGRA_MIPI_CAL_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource roth_disp2_resources[] = {
- {
- .name = "irq",
- .start = INT_DISPLAY_B_GENERAL,
- .end = INT_DISPLAY_B_GENERAL,
- .flags = IORESOURCE_IRQ,
- },
- {
- .name = "regs",
- .start = TEGRA_DISPLAY2_BASE,
- .end = TEGRA_DISPLAY2_BASE + TEGRA_DISPLAY2_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "fbmem",
- .start = 0, /* Filled in by roth_panel_init() */
- .end = 0, /* Filled in by roth_panel_init() */
- .flags = IORESOURCE_MEM,
- },
- {
- .name = "hdmi_regs",
- .start = TEGRA_HDMI_BASE,
- .end = TEGRA_HDMI_BASE + TEGRA_HDMI_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static u8 panel_dsi_config[] = {0xe0, 0x43, 0x0, 0x80, 0x0, 0x0};
-static u8 panel_disp_ctrl1[] = {0xb5, 0x34, 0x20, 0x40, 0x0, 0x20};
-static u8 panel_disp_ctrl2[] = {0xb6, 0x04, 0x74, 0x0f, 0x16, 0x13};
-static u8 panel_internal_clk[] = {0xc0, 0x01, 0x08};
-static u8 panel_pwr_ctrl3[] = {
- 0xc3, 0x0, 0x09, 0x10, 0x02, 0x0, 0x66, 0x00, 0x13, 0x0};
-static u8 panel_pwr_ctrl4[] = {0xc4, 0x23, 0x24, 0x12, 0x12, 0x60};
-static u8 panel_positive_gamma_red[] = {
- 0xd0, 0x21, 0x25, 0x67, 0x36, 0x0a, 0x06, 0x61, 0x23, 0x03};
-static u8 panel_negetive_gamma_red[] = {
- 0xd1, 0x31, 0x25, 0x66, 0x36, 0x05, 0x06, 0x61, 0x23, 0x03};
-static u8 panel_positive_gamma_green[] = {
- 0xd2, 0x41, 0x26, 0x56, 0x36, 0x0a, 0x06, 0x61, 0x23, 0x03};
-static u8 panel_negetive_gamma_green[] = {
- 0xd3, 0x51, 0x26, 0x55, 0x36, 0x05, 0x06, 0x61, 0x23, 0x03};
-static u8 panel_positive_gamma_blue[] = {
- 0xd4, 0x41, 0x26, 0x56, 0x36, 0x0a, 0x06, 0x61, 0x23, 0x03};
-static u8 panel_negetive_gamma_blue[] = {
- 0xd5, 0x51, 0x26, 0x55, 0x36, 0x05, 0x06, 0x61, 0x23, 0x03};
-
-#if DSI_PANEL_CE
-static u8 panel_ce2[] = {0x71, 0x0, 0x0, 0x01, 0x01};
-static u8 panel_ce3[] = {0x72, 0x01, 0x0e};
-static u8 panel_ce4[] = {0x73, 0x34, 0x52, 0x0};
-static u8 panel_ce5[] = {0x74, 0x05, 0x0, 0x06};
-static u8 panel_ce6[] = {0x75, 0x03, 0x0, 0x07};
-static u8 panel_ce7[] = {0x76, 0x07, 0x0, 0x06};
-static u8 panel_ce8[] = {0x77, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f};
-static u8 panel_ce9[] = {0x78, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40};
-static u8 panel_ce10[] = {
- 0x79, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40};
-static u8 panel_ce11[] = {0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
-static u8 panel_ce12[] = {0x7b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
-static u8 panel_ce13[] = {0x7c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
-#endif
-
-static struct tegra_dsi_cmd dsi_init_cmd[] = {
- DSI_DLY_MS(20),
- DSI_GPIO_SET(DSI_PANEL_RST_GPIO, 1),
-
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_dsi_config),
-
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_disp_ctrl1),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_disp_ctrl2),
-
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_internal_clk),
-
- /* panel power control 1 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0xc1, 0x0),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_pwr_ctrl3),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_pwr_ctrl4),
-
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_positive_gamma_red),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_negetive_gamma_red),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_positive_gamma_green),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_negetive_gamma_green),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_positive_gamma_blue),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_negetive_gamma_blue),
-
- DSI_CMD_SHORT(DSI_DCS_WRITE_1_PARAM, DSI_DCS_SET_ADDR_MODE, 0x0B),
-
- /* panel OTP 2 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0xf9, 0x0),
-
-#if DSI_PANEL_CE
- /* panel CE 1 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0x70, 0x0),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce2),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce3),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce4),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce5),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce6),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce7),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce8),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce9),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce10),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce11),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce12),
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_ce13),
-#endif
- /* panel power control 2 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0xc2, 0x02),
- DSI_DLY_MS(20),
-
- /* panel power control 2 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0xc2, 0x06),
- DSI_DLY_MS(20),
-
- /* panel power control 2 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0xc2, 0x4e),
- DSI_DLY_MS(100),
-
- DSI_CMD_SHORT(DSI_DCS_WRITE_0_PARAM, DSI_DCS_EXIT_SLEEP_MODE, 0x0),
- DSI_DLY_MS(140),
-
- /* panel OTP 2 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0xf9, 0x80),
- DSI_DLY_MS(20),
-
- DSI_CMD_SHORT(DSI_DCS_WRITE_0_PARAM, DSI_DCS_SET_DISPLAY_ON, 0x0),
-};
-
-static u8 panel_suspend_pwr_ctrl4[] = {0xc4, 0x0, 0x0, 0x0, 0x0, 0x0};
-
-static struct tegra_dsi_cmd dsi_suspend_cmd[] = {
- DSI_DLY_MS(40),
-
- DSI_CMD_SHORT(DSI_DCS_WRITE_0_PARAM, DSI_DCS_SET_DISPLAY_OFF, 0x0),
- DSI_DLY_MS(20),
-
- DSI_CMD_SHORT(DSI_DCS_WRITE_0_PARAM, DSI_DCS_ENTER_SLEEP_MODE, 0x0),
-
- /* panel power control 2 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0xc2, 0x0),
-
- /* panel power control 4 */
- DSI_CMD_LONG(DSI_GENERIC_LONG_WRITE, panel_suspend_pwr_ctrl4),
-
- /* panel power control 1 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0xc1, 0x2),
- DSI_DLY_MS(20),
-
- /* panel power control 1 */
- DSI_CMD_SHORT(DSI_GENERIC_SHORT_WRITE_2_PARAMS, 0xc1, 0x3),
- DSI_DLY_MS(20),
-};
-
-static struct tegra_dsi_out roth_dsi = {
- .n_data_lanes = 4,
- .controller_vs = DSI_VS_1,
- .pixel_format = TEGRA_DSI_PIXEL_FORMAT_24BIT_P,
- .refresh_rate = 60,
- .virtual_channel = TEGRA_DSI_VIRTUAL_CHANNEL_0,
-
- .dsi_instance = DSI_INSTANCE_0,
-
- .panel_reset = DSI_PANEL_RESET,
- .power_saving_suspend = true,
- .video_data_type = TEGRA_DSI_VIDEO_TYPE_VIDEO_MODE,
- .video_clock_mode = TEGRA_DSI_VIDEO_CLOCK_CONTINUOUS,
- .video_burst_mode = TEGRA_DSI_VIDEO_NONE_BURST_MODE_WITH_SYNC_END,
- .dsi_init_cmd = dsi_init_cmd,
- .n_init_cmd = ARRAY_SIZE(dsi_init_cmd),
- .dsi_suspend_cmd = dsi_suspend_cmd,
- .n_suspend_cmd = ARRAY_SIZE(dsi_suspend_cmd),
-};
-
-static int roth_dsi_regulator_get(struct device *dev)
-{
- int err = 0;
-
- if (reg_requested)
- return 0;
-
- avdd_lcd_3v0_2v8 = regulator_get(dev, "avdd_lcd");
- if (IS_ERR(avdd_lcd_3v0_2v8)) {
- pr_err("avdd_lcd regulator get failed\n");
- err = PTR_ERR(avdd_lcd_3v0_2v8);
- avdd_lcd_3v0_2v8 = NULL;
- goto fail;
- }
- vdd_lcd_s_1v8 = regulator_get(dev, "dvdd_lcd");
- if (IS_ERR(vdd_lcd_s_1v8)) {
- pr_err("vdd_lcd_1v8_s regulator get failed\n");
- err = PTR_ERR(vdd_lcd_s_1v8);
- vdd_lcd_s_1v8 = NULL;
- goto fail;
- }
-
- if (machine_is_dalmore()) {
- vdd_lcd_bl = regulator_get(dev, "vdd_lcd_bl");
- if (IS_ERR(vdd_lcd_bl)) {
- pr_err("vdd_lcd_bl regulator get failed\n");
- err = PTR_ERR(vdd_lcd_bl);
- vdd_lcd_bl = NULL;
- goto fail;
- }
- }
-
- vdd_lcd_bl_en = regulator_get(dev, "vdd_lcd_bl_en");
- if (IS_ERR(vdd_lcd_bl_en)) {
- pr_err("vdd_lcd_bl_en regulator get failed\n");
- err = PTR_ERR(vdd_lcd_bl_en);
- vdd_lcd_bl_en = NULL;
- goto fail;
- }
- reg_requested = true;
- return 0;
-fail:
- return err;
-}
-
-static int roth_dsi_gpio_get(void)
-{
- int err = 0;
-
- if (gpio_requested)
- return 0;
-
- err = gpio_request(DSI_PANEL_RST_GPIO, "panel rst");
- if (err < 0) {
- pr_err("panel reset gpio request failed\n");
- goto fail;
- }
-
- gpio_requested = true;
- return 0;
-fail:
- return err;
-}
-
-static struct tegra_dc_out roth_disp1_out;
-
-static int roth_dsi_panel_enable(struct device *dev)
-{
- int err = 0;
-
- err = roth_dsi_regulator_get(dev);
- if (err < 0) {
- pr_err("dsi regulator get failed\n");
- goto fail;
- }
- err = roth_dsi_gpio_get();
- if (err < 0) {
- pr_err("dsi gpio request failed\n");
- goto fail;
- }
-
- /* Skip panel programming if in initialized mode */
- if (!(roth_disp1_out.flags & TEGRA_DC_OUT_INITIALIZED_MODE)) {
- roth_dsi.dsi_init_cmd = dsi_init_cmd;
- gpio_set_value(DSI_PANEL_RST_GPIO, 0);
- } else {
- roth_dsi.dsi_init_cmd = dsi_init_cmd + 2;
- }
-
- if (vdd_lcd_s_1v8) {
- err = regulator_enable(vdd_lcd_s_1v8);
- if (err < 0) {
- pr_err("vdd_lcd_1v8_s regulator enable failed\n");
- goto fail;
- }
- }
- usleep_range(3000, 5000);
-
- if (avdd_lcd_3v0_2v8) {
- err = regulator_enable(avdd_lcd_3v0_2v8);
- if (err < 0) {
- pr_err("avdd_lcd_3v0_2v8 regulator enable failed\n");
- goto fail;
- }
- regulator_set_voltage(avdd_lcd_3v0_2v8, 2800000, 2800000);
- }
- usleep_range(3000, 5000);
-
- if (vdd_lcd_bl) {
- err = regulator_enable(vdd_lcd_bl);
- if (err < 0) {
- pr_err("vdd_lcd_bl regulator enable failed\n");
- goto fail;
- }
- }
-
- if (vdd_lcd_bl_en) {
- err = regulator_enable(vdd_lcd_bl_en);
- if (err < 0) {
- pr_err("vdd_lcd_bl_en regulator enable failed\n");
- goto fail;
- }
- }
-
- return 0;
-fail:
- return err;
-}
-
-static int roth_dsi_panel_disable(void)
-{
- if (vdd_lcd_bl)
- regulator_disable(vdd_lcd_bl);
-
- if (vdd_lcd_bl_en)
- regulator_disable(vdd_lcd_bl_en);
-
- gpio_set_value(DSI_PANEL_RST_GPIO, 0);
- mdelay(20);
-
- if (vdd_lcd_s_1v8)
- regulator_disable(vdd_lcd_s_1v8);
-
- if (avdd_lcd_3v0_2v8)
- regulator_disable(avdd_lcd_3v0_2v8);
-
- return 0;
-}
-
-static int roth_dsi_panel_postsuspend(void)
-{
- /* TODO */
- return 0;
-}
-
-static struct tegra_dc_mode roth_dsi_modes[] = {
- {
- .pclk = 66700000,
- .h_ref_to_sync = 4,
- .v_ref_to_sync = 1,
- .h_sync_width = 4,
- .v_sync_width = 4,
- .h_back_porch = 112,
- .v_back_porch = 12,
- .h_active = 720,
- .v_active = 1280,
- .h_front_porch = 12,
- .v_front_porch = 8,
- },
-};
-
-static struct tegra_dc_sd_settings sd_settings;
-
-static struct tegra_dc_out roth_disp1_out = {
- .type = TEGRA_DC_OUT_DSI,
- .dsi = &roth_dsi,
-
- .flags = DC_CTRL_MODE,
- .sd_settings = &sd_settings,
-
- .modes = roth_dsi_modes,
- .n_modes = ARRAY_SIZE(roth_dsi_modes),
-
- .enable = roth_dsi_panel_enable,
- .disable = roth_dsi_panel_disable,
- .postsuspend = roth_dsi_panel_postsuspend,
- .width = 62,
- .height = 110,
-};
-
-static int roth_hdmi_enable(struct device *dev)
-{
- int ret;
- if (!roth_hdmi_reg) {
- roth_hdmi_reg = regulator_get(dev, "avdd_hdmi");
- if (IS_ERR(roth_hdmi_reg)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi\n");
- roth_hdmi_reg = NULL;
- return PTR_ERR(roth_hdmi_reg);
- }
- }
- ret = regulator_enable(roth_hdmi_reg);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi\n");
- return ret;
- }
- if (!roth_hdmi_pll) {
- roth_hdmi_pll = regulator_get(dev, "avdd_hdmi_pll");
- if (IS_ERR(roth_hdmi_pll)) {
- pr_err("hdmi: couldn't get regulator avdd_hdmi_pll\n");
- roth_hdmi_pll = NULL;
- regulator_put(roth_hdmi_reg);
- roth_hdmi_reg = NULL;
- return PTR_ERR(roth_hdmi_pll);
- }
- }
- ret = regulator_enable(roth_hdmi_pll);
- if (ret < 0) {
- pr_err("hdmi: couldn't enable regulator avdd_hdmi_pll\n");
- return ret;
- }
- return 0;
-}
-
-static int roth_hdmi_disable(void)
-{
- if (roth_hdmi_reg) {
- regulator_disable(roth_hdmi_reg);
- regulator_put(roth_hdmi_reg);
- roth_hdmi_reg = NULL;
- }
-
- if (roth_hdmi_pll) {
- regulator_disable(roth_hdmi_pll);
- regulator_put(roth_hdmi_pll);
- roth_hdmi_pll = NULL;
- }
-
- return 0;
-}
-
-static int roth_hdmi_postsuspend(void)
-{
- if (roth_hdmi_vddio) {
- regulator_disable(roth_hdmi_vddio);
- regulator_put(roth_hdmi_vddio);
- roth_hdmi_vddio = NULL;
- }
- return 0;
-}
-
-static int roth_hdmi_hotplug_init(struct device *dev)
-{
- int e = 0;
-
- if (!roth_hdmi_vddio) {
- roth_hdmi_vddio = regulator_get(dev, "vdd_hdmi_5v0");
- if (WARN_ON(IS_ERR(roth_hdmi_vddio))) {
- e = PTR_ERR(roth_hdmi_vddio);
- pr_err("%s: couldn't get regulator vdd_hdmi_5v0: %d\n",
- __func__, e);
- roth_hdmi_vddio = NULL;
- } else
- e = regulator_enable(roth_hdmi_vddio);
- }
- return e;
-}
-
-static void roth_hdmi_hotplug_report(bool state)
-{
- if (state) {
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_DDC_SDA,
- TEGRA_PUPD_PULL_DOWN);
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_DDC_SCL,
- TEGRA_PUPD_PULL_DOWN);
- } else {
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_DDC_SDA,
- TEGRA_PUPD_NORMAL);
- tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_DDC_SCL,
- TEGRA_PUPD_NORMAL);
- }
-}
-
-static struct tegra_dc_out roth_disp2_out = {
- .type = TEGRA_DC_OUT_HDMI,
- .flags = TEGRA_DC_OUT_HOTPLUG_HIGH,
- .parent_clk = "pll_d2_out0",
-
- .ddc_bus = 3,
- .hotplug_gpio = roth_hdmi_hpd,
-
- .max_pixclock = KHZ2PICOS(297000),
-
- .align = TEGRA_DC_ALIGN_MSB,
- .order = TEGRA_DC_ORDER_RED_BLUE,
-
- .enable = roth_hdmi_enable,
- .disable = roth_hdmi_disable,
- .postsuspend = roth_hdmi_postsuspend,
- .hotplug_init = roth_hdmi_hotplug_init,
- .hotplug_report = roth_hdmi_hotplug_report,
-};
-
-static struct tegra_fb_data roth_disp1_fb_data = {
- .win = 0,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
- .xres = 720,
- .yres = 1280,
-};
-
-static struct tegra_dc_platform_data roth_disp1_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &roth_disp1_out,
- .fb = &roth_disp1_fb_data,
- .emc_clk_rate = 204000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
- .cmu = &roth_cmu,
-#endif
-};
-
-static struct tegra_fb_data roth_disp2_fb_data = {
- .win = 0,
- .xres = 1024,
- .yres = 600,
- .bits_per_pixel = 32,
- .flags = TEGRA_FB_FLIP_ON_PROBE,
-};
-
-static struct tegra_dc_platform_data roth_disp2_pdata = {
- .flags = TEGRA_DC_FLAG_ENABLED,
- .default_out = &roth_disp2_out,
- .fb = &roth_disp2_fb_data,
- .emc_clk_rate = 300000000,
-#ifdef CONFIG_TEGRA_DC_CMU
- .cmu_enable = 1,
-#endif
-};
-
-static struct platform_device roth_disp2_device = {
- .name = "tegradc",
- .id = 1,
- .resource = roth_disp2_resources,
- .num_resources = ARRAY_SIZE(roth_disp2_resources),
- .dev = {
- .platform_data = &roth_disp2_pdata,
- },
-};
-
-static struct platform_device roth_disp1_device = {
- .name = "tegradc",
- .id = 0,
- .resource = roth_disp1_resources,
- .num_resources = ARRAY_SIZE(roth_disp1_resources),
- .dev = {
- .platform_data = &roth_disp1_pdata,
- },
-};
-
-static struct nvmap_platform_carveout roth_carveouts[] = {
- [0] = {
- .name = "iram",
- .usage_mask = NVMAP_HEAP_CARVEOUT_IRAM,
- .base = TEGRA_IRAM_BASE + TEGRA_RESET_HANDLER_SIZE,
- .size = TEGRA_IRAM_SIZE - TEGRA_RESET_HANDLER_SIZE,
- },
- [1] = {
- .name = "generic-0",
- .usage_mask = NVMAP_HEAP_CARVEOUT_GENERIC,
- .base = 0, /* Filled in by roth_panel_init() */
- .size = 0, /* Filled in by roth_panel_init() */
- },
- [2] = {
- .name = "vpr",
- .usage_mask = NVMAP_HEAP_CARVEOUT_VPR,
- .base = 0, /* Filled in by roth_panel_init() */
- .size = 0, /* Filled in by roth_panel_init() */
- },
-};
-
-static struct nvmap_platform_data roth_nvmap_data = {
- .carveouts = roth_carveouts,
- .nr_carveouts = ARRAY_SIZE(roth_carveouts),
-};
-
-static struct platform_device roth_nvmap_device = {
- .name = "tegra-nvmap",
- .id = -1,
- .dev = {
- .platform_data = &roth_nvmap_data,
- },
-};
-
-static int roth_disp1_bl_notify(struct device *unused, int brightness)
-{
- int cur_sd_brightness = atomic_read(&sd_brightness);
-
- /* SD brightness is a percentage */
- brightness = (brightness * cur_sd_brightness) / 255;
-
- /* Apply any backlight response curve */
- if (brightness > 255)
- pr_info("Error: Brightness > 255!\n");
-
- return brightness;
-}
-
-static int roth_disp1_check_fb(struct device *dev, struct fb_info *info)
-{
- return info->device == &roth_disp1_device.dev;
-}
-
-static struct platform_pwm_backlight_data roth_disp1_bl_data = {
- .pwm_id = 1,
- .max_brightness = 255,
- .dft_brightness = 77,
- .pwm_period_ns = 40000,
- .pwm_gpio = DSI_PANEL_BL_PWM,
- .notify = roth_disp1_bl_notify,
- /* Only toggle backlight on fb blank notifications for disp1 */
- .check_fb = roth_disp1_check_fb,
-};
-
-static struct platform_device __maybe_unused
- roth_disp1_bl_device = {
- .name = "pwm-backlight",
- .id = -1,
- .dev = {
- .platform_data = &roth_disp1_bl_data,
- },
-};
-
-static struct platform_device __maybe_unused
- *roth_bl_device[] __initdata = {
- &roth_disp1_bl_device,
-};
-
-int __init roth_panel_init(int board_id)
-{
- int err = 0;
- struct resource __maybe_unused *res;
- struct platform_device *phost1x = NULL;
-
-#ifdef CONFIG_TEGRA_NVMAP
- roth_carveouts[1].base = tegra_carveout_start;
- roth_carveouts[1].size = tegra_carveout_size;
- roth_carveouts[2].base = tegra_vpr_start;
- roth_carveouts[2].size = tegra_vpr_size;
-
- err = platform_device_register(&roth_nvmap_device);
- if (err) {
- pr_err("nvmap device registration failed\n");
- return err;
- }
-#endif
-
- phost1x = roth_host1x_init();
- if (!phost1x) {
- pr_err("host1x devices registration failed\n");
- return -EINVAL;
- }
-
- res = platform_get_resource_byname(&roth_disp1_device,
- IORESOURCE_MEM, "fbmem");
- res->start = tegra_fb_start;
- res->end = tegra_fb_start + tegra_fb_size - 1;
-
- /* Copy the bootloader fb to the fb. */
- __tegra_move_framebuffer(&roth_nvmap_device,
- tegra_fb_start, tegra_bootloader_fb_start,
- min(tegra_fb_size, tegra_bootloader_fb_size));
-
- /*
- * only roth supports initialized mode.
- */
- if (!board_id)
- roth_disp1_out.flags |= TEGRA_DC_OUT_INITIALIZED_MODE;
-
- roth_disp1_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&roth_disp1_device);
- if (err) {
- pr_err("disp1 device registration failed\n");
- return err;
- }
-
- err = tegra_init_hdmi(&roth_disp2_device, phost1x);
- if (err)
- return err;
-
-#if IS_EXTERNAL_PWM
- err = platform_add_devices(roth_bl_device,
- ARRAY_SIZE(roth_bl_device));
- if (err) {
- pr_err("disp1 bl device registration failed");
- return err;
- }
-#endif
-
-#ifdef CONFIG_TEGRA_NVAVP
- if (!of_have_populated_dt()) {
- nvavp_device.dev.parent = &phost1x->dev;
- err = platform_device_register(&nvavp_device);
- if (err) {
- pr_err("nvavp device registration failed\n");
- return err;
- }
- }
-#endif
- return err;
-}
diff --git a/arch/arm/mach-tegra/board-roth-power.c b/arch/arm/mach-tegra/board-roth-power.c
deleted file mode 100644
index 195c55f91692..000000000000
--- a/arch/arm/mach-tegra/board-roth-power.c
+++ /dev/null
@@ -1,882 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-roth-power.c
- *
- * Copyright (c) 2012-2014 NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/i2c.h>
-#include <linux/pda_power.h>
-#include <linux/platform_device.h>
-#include <linux/resource.h>
-#include <linux/io.h>
-#include <linux/regulator/machine.h>
-#include <linux/regulator/driver.h>
-#include <linux/regulator/fixed.h>
-#include <linux/mfd/palmas.h>
-#include <linux/power/power_supply_extcon.h>
-#include <linux/regulator/tps51632-regulator.h>
-#include <linux/power/bq2419x-charger.h>
-#include <linux/max17048_battery.h>
-#include <linux/gpio.h>
-#include <linux/regulator/userspace-consumer.h>
-#include <linux/tegra-soc.h>
-#include <linux/tegra-pmc.h>
-
-#include <asm/mach-types.h>
-
-#include <mach/irqs.h>
-#include <mach/edp.h>
-#include <mach/gpio-tegra.h>
-
-#include "cpu-tegra.h"
-#include "pm.h"
-#include "tegra-board-id.h"
-#include "board-pmu-defines.h"
-#include "board.h"
-#include "gpio-names.h"
-#include "board-roth.h"
-#include "tegra_cl_dvfs.h"
-#include "devices.h"
-#include "tegra11_soctherm.h"
-#include "iomap.h"
-#include "battery-ini-model-data.h"
-
-#define PMC_CTRL 0x0
-#define PMC_CTRL_INTR_LOW (1 << 17)
-
-/* TPS51632 DC-DC converter */
-static struct regulator_consumer_supply tps51632_dcdc_supply[] = {
- REGULATOR_SUPPLY("vdd_cpu", NULL),
-};
-
-static struct regulator_init_data tps51632_init_data = {
- .constraints = { \
- .min_uV = 500000, \
- .max_uV = 1520000, \
- .valid_modes_mask = (REGULATOR_MODE_NORMAL | \
- REGULATOR_MODE_STANDBY), \
- .valid_ops_mask = (REGULATOR_CHANGE_MODE | \
- REGULATOR_CHANGE_STATUS | \
- REGULATOR_CHANGE_VOLTAGE), \
- .always_on = 1, \
- .boot_on = 1, \
- .apply_uV = 0, \
- }, \
- .num_consumer_supplies = ARRAY_SIZE(tps51632_dcdc_supply), \
- .consumer_supplies = tps51632_dcdc_supply, \
-};
-
-static struct tps51632_regulator_platform_data tps51632_pdata = {
- .reg_init_data = &tps51632_init_data,
- .enable_pwm_dvfs = false,
- .max_voltage_uV = 1520000,
- .base_voltage_uV = 500000,
-/* .slew_rate_uv_per_us = 6000, */
-};
-
-static struct i2c_board_info __initdata tps51632_boardinfo[] = {
- {
- I2C_BOARD_INFO("tps51632", 0x43),
- .platform_data = &tps51632_pdata,
- },
-};
-
-/* BQ2419X VBUS regulator */
-static struct regulator_consumer_supply bq2419x_vbus_supply[] = {
- REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.0"),
- REGULATOR_SUPPLY("usb_vbus", "tegra-otg"),
-};
-
-static struct regulator_consumer_supply bq2419x_batt_supply[] = {
- REGULATOR_SUPPLY("usb_bat_chg", "tegra-udc.0"),
-};
-
-static struct bq2419x_vbus_platform_data bq2419x_vbus_pdata = {
- .gpio_otg_iusb = TEGRA_GPIO_PI4,
- .num_consumer_supplies = ARRAY_SIZE(bq2419x_vbus_supply),
- .consumer_supplies = bq2419x_vbus_supply,
-};
-
-struct bq2419x_charger_platform_data bq2419x_charger_pdata = {
- .max_charge_current_mA = 3000,
- .termination_current_limit_mA = 100,
- .consumer_supplies = bq2419x_batt_supply,
- .num_consumer_supplies = ARRAY_SIZE(bq2419x_batt_supply),
- .wdt_timeout = 40,
- .rtc_alarm_time = 3600,
- .chg_restart_time = 1800,
-};
-
-struct bq2419x_platform_data bq2419x_pdata = {
- .vbus_pdata = &bq2419x_vbus_pdata,
- .bcharger_pdata = &bq2419x_charger_pdata,
-};
-
-static struct i2c_board_info __initdata bq2419x_boardinfo[] = {
- {
- I2C_BOARD_INFO("bq2419x", 0x6b),
- .platform_data = &bq2419x_pdata,
- },
-};
-
-static struct max17048_platform_data max17048_pdata;
-
-static struct i2c_board_info __initdata max17048_boardinfo[] = {
- {
- I2C_BOARD_INFO("max17048", 0x36),
- .platform_data = &max17048_pdata,
- },
-};
-
-static struct power_supply_extcon_plat_data psy_extcon_pdata = {
- .extcon_name = "tegra-udc",
-};
-
-static struct platform_device psy_extcon_device = {
- .name = "power-supply-extcon",
- .id = -1,
- .dev = {
- .platform_data = &psy_extcon_pdata,
- },
-};
-
-/************************ Palmas based regulator ****************/
-static struct regulator_consumer_supply palmas_smps12_supply[] = {
- REGULATOR_SUPPLY("vddio_ddr0", NULL),
- REGULATOR_SUPPLY("vddio_ddr1", NULL),
-};
-
-static struct regulator_consumer_supply palmas_smps3_supply[] = {
- REGULATOR_SUPPLY("avdd_osc", NULL),
- REGULATOR_SUPPLY("vddio_sys", NULL),
- REGULATOR_SUPPLY("vddio_gmi", NULL),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.1"),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("pwrdet_sdmmc1", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("vccq", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("pwrdet_sdmmc4", NULL),
- REGULATOR_SUPPLY("vddio_audio", NULL),
- REGULATOR_SUPPLY("pwrdet_audio", NULL),
- REGULATOR_SUPPLY("avdd_audio_1v8", NULL),
- REGULATOR_SUPPLY("vdd_audio_1v8", NULL),
- REGULATOR_SUPPLY("vddio_uart", NULL),
- REGULATOR_SUPPLY("pwrdet_uart", NULL),
- REGULATOR_SUPPLY("pwrdet_nand", NULL),
- REGULATOR_SUPPLY("pwrdet_bb", NULL),
- REGULATOR_SUPPLY("pwrdet_cam", NULL),
- REGULATOR_SUPPLY("dbvdd", NULL),
- REGULATOR_SUPPLY("vlogic", "0-0068"),
-};
-
-static struct regulator_consumer_supply palmas_smps45_supply[] = {
- REGULATOR_SUPPLY("vdd_core", NULL),
-};
-
-#define palmas_smps457_supply palmas_smps45_supply
-
-static struct regulator_consumer_supply palmas_smps8_supply[] = {
- REGULATOR_SUPPLY("avdd_plla_p_c", NULL),
- REGULATOR_SUPPLY("avdd_pllx", NULL),
- REGULATOR_SUPPLY("avdd_pllm", NULL),
- REGULATOR_SUPPLY("avdd_pllu", NULL),
- REGULATOR_SUPPLY("avdd_plle", NULL),
- REGULATOR_SUPPLY("vdd_ddr_hs", NULL),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "vi"),
- REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avddio_usb", "tegra-ehci.2"),
-};
-
-static struct regulator_consumer_supply palmas_smps9_supply[] = {
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.3"),
-};
-
-static struct regulator_consumer_supply palmas_smps10_out2_supply[] = {
- REGULATOR_SUPPLY("vdd_vbrtr", NULL),
- REGULATOR_SUPPLY("vdd_5v0", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo2_supply[] = {
- REGULATOR_SUPPLY("avdd_lcd", NULL),
- REGULATOR_SUPPLY("vci_2v8", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo3_supply[] = {
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_dsi_csi", "vi"),
- REGULATOR_SUPPLY("pwrdet_mipi", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo4_supply[] = {
- REGULATOR_SUPPLY("vpp_fuse", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo5_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
-};
-
-static struct regulator_consumer_supply palmas_ldo6_supply[] = {
- REGULATOR_SUPPLY("vdd_sensor_2v85", NULL),
- REGULATOR_SUPPLY("vdd", "0-004c"),
- REGULATOR_SUPPLY("vdd", "1-004c"),
- REGULATOR_SUPPLY("vdd", "1-004d"),
- REGULATOR_SUPPLY("vdd", "0-0068"),
-};
-
-static struct regulator_consumer_supply palmas_ldo8_supply[] = {
- REGULATOR_SUPPLY("vdd_rtc", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldo9_supply[] = {
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.2"),
- REGULATOR_SUPPLY("pwrdet_sdmmc3", NULL),
-};
-
-static struct regulator_consumer_supply palmas_ldousb_supply[] = {
- REGULATOR_SUPPLY("avdd_usb", "tegra-udc.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"),
- REGULATOR_SUPPLY("vddio_hv", "tegradc.1"),
- REGULATOR_SUPPLY("pwrdet_hv", NULL),
-};
-
-static struct regulator_consumer_supply palmas_regen1_supply[] = {
- REGULATOR_SUPPLY("vdd_3v3_sys", NULL),
- REGULATOR_SUPPLY("vdd", "4-004c"),
- REGULATOR_SUPPLY("vdd", "0-004d"),
- REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.2"),
-};
-
-static struct regulator_consumer_supply palmas_regen2_supply[] = {
- REGULATOR_SUPPLY("vdd_5v0_sys", NULL),
-};
-
-PALMAS_PDATA_INIT(smps12, 1200, 1500, NULL, 0, 0, 0, NORMAL);
-PALMAS_PDATA_INIT(smps3, 1800, 1800, NULL, 0, 0, 0, NORMAL);
-PALMAS_PDATA_INIT(smps45, 900, 1400, NULL, 1, 1, 0, NORMAL);
-PALMAS_PDATA_INIT(smps457, 900, 1400, NULL, 1, 1, 0, NORMAL);
-PALMAS_PDATA_INIT(smps8, 1050, 1050, NULL, 1, 1, 1, NORMAL);
-PALMAS_PDATA_INIT(smps9, 2800, 2800, NULL, 0, 0, 0, NORMAL);
-PALMAS_PDATA_INIT(smps10_out2, 5000, 5000, NULL, 0, 0, 0, 0);
-PALMAS_PDATA_INIT(ldo2, 2800, 2800, NULL, 0, 0, 1, 0);
-PALMAS_PDATA_INIT(ldo3, 1200, 1200, NULL, 1, 1, 1, 0);
-PALMAS_PDATA_INIT(ldo4, 1800, 1800, NULL, 0, 0, 1, 0);
-PALMAS_PDATA_INIT(ldo5, 1200, 1200, NULL, 0, 0, 1, 0);
-PALMAS_PDATA_INIT(ldo6, 2850, 2850, NULL, 0, 0, 1, 0);
-PALMAS_PDATA_INIT(ldo8, 900, 900, NULL, 1, 1, 1, 0);
-PALMAS_PDATA_INIT(ldo9, 1800, 3300, NULL, 0, 0, 1, 0);
-PALMAS_PDATA_INIT(ldousb, 3300, 3300, NULL, 0, 0, 1, 0);
-PALMAS_PDATA_INIT(regen1, 3300, 3300, NULL, 0, 0, 0, 0);
-PALMAS_PDATA_INIT(regen2, 5000, 5000, NULL, 0, 0, 0, 0);
-
-#define PALMAS_REG_PDATA(_sname) &reg_idata_##_sname
-static struct regulator_init_data *roth_reg_data[PALMAS_NUM_REGS] = {
- PALMAS_REG_PDATA(smps12),
- NULL,
- PALMAS_REG_PDATA(smps3),
- PALMAS_REG_PDATA(smps45),
- PALMAS_REG_PDATA(smps457),
- NULL,
- NULL,
- PALMAS_REG_PDATA(smps8),
- PALMAS_REG_PDATA(smps9),
- PALMAS_REG_PDATA(smps10_out2),
- NULL,
- NULL, /* LDO1 */
- PALMAS_REG_PDATA(ldo2),
- PALMAS_REG_PDATA(ldo3),
- PALMAS_REG_PDATA(ldo4),
- PALMAS_REG_PDATA(ldo5),
- PALMAS_REG_PDATA(ldo6),
- NULL,
- PALMAS_REG_PDATA(ldo8),
- PALMAS_REG_PDATA(ldo9),
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- PALMAS_REG_PDATA(ldousb),
- PALMAS_REG_PDATA(regen1),
- PALMAS_REG_PDATA(regen2),
- NULL,
- NULL,
- NULL,
-};
-
-#define PALMAS_REG_INIT(_name, _warm_reset, _roof_floor, _mode_sleep, \
- _vsel) \
- static struct palmas_reg_init reg_init_data_##_name = { \
- .warm_reset = _warm_reset, \
- .roof_floor = _roof_floor, \
- .mode_sleep = _mode_sleep, \
- .vsel = _vsel, \
- }
-
-PALMAS_REG_INIT(smps12, 0, 0, 0, 0);
-PALMAS_REG_INIT(smps123, 0, 0, 0, 0);
-PALMAS_REG_INIT(smps3, 0, 0, 0, 0);
-PALMAS_REG_INIT(smps45, 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0);
-PALMAS_REG_INIT(smps457, 0, PALMAS_EXT_CONTROL_NSLEEP, 0, 0);
-PALMAS_REG_INIT(smps6, 0, 0, 0, 0);
-PALMAS_REG_INIT(smps7, 0, 0, 0, 0);
-PALMAS_REG_INIT(smps8, 0, 0, 0, 0);
-PALMAS_REG_INIT(smps9, 0, 0, 0, 0);
-PALMAS_REG_INIT(smps10_out2, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldo1, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldo2, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldo3, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldo4, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldo5, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldo6, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldo7, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldo8, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldo9, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldoln, 0, 0, 0, 0);
-PALMAS_REG_INIT(ldousb, 0, 0, 0, 0);
-PALMAS_REG_INIT(regen1, 0, 0, 0, 0);
-PALMAS_REG_INIT(regen2, 0, 0, 0, 0);
-PALMAS_REG_INIT(regen3, 0, 0, 0, 0);
-PALMAS_REG_INIT(sysen1, 0, 0, 0, 0);
-PALMAS_REG_INIT(sysen2, 0, 0, 0, 0);
-
-#define PALMAS_REG_INIT_DATA(_sname) &reg_init_data_##_sname
-static struct palmas_reg_init *roth_reg_init[PALMAS_NUM_REGS] = {
- PALMAS_REG_INIT_DATA(smps12),
- PALMAS_REG_INIT_DATA(smps123),
- PALMAS_REG_INIT_DATA(smps3),
- PALMAS_REG_INIT_DATA(smps45),
- PALMAS_REG_INIT_DATA(smps457),
- PALMAS_REG_INIT_DATA(smps6),
- PALMAS_REG_INIT_DATA(smps7),
- PALMAS_REG_INIT_DATA(smps8),
- PALMAS_REG_INIT_DATA(smps9),
- PALMAS_REG_INIT_DATA(smps10_out2),
- NULL,
- PALMAS_REG_INIT_DATA(ldo1),
- PALMAS_REG_INIT_DATA(ldo2),
- PALMAS_REG_INIT_DATA(ldo3),
- PALMAS_REG_INIT_DATA(ldo4),
- PALMAS_REG_INIT_DATA(ldo5),
- PALMAS_REG_INIT_DATA(ldo6),
- PALMAS_REG_INIT_DATA(ldo7),
- PALMAS_REG_INIT_DATA(ldo8),
- PALMAS_REG_INIT_DATA(ldo9),
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- PALMAS_REG_INIT_DATA(ldoln),
- PALMAS_REG_INIT_DATA(ldousb),
- PALMAS_REG_INIT_DATA(regen1),
- PALMAS_REG_INIT_DATA(regen2),
- PALMAS_REG_INIT_DATA(regen3),
- PALMAS_REG_INIT_DATA(sysen1),
- PALMAS_REG_INIT_DATA(sysen2),
-};
-
-static struct palmas_pmic_platform_data pmic_platform = {
-};
-
-static struct palmas_pinctrl_config palmas_pincfg[] = {
- PALMAS_PINMUX("powergood", "powergood", NULL, NULL),
- PALMAS_PINMUX("vac", "vac", NULL, NULL),
- PALMAS_PINMUX("gpio0", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio1", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio2", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio3", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio4", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio5", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio6", "gpio", NULL, NULL),
- PALMAS_PINMUX("gpio7", "gpio", NULL, NULL),
-};
-
-static struct palmas_pinctrl_platform_data palmas_pinctrl_pdata = {
- .pincfg = palmas_pincfg,
- .num_pinctrl = ARRAY_SIZE(palmas_pincfg),
- .dvfs1_enable = true,
- .dvfs2_enable = false,
-};
-
-static struct palmas_platform_data palmas_pdata = {
- .gpio_base = PALMAS_TEGRA_GPIO_BASE,
- .irq_base = PALMAS_TEGRA_IRQ_BASE,
- .pmic_pdata = &pmic_platform,
- .pinctrl_pdata = &palmas_pinctrl_pdata,
-};
-
-static struct i2c_board_info palma_device[] = {
- {
- I2C_BOARD_INFO("tps65913", 0x58),
- .irq = INT_EXTERNAL_PMU,
- .platform_data = &palmas_pdata,
- },
-};
-
-static struct regulator_consumer_supply fixed_reg_vdd_hdmi_5v0_supply[] = {
- REGULATOR_SUPPLY("vdd_hdmi_5v0", "tegradc.1"),
-};
-
-static struct regulator_consumer_supply fixed_reg_fan_5v0_supply[] = {
- REGULATOR_SUPPLY("fan_5v0", NULL),
-};
-
-/* LCD_BL_EN GMI_AD10 */
-static struct regulator_consumer_supply fixed_reg_lcd_bl_en_supply[] = {
- REGULATOR_SUPPLY("vdd_lcd_bl_en", NULL),
-};
-
-/* VDD_3V3_COM controled by Wifi */
-static struct regulator_consumer_supply fixed_reg_com_3v3_supply[] = {
- REGULATOR_SUPPLY("avdd", "bcm4329_wlan.1"),
- REGULATOR_SUPPLY("avdd", "bluedroid_pm.0"),
- REGULATOR_SUPPLY("vdd_wl_pa", "reg-userspace-consumer.2"),
-};
-
-/* VDD_1v8_COM controled by Wifi */
-static struct regulator_consumer_supply fixed_reg_com_1v8_supply[] = {
- REGULATOR_SUPPLY("dvdd", "bcm4329_wlan.1"),
- REGULATOR_SUPPLY("dvdd", "bluedroid_pm.0"),
- REGULATOR_SUPPLY("vddio", "reg-userspace-consumer.2"),
-};
-
-/* vdd_3v3_sd PH0 */
-static struct regulator_consumer_supply fixed_reg_sd_3v3_supply[] = {
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.2"),
-};
-
-/* EN_3V3_TS From TEGRA_GPIO_PH5 */
-static struct regulator_consumer_supply fixed_reg_avdd_ts_supply[] = {
- REGULATOR_SUPPLY("avdd", "spi3.2"),
-};
-
-/* EN_1V8_TS From TEGRA_GPIO_PK3 */
-static struct regulator_consumer_supply fixed_reg_dvdd_ts_supply[] = {
- REGULATOR_SUPPLY("dvdd", "spi3.2"),
-};
-
-/* EN_1V8_TS From TEGRA_GPIO_PU4 */
-static struct regulator_consumer_supply fixed_reg_dvdd_lcd_supply[] = {
- REGULATOR_SUPPLY("dvdd_lcd", NULL),
-};
-/* Macro for defining fixed regulator sub device data */
-#define FIXED_SUPPLY(_name) "fixed_reg_"#_name
-#define FIXED_REG(_id, _var, _name, _in_supply, _always_on, _boot_on, \
- _gpio_nr, _open_drain, _active_high, _boot_state, _millivolts) \
- static struct regulator_init_data ri_data_##_var = \
- { \
- .supply_regulator = _in_supply, \
- .num_consumer_supplies = \
- ARRAY_SIZE(fixed_reg_##_name##_supply), \
- .consumer_supplies = fixed_reg_##_name##_supply, \
- .constraints = { \
- .valid_modes_mask = (REGULATOR_MODE_NORMAL | \
- REGULATOR_MODE_STANDBY), \
- .valid_ops_mask = (REGULATOR_CHANGE_MODE | \
- REGULATOR_CHANGE_STATUS | \
- REGULATOR_CHANGE_VOLTAGE), \
- .always_on = _always_on, \
- .boot_on = _boot_on, \
- }, \
- }; \
- static struct fixed_voltage_config fixed_reg_##_var##_pdata = \
- { \
- .supply_name = FIXED_SUPPLY(_name), \
- .microvolts = _millivolts * 1000, \
- .gpio = _gpio_nr, \
- .gpio_is_open_drain = _open_drain, \
- .enable_high = _active_high, \
- .enabled_at_boot = _boot_state, \
- .init_data = &ri_data_##_var, \
- }; \
- static struct platform_device fixed_reg_##_var##_dev = { \
- .name = "reg-fixed-voltage", \
- .id = _id, \
- .dev = { \
- .platform_data = &fixed_reg_##_var##_pdata, \
- }, \
- }
-
-FIXED_REG(0, fan_5v0, fan_5v0,
- palmas_rails(smps10_out2), 0, 0,
- PALMAS_TEGRA_GPIO_BASE + PALMAS_GPIO6, false, true, 0, 5000);
-
-FIXED_REG(1, vdd_hdmi_5v0, vdd_hdmi_5v0,
- palmas_rails(smps10_out2), 0, 0,
- TEGRA_GPIO_PK1, false, true, 0, 5000);
-
-FIXED_REG(2, lcd_bl_en, lcd_bl_en,
- NULL, 0, 0,
- TEGRA_GPIO_PH2, false, true, 1, 5000);
-
-FIXED_REG(3, avdd_ts, avdd_ts,
- palmas_rails(regen1), 0, 0,
- TEGRA_GPIO_PH5, false, true, 0, 3300);
-
-FIXED_REG(4, dvdd_ts, dvdd_ts,
- palmas_rails(smps3), 0, 0,
- TEGRA_GPIO_PK3, false, true, 0, 1800);
-
-FIXED_REG(5, com_3v3, com_3v3,
- palmas_rails(regen1), 0, 0,
- TEGRA_GPIO_PX7, false, true, 0, 3300);
-
-FIXED_REG(6, sd_3v3, sd_3v3,
- palmas_rails(regen1), 0, 0,
- TEGRA_GPIO_PH0, false, true, 0, 3300);
-
-FIXED_REG(7, com_1v8, com_1v8,
- palmas_rails(smps3), 0, 0,
- TEGRA_GPIO_PX1, false, true, 0, 1800);
-
-FIXED_REG(8, dvdd_lcd, dvdd_lcd,
- palmas_rails(smps3), 0, 0,
- TEGRA_GPIO_PU4, false, true, 1, 1800);
-
-/*
- * Creating the fixed regulator device tables
- */
-
-#define ADD_FIXED_REG(_name) (&fixed_reg_##_name##_dev)
-
-#define ROTH_COMMON_FIXED_REG \
- ADD_FIXED_REG(usb1_vbus), \
- ADD_FIXED_REG(usb3_vbus), \
- ADD_FIXED_REG(vdd_hdmi_5v0),
-
-#define E1612_FIXED_REG \
- ADD_FIXED_REG(avdd_usb_hdmi), \
- ADD_FIXED_REG(en_1v8_cam), \
- ADD_FIXED_REG(vpp_fuse), \
-
-#define ROTH_FIXED_REG \
- ADD_FIXED_REG(en_1v8_cam_roth),
-
-/* Gpio switch regulator platform data for Roth */
-static struct platform_device *fixed_reg_devs_roth[] = {
- ADD_FIXED_REG(fan_5v0),
- ADD_FIXED_REG(vdd_hdmi_5v0),
- ADD_FIXED_REG(lcd_bl_en),
- ADD_FIXED_REG(avdd_ts),
- ADD_FIXED_REG(dvdd_ts),
- ADD_FIXED_REG(com_3v3),
- ADD_FIXED_REG(sd_3v3),
- ADD_FIXED_REG(com_1v8),
- ADD_FIXED_REG(dvdd_lcd),
-};
-
-int __init roth_palmas_regulator_init(void)
-{
- void __iomem *pmc = IO_ADDRESS(TEGRA_PMC_BASE);
- u32 pmc_ctrl;
- int i;
-
- /* TPS65913: Normal state of INT request line is LOW.
- * configure the power management controller to trigger PMU
- * interrupts when HIGH.
- */
- pmc_ctrl = readl(pmc + PMC_CTRL);
- writel(pmc_ctrl | PMC_CTRL_INTR_LOW, pmc + PMC_CTRL);
-
- /* Tracking configuration */
- reg_init_data_ldo8.config_flags =
- PALMAS_REGULATOR_CONFIG_TRACKING_ENABLE |
- PALMAS_REGULATOR_CONFIG_SUSPEND_TRACKING_DISABLE;
-
- for (i = 0; i < PALMAS_NUM_REGS ; i++) {
- pmic_platform.reg_data[i] = roth_reg_data[i];
- pmic_platform.reg_init[i] = roth_reg_init[i];
- }
-
- i2c_register_board_info(4, palma_device,
- ARRAY_SIZE(palma_device));
- return 0;
-}
-
-static int ac_online(void)
-{
- return 1;
-}
-
-static struct resource roth_pda_resources[] = {
- [0] = {
- .name = "ac",
- },
-};
-
-static struct pda_power_pdata roth_pda_data = {
- .is_ac_online = ac_online,
-};
-
-static struct platform_device roth_pda_power_device = {
- .name = "pda-power",
- .id = -1,
- .resource = roth_pda_resources,
- .num_resources = ARRAY_SIZE(roth_pda_resources),
- .dev = {
- .platform_data = &roth_pda_data,
- },
-};
-
-static struct tegra_suspend_platform_data roth_suspend_data = {
- .cpu_timer = 500,
- .cpu_off_timer = 300,
- .suspend_mode = TEGRA_SUSPEND_LP0,
- .core_timer = 0x157e,
- .core_off_timer = 2000,
- .corereq_high = true,
- .sysclkreq_high = true,
- .cpu_lp2_min_residency = 1000,
- .min_residency_crail = 20000,
-#ifdef CONFIG_TEGRA_LP1_LOW_COREVOLTAGE
- .lp1_lowvolt_support = false,
- .i2c_base_addr = 0,
- .pmuslave_addr = 0,
- .core_reg_addr = 0,
- .lp1_core_volt_low_cold = 0,
- .lp1_core_volt_low = 0,
- .lp1_core_volt_high = 0,
-#endif
-};
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-/* board parameters for cpu dfll */
-static struct tegra_cl_dvfs_cfg_param roth_cl_dvfs_param = {
- .sample_rate = 12500,
-
- .force_mode = TEGRA_CL_DVFS_FORCE_FIXED,
- .cf = 10,
- .ci = 0,
- .cg = 2,
-
- .droop_cut_value = 0xF,
- .droop_restore_ramp = 0x0,
- .scale_out_ramp = 0x0,
-};
-#endif
-
-/* TPS51632: fixed 10mV steps from 600mV to 1400mV, with offset 0x23 */
-#define PMU_CPU_VDD_MAP_SIZE ((1400000 - 600000) / 10000 + 1)
-static struct voltage_reg_map pmu_cpu_vdd_map[PMU_CPU_VDD_MAP_SIZE];
-static inline void fill_reg_map(void)
-{
- int i;
- for (i = 0; i < PMU_CPU_VDD_MAP_SIZE; i++) {
- pmu_cpu_vdd_map[i].reg_value = i + 0x23;
- pmu_cpu_vdd_map[i].reg_uV = 600000 + 10000 * i;
- }
-}
-
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
-static struct tegra_cl_dvfs_platform_data roth_cl_dvfs_data = {
- .dfll_clk_name = "dfll_cpu",
- .pmu_if = TEGRA_CL_DVFS_PMU_I2C,
- .u.pmu_i2c = {
- .fs_rate = 400000,
- .slave_addr = 0x86,
- .reg = 0x00,
- },
- .vdd_map = pmu_cpu_vdd_map,
- .vdd_map_size = PMU_CPU_VDD_MAP_SIZE,
-
- .cfg_param = &roth_cl_dvfs_param,
-};
-
-static int __init roth_cl_dvfs_init(void)
-{
- fill_reg_map();
- if (tegra_revision < TEGRA_REVISION_A02)
- roth_cl_dvfs_data.flags = TEGRA_CL_DVFS_FLAGS_I2C_WAIT_QUIET;
- tegra_cl_dvfs_device.dev.platform_data = &roth_cl_dvfs_data;
- platform_device_register(&tegra_cl_dvfs_device);
-
- return 0;
-}
-#endif
-
-static int __init roth_fixed_regulator_init(void)
-{
- if (!machine_is_roth())
- return 0;
-
- return platform_add_devices(fixed_reg_devs_roth,
- ARRAY_SIZE(fixed_reg_devs_roth));
-}
-subsys_initcall_sync(roth_fixed_regulator_init);
-
-int __init roth_regulator_init(void)
-{
- struct board_info board_info;
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
- roth_cl_dvfs_init();
-#endif
- tegra_get_board_info(&board_info);
-
- if (board_info.board_id == BOARD_P2560)
- max17048_pdata.model_data = &max17048_mdata_p2560;
- else
- max17048_pdata.model_data = &max17048_mdata_p2454;
-
- roth_palmas_regulator_init();
-
- bq2419x_boardinfo[0].irq = gpio_to_irq(TEGRA_GPIO_PJ0);
- i2c_register_board_info(4, tps51632_boardinfo, 1);
- i2c_register_board_info(0, max17048_boardinfo, 1);
- i2c_register_board_info(0, bq2419x_boardinfo, 1);
- platform_device_register(&psy_extcon_device);
- platform_device_register(&roth_pda_power_device);
- return 0;
-}
-
-int __init roth_suspend_init(void)
-{
- tegra_init_suspend(&roth_suspend_data);
- return 0;
-}
-
-int __init roth_edp_init(void)
-{
- unsigned int regulator_mA;
-
- regulator_mA = get_maximum_cpu_current_supported();
- if (!regulator_mA)
- regulator_mA = 15000;
-
- pr_info("%s: CPU regulator %d mA\n", __func__, regulator_mA);
- tegra_init_cpu_edp_limits(regulator_mA);
-
- regulator_mA = get_maximum_core_current_supported();
- if (!regulator_mA)
- regulator_mA = 4000;
-
- pr_info("%s: core regulator %d mA\n", __func__, regulator_mA);
- tegra_init_core_edp_limits(regulator_mA);
-
- return 0;
-}
-
-static struct tegra_thermtrip_pmic_data tpdata_palmas = {
- .reset_tegra = 1,
- .pmu_16bit_ops = 0,
- .controller_type = 0,
- .pmu_i2c_addr = 0x58,
- .i2c_controller_id = 4,
- .poweroff_reg_addr = 0xa0,
- .poweroff_reg_data = 0x0,
-};
-
-static struct soctherm_platform_data roth_soctherm_data = {
- .therm = {
- [THERM_CPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 0, /* Disables the trips config below */
- /*
- * Following .trips config retained for compatibility
- * with dalmore/pluto and later enablement when needed
- */
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- },
- [THERM_GPU] = {
- .zone_enable = true,
- .passive_delay = 1000,
- .hotspot_offset = 6000,
- .num_trips = 0, /* Disables the trips config below */
- /*
- * Following .trips config retained for compatibility
- * with dalmore/pluto and later enablement when needed
- */
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 90000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-heavy",
- .trip_temp = 100000,
- .trip_type = THERMAL_TRIP_HOT,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 102000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- },
- },
- },
- [THERM_PLL] = {
- .zone_enable = true,
- },
- },
- .throttle = {
- [THROTTLE_HEAVY] = {
- .priority = 100,
- .devs = {
- [THROTTLE_DEV_CPU] = {
- .enable = true,
- .depth = 80,
- },
- [THROTTLE_DEV_GPU] = {
- .enable = true,
- .depth = 80,
- },
- },
- },
- },
- .tshut_pmu_trip_data = &tpdata_palmas,
-};
-
-int __init roth_soctherm_init(void)
-{
- return tegra11_soctherm_init(&roth_soctherm_data);
-}
diff --git a/arch/arm/mach-tegra/board-roth-sdhci.c b/arch/arm/mach-tegra/board-roth-sdhci.c
deleted file mode 100644
index a61e450d7b0c..000000000000
--- a/arch/arm/mach-tegra/board-roth-sdhci.c
+++ /dev/null
@@ -1,460 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-roth-sdhci.c
- *
- * Copyright (C) 2010 Google, Inc.
- * Copyright (c) 2012-2013 NVIDIA Corporation. All rights reserved.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
-
-#include <linux/resource.h>
-#include <linux/platform_device.h>
-#include <linux/wlan_plat.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-#include <linux/clk.h>
-#include <linux/err.h>
-#include <linux/regulator/consumer.h>
-#include <linux/mmc/host.h>
-#include <linux/wl12xx.h>
-#include <linux/platform_data/mmc-sdhci-tegra.h>
-
-#include <asm/mach-types.h>
-#include <mach/irqs.h>
-#include<mach/gpio-tegra.h>
-#include <mach/io_dpd.h>
-
-#include "dvfs.h"
-#include "gpio-names.h"
-#include "board.h"
-#include "board-roth.h"
-#include "iomap.h"
-
-#define ROTH_WLAN_PWR TEGRA_GPIO_PCC5
-#define ROTH_WLAN_RST TEGRA_GPIO_INVALID
-#define ROTH_WLAN_WOW TEGRA_GPIO_PU5
-#define ROTH_SD_CD TEGRA_GPIO_PV2
-#define WLAN_PWR_STR "wlan_power"
-#define WLAN_WOW_STR "bcmsdh_sdmmc"
-
-static void (*wifi_status_cb)(int card_present, void *dev_id);
-static void *wifi_status_cb_devid;
-static int roth_wifi_status_register(void (*callback)(int , void *), void *);
-
-static int roth_wifi_reset(int on);
-static int roth_wifi_power(int on);
-static int roth_wifi_set_carddetect(int val);
-
-static struct wifi_platform_data roth_wifi_control = {
- .set_power = roth_wifi_power,
- .set_reset = roth_wifi_reset,
- .set_carddetect = roth_wifi_set_carddetect,
-};
-
-static struct resource wifi_resource[] = {
- [0] = {
- .name = "bcm4329_wlan_irq",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL
- | IORESOURCE_IRQ_SHAREABLE,
- },
-};
-
-static struct platform_device roth_wifi_device = {
- .name = "bcm4329_wlan",
- .id = 1,
- .num_resources = 1,
- .resource = wifi_resource,
- .dev = {
- .platform_data = &roth_wifi_control,
- },
-};
-
-static struct resource sdhci_resource0[] = {
- [0] = {
- .start = INT_SDMMC1,
- .end = INT_SDMMC1,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC1_BASE,
- .end = TEGRA_SDMMC1_BASE + TEGRA_SDMMC1_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource2[] = {
- [0] = {
- .start = INT_SDMMC3,
- .end = INT_SDMMC3,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC3_BASE,
- .end = TEGRA_SDMMC3_BASE + TEGRA_SDMMC3_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct resource sdhci_resource3[] = {
- [0] = {
- .start = INT_SDMMC4,
- .end = INT_SDMMC4,
- .flags = IORESOURCE_IRQ,
- },
- [1] = {
- .start = TEGRA_SDMMC4_BASE,
- .end = TEGRA_SDMMC4_BASE + TEGRA_SDMMC4_SIZE-1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
-static struct embedded_sdio_data embedded_sdio_data0 = {
- .cccr = {
- .sdio_vsn = 2,
- .multi_block = 1,
- .low_speed = 0,
- .wide_bus = 0,
- .high_power = 1,
- .high_speed = 1,
- },
- .cis = {
- .vendor = 0x02d0,
- .device = 0x4324,
- },
-};
-#endif
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data0 = {
- .mmc_data = {
- .register_status_notify = roth_wifi_status_register,
-#ifdef CONFIG_MMC_EMBEDDED_SDIO
- .embedded_sdio = &embedded_sdio_data0,
-#endif
- .built_in = 0,
- .ocr_mask = MMC_OCR_1V8_MASK,
- },
-#ifndef CONFIG_MMC_EMBEDDED_SDIO
- .pm_flags = MMC_PM_KEEP_POWER,
-#endif
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .tap_delay = 0x2,
- .trim_delay = 0x2,
- .ddr_clk_limit = 41000000,
- .uhs_mask = MMC_UHS_MASK_DDR50,
- .disable_clock_gate = true,
-};
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data2 = {
- .cd_gpio = ROTH_SD_CD,
- .wp_gpio = -1,
- .power_gpio = -1,
- .tap_delay = 0x3,
- .trim_delay = 0x3,
- .ddr_clk_limit = 41000000,
- .uhs_mask = MMC_UHS_MASK_DDR50,
- .power_off_rail = true,
-};
-
-static struct tegra_sdhci_platform_data tegra_sdhci_platform_data3 = {
- .cd_gpio = -1,
- .wp_gpio = -1,
- .power_gpio = -1,
- .is_8bit = 1,
- .tap_delay = 0x5,
- .trim_delay = 0xA,
- .ddr_trim_delay = -1,
- .ddr_clk_limit = 41000000,
- .max_clk_limit = 156000000,
- .mmc_data = {
- .built_in = 1,
- }
-};
-
-static struct platform_device tegra_sdhci_device0 = {
- .name = "sdhci-tegra",
- .id = 0,
- .resource = sdhci_resource0,
- .num_resources = ARRAY_SIZE(sdhci_resource0),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data0,
- },
-};
-
-static struct platform_device tegra_sdhci_device2 = {
- .name = "sdhci-tegra",
- .id = 2,
- .resource = sdhci_resource2,
- .num_resources = ARRAY_SIZE(sdhci_resource2),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data2,
- },
-};
-
-static struct platform_device tegra_sdhci_device3 = {
- .name = "sdhci-tegra",
- .id = 3,
- .resource = sdhci_resource3,
- .num_resources = ARRAY_SIZE(sdhci_resource3),
- .dev = {
- .platform_data = &tegra_sdhci_platform_data3,
- },
-};
-
-static int roth_wifi_status_register(
- void (*callback)(int card_present, void *dev_id),
- void *dev_id)
-{
- if (wifi_status_cb)
- return -EAGAIN;
- wifi_status_cb = callback;
- wifi_status_cb_devid = dev_id;
- return 0;
-}
-
-static int roth_wifi_set_carddetect(int val)
-{
- pr_debug("%s: %d\n", __func__, val);
- if (wifi_status_cb)
- wifi_status_cb(val, wifi_status_cb_devid);
- else
- pr_warning("%s: Nobody to notify\n", __func__);
- return 0;
-}
-
-static struct regulator *roth_vdd_com_3v3;
-static struct regulator *roth_vddio_com_1v8;
-#define ROTH_VDD_WIFI_3V3 "avdd"
-#define ROTH_VDD_WIFI_1V8 "dvdd"
-
-
-static int roth_wifi_regulator_enable(void)
-{
- int ret = 0;
-
- /* Enable COM's vdd_com_3v3 regulator*/
- if (IS_ERR_OR_NULL(roth_vdd_com_3v3)) {
- roth_vdd_com_3v3 = regulator_get(&roth_wifi_device.dev,
- ROTH_VDD_WIFI_3V3);
- if (IS_ERR(roth_vdd_com_3v3)) {
- pr_err("Couldn't get regulator "
- ROTH_VDD_WIFI_3V3 "\n");
- return PTR_ERR(roth_vdd_com_3v3);
- }
-
- ret = regulator_enable(roth_vdd_com_3v3);
- if (ret < 0) {
- pr_err("Couldn't enable regulator "
- ROTH_VDD_WIFI_3V3 "\n");
- regulator_put(roth_vdd_com_3v3);
- roth_vdd_com_3v3 = NULL;
- return ret;
- }
- }
-
- /* Enable COM's vddio_com_1v8 regulator*/
- if (IS_ERR_OR_NULL(roth_vddio_com_1v8)) {
- roth_vddio_com_1v8 = regulator_get(&roth_wifi_device.dev,
- ROTH_VDD_WIFI_1V8);
- if (IS_ERR(roth_vddio_com_1v8)) {
- pr_err("Couldn't get regulator "
- ROTH_VDD_WIFI_1V8 "\n");
- regulator_disable(roth_vdd_com_3v3);
-
- regulator_put(roth_vdd_com_3v3);
- roth_vdd_com_3v3 = NULL;
- return PTR_ERR(roth_vddio_com_1v8);
- }
-
- ret = regulator_enable(roth_vddio_com_1v8);
- if (ret < 0) {
- pr_err("Couldn't enable regulator "
- ROTH_VDD_WIFI_1V8 "\n");
- regulator_put(roth_vddio_com_1v8);
- roth_vddio_com_1v8 = NULL;
-
- regulator_disable(roth_vdd_com_3v3);
- regulator_put(roth_vdd_com_3v3);
- roth_vdd_com_3v3 = NULL;
- return ret;
- }
- }
-
- return ret;
-}
-
-static void roth_wifi_regulator_disable(void)
-{
- /* Disable COM's vdd_com_3v3 regulator*/
- if (!IS_ERR_OR_NULL(roth_vdd_com_3v3)) {
- regulator_disable(roth_vdd_com_3v3);
- regulator_put(roth_vdd_com_3v3);
- roth_vdd_com_3v3 = NULL;
- }
-
- /* Disable COM's vddio_com_1v8 regulator*/
- if (!IS_ERR_OR_NULL(roth_vddio_com_1v8)) {
- regulator_disable(roth_vddio_com_1v8);
- regulator_put(roth_vddio_com_1v8);
- roth_vddio_com_1v8 = NULL;
- }
-}
-
-static int roth_wifi_power(int on)
-{
- struct tegra_io_dpd *sd_dpd;
- int ret = 0;
-
- pr_debug("%s: %d\n", __func__, on);
- /* Enable COM's regulators on wi-fi poer on*/
- if (on == 1) {
- ret = roth_wifi_regulator_enable();
- if (ret < 0) {
- pr_err("Failed to enable COM regulators\n");
- return ret;
- }
- }
-
- /*
- * FIXME : we need to revisit IO DPD code
- * on how should multiple pins under DPD get controlled
- *
- * roth GPIO WLAN enable is part of SDMMC3 pin group
- */
- sd_dpd = tegra_io_dpd_get(&tegra_sdhci_device2.dev);
- if (sd_dpd) {
- mutex_lock(&sd_dpd->delay_lock);
- tegra_io_dpd_disable(sd_dpd);
- mutex_unlock(&sd_dpd->delay_lock);
- }
- gpio_set_value(ROTH_WLAN_PWR, on);
- mdelay(100);
-
- if (sd_dpd) {
- mutex_lock(&sd_dpd->delay_lock);
- tegra_io_dpd_enable(sd_dpd);
- mutex_unlock(&sd_dpd->delay_lock);
- }
-
- /* Disable COM's regulators on wi-fi poer off*/
- if (on != 1) {
- pr_debug("Disabling COM regulators\n");
- roth_wifi_regulator_disable();
- }
-
- return ret;
-}
-
-static int roth_wifi_reset(int on)
-{
- pr_debug("%s: do nothing\n", __func__);
- return 0;
-}
-
-static int __init roth_wifi_init(void)
-{
- int rc = 0;
-
- /* init wlan_pwr gpio */
- rc = gpio_request(ROTH_WLAN_PWR, WLAN_PWR_STR);
- /* Due to pre-init, during first time boot,
- * gpio request returns -EBUSY
- */
- if ((rc < 0) && (rc != -EBUSY)) {
- pr_err("gpio req failed:%d\n", rc);
- return rc;
- }
-
- rc = gpio_direction_output(ROTH_WLAN_PWR, 0);
- if ((rc < 0) && (rc != -EBUSY)) {
- gpio_free(ROTH_WLAN_PWR);
- return rc;
- }
-
- /* init wlan_wow gpio */
- rc = gpio_request(ROTH_WLAN_WOW, WLAN_WOW_STR);
- if (rc) {
- pr_err("gpio req failed:%d\n", rc);
- gpio_free(ROTH_WLAN_PWR);
- return rc;
- }
-
- rc = gpio_direction_input(ROTH_WLAN_WOW);
- if (rc) {
- gpio_free(ROTH_WLAN_WOW);
- gpio_free(ROTH_WLAN_PWR);
- return rc;
- }
-
- wifi_resource[0].start = wifi_resource[0].end =
- gpio_to_irq(ROTH_WLAN_WOW);
-
- platform_device_register(&roth_wifi_device);
- return rc;
-}
-
-#ifdef CONFIG_TEGRA_PREPOWER_WIFI
-static int __init roth_wifi_prepower(void)
-{
- if (!machine_is_roth())
- return 0;
-
- roth_wifi_power(1);
-
- return 0;
-}
-
-subsys_initcall_sync(roth_wifi_prepower);
-#endif
-
-int __init roth_sdhci_init(void)
-{
- int nominal_core_mv;
- int min_vcore_override_mv;
- int boot_vcore_mv;
-
- nominal_core_mv =
- tegra_dvfs_rail_get_nominal_millivolts(tegra_core_rail);
- if (nominal_core_mv > 0) {
- tegra_sdhci_platform_data0.nominal_vcore_mv = nominal_core_mv;
- tegra_sdhci_platform_data2.nominal_vcore_mv = nominal_core_mv;
- tegra_sdhci_platform_data3.nominal_vcore_mv = nominal_core_mv;
- }
- min_vcore_override_mv =
- tegra_dvfs_rail_get_override_floor(tegra_core_rail);
- if (min_vcore_override_mv) {
- tegra_sdhci_platform_data0.min_vcore_override_mv =
- min_vcore_override_mv;
- tegra_sdhci_platform_data2.min_vcore_override_mv =
- min_vcore_override_mv;
- tegra_sdhci_platform_data3.min_vcore_override_mv =
- min_vcore_override_mv;
- }
- boot_vcore_mv = tegra_dvfs_rail_get_boot_level(tegra_core_rail);
- if (boot_vcore_mv) {
- tegra_sdhci_platform_data0.boot_vcore_mv = boot_vcore_mv;
- tegra_sdhci_platform_data2.boot_vcore_mv = boot_vcore_mv;
- tegra_sdhci_platform_data3.boot_vcore_mv = boot_vcore_mv;
- }
-
- if ((tegra_sdhci_platform_data3.uhs_mask & MMC_MASK_HS200)
- && (!(tegra_sdhci_platform_data3.uhs_mask &
- MMC_UHS_MASK_DDR50)))
- tegra_sdhci_platform_data3.trim_delay = 0;
-
- platform_device_register(&tegra_sdhci_device3);
- platform_device_register(&tegra_sdhci_device2);
- platform_device_register(&tegra_sdhci_device0);
- roth_wifi_init();
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-roth-sensors.c b/arch/arm/mach-tegra/board-roth-sensors.c
deleted file mode 100644
index c7e8ac1585fc..000000000000
--- a/arch/arm/mach-tegra/board-roth-sensors.c
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-roth-sensors.c
- *
- * Copyright (c) 2012-2014 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 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 licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <linux/i2c.h>
-#include <linux/delay.h>
-#include <linux/mpu.h>
-#include <linux/gpio.h>
-#include <linux/therm_est.h>
-#include <linux/nct1008.h>
-#include <mach/edp.h>
-#include <mach/gpio-tegra.h>
-#include <mach/pinmux-t11.h>
-#include <mach/pinmux.h>
-#include <generated/mach-types.h>
-
-#include "gpio-names.h"
-#include "board.h"
-#include "board-common.h"
-#include "board-roth.h"
-#include "cpu-tegra.h"
-#include "devices.h"
-#include "tegra-board-id.h"
-#include "dvfs.h"
-
-static struct throttle_table tj_throttle_table[] = {
- /* CPU_THROT_LOW cannot be used by other than CPU */
- /* CPU, C2BUS, C3BUS, SCLK, EMC */
- { { 1810500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1785000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1759500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1734000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1708500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1683000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1657500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1632000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1606500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1581000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1555500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1530000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1504500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1479000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1453500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1428000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1402500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1377000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1351500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1326000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1300500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1275000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1249500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1224000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1198500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1173000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1147500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1122000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1096500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1071000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1045500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1020000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 994500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 969000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 943500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 918000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 892500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 867000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 841500, 564000, NO_CAP, NO_CAP, NO_CAP } },
- { { 816000, 564000, NO_CAP, NO_CAP, 792000 } },
- { { 790500, 564000, NO_CAP, 372000, 792000 } },
- { { 765000, 564000, 468000, 372000, 792000 } },
- { { 739500, 528000, 468000, 372000, 792000 } },
- { { 714000, 528000, 468000, 336000, 792000 } },
- { { 688500, 528000, 420000, 336000, 792000 } },
- { { 663000, 492000, 420000, 336000, 792000 } },
- { { 637500, 492000, 420000, 336000, 408000 } },
- { { 612000, 492000, 420000, 300000, 408000 } },
- { { 586500, 492000, 360000, 336000, 408000 } },
- { { 561000, 420000, 420000, 300000, 408000 } },
- { { 535500, 420000, 360000, 228000, 408000 } },
- { { 510000, 420000, 288000, 228000, 408000 } },
- { { 484500, 324000, 288000, 228000, 408000 } },
- { { 459000, 324000, 288000, 228000, 408000 } },
- { { 433500, 324000, 288000, 228000, 408000 } },
- { { 408000, 324000, 288000, 228000, 408000 } },
-};
-
-static struct balanced_throttle tj_throttle = {
- .throt_tab_size = ARRAY_SIZE(tj_throttle_table),
- .throt_tab = tj_throttle_table,
-};
-
-static struct throttle_table tj_hard_throttle_table[] = {
- { { 204000, 420000, 360000, 208000, 204000 } },
-};
-
-static struct balanced_throttle tj_hard_throttle = {
- .throt_tab_size = ARRAY_SIZE(tj_hard_throttle_table),
- .throt_tab = tj_hard_throttle_table,
-};
-
-static int __init roth_throttle_init(void)
-{
- if (machine_is_roth()) {
- balanced_throttle_register(&tj_throttle, "tegra-balanced");
- balanced_throttle_register(&tj_hard_throttle, "tegra-hard");
- }
-
- return 0;
-}
-module_init(roth_throttle_init);
-
-static struct nct1008_platform_data roth_nct1008_pdata = {
- .supported_hwrev = true,
- .extended_range = true,
- .conv_rate = 0x08,
- .loc_name = "soc",
-
- .sensors = {
- [LOC] = {
- .shutdown_limit = 120, /* C */
- .num_trips = 0,
- .tzp = NULL,
- },
- [EXT] = {
- .shutdown_limit = 91, /* C */
- .num_trips = 2,
- .tzp = NULL,
-
- .passive_delay = 2000,
-
- /* Thermal Throttling */
- .trips = {
- {
- .cdev_type = "tegra-balanced",
- .trip_temp = 80000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- .hysteresis = 0,
- .mask = 1,
- },
- {
- .cdev_type = "tegra-hard",
- /*shutdown_limit - 2C*/
- .trip_temp = 86000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = 1,
- .lower = 1,
- .hysteresis = 6000,
- .mask = 1,
- },
- {
- .cdev_type = "suspend_soctherm",
- .trip_temp = 50000,
- .trip_type = THERMAL_TRIP_ACTIVE,
- .upper = 1,
- .lower = 1,
- .hysteresis = 5000,
- .mask = 1,
- }
- },
- }
- }
-};
-
-static struct i2c_board_info roth_i2c4_nct1008_board_info[] = {
- {
- I2C_BOARD_INFO("nct1008", 0x4C),
- .platform_data = &roth_nct1008_pdata,
- .irq = -1,
- }
-};
-
-#define VI_PINMUX(_pingroup, _mux, _pupd, _tri, _io, _lock, _ioreset) \
- { \
- .pingroup = TEGRA_PINGROUP_##_pingroup, \
- .func = TEGRA_MUX_##_mux, \
- .pupd = TEGRA_PUPD_##_pupd, \
- .tristate = TEGRA_TRI_##_tri, \
- .io = TEGRA_PIN_##_io, \
- .lock = TEGRA_PIN_LOCK_##_lock, \
- .od = TEGRA_PIN_OD_DEFAULT, \
- .ioreset = TEGRA_PIN_IO_RESET_##_ioreset \
- }
-
-/* MPU board file definition */
-static struct mpu_platform_data mpu6050_gyro_data = {
- .int_config = 0x10,
- .level_shifter = 0,
- /* Located in board_[platformname].h */
- .orientation = MPU_GYRO_ORIENTATION,
- .sec_slave_type = SECONDARY_SLAVE_TYPE_NONE,
- .key = {0x4E, 0xCC, 0x7E, 0xEB, 0xF6, 0x1E, 0x35, 0x22,
- 0x00, 0x34, 0x0D, 0x65, 0x32, 0xE9, 0x94, 0x89},
-};
-
-static struct i2c_board_info __initdata inv_mpu6050_i2c2_board_info[] = {
- {
- I2C_BOARD_INFO(MPU_GYRO_NAME, MPU_GYRO_ADDR),
- .platform_data = &mpu6050_gyro_data,
- },
-};
-
-static void mpuirq_init(void)
-{
- int ret = 0;
- unsigned gyro_irq_gpio = MPU_GYRO_IRQ_GPIO;
- unsigned gyro_bus_num = MPU_GYRO_BUS_NUM;
- char *gyro_name = MPU_GYRO_NAME;
-
- pr_info("*** MPU START *** mpuirq_init...\n");
-
- ret = gpio_request(gyro_irq_gpio, gyro_name);
-
- if (ret < 0) {
- pr_err("%s: gpio_request failed %d\n", __func__, ret);
- return;
- }
-
- ret = gpio_direction_input(gyro_irq_gpio);
- if (ret < 0) {
- pr_err("%s: gpio_direction_input failed %d\n", __func__, ret);
- gpio_free(gyro_irq_gpio);
- return;
- }
- pr_info("*** MPU END *** mpuirq_init...\n");
-
- inv_mpu6050_i2c2_board_info[0].irq = gpio_to_irq(MPU_GYRO_IRQ_GPIO);
- i2c_register_board_info(gyro_bus_num, inv_mpu6050_i2c2_board_info,
- ARRAY_SIZE(inv_mpu6050_i2c2_board_info));
-}
-
-static int roth_nct1008_init(void)
-{
- int nct1008_port = TEGRA_GPIO_PX6;
- int ret = 0;
-
- tegra_platform_edp_init(roth_nct1008_pdata.sensors[EXT].trips,
- &roth_nct1008_pdata.sensors[EXT].num_trips,
- 0); /* edp temperature margin */
- tegra_add_all_vmin_trips(roth_nct1008_pdata.sensors[EXT].trips,
- &roth_nct1008_pdata.sensors[EXT].num_trips);
- tegra_add_cpu_vmax_trips(roth_nct1008_pdata.sensors[EXT].trips,
- &roth_nct1008_pdata.sensors[EXT].num_trips);
- tegra_add_core_edp_trips(roth_nct1008_pdata.sensors[EXT].trips,
- &roth_nct1008_pdata.sensors[EXT].num_trips);
-
- roth_i2c4_nct1008_board_info[0].irq = gpio_to_irq(nct1008_port);
- pr_info("%s: roth nct1008 irq %d", __func__, \
- roth_i2c4_nct1008_board_info[0].irq);
-
- ret = gpio_request(nct1008_port, "temp_alert");
- if (ret < 0)
- return ret;
-
- ret = gpio_direction_input(nct1008_port);
- if (ret < 0) {
- pr_info("%s: calling gpio_free(nct1008_port)", __func__);
- gpio_free(nct1008_port);
- }
-
- /* roth has thermal sensor on GEN1-I2C i.e. instance 0 */
- i2c_register_board_info(0, roth_i2c4_nct1008_board_info,
- ARRAY_SIZE(roth_i2c4_nct1008_board_info));
-
- return ret;
-}
-
-#ifdef CONFIG_TEGRA_SKIN_THROTTLE
-static struct thermal_trip_info skin_trips[] = {
- {
- .cdev_type = "skin-balanced",
- .trip_temp = 45000,
- .trip_type = THERMAL_TRIP_PASSIVE,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- .hysteresis = 0,
- },
- {
- .cdev_type = "tegra-shutdown",
- .trip_temp = 57000,
- .trip_type = THERMAL_TRIP_CRITICAL,
- .upper = THERMAL_NO_LIMIT,
- .lower = THERMAL_NO_LIMIT,
- .hysteresis = 0,
- },
-};
-
-static struct therm_est_subdevice skin_devs[] = {
- {
- .dev_data = "Tdiode",
- .coeffs = {
- 2, 1, 1, 1,
- 1, 1, 1, 1,
- 1, 1, 1, 0,
- 1, 1, 0, 0,
- 0, 0, -1, -7
- },
- },
- {
- .dev_data = "Tboard",
- .coeffs = {
- -11, -7, -5, -3,
- -3, -2, -1, 0,
- 0, 0, 1, 1,
- 1, 2, 2, 3,
- 4, 6, 11, 18
- },
- },
-};
-
-static struct therm_est_data skin_data = {
- .num_trips = ARRAY_SIZE(skin_trips),
- .trips = skin_trips,
- .toffset = 9793,
- .polling_period = 1100,
- .passive_delay = 15000,
- .tc1 = 10,
- .tc2 = 1,
- .ndevs = ARRAY_SIZE(skin_devs),
- .devs = skin_devs,
-};
-
-static struct throttle_table skin_throttle_table[] = {
- /* CPU_THROT_LOW cannot be used by other than CPU */
- /* CPU, C2BUS, C3BUS, SCLK, EMC */
- { { 1810500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1785000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1759500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1734000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1708500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1683000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1657500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1632000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1606500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1581000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1555500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1530000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1504500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1479000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1453500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1428000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1402500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1377000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1351500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1326000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1300500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1275000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1249500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1224000, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1198500, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
- { { 1173000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1147500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1122000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1096500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1071000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1045500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 1020000, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 994500, 636000, NO_CAP, NO_CAP, NO_CAP } },
- { { 969000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 943500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 918000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 892500, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 867000, 600000, NO_CAP, NO_CAP, NO_CAP } },
- { { 841500, 564000, NO_CAP, NO_CAP, NO_CAP } },
- { { 816000, 564000, NO_CAP, NO_CAP, 792000 } },
- { { 790500, 564000, NO_CAP, 372000, 792000 } },
- { { 765000, 564000, 468000, 372000, 792000 } },
- { { 739500, 528000, 468000, 372000, 792000 } },
- { { 714000, 528000, 468000, 336000, 792000 } },
- { { 688500, 528000, 420000, 336000, 792000 } },
- { { 663000, 492000, 420000, 336000, 792000 } },
- { { 637500, 492000, 420000, 336000, 408000 } },
- { { 612000, 492000, 420000, 300000, 408000 } },
- { { 586500, 492000, 360000, 336000, 408000 } },
- { { 561000, 420000, 420000, 300000, 408000 } },
- { { 535500, 420000, 360000, 228000, 408000 } },
- { { 510000, 420000, 288000, 228000, 408000 } },
- { { 484500, 324000, 288000, 228000, 408000 } },
- { { 459000, 324000, 288000, 228000, 408000 } },
- { { 433500, 324000, 288000, 228000, 408000 } },
- { { 408000, 324000, 288000, 228000, 408000 } },
-};
-
-static struct balanced_throttle skin_throttle = {
- .throt_tab_size = ARRAY_SIZE(skin_throttle_table),
- .throt_tab = skin_throttle_table,
-};
-
-static int __init roth_skin_init(void)
-{
- if (machine_is_roth()) {
- balanced_throttle_register(&skin_throttle, "skin-balanced");
- tegra_skin_therm_est_device.dev.platform_data = &skin_data;
- platform_device_register(&tegra_skin_therm_est_device);
- }
-
- return 0;
-}
-late_initcall(roth_skin_init);
-#endif
-
-static int roth_fan_est_match(struct thermal_zone_device *thz, void *data)
-{
- return (strcmp((char *)data, thz->type) == 0);
-}
-
-static int roth_fan_est_get_temp(void *data, long *temp)
-{
- struct thermal_zone_device *thz;
-
- thz = thermal_zone_device_find(data, roth_fan_est_match);
-
- if (!thz || thz->ops->get_temp(thz, temp))
- *temp = 25000;
-
- return 0;
-}
-
-/*Fan thermal estimator init data for P2454*/
-static struct therm_fan_est_data fan_est_data_p2454 = {
- .toffset = 0,
- .polling_period = 1100,
- .ndevs = 2,
- .devs = {
- {
- .dev_data = "Tdiode_soc",
- .get_temp = roth_fan_est_get_temp,
- .coeffs = {
- 100, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0
- },
- },
- {
- .dev_data = "Tboard_soc",
- .get_temp = roth_fan_est_get_temp,
- .coeffs = {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0
- },
- },
- },
- .cdev_type = "pwm-fan",
- .active_trip_temps = {0, 70000, 82000, 120000, 130000,
- 140000, 150000, 160000, 170000, 180000},
- .active_hysteresis = {0, 10000, 7000, 0, 0, 0, 0, 0, 0, 0},
-};
-
-static struct platform_device roth_fan_therm_est_device_p2454 = {
- .name = "therm-fan-est",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &fan_est_data_p2454,
- },
-};
-
-/*Fan thermal estimator data for P2560*/
-static struct therm_fan_est_data fan_est_data_p2560 = {
- .toffset = 0,
- .polling_period = 1100,
- .ndevs = 2,
- .devs = {
- {
- .dev_data = "nct_ext_soc",
- .get_temp = roth_fan_est_get_temp,
- .coeffs = {
- 100, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0
- },
- },
- {
- .dev_data = "nct_int_soc",
- .get_temp = roth_fan_est_get_temp,
- .coeffs = {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0
- },
- },
- },
- .cdev_type = "pwm-fan",
- .active_trip_temps = {0, 47000, 55000, 67000, 103000,
- 140000, 150000, 160000, 170000, 180000},
- .active_hysteresis = {0, 12000, 7000, 10000, 0, 0, 0, 0, 0, 0},
-};
-
-static struct platform_device roth_fan_therm_est_device_p2560 = {
- .name = "therm-fan-est",
- .id = -1,
- .num_resources = 0,
- .dev = {
- .platform_data = &fan_est_data_p2560,
- },
-};
-
-static int __init roth_fan_est_init(void)
-{
- struct board_info board_info;
-
- tegra_get_board_info(&board_info);
- if (board_info.board_id == BOARD_P2560)
- platform_device_register(&roth_fan_therm_est_device_p2560);
- else
- platform_device_register(&roth_fan_therm_est_device_p2454);
-
- return 0;
-}
-
-int __init roth_sensors_init(void)
-{
- int err;
-
- err = roth_nct1008_init();
- if (err)
- return err;
-
- mpuirq_init();
-
- roth_fan_est_init();
-
- return 0;
-}
diff --git a/arch/arm/mach-tegra/board-roth.c b/arch/arm/mach-tegra/board-roth.c
deleted file mode 100644
index 6ed937c1a48d..000000000000
--- a/arch/arm/mach-tegra/board-roth.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-roth.c
- *
- * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/ctype.h>
-#include <linux/platform_device.h>
-#include <linux/clk.h>
-#include <linux/serial_8250.h>
-#include <linux/i2c.h>
-#include <linux/dma-mapping.h>
-#include <linux/delay.h>
-#include <linux/i2c-tegra.h>
-#include <linux/gpio.h>
-#include <linux/input.h>
-#include <linux/platform_data/tegra_usb.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/rm31080a_ts.h>
-#include <linux/spi/spi-tegra.h>
-#include <linux/memblock.h>
-#include <linux/rfkill-gpio.h>
-#include <linux/skbuff.h>
-#include <linux/ti_wilink_st.h>
-#include <linux/regulator/consumer.h>
-#include <linux/max17048_battery.h>
-#include <linux/leds.h>
-#include <linux/leds_pwm.h>
-#include <linux/i2c/at24.h>
-#include <linux/issp.h>
-#include <linux/of_platform.h>
-#include <linux/usb/tegra_usb_phy.h>
-#include <linux/clk/tegra.h>
-#include <linux/clocksource.h>
-#include <linux/irqchip.h>
-#include <linux/tegra_fiq_debugger.h>
-
-#include <asm/system_info.h>
-
-#include <mach/irqs.h>
-#include <mach/pinmux.h>
-#include <mach/pinmux-t11.h>
-#include <mach/io_dpd.h>
-#include <mach/i2s.h>
-#include <mach/isomgr.h>
-#include <mach/tegra_asoc_pdata.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <mach/gpio-tegra.h>
-#include <mach/edp.h>
-
-#include "board.h"
-#include "board-common.h"
-#include "clock.h"
-#include "board-roth.h"
-#include "devices.h"
-#include "gpio-names.h"
-#include "iomap.h"
-#include "pm.h"
-#include "common.h"
-#include "tegra-board-id.h"
-#include "board-touch-raydium.h"
-#include "tegra-of-dev-auxdata.h"
-
-#ifdef CONFIG_BT_BLUESLEEP
-static struct rfkill_gpio_platform_data roth_bt_rfkill_pdata = {
- .name = "bt_rfkill",
- .shutdown_gpio = TEGRA_GPIO_PQ7,
- .type = RFKILL_TYPE_BLUETOOTH,
-};
-
-static struct platform_device roth_bt_rfkill_device = {
- .name = "rfkill_gpio",
- .id = -1,
- .dev = {
- .platform_data = &roth_bt_rfkill_pdata,
- },
-};
-
-static struct resource roth_bluesleep_resources[] = {
- [0] = {
- .name = "gpio_host_wake",
- .start = TEGRA_GPIO_PU6,
- .end = TEGRA_GPIO_PU6,
- .flags = IORESOURCE_IO,
- },
- [1] = {
- .name = "gpio_ext_wake",
- .start = TEGRA_GPIO_PEE1,
- .end = TEGRA_GPIO_PEE1,
- .flags = IORESOURCE_IO,
- },
- [2] = {
- .name = "host_wake",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- },
-};
-
-static struct platform_device roth_bluesleep_device = {
- .name = "bluesleep",
- .id = -1,
- .num_resources = ARRAY_SIZE(roth_bluesleep_resources),
- .resource = roth_bluesleep_resources,
-};
-
-static noinline void __init roth_setup_bt_rfkill(void)
-{
- roth_bt_rfkill_pdata.reset_gpio = TEGRA_GPIO_PQ6;
- platform_device_register(&roth_bt_rfkill_device);
-}
-
-static noinline void __init roth_setup_bluesleep(void)
-{
- roth_bluesleep_resources[2].start =
- roth_bluesleep_resources[2].end =
- gpio_to_irq(TEGRA_GPIO_PU6);
- platform_device_register(&roth_bluesleep_device);
- return;
-}
-#elif defined CONFIG_BLUEDROID_PM
-static struct resource roth_bluedroid_pm_resources[] = {
- [0] = {
- .name = "shutdown_gpio",
- .start = TEGRA_GPIO_PQ7,
- .end = TEGRA_GPIO_PQ7,
- .flags = IORESOURCE_IO,
- },
- [1] = {
- .name = "host_wake",
- .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
- },
- [2] = {
- .name = "gpio_ext_wake",
- .start = TEGRA_GPIO_PEE1,
- .end = TEGRA_GPIO_PEE1,
- .flags = IORESOURCE_IO,
- },
- [3] = {
- .name = "gpio_host_wake",
- .start = TEGRA_GPIO_PU6,
- .end = TEGRA_GPIO_PU6,
- .flags = IORESOURCE_IO,
- },
-};
-
-static struct platform_device roth_bluedroid_pm_device = {
- .name = "bluedroid_pm",
- .id = 0,
- .num_resources = ARRAY_SIZE(roth_bluedroid_pm_resources),
- .resource = roth_bluedroid_pm_resources,
-};
-
-static noinline void __init roth_setup_bluedroid_pm(void)
-{
- roth_bluedroid_pm_resources[1].start =
- roth_bluedroid_pm_resources[1].end =
- gpio_to_irq(TEGRA_GPIO_PU6);
- platform_device_register(&roth_bluedroid_pm_device);
-}
-#endif
-static __initdata struct tegra_clk_init_table roth_clk_init_table[] = {
- /* name parent rate enabled */
- { "pll_m", NULL, 0, false},
- { "hda", "pll_p", 108000000, false},
- { "hda2codec_2x", "pll_p", 48000000, false},
- { "pwm", "pll_p", 6000000, false},
- { "blink", "clk_32k", 32768, true},
- { "i2s1", "pll_a_out0", 0, false},
- { "i2s3", "pll_a_out0", 0, false},
- { "i2s4", "pll_a_out0", 0, false},
- { "spdif_out", "pll_a_out0", 0, false},
- { "d_audio", "clk_m", 12000000, false},
- { "dam0", "clk_m", 12000000, false},
- { "dam1", "clk_m", 12000000, false},
- { "dam2", "clk_m", 12000000, false},
- { "audio1", "i2s1_sync", 0, false},
- { "audio3", "i2s3_sync", 0, false},
- /* Setting vi_sensor-clk to true for validation purpose, will imapact
- * power, later set to be false.*/
- { "vi_sensor", "pll_p", 150000000, false},
- { "cilab", "pll_p", 150000000, false},
- { "cilcd", "pll_p", 150000000, false},
- { "cile", "pll_p", 150000000, false},
- { "i2c1", "pll_p", 3200000, false},
- { "i2c2", "pll_p", 3200000, false},
- { "i2c3", "pll_p", 3200000, false},
- { "i2c4", "pll_p", 3200000, false},
- { "i2c5", "pll_p", 3200000, false},
- { NULL, NULL, 0, 0},
-};
-
-#if defined(CONFIG_ARCH_TEGRA_11x_SOC)
-static struct i2c_board_info __initdata rt5640_board_info = {
- I2C_BOARD_INFO("rt5640", 0x1c),
-};
-
-static struct i2c_board_info __initdata roth_codec_tfa9887R_info = {
- I2C_BOARD_INFO("tfa9887R", 0x37),
-};
-
-static struct i2c_board_info __initdata roth_codec_tfa9887L_info = {
- I2C_BOARD_INFO("tfa9887L", 0x34),
-};
-#endif
-
-static void roth_i2c_init(void)
-{
- i2c_register_board_info(0, &rt5640_board_info, 1);
- i2c_register_board_info(0, &roth_codec_tfa9887R_info, 1);
- i2c_register_board_info(0, &roth_codec_tfa9887L_info, 1);
-}
-
-static struct platform_device *roth_uart_devices[] __initdata = {
- &tegra_uarta_device,
- &tegra_uartb_device,
- &tegra_uartc_device,
- &tegra_uartd_device,
-};
-
-static void __init uart_debug_init(void)
-{
- int debug_port_id;
-
- debug_port_id = uart_console_debug_init(3);
- if (debug_port_id < 0)
- return;
-
- roth_uart_devices[debug_port_id] = uart_console_debug_device;
-}
-
-static void __init roth_uart_init(void)
-{
- /* Register low speed only if it is selected */
- if (!is_tegra_debug_uartport_hs())
- uart_debug_init();
-
- platform_add_devices(roth_uart_devices,
- ARRAY_SIZE(roth_uart_devices));
-}
-
-static struct resource tegra_rtc_resources[] = {
- [0] = {
- .start = TEGRA_RTC_BASE,
- .end = TEGRA_RTC_BASE + TEGRA_RTC_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- [1] = {
- .start = INT_RTC,
- .end = INT_RTC,
- .flags = IORESOURCE_IRQ,
- },
-};
-
-static struct platform_device tegra_rtc_device = {
- .name = "tegra_rtc",
- .id = -1,
- .resource = tegra_rtc_resources,
- .num_resources = ARRAY_SIZE(tegra_rtc_resources),
-};
-
-static struct tegra_asoc_platform_data roth_audio_pdata = {
- .gpio_spkr_en = TEGRA_GPIO_SPKR_EN,
- .gpio_hp_det = TEGRA_GPIO_HP_DET,
- .gpio_hp_mute = -1,
- .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN,
- .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN,
- .gpio_ldo1_en = TEGRA_GPIO_LDO1_EN,
- .gpio_codec1 = TEGRA_GPIO_CODEC1_EN,
- .gpio_codec2 = TEGRA_GPIO_CODEC2_EN,
- .gpio_codec3 = TEGRA_GPIO_CODEC3_EN,
- .i2s_param[HIFI_CODEC] = {
- .audio_port_id = 1,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_I2S,
- },
- .i2s_param[BT_SCO] = {
- .audio_port_id = 3,
- .is_i2s_master = 1,
- .i2s_mode = TEGRA_DAIFMT_DSP_A,
- },
-};
-
-static struct platform_device roth_audio_device = {
- .name = "tegra-snd-rt5640",
- .id = 0,
- .dev = {
- .platform_data = &roth_audio_pdata,
- },
-};
-
-static struct platform_device tegra_camera = {
- .name = "tegra_camera",
- .id = -1,
-};
-
-
-static struct issp_platform_data roth_issp_pdata_p2454 = {
- .reset_gpio = TEGRA_GPIO_PH4,
- .data_gpio = TEGRA_GPIO_PH6,
- .clk_gpio = TEGRA_GPIO_PH7,
- .fw_name = "p2454-uc.fw",
- .si_id = {0x00, 0xA2, 0x52, 0x21}, /* CY7C64345 */
- .block_size = 128,
- .blocks = 128,
- .security_size = 64,
- .version_addr = 0x0286,
- .force_update = 1,
-};
-
-static struct platform_device roth_issp_device_p2454 = {
- .name = "issp",
- .dev = {
- .platform_data = &roth_issp_pdata_p2454,
- },
-};
-
-static struct issp_platform_data roth_issp_pdata_p2560 = {
- .reset_gpio = TEGRA_GPIO_PH4,
- .data_gpio = TEGRA_GPIO_PH6,
- .clk_gpio = TEGRA_GPIO_PH7,
- .fw_name = "p2560-uc.fw",
- .si_id = {0x00, 0xA2, 0x52, 0x21}, /* CY7C64345 */
- .block_size = 128,
- .blocks = 128,
- .security_size = 64,
- .version_addr = 0x0286,
- .force_update = 0,
-};
-
-static struct platform_device roth_issp_device_p2560 = {
- .name = "issp",
- .dev = {
- .platform_data = &roth_issp_pdata_p2560,
- },
-};
-
-static void __init roth_issp_init(void)
-{
- if (system_rev == P2454)
- platform_device_register(&roth_issp_device_p2454);
- else
- platform_device_register(&roth_issp_device_p2560);
-}
-
-static struct platform_device *roth_devices[] __initdata = {
- &tegra_pmu_device,
- &tegra_rtc_device,
- &tegra_udc_device,
-#if defined(CONFIG_TEGRA_AVP)
- &tegra_avp_device,
-#endif
- &tegra_camera,
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_SE)
- &tegra11_se_device,
-#endif
- &tegra_ahub_device,
- &tegra_dam_device0,
- &tegra_dam_device1,
- &tegra_dam_device2,
- &tegra_i2s_device1,
- &tegra_i2s_device3,
- &tegra_i2s_device4,
- &tegra_spdif_device,
- &spdif_dit_device,
- &bluetooth_dit_device,
- &roth_audio_device,
- &tegra_hda_device,
-#if defined(CONFIG_CRYPTO_DEV_TEGRA_AES)
- &tegra_aes_device,
-#endif
-};
-
-#ifdef CONFIG_USB_SUPPORT
-static struct tegra_usb_platform_data tegra_udc_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_DEVICE,
- .u_data.dev = {
- .vbus_pmu_irq = 0,
- .vbus_gpio = -1,
- .charging_supported = true,
- .remote_wakeup_supported = false,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 8,
- .xcvr_lsfslew = 2,
- .xcvr_lsrslew = 2,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- },
-};
-
-static struct tegra_usb_platform_data tegra_ehci1_utmi_pdata = {
- .port_otg = true,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = true,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = false,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 15,
- .xcvr_lsfslew = 2,
- .xcvr_lsrslew = 2,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- .vbus_oc_map = 0x4,
- },
-};
-
-static struct tegra_usb_platform_data tegra_ehci3_utmi_pdata = {
- .port_otg = false,
- .has_hostpc = true,
- .unaligned_dma_buf_supported = false,
- .phy_intf = TEGRA_USB_PHY_INTF_UTMI,
- .op_mode = TEGRA_USB_OPMODE_HOST,
- .u_data.host = {
- .vbus_gpio = -1,
- .hot_plug = true,
- .remote_wakeup_supported = true,
- .power_off_on_suspend = false,
- },
- .u_cfg.utmi = {
- .hssync_start_delay = 0,
- .elastic_limit = 16,
- .idle_wait_delay = 17,
- .term_range_adj = 6,
- .xcvr_setup = 8,
- .xcvr_lsfslew = 2,
- .xcvr_lsrslew = 2,
- .xcvr_setup_offset = 0,
- .xcvr_use_fuses = 1,
- .vbus_oc_map = 0x5,
- },
-};
-
-static struct tegra_usb_otg_data tegra_otg_pdata = {
- .ehci_device = &tegra_ehci1_device,
- .ehci_pdata = &tegra_ehci1_utmi_pdata,
-};
-
-static void roth_usb_init(void)
-{
- tegra_otg_device.dev.platform_data = &tegra_otg_pdata;
- platform_device_register(&tegra_otg_device);
-
- /* Setup the udc platform data */
- tegra_udc_device.dev.platform_data = &tegra_udc_pdata;
-
- tegra_ehci3_device.dev.platform_data = &tegra_ehci3_utmi_pdata;
- platform_device_register(&tegra_ehci3_device);
-}
-
-#else
-static void roth_usb_init(void) { }
-#endif
-
-static void roth_audio_init(void)
-{
- roth_audio_pdata.codec_name = "rt5640.0-001c";
- roth_audio_pdata.codec_dai_name = "rt5640-aif1";
-}
-
-static __initdata struct tegra_clk_init_table touch_clk_init_table[] = {
- /* name parent rate enabled */
- { "extern2", "pll_p", 41000000, false},
- { "clk_out_2", "extern2", 40800000, false},
- { NULL, NULL, 0, 0},
-};
-
-struct rm_spi_ts_platform_data rm31080ts_roth_data = {
- .gpio_reset = TOUCH_GPIO_RST_RAYDIUM_SPI,
- .config = 0,
- .platform_id = RM_PLATFORM_R005,
- .name_of_clock = "clk_out_2",
- .name_of_clock_con = "extern2",
-};
-
-static struct tegra_spi_device_controller_data dev_cdata = {
- .rx_clk_tap_delay = 16,
- .tx_clk_tap_delay = 16,
-};
-
-struct spi_board_info rm31080a_roth_spi_board[1] = {
- {
- .modalias = "rm_ts_spidev",
- .bus_num = 3,
- .chip_select = 2,
- .max_speed_hz = 12 * 1000 * 1000,
- .mode = SPI_MODE_0,
- .controller_data = &dev_cdata,
- .platform_data = &rm31080ts_roth_data,
- },
-};
-
-static int __init roth_touch_init(void)
-{
- struct board_info board_info;
- int touch_panel_id = tegra_get_touch_panel_id();
-
- tegra_get_board_info(&board_info);
- if (touch_panel_id == PANEL_TPK ||
- touch_panel_id == PANEL_WINTEK) {
- int err;
- err = gpio_request(TOUCH_GPIO_CLK, "touch-gpio-clk");
- if (err < 0)
- pr_err("%s: gpio_request failed %d\n",
- __func__, err);
- else {
- err = gpio_direction_output(TOUCH_GPIO_CLK, 0);
- if (err < 0)
- pr_err("%s: set output failed %d\n",
- __func__, err);
- gpio_free(TOUCH_GPIO_CLK);
- }
- tegra_pinmux_set_pullupdown(TOUCH_GPIO_CLK_PG,
- TEGRA_PUPD_NORMAL);
- tegra_pinmux_set_tristate(TOUCH_GPIO_CLK_PG,
- TEGRA_TRI_TRISTATE);
- rm31080ts_roth_data.name_of_clock = NULL;
- rm31080ts_roth_data.name_of_clock_con = NULL;
- } else
- tegra_clk_init_from_table(touch_clk_init_table);
- rm31080a_roth_spi_board[0].irq =
- gpio_to_irq(TOUCH_GPIO_IRQ_RAYDIUM_SPI);
- touch_init_raydium(TOUCH_GPIO_IRQ_RAYDIUM_SPI,
- TOUCH_GPIO_RST_RAYDIUM_SPI,
- &rm31080ts_roth_data,
- &rm31080a_roth_spi_board[0],
- ARRAY_SIZE(rm31080a_roth_spi_board));
- return 0;
-}
-
-static void __init tegra_roth_init(void)
-{
- tegra_clk_init_from_table(roth_clk_init_table);
- tegra_clk_verify_parents();
- tegra_soc_device_init("roth");
- roth_i2c_init();
- roth_usb_init();
- roth_uart_init();
- roth_led_init();
- roth_audio_init();
- platform_add_devices(roth_devices, ARRAY_SIZE(roth_devices));
- tegra_io_dpd_init();
- roth_regulator_init();
- roth_sdhci_init();
- roth_suspend_init();
- roth_emc_init();
- roth_edp_init();
- isomgr_init();
- roth_touch_init();
- /* roth will pass a null board id to panel_init */
- roth_panel_init(0);
- roth_kbc_init();
-#ifdef CONFIG_BT_BLUESLEEP
- roth_setup_bluesleep();
- roth_setup_bt_rfkill();
-#elif defined CONFIG_BLUEDROID_PM
- roth_setup_bluedroid_pm();
-#endif
-#ifdef CONFIG_TEGRA_WDT_RECOVERY
- tegra_wdt_recovery_init();
-#endif
- tegra_serial_debug_init(TEGRA_UARTD_BASE, INT_WDT_CPU, NULL, -1, -1);
- roth_sensors_init();
- roth_soctherm_init();
- roth_fan_init();
- tegra_register_fuse();
- roth_issp_init();
-}
-
-#ifdef CONFIG_USE_OF
-struct of_dev_auxdata roth_auxdata_lookup[] __initdata = {
- OF_DEV_AUXDATA("nvidia,tegra114-host1x", TEGRA_HOST1X_BASE, "host1x",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr3d", TEGRA_GR3D_BASE, "gr3d", NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-gr2d", TEGRA_GR2D_BASE, "gr2d", NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-msenc", TEGRA_MSENC_BASE, "msenc",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-vi", TEGRA_VI_BASE, "vi", NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-isp", TEGRA_ISP_BASE, "isp", NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-tsec", TEGRA_TSEC_BASE, "tsec", NULL),
- T114_SPI_OF_DEV_AUXDATA,
- T114_I2C_OF_DEV_AUXDATA,
- OF_DEV_AUXDATA("nvidia,tegra114-nvavp", 0x60001000, "nvavp",
- NULL),
- OF_DEV_AUXDATA("nvidia,tegra114-pwm", 0x7000a000, "tegra-pwm", NULL),
-
- {}
-};
-#endif
-
-static void __init tegra_roth_dt_init(void)
-{
-#ifdef CONFIG_USE_OF
- of_platform_populate(NULL,
- of_default_bus_match_table, roth_auxdata_lookup,
- &platform_bus);
-#endif
-
- tegra_roth_init();
-}
-
-static void __init tegra_roth_reserve(void)
-{
-#if defined(CONFIG_NVMAP_CONVERT_CARVEOUT_TO_IOVMM)
- /* 1920*1200*4*2 = 18432000 bytes */
- tegra_reserve(0, SZ_16M + SZ_2M, SZ_4M);
-#else
- tegra_reserve(SZ_128M, SZ_16M + SZ_2M, SZ_4M);
-#endif
-}
-
-static const char * const roth_dt_board_compat[] = {
- "nvidia,roth",
- NULL
-};
-
-MACHINE_START(ROTH, "roth")
- .atag_offset = 0x100,
- .smp = smp_ops(tegra_smp_ops),
- .map_io = tegra_map_common_io,
- .reserve = tegra_roth_reserve,
- .init_early = tegra11x_init_early,
- .init_irq = irqchip_init,
- .init_time = clocksource_of_init,
- .init_machine = tegra_roth_dt_init,
- .restart = tegra_assert_system_reset,
- .dt_compat = roth_dt_board_compat,
-MACHINE_END
diff --git a/arch/arm/mach-tegra/board-roth.h b/arch/arm/mach-tegra/board-roth.h
deleted file mode 100644
index 265c1e93cd4b..000000000000
--- a/arch/arm/mach-tegra/board-roth.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * arch/arm/mach-tegra/board-roth.h
- *
- * Copyright (c) 2012 - 2013, NVIDIA Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef _MACH_TEGRA_BOARD_ROTH_H
-#define _MACH_TEGRA_BOARD_ROTH_H
-
-#include <mach/irqs.h>
-#include <linux/mfd/max77663-core.h>
-#include "gpio-names.h"
-
-#define PMC_WAKE_STATUS 0x14
-#define PMC_WAKE2_STATUS 0x168
-
-/* External peripheral act as gpio */
-/* MAX77663 GPIO */
-#define MAX77663_GPIO_BASE TEGRA_NR_GPIOS
-#define PALMAS_TEGRA_GPIO_BASE TEGRA_NR_GPIOS
-#define MAX77663_GPIO_END (MAX77663_GPIO_BASE + MAX77663_GPIO_NR)
-
-/* Hall Effect Sensor GPIO */
-#define TEGRA_GPIO_HALL TEGRA_GPIO_PS0
-
-/* Audio-related GPIOs */
-#define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PW3
-#define TEGRA_GPIO_LDO1_EN TEGRA_GPIO_PV3
-#define TEGRA_GPIO_CODEC1_EN TEGRA_GPIO_PP3
-#define TEGRA_GPIO_CODEC2_EN TEGRA_GPIO_PP1
-#define TEGRA_GPIO_CODEC3_EN TEGRA_GPIO_PV0
-
-#define TEGRA_GPIO_SPKR_EN -1
-#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PR7
-#define TEGRA_GPIO_INT_MIC_EN -1
-#define TEGRA_GPIO_EXT_MIC_EN -1
-
-#define TEGRA_GPIO_W_DISABLE TEGRA_GPIO_PDD7
-#define TEGRA_GPIO_MODEM_RSVD1 TEGRA_GPIO_PV0
-#define TEGRA_GPIO_MODEM_RSVD2 TEGRA_GPIO_PH7
-
-/* External peripheral act as interrupt controller */
-/* MAX77663 IRQs */
-#define PALMAS_TEGRA_IRQ_BASE TEGRA_NR_IRQS
-#define MAX77663_IRQ_BASE TEGRA_NR_IRQS
-#define MAX77663_IRQ_END (MAX77663_IRQ_BASE + MAX77663_IRQ_NR)
-#define MAX77663_IRQ_ACOK_RISING MAX77663_IRQ_ONOFF_ACOK_RISING
-
-/* I2C related GPIOs */
-#define TEGRA_GPIO_I2C1_SCL TEGRA_GPIO_PC4
-#define TEGRA_GPIO_I2C1_SDA TEGRA_GPIO_PC5
-#define TEGRA_GPIO_I2C2_SCL TEGRA_GPIO_PT5
-#define TEGRA_GPIO_I2C2_SDA TEGRA_GPIO_PT6
-#define TEGRA_GPIO_I2C3_SCL TEGRA_GPIO_PBB1
-#define TEGRA_GPIO_I2C3_SDA TEGRA_GPIO_PBB2
-#define TEGRA_GPIO_I2C4_SCL TEGRA_GPIO_PV4
-#define TEGRA_GPIO_I2C4_SDA TEGRA_GPIO_PV5
-#define TEGRA_GPIO_I2C5_SCL TEGRA_GPIO_PZ6
-#define TEGRA_GPIO_I2C5_SDA TEGRA_GPIO_PZ7
-
-/* Touchscreen definitions */
-#define TOUCH_GPIO_IRQ_RAYDIUM_SPI TEGRA_GPIO_PK2
-#define TOUCH_GPIO_RST_RAYDIUM_SPI TEGRA_GPIO_PK4
-
-#define TOUCH_GPIO_CLK TEGRA_GPIO_PW5
-#define TOUCH_GPIO_CLK_PG TEGRA_PINGROUP_CLK2_OUT
-
-enum panel_id {
- PANEL_RESERVED = 0,
- PANEL_WINTEK,
- PANEL_TPK,
- PANEL_TOUCH_TURNS,
-};
-
-/* Invensense MPU Definitions */
-#define MPU_GYRO_NAME "mpu6050"
-#define MPU_GYRO_IRQ_GPIO TEGRA_GPIO_PR3
-#define MPU_GYRO_ADDR 0x68
-#define MPU_GYRO_BUS_NUM 0
-#define MPU_GYRO_ORIENTATION { 0, 1, 0, 0, 0, 1, 1, 0, 0 }
-#define MPU_COMPASS_NAME "ak8975"
-#define MPU_COMPASS_IRQ_GPIO 0
-#define MPU_COMPASS_ADDR 0x0D
-#define MPU_COMPASS_BUS_NUM 0
-#define MPU_COMPASS_ORIENTATION MTMAT_TOP_CCW_270
-
-enum {
- P2454 = 1,
- P2560,
-};
-
-int roth_regulator_init(void);
-int roth_suspend_init(void);
-int roth_sdhci_init(void);
-int roth_sensors_init(void);
-int roth_emc_init(void);
-int roth_edp_init(void);
-int roth_panel_init(int board_id);
-int roth_kbc_init(void);
-int roth_soctherm_init(void);
-int roth_fan_init(void);
-int roth_led_init(void);
-
-#endif