[U-Boot] [PATCH] mpc85xx: Fix the offset of register address error
Tang Yuantian-B29983
B29983 at freescale.com
Tue Oct 8 05:28:09 CEST 2013
> > diff --git a/arch/powerpc/include/asm/mpc85xx_gpio.h
> > b/arch/powerpc/include/asm/mpc85xx_gpio.h
> > index 3d11884..87bb4a0 100644
> > --- a/arch/powerpc/include/asm/mpc85xx_gpio.h
> > +++ b/arch/powerpc/include/asm/mpc85xx_gpio.h
> > @@ -20,7 +20,7 @@
> > static inline void mpc85xx_gpio_set(unsigned int mask,
> > unsigned int dir, unsigned int val) {
> > - ccsr_gpio_t *gpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR + 0xc00);
> > + ccsr_gpio_t *gpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
> >
> > /* First mask off the unwanted parts of "dir" and "val" */
> > dir &= mask;
> > @@ -56,7 +56,7 @@ static inline void mpc85xx_gpio_set_high(unsigned
> > int gpios)
> >
> > static inline unsigned int mpc85xx_gpio_get(unsigned int mask) {
> > - ccsr_gpio_t *gpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR + 0xc00);
> > + ccsr_gpio_t *gpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
> >
> > /* Read the requested values */
> > return in_be32(&gpio->gpdat) & mask;
> >
>
> Yuantian,
>
> Please go through the base address again. I think some SoCs do use 0xc00
> offset from 0xF000, for eample P1020, P1023, MPC8572. I only spot checked
> several.
>
Hi York,
I double checked the offset address of GPIO, I found that the offset addresses of
GPIO on the boards you mentioned above are all changed to 0x0, not 0xc00 according
to the newest RM.
I do found that the offset address is 0xc00 in some old RMs.
You can find the newest RM here:
For MPC8572: http://compass.freescale.net/livelink/livelink/fetch/2001/3448/223475/200815/108253488/223469393/223503931/226628079/226445024/MPC8572ERM_Rev3_DRAFT1.pdf?nodeid=226438746&vernum=-2
For p1023:
http://compass.freescale.net/livelink/livelink/fetch/2001/3448/223475/200815/108253488/223469393/223506436/223521755/223743960/P1023RM_Mark-up.pdf?nodeid=229647544&vernum=-2
for 1020:
http://compass.freescale.net/livelink/livelink/fetch/2001/3448/223475/200815/108253488/223469393/223506436/223522385/224515312/P1020RM_Rev6_Mark-up.pdf?nodeid=228476444&vernum=-2
If the offset addresses on these boards were 0xc00, the driver is still wrong, because in that case
The GPIO address should be: CONFIG_SYS_IMMR + 0xc00, not CONFIG_SYS_MPC85xx_GPIO_ADDR + 0xc00.
(CONFIG_SYS_MPC85xx_GPIO_ADDR == CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_GPIO_OFFSET).
So, please apply this patch, I need the GPIO driver to operate GPIO.
Regards,
Yuantian
> York
More information about the U-Boot
mailing list