[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 ahc_dmamem_alloc(struct ahc_softc *ahc, bus_dma_tag_t dmat, void** vaddr, 950 int flags, bus_dmamap_t *mapp) 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 *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 - } 979 if (*vaddr == NULL) 980 - return (ENOMEM); 981 - *mapp = map; 982 - return(0); 983 } 984 985 void ··· 961 void* vaddr, bus_dmamap_t map) 962 { 963 pci_free_consistent(ahc->dev_softc, dmat->maxsize, 964 - vaddr, map->bus_addr); 965 } 966 967 int ··· 975 */ 976 bus_dma_segment_t stack_sg; 977 978 - stack_sg.ds_addr = map->bus_addr; 979 stack_sg.ds_len = dmat->maxsize; 980 cb(cb_arg, &stack_sg, /*nseg*/1, /*error*/0); 981 return (0); ··· 984 void 985 ahc_dmamap_destroy(struct ahc_softc *ahc, bus_dma_tag_t dmat, bus_dmamap_t map) 986 { 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 } 994 995 int ··· 1350 TAILQ_INIT(&ahc->platform_data->completeq); 1351 TAILQ_INIT(&ahc->platform_data->device_runq); 1352 ahc->platform_data->irq = AHC_LINUX_NOIRQ; 1353 - ahc->platform_data->hw_dma_mask = 0xFFFFFFFF; 1354 ahc_lockinit(ahc); 1355 init_timer(&ahc->platform_data->completeq_timer); 1356 ahc->platform_data->completeq_timer.data = (u_long)ahc;
··· 949 ahc_dmamem_alloc(struct ahc_softc *ahc, bus_dma_tag_t dmat, void** vaddr, 950 int flags, bus_dmamap_t *mapp) 951 { 952 *vaddr = pci_alloc_consistent(ahc->dev_softc, 953 + dmat->maxsize, mapp); 954 if (*vaddr == NULL) 955 + return ENOMEM; 956 + return 0; 957 } 958 959 void ··· 987 void* vaddr, bus_dmamap_t map) 988 { 989 pci_free_consistent(ahc->dev_softc, dmat->maxsize, 990 + vaddr, map); 991 } 992 993 int ··· 1001 */ 1002 bus_dma_segment_t stack_sg; 1003 1004 + stack_sg.ds_addr = map; 1005 stack_sg.ds_len = dmat->maxsize; 1006 cb(cb_arg, &stack_sg, /*nseg*/1, /*error*/0); 1007 return (0); ··· 1010 void 1011 ahc_dmamap_destroy(struct ahc_softc *ahc, bus_dma_tag_t dmat, bus_dmamap_t map) 1012 { 1013 } 1014 1015 int ··· 1382 TAILQ_INIT(&ahc->platform_data->completeq); 1383 TAILQ_INIT(&ahc->platform_data->device_runq); 1384 ahc->platform_data->irq = AHC_LINUX_NOIRQ; 1385 ahc_lockinit(ahc); 1386 init_timer(&ahc->platform_data->completeq_timer); 1387 ahc->platform_data->completeq_timer.data = (u_long)ahc;
+1 -6
drivers/scsi/aic7xxx/aic7xxx_osm.h
··· 174 }; 175 typedef struct ahc_linux_dma_tag* bus_dma_tag_t; 176 177 - struct ahc_linux_dmamap 178 - { 179 - dma_addr_t bus_addr; 180 - }; 181 - typedef struct ahc_linux_dmamap* bus_dmamap_t; 182 183 typedef int bus_dma_filter_t(void*, dma_addr_t); 184 typedef void bus_dmamap_callback_t(void *, bus_dma_segment_t *, int, int); ··· 475 uint32_t irq; /* IRQ for this adapter */ 476 uint32_t bios_address; 477 uint32_t mem_busaddr; /* Mem Base Addr */ 478 - uint64_t hw_dma_mask; 479 ahc_linux_softc_flags flags; 480 }; 481
··· 174 }; 175 typedef struct ahc_linux_dma_tag* bus_dma_tag_t; 176 177 + typedef dma_addr_t bus_dmamap_t; 178 179 typedef int bus_dma_filter_t(void*, dma_addr_t); 180 typedef void bus_dmamap_callback_t(void *, bus_dma_segment_t *, int, int); ··· 479 uint32_t irq; /* IRQ for this adapter */ 480 uint32_t bios_address; 481 uint32_t mem_busaddr; /* Mem Base Addr */ 482 ahc_linux_softc_flags flags; 483 }; 484
-2
drivers/scsi/aic7xxx/aic7xxx_osm_pci.c
··· 221 && ahc_linux_get_memsize() > 0x80000000 222 && pci_set_dma_mask(pdev, mask_39bit) == 0) { 223 ahc->flags |= AHC_39BIT_ADDRESSING; 224 - ahc->platform_data->hw_dma_mask = mask_39bit; 225 } else { 226 if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { 227 printk(KERN_WARNING "aic7xxx: No suitable DMA available.\n"); 228 return (-ENODEV); 229 } 230 - ahc->platform_data->hw_dma_mask = DMA_32BIT_MASK; 231 } 232 ahc->dev_softc = pci; 233 error = ahc_pci_config(ahc, entry);
··· 221 && ahc_linux_get_memsize() > 0x80000000 222 && pci_set_dma_mask(pdev, mask_39bit) == 0) { 223 ahc->flags |= AHC_39BIT_ADDRESSING; 224 } else { 225 if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { 226 printk(KERN_WARNING "aic7xxx: No suitable DMA available.\n"); 227 return (-ENODEV); 228 } 229 } 230 ahc->dev_softc = pci; 231 error = ahc_pci_config(ahc, entry);