On Fri 24 Apr 13:24 PDT 2020, Mathieu Poirier wrote:

> Get from the DT the syncon to probe the state of the remote processor
> and the location of the resource table.
> 
> Mainly based on the work published by Arnaud Pouliquen [1].
> 
> [1]. https://patchwork.kernel.org/project/linux-remoteproc/list/?series=239877
> 
> Signed-off-by: Mathieu Poirier <mathieu.poir...@linaro.org>
> Reviewed-by: Loic Pallardy <loic.palla...@st.com>

Reviewed-by: Bjorn Andersson <bjorn.anders...@linaro.org>

> ---
>  drivers/remoteproc/stm32_rproc.c | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
> 
> diff --git a/drivers/remoteproc/stm32_rproc.c 
> b/drivers/remoteproc/stm32_rproc.c
> index 658439d4b00a..a285f338bed8 100644
> --- a/drivers/remoteproc/stm32_rproc.c
> +++ b/drivers/remoteproc/stm32_rproc.c
> @@ -70,6 +70,8 @@ struct stm32_rproc {
>       struct reset_control *rst;
>       struct stm32_syscon hold_boot;
>       struct stm32_syscon pdds;
> +     struct stm32_syscon m4_state;
> +     struct stm32_syscon rsctbl;
>       int wdg_irq;
>       u32 nb_rmems;
>       struct stm32_rproc_mem *rmems;
> @@ -606,6 +608,30 @@ static int stm32_rproc_parse_dt(struct platform_device 
> *pdev,
>  
>       *auto_boot = of_property_read_bool(np, "st,auto-boot");
>  
> +     /*
> +      * See if we can check the M4 status, i.e if it was started
> +      * from the boot loader or not.
> +      */
> +     err = stm32_rproc_get_syscon(np, "st,syscfg-m4-state",
> +                                  &ddata->m4_state);
> +     if (err) {
> +             /* remember this */
> +             ddata->m4_state.map = NULL;
> +             /* no coprocessor state syscon (optional) */
> +             dev_warn(dev, "m4 state not supported\n");
> +
> +             /* no need to go further */
> +             return 0;
> +     }
> +
> +     /* See if we can get the resource table */
> +     err = stm32_rproc_get_syscon(np, "st,syscfg-rsc-tbl",
> +                                  &ddata->rsctbl);
> +     if (err) {
> +             /* no rsc table syscon (optional) */
> +             dev_warn(dev, "rsc tbl syscon not supported\n");
> +     }
> +
>       return 0;
>  }
>  
> -- 
> 2.20.1
> 

Reply via email to