Message ID | 20201001184003.3704604-1-heiko@sntech.de |
---|---|
State | Accepted |
Commit | 2db36c64bd5a8910112708c1c6b68bd3594517d3 |
Delegated to: | Kever Yang |
Headers | show |
Series | ram: rockchip: px30: add a config-based ddr selection | expand |
Hi Heiko, On Thu, 1 Oct 2020 at 12:40, Heiko Stuebner <heiko@sntech.de> wrote: > > From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > The SRAM on the PX30 is not big enough to hold multiple DDR configs > so it needs to be selected during build. > > So far simply the DDR3 config was always selected and getting DDR4 > or LPDDR2/3 initialized would require a code modification. > > So add Kconfig options similar to RK3399 to allow selecting the DDR4 > and LPDDR2/3 options instead, while DDR3 stays the default as before. > > Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > --- > drivers/ram/rockchip/Kconfig | 21 +++++++++++++++++++++ > drivers/ram/rockchip/sdram_px30.c | 8 ++++++++ > 2 files changed, 29 insertions(+) > > diff --git a/drivers/ram/rockchip/Kconfig b/drivers/ram/rockchip/Kconfig > index 8e97c2f49e..c459bbf5e2 100644 > --- a/drivers/ram/rockchip/Kconfig > +++ b/drivers/ram/rockchip/Kconfig > @@ -22,6 +22,27 @@ config RAM_ROCKCHIP_DEBUG > This is an option for developers to understand the ram drivers > initialization, configurations and etc. > > +config RAM_PX30_DDR4 > + bool "DDR3 support for Rockchip PX30" > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > + help > + This enables DDR4 sdram support instead of the default DDR3 support > + on Rockchip PC30 SoCs. > + > +config RAM_PX30_LPDDR2 > + bool "LPDDR2 support for Rockchip PX30" > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > + help > + This enables LPDDR2 sdram support instead of the default DDR3 support > + on Rockchip PC30 SoCs. > + > +config RAM_PX30_LPDDR3 > + bool "LPDDR3 support for Rockchip PX30" > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > + help > + This enables LPDDR3 sdram support instead of the default DDR3 support > + on Rockchip PC30 SoCs. > + > config RAM_RK3399_LPDDR4 > bool "LPDDR4 support for Rockchip RK3399" > depends on RAM_ROCKCHIP && ROCKCHIP_RK3399 > diff --git a/drivers/ram/rockchip/sdram_px30.c b/drivers/ram/rockchip/sdram_px30.c > index fd5763d0a0..2f1f6e9c0c 100644 > --- a/drivers/ram/rockchip/sdram_px30.c > +++ b/drivers/ram/rockchip/sdram_px30.c > @@ -125,7 +125,15 @@ u32 addrmap[][8] = { > struct dram_info dram_info; > > struct px30_sdram_params sdram_configs[] = { > +#if defined(CONFIG_RAM_PX30_DDR4) > +#include "sdram-px30-ddr4-detect-333.inc" > +#elif defined(CONFIG_RAM_PX30_LPDDR2) > +#include "sdram-px30-lpddr2-detect-333.inc" > +#elif defined(CONFIG_RAM_PX30_LPDDR3) > +#include "sdram-px30-lpddr3-detect-333.inc" > +#else > #include "sdram-px30-ddr3-detect-333.inc" > +#endif How about putting this in the device tree? I think that would be a better place. Regards, Simon > }; > > struct ddr_phy_skew skew = { > -- > 2.28.0 >
Hi Simon, Am Freitag, 2. Oktober 2020, 04:09:56 CEST schrieb Simon Glass: > Hi Heiko, > > On Thu, 1 Oct 2020 at 12:40, Heiko Stuebner <heiko@sntech.de> wrote: > > > > From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > > > The SRAM on the PX30 is not big enough to hold multiple DDR configs > > so it needs to be selected during build. > > > > So far simply the DDR3 config was always selected and getting DDR4 > > or LPDDR2/3 initialized would require a code modification. > > > > So add Kconfig options similar to RK3399 to allow selecting the DDR4 > > and LPDDR2/3 options instead, while DDR3 stays the default as before. > > > > Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > --- > > drivers/ram/rockchip/Kconfig | 21 +++++++++++++++++++++ > > drivers/ram/rockchip/sdram_px30.c | 8 ++++++++ > > 2 files changed, 29 insertions(+) > > > > diff --git a/drivers/ram/rockchip/Kconfig b/drivers/ram/rockchip/Kconfig > > index 8e97c2f49e..c459bbf5e2 100644 > > --- a/drivers/ram/rockchip/Kconfig > > +++ b/drivers/ram/rockchip/Kconfig > > @@ -22,6 +22,27 @@ config RAM_ROCKCHIP_DEBUG > > This is an option for developers to understand the ram drivers > > initialization, configurations and etc. > > > > +config RAM_PX30_DDR4 > > + bool "DDR3 support for Rockchip PX30" > > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > > + help > > + This enables DDR4 sdram support instead of the default DDR3 support > > + on Rockchip PC30 SoCs. > > + > > +config RAM_PX30_LPDDR2 > > + bool "LPDDR2 support for Rockchip PX30" > > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > > + help > > + This enables LPDDR2 sdram support instead of the default DDR3 support > > + on Rockchip PC30 SoCs. > > + > > +config RAM_PX30_LPDDR3 > > + bool "LPDDR3 support for Rockchip PX30" > > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > > + help > > + This enables LPDDR3 sdram support instead of the default DDR3 support > > + on Rockchip PC30 SoCs. > > + > > config RAM_RK3399_LPDDR4 > > bool "LPDDR4 support for Rockchip RK3399" > > depends on RAM_ROCKCHIP && ROCKCHIP_RK3399 > > diff --git a/drivers/ram/rockchip/sdram_px30.c b/drivers/ram/rockchip/sdram_px30.c > > index fd5763d0a0..2f1f6e9c0c 100644 > > --- a/drivers/ram/rockchip/sdram_px30.c > > +++ b/drivers/ram/rockchip/sdram_px30.c > > @@ -125,7 +125,15 @@ u32 addrmap[][8] = { > > struct dram_info dram_info; > > > > struct px30_sdram_params sdram_configs[] = { > > +#if defined(CONFIG_RAM_PX30_DDR4) > > +#include "sdram-px30-ddr4-detect-333.inc" > > +#elif defined(CONFIG_RAM_PX30_LPDDR2) > > +#include "sdram-px30-lpddr2-detect-333.inc" > > +#elif defined(CONFIG_RAM_PX30_LPDDR3) > > +#include "sdram-px30-lpddr3-detect-333.inc" > > +#else > > #include "sdram-px30-ddr3-detect-333.inc" > > +#endif > > How about putting this in the device tree? I think that would be a better place. On the PX30 the TPL does the ram initialization and the SRAM it runs in is very limited, so the PX30-TPL doesn't even have devicetree support available - hence the ram selection needs to selected at compiletime. Even right now we're "dancing" very narrowly on the limit ;-) Heiko
Hi Simon, Am Freitag, 2. Oktober 2020, 07:58:35 CEST schrieb Heiko Stübner: > Am Freitag, 2. Oktober 2020, 04:09:56 CEST schrieb Simon Glass: > > On Thu, 1 Oct 2020 at 12:40, Heiko Stuebner <heiko@sntech.de> wrote: > > > > > > From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > > > > > The SRAM on the PX30 is not big enough to hold multiple DDR configs > > > so it needs to be selected during build. > > > > > > So far simply the DDR3 config was always selected and getting DDR4 > > > or LPDDR2/3 initialized would require a code modification. > > > > > > So add Kconfig options similar to RK3399 to allow selecting the DDR4 > > > and LPDDR2/3 options instead, while DDR3 stays the default as before. > > > > > > Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > > --- > > > drivers/ram/rockchip/Kconfig | 21 +++++++++++++++++++++ > > > drivers/ram/rockchip/sdram_px30.c | 8 ++++++++ > > > 2 files changed, 29 insertions(+) > > > > > > diff --git a/drivers/ram/rockchip/Kconfig b/drivers/ram/rockchip/Kconfig > > > index 8e97c2f49e..c459bbf5e2 100644 > > > --- a/drivers/ram/rockchip/Kconfig > > > +++ b/drivers/ram/rockchip/Kconfig > > > @@ -22,6 +22,27 @@ config RAM_ROCKCHIP_DEBUG > > > This is an option for developers to understand the ram drivers > > > initialization, configurations and etc. > > > > > > +config RAM_PX30_DDR4 > > > + bool "DDR3 support for Rockchip PX30" > > > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > > > + help > > > + This enables DDR4 sdram support instead of the default DDR3 support > > > + on Rockchip PC30 SoCs. > > > + > > > +config RAM_PX30_LPDDR2 > > > + bool "LPDDR2 support for Rockchip PX30" > > > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > > > + help > > > + This enables LPDDR2 sdram support instead of the default DDR3 support > > > + on Rockchip PC30 SoCs. > > > + > > > +config RAM_PX30_LPDDR3 > > > + bool "LPDDR3 support for Rockchip PX30" > > > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > > > + help > > > + This enables LPDDR3 sdram support instead of the default DDR3 support > > > + on Rockchip PC30 SoCs. > > > + > > > config RAM_RK3399_LPDDR4 > > > bool "LPDDR4 support for Rockchip RK3399" > > > depends on RAM_ROCKCHIP && ROCKCHIP_RK3399 > > > diff --git a/drivers/ram/rockchip/sdram_px30.c b/drivers/ram/rockchip/sdram_px30.c > > > index fd5763d0a0..2f1f6e9c0c 100644 > > > --- a/drivers/ram/rockchip/sdram_px30.c > > > +++ b/drivers/ram/rockchip/sdram_px30.c > > > @@ -125,7 +125,15 @@ u32 addrmap[][8] = { > > > struct dram_info dram_info; > > > > > > struct px30_sdram_params sdram_configs[] = { > > > +#if defined(CONFIG_RAM_PX30_DDR4) > > > +#include "sdram-px30-ddr4-detect-333.inc" > > > +#elif defined(CONFIG_RAM_PX30_LPDDR2) > > > +#include "sdram-px30-lpddr2-detect-333.inc" > > > +#elif defined(CONFIG_RAM_PX30_LPDDR3) > > > +#include "sdram-px30-lpddr3-detect-333.inc" > > > +#else > > > #include "sdram-px30-ddr3-detect-333.inc" > > > +#endif > > > > How about putting this in the device tree? I think that would be a better place. > > On the PX30 the TPL does the ram initialization and the SRAM it runs in > is very limited, so the PX30-TPL doesn't even have devicetree support > available - hence the ram selection needs to selected at compiletime. > > Even right now we're "dancing" very narrowly on the limit ;-) Just to provide some more detail, in the PX30-TPL there is neither devicetree nor driver model support and of the 10240bytes of available sram, the current TPL binary already uses 10184 bytes. So right now we have a whopping 56 bytes still available, which doesn't leave wiggleroom at all and I actually need to hope that uboot stays on its diet ;-) . Heiko
On Fri, Oct 2, 2020 at 7:40 AM Simon Glass <sjg@chromium.org> wrote: > > Hi Heiko, > > On Thu, 1 Oct 2020 at 12:40, Heiko Stuebner <heiko@sntech.de> wrote: > > > > From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > > > The SRAM on the PX30 is not big enough to hold multiple DDR configs > > so it needs to be selected during build. > > > > So far simply the DDR3 config was always selected and getting DDR4 > > or LPDDR2/3 initialized would require a code modification. > > > > So add Kconfig options similar to RK3399 to allow selecting the DDR4 > > and LPDDR2/3 options instead, while DDR3 stays the default as before. > > > > Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > --- > > drivers/ram/rockchip/Kconfig | 21 +++++++++++++++++++++ > > drivers/ram/rockchip/sdram_px30.c | 8 ++++++++ > > 2 files changed, 29 insertions(+) > > > > diff --git a/drivers/ram/rockchip/Kconfig b/drivers/ram/rockchip/Kconfig > > index 8e97c2f49e..c459bbf5e2 100644 > > --- a/drivers/ram/rockchip/Kconfig > > +++ b/drivers/ram/rockchip/Kconfig > > @@ -22,6 +22,27 @@ config RAM_ROCKCHIP_DEBUG > > This is an option for developers to understand the ram drivers > > initialization, configurations and etc. > > > > +config RAM_PX30_DDR4 > > + bool "DDR3 support for Rockchip PX30" > > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > > + help > > + This enables DDR4 sdram support instead of the default DDR3 support > > + on Rockchip PC30 SoCs. > > + > > +config RAM_PX30_LPDDR2 > > + bool "LPDDR2 support for Rockchip PX30" > > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > > + help > > + This enables LPDDR2 sdram support instead of the default DDR3 support > > + on Rockchip PC30 SoCs. > > + > > +config RAM_PX30_LPDDR3 > > + bool "LPDDR3 support for Rockchip PX30" > > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > > + help > > + This enables LPDDR3 sdram support instead of the default DDR3 support > > + on Rockchip PC30 SoCs. > > + > > config RAM_RK3399_LPDDR4 > > bool "LPDDR4 support for Rockchip RK3399" > > depends on RAM_ROCKCHIP && ROCKCHIP_RK3399 > > diff --git a/drivers/ram/rockchip/sdram_px30.c b/drivers/ram/rockchip/sdram_px30.c > > index fd5763d0a0..2f1f6e9c0c 100644 > > --- a/drivers/ram/rockchip/sdram_px30.c > > +++ b/drivers/ram/rockchip/sdram_px30.c > > @@ -125,7 +125,15 @@ u32 addrmap[][8] = { > > struct dram_info dram_info; > > > > struct px30_sdram_params sdram_configs[] = { > > +#if defined(CONFIG_RAM_PX30_DDR4) > > +#include "sdram-px30-ddr4-detect-333.inc" > > +#elif defined(CONFIG_RAM_PX30_LPDDR2) > > +#include "sdram-px30-lpddr2-detect-333.inc" > > +#elif defined(CONFIG_RAM_PX30_LPDDR3) > > +#include "sdram-px30-lpddr3-detect-333.inc" > > +#else > > #include "sdram-px30-ddr3-detect-333.inc" > > +#endif > > How about putting this in the device tree? I think that would be a better place. I did try this while support Engicam PX30.Core. Seems impossible to drive with the timings via device tree. With PLATDATA and disabled unused drivers in TPL, I still way behind 0x3000 bytes. MKIMAGE u-boot.itb MKIMAGE tpl/u-boot-tpl-rockchip.bin Error: SPL image is too large (size 0x5800 than 0x2800) Error: Bad parameters for image type Jagan.
On Fri, Oct 2, 2020 at 12:10 AM Heiko Stuebner <heiko@sntech.de> wrote: > > From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > The SRAM on the PX30 is not big enough to hold multiple DDR configs > so it needs to be selected during build. > > So far simply the DDR3 config was always selected and getting DDR4 > or LPDDR2/3 initialized would require a code modification. > > So add Kconfig options similar to RK3399 to allow selecting the DDR4 > and LPDDR2/3 options instead, while DDR3 stays the default as before. > > Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > --- Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
On 2020/10/2 上午2:40, Heiko Stuebner wrote: > From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > The SRAM on the PX30 is not big enough to hold multiple DDR configs > so it needs to be selected during build. > > So far simply the DDR3 config was always selected and getting DDR4 > or LPDDR2/3 initialized would require a code modification. > > So add Kconfig options similar to RK3399 to allow selecting the DDR4 > and LPDDR2/3 options instead, while DDR3 stays the default as before. > > Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> Reviewed-by: Kever Yang<kever.yang@rock-chips.com> Thanks, - Kever > --- > drivers/ram/rockchip/Kconfig | 21 +++++++++++++++++++++ > drivers/ram/rockchip/sdram_px30.c | 8 ++++++++ > 2 files changed, 29 insertions(+) > > diff --git a/drivers/ram/rockchip/Kconfig b/drivers/ram/rockchip/Kconfig > index 8e97c2f49e..c459bbf5e2 100644 > --- a/drivers/ram/rockchip/Kconfig > +++ b/drivers/ram/rockchip/Kconfig > @@ -22,6 +22,27 @@ config RAM_ROCKCHIP_DEBUG > This is an option for developers to understand the ram drivers > initialization, configurations and etc. > > +config RAM_PX30_DDR4 > + bool "DDR3 support for Rockchip PX30" > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > + help > + This enables DDR4 sdram support instead of the default DDR3 support > + on Rockchip PC30 SoCs. > + > +config RAM_PX30_LPDDR2 > + bool "LPDDR2 support for Rockchip PX30" > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > + help > + This enables LPDDR2 sdram support instead of the default DDR3 support > + on Rockchip PC30 SoCs. > + > +config RAM_PX30_LPDDR3 > + bool "LPDDR3 support for Rockchip PX30" > + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 > + help > + This enables LPDDR3 sdram support instead of the default DDR3 support > + on Rockchip PC30 SoCs. > + > config RAM_RK3399_LPDDR4 > bool "LPDDR4 support for Rockchip RK3399" > depends on RAM_ROCKCHIP && ROCKCHIP_RK3399 > diff --git a/drivers/ram/rockchip/sdram_px30.c b/drivers/ram/rockchip/sdram_px30.c > index fd5763d0a0..2f1f6e9c0c 100644 > --- a/drivers/ram/rockchip/sdram_px30.c > +++ b/drivers/ram/rockchip/sdram_px30.c > @@ -125,7 +125,15 @@ u32 addrmap[][8] = { > struct dram_info dram_info; > > struct px30_sdram_params sdram_configs[] = { > +#if defined(CONFIG_RAM_PX30_DDR4) > +#include "sdram-px30-ddr4-detect-333.inc" > +#elif defined(CONFIG_RAM_PX30_LPDDR2) > +#include "sdram-px30-lpddr2-detect-333.inc" > +#elif defined(CONFIG_RAM_PX30_LPDDR3) > +#include "sdram-px30-lpddr3-detect-333.inc" > +#else > #include "sdram-px30-ddr3-detect-333.inc" > +#endif > }; > > struct ddr_phy_skew skew = {
> On 01.10.2020, at 20:40, Heiko Stuebner <heiko@sntech.de> wrote: > > From: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> > > The SRAM on the PX30 is not big enough to hold multiple DDR configs > so it needs to be selected during build. > > So far simply the DDR3 config was always selected and getting DDR4 > or LPDDR2/3 initialized would require a code modification. > > So add Kconfig options similar to RK3399 to allow selecting the DDR4 > and LPDDR2/3 options instead, while DDR3 stays the default as before. > > Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com> Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
diff --git a/drivers/ram/rockchip/Kconfig b/drivers/ram/rockchip/Kconfig index 8e97c2f49e..c459bbf5e2 100644 --- a/drivers/ram/rockchip/Kconfig +++ b/drivers/ram/rockchip/Kconfig @@ -22,6 +22,27 @@ config RAM_ROCKCHIP_DEBUG This is an option for developers to understand the ram drivers initialization, configurations and etc. +config RAM_PX30_DDR4 + bool "DDR3 support for Rockchip PX30" + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 + help + This enables DDR4 sdram support instead of the default DDR3 support + on Rockchip PC30 SoCs. + +config RAM_PX30_LPDDR2 + bool "LPDDR2 support for Rockchip PX30" + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 + help + This enables LPDDR2 sdram support instead of the default DDR3 support + on Rockchip PC30 SoCs. + +config RAM_PX30_LPDDR3 + bool "LPDDR3 support for Rockchip PX30" + depends on RAM_ROCKCHIP && ROCKCHIP_PX30 + help + This enables LPDDR3 sdram support instead of the default DDR3 support + on Rockchip PC30 SoCs. + config RAM_RK3399_LPDDR4 bool "LPDDR4 support for Rockchip RK3399" depends on RAM_ROCKCHIP && ROCKCHIP_RK3399 diff --git a/drivers/ram/rockchip/sdram_px30.c b/drivers/ram/rockchip/sdram_px30.c index fd5763d0a0..2f1f6e9c0c 100644 --- a/drivers/ram/rockchip/sdram_px30.c +++ b/drivers/ram/rockchip/sdram_px30.c @@ -125,7 +125,15 @@ u32 addrmap[][8] = { struct dram_info dram_info; struct px30_sdram_params sdram_configs[] = { +#if defined(CONFIG_RAM_PX30_DDR4) +#include "sdram-px30-ddr4-detect-333.inc" +#elif defined(CONFIG_RAM_PX30_LPDDR2) +#include "sdram-px30-lpddr2-detect-333.inc" +#elif defined(CONFIG_RAM_PX30_LPDDR3) +#include "sdram-px30-lpddr3-detect-333.inc" +#else #include "sdram-px30-ddr3-detect-333.inc" +#endif }; struct ddr_phy_skew skew = {