diff mbox series

[U-Boot,v2,02/26] ddr: imx8m: fix ddr firmware location when enable SPL OF

Message ID 20190819095817.22107-3-peng.fan@nxp.com
State Superseded
Delegated to: Stefano Babic
Headers show
Series i.MX8MM support | expand

Commit Message

Peng Fan Aug. 19, 2019, 9:42 a.m. UTC
With CONFIG_SPL_OF_CONTROL, the device tree will be padded to
end of the u-boot-spl-nodtb.bin, however we also put
the ddr firmware file to this location, so need to adapt
the code with SPL OF and align to 4bytes to ease copy firmware.

Reviewed-by: Frieder Schrempf <frieder.schrempf at kontron.de>
Tested-by: Frieder Schrempf <frieder.schrempf at kontron.de>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/ddr/imx/imx8m/helper.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

Comments

Frieder Schrempf Aug. 26, 2019, 12:45 p.m. UTC | #1
On 19.08.19 11:42, Peng Fan wrote:
> With CONFIG_SPL_OF_CONTROL, the device tree will be padded to
> end of the u-boot-spl-nodtb.bin, however we also put
> the ddr firmware file to this location, so need to adapt
> the code with SPL OF and align to 4bytes to ease copy firmware.

Please add a space between "4" and "bytes".

> 
> Reviewed-by: Frieder Schrempf <frieder.schrempf at kontron.de>
> Tested-by: Frieder Schrempf <frieder.schrempf at kontron.de>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>   drivers/ddr/imx/imx8m/helper.c | 12 +++++++++++-
>   1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/ddr/imx/imx8m/helper.c b/drivers/ddr/imx/imx8m/helper.c
> index 61cd4f6db1..3e605353ea 100644
> --- a/drivers/ddr/imx/imx8m/helper.c
> +++ b/drivers/ddr/imx/imx8m/helper.c
> @@ -31,7 +31,17 @@ void ddr_load_train_firmware(enum fw_type type)
>   	unsigned long pr_to32, pr_from32;
>   	unsigned long fw_offset = type ? IMEM_2D_OFFSET : 0;
>   	unsigned long imem_start = (unsigned long)&_end + fw_offset;
> -	unsigned long dmem_start = imem_start + IMEM_LEN;
> +	unsigned long dmem_start;
> +
> +#ifdef CONFIG_SPL_OF_CONTROL
> +	if (gd->fdt_blob && !fdt_check_header(gd->fdt_blob)) {
> +		imem_start = roundup((unsigned long)&_end +
> +				     fdt_totalsize(gd->fdt_blob), 4) +
> +			fw_offset;
> +	}
> +#endif
> +
> +	dmem_start = imem_start + IMEM_LEN;
>   
>   	pr_from32 = imem_start;
>   	pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * IMEM_OFFSET_ADDR;
>
diff mbox series

Patch

diff --git a/drivers/ddr/imx/imx8m/helper.c b/drivers/ddr/imx/imx8m/helper.c
index 61cd4f6db1..3e605353ea 100644
--- a/drivers/ddr/imx/imx8m/helper.c
+++ b/drivers/ddr/imx/imx8m/helper.c
@@ -31,7 +31,17 @@  void ddr_load_train_firmware(enum fw_type type)
 	unsigned long pr_to32, pr_from32;
 	unsigned long fw_offset = type ? IMEM_2D_OFFSET : 0;
 	unsigned long imem_start = (unsigned long)&_end + fw_offset;
-	unsigned long dmem_start = imem_start + IMEM_LEN;
+	unsigned long dmem_start;
+
+#ifdef CONFIG_SPL_OF_CONTROL
+	if (gd->fdt_blob && !fdt_check_header(gd->fdt_blob)) {
+		imem_start = roundup((unsigned long)&_end +
+				     fdt_totalsize(gd->fdt_blob), 4) +
+			fw_offset;
+	}
+#endif
+
+	dmem_start = imem_start + IMEM_LEN;
 
 	pr_from32 = imem_start;
 	pr_to32 = DDR_TRAIN_CODE_BASE_ADDR + 4 * IMEM_OFFSET_ADDR;