From 78b4b05db57b04b3ed17dc71259bf1402c04abfa Mon Sep 17 00:00:00 2001 From: Matthew Wilcox Date: Thu, 13 Mar 2008 06:55:08 -0600 Subject: [PATCH] [SCSI] BusLogic: make FlashPoint support x86-32 only We've verified that there are 64 bit and endianness problems in the flashpoint driver. Reverse the logic of CONFIG_OMIT_FLASHPOINT (make it CONFIG_SCSI_FLASHPOINT) and make it depend on X86_32 so it can't appear for any other architectures. Long term, if someone chooses, they could make FlashPoint 64 bit compliant (it looks like its a question of fixing up the sizes in some of the packed descriptors) Signed-off-by: James Bottomley --- drivers/scsi/BusLogic.c | 5 ++++- drivers/scsi/BusLogic.h | 21 ++------------------- drivers/scsi/FlashPoint.c | 6 +++--- drivers/scsi/Kconfig | 14 ++++++++------ 4 files changed, 17 insertions(+), 29 deletions(-) diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c index 4d3ebb1af490..2d689af24664 100644 --- a/drivers/scsi/BusLogic.c +++ b/drivers/scsi/BusLogic.c @@ -896,7 +896,7 @@ static int __init BusLogic_InitializeFlashPointProbeInfo(struct BusLogic_HostAda IRQ_Channel = PCI_Device->irq; IO_Address = BaseAddress0 = pci_resource_start(PCI_Device, 0); PCI_Address = BaseAddress1 = pci_resource_start(PCI_Device, 1); -#ifndef CONFIG_SCSI_OMIT_FLASHPOINT +#ifdef CONFIG_SCSI_FLASHPOINT if (pci_resource_flags(PCI_Device, 0) & IORESOURCE_MEM) { BusLogic_Error("BusLogic: Base Address0 0x%X not I/O for " "FlashPoint Host Adapter\n", NULL, BaseAddress0); BusLogic_Error("at PCI Bus %d Device %d I/O Address 0x%X\n", NULL, Bus, Device, IO_Address); @@ -1006,6 +1006,9 @@ static void __init BusLogic_InitializeProbeInfoList(struct BusLogic_HostAdapter } +#else +#define BusLogic_InitializeProbeInfoList(adapter) \ + BusLogic_InitializeProbeInfoListISA(adapter) #endif /* CONFIG_PCI */ diff --git a/drivers/scsi/BusLogic.h b/drivers/scsi/BusLogic.h index bfbfb5c3a8f6..73f237a1ed94 100644 --- a/drivers/scsi/BusLogic.h +++ b/drivers/scsi/BusLogic.h @@ -33,23 +33,6 @@ #define PACKED __attribute__((packed)) #endif -/* - FlashPoint support is only available for the Intel x86 Architecture with - CONFIG_PCI set. -*/ - -#ifndef __i386__ -#undef CONFIG_SCSI_OMIT_FLASHPOINT -#define CONFIG_SCSI_OMIT_FLASHPOINT -#endif - -#ifndef CONFIG_PCI -#undef CONFIG_SCSI_OMIT_FLASHPOINT -#define CONFIG_SCSI_OMIT_FLASHPOINT -#define BusLogic_InitializeProbeInfoListISA BusLogic_InitializeProbeInfoList -#endif - - /* Define the maximum number of BusLogic Host Adapters supported by this driver. */ @@ -178,7 +161,7 @@ static int BusLogic_HostAdapterAddressCount[3] = { 0, BusLogic_MultiMasterAddres Define macros for testing the Host Adapter Type. */ -#ifndef CONFIG_SCSI_OMIT_FLASHPOINT +#ifdef CONFIG_SCSI_FLASHPOINT #define BusLogic_MultiMasterHostAdapterP(HostAdapter) \ (HostAdapter->HostAdapterType == BusLogic_MultiMaster) @@ -871,7 +854,7 @@ struct BusLogic_CCB { void (*CallbackFunction) (struct BusLogic_CCB *); /* Bytes 40-43 */ u32 BaseAddress; /* Bytes 44-47 */ enum BusLogic_CompletionCode CompletionCode; /* Byte 48 */ -#ifndef CONFIG_SCSI_OMIT_FLASHPOINT +#ifdef CONFIG_SCSI_FLASHPOINT unsigned char:8; /* Byte 49 */ unsigned short OS_Flags; /* Bytes 50-51 */ unsigned char Private[48]; /* Bytes 52-99 */ diff --git a/drivers/scsi/FlashPoint.c b/drivers/scsi/FlashPoint.c index 1c9078191d9e..b374e457e5e2 100644 --- a/drivers/scsi/FlashPoint.c +++ b/drivers/scsi/FlashPoint.c @@ -16,7 +16,7 @@ */ -#ifndef CONFIG_SCSI_OMIT_FLASHPOINT +#ifdef CONFIG_SCSI_FLASHPOINT #define MAX_CARDS 8 #undef BUSTYPE_PCI @@ -7626,7 +7626,7 @@ FlashPoint__HandleInterrupt(FlashPoint_CardHandle_T CardHandle) #define FlashPoint_InterruptPending FlashPoint__InterruptPending #define FlashPoint_HandleInterrupt FlashPoint__HandleInterrupt -#else /* CONFIG_SCSI_OMIT_FLASHPOINT */ +#else /* !CONFIG_SCSI_FLASHPOINT */ /* Define prototypes for the FlashPoint SCCB Manager Functions. @@ -7641,4 +7641,4 @@ extern bool FlashPoint_InterruptPending(FlashPoint_CardHandle_T); extern int FlashPoint_HandleInterrupt(FlashPoint_CardHandle_T); extern void FlashPoint_ReleaseHostAdapter(FlashPoint_CardHandle_T); -#endif /* CONFIG_SCSI_OMIT_FLASHPOINT */ +#endif /* CONFIG_SCSI_FLASHPOINT */ diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index b9d374082b65..7f78e3ea517d 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -588,18 +588,20 @@ config SCSI_BUSLOGIC , and the files and for more information. + Note that support for FlashPoint is only available for 32-bit + x86 configurations. To compile this driver as a module, choose M here: the module will be called BusLogic. -config SCSI_OMIT_FLASHPOINT - bool "Omit FlashPoint support" - depends on SCSI_BUSLOGIC +config SCSI_FLASHPOINT + bool "FlashPoint support" + depends on SCSI_BUSLOGIC && PCI && X86_32 help - This option allows you to omit the FlashPoint support from the + This option allows you to add FlashPoint support to the BusLogic SCSI driver. The FlashPoint SCCB Manager code is - substantial, so users of MultiMaster Host Adapters may wish to omit - it. + substantial, so users of MultiMaster Host Adapters may not + wish to include it. config SCSI_DMX3191D tristate "DMX3191D SCSI support"