Commit bb327df8 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Martin K. Petersen

scsi: gdth: use generic DMA API

Switch from the legacy PCI DMA API to the generic DMA API.  Also switch
to dma_map_single from pci_map_page in one case where this makes the code
simpler.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent d8e1e6ad
...@@ -2077,9 +2077,9 @@ static int gdth_fill_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, ...@@ -2077,9 +2077,9 @@ static int gdth_fill_cache_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp,
if (scsi_bufflen(scp)) { if (scsi_bufflen(scp)) {
cmndinfo->dma_dir = (read_write == 1 ? cmndinfo->dma_dir = (read_write == 1 ?
PCI_DMA_TODEVICE : PCI_DMA_FROMDEVICE); DMA_TO_DEVICE : DMA_FROM_DEVICE);
sgcnt = pci_map_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp), sgcnt = dma_map_sg(&ha->pdev->dev, scsi_sglist(scp),
cmndinfo->dma_dir); scsi_sg_count(scp), cmndinfo->dma_dir);
if (mode64) { if (mode64) {
struct scatterlist *sl; struct scatterlist *sl;
...@@ -2153,8 +2153,6 @@ static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b) ...@@ -2153,8 +2153,6 @@ static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b)
dma_addr_t sense_paddr; dma_addr_t sense_paddr;
int cmd_index, sgcnt, mode64; int cmd_index, sgcnt, mode64;
u8 t,l; u8 t,l;
struct page *page;
unsigned long offset;
struct gdth_cmndinfo *cmndinfo; struct gdth_cmndinfo *cmndinfo;
t = scp->device->id; t = scp->device->id;
...@@ -2196,10 +2194,8 @@ static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b) ...@@ -2196,10 +2194,8 @@ static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b)
} }
} else { } else {
page = virt_to_page(scp->sense_buffer); sense_paddr = dma_map_single(&ha->pdev->dev, scp->sense_buffer, 16,
offset = (unsigned long)scp->sense_buffer & ~PAGE_MASK; DMA_FROM_DEVICE);
sense_paddr = pci_map_page(ha->pdev,page,offset,
16,PCI_DMA_FROMDEVICE);
cmndinfo->sense_paddr = sense_paddr; cmndinfo->sense_paddr = sense_paddr;
cmdp->OpCode = GDT_WRITE; /* always */ cmdp->OpCode = GDT_WRITE; /* always */
...@@ -2240,9 +2236,9 @@ static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b) ...@@ -2240,9 +2236,9 @@ static int gdth_fill_raw_cmd(gdth_ha_str *ha, struct scsi_cmnd *scp, u8 b)
} }
if (scsi_bufflen(scp)) { if (scsi_bufflen(scp)) {
cmndinfo->dma_dir = PCI_DMA_BIDIRECTIONAL; cmndinfo->dma_dir = DMA_BIDIRECTIONAL;
sgcnt = pci_map_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp), sgcnt = dma_map_sg(&ha->pdev->dev, scsi_sglist(scp),
cmndinfo->dma_dir); scsi_sg_count(scp), cmndinfo->dma_dir);
if (mode64) { if (mode64) {
struct scatterlist *sl; struct scatterlist *sl;
...@@ -2750,12 +2746,12 @@ static int gdth_sync_event(gdth_ha_str *ha, int service, u8 index, ...@@ -2750,12 +2746,12 @@ static int gdth_sync_event(gdth_ha_str *ha, int service, u8 index,
return 2; return 2;
} }
if (scsi_bufflen(scp)) if (scsi_bufflen(scp))
pci_unmap_sg(ha->pdev, scsi_sglist(scp), scsi_sg_count(scp), dma_unmap_sg(&ha->pdev->dev, scsi_sglist(scp), scsi_sg_count(scp),
cmndinfo->dma_dir); cmndinfo->dma_dir);
if (cmndinfo->sense_paddr) if (cmndinfo->sense_paddr)
pci_unmap_page(ha->pdev, cmndinfo->sense_paddr, 16, dma_unmap_page(&ha->pdev->dev, cmndinfo->sense_paddr, 16,
PCI_DMA_FROMDEVICE); DMA_FROM_DEVICE);
if (ha->status == S_OK) { if (ha->status == S_OK) {
cmndinfo->status = S_OK; cmndinfo->status = S_OK;
...@@ -3664,8 +3660,9 @@ static int ioc_general(void __user *arg, char *cmnd) ...@@ -3664,8 +3660,9 @@ static int ioc_general(void __user *arg, char *cmnd)
return -EINVAL; return -EINVAL;
if (gen.data_len + gen.sense_len > 0) { if (gen.data_len + gen.sense_len > 0) {
buf = pci_alloc_consistent(ha->pdev, buf = dma_alloc_coherent(&ha->pdev->dev,
gen.data_len + gen.sense_len, &paddr); gen.data_len + gen.sense_len, &paddr,
GFP_KERNEL);
if (!buf) if (!buf)
return -EFAULT; return -EFAULT;
...@@ -3700,7 +3697,8 @@ static int ioc_general(void __user *arg, char *cmnd) ...@@ -3700,7 +3697,8 @@ static int ioc_general(void __user *arg, char *cmnd)
rval = 0; rval = 0;
out_free_buf: out_free_buf:
pci_free_consistent(ha->pdev, gen.data_len + gen.sense_len, buf, paddr); dma_free_coherent(&ha->pdev->dev, gen.data_len + gen.sense_len, buf,
paddr);
return rval; return rval;
} }
...@@ -4144,14 +4142,14 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out) ...@@ -4144,14 +4142,14 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out)
error = -ENOMEM; error = -ENOMEM;
ha->pscratch = pci_alloc_consistent(ha->pdev, GDTH_SCRATCH, ha->pscratch = dma_alloc_coherent(&ha->pdev->dev, GDTH_SCRATCH,
&scratch_dma_handle); &scratch_dma_handle, GFP_KERNEL);
if (!ha->pscratch) if (!ha->pscratch)
goto out_free_irq; goto out_free_irq;
ha->scratch_phys = scratch_dma_handle; ha->scratch_phys = scratch_dma_handle;
ha->pmsg = pci_alloc_consistent(ha->pdev, sizeof(gdth_msg_str), ha->pmsg = dma_alloc_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
&scratch_dma_handle); &scratch_dma_handle, GFP_KERNEL);
if (!ha->pmsg) if (!ha->pmsg)
goto out_free_pscratch; goto out_free_pscratch;
ha->msg_phys = scratch_dma_handle; ha->msg_phys = scratch_dma_handle;
...@@ -4178,16 +4176,16 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out) ...@@ -4178,16 +4176,16 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out)
/* 64-bit DMA only supported from FW >= x.43 */ /* 64-bit DMA only supported from FW >= x.43 */
if (!(ha->cache_feat & ha->raw_feat & ha->screen_feat & GDT_64BIT) || if (!(ha->cache_feat & ha->raw_feat & ha->screen_feat & GDT_64BIT) ||
!ha->dma64_support) { !ha->dma64_support) {
if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) {
printk(KERN_WARNING "GDT-PCI %d: " printk(KERN_WARNING "GDT-PCI %d: "
"Unable to set 32-bit DMA\n", ha->hanum); "Unable to set 32-bit DMA\n", ha->hanum);
goto out_free_pmsg; goto out_free_pmsg;
} }
} else { } else {
shp->max_cmd_len = 16; shp->max_cmd_len = 16;
if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) {
printk("GDT-PCI %d: 64-bit DMA enabled\n", ha->hanum); printk("GDT-PCI %d: 64-bit DMA enabled\n", ha->hanum);
} else if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { } else if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) {
printk(KERN_WARNING "GDT-PCI %d: " printk(KERN_WARNING "GDT-PCI %d: "
"Unable to set 64/32-bit DMA\n", ha->hanum); "Unable to set 64/32-bit DMA\n", ha->hanum);
goto out_free_pmsg; goto out_free_pmsg;
...@@ -4216,10 +4214,10 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out) ...@@ -4216,10 +4214,10 @@ static int gdth_pci_probe_one(gdth_pci_str *pcistr, gdth_ha_str **ha_out)
return 0; return 0;
out_free_pmsg: out_free_pmsg:
pci_free_consistent(ha->pdev, sizeof(gdth_msg_str), dma_free_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
ha->pmsg, ha->msg_phys); ha->pmsg, ha->msg_phys);
out_free_pscratch: out_free_pscratch:
pci_free_consistent(ha->pdev, GDTH_SCRATCH, dma_free_coherent(&ha->pdev->dev, GDTH_SCRATCH,
ha->pscratch, ha->scratch_phys); ha->pscratch, ha->scratch_phys);
out_free_irq: out_free_irq:
free_irq(ha->irq, ha); free_irq(ha->irq, ha);
...@@ -4248,14 +4246,14 @@ static void gdth_remove_one(gdth_ha_str *ha) ...@@ -4248,14 +4246,14 @@ static void gdth_remove_one(gdth_ha_str *ha)
free_irq(shp->irq,ha); free_irq(shp->irq,ha);
if (ha->pscratch) if (ha->pscratch)
pci_free_consistent(ha->pdev, GDTH_SCRATCH, dma_free_coherent(&ha->pdev->dev, GDTH_SCRATCH,
ha->pscratch, ha->scratch_phys); ha->pscratch, ha->scratch_phys);
if (ha->pmsg) if (ha->pmsg)
pci_free_consistent(ha->pdev, sizeof(gdth_msg_str), dma_free_coherent(&ha->pdev->dev, sizeof(gdth_msg_str),
ha->pmsg, ha->msg_phys); ha->pmsg, ha->msg_phys);
if (ha->ccb_phys) if (ha->ccb_phys)
pci_unmap_single(ha->pdev,ha->ccb_phys, dma_unmap_single(&ha->pdev->dev, ha->ccb_phys,
sizeof(gdth_cmd_str),PCI_DMA_BIDIRECTIONAL); sizeof(gdth_cmd_str), DMA_BIDIRECTIONAL);
scsi_host_put(shp); scsi_host_put(shp);
} }
......
...@@ -236,7 +236,7 @@ int gdth_show_info(struct seq_file *m, struct Scsi_Host *host) ...@@ -236,7 +236,7 @@ int gdth_show_info(struct seq_file *m, struct Scsi_Host *host)
seq_puts(m, "\nPhysical Devices:"); seq_puts(m, "\nPhysical Devices:");
flag = FALSE; flag = FALSE;
buf = pci_alloc_consistent(ha->pdev, size, &paddr); buf = dma_alloc_coherent(&ha->pdev->dev, size, &paddr, GFP_KERNEL);
if (!buf) if (!buf)
goto stop_output; goto stop_output;
for (i = 0; i < ha->bus_cnt; ++i) { for (i = 0; i < ha->bus_cnt; ++i) {
...@@ -504,7 +504,7 @@ int gdth_show_info(struct seq_file *m, struct Scsi_Host *host) ...@@ -504,7 +504,7 @@ int gdth_show_info(struct seq_file *m, struct Scsi_Host *host)
} }
} }
} }
pci_free_consistent(ha->pdev, size, buf, paddr); dma_free_coherent(&ha->pdev->dev, size, buf, paddr);
for (i = 0; i < MAX_HDRIVES; ++i) { for (i = 0; i < MAX_HDRIVES; ++i) {
if (!(ha->hdr[i].present)) if (!(ha->hdr[i].present))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment