On 11/10/2019 10:09 PM, Suman Anna wrote: > Hi Fabien, > > On 10/9/19 10:36 AM, Fabien Dessenne wrote: >> Load the optional resource table from the firmware, and write its >> address in the dedicated backup register. > What processor is this? Reason I ask is that you are using 0 as a no > resource table address, and if it is a valid address for that processor?
Since on system reset, the vector table of the STM32MP Cortex-M4 co-processor is fixed at address 0, the ResourceTable can't be located here. ResourceTable address = 0 can be safely interpreted as "No resource table". BR Fabien > > regards > Suman > >> Signed-off-by: Fabien Dessenne <fabien.desse...@st.com> >> --- >> drivers/remoteproc/stm32_copro.c | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> >> diff --git a/drivers/remoteproc/stm32_copro.c >> b/drivers/remoteproc/stm32_copro.c >> index 40bba37..eef3416 100644 >> --- a/drivers/remoteproc/stm32_copro.c >> +++ b/drivers/remoteproc/stm32_copro.c >> @@ -23,6 +23,7 @@ >> * @hold_boot_offset: offset of the register controlling the hold >> boot setting >> * @hold_boot_mask: bitmask of the register for the hold boot field >> * @is_running: is the remote processor running >> + * @rsc_table_addr: resource table address >> */ >> struct stm32_copro_privdata { >> struct reset_ctl reset_ctl; >> @@ -30,6 +31,7 @@ struct stm32_copro_privdata { >> uint hold_boot_offset; >> uint hold_boot_mask; >> bool is_running; >> + ulong rsc_table_addr; >> }; >> >> /** >> @@ -141,6 +143,7 @@ static void *stm32_copro_device_to_virt(struct udevice >> *dev, ulong da, >> static int stm32_copro_load(struct udevice *dev, ulong addr, ulong size) >> { >> struct stm32_copro_privdata *priv; >> + ulong rsc_table_size; >> int ret; >> >> priv = dev_get_priv(dev); >> @@ -155,6 +158,12 @@ static int stm32_copro_load(struct udevice *dev, ulong >> addr, ulong size) >> return ret; >> } >> >> + if (rproc_elf32_load_rsc_table(dev, addr, size, &priv->rsc_table_addr, >> + &rsc_table_size)) { >> + priv->rsc_table_addr = 0; >> + dev_warn(dev, "No valid resource table for this firmware\n"); >> + } >> + >> return rproc_elf32_load_image(dev, addr, size); >> } >> >> @@ -180,6 +189,10 @@ static int stm32_copro_start(struct udevice *dev) >> * rebooting autonomously >> */ >> ret = stm32_copro_set_hold_boot(dev, true); >> + if (!ret) >> + /* Store rsc_address in bkp register */ >> + writel(priv->rsc_table_addr, TAMP_COPRO_RSC_TBL_ADDRESS); >> + >> priv->is_running = !ret; >> return ret; >> } >> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot