diff options
| author | James Bottomley <jejb@raven.il.steeleye.com> | 2003-01-04 02:04:26 -0600 |
|---|---|---|
| committer | James Bottomley <jejb@raven.il.steeleye.com> | 2003-01-04 02:04:26 -0600 |
| commit | a6257edd39f41dcc9e5f9c96db6a2affbdaecfa3 (patch) | |
| tree | a2e31cb6c622f50fb2f27a1f833c90670923a70c | |
| parent | 29384203c9aaab74cc841c479fbede6e6b88b9d1 (diff) | |
update ncr53c8xx to new dma_ API (needed to incorporate zalon)
Also update zalon to C99 initialisers
| -rw-r--r-- | drivers/scsi/ncr53c8xx.c | 30 | ||||
| -rw-r--r-- | drivers/scsi/sym53c8xx_comm.h | 71 | ||||
| -rw-r--r-- | drivers/scsi/zalon.c | 6 | ||||
| -rw-r--r-- | drivers/scsi/zalon.h | 13 |
4 files changed, 64 insertions, 56 deletions
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c index d7d25d8d520c..9218621843b8 100644 --- a/drivers/scsi/ncr53c8xx.c +++ b/drivers/scsi/ncr53c8xx.c @@ -131,6 +131,8 @@ #include <linux/sched.h> #include <linux/errno.h> #include <linux/pci.h> +#include <linux/dma-mapping.h> +#include <linux/interrupt.h> #include <linux/string.h> #include <linux/mm.h> #include <linux/ioport.h> @@ -193,6 +195,7 @@ typedef u_long vm_offset_t; #if defined(CONFIG_SCSI_ZALON) || defined(CONFIG_SCSI_ZALON_MODULE) #define ENABLE_SCSI_ZALON +#include <asm/parisc-device.h> #include "zalon.h" #endif @@ -1116,7 +1119,7 @@ struct ncb { ** General controller parameters and configuration. **---------------------------------------------------------------- */ - pcidev_t pdev; + device_t dev; u_short device_id; /* PCI device id */ u_char revision_id; /* PCI device revision id */ u_char bus; /* PCI BUS number */ @@ -3681,11 +3684,11 @@ ncr_attach (Scsi_Host_Template *tpnt, int unit, ncr_device *device) /* ** Allocate the host control block. */ - np = __m_calloc_dma(device->pdev, sizeof(struct ncb), "NCB"); + np = __m_calloc_dma(device->dev, sizeof(struct ncb), "NCB"); if (!np) goto attach_error; NCR_INIT_LOCK_NCB(np); - np->pdev = device->pdev; + np->dev = device->dev; np->p_ncb = vtobus(np); host_data->ncb = np; @@ -3826,9 +3829,7 @@ ncr_attach (Scsi_Host_Template *tpnt, int unit, ncr_device *device) instance->dma_channel = 0; instance->cmd_per_lun = MAX_TAGS; instance->can_queue = (MAX_START-4); -#ifndef ENABLE_SCSI_ZALON - scsi_set_pci_device(instance, device->pdev); -#endif + scsi_set_device(instance, device->dev); #ifdef SCSI_NCR_INTEGRITY_CHECKING np->check_integrity = 0; @@ -9443,7 +9444,7 @@ int zalon_attach(Scsi_Host_Template *tpnt, unsigned long io_port, /* Initialise ncr_device structure with items required by ncr_attach. */ device.host_id = driver_setup.host_id; - device.pdev = ccio_get_fake(dev); + device.dev = &dev->dev; device.slot.bus = 0; device.slot.device_fn = 0; device.slot.base = (u_long)io_port; @@ -9510,7 +9511,20 @@ static #endif #if LINUX_VERSION_CODE >= LinuxVersionCode(2,4,0) || defined(MODULE) #ifdef ENABLE_SCSI_ZALON -Scsi_Host_Template driver_template = SCSI_ZALON; +Scsi_Host_Template driver_template = { + .proc_name = "zalon720", + .detect = zalon7xx_detect, + .release = zalon7xx_release, + .info = ncr53c8xx_info, + .queuecommand = ncr53c8xx_queue_command, + .can_queue = SCSI_NCR_CAN_QUEUE, + .this_id = 7, + .sg_tablesize = SCSI_NCR_SG_TABLESIZE, + .cmd_per_lun = SCSI_NCR_CMD_PER_LUN, + .use_clustering = DISABLE_CLUSTERING, +}; + + #else Scsi_Host_Template driver_template = NCR53C8XX; #endif diff --git a/drivers/scsi/sym53c8xx_comm.h b/drivers/scsi/sym53c8xx_comm.h index 76878d180472..e0a86d99a502 100644 --- a/drivers/scsi/sym53c8xx_comm.h +++ b/drivers/scsi/sym53c8xx_comm.h @@ -265,6 +265,7 @@ static inline struct xpt_quehead *xpt_remque_tail(struct xpt_quehead *head) #if LINUX_VERSION_CODE >= LinuxVersionCode(2,2,0) typedef struct pci_dev *pcidev_t; +typedef struct device *device_t; #define PCIDEV_NULL (0) #define PciBusNumber(d) (d)->bus->number #define PciDeviceFn(d) (d)->devfn @@ -312,6 +313,7 @@ pci_get_base_address(struct pci_dev *pdev, int index, u_long *base) #else /* Incomplete emulation of current PCI code for pre-2.2 kernels */ typedef unsigned int pcidev_t; +typedef unsinged int device_t; #define PCIDEV_NULL (~0u) #define PciBusNumber(d) ((d)>>8) #define PciDeviceFn(d) ((d)&0xff) @@ -564,7 +566,7 @@ static void MDELAY(long ms) { while (ms--) UDELAY(1000); } #define MEMO_CLUSTER_MASK (MEMO_CLUSTER_SIZE-1) typedef u_long m_addr_t; /* Enough bits to bit-hack addresses */ -typedef pcidev_t m_bush_t; /* Something that addresses DMAable */ +typedef struct device *m_bush_t; /* Something that addresses DMAable */ typedef struct m_link { /* Link between free memory chunks */ struct m_link *next; @@ -793,7 +795,7 @@ static m_addr_t ___dma_getp(m_pool_s *mp) vbp = __m_calloc(&mp0, sizeof(*vbp), "VTOB"); if (vbp) { dma_addr_t daddr; - vp = (m_addr_t) pci_alloc_consistent(mp->bush, + vp = (m_addr_t) dma_alloc_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER, &daddr); if (vp) { @@ -822,8 +824,8 @@ static void ___dma_freep(m_pool_s *mp, m_addr_t m) if (*vbpp) { vbp = *vbpp; *vbpp = (*vbpp)->next; - pci_free_consistent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER, - (void *)vbp->vaddr, (dma_addr_t)vbp->baddr); + dma_free_coherent(mp->bush, PAGE_SIZE<<MEMO_PAGE_ORDER, + (void *)vbp->vaddr, (dma_addr_t)vbp->baddr); __m_free(&mp0, vbp, sizeof(*vbp), "VTOB"); --mp->nump; } @@ -917,11 +919,11 @@ static m_addr_t __vtobus(m_bush_t bush, void *m) #endif /* SCSI_NCR_DYNAMIC_DMA_MAPPING */ -#define _m_calloc_dma(np, s, n) __m_calloc_dma(np->pdev, s, n) -#define _m_free_dma(np, p, s, n) __m_free_dma(np->pdev, p, s, n) +#define _m_calloc_dma(np, s, n) __m_calloc_dma(np->dev, s, n) +#define _m_free_dma(np, p, s, n) __m_free_dma(np->dev, p, s, n) #define m_calloc_dma(s, n) _m_calloc_dma(np, s, n) #define m_free_dma(p, s, n) _m_free_dma(np, p, s, n) -#define _vtobus(np, p) __vtobus(np->pdev, p) +#define _vtobus(np, p) __vtobus(np->dev, p) #define vtobus(p) _vtobus(np, p) /* @@ -932,10 +934,10 @@ static m_addr_t __vtobus(m_bush_t bush, void *m) /* Linux versions prior to pci bus iommu kernel interface */ -#define __unmap_scsi_data(pdev, cmd) do {; } while (0) -#define __map_scsi_single_data(pdev, cmd) (__vtobus(pdev,(cmd)->request_buffer)) -#define __map_scsi_sg_data(pdev, cmd) ((cmd)->use_sg) -#define __sync_scsi_data(pdev, cmd) do {; } while (0) +#define __unmap_scsi_data(dev, cmd) do {; } while (0) +#define __map_scsi_single_data(dev, cmd) (__vtobus(dev,(cmd)->request_buffer)) +#define __map_scsi_sg_data(dev, cmd) ((cmd)->use_sg) +#define __sync_scsi_data(dev, cmd) do {; } while (0) #define scsi_sg_dma_address(sc) vtobus((sc)->address) #define scsi_sg_dma_len(sc) ((sc)->length) @@ -948,31 +950,34 @@ static m_addr_t __vtobus(m_bush_t bush, void *m) #define __data_mapped SCp.phase #define __data_mapping SCp.have_data_in -static void __unmap_scsi_data(pcidev_t pdev, Scsi_Cmnd *cmd) +static void __unmap_scsi_data(device_t dev, Scsi_Cmnd *cmd) { - int dma_dir = scsi_to_pci_dma_dir(cmd->sc_data_direction); + enum dma_data_direction dma_dir = + (enum dma_data_direction)scsi_to_pci_dma_dir(cmd->sc_data_direction); switch(cmd->__data_mapped) { case 2: - pci_unmap_sg(pdev, cmd->buffer, cmd->use_sg, dma_dir); + dma_unmap_sg(dev, cmd->buffer, cmd->use_sg, dma_dir); break; case 1: - pci_unmap_single(pdev, cmd->__data_mapping, + dma_unmap_single(dev, cmd->__data_mapping, cmd->request_bufflen, dma_dir); break; } cmd->__data_mapped = 0; } -static u_long __map_scsi_single_data(pcidev_t pdev, Scsi_Cmnd *cmd) +static u_long __map_scsi_single_data(device_t dev, Scsi_Cmnd *cmd) { dma_addr_t mapping; - int dma_dir = scsi_to_pci_dma_dir(cmd->sc_data_direction); + enum dma_data_direction dma_dir = + (enum dma_data_direction)scsi_to_pci_dma_dir(cmd->sc_data_direction); + if (cmd->request_bufflen == 0) return 0; - mapping = pci_map_single(pdev, cmd->request_buffer, + mapping = dma_map_single(dev, cmd->request_buffer, cmd->request_bufflen, dma_dir); cmd->__data_mapped = 1; cmd->__data_mapping = mapping; @@ -980,32 +985,34 @@ static u_long __map_scsi_single_data(pcidev_t pdev, Scsi_Cmnd *cmd) return mapping; } -static int __map_scsi_sg_data(pcidev_t pdev, Scsi_Cmnd *cmd) +static int __map_scsi_sg_data(device_t dev, Scsi_Cmnd *cmd) { int use_sg; - int dma_dir = scsi_to_pci_dma_dir(cmd->sc_data_direction); + enum dma_data_direction dma_dir = + (enum dma_data_direction)scsi_to_pci_dma_dir(cmd->sc_data_direction); if (cmd->use_sg == 0) return 0; - use_sg = pci_map_sg(pdev, cmd->buffer, cmd->use_sg, dma_dir); + use_sg = dma_map_sg(dev, cmd->buffer, cmd->use_sg, dma_dir); cmd->__data_mapped = 2; cmd->__data_mapping = use_sg; return use_sg; } -static void __sync_scsi_data(pcidev_t pdev, Scsi_Cmnd *cmd) +static void __sync_scsi_data(device_t dev, Scsi_Cmnd *cmd) { - int dma_dir = scsi_to_pci_dma_dir(cmd->sc_data_direction); + enum dma_data_direction dma_dir = + (enum dma_data_direction)scsi_to_pci_dma_dir(cmd->sc_data_direction); switch(cmd->__data_mapped) { case 2: - pci_dma_sync_sg(pdev, cmd->buffer, cmd->use_sg, dma_dir); + dma_sync_sg(dev, cmd->buffer, cmd->use_sg, dma_dir); break; case 1: - pci_dma_sync_single(pdev, cmd->__data_mapping, - cmd->request_bufflen, dma_dir); + dma_sync_single(dev, cmd->__data_mapping, + cmd->request_bufflen, dma_dir); break; } } @@ -1015,10 +1022,10 @@ static void __sync_scsi_data(pcidev_t pdev, Scsi_Cmnd *cmd) #endif /* SCSI_NCR_DYNAMIC_DMA_MAPPING */ -#define unmap_scsi_data(np, cmd) __unmap_scsi_data(np->pdev, cmd) -#define map_scsi_single_data(np, cmd) __map_scsi_single_data(np->pdev, cmd) -#define map_scsi_sg_data(np, cmd) __map_scsi_sg_data(np->pdev, cmd) -#define sync_scsi_data(np, cmd) __sync_scsi_data(np->pdev, cmd) +#define unmap_scsi_data(np, cmd) __unmap_scsi_data(np->dev, cmd) +#define map_scsi_single_data(np, cmd) __map_scsi_single_data(np->dev, cmd) +#define map_scsi_sg_data(np, cmd) __map_scsi_sg_data(np->dev, cmd) +#define sync_scsi_data(np, cmd) __sync_scsi_data(np->dev, cmd) /*========================================================== ** @@ -1140,7 +1147,7 @@ typedef struct { **========================================================== */ typedef struct { - pcidev_t pdev; + device_t dev; ncr_slot slot; ncr_chip chip; ncr_nvram *nvram; @@ -2486,7 +2493,7 @@ sym53c8xx_pci_init(Scsi_Host_Template *tpnt, pcidev_t pdev, ncr_device *device) /* ** Initialise ncr_device structure with items required by ncr_attach. */ - device->pdev = pdev; + device->dev = &pdev->dev; device->slot.bus = PciBusNumber(pdev); device->slot.device_fn = PciDeviceFn(pdev); device->slot.base = base; diff --git a/drivers/scsi/zalon.c b/drivers/scsi/zalon.c index 298284c24e52..bed55e6c3eef 100644 --- a/drivers/scsi/zalon.c +++ b/drivers/scsi/zalon.c @@ -133,9 +133,9 @@ static struct parisc_device_id zalon_tbl[] = { MODULE_DEVICE_TABLE(parisc, zalon_tbl); static struct parisc_driver zalon_driver = { - name: "GSC SCSI (Zalon)", - id_table: zalon_tbl, - probe: zalon_scsi_callback, + .name = "GSC SCSI (Zalon)", + .id_table = zalon_tbl, + .probe = zalon_scsi_callback, }; int zalon7xx_detect(Scsi_Host_Template *tpnt) diff --git a/drivers/scsi/zalon.h b/drivers/scsi/zalon.h index 089524753d62..77be297850b1 100644 --- a/drivers/scsi/zalon.h +++ b/drivers/scsi/zalon.h @@ -22,19 +22,6 @@ int zalon7xx_release(struct Scsi_Host *); #define zalon7xx_release NULL #endif -#define SCSI_ZALON { proc_name: "zalon720", \ - detect: zalon7xx_detect, \ - release: zalon7xx_release, \ - info: ncr53c8xx_info, \ - queuecommand: ncr53c8xx_queue_command,\ - bios_param: scsicam_bios_param, \ - can_queue: SCSI_NCR_CAN_QUEUE, \ - this_id: 7, \ - sg_tablesize: SCSI_NCR_SG_TABLESIZE, \ - cmd_per_lun: SCSI_NCR_CMD_PER_LUN, \ - use_clustering: DISABLE_CLUSTERING} - - #define GSC_SCSI_ZALON_OFFSET 0x800 #define IO_MODULE_EIM (1*4) |
