diff options
-rw-r--r-- | src/arch/arm/include/arch/memlayout.h | 11 | ||||
-rw-r--r-- | src/include/symbols.h | 4 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/cbmem.c | 4 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/include/soc/memlayout.ld | 1 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/include/soc/soc.h | 8 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/soc.c | 12 |
6 files changed, 21 insertions, 19 deletions
diff --git a/src/arch/arm/include/arch/memlayout.h b/src/arch/arm/include/arch/memlayout.h index 2c733946a2..1cba7bd325 100644 --- a/src/arch/arm/include/arch/memlayout.h +++ b/src/arch/arm/include/arch/memlayout.h @@ -22,6 +22,8 @@ #ifndef __ARCH_MEMLAYOUT_H #define __ARCH_MEMLAYOUT_H +#define SUPERPAGE_SIZE ((1 + IS_ENABLED(CONFIG_ARM_LPAE)) * 1M) + #define TTB(addr, size) \ REGION(ttb, addr, size, 16K) \ _ = ASSERT(size >= 16K + IS_ENABLED(CONFIG_ARM_LPAE) * 32, \ @@ -36,8 +38,13 @@ #define STACK(addr, size) REGION(stack, addr, size, 8) #define DMA_COHERENT(addr, size) \ - REGION(dma_coherent, addr, size, (1 + IS_ENABLED(CONFIG_ARM_LPAE)) * 1M) \ - _ = ASSERT(size % ((1 + IS_ENABLED(CONFIG_ARM_LPAE)) * 1M) == 0, \ + REGION(dma_coherent, addr, size, SUPERPAGE_SIZE) \ + _ = ASSERT(size % SUPERPAGE_SIZE == 0, \ "DMA coherency buffer must fit exactly in full superpages!"); +#define FRAMEBUFFER(addr, size) \ + REGION(framebuffer, addr, size, SUPERPAGE_SIZE) \ + _ = ASSERT(size % SUPERPAGE_SIZE == 0, \ + "Framebuffer must fit exactly in full superpages!"); + #endif /* __ARCH_MEMLAYOUT_H */ diff --git a/src/include/symbols.h b/src/include/symbols.h index 2259dcb5b6..c3ced87d3f 100644 --- a/src/include/symbols.h +++ b/src/include/symbols.h @@ -77,4 +77,8 @@ extern u8 _dma_coherent[]; extern u8 _edma_coherent[]; #define _dma_coherent_size (_edma_coherent - _dma_coherent) +extern u8 _framebuffer[]; +extern u8 _eframebuffer[]; +#define _framebuffer_size (_eframebuffer - _framebuffer) + #endif /* __SYMBOLS_H */ diff --git a/src/soc/rockchip/rk3288/cbmem.c b/src/soc/rockchip/rk3288/cbmem.c index 1c3a902d0e..2eed97281a 100644 --- a/src/soc/rockchip/rk3288/cbmem.c +++ b/src/soc/rockchip/rk3288/cbmem.c @@ -18,11 +18,11 @@ */ #include <cbmem.h> -#include <soc/soc.h> #include <stddef.h> +#include <symbols.h> void *cbmem_top(void) { - return (void *)(get_fb_base_kb()*KiB); + return _dram + (size_t)CONFIG_DRAM_SIZE_MB*MiB; } diff --git a/src/soc/rockchip/rk3288/include/soc/memlayout.ld b/src/soc/rockchip/rk3288/include/soc/memlayout.ld index 7a8b77ccaa..f5d3ca84d4 100644 --- a/src/soc/rockchip/rk3288/include/soc/memlayout.ld +++ b/src/soc/rockchip/rk3288/include/soc/memlayout.ld @@ -31,6 +31,7 @@ SECTIONS RAMSTAGE(0x00200000, 128K) POSTRAM_CBFS_CACHE(0x01000000, 1M) DMA_COHERENT(0x10000000, 2M) + FRAMEBUFFER(0x10800000, 8M) SRAM_START(0xFF700000) TTB(0xFF700000, 16K) diff --git a/src/soc/rockchip/rk3288/include/soc/soc.h b/src/soc/rockchip/rk3288/include/soc/soc.h index c6ab7f46f6..05f54da1c3 100644 --- a/src/soc/rockchip/rk3288/include/soc/soc.h +++ b/src/soc/rockchip/rk3288/include/soc/soc.h @@ -27,12 +27,4 @@ #define RK_SETBITS(set) RK_CLRSETBITS(0, set) #define RK_CLRBITS(clr) RK_CLRSETBITS(clr, 0) -#define FB_SIZE_KB 8192 -#define RAM_BASE_KB ((uintptr_t)_dram >> 10) -#define RAM_SIZE_KB (CONFIG_DRAM_SIZE_MB << 10UL) - -static inline u32 get_fb_base_kb(void) -{ - return RAM_BASE_KB + RAM_SIZE_KB - FB_SIZE_KB; -} #endif diff --git a/src/soc/rockchip/rk3288/soc.c b/src/soc/rockchip/rk3288/soc.c index abd93d70f0..fa26c6db36 100644 --- a/src/soc/rockchip/rk3288/soc.c +++ b/src/soc/rockchip/rk3288/soc.c @@ -28,30 +28,28 @@ #include <stddef.h> #include <stdlib.h> #include <string.h> +#include <symbols.h> #include <vendorcode/google/chromeos/chromeos.h> #include "chip.h" static void soc_init(device_t dev) { - unsigned long fb_size = FB_SIZE_KB * KiB; - u32 lcdbase = get_fb_base_kb() * KiB; - - ram_resource(dev, 0, RAM_BASE_KB, RAM_SIZE_KB); - mmio_resource(dev, 1, lcdbase / KiB, fb_size / KiB); + ram_resource(dev, 0, (uintptr_t)_dram/KiB, + CONFIG_DRAM_SIZE_MB*(MiB/KiB)); if (vboot_skip_display_init()) printk(BIOS_INFO, "Skipping display init.\n"); #if !IS_ENABLED(CONFIG_SKIP_DISPLAY_INIT_HACK) else - rk_display_init(dev, lcdbase, fb_size); + rk_display_init(dev, (uintptr_t)_framebuffer, + _framebuffer_size); #endif } static struct device_operations soc_ops = { .read_resources = DEVICE_NOOP, .set_resources = DEVICE_NOOP, - .enable_resources = DEVICE_NOOP, .init = soc_init, .scan_bus = 0, }; |