what is the rationale for funny "0x100" offset for OMAP4 GPIO addresses?

Sascha Hauer s.hauer at pengutronix.de
Wed Dec 5 07:58:30 EST 2012


On Wed, Dec 05, 2012 at 07:54:51AM -0500, Robert P. J. Day wrote:
> 
>   i was going to submit a patch to replace magic constants for OMAP4
> with more meaningful names but i ran into an oddity.  here's
> omap4-silicon.h:
> 
> #define OMAP44XX_L4_WKUP_BASE           0x4A300000
> #define OMAP44XX_L4_PER_BASE            0x48000000
> 
> and here's part of an old posting to the linux-omap mailing list:
> 
> +/* GPIO controller*/
> +#define OMAP44XX_GPIO1_BASE             (L4_WK_44XX_BASE  + 0x10000)
> +#define OMAP44XX_GPIO2_BASE             (L4_PER_44XX_BASE + 0x55000)
> +#define OMAP44XX_GPIO3_BASE             (L4_PER_44XX_BASE + 0x57000)
> +#define OMAP44XX_GPIO4_BASE             (L4_PER_44XX_BASE + 0x59000)
> +#define OMAP44XX_GPIO5_BASE             (L4_PER_44XX_BASE + 0x5B000)
> +#define OMAP44XX_GPIO6_BASE             (L4_PER_44XX_BASE + 0x5D000)
> 
> but here's the tail end of omap4-generic.c:
> 
> static int omap4_gpio_init(void)
> {
>         add_generic_device("omap-gpio", 0, NULL, 0x4a310100,
>                                 0xf00, IORESOURCE_MEM, NULL);
>         add_generic_device("omap-gpio", 1, NULL, 0x48055100,
>                                 0xf00, IORESOURCE_MEM, NULL);
>         add_generic_device("omap-gpio", 2, NULL, 0x48057100,
>                                 0xf00, IORESOURCE_MEM, NULL);
>         add_generic_device("omap-gpio", 3, NULL, 0x48059100,
>                                 0xf00, IORESOURCE_MEM, NULL);
>         add_generic_device("omap-gpio", 4, NULL, 0x4805b100,
>                                 0xf00, IORESOURCE_MEM, NULL);
>         add_generic_device("omap-gpio", 5, NULL, 0x4805d100,
>                                 0xf00, IORESOURCE_MEM, NULL);
> 
>         return 0;
> }
> 
>   as you can see, the numbers don't add up exactly -- the constants in
> that final file are all 0x100 larger than a simple addition.  anyone
> know where that comes from?

This comes from the hardware. The GPIO controller is the same as on
omap3, but the base addresses have an additional 0x100 offset.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list