Re: [U-Boot] [PATCH] am33xx: Stop modifying certain EMIF4D registers

2013-11-18 Thread Vaibhav Bedia
Hi,

On Thu, Nov 7, 2013 at 4:16 PM, Tom Rini tr...@ti.com wrote:

 It's an open question on if TI81xx needs these set or was simply also
 setting them for historical reasons (and in turn was inherited by am335x).


Based on Matt's test TI814x looks ok. I recall putting this code there
for PG1.0 of TI8168 but i'm not sure if that version of silicon is out in
the wild. If someone reports any issues with TI8168 it should be trivial
to add this back in. For now this change looks fine to me.

Regards,
Vaibhav
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] am33xx: Stop modifying certain EMIF4D registers

2013-11-15 Thread Matt Porter
On Thu, Nov 07, 2013 at 11:42:57AM -0500, Tom Rini wrote:
 Based on the definitive guide to EMIF configuration[1] certain registers
 that we have been modifying (and are documented registers) should be
 left in their reset values rather than modified.  This has been tested
 on AM335x GP EVM and Beaglebone White.
 
 [1]: http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips
 Cc: Enric Balletbo i Serra eballe...@iseebcn.com
 Cc: Javier Martinez Canillas jav...@dowhile0.org
 Cc: Heiko Schocher h...@denx.de
 Cc: Matt Porter matt.por...@linaro.org
 Cc: Lars Poeschel poesc...@lemonage.de
 Signed-off-by: Tom Rini tr...@ti.com
 ---
  arch/arm/cpu/armv7/am33xx/ddr.c |7 --
  arch/arm/include/asm/arch-am33xx/ddr_defs.h |   31 
 ++-
  board/isee/igep0033/board.c |4 
  board/phytec/pcm051/board.c |4 
  board/siemens/dxr2/board.c  |4 
  board/siemens/pxm2/board.c  |5 -
  board/siemens/rut/board.c   |5 -
  board/ti/am335x/board.c |   17 ---
  board/ti/ti814x/evm.c   |5 -
  board/ti/ti816x/evm.c   |   17 ---
  10 files changed, 6 insertions(+), 93 deletions(-)

Working on my PG1.0 TI814x EVM

Tested-by: Matt Porter matt.por...@linaro.org

-Matt
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] am33xx: Stop modifying certain EMIF4D registers

2013-11-07 Thread Tom Rini
Based on the definitive guide to EMIF configuration[1] certain registers
that we have been modifying (and are documented registers) should be
left in their reset values rather than modified.  This has been tested
on AM335x GP EVM and Beaglebone White.

[1]: http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips
Cc: Enric Balletbo i Serra eballe...@iseebcn.com
Cc: Javier Martinez Canillas jav...@dowhile0.org
Cc: Heiko Schocher h...@denx.de
Cc: Matt Porter matt.por...@linaro.org
Cc: Lars Poeschel poesc...@lemonage.de
Signed-off-by: Tom Rini tr...@ti.com
---
 arch/arm/cpu/armv7/am33xx/ddr.c |7 --
 arch/arm/include/asm/arch-am33xx/ddr_defs.h |   31 ++-
 board/isee/igep0033/board.c |4 
 board/phytec/pcm051/board.c |4 
 board/siemens/dxr2/board.c  |4 
 board/siemens/pxm2/board.c  |5 -
 board/siemens/rut/board.c   |5 -
 board/ti/am335x/board.c |   17 ---
 board/ti/ti814x/evm.c   |5 -
 board/ti/ti816x/evm.c   |   17 ---
 10 files changed, 6 insertions(+), 93 deletions(-)

diff --git a/arch/arm/cpu/armv7/am33xx/ddr.c b/arch/arm/cpu/armv7/am33xx/ddr.c
index fa697c7..5b0454c 100644
--- a/arch/arm/cpu/armv7/am33xx/ddr.c
+++ b/arch/arm/cpu/armv7/am33xx/ddr.c
@@ -89,15 +89,12 @@ void config_ddr_phy(const struct emif_regs *regs, int nr)
 void config_cmd_ctrl(const struct cmd_control *cmd, int nr)
 {
writel(cmd-cmd0csratio, ddr_cmd_reg[nr]-cm0csratio);
-   writel(cmd-cmd0dldiff, ddr_cmd_reg[nr]-cm0dldiff);
writel(cmd-cmd0iclkout, ddr_cmd_reg[nr]-cm0iclkout);
 
writel(cmd-cmd1csratio, ddr_cmd_reg[nr]-cm1csratio);
-   writel(cmd-cmd1dldiff, ddr_cmd_reg[nr]-cm1dldiff);
writel(cmd-cmd1iclkout, ddr_cmd_reg[nr]-cm1iclkout);
 
writel(cmd-cmd2csratio, ddr_cmd_reg[nr]-cm2csratio);
-   writel(cmd-cmd2dldiff, ddr_cmd_reg[nr]-cm2dldiff);
writel(cmd-cmd2iclkout, ddr_cmd_reg[nr]-cm2iclkout);
 }
 
@@ -121,10 +118,6 @@ void config_ddr_data(const struct ddr_data *data, int nr)
(ddr_data_reg[nr]+i)-dt0fwsratio0);
writel(data-datawrsratio0,
(ddr_data_reg[nr]+i)-dt0wrsratio0);
-   writel(data-datauserank0delay,
-   (ddr_data_reg[nr]+i)-dt0rdelays0);
-   writel(data-datadldiff0,
-   (ddr_data_reg[nr]+i)-dt0dldiff0);
}
 }
 
diff --git a/arch/arm/include/asm/arch-am33xx/ddr_defs.h 
b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
index fe48b5f..e5bda64 100644
--- a/arch/arm/include/asm/arch-am33xx/ddr_defs.h
+++ b/arch/arm/include/asm/arch-am33xx/ddr_defs.h
@@ -18,7 +18,6 @@
 #define VTP_CTRL_READY (0x1  5)
 #define VTP_CTRL_ENABLE(0x1  6)
 #define VTP_CTRL_START_EN  (0x1)
-#define PHY_DLL_LOCK_DIFF  0x0
 #define DDR_CKE_CTRL_NORMAL0x1
 #define PHY_EN_DYN_PWRDN   (0x1  20)
 
@@ -29,7 +28,6 @@
 #define MT47H128M16RT25E_EMIF_TIM3 0x033F
 #define MT47H128M16RT25E_EMIF_SDCFG0x41805332
 #define MT47H128M16RT25E_EMIF_SDREF0x081a
-#define MT47H128M16RT25E_DLL_LOCK_DIFF 0x0
 #define MT47H128M16RT25E_RATIO 0x80
 #define MT47H128M16RT25E_INVERT_CLKOUT 0x00
 #define MT47H128M16RT25E_RD_DQS0x12
@@ -38,7 +36,6 @@
 #define MT47H128M16RT25E_PHY_GATELVL   0x00
 #define MT47H128M16RT25E_PHY_WR_DATA   0x40
 #define MT47H128M16RT25E_PHY_FIFO_WE   0x80
-#define MT47H128M16RT25E_PHY_RANK0_DELAY   0x1
 #define MT47H128M16RT25E_IOCTRL_VALUE  0x18B
 
 /* Micron MT41J128M16JT-125 */
@@ -49,7 +46,6 @@
 #define MT41J128MJT125_EMIF_SDCFG  0x61C04AB2
 #define MT41J128MJT125_EMIF_SDREF  0x093B
 #define MT41J128MJT125_ZQ_CFG  0x50074BE4
-#define MT41J128MJT125_DLL_LOCK_DIFF   0x1
 #define MT41J128MJT125_RATIO   0x40
 #define MT41J128MJT125_INVERT_CLKOUT   0x1
 #define MT41J128MJT125_RD_DQS  0x3B
@@ -66,7 +62,6 @@
 #define MT41J256M8HX15E_EMIF_SDCFG 0x61C04B32
 #define MT41J256M8HX15E_EMIF_SDREF 0x093B
 #define MT41J256M8HX15E_ZQ_CFG 0x50074BE4
-#define MT41J256M8HX15E_DLL_LOCK_DIFF  0x1
 #define MT41J256M8HX15E_RATIO  0x40
 #define MT41J256M8HX15E_INVERT_CLKOUT  0x1
 #define MT41J256M8HX15E_RD_DQS 0x3B
@@ -83,7 +78,6 @@
 #define MT41K256M16HA125E_EMIF_SDCFG   0x61C05332
 #define MT41K256M16HA125E_EMIF_SDREF   0xC30
 #define MT41K256M16HA125E_ZQ_CFG   0x50074BE4
-#define MT41K256M16HA125E_DLL_LOCK_DIFF0x1
 #define MT41K256M16HA125E_RATIO0x80
 #define MT41K256M16HA125E_INVERT_CLKOUT   

Re: [U-Boot] [PATCH] am33xx: Stop modifying certain EMIF4D registers

2013-11-07 Thread Vaibhav Bedia
Hi Tom,

On Thu, Nov 7, 2013 at 11:42 AM, Tom Rini tr...@ti.com wrote:
 Based on the definitive guide to EMIF configuration[1] certain registers
 that we have been modifying (and are documented registers) should be
 left in their reset values rather than modified.  This has been tested
 on AM335x GP EVM and Beaglebone White.


[...]

 diff --git a/board/ti/ti814x/evm.c b/board/ti/ti814x/evm.c
 index e406326..0b76a77 100644
 --- a/board/ti/ti814x/evm.c
 +++ b/board/ti/ti814x/evm.c
 @@ -33,15 +33,12 @@ static struct ctrl_dev *cdev = (struct ctrl_dev 
 *)CTRL_DEVICE_BASE;
  #ifdef CONFIG_SPL_BUILD
  static const struct cmd_control evm_ddr2_cctrl_data = {
 .cmd0csratio= 0x80,
 -   .cmd0dldiff = 0x04,
 .cmd0iclkout= 0x00,

 .cmd1csratio= 0x80,
 -   .cmd1dldiff = 0x04,
 .cmd1iclkout= 0x00,

 .cmd2csratio= 0x80,
 -   .cmd2dldiff = 0x04,
 .cmd2iclkout= 0x00,
  };

 @@ -77,8 +74,6 @@ static const struct ddr_data evm_ddr2_data = {
 .datagiratio0   = ((010) | (00)),
 .datafwsratio0  = ((0x9010) | (0x900)),
 .datawrsratio0  = ((0x5010) | (0x500)),
 -   .datauserank0delay  = 1,
 -   .datadldiff0= 0x4,
  };

  void set_uart_mux_conf(void)
 diff --git a/board/ti/ti816x/evm.c b/board/ti/ti816x/evm.c
 index 74d35e9..a53859e 100644
 --- a/board/ti/ti816x/evm.c
 +++ b/board/ti/ti816x/evm.c
 @@ -59,21 +59,16 @@ static struct ddr_data ddr2_data = {
 .datagiratio0   = ((0x010) | (0x00)),
 .datafwsratio0  = ((0x13A10) | (0x13A0)),
 .datawrsratio0  = ((0x8A10) | (0x8A0)),
 -   .datauserank0delay  = 0x1,
 -   .datadldiff0= 0x0, /* depend on cpu rev, set later */
  };

  static struct cmd_control ddr2_ctrl = {
 .cmd0csratio= 0x80,
 -   .cmd0dldiff = 0x04, /* reset value is 0x4 */
 .cmd0iclkout= 0x00,

 .cmd1csratio= 0x80,
 -   .cmd1dldiff = 0x04, /* reset value is 0x4 */
 .cmd1iclkout= 0x00,

 .cmd2csratio= 0x80,
 -   .cmd2dldiff = 0x04, /* reset value is 0x4 */
 .cmd2iclkout= 0x00,

  };
 @@ -150,21 +145,16 @@ static struct ddr_data ddr3_data = {
 .datagiratio0   = ((0x2010) | 0x200),
 .datafwsratio0  = ((RD_DQS_GATE10) | (RD_DQS_GATE0)),
 .datawrsratio0  = (((WR_DQS+0x40)10) | ((WR_DQS+0x40)0)),
 -   .datauserank0delay  = 0x1,
 -   .datadldiff0= 0x0, /* depend on cpu rev, set later */
  };

  static const struct cmd_control ddr3_ctrl = {
 .cmd0csratio= 0x100,
 -   .cmd0dldiff = 0x004, /* reset value is 0x4 */
 .cmd0iclkout= 0x001,

 .cmd1csratio= 0x100,
 -   .cmd1dldiff = 0x004, /* reset value is 0x4 */
 .cmd1iclkout= 0x001,

 .cmd2csratio= 0x100,
 -   .cmd2dldiff = 0x004, /* reset value is 0x4 */
 .cmd2iclkout= 0x001,
  };

 @@ -198,11 +188,6 @@ void sdram_init(void)
 config_dmm(evm_lisa_map_regs);

  #ifdef CONFIG_TI816X_EVM_DDR2
 -   ddr2_data.datadldiff0 = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -   ddr2_ctrl.cmd0dldiff = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -   ddr2_ctrl.cmd1dldiff = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -   ddr2_ctrl.cmd2dldiff = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -
 if (CONFIG_TI816X_USE_EMIF0) {
 ddr2_emif0_regs.emif_ddr_phy_ctlr_1 =
 (get_cpu_rev() == 0x1 ? 0x010B : 0x030B);
 @@ -217,8 +202,6 @@ void sdram_init(void)
  #endif

  #ifdef CONFIG_TI816X_EVM_DDR3
 -   ddr3_data.datadldiff0 = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -

From a quick glance it looks like at least earlier variants of TI81xx
used these registers to work around some bugs? This might end up
breaking those. Note that TI81xx DDR frequencies are much higher
compared to AM335x so issues related to this might not show up
right now.

Regards,
Vaibhav
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] am33xx: Stop modifying certain EMIF4D registers

2013-11-07 Thread Tom Rini
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 11/07/2013 04:12 PM, Vaibhav Bedia wrote:
 Hi Tom,
 
 On Thu, Nov 7, 2013 at 11:42 AM, Tom Rini tr...@ti.com wrote:
 Based on the definitive guide to EMIF configuration[1] certain registers
 that we have been modifying (and are documented registers) should be
 left in their reset values rather than modified.  This has been tested
 on AM335x GP EVM and Beaglebone White.

 
 [...]
[snip]
 @@ -198,11 +188,6 @@ void sdram_init(void)
 config_dmm(evm_lisa_map_regs);

  #ifdef CONFIG_TI816X_EVM_DDR2
 -   ddr2_data.datadldiff0 = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -   ddr2_ctrl.cmd0dldiff = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -   ddr2_ctrl.cmd1dldiff = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -   ddr2_ctrl.cmd2dldiff = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -
 if (CONFIG_TI816X_USE_EMIF0) {
 ddr2_emif0_regs.emif_ddr_phy_ctlr_1 =
 (get_cpu_rev() == 0x1 ? 0x010B : 0x030B);
 @@ -217,8 +202,6 @@ void sdram_init(void)
  #endif

  #ifdef CONFIG_TI816X_EVM_DDR3
 -   ddr3_data.datadldiff0 = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
 -
 
 From a quick glance it looks like at least earlier variants of TI81xx
 used these registers to work around some bugs? This might end up
 breaking those. Note that TI81xx DDR frequencies are much higher
 compared to AM335x so issues related to this might not show up
 right now.

It's an open question on if TI81xx needs these set or was simply also
setting them for historical reasons (and in turn was inherited by am335x).

- -- 
Tom
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJSfAM3AAoJENk4IS6UOR1WjYsP/2pTuP2Mufp7jRjgM4NVA56F
AL5H2e/mOmgn9qP67fkg4zk+LB+OvWAJOrilTNvx21hJUoSUwRTi8kTtT88o91FG
nPZlE0RMwZrVLR+paW96TfX8//9OVuCun9vqYvmCBpR4UYNQZHDr4KsxkLORqV+m
zNG6rTOSL8lGy9YsBWz0pcMvj6IxyrhXxkSJvD2h0xaApvC8Tdes3erqJlVXaJKs
sqcSv9cgE2mthQxzI7pemALxY4R9O3LcXCuB7Ad+vRgqlxR/SO5ON9zWRqLQNH7x
SM6ZtPO6yNT3eEqOxS6jyYGmanlgtsNBhrcz8fNtrnzbF9by6mCPvXMvPy36uTpR
gplwMOgxfsKQn6xosMdwj/5U8sQwadXTb1vvD2Dunmz4JEPE7IUsHbSLiXEz47QK
41x3zAb1yTk2Ku+zbhloD5osMtMlyekTqImAXviDP/v0vgXO5kRhbBEllAMtSBtP
yrXbNhH6r1ZyZmWdbvhp62DYflvEs37i9Miv/Zu6m2p8gI5IndzvmUxLc3h5jRAv
eIqpw+DYQlJx1s0P2s9IjmKDFlgTSyPYcjWL9jk5GKd2b2D+hLYoDfhsKMeNSqZm
Mym5cHlQCgYVqs+KE12GJ4pD3PA1gHXFd39I/z9ML4ZbDbXiirsZh2Ikpg2Tdk6j
YZzCdrrXxGBd2/Wi7mNd
=XIox
-END PGP SIGNATURE-
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] am33xx: Stop modifying certain EMIF4D registers

2013-11-07 Thread Matt Porter
On Thu, Nov 07, 2013 at 04:16:40PM -0500, Tom Rini wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 On 11/07/2013 04:12 PM, Vaibhav Bedia wrote:
  Hi Tom,
  
  On Thu, Nov 7, 2013 at 11:42 AM, Tom Rini tr...@ti.com wrote:
  Based on the definitive guide to EMIF configuration[1] certain registers
  that we have been modifying (and are documented registers) should be
  left in their reset values rather than modified.  This has been tested
  on AM335x GP EVM and Beaglebone White.
 
  
  [...]
 [snip]
  @@ -198,11 +188,6 @@ void sdram_init(void)
  config_dmm(evm_lisa_map_regs);
 
   #ifdef CONFIG_TI816X_EVM_DDR2
  -   ddr2_data.datadldiff0 = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
  -   ddr2_ctrl.cmd0dldiff = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
  -   ddr2_ctrl.cmd1dldiff = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
  -   ddr2_ctrl.cmd2dldiff = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
  -
  if (CONFIG_TI816X_USE_EMIF0) {
  ddr2_emif0_regs.emif_ddr_phy_ctlr_1 =
  (get_cpu_rev() == 0x1 ? 0x010B : 0x030B);
  @@ -217,8 +202,6 @@ void sdram_init(void)
   #endif
 
   #ifdef CONFIG_TI816X_EVM_DDR3
  -   ddr3_data.datadldiff0 = (get_cpu_rev() == 0x1 ? 0x0 : 0xF);
  -
  
  From a quick glance it looks like at least earlier variants of TI81xx
  used these registers to work around some bugs? This might end up
  breaking those. Note that TI81xx DDR frequencies are much higher
  compared to AM335x so issues related to this might not show up
  right now.
 
 It's an open question on if TI81xx needs these set or was simply also
 setting them for historical reasons (and in turn was inherited by am335x).

I will doublecheck on my early TI8148...out of time today but tomorrow.

-Matt
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot