> +#define TTC0_BASE (PERIPH_BASE + 0x1000) So, PERIPH_BASE is also an iomem cookie, not a physical address, so it too should be void __iomem *. Hence: > +#define PERIPH_BASE 0xF8000000 should be: #define PERIPH_BASE IOMEM(0xF8000000) But then in a different patch you do: + .virtual = TTC0_BASE, + .pfn = __phys_to_pfn(TTC0_BASE), So it's also used as a physical address. Yuck.