
On 11 January 2011 20:03, Wolfgang Denk wd@denx.de wrote:
Dear Minkyu Kang,
In message AANLkTikj4LCUUukDKVCG8Shbi6ZHKU9vzGDz0fNG=87b@mail.gmail.com you wrote:
This problem is not belong to my code. Move after relocation? it's easy. but, how we can reserve the memory for LCD?
Reservation of video memory is a standard task in the init sequence. See this section in "arch/arm/lib/board.c":
358 #ifdef CONFIG_LCD 359 /* reserve memory for LCD display (always full pages) */ 360 addr = lcd_setmem (addr); 361 gd->fb_base = addr; 362 #endif /* CONFIG_LCD */
Yes I know... This init sequence is run before the relocation, right?
Please see lcd_setmem function. This function access panel_info that is uninitialized. Is it correct?
438 ulong lcd_setmem (ulong addr) 439 { 440 ulong size; 441 int line_length = (panel_info.vl_col * NBITS (panel_info.vl_bpix)) / 8; 442 443 debug ("LCD panel info: %d x %d, %d bit/pix\n", 444 panel_info.vl_col, panel_info.vl_row, NBITS (panel_info.vl_bpix) ); 445 446 size = line_length * panel_info.vl_row; 447 448 /* Round up to nearest full page */ 449 size = (size + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1); 450 451 /* Allocate pages for the frame buffer. */ 452 addr -= size; 453 454 debug ("Reserving %ldk for LCD Framebuffer at: %08lx\n", size>>10, addr); 455 456 return (addr); 457 }
Thanks Minkyu Kang.