hi Best Regards Wenbin Song
> -----Original Message----- > From: york sun > Sent: Friday, October 21, 2016 10:16 PM > To: Wenbin Song <wenbin.s...@nxp.com>; albert.u.b...@aribaud.net; > Mingkai Hu <mingkai...@nxp.com>; u-boot@lists.denx.de > Subject: Re: [PATCH v3 2/3] armv8/fsl-layerscape: fdt: fixup GIC node for > LS1043A rev1.0 > > On 10/21/2016 03:28 AM, Wenbin song wrote: > > The LS1043A rev1.1 silicon supports two types of GIC offset: 4K > > alignment and 64K alignment. 4K alignment is consistent with rev1.0 > implement. > > > > The default GIC offset in kernel device tree is using 64K alignment, > > if rev1.0 silicon used, need to fixup the GIC node to use 4K alignment. > > > > Signed-off-by: Wenbin Song <wenbin.s...@nxp.com> > > Signed-off-by: Mingkai Hu <mingkai...@nxp.com> > > --- > > Changes for v3: > > Replace CONFIG_LS1043A with HAS_FEATURE_GIC4K_ALIGN. > > --- > > arch/arm/cpu/armv8/fsl-layerscape/fdt.c | 49 > ++++++++++++++++++++++ > > .../include/asm/arch-fsl-layerscape/immap_lsch2.h | 3 +- > > 2 files changed, 51 insertions(+), 1 deletion(-) > > > > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c > > b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c > > index 1a8321b..54f8492 100644 > > --- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c > > +++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c > > @@ -126,6 +126,52 @@ void fsl_fdt_disable_usb(void *blob) > > } > > } > > > > +#ifdef CONFIG_HAS_FEATURE_GIC4K_ALIGN > > +/* Fixup gic node align with 4K */ > > +static void fdt_fixup_gic(void *blob) { > > + int offset, err; > > + u64 reg[8]; > > + struct ccsr_gur __iomem *gur = (void > *)(CONFIG_SYS_FSL_GUTS_ADDR); > > + unsigned int val; > > + struct ccsr_scfg __iomem *scfg = (void > *)CONFIG_SYS_FSL_SCFG_ADDR; > > + > > + val = gur_in32(&gur->svr) & 0xff; > > + > > + if (val == REV1_1) { > > + val = scfg_in32(&scfg->gic_align) & (0x01 << GIC_ADDR_BIT); > > + if (!val) > > + return; > > + } > > For rev 1.0 SoC, it runs through here, right? If that what you want? [wenbin] For rev1.0 , it should be fixed, too. Because rev1.0 is using 4K offset alignment, but the default is using 64K alignment. I will give some descriptions on commit message about it. > > + > > + offset = fdt_subnode_offset(blob, 0, "interrupt-controller@1400000"); > > + if (offset < 0) { > > + printf("WARNING: fdt_subnode_offset can't find > node %s: %s\n", > > + "interrupt-controller@1400000", fdt_strerror(offset)); > > + return; > > + } > > + > > + reg[0] = cpu_to_fdt64(0x1401000); > > + reg[1] = cpu_to_fdt64(0x1000); > > + reg[2] = cpu_to_fdt64(0x1402000); > > + reg[3] = cpu_to_fdt64(0x2000); > > + reg[4] = cpu_to_fdt64(0x1404000); > > + reg[5] = cpu_to_fdt64(0x2000); > > + reg[6] = cpu_to_fdt64(0x1406000); > > + reg[7] = cpu_to_fdt64(0x2000); > > What are these magic numbers? [wenbin] they are the offset and size for each GIC components. I will redefine them using macros. > > > + > > + err = fdt_setprop(blob, offset, "reg", reg, sizeof(reg)); > > + if (err < 0) { > > + printf("WARNING: fdt_setprop can't set %s from > node %s: %s\n", > > + "reg", "interrupt-controller@1400000", > > + fdt_strerror(err)); > > + return; > > + } > > + > > + return; > > +} > > +#endif > > + > > void ft_cpu_setup(void *blob, bd_t *bd) { #ifdef CONFIG_FSL_LSCH2 > > @@ -170,4 +216,7 @@ void ft_cpu_setup(void *blob, bd_t *bd) #endif > > fsl_fdt_disable_usb(blob); > > > > +#ifdef CONFIG_HAS_FEATURE_GIC4K_ALIGN > > + fdt_fixup_gic(blob); > > +#endif > > } > > diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h > > b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h > > index d88543d..1dfef53 100644 > > --- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h > > +++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h > > @@ -359,7 +359,8 @@ struct ccsr_scfg { > > u32 qspi_cfg; > > u8 res_160[0x180-0x160]; > > u32 dmamcr; > > - u8 res_184[0x18c-0x184]; > > + u8 res_184[0x188-0x184]; > > + u32 gic_align; > > u32 debug_icid; > > u8 res_190[0x1a4-0x190]; > > u32 snpcnfgcr; > > > > Would it be reasonable to squash this patch with previous one in this set? > They > both deal with the same thing. If you run git bisect between this two, you > don't > get correct gic offset in device tree, do you? > [wenbin]yes , I will squash it . > York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot