[U-Boot] Allocating a frame buffer in memory

Hi, I am trying to allocate a frame buffer for my LCD code. I think I understand how to set up the LCC controller in the Atmel AT91SAM9. So thats not the issue, at least not yet. I need to understand how UBoot allocates a block of memory for the buffer.
My TFT/LCD is 320x240 and in 24 bit mode, so 3 bytes per pixel. So I think I need 320x240x3 total bytes. Correct?
In my lib_arm/board.c file, there is the following: #ifdef CONFIG_LCD /* board init may have inited fb_base */ if (!gd->fb_base) { # ifndef PAGE_SIZE # define PAGE_SIZE 4096 # endif /* * reserve memory for LCD display (always full pages) */ /* bss_end is defined in the board-specific linker script */ addr = (_bss_end + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1); size = lcd_setmem (addr); gd->fb_base = addr; } #endif /* CONFIG_LCD */
Then in lcd.c, there is lcd_setmem which displays: Reserving 600k for LCD Framebuffer at: 0x23E91000
Even though I call lcd_setmem with an address of: 0x23F27000
Which is the address that I pass to the Atmel LCD controller DMA Address ? I have been using this: 0x23F27000
Thanks, Steve

On 13:13 Fri 10 Apr , Steven Zedeck wrote:
Hi, I am trying to allocate a frame buffer for my LCD code. I think I understand how to set up the LCC controller in the Atmel AT91SAM9. So thats not the issue, at least not yet. I need to understand how UBoot allocates a block of memory for the buffer.
My TFT/LCD is 320x240 and in 24 bit mode, so 3 bytes per pixel. So I think I need 320x240x3 total bytes. Correct?
In my lib_arm/board.c file, there is the following: #ifdef CONFIG_LCD /* board init may have inited fb_base */ if (!gd->fb_base) { # ifndef PAGE_SIZE # define PAGE_SIZE 4096 # endif /* * reserve memory for LCD display (always full pages) */ /* bss_end is defined in the board-specific linker script */ addr = (_bss_end + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1); size = lcd_setmem (addr); gd->fb_base = addr; } #endif /* CONFIG_LCD */
Then in lcd.c, there is lcd_setmem which displays: Reserving 600k for LCD Framebuffer at: 0x23E91000
Even though I call lcd_setmem with an address of: 0x23F27000
Which is the address that I pass to the Atmel LCD controller DMA Address ? I have been using this: 0x23F27000
on at91sam9 to specify the frambuffer base address you will just need to fill gd->fb_base = AT91SAM9263_SRAM0_BASE; or something else as done with the PSRAM for the pm9263 in your board init and specify your "vidinfo_t panel_info" that's all (maybe you will need to check the LCD pin out configuration)
Best Regards, J.
participants (2)
-
Jean-Christophe PLAGNIOL-VILLARD
-
Steven Zedeck