[U-Boot] [PATCH] am33xx: fix the ddr_cmdtctrl structure

Fix the wrong mapping between the DDR I/O control registers on AM33XX SoCs and the software representation in the SPL code. The most recent public TRM defines the following DDR I/O control registers offsets: * ddr_cmd0_ioctrl : offset 0x44E11404 * ddr_cmd1_ioctrl : offset 0x44E11408 * ddr_cmd2_ioctrl : offset 0x44E1140C * ddr_data0_ioctrl: offset 0x44E11440 * ddr_data1_ioctrl: offset 0x44E11444
While the struct ddr_cmdtctrl has also some reserved bits in the beginning. The struct is mapped to the address 0x44E11404. As a result "cm0ioctl" points to the ddr_cmd1_ioctrl register, "cm1ioctl" to the ddr_cmd2_ioctrl and etc. Registers ddr_cmd0_ioctrl and ddr_data0_ioctrl are never configured because of this mapping mismatch.
Signed-off-by: Ilya Ledvich ilya@compulab.co.il --- arch/arm/include/asm/arch-am33xx/ddr_defs.h | 1 - 1 file changed, 1 deletion(-)
diff --git a/arch/arm/include/asm/arch-am33xx/ddr_defs.h b/arch/arm/include/asm/arch-am33xx/ddr_defs.h index fb4e78e..a529460 100644 --- a/arch/arm/include/asm/arch-am33xx/ddr_defs.h +++ b/arch/arm/include/asm/arch-am33xx/ddr_defs.h @@ -267,7 +267,6 @@ void config_ddr_data(const struct ddr_data *data, int nr); * This structure represents the DDR io control on AM33XX devices. */ struct ddr_cmdtctrl { - unsigned int resv1[1]; unsigned int cm0ioctl; unsigned int cm1ioctl; unsigned int cm2ioctl;

"Ilya" == Ilya Ledvich ilya@compulab.co.il writes:
Ilya> Fix the wrong mapping between the DDR I/O control registers on Ilya> AM33XX SoCs and the software representation in the SPL code. The Ilya> most recent public TRM defines the following DDR I/O control Ilya> registers offsets:
Ilya> * ddr_cmd0_ioctrl : offset 0x44E11404 Ilya> * ddr_cmd1_ioctrl : offset 0x44E11408 Ilya> * ddr_cmd2_ioctrl : offset 0x44E1140C Ilya> * ddr_data0_ioctrl: offset 0x44E11440 Ilya> * ddr_data1_ioctrl: offset 0x44E11444
Ilya> While the struct ddr_cmdtctrl has also some reserved bits in the Ilya> beginning. The struct is mapped to the address 0x44E11404. As a Ilya> result "cm0ioctl" points to the ddr_cmd1_ioctrl register, Ilya> "cm1ioctl" to the ddr_cmd2_ioctrl and etc. Registers Ilya> ddr_cmd0_ioctrl and ddr_data0_ioctrl are never configured because Ilya> of this mapping mismatch.
Ilya> Signed-off-by: Ilya Ledvich ilya@compulab.co.il
Reviewed-by: Peter Korsgaard jacmet@sunsite.dk

On Mon, Jun 17, 2013 at 04:59:27PM +0300, Ilya Ledvich wrote:
Fix the wrong mapping between the DDR I/O control registers on AM33XX SoCs and the software representation in the SPL code. The most recent public TRM defines the following DDR I/O control registers offsets:
- ddr_cmd0_ioctrl : offset 0x44E11404
- ddr_cmd1_ioctrl : offset 0x44E11408
- ddr_cmd2_ioctrl : offset 0x44E1140C
- ddr_data0_ioctrl: offset 0x44E11440
- ddr_data1_ioctrl: offset 0x44E11444
While the struct ddr_cmdtctrl has also some reserved bits in the beginning. The struct is mapped to the address 0x44E11404. As a result "cm0ioctl" points to the ddr_cmd1_ioctrl register, "cm1ioctl" to the ddr_cmd2_ioctrl and etc. Registers ddr_cmd0_ioctrl and ddr_data0_ioctrl are never configured because of this mapping mismatch.
Signed-off-by: Ilya Ledvich ilya@compulab.co.il Reviewed-by: Peter Korsgaard jacmet@sunsite.dk
Applied to u-boot-ti/master, thanks!
participants (3)
-
Ilya Ledvich
-
Peter Korsgaard
-
Tom Rini