[RFC] dove: fix __io() definition to use bus based offset

Arnd Bergmann arnd at arndb.de
Sat Jul 31 15:21:40 EDT 2010


On Saturday 31 July 2010 13:08:02 Russell King - ARM Linux wrote:
> On Thu, Jul 29, 2010 at 01:45:35PM +0800, Eric Miao wrote:
> > diff --git a/arch/arm/mach-dove/include/mach/io.h
> > b/arch/arm/mach-dove/include/mach/io.h
> > index 3b3e472..067435e 100644
> > --- a/arch/arm/mach-dove/include/mach/io.h
> > +++ b/arch/arm/mach-dove/include/mach/io.h
> > @@ -11,10 +11,9 @@
> > 
> >  #include "dove.h"
> > 
> > -#define IO_SPACE_LIMIT               0xffffffff
> > -
> > -#define __io(a)  ((void __iomem *)(((a) - DOVE_PCIE0_IO_PHYS_BASE) +\
> > -                                DOVE_PCIE0_IO_VIRT_BASE))
> > -#define __mem_pci(a)         (a)
> > +#define IO_SPACE_LIMIT       0xffffffff
> > +#define __io(a)              __typesafe_io((a) - DOVE_PCIE0_IO_BUS_BASE + \
> > +                                         DOVE_PCIE0_IO_VIRT_BASE)
> 
> I recommend against this use of __typesafe_io():
> 
> http://lists.arm.linux.org.uk/lurker/message/20090214.154245.6325bc9d.en.html
> 

On a related note, is there a particular reason why most of the
*_*_VIRT_BASE macros are just numbers instead of void __iomem
pointers?

My feeling is that we could save a lot of these typecasts and conversion
macros if the base addresses were already pointers in the right address
space.

I could do some cleanup and try to get the pointers right in the arm
architecture tree if you think that's a good idea.

	Arnd



More information about the linux-arm-kernel mailing list