From c9f9d6383902ba955fc9b321d65f1406e0994c8c Mon Sep 17 00:00:00 2001 From: Matthew Wilcox Date: Fri, 12 Sep 2003 01:54:14 -0400 Subject: [PATCH] [PATCH] zalon & ncr53c8xx cleanups I don't actually have a zalon machine to test these on, but they seem right to me, and compile fine. Some cleanups for ncr53c8xx & zalon: - Inline zalon.h into zalon.c - Rationalise (a little) ncr53c8xx.c's includes - Remove all the version checks - Stop using remap_pci_mem & unmap_pci_mem & delete their definitions. - Use mb() instead of custom inline asm for MEMORY_BARRIER. --- drivers/scsi/ncr53c8xx.c | 87 +++------------ drivers/scsi/sym53c8xx_comm.h | 194 +--------------------------------- drivers/scsi/sym53c8xx_defs.h | 23 ---- drivers/scsi/zalon.c | 22 +++- drivers/scsi/zalon.h | 25 ----- 5 files changed, 39 insertions(+), 312 deletions(-) delete mode 100644 drivers/scsi/zalon.h diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c index 4fa1a9955ddfc..3559233199e12 100644 --- a/drivers/scsi/ncr53c8xx.c +++ b/drivers/scsi/ncr53c8xx.c @@ -115,64 +115,32 @@ **========================================================== */ -#include - -#include -#include -#include -#include -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,17) -#include -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,93) -#include -#endif +#include #include -#include -#include -#include -#include #include +#include +#include #include -#include -#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include - -#include - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,35) -#include -#endif - -#ifndef __init -#define __init -#endif -#ifndef __initdata -#define __initdata -#endif +#include -#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,1,92) -#include -#endif +#include +#include +#include #include "scsi.h" #include "hosts.h" -#include - -/* -** Define BITS_PER_LONG for earlier linux versions. -*/ -#ifndef BITS_PER_LONG -#if (~0UL) == 0xffffffffUL -#define BITS_PER_LONG 32 -#else -#define BITS_PER_LONG 64 -#endif -#endif - #include "ncr53c8xx.h" /* @@ -1028,9 +996,7 @@ struct ncb { /* when lcb is not allocated. */ Scsi_Cmnd *done_list; /* Commands waiting for done() */ /* callback to be invoked. */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,93) spinlock_t smp_lock; /* Lock for SMP threading */ -#endif /*---------------------------------------------------------------- ** Chip and controller indentification. @@ -3739,7 +3705,7 @@ ncr_attach (Scsi_Host_Template *tpnt, int unit, ncr_device *device) if(device->slot.base_v) np->vaddr = device->slot.base_v; else - np->vaddr = remap_pci_mem(device->slot.base_c, (u_long) 128); + np->vaddr = (unsigned long)ioremap(device->slot.base_c, 128); if (!np->vaddr) { printk(KERN_ERR @@ -3809,11 +3775,7 @@ ncr_attach (Scsi_Host_Template *tpnt, int unit, ncr_device *device) instance->max_id = np->maxwide ? 16 : 8; instance->max_lun = SCSI_NCR_MAX_LUN; #ifndef SCSI_NCR_IOMAPPED -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,29) instance->base = (unsigned long) np->reg; -#else - instance->base = (char *) np->reg; -#endif #endif instance->irq = device->slot.irq; instance->unique_id = device->slot.io_port; @@ -9197,19 +9159,6 @@ printk("ncr53c8xx_proc_info: hostno=%d, func=%d\n", host->host_no, func); #endif -/*========================================================== -** -** /proc directory entry. -** -**========================================================== -*/ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,27) -static struct proc_dir_entry proc_scsi_ncr53c8xx = { - PROC_SCSI_NCR53C8XX, 9, NAME53C8XX, - S_IFDIR | S_IRUGO | S_IXUGO, 2 -}; -#endif - /*========================================================== ** ** Boot command line. @@ -9218,9 +9167,7 @@ static struct proc_dir_entry proc_scsi_ncr53c8xx = { */ #ifdef MODULE char *ncr53c8xx = 0; /* command line passed by insmod */ -# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,30) MODULE_PARM(ncr53c8xx, "s"); -# endif #endif int __init ncr53c8xx_setup(char *str) @@ -9228,11 +9175,9 @@ int __init ncr53c8xx_setup(char *str) return sym53c8xx__setup(str); } -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,13) #ifndef MODULE __setup("ncr53c8xx=", ncr53c8xx_setup); #endif -#endif /*=================================================================== ** diff --git a/drivers/scsi/sym53c8xx_comm.h b/drivers/scsi/sym53c8xx_comm.h index 8cb5b20d32dfc..a9c51abdcc874 100644 --- a/drivers/scsi/sym53c8xx_comm.h +++ b/drivers/scsi/sym53c8xx_comm.h @@ -74,9 +74,7 @@ **========================================================== */ -#if LINUX_VERSION_CODE >= LinuxVersionCode(2,3,47) #define SCSI_NCR_DYNAMIC_DMA_MAPPING -#endif /*========================================================== ** @@ -262,8 +260,6 @@ 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) @@ -276,17 +272,7 @@ typedef struct device *device_t; static u_long __init pci_get_base_cookie(struct pci_dev *pdev, int index) { - u_long base; - -#if LINUX_VERSION_CODE > LinuxVersionCode(2,3,12) - base = pdev->resource[index].start; -#else - base = pdev->base_address[index]; -#if BITS_PER_LONG > 32 - if ((base & 0x7) == 0x4) - *base |= (((u_long)pdev->base_address[++index]) << 32); -#endif -#endif + u_long base = pdev->resource[index].start; return (base & ~0x7ul); } @@ -310,102 +296,6 @@ pci_get_base_address(struct pci_dev *pdev, int index, u_long *base) #undef PCI_BAR_OFFSET } -#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) -#define __PciDev(busn, devfn) (((busn)<<8)+(devfn)) - -#define pci_read_config_byte(d, w, v) \ - pcibios_read_config_byte(PciBusNumber(d), PciDeviceFn(d), w, v) -#define pci_read_config_word(d, w, v) \ - pcibios_read_config_word(PciBusNumber(d), PciDeviceFn(d), w, v) -#define pci_read_config_dword(d, w, v) \ - pcibios_read_config_dword(PciBusNumber(d), PciDeviceFn(d), w, v) - -#define pci_write_config_byte(d, w, v) \ - pcibios_write_config_byte(PciBusNumber(d), PciDeviceFn(d), w, v) -#define pci_write_config_word(d, w, v) \ - pcibios_write_config_word(PciBusNumber(d), PciDeviceFn(d), w, v) -#define pci_write_config_dword(d, w, v) \ - pcibios_write_config_dword(PciBusNumber(d), PciDeviceFn(d), w, v) - -static pcidev_t __init -pci_find_device(unsigned int vendor, unsigned int device, pcidev_t prev) -{ - static unsigned short pci_index; - int retv; - unsigned char bus_number, device_fn; - - if (prev == PCIDEV_NULL) - pci_index = 0; - else - ++pci_index; - retv = pcibios_find_device (vendor, device, pci_index, - &bus_number, &device_fn); - return retv ? PCIDEV_NULL : __PciDev(bus_number, device_fn); -} - -static u_short __init PciVendorId(pcidev_t dev) -{ - u_short vendor_id; - pci_read_config_word(dev, PCI_VENDOR_ID, &vendor_id); - return vendor_id; -} - -static u_short __init PciDeviceId(pcidev_t dev) -{ - u_short device_id; - pci_read_config_word(dev, PCI_DEVICE_ID, &device_id); - return device_id; -} - -static u_int __init PciIrqLine(pcidev_t dev) -{ - u_char irq; - pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); - return irq; -} - -static int __init -pci_get_base_address(pcidev_t dev, int offset, u_long *base) -{ - u_int32 tmp; - - pci_read_config_dword(dev, PCI_BASE_ADDRESS_0 + offset, &tmp); - *base = tmp; - offset += sizeof(u_int32); - if ((tmp & 0x7) == 0x4) { -#if BITS_PER_LONG > 32 - pci_read_config_dword(dev, PCI_BASE_ADDRESS_0 + offset, &tmp); - *base |= (((u_long)tmp) << 32); -#endif - offset += sizeof(u_int32); - } - return offset; -} -static u_long __init -pci_get_base_cookie(struct pci_dev *pdev, int offset) -{ - u_long base; - - (void) pci_get_base_address(dev, offset, &base); - - return base; -} - -#endif /* LINUX_VERSION_CODE >= LinuxVersionCode(2,2,0) */ - -/* Does not make sense in earlier kernels */ -#if LINUX_VERSION_CODE < LinuxVersionCode(2,4,0) -#define pci_enable_device(pdev) (0) -#endif -#if LINUX_VERSION_CODE < LinuxVersionCode(2,4,4) -#define scsi_set_pci_device(inst, pdev) (0) -#endif /*========================================================== ** @@ -428,7 +318,6 @@ pci_get_base_cookie(struct pci_dev *pdev, int offset) **========================================================== */ -#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,93) spinlock_t DRIVER_SMP_LOCK = SPIN_LOCK_UNLOCKED; #define NCR_LOCK_DRIVER(flags) spin_lock_irqsave(&DRIVER_SMP_LOCK, flags) #define NCR_UNLOCK_DRIVER(flags) \ @@ -443,20 +332,6 @@ spinlock_t DRIVER_SMP_LOCK = SPIN_LOCK_UNLOCKED; #define NCR_UNLOCK_SCSI_DONE(host, flags) \ spin_unlock_irqrestore(((host)->host_lock), flags) -#else - -#define NCR_LOCK_DRIVER(flags) do { save_flags(flags); cli(); } while (0) -#define NCR_UNLOCK_DRIVER(flags) do { restore_flags(flags); } while (0) - -#define NCR_INIT_LOCK_NCB(np) do { } while (0) -#define NCR_LOCK_NCB(np, flags) do { save_flags(flags); cli(); } while (0) -#define NCR_UNLOCK_NCB(np, flags) do { restore_flags(flags); } while (0) - -#define NCR_LOCK_SCSI_DONE(host, flags) do {;} while (0) -#define NCR_UNLOCK_SCSI_DONE(host, flags) do {;} while (0) - -#endif - /*========================================================== ** ** Memory mapped IO @@ -472,37 +347,11 @@ spinlock_t DRIVER_SMP_LOCK = SPIN_LOCK_UNLOCKED; **========================================================== */ -#if LINUX_VERSION_CODE < LinuxVersionCode(2,1,0) -#define ioremap vremap -#define iounmap vfree -#endif - #ifdef __sparc__ -# include -# define memcpy_to_pci(a, b, c) memcpy_toio((a), (b), (c)) -#elif defined(__alpha__) -# define memcpy_to_pci(a, b, c) memcpy_toio((a), (b), (c)) -#else /* others */ -# define memcpy_to_pci(a, b, c) memcpy_toio((a), (b), (c)) +#include #endif -#ifndef SCSI_NCR_PCI_MEM_NOT_SUPPORTED -static u_long __init remap_pci_mem(u_long base, u_long size) -{ - u_long page_base = ((u_long) base) & PAGE_MASK; - u_long page_offs = ((u_long) base) - page_base; - u_long page_remapped = (u_long) ioremap(page_base, page_offs+size); - - return page_remapped? (page_remapped + page_offs) : 0UL; -} - -static void __init unmap_pci_mem(u_long vaddr, u_long size) -{ - if (vaddr) - iounmap((void *) (vaddr & PAGE_MASK)); -} - -#endif /* not def SCSI_NCR_PCI_MEM_NOT_SUPPORTED */ +#define memcpy_to_pci(a, b, c) memcpy_toio((a), (b), (c)) /*========================================================== ** @@ -518,13 +367,8 @@ static void __init unmap_pci_mem(u_long vaddr, u_long size) **========================================================== */ -#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,105) #define UDELAY udelay #define MDELAY mdelay -#else -static void UDELAY(long us) { udelay(us); } -static void MDELAY(long ms) { while (ms--) UDELAY(1000); } -#endif /*========================================================== ** @@ -544,11 +388,7 @@ static void MDELAY(long ms) { while (ms--) UDELAY(1000); } **========================================================== */ -#if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,0) #define __GetFreePages(flags, order) __get_free_pages(flags, order) -#else -#define __GetFreePages(flags, order) __get_free_pages(flags, order, 0) -#endif #define MEMO_SHIFT 4 /* 16 bytes minimum memory chunk */ #if PAGE_SIZE >= 8192 @@ -2253,39 +2093,11 @@ sym53c8xx_pci_init(Scsi_Host_Template *tpnt, pcidev_t pdev, ncr_device *device) command |= (PCI_COMMAND_IO | PCI_COMMAND_MEMORY); pci_write_config_word(pdev, PCI_COMMAND, command); } - -#if LINUX_VERSION_CODE < LinuxVersionCode(2,2,0) - if ( is_prep ) { - if (io_port >= 0x10000000) { - printk(NAME53C8XX ": reallocating io_port (Wacky IBM)"); - io_port = (io_port & 0x00FFFFFF) | 0x01000000; - pci_write_config_dword(pdev, - PCI_BASE_ADDRESS_0, io_port); - } - if (base >= 0x10000000) { - printk(NAME53C8XX ": reallocating base (Wacky IBM)"); - base = (base & 0x00FFFFFF) | 0x01000000; - pci_write_config_dword(pdev, - PCI_BASE_ADDRESS_1, base); - } - if (base_2 >= 0x10000000) { - printk(NAME53C8XX ": reallocating base2 (Wacky IBM)"); - base_2 = (base_2 & 0x00FFFFFF) | 0x01000000; - pci_write_config_dword(pdev, - PCI_BASE_ADDRESS_2, base_2); - } - } -#endif #endif /* __powerpc__ */ #if defined(__i386__) && !defined(MODULE) if (!cache_line_size) { -#if LINUX_VERSION_CODE < LinuxVersionCode(2,1,75) - extern char x86; - switch(x86) { -#else switch(boot_cpu_data.x86) { -#endif case 4: suggested_cache_line_size = 4; break; case 6: case 5: suggested_cache_line_size = 8; break; diff --git a/drivers/scsi/sym53c8xx_defs.h b/drivers/scsi/sym53c8xx_defs.h index 13a68b562dda6..96eb4c9818ae2 100644 --- a/drivers/scsi/sym53c8xx_defs.h +++ b/drivers/scsi/sym53c8xx_defs.h @@ -68,13 +68,8 @@ ** Check supported Linux versions */ -#if !defined(LINUX_VERSION_CODE) -#include -#endif #include -#define LinuxVersionCode(v, p, s) (((v)<<16)+((p)<<8)+(s)) - /* * NCR PQS/PDS special device support. */ @@ -183,11 +178,6 @@ #define SCSI_NCR_IOMAPPED #elif defined(__alpha__) #define SCSI_NCR_IOMAPPED -#elif defined(__powerpc__) -#if LINUX_VERSION_CODE <= LinuxVersionCode(2,4,3) -#define SCSI_NCR_IOMAPPED -#define SCSI_NCR_PCI_MEM_NOT_SUPPORTED -#endif #endif /* @@ -363,10 +353,6 @@ #ifdef __BIG_ENDIAN -#if LINUX_VERSION_CODE < LinuxVersionCode(2,1,0) -#error "BIG ENDIAN byte ordering needs kernel version >= 2.1.0" -#endif - #define inw_l2b inw #define inl_l2b inl #define outw_b2l outw @@ -437,18 +423,9 @@ * Other architectures implement a weaker ordering that * requires memory barriers (and also IO barriers when they * make sense) to be used. - * We want to be paranoid for ppc and ia64. :) */ -#if defined(__i386__) || defined(__x86_64__) -#define MEMORY_BARRIER() do { ; } while(0) -#elif defined __powerpc__ -#define MEMORY_BARRIER() __asm__ volatile("eieio; sync" : : : "memory") -#elif defined __ia64__ -#define MEMORY_BARRIER() __asm__ volatile("mf.a; mf" : : : "memory") -#else #define MEMORY_BARRIER() mb() -#endif /* diff --git a/drivers/scsi/zalon.c b/drivers/scsi/zalon.c index 769ca36b8a3d4..35d8b9e4d1a33 100644 --- a/drivers/scsi/zalon.c +++ b/drivers/scsi/zalon.c @@ -13,6 +13,8 @@ #include #include +#include + #include #include #include @@ -26,12 +28,28 @@ #include "ncr53c8xx.h" -#include "zalon.h" - MODULE_AUTHOR("Richard Hirst"); MODULE_DESCRIPTION("Bluefish/Zalon 720 SCSI Driver"); MODULE_LICENSE("GPL"); +#define GSC_SCSI_ZALON_OFFSET 0x800 + +#define IO_MODULE_EIM (1*4) +#define IO_MODULE_DC_ADATA (2*4) +#define IO_MODULE_II_CDATA (3*4) +#define IO_MODULE_IO_COMMAND (12*4) +#define IO_MODULE_IO_STATUS (13*4) + +#define IOSTATUS_RY 0x40 +#define IOSTATUS_FE 0x80 +#define IOIIDATA_SMINT5L 0x40000000 +#define IOIIDATA_MINT5EN 0x20000000 +#define IOIIDATA_PACKEN 0x10000000 +#define IOIIDATA_PREFETCHEN 0x08000000 +#define IOIIDATA_IOII 0x00000020 + +#define CMD_RESET 5 + static ncr_chip zalon720_chip __initdata = { .device_id = PSEUDO_720_ID, .revision_id = 0x0f, diff --git a/drivers/scsi/zalon.h b/drivers/scsi/zalon.h deleted file mode 100644 index e2085e66e267e..0000000000000 --- a/drivers/scsi/zalon.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef ZALON7XX_H -#define ZALON7XX_H - -#include -#include - -#define GSC_SCSI_ZALON_OFFSET 0x800 - -#define IO_MODULE_EIM (1*4) -#define IO_MODULE_DC_ADATA (2*4) -#define IO_MODULE_II_CDATA (3*4) -#define IO_MODULE_IO_COMMAND (12*4) -#define IO_MODULE_IO_STATUS (13*4) - -#define IOSTATUS_RY 0x40 -#define IOSTATUS_FE 0x80 -#define IOIIDATA_SMINT5L 0x40000000 -#define IOIIDATA_MINT5EN 0x20000000 -#define IOIIDATA_PACKEN 0x10000000 -#define IOIIDATA_PREFETCHEN 0x08000000 -#define IOIIDATA_IOII 0x00000020 - -#define CMD_RESET 5 - -#endif /* ZALON7XX_H */ -- 2.53.0