From: Jean T. <jt...@bo...> - 2004-03-18 00:28:16
|
Andi Kleen wrote : > > Fix a few 64bit warnings in the Donauboe driver. Untested. Hum... I'll forward to the driver maintainers. > -Andi > > diff -u linux/drivers/net/irda/donauboe.c-o linux/drivers/net/irda/donauboe.c > --- linux/drivers/net/irda/donauboe.c-o 1970-01-01 01:12:51.000000000 +0100 > +++ linux/drivers/net/irda/donauboe.c 2004-03-17 11:56:57.000000000 +0100 > @@ -1669,16 +1669,15 @@ > > /*We need to align the taskfile on a taskfile size boundary */ > { > - __u32 addr; > + unsigned long addr; > > - addr = (__u32) self->ringbuf; > - addr &= ~(OBOE_RING_LEN - 1); > + addr = (unsigned long) self->ringbuf; > + addr &= ~((unsigned long)OBOE_RING_LEN - 1); > addr += OBOE_RING_LEN; > self->ring = (struct OboeRing *) addr; > } This code doesn't look right. I believe that the ring buffer is mapped through the PCI bus, and the device may have restrictions on how it is mapped. If it is the case, the proper fix is to use pci_alloc_consistent() and friends. Your patch seems Ok, though... > memset (self->ring, 0, OBOE_RING_LEN); > - self->io.mem_base = (__u32) self->ring; > > ok = 1; > for (i = 0; i < TX_SLOTS; ++i) This doesn't look right. Much better to fix struct chipio_t to accept a long. Thanks... Jean |