Re: [PATCH] 2.6.9-rc3 fix warnings in sound/drivers/opl3/opl3_lib.c

From: viro
Date: Thu Sep 30 2004 - 10:56:59 EST


On Thu, Sep 30, 2004 at 04:25:44PM +0100, viro@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx wrote:
> On Thu, Sep 30, 2004 at 02:28:53PM +0200, Borislav Petkov wrote:
> > Hi there,
> > I get these warnings while compiling 2.6.9-rc3:
> > sound/drivers/opl3/opl3_lib.c: In function `snd_opl3_cs4281_command':
> > sound/drivers/opl3/opl3_lib.c:101: warning: passing arg 2 of `writel' makes pointer from integer without a cast
> > sound/drivers/opl3/opl3_lib.c:104: warning: passing arg 2 of `writel' makes pointer from integer without a cast
> >
> > Hope this fix is correct.
>
> It looks very odd. At the very least we don't want to overload the
> fields in question (->r_port and ->l_port) that way.

*Yuck*

ALSA code, as pretty as ever. No, that's not a fix; it's only shutting the
rightfully complaining compiler up.

What happens there is a dirty kludge created for the benefit of a single
driver (sound/pci/cs4281.c). Said driver has a bunch of registers
memory-mapped, while its relatives use port IO instead. Driver does
(correctly) ioremap(); then it overloads the arguments of snd_opl3_create()
normally used for port numbers and shoves *address obtained from ioremap
and divided by 4* in them.

Sigh... At the very least that kind of abuse should stop. FWIW, I would
suggest having cs4281.c set the ->command() directly and killing that crap
with ->l_port/->r_port overloading.
-
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/