aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aic7xxx/aic7xxx_osm.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2005-05-16 12:54:12 -0400
committerJames Bottomley <jejb@mulgrave.(none)>2005-05-20 16:54:37 -0400
commit7dfa0f2673c17334c5de75a449f7bc161c9bd2c0 (patch)
tree0cb95e4fdef14b0a4decc2ebed5a2abee057db6f /drivers/scsi/aic7xxx/aic7xxx_osm.c
parentdedd831081052028f35aaf924ea3d6c55109074f (diff)
[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>
Diffstat (limited to 'drivers/scsi/aic7xxx/aic7xxx_osm.c')
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_osm.c43
1 files changed, 5 insertions, 38 deletions
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
index 37fda70b5435..717401b26b6f 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
@@ -949,37 +949,11 @@ int
949ahc_dmamem_alloc(struct ahc_softc *ahc, bus_dma_tag_t dmat, void** vaddr, 949ahc_dmamem_alloc(struct ahc_softc *ahc, bus_dma_tag_t dmat, void** vaddr,
950 int flags, bus_dmamap_t *mapp) 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 *vaddr = pci_alloc_consistent(ahc->dev_softc, 952 *vaddr = pci_alloc_consistent(ahc->dev_softc,
971 dmat->maxsize, &map->bus_addr); 953 dmat->maxsize, mapp);
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) 954 if (*vaddr == NULL)
980 return (ENOMEM); 955 return ENOMEM;
981 *mapp = map; 956 return 0;
982 return(0);
983} 957}
984 958
985void 959void
@@ -987,7 +961,7 @@ ahc_dmamem_free(struct ahc_softc *ahc, bus_dma_tag_t dmat,
987 void* vaddr, bus_dmamap_t map) 961 void* vaddr, bus_dmamap_t map)
988{ 962{
989 pci_free_consistent(ahc->dev_softc, dmat->maxsize, 963 pci_free_consistent(ahc->dev_softc, dmat->maxsize,
990 vaddr, map->bus_addr); 964 vaddr, map);
991} 965}
992 966
993int 967int
@@ -1001,7 +975,7 @@ ahc_dmamap_load(struct ahc_softc *ahc, bus_dma_tag_t dmat, bus_dmamap_t map,
1001 */ 975 */
1002 bus_dma_segment_t stack_sg; 976 bus_dma_segment_t stack_sg;
1003 977
1004 stack_sg.ds_addr = map->bus_addr; 978 stack_sg.ds_addr = map;
1005 stack_sg.ds_len = dmat->maxsize; 979 stack_sg.ds_len = dmat->maxsize;
1006 cb(cb_arg, &stack_sg, /*nseg*/1, /*error*/0); 980 cb(cb_arg, &stack_sg, /*nseg*/1, /*error*/0);
1007 return (0); 981 return (0);
@@ -1010,12 +984,6 @@ ahc_dmamap_load(struct ahc_softc *ahc, bus_dma_tag_t dmat, bus_dmamap_t map,
1010void 984void
1011ahc_dmamap_destroy(struct ahc_softc *ahc, bus_dma_tag_t dmat, bus_dmamap_t map) 985ahc_dmamap_destroy(struct ahc_softc *ahc, bus_dma_tag_t dmat, bus_dmamap_t map)
1012{ 986{
1013 /*
1014 * The map may is NULL in our < 2.3.X implementation.
1015 * Now it's 2.6.5, but just in case...
1016 */
1017 BUG_ON(map == NULL);
1018 free(map, M_DEVBUF);
1019} 987}
1020 988
1021int 989int
@@ -1382,7 +1350,6 @@ ahc_platform_alloc(struct ahc_softc *ahc, void *platform_arg)
1382 TAILQ_INIT(&ahc->platform_data->completeq); 1350 TAILQ_INIT(&ahc->platform_data->completeq);
1383 TAILQ_INIT(&ahc->platform_data->device_runq); 1351 TAILQ_INIT(&ahc->platform_data->device_runq);
1384 ahc->platform_data->irq = AHC_LINUX_NOIRQ; 1352 ahc->platform_data->irq = AHC_LINUX_NOIRQ;
1385 ahc->platform_data->hw_dma_mask = 0xFFFFFFFF;
1386 ahc_lockinit(ahc); 1353 ahc_lockinit(ahc);
1387 init_timer(&ahc->platform_data->completeq_timer); 1354 init_timer(&ahc->platform_data->completeq_timer);
1388 ahc->platform_data->completeq_timer.data = (u_long)ahc; 1355 ahc->platform_data->completeq_timer.data = (u_long)ahc;