Re: [PATCH] Fix readw/writew warnings in drivers/net/wireless/hermes.h

From: Borislav Petkov
Date: Mon Oct 11 2004 - 08:23:50 EST


On Monday 11 October 2004 14:31, David Gibson wrote:
Hi all,
I'm having the same pointer casting warnings with my ymfpci soundchip...
> On Mon, Oct 11, 2004 at 05:34:20PM +0530, Ricky lloyd wrote:
> > > Isn't the correct fix to declare iobase as (void __iomem *) ?
> >
> > Earlier today i had posted a patch which mainly fixes this same
> > problem with lotsa scsi
> > drivers and tulip drivers. I wondered the same "shouldnt all the addrs
> > be declared as
> > void __iomem* ??".
>
> The trouble with that is that for some versions of the orinoco card,
> the iobase refers to a legacy ISA IO address, not a memory-mapped IO
> address (that's the inw()/outw() path in the macro). That needs an
> integer, rather than a pointer.
however,
I don't think there should be any casting of IO addresses for the simple reason that the void __iomem *
is a part of an interface which does the right thing in both MMIO/PIO cases. The lkml
thread "Being more anal about iospace accesses.." contains the answer to
that in a great detail. As a result, the right thing to do here is, I think, to declare all addrs void __iomem*.
Which leaves a question: while compiling the following code fragment:

<sound/pci/ymfpci/ymfpci_main.c>
static inline u8 snd_ymfpci_readb(ymfpci_t *chip, u32 offset)
{
return readb(chip->reg_area_virt + offset);
}

gcc complains as so:

sound/pci/ymfpci/ymfpci_main.c: In function `snd_ymfpci_readb':
sound/pci/ymfpci/ymfpci_main.c:57: warning: passing arg 1 of `readb' makes pointer from integer without a cast

Do we have to cast here or use the new interface?

>
> It's not clear to me which way around the cast is less ugly.


Boris.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/