Message ID | 1497346202-774-4-git-send-email-kever.yang@rock-chips.com |
---|---|
State | Superseded |
Delegated to: | Philipp Tomsich |
Headers | show |
On 13 June 2017 at 03:29, Kever Yang <kever.yang@rock-chips.com> wrote: > Add sdram driver in U-Boot for get the correct sdram size from > sys_reg, so that U-Boot can co-work with Rockchip loader or SPL > to get different dram capability and then tell the kernel. Do you think we might be able to retire the Rockchip loader one day? > > Signed-off-by: Kever Yang <kever.yang@rock-chips.com> > --- > > arch/arm/mach-rockchip/rk3328/Makefile | 1 + > arch/arm/mach-rockchip/rk3328/sdram_rk3328.c | 66 ++++++++++++++++++++++++++++ > 2 files changed, 67 insertions(+) > create mode 100644 arch/arm/mach-rockchip/rk3328/sdram_rk3328.c Reviewed-by: Simon Glass <sjg@chromium.org>
Hi Simon, On 06/17/2017 11:41 AM, Simon Glass wrote: > On 13 June 2017 at 03:29, Kever Yang <kever.yang@rock-chips.com> wrote: >> Add sdram driver in U-Boot for get the correct sdram size from >> sys_reg, so that U-Boot can co-work with Rockchip loader or SPL >> to get different dram capability and then tell the kernel. > Do you think we might be able to retire the Rockchip loader one day? If the feature and performance is almost the same, then Rockchip loader is no need any more, and that's what I'm try to do. - rockcusb & fastboot gadget performance, as I have comment in Eddie's patch long time ago, the dfu in U-Boot is using single buffer, which is very slow compare to mass storage gadget. - Android boot, it's still not have full support for Android image like recovery in U-Boot now. - Secure boot, I have not verify this part on upstream U-Boot, but rockchip needs it. - some other feature used by our product Thanks, - Kever > >> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> >> --- >> >> arch/arm/mach-rockchip/rk3328/Makefile | 1 + >> arch/arm/mach-rockchip/rk3328/sdram_rk3328.c | 66 ++++++++++++++++++++++++++++ >> 2 files changed, 67 insertions(+) >> create mode 100644 arch/arm/mach-rockchip/rk3328/sdram_rk3328.c > Reviewed-by: Simon Glass <sjg@chromium.org> >
Hi Kever, On 23 June 2017 at 02:22, Kever Yang <kever.yang@rock-chips.com> wrote: > Hi Simon, > > > On 06/17/2017 11:41 AM, Simon Glass wrote: >> >> On 13 June 2017 at 03:29, Kever Yang <kever.yang@rock-chips.com> wrote: >>> >>> Add sdram driver in U-Boot for get the correct sdram size from >>> sys_reg, so that U-Boot can co-work with Rockchip loader or SPL >>> to get different dram capability and then tell the kernel. >> >> Do you think we might be able to retire the Rockchip loader one day? > > > If the feature and performance is almost the same, then Rockchip loader > is no need any more, and that's what I'm try to do. > - rockcusb & fastboot gadget performance, as I have comment in Eddie's patch > long > time ago, the dfu in U-Boot is using single buffer, which is very slow > compare > to mass storage gadget. > - Android boot, it's still not have full support for Android image like > recovery in U-Boot now. > - Secure boot, I have not verify this part on upstream U-Boot, but rockchip > needs it. > - some other feature used by our product OK, good to know the plan, thank you. Hopefully there are no obstacles to getting all the above features into mainline. Regards, Simon
diff --git a/arch/arm/mach-rockchip/rk3328/Makefile b/arch/arm/mach-rockchip/rk3328/Makefile index bbab036..72873e2 100644 --- a/arch/arm/mach-rockchip/rk3328/Makefile +++ b/arch/arm/mach-rockchip/rk3328/Makefile @@ -6,4 +6,5 @@ obj-y += clk_rk3328.o obj-y += rk3328.o +obj-y += sdram_rk3328.o obj-y += syscon_rk3328.o diff --git a/arch/arm/mach-rockchip/rk3328/sdram_rk3328.c b/arch/arm/mach-rockchip/rk3328/sdram_rk3328.c new file mode 100644 index 0000000..79dd8ae --- /dev/null +++ b/arch/arm/mach-rockchip/rk3328/sdram_rk3328.c @@ -0,0 +1,66 @@ +/* + * (C) Copyright 2016 Rockchip Electronics Co., Ltd. + * + * SPDX-License-Identifier: GPL-2.0 + */ + +#include <common.h> +#include <dm.h> +#include <ram.h> +#include <syscon.h> +#include <asm/arch/clock.h> +#include <asm/arch/grf_rk3328.h> +#include <asm/arch/sdram_common.h> + +DECLARE_GLOBAL_DATA_PTR; +struct dram_info { + struct ram_info info; + struct rk3328_grf_regs *grf; +}; + +static int rk3328_dmc_probe(struct udevice *dev) +{ + struct dram_info *priv = dev_get_priv(dev); + + priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); + debug("%s: grf=%p\n", __func__, priv->grf); + priv->info.base = CONFIG_SYS_SDRAM_BASE; + priv->info.size = rockchip_sdram_size( + (phys_addr_t)&priv->grf->os_reg[2]); + /* + * we use the 0x00000000~0xfdffffff space since 0xff000000~0xffffffff + * is SoC register space (i.e. reserved), and 0xfe000000~0xfeffffff is + * inaccessible for some IP controller. + */ + priv->info.size = min(priv->info.size, 0xfe000000); + + return 0; +} + +static int rk3328_dmc_get_info(struct udevice *dev, struct ram_info *info) +{ + struct dram_info *priv = dev_get_priv(dev); + + *info = priv->info; + + return 0; +} + +static struct ram_ops rk3328_dmc_ops = { + .get_info = rk3328_dmc_get_info, +}; + + +static const struct udevice_id rk3328_dmc_ids[] = { + { .compatible = "rockchip,rk3328-dmc" }, + { } +}; + +U_BOOT_DRIVER(dmc_rk3328) = { + .name = "rockchip_rk3328_dmc", + .id = UCLASS_RAM, + .of_match = rk3328_dmc_ids, + .ops = &rk3328_dmc_ops, + .probe = rk3328_dmc_probe, + .priv_auto_alloc_size = sizeof(struct dram_info), +};
Add sdram driver in U-Boot for get the correct sdram size from sys_reg, so that U-Boot can co-work with Rockchip loader or SPL to get different dram capability and then tell the kernel. Signed-off-by: Kever Yang <kever.yang@rock-chips.com> --- arch/arm/mach-rockchip/rk3328/Makefile | 1 + arch/arm/mach-rockchip/rk3328/sdram_rk3328.c | 66 ++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 arch/arm/mach-rockchip/rk3328/sdram_rk3328.c