[SCSI] remove dma_mask hacks

pci_alloc_consistent is under 4G by default. Also simplify the
definition of bus_dmamap_t.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>

authored by Christoph Hellwig and committed by James Bottomley 7dfa0f26 dedd8310

+6 -46
+5 -38
drivers/scsi/aic7xxx/aic7xxx_osm.c
··· 949 949 ahc_dmamem_alloc(struct ahc_softc *ahc, bus_dma_tag_t dmat, void** vaddr, 950 950 int flags, bus_dmamap_t *mapp) 951 951 { 952 - bus_dmamap_t map; 953 - 954 - map = malloc(sizeof(*map), M_DEVBUF, M_NOWAIT); 955 - if (map == NULL) 956 - return (ENOMEM); 957 - /* 958 - * Although we can dma data above 4GB, our 959 - * "consistent" memory is below 4GB for 960 - * space efficiency reasons (only need a 4byte 961 - * address). For this reason, we have to reset 962 - * our dma mask when doing allocations. 963 - */ 964 - if (ahc->dev_softc != NULL) 965 - if (pci_set_dma_mask(ahc->dev_softc, 0xFFFFFFFF)) { 966 - printk(KERN_WARNING "aic7xxx: No suitable DMA available.\n"); 967 - kfree(map); 968 - return (ENODEV); 969 - } 970 952 *vaddr = pci_alloc_consistent(ahc->dev_softc, 971 - dmat->maxsize, &map->bus_addr); 972 - if (ahc->dev_softc != NULL) 973 - if (pci_set_dma_mask(ahc->dev_softc, 974 - ahc->platform_data->hw_dma_mask)) { 975 - printk(KERN_WARNING "aic7xxx: No suitable DMA available.\n"); 976 - kfree(map); 977 - return (ENODEV); 978 - } 953 + dmat->maxsize, mapp); 979 954 if (*vaddr == NULL) 980 - return (ENOMEM); 981 - *mapp = map; 982 - return(0); 955 + return ENOMEM; 956 + return 0; 983 957 } 984 958 985 959 void ··· 961 987 void* vaddr, bus_dmamap_t map) 962 988 { 963 989 pci_free_consistent(ahc->dev_softc, dmat->maxsize, 964 - vaddr, map->bus_addr); 990 + vaddr, map); 965 991 } 966 992 967 993 int ··· 975 1001 */ 976 1002 bus_dma_segment_t stack_sg; 977 1003 978 - stack_sg.ds_addr = map->bus_addr; 1004 + stack_sg.ds_addr = map; 979 1005 stack_sg.ds_len = dmat->maxsize; 980 1006 cb(cb_arg, &stack_sg, /*nseg*/1, /*error*/0); 981 1007 return (0); ··· 984 1010 void 985 1011 ahc_dmamap_destroy(struct ahc_softc *ahc, bus_dma_tag_t dmat, bus_dmamap_t map) 986 1012 { 987 - /* 988 - * The map may is NULL in our < 2.3.X implementation. 989 - * Now it's 2.6.5, but just in case... 990 - */ 991 - BUG_ON(map == NULL); 992 - free(map, M_DEVBUF); 993 1013 } 994 1014 995 1015 int ··· 1350 1382 TAILQ_INIT(&ahc->platform_data->completeq); 1351 1383 TAILQ_INIT(&ahc->platform_data->device_runq); 1352 1384 ahc->platform_data->irq = AHC_LINUX_NOIRQ; 1353 - ahc->platform_data->hw_dma_mask = 0xFFFFFFFF; 1354 1385 ahc_lockinit(ahc); 1355 1386 init_timer(&ahc->platform_data->completeq_timer); 1356 1387 ahc->platform_data->completeq_timer.data = (u_long)ahc;
+1 -6
drivers/scsi/aic7xxx/aic7xxx_osm.h
··· 174 174 }; 175 175 typedef struct ahc_linux_dma_tag* bus_dma_tag_t; 176 176 177 - struct ahc_linux_dmamap 178 - { 179 - dma_addr_t bus_addr; 180 - }; 181 - typedef struct ahc_linux_dmamap* bus_dmamap_t; 177 + typedef dma_addr_t bus_dmamap_t; 182 178 183 179 typedef int bus_dma_filter_t(void*, dma_addr_t); 184 180 typedef void bus_dmamap_callback_t(void *, bus_dma_segment_t *, int, int); ··· 475 479 uint32_t irq; /* IRQ for this adapter */ 476 480 uint32_t bios_address; 477 481 uint32_t mem_busaddr; /* Mem Base Addr */ 478 - uint64_t hw_dma_mask; 479 482 ahc_linux_softc_flags flags; 480 483 }; 481 484
-2
drivers/scsi/aic7xxx/aic7xxx_osm_pci.c
··· 221 221 && ahc_linux_get_memsize() > 0x80000000 222 222 && pci_set_dma_mask(pdev, mask_39bit) == 0) { 223 223 ahc->flags |= AHC_39BIT_ADDRESSING; 224 - ahc->platform_data->hw_dma_mask = mask_39bit; 225 224 } else { 226 225 if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { 227 226 printk(KERN_WARNING "aic7xxx: No suitable DMA available.\n"); 228 227 return (-ENODEV); 229 228 } 230 - ahc->platform_data->hw_dma_mask = DMA_32BIT_MASK; 231 229 } 232 230 ahc->dev_softc = pci; 233 231 error = ahc_pci_config(ahc, entry);