From mboxrd@z Thu Jan 1 00:00:00 1970 From: York Sun Date: Wed, 20 Apr 2016 09:53:32 -0700 Subject: [U-Boot] [PATCH] arm: Fix SCFG ICID reg addresses In-Reply-To: <1460463312-3382-2-git-send-email-vincent.siles@provenrun.com> References: <1460463312-3382-1-git-send-email-vincent.siles@provenrun.com> <1460463312-3382-2-git-send-email-vincent.siles@provenrun.com> Message-ID: <5717B40C.2040804@nxp.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > --- > > 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