diff --git a/arch/arm/mach-rockchip/rv1108/rv1108.c b/arch/arm/mach-rockchip/rv1108/rv1108.c index 86bfdea237..e88f27f5d9 100644 --- a/arch/arm/mach-rockchip/rv1108/rv1108.c +++ b/arch/arm/mach-rockchip/rv1108/rv1108.c @@ -57,24 +57,3 @@ void board_debug_uart_init(void) #endif #endif /*CONFIG_SPL_BUILD*/ } - -int dram_init(void) -{ - struct rv1108_grf *grf = (void *)GRF_BASE; - - gd->ram_size = rockchip_sdram_size((phys_addr_t)&grf->os_reg2); - - return 0; -} - -int dram_init_banksize(void) -{ - size_t max_size = min((unsigned long)(gd->ram_size + - CONFIG_SYS_SDRAM_BASE), gd->ram_top); - - gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; - gd->bd->bi_dram[0].size = max_size - gd->bd->bi_dram[0].start; - - return 0; -} - diff --git a/configs/evb-rv1108_defconfig b/configs/evb-rv1108_defconfig index dc77050846..c605c33a13 100644 --- a/configs/evb-rv1108_defconfig +++ b/configs/evb-rv1108_defconfig @@ -2,6 +2,8 @@ CONFIG_ARM=y # CONFIG_SPL_USE_ARCH_MEMCPY is not set # CONFIG_SPL_USE_ARCH_MEMSET is not set CONFIG_ARCH_ROCKCHIP=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_SYS_MALLOC_F_LEN=0x2000 CONFIG_ROCKCHIP_RV1108=y CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y @@ -16,6 +18,7 @@ CONFIG_DEBUG_UART=y # CONFIG_DISPLAY_CPUINFO is not set CONFIG_ANDROID_BOOTLOADER=y CONFIG_SPL_STACK_R=y +CONFIG_PANIC_HANG=y CONFIG_TPL_TINY_FRAMEWORK=y CONFIG_TPL_SERIAL_SUPPORT=y CONFIG_FASTBOOT_BUF_ADDR=0x62000000 @@ -35,11 +38,12 @@ CONFIG_CMD_TIME=y CONFIG_SPL_OF_CONTROL=y CONFIG_TPL_OF_CONTROL=y CONFIG_OF_LIVE=y -CONFIG_SPL_OF_PLATDATA=y CONFIG_TPL_OF_PLATDATA=y CONFIG_NET_RANDOM_ETHADDR=y CONFIG_REGMAP=y +CONFIG_SPL_REGMAP=y CONFIG_SYSCON=y +CONFIG_SPL_SYSCON=y CONFIG_CLK=y CONFIG_ROCKCHIP_GPIO=y CONFIG_SYS_I2C_ROCKCHIP=y diff --git a/drivers/ram/rockchip/Makefile b/drivers/ram/rockchip/Makefile index fa2b99d24c..db46f5680f 100644 --- a/drivers/ram/rockchip/Makefile +++ b/drivers/ram/rockchip/Makefile @@ -16,6 +16,7 @@ obj-$(CONFIG_ROCKCHIP_RK3399) += sdram_rk3399.o obj-$(CONFIG_ROCKCHIP_PX30) += sdram_px30.o sdram_pctl_px30.o sdram_phy_px30.o obj-$(CONFIG_ROCKCHIP_PX30) += rockchip_sdram.o obj-$(CONFIG_ROCKCHIP_RK1808) = rockchip_sdram.o +obj-$(CONFIG_ROCKCHIP_RV1108) += rockchip_sdram.o obj-$(CONFIG_ROCKCHIP_RK3036) = rockchip_sdram.o obj-$(CONFIG_ROCKCHIP_RK3308) = rockchip_sdram.o ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),) diff --git a/drivers/ram/rockchip/rockchip_sdram.c b/drivers/ram/rockchip/rockchip_sdram.c index 78e15eb142..437e675e30 100644 --- a/drivers/ram/rockchip/rockchip_sdram.c +++ b/drivers/ram/rockchip/rockchip_sdram.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -28,7 +29,13 @@ static int dmc_probe(struct udevice *dev) struct dram_info *priv = dev_get_priv(dev); if (!(gd->flags & GD_FLG_RELOC)) { -#if defined(CONFIG_ROCKCHIP_RK3036) +#if defined(CONFIG_ROCKCHIP_RV1108) + struct rv1108_grf *grf = + syscon_get_first_range(ROCKCHIP_SYSCON_GRF); + + priv->info.size = + rockchip_sdram_size((phys_addr_t)&grf->os_reg2); +#elif defined(CONFIG_ROCKCHIP_RK3036) struct rk3036_grf *grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); @@ -81,7 +88,9 @@ static struct ram_ops dmc_ops = { }; static const struct udevice_id dmc_ids[] = { -#if defined(CONFIG_ROCKCHIP_RK3036) +#if defined(CONFIG_ROCKCHIP_RV1108) + { .compatible = "rockchip,rv1108-dmc" }, +#elif defined(CONFIG_ROCKCHIP_RK3036) { .compatible = "rockchip,rk3036-dmc" }, #elif defined(CONFIG_ROCKCHIP_RK3308) { .compatible = "rockchip,rk3308-dmc" }, diff --git a/drivers/ram/rockchip/sdram_rv1108.c b/drivers/ram/rockchip/sdram_rv1108.c index d8851adf79..696e24838c 100644 --- a/drivers/ram/rockchip/sdram_rv1108.c +++ b/drivers/ram/rockchip/sdram_rv1108.c @@ -112,9 +112,21 @@ void *get_base_addr(unsigned int *reg, unsigned int offset) return (void *)p; } +void get_ddr_param(struct dram_info *sdram_priv, + struct ddr_param *ddr_param) +{ + size_t ram_size = + rockchip_sdram_size((phys_addr_t)&sdram_priv->grf->os_reg2); + + ddr_param->count = 1; + ddr_param->para[0] = CONFIG_SYS_SDRAM_BASE; + ddr_param->para[1] = ram_size; +} + int sdram_init(void) { int ret; + struct ddr_param ddr_param; struct dram_info *sdram_priv = &info; struct driver_info *info = ll_entry_start(struct driver_info, driver_info); @@ -136,5 +148,8 @@ int sdram_init(void) if (ret) debug("rv1108_sdram_init() fail!"); + get_ddr_param(sdram_priv, &ddr_param); + rockchip_setup_ddr_param(&ddr_param); + return ret; } diff --git a/include/configs/rv1108_common.h b/include/configs/rv1108_common.h index 44cd4e3f6f..0463f236b8 100644 --- a/include/configs/rv1108_common.h +++ b/include/configs/rv1108_common.h @@ -22,7 +22,7 @@ /* SPL support */ #define CONFIG_SPL_STACK 0x10080700 #define CONFIG_SPL_TEXT_BASE 0x10080800 -#define CONFIG_SPL_MAX_SIZE 0x1700 +#define CONFIG_SPL_MAX_SIZE 0x4000 /* BSS setup */ #define CONFIG_SPL_BSS_MAX_SIZE 0x100