[PATCH 1/2] ARM: mxs: detect SoC by checking CHIPID register
Shawn Guo
shawn.guo at linaro.org
Fri Jan 6 08:39:11 EST 2012
On Fri, Jan 06, 2012 at 12:40:29PM +0100, Wolfram Sang wrote:
> On Fri, Jan 06, 2012 at 10:41:51AM +0800, Shawn Guo wrote:
> > Both imx23 and imx28 have CHIPID register at address 0x8001c310, which
> > can be used to identify the SoC. This patch changes cpu_is_xxx and
> > __arch_decomp_setup to use this CHIPID register than machine type to
> > detect the chip between imx23 and imx28, so that we do not need to
> > change these functions whenever a new board/machine gets added.
> >
> > Suggested-by: Wolfram Sang <w.sang at pengutronix.de>
> > Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
>
> [...]
>
> > +
> > +/*
> > + * MXS CPU types
> > + */
> > +#define CHIPID (MXS_IO_ADDRESS(MXS_DIGCTL_BASE_ADDR) + 0x310)
>
> Hmm, in general I don't like accessing single registers this way. Since
> we only read, it might work for now, but I think it will turn ugly the
> more we use from DIGCTL (which is annoying to abstract, yes).
>
I agree with you. But I do not really want to start writing a digctl.c
just from this patch series.
> 0x310 should not be hardcoded. CHIPID could be MXS_CHIPID.
>
I thought about those when I wrote the code, and decided not to bother,
since they are very really limited in mxs.h. But now I think I should
bother, because your comments are here.
> > diff --git a/arch/arm/mach-mxs/include/mach/uncompress.h b/arch/arm/mach-mxs/include/mach/uncompress.h
> > index 6777674..a8de26d 100644
> > --- a/arch/arm/mach-mxs/include/mach/uncompress.h
> > +++ b/arch/arm/mach-mxs/include/mach/uncompress.h
> > @@ -55,16 +55,17 @@ static inline void flush(void)
> >
> > #define MX23_DUART_BASE_ADDR 0x80070000
> > #define MX28_DUART_BASE_ADDR 0x80074000
> > +#define MXS_DIGCTL_CHIPID 0x8001c310
> >
> > static inline void __arch_decomp_setup(unsigned long arch_id)
> > {
> > - switch (arch_id) {
> > - case MACH_TYPE_MX23EVK:
> > + u16 chipid = (*(volatile unsigned long *) MXS_DIGCTL_CHIPID) >> 16;
>
> Can't we use the cpu_is-functions here?
>
No. We are running with MMU off here.
--
Regards,
Shawn
More information about the linux-arm-kernel
mailing list