diff -u ipw2200-0.18/ipw2200.c ipw2200-0.18-amd64/ipw2200.c --- ipw2200-0.18/ipw2200.c 2004-12-14 11:40:41.000000000 -0600 +++ ipw2200-0.18-amd64/ipw2200.c 2004-12-15 22:09:13.401939832 -0600 @@ -210,7 +210,7 @@ #define ipw_read16(ipw, ofs) __ipw_read16(__FILE__, __LINE__, ipw, ofs) #define _ipw_read32(ipw, ofs) readl((void*)(ipw)->hw_base + (ofs)) -static inline u32 __ipw_read32(char *f, u32 l, struct ipw_priv *ipw, u32 ofs) { +static u32 __ipw_read32(char *f, u32 l, struct ipw_priv *ipw, u32 ofs) { IPW_DEBUG_IO("%s %d: read_direct32(0x%08X)\n", f, l, (u32)(ofs)); return _ipw_read32(ipw, ofs); } @@ -1827,8 +1827,8 @@ cb->status = control ^src_address ^dest_address; /* Copy the Source and Destination addresses */ - cb->dest_addr = (void *)dest_address; - cb->source_addr = (void *)src_address; + cb->dest_addr = dest_address; + cb->source_addr = src_address; /* Copy the Control Word last */ cb->control = control; @@ -6817,6 +6817,15 @@ } pci_set_master(pdev); +#define PCI_DMA_32BIT 0x00000000ffffffffULL + err = pci_set_dma_mask(pdev, PCI_DMA_32BIT); + if (!err) { + pci_set_consistent_dma_mask(pdev, PCI_DMA_32BIT); + } else { + printk(KERN_WARNING DRV_NAME ": No suitable DMA available.\n"); + goto out_pci_disable_device; + } + pci_set_drvdata(pdev, priv); err = pci_request_regions(pdev, DRV_NAME); diff -u ipw2200-0.18/ipw2200.h ipw2200-0.18-amd64/ipw2200.h --- ipw2200-0.18/ipw2200.h 2004-12-14 11:40:41.000000000 -0600 +++ ipw2200-0.18-amd64/ipw2200.h 2004-12-15 22:06:17.442689704 -0600 @@ -661,8 +661,8 @@ struct command_block { unsigned int control; - void *source_addr; - void *dest_addr; + u32 source_addr; + u32 dest_addr; unsigned int status; } __attribute__ ((packed)); Common subdirectories: ipw2200-0.18/patches and ipw2200-0.18-amd64/patches