On 04/12/2016 05:28 AM, Vincent Siles wrote:
> On the LS102x boards, in order to initialize the ICID values of masters,
> the dev_stream_id array holds absolute offsets from the base of SCFG.
> 
> In ls102xa_config_ssmu_stream_id, the base pointer is cast to uint32_t *
> before adding the offset, leading to an invalid address. Casting it to
> unsigned char * solves the issue.
> 
> Also minor cosmetic renaming of uint32_t into u32 to be consistent in
> the whole file.
> 
> Signed-off-by: Vincent Siles <[email protected]>
> ---
> 
>  board/freescale/common/ls102xa_stream_id.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/board/freescale/common/ls102xa_stream_id.c 
> b/board/freescale/common/ls102xa_stream_id.c
> index f434269..2a4ef3e 100644
> --- a/board/freescale/common/ls102xa_stream_id.c
> +++ b/board/freescale/common/ls102xa_stream_id.c
> @@ -10,11 +10,11 @@
>  
>  void ls102xa_config_smmu_stream_id(struct smmu_stream_id *id, uint32_t num)
>  {
> -     uint32_t *scfg = (uint32_t *)CONFIG_SYS_FSL_SCFG_ADDR;
> +     unsigned char *scfg = (unsigned char *)CONFIG_SYS_FSL_SCFG_ADDR;
>       int i;
>  
>       for (i = 0; i < num; i++)
> -             out_be32(scfg + id[i].offset, id[i].stream_id);
> +             out_be32((u32 *)(scfg + id[i].offset), id[i].stream_id);
>  }
>  
>  void ls1021x_config_caam_stream_id(struct liodn_id_table *tbl, int size)
> @@ -28,6 +28,6 @@ void ls1021x_config_caam_stream_id(struct liodn_id_table 
> *tbl, int size)
>               else
>                       liodn = tbl[i].id[0];
>  
> -             out_le32((uint32_t *)(tbl[i].reg_offset), liodn);
> +             out_le32((u32 *)(tbl[i].reg_offset), liodn);
>       }
>  }
> 

If the size of the pointer is an issue, maybe you ca use "void *"? Can you check
if "struct ccsr_scfg" should/can be used?

York
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to