diff options
| author | Justin T. Gibbs <gibbs@overdrive.btc.adaptec.com> | 2002-12-12 23:17:44 -0700 |
|---|---|---|
| committer | Justin T. Gibbs <gibbs@overdrive.btc.adaptec.com> | 2002-12-12 23:17:44 -0700 |
| commit | f211e1fd7eb7e3dbeb97ff40298730d62ad9e2b3 (patch) | |
| tree | cdd7d3d7d32fff1a05d793b06381d63bcd15e28a | |
| parent | f33f47a290213250e793c8a631c73e40d4fbc156 (diff) | |
Complete the upgrade to aic7xxx 6.2.23 and aic79xx 1.3.0_ALPHA3.
| -rw-r--r-- | drivers/scsi/Kconfig | 45 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/Kconfig.aic79xx | 3 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/Kconfig.aic7xxx | 10 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/Makefile | 52 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.c | 3 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.h | 11 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_osm.c | 3 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_osm.h | 13 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aiclib.h | 19 |
9 files changed, 103 insertions, 56 deletions
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 51bed701989d..aae6a9de64ce 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -277,7 +277,50 @@ config SCSI_AACRAID tristate "Adaptec AACRAID support (EXPERIMENTAL)" depends on EXPERIMENTAL && SCSI && PCI -source "drivers/scsi/aic7xxx/Kconfig" +source "drivers/scsi/aic7xxx/Kconfig.aic7xxx" + +config SCSI_AIC7XXX_OLD + tristate "Adaptec AIC7xxx support (old driver)" + help + WARNING This driver is an older aic7xxx driver and is no longer + under active development. Adaptec, Inc. is writing a new driver to + take the place of this one, and it is recommended that whenever + possible, people should use the new Adaptec written driver instead + of this one. This driver will eventually be phased out entirely. + + This is support for the various aic7xxx based Adaptec SCSI + controllers. These include the 274x EISA cards; 284x VLB cards; + 2902, 2910, 293x, 294x, 394x, 3985 and several other PCI and + motherboard based SCSI controllers from Adaptec. It does not support + the AAA-13x RAID controllers from Adaptec, nor will it likely ever + support them. It does not support the 2920 cards from Adaptec that + use the Future Domain SCSI controller chip. For those cards, you + need the "Future Domain 16xx SCSI support" driver. + + In general, if the controller is based on an Adaptec SCSI controller + chip from the aic777x series or the aic78xx series, this driver + should work. The only exception is the 7810 which is specifically + not supported (that's the RAID controller chip on the AAA-13x + cards). + + Note that the AHA2920 SCSI host adapter is *not* supported by this + driver; choose "Future Domain 16xx SCSI support" instead if you have + one of those. + + Information on the configuration options for this controller can be + found by checking the help file for each of the available + configuration options. You should read + <file:Documentation/scsi/aic7xxx_old.txt> at a minimum before + contacting the maintainer with any questions. The SCSI-HOWTO, + available from <http://www.linuxdoc.org/docs.html#howto>, can also + be of great help. + + If you want to compile this driver as a module ( = code which can be + inserted in and removed from the running kernel whenever you want), + say M here and read <file:Documentation/modules.txt>. The module + will be called aic7xxx_old.o. + +source "drivers/scsi/aic7xxx/Kconfig.aic79xx" # All the I2O code and drivers do not seem to be 64bit safe. config SCSI_DPT_I2O diff --git a/drivers/scsi/aic7xxx/Kconfig.aic79xx b/drivers/scsi/aic7xxx/Kconfig.aic79xx index d9fc9a9c8156..c2404c8433f4 100644 --- a/drivers/scsi/aic7xxx/Kconfig.aic79xx +++ b/drivers/scsi/aic7xxx/Kconfig.aic79xx @@ -1,9 +1,10 @@ # # AIC79XX 2.5.X Kernel configuration File. -# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Kconfig.aic79xx#1 $ +# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Kconfig.aic79xx#2 $ # config SCSI_AIC79XX tristate "Adaptec AIC79xx U320 support" + depends on PCI help This driver supports all of Adaptec's Ultra 320 PCI-X based SCSI controllers. diff --git a/drivers/scsi/aic7xxx/Kconfig.aic7xxx b/drivers/scsi/aic7xxx/Kconfig.aic7xxx index e36902d0df62..fc35ea3846ef 100644 --- a/drivers/scsi/aic7xxx/Kconfig.aic7xxx +++ b/drivers/scsi/aic7xxx/Kconfig.aic7xxx @@ -1,9 +1,9 @@ # # AIC7XXX and AIC79XX 2.5.X Kernel configuration File. -# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Kconfig.aic7xxx#2 $ +# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Kconfig.aic7xxx#4 $ # config SCSI_AIC7XXX - tristate "Adaptec AIC7xxx Fast -> U160 support" + tristate "Adaptec AIC7xxx Fast -> U160 support (New Driver)" ---help--- This driver supports all of Adaptec's Fast through Ultra 160 PCI based SCSI controllers as well as the aic7770 based EISA and VLB @@ -98,9 +98,3 @@ config AIC7XXX_REG_PRETTY_PRINT contents in diagnostics. This make it much easier to understand debug output without having to refer to a data book and/or the aic7xxx.reg file. - -config SCSI_AIC79XX - tristate "Adaptec AIC79xx U320 support" - help - This driver supports all of Adaptec's Ultra 320 PCI-X - based SCSI controllers. diff --git a/drivers/scsi/aic7xxx/Makefile b/drivers/scsi/aic7xxx/Makefile index f5ee4260d4e4..68af8f9b3dfe 100644 --- a/drivers/scsi/aic7xxx/Makefile +++ b/drivers/scsi/aic7xxx/Makefile @@ -1,43 +1,39 @@ # # Makefile for the Linux aic7xxx SCSI driver. # -# Let kbuild descend into aicasm when cleaning -# -# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Makefile#1 $ +# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Makefile#2 $ # + +# Let kbuild descend into aicasm when cleaning subdir- += aicasm obj-$(CONFIG_SCSI_AIC7XXX) += aic7xxx.o -ifeq ($(CONFIG_PCI),y) obj-$(CONFIG_SCSI_AIC79XX) += aic79xx.o -endif -# Core files -aic7xxx-objs += aic7xxx_core.o aic7xxx_93cx6.o aic7770.o +# Core Fast -> U160 files +aic7xxx-y += aic7xxx_core.o \ + aic7xxx_93cx6.o \ + aic7770.o +aic7xxx-$(CONFIG_PCI) += aic7xxx_pci.o +aic7xxx-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT) += aic7xxx_reg_print.o -# Platform Specific Files -aic7xxx-objs += aic7xxx_osm.o aic7xxx_proc.o aic7770_osm.o -ifeq ($(CONFIG_AIC7XXX_REG_PRETTY_PRINT),y) -aic7xxx-objs += aic7xxx_reg_print.o -endif +# Platform Specific Fast -> U160 Files +aic7xxx-y += aic7xxx_osm.o \ + aic7xxx_proc.o \ + aic7770_osm.o +aic7xxx-$(CONFIG_PCI) += aic7xxx_osm_pci.o -# PCI Specific Files -ifeq ($(CONFIG_PCI),y) - # Core PCI files - aic7xxx-objs += aic7xxx_pci.o - # Platform Specific PCI Files - aic7xxx-objs += aic7xxx_osm_pci.o -endif +# Core U320 files +aic79xx-y += aic79xx_core.o \ + aic79xx_pci.o +aic79xx-$(CONFIG_AIC79XX_REG_PRETTY_PRINT) += aic79xx_reg_print.o # Platform Specific U320 Files -aic79xx-objs = aic79xx_osm.o aic79xx_proc.o aic79xx_osm_pci.o -# Core Files -aic79xx-objs += aic79xx_core.o aic79xx_pci.o -ifeq ($(CONFIG_AIC79XX_REG_PRETTY_PRINT),y) -aic79xx-objs += aic79xx_reg_print.o -endif +aic79xx-y += aic79xx_osm.o \ + aic79xx_proc.o \ + aic79xx_osm_pci.o -EXTRA_CFLAGS += -I$(src)/.. +EXTRA_CFLAGS += -Idrivers/scsi #EXTRA_CFLAGS += -g # Files generated that shall be removed upon make clean @@ -49,8 +45,8 @@ clean-files += aic79xx_seq.h aic79xx_reg.h aic79xx_reg_print.c $(obj)/aic7xxx_core.o: $(obj)/aic7xxx_seq.h $(obj)/aic79xx_core.o: $(obj)/aic79xx_seq.h -$(addprefix $(obj)/,$(aic7xxx-objs)): $(obj)/aic7xxx_reg.h -$(addprefix $(obj)/,$(aic79xx-objs)): $(obj)/aic79xx_reg.h +$(addprefix $(obj)/,$(aic7xxx-y)): $(obj)/aic7xxx_reg.h +$(addprefix $(obj)/,$(aic79xx-y)): $(obj)/aic79xx_reg.h ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y) aic7xxx_gen = $(obj)/aic7xxx_seq.h $(obj)/aic7xxx_reg.h diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index 5f7b427a176e..2f7d54ff062f 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c @@ -1,7 +1,7 @@ /* * Adaptec AIC79xx device driver for Linux. * - * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#92 $ + * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.c#93 $ * * -------------------------------------------------------------------------- * Copyright (c) 1994-2000 Justin T. Gibbs. @@ -801,7 +801,6 @@ static int ahd_linux_release(struct Scsi_Host *); static const char *ahd_linux_info(struct Scsi_Host *); static int ahd_linux_queue(Scsi_Cmnd *, void (*)(Scsi_Cmnd *)); #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) -static int ahd_linux_slave_alloc(Scsi_Device *); static int ahd_linux_slave_configure(Scsi_Device *); static void ahd_linux_slave_destroy(Scsi_Device *); static int ahd_linux_biosparam(struct scsi_device*, diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.h b/drivers/scsi/aic7xxx/aic79xx_osm.h index 6600f768098a..122a103637b1 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.h +++ b/drivers/scsi/aic7xxx/aic79xx_osm.h @@ -36,7 +36,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#88 $ + * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#90 $ * */ #ifndef _AIC79XX_LINUX_H_ @@ -141,7 +141,7 @@ typedef Scsi_Cmnd *ahd_io_ctx_t; /************************* Configuration Data *********************************/ extern int aic79xx_allow_memio; extern int aic79xx_detect_complete; -extern Scsi_Host_Template* aic79xx_driver_template; +extern Scsi_Host_Template aic79xx_driver_template; /***************************** Bus Space/DMA **********************************/ @@ -246,10 +246,6 @@ int ahd_dmamap_unload(struct ahd_softc *, bus_dma_tag_t, bus_dmamap_t); typedef struct timer_list ahd_timer_t; /********************************** Includes **********************************/ -/* Host template and function declarations referenced by the template. */ -#include "aic79xx_host.h" - -/* Core driver definitions */ #if CONFIG_AIC79XX_REG_PRETTY_PRINT #define AIC_DEBUG_REGISTERS 1 #else @@ -1052,6 +1048,9 @@ ahd_flush_device_writes(struct ahd_softc *ahd) #define ahd_pci_set_dma_mask(dev_softc, mask) \ (((dev_softc)->dma_mask = mask) && 0) #endif +/**************************** Proc FS Support *********************************/ +int ahd_linux_proc_info(char *, char **, off_t, int, int, int); + /*************************** Domain Validation ********************************/ #define AHD_DV_CMD(cmd) ((cmd)->scsi_done == ahd_linux_dv_complete) #define AHD_DV_SIMQ_FROZEN(ahd) \ diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c index c2d9cf831621..5bf6c28762f5 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm.c +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c @@ -1,7 +1,7 @@ /* * Adaptec AIC7xxx device driver for Linux. * - * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#160 $ + * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.c#161 $ * * Copyright (c) 1994 John Aycock * The University of Calgary Department of Computer Science. @@ -812,7 +812,6 @@ static int ahc_linux_release(struct Scsi_Host *); static int ahc_linux_queue(Scsi_Cmnd *, void (*)(Scsi_Cmnd *)); static const char *ahc_linux_info(struct Scsi_Host *); #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) -static int ahc_linux_slave_alloc(Scsi_Device *); static int ahc_linux_slave_configure(Scsi_Device *); static void ahc_linux_slave_destroy(Scsi_Device *); static int ahd_linux_biosparam(struct scsi_device*, diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.h b/drivers/scsi/aic7xxx/aic7xxx_osm.h index f4befe1fd415..9aea7f91ff12 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm.h +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.h @@ -18,8 +18,6 @@ * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * - * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#108 $ - * * Copyright (c) 2000-2001 Adaptec Inc. * All rights reserved. * @@ -55,7 +53,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#108 $ + * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic7xxx_osm.h#109 $ * */ #ifndef _AIC7XXX_LINUX_H_ @@ -156,7 +154,7 @@ typedef Scsi_Cmnd *ahc_io_ctx_t; extern int aic7xxx_no_probe; extern int aic7xxx_allow_memio; extern int aic7xxx_detect_complete; -extern Scsi_Host_Template* aic7xxx_driver_template; +extern Scsi_Host_Template aic7xxx_driver_template; /***************************** Bus Space/DMA **********************************/ @@ -261,10 +259,6 @@ int ahc_dmamap_unload(struct ahc_softc *, bus_dma_tag_t, bus_dmamap_t); typedef struct timer_list ahc_timer_t; /********************************** Includes **********************************/ -/* Host template and function declarations referenced by the template. */ -#include "aic7xxx_host.h" - -/* Core driver definitions */ #if CONFIG_AIC7XXX_REG_PRETTY_PRINT #define AIC_DEBUG_REGISTERS 1 #else @@ -1020,6 +1014,9 @@ ahc_flush_device_writes(struct ahc_softc *ahc) #define ahc_pci_set_dma_mask(dev_softc, mask) \ (((dev_softc)->dma_mask = mask) && 0) #endif +/**************************** Proc FS Support *********************************/ +int ahc_linux_proc_info(char *, char **, off_t, int, int, int); + /*************************** Domain Validation ********************************/ #define AHC_DV_CMD(cmd) ((cmd)->scsi_done == ahc_linux_dv_complete) #define AHC_DV_SIMQ_FROZEN(ahc) \ diff --git a/drivers/scsi/aic7xxx/aiclib.h b/drivers/scsi/aic7xxx/aiclib.h index b0f7f1158a22..2752baabee47 100644 --- a/drivers/scsi/aic7xxx/aiclib.h +++ b/drivers/scsi/aic7xxx/aiclib.h @@ -825,6 +825,25 @@ typedef enum { extern const char *scsi_sense_key_text[]; +/************************* Large Disk Handling ********************************/ +static __inline int aic_sector_div(u_long capacity, int heads, int sectors); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) +static __inline int +aic_sector_div(u_long capacity, int heads, int sectors) +{ + return (capacity / (heads * sectors)); +} +#else +static __inline int +aic_sector_div(sector_t capacity, int heads, int sectors) +{ + /* ugly, ugly sector_div calling convention.. */ + sector_div(capacity, (heads * sectors)); + return (int)capacity; +} +#endif + /**************************** Module Library Hack *****************************/ /* * What we'd like to do is have a single "scsi library" module that both the |
