diff mbox

[U-Boot,0/2] Add sdram capacity auto detect for rk3288

Message ID 87r38hm28f.fsf@aikidev.net
State Not Applicable
Delegated to: Simon Glass
Headers show

Commit Message

Vagrant Cascadian Sept. 18, 2016, 7:34 p.m. UTC
On 2016-09-15, Sandy Patterson wrote:
> An alternative for you might be to disable OF_PLATDATA for firefly and
> enable BACK_TO_BROM.

I wasn't able to successfully build with OF_PLATDATA disabled; sounds
like there are more patches needed for firefly for that to work.


> You may not be getting any output because you didn't modify your burning
> process.
> See the README.rockchip section on CONFIG_ROCKCHIP_SPL_BACK_TO_BROM
> for details, but you have to dd your images slightly differently with this
> macro enabled.

Thanks! Unfortunately, even after using the burning process for
CONFIG_ROCKCHIP_SPL_BACK_TO_BROM described in README.rockchip.

The patches (on top of what was submitted in this series) I've applied
to v2016.09 are:



I think I'll wait for an updated series to do more tests, so I'm not
testing patches on patches on patches. Also reduces the liklihood of me
misinterpreting what people are suggesting to try.


live well,
  vagrant

Comments

Sandy Patterson Sept. 19, 2016, 1:33 p.m. UTC | #1
Hi Kever and Vagrant,

I tested this patch on my rock2 board against 2016.09. (I didn't have my
board with me over the weekend)

1) It seems the BACK_TO_BROM feature is broken. It doesn't boot using the
2016.09. I'm afraid I don't have the time to track it down.
2) It seems the SPL is still small enough to test this feature. (vagrant
you can forget about the back to brom feature unless you need more SPL
space).

3) I get the same behavior as Vagrant on the rock2 board. I'm including
DEBUG output in case that helps Kever. I tried to trace it, but it seems a
larger undertaking than I can manage right now. (vagrant, you can add DEBUG
#define's into the file include/configs/firefly-rk3288.h to get the output
below.. my guess is it's similar.)

This trace is almost exactly the same between enabling the SDRAM detection
and not. I marked the point where it halts. The fdt is a slightly different
size, but that is expected.

Sandy


initcall: 0010af55
U-Boot code: 00100000 -> 0014F8C0  BSS: -> 0018D1B8
initcall: 0010add1
initcall: 0010b359
Model: Radxa Rock 2 Square
initcall: 0010af95
DRAM:  initcall: 00100d19
malloc_simple: size=3c, ptr=7d8, limit=2000: fe79c
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
   - -1 -1
   - not found
fdtdec_get_int_array: interrupts
get_prop_check_min_len: interrupts
malloc_simple: size=4, ptr=7dc, limit=2000: fe7d8
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
   - -1 1
   - -1 -1
   - -1 0
   - found
uclass_find_device_by_seq: 0 1
   - -1 1
   - found
uclass_find_device_by_seq: 0 2
   - -1 1
   - -1 -1
   - -1 0
   - -1 -1
   - not found
fdtdec_get_int_array: interrupts
get_prop_check_min_len: interrupts
malloc_simple: size=14, ptr=7f0, limit=2000: fe7dc
malloc_simple: size=4, ptr=7f4, limit=2000: fe7f0
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
   - -1 1
   - -1 -1
   - -1 0
   - found
uclass_find_device_by_seq: 0 1
   - -1 1
   - found
uclass_find_device_by_seq: 0 2
   - -1 1
   - -1 -1
   - -1 0
   - -1 2
   - found
uclass_find_device_by_seq: 0 3
   - -1 1
   - -1 -1
   - -1 0
   - -1 2
   - not found
fdtdec_get_int_array: interrupts
get_prop_check_min_len: interrupts
malloc_simple: size=14, ptr=808, limit=2000: fe7f4
malloc_simple: size=c, ptr=814, limit=2000: fe808
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
   - -1 -1
   - not found
fdtdec_get_int_array: interrupts
get_prop_check_min_len: interrupts
OF: ** translation for device clock-controller@ff760000 **
OF: bus is default (na=1, ns=1) on
OF: translating address: 000076ff
OF: reached root node
clk_request(dev=000fe474, clk=000fe7bc)
SDRAM base=0, size=80000000
initcall: 0010b129
Monitor len: 0008D1B8
Ram size: 80000000
Ram top: 80000000
initcall: 0010adf1
initcall: 0010af0d
TLB table from 7fff0000 to 7fff4000
initcall: 0010af75
video_reserve: Reserving 4f0000 bytes at 7fb00000 for video device
'vop@ff940000'
Video frame buffers from 7fb00000 to 7fff0000
initcall: 0010ae05
initcall: 0010aecd
Reserving 564k for U-Boot at: 7fa72000
initcall: 0010aea5
Reserving 32776k for malloc() at: 7da70000
initcall: 0010b059
Reserving 80 Bytes for Board Info at: 7da6ffb0
initcall: 0010ae09
initcall: 0010ae7d
Reserving 200 Bytes for Global Data at: 7da6fee8
initcall: 0010ae2d
Reserving 38464 Bytes for FDT at: 7da668a8
initcall: 0010ae11
initcall: 0010b18d
initcall: 0010b113
initcall: 0010b099

RAM Configuration:
====== SDRAM DETECTION FEATURE HALTS HERE ========
Bank #0: 0 2 GiB

DRAM:  2 GiB
initcall: 0010ae19
New Stack Pointer is: 7da66880
initcall: 0010b02d
initcall: 0010afd5
Relocation Offset is: 7f972000
Relocating to 7fa72000, new gd at 7da6fee8, sp at 7da66880
initcall: 7fa7d1cd
initcall: 7fa7d1d1
initcall: 0010b32d (relocated to 7fa7d32d)
dram_bank_mmu_setup: bank: 0
initcall: 0010b305 (relocated to 7fa7d305)
efi_runtime_relocate: Relocating to offset=7fa72000
Kever Yang Sept. 20, 2016, 3:34 a.m. UTC | #2
Hi Sandy,

On 09/19/2016 09:33 PM, Sandy Patterson wrote:
> Hi Kever and Vagrant,
>
> I tested this patch on my rock2 board against 2016.09. (I didn't have 
> my board with me over the weekend)

Thanks for your test and for your log, my source code do have one bug 
and I have fix and upload the V2 patch set.

>
> 1) It seems the BACK_TO_BROM feature is broken. It doesn't boot using 
> the 2016.09. I'm afraid I don't have the time to track it down.
It works fine on my evb, do you flash the image correctly? it's 
different with the way you don't use BACK_TO_BROM.

Regards,
- Kever
> 2) It seems the SPL is still small enough to test this feature. 
> (vagrant you can forget about the back to brom feature unless you need 
> more SPL space).
>
> 3) I get the same behavior as Vagrant on the rock2 board. I'm 
> including DEBUG output in case that helps Kever. I tried to trace it, 
> but it seems a larger undertaking than I can manage right now. 
> (vagrant, you can add DEBUG #define's into the 
> file include/configs/firefly-rk3288.h to get the output below.. my 
> guess is it's similar.)
>
> This trace is almost exactly the same between enabling the SDRAM 
> detection and not. I marked the point where it halts. The fdt is a 
> slightly different size, but that is expected.
>
> Sandy
>
>
> initcall: 0010af55
> U-Boot code: 00100000 -> 0014F8C0  BSS: -> 0018D1B8
> initcall: 0010add1
> initcall: 0010b359
> Model: Radxa Rock 2 Square
> initcall: 0010af95
> DRAM:  initcall: 00100d19
> malloc_simple: size=3c, ptr=7d8, limit=2000: fe79c
> uclass_find_device_by_seq: 0 -1
> uclass_find_device_by_seq: 0 0
>    - -1 -1
>    - not found
> fdtdec_get_int_array: interrupts
> get_prop_check_min_len: interrupts
> malloc_simple: size=4, ptr=7dc, limit=2000: fe7d8
> uclass_find_device_by_seq: 0 -1
> uclass_find_device_by_seq: 0 0
>    - -1 1
>    - -1 -1
>    - -1 0
>    - found
> uclass_find_device_by_seq: 0 1
>    - -1 1
>    - found
> uclass_find_device_by_seq: 0 2
>    - -1 1
>    - -1 -1
>    - -1 0
>    - -1 -1
>    - not found
> fdtdec_get_int_array: interrupts
> get_prop_check_min_len: interrupts
> malloc_simple: size=14, ptr=7f0, limit=2000: fe7dc
> malloc_simple: size=4, ptr=7f4, limit=2000: fe7f0
> uclass_find_device_by_seq: 0 -1
> uclass_find_device_by_seq: 0 0
>    - -1 1
>    - -1 -1
>    - -1 0
>    - found
> uclass_find_device_by_seq: 0 1
>    - -1 1
>    - found
> uclass_find_device_by_seq: 0 2
>    - -1 1
>    - -1 -1
>    - -1 0
>    - -1 2
>    - found
> uclass_find_device_by_seq: 0 3
>    - -1 1
>    - -1 -1
>    - -1 0
>    - -1 2
>    - not found
> fdtdec_get_int_array: interrupts
> get_prop_check_min_len: interrupts
> malloc_simple: size=14, ptr=808, limit=2000: fe7f4
> malloc_simple: size=c, ptr=814, limit=2000: fe808
> uclass_find_device_by_seq: 0 -1
> uclass_find_device_by_seq: 0 0
>    - -1 -1
>    - not found
> fdtdec_get_int_array: interrupts
> get_prop_check_min_len: interrupts
> OF: ** translation for device clock-controller@ff760000 **
> OF: bus is default (na=1, ns=1) on
> OF: translating address: 000076ff
> OF: reached root node
> clk_request(dev=000fe474, clk=000fe7bc)
> SDRAM base=0, size=80000000
> initcall: 0010b129
> Monitor len: 0008D1B8
> Ram size: 80000000
> Ram top: 80000000
> initcall: 0010adf1
> initcall: 0010af0d
> TLB table from 7fff0000 to 7fff4000
> initcall: 0010af75
> video_reserve: Reserving 4f0000 bytes at 7fb00000 for video device 
> 'vop@ff940000'
> Video frame buffers from 7fb00000 to 7fff0000
> initcall: 0010ae05
> initcall: 0010aecd
> Reserving 564k for U-Boot at: 7fa72000
> initcall: 0010aea5
> Reserving 32776k for malloc() at: 7da70000
> initcall: 0010b059
> Reserving 80 Bytes for Board Info at: 7da6ffb0
> initcall: 0010ae09
> initcall: 0010ae7d
> Reserving 200 Bytes for Global Data at: 7da6fee8
> initcall: 0010ae2d
> Reserving 38464 Bytes for FDT at: 7da668a8
> initcall: 0010ae11
> initcall: 0010b18d
> initcall: 0010b113
> initcall: 0010b099
>
> RAM Configuration:
> ====== SDRAM DETECTION FEATURE HALTS HERE ========
> Bank #0: 0 2 GiB
>
> DRAM:  2 GiB
> initcall: 0010ae19
> New Stack Pointer is: 7da66880
> initcall: 0010b02d
> initcall: 0010afd5
> Relocation Offset is: 7f972000
> Relocating to 7fa72000, new gd at 7da6fee8, sp at 7da66880
> initcall: 7fa7d1cd
> initcall: 7fa7d1d1
> initcall: 0010b32d (relocated to 7fa7d32d)
> dram_bank_mmu_setup: bank: 0
> initcall: 0010b305 (relocated to 7fa7d305)
> efi_runtime_relocate: Relocating to offset=7fa72000
>
Sandy Patterson Sept. 20, 2016, 1:20 p.m. UTC | #3
>
> 1) It seems the BACK_TO_BROM feature is broken. It doesn't boot using the
>> 2016.09. I'm afraid I don't have the time to track it down.
>>
> It works fine on my evb, do you flash the image correctly? it's different
> with the way you don't use BACK_TO_BROM.
>

Well, I tested again on the latest master branch and its working now. I
probably had something screwed up. I did notice that the BACK_TO_BROM was
moved to Kconfig.
diff mbox

Patch

Index: u-boot/include/common.h
===================================================================
--- u-boot.orig/include/common.h
+++ u-boot/include/common.h
@@ -95,6 +95,10 @@  typedef volatile unsigned char	vu_char;
 #define CONFIG_SYS_SUPPORT_64BIT_DATA
 #endif
 
+#ifndef CONFIG_SPL_BUILD
+#define DEBUG
+#endif
+
 #ifdef DEBUG
 #define _DEBUG	1
 #else

Index: u-boot/arch/arm/mach-rockchip/rk3288/sdram_rk3288.c
===================================================================
--- u-boot.orig/arch/arm/mach-rockchip/rk3288/sdram_rk3288.c
+++ u-boot/arch/arm/mach-rockchip/rk3288/sdram_rk3288.c
@@ -1039,7 +1039,7 @@  static int conv_of_platdata(struct udevi
 	memcpy(&plat->phy_timing, of_plat->rockchip_phy_timing,
 	       sizeof(plat->phy_timing));
 	memcpy(&plat->base, of_plat->rockchip_sdram_params, sizeof(plat->base));
-	plat->num_channels = of_plat->rockchip_num_channels;
+	plat->num_channels = 2;
 	ret = regmap_init_mem_platdata(dev, of_plat->reg,
 				       ARRAY_SIZE(of_plat->reg) / 2,
 				       &plat->map);

Index: u-boot/configs/firefly-rk3288_defconfig
===================================================================
--- u-boot.orig/configs/firefly-rk3288_defconfig
+++ u-boot/configs/firefly-rk3288_defconfig
@@ -70,3 +70,4 @@  CONFIG_USE_TINY_PRINTF=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_ERRNO_STR=y
 # CONFIG_SPL_OF_LIBFDT is not set
+CONFIG_ROCKCHIP_SPL_BACK_TO_BROM=y