home *** CD-ROM | disk | FTP | other *** search
- diff -u --recursive --new-file v1.0.7/linux/CREDITS linux/CREDITS
- --- v1.0.7/linux/CREDITS Mon Mar 21 20:42:08 1994
- +++ linux/CREDITS Thu Apr 7 08:14:56 1994
- @@ -531,6 +531,14 @@
- S: 97078 Wuerzburg
- S: Germany
-
- +N: Patrick Volkerding
- +E: volkerdi@ftp.cdrom.com
- +D: Produced the Slackware distribution, updated the SVGAlib
- +D: patches for ghostscript, worked on color 'ls', etc.
- +S: 301 15th Street S.
- +S: Moorhead, MN 56560
- +S: USA
- +
- N: Juergen Weigert
- E: jnweiger@immd4.informatik.uni-erlangen.de
- D: The Linux Support Team Erlangen
- diff -u --recursive --new-file v1.0.7/linux/Makefile linux/Makefile
- --- v1.0.7/linux/Makefile Wed Apr 6 13:21:39 1994
- +++ linux/Makefile Thu Apr 7 08:36:20 1994
- @@ -1,6 +1,6 @@
- VERSION = 1
- PATCHLEVEL = 0
- -SUBLEVEL = 7
- +SUBLEVEL = 8
-
- all: Version zImage
-
- diff -u --recursive --new-file v1.0.7/linux/drivers/scsi/fdomain.c linux/drivers/scsi/fdomain.c
- --- v1.0.7/linux/drivers/scsi/fdomain.c Sun Apr 3 14:58:23 1994
- +++ linux/drivers/scsi/fdomain.c Thu Apr 7 07:50:25 1994
- @@ -1,10 +1,10 @@
- /* fdomain.c -- Future Domain TMC-16x0 SCSI driver
- * Created: Sun May 3 18:53:19 1992 by faith@cs.unc.edu
- - * Revised: Sun Jan 23 08:59:04 1994 by faith@cs.unc.edu
- + * Revised: Fri Apr 1 23:47:55 1994 by faith@cs.unc.edu
- * Author: Rickard E. Faith, faith@cs.unc.edu
- * Copyright 1992, 1993, 1994 Rickard E. Faith
- *
- - * $Id: fdomain.c,v 5.9 1994/01/23 13:59:14 root Exp $
- + * $Id: fdomain.c,v 5.15 1994/04/02 04:48:04 root Exp $
-
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- @@ -16,6 +16,10 @@
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
-
- + * You should have received a copy of the GNU General Public License along
- + * with this program; if not, write to the Free Software Foundation, Inc.,
- + * 675 Mass Ave, Cambridge, MA 02139, USA.
- +
- **************************************************************************
-
- DESCRIPTION:
- @@ -26,7 +30,7 @@
- high-density external connector. The 1670 and 1680 have floppy disk
- controllers built in.
-
- - Future Domain's older boards are based on the TMC-1800 chip, and the
- + Future Domain's older boards are based on the TMC-1800 chip, and this
- driver was originally written for a TMC-1680 board with the TMC-1800
- chip. More recently, boards are being produced with the TMC-18C50 chip.
- The latest and greatest board may not work with this driver. If you have
- @@ -34,6 +38,12 @@
- signature, then the driver may fail to function after the board is
- detected.
-
- + The following BIOS versions are supported: 2.0, 3.0, 3.2, and 3.4.
- + The following chips are supported: TMC-1800, TMC-18C50.
- + Reports suggest that the driver will also work with the TMC-18C30 chip.
- + The support for the version 3.4 BIOS is new, as of March 1994, and may not
- + be stable.
- +
- If you have a TMC-8xx or TMC-9xx board, then this is not the driver for
- your board. Please refer to the Seagate driver for more information and
- possible support.
- @@ -60,6 +70,16 @@
- Private communications, Drew Eckhardt (drew@cs.colorado.edu) and Eric
- Youngdale (eric@tantalus.nrl.navy.mil), 1992.
-
- + Private communication, Tuong Le (Future Domain Engineering department),
- + 1994. (Disk geometry computations for Future Domain BIOS version 3.4, and
- + TMC-18C30 detection.)
- +
- + Hogan, Thom. The Programmer's PC Sourcebook. Microsoft Press, 1988. Page
- + 60 (2.39: Disk Partition Table Layout).
- +
- + "18C30 Technical Reference Manual", Future Domain Corporation, 1993, page
- + 6-1.
- +
-
-
- NOTES ON REFERENCES:
- @@ -95,6 +115,9 @@
- his 18C50-based card for debugging. He is the sole reason that this
- driver works with the 18C50 chip.
-
- + Thanks to Dave Newman (dnewman@crl.com) for providing initial patches for
- + the version 3.4 BIOS.
- +
- All of the alpha testers deserve much thanks.
-
-
- @@ -128,11 +151,12 @@
- of the two race conditions which were introduced by multiple outstanding
- commands). The instability seems a very high price to pay just so that
- you don't have to wait for the tape to rewind. When I have time, I will
- - work on this again. In the interim, if anyone want to work on the code, I
- - can give them my latest version.
- + work on this again. In the interim, if anyone wants to work on the code,
- + I can give them my latest version.
-
- **************************************************************************/
-
- +#include <linux/config.h>
- #include <linux/sched.h>
- #include <asm/io.h>
- #include "../block/blk.h"
- @@ -144,7 +168,7 @@
- #include <linux/string.h>
- #include <linux/ioport.h>
-
- -#define VERSION "$Revision: 5.9 $"
- +#define VERSION "$Revision: 5.15 $"
-
- /* START OF USER DEFINABLE OPTIONS */
-
- @@ -189,6 +213,7 @@
- unknown = 0x00,
- tmc1800 = 0x01,
- tmc18c50 = 0x02,
- + tmc18c30 = 0x03,
- };
-
- enum {
- @@ -204,15 +229,15 @@
- Read_SCSI_Data = 0,
- SCSI_Status = 1,
- TMC_Status = 2,
- - FIFO_Status = 3, /* tmc18c50 only */
- - Interrupt_Cond = 4, /* tmc18c50 only */
- + FIFO_Status = 3, /* tmc18c50/tmc18c30 only */
- + Interrupt_Cond = 4, /* tmc18c50/tmc18c30 only */
- LSB_ID_Code = 5,
- MSB_ID_Code = 6,
- Read_Loopback = 7,
- SCSI_Data_NoACK = 8,
- Interrupt_Status = 9,
- Configuration1 = 10,
- - Configuration2 = 11, /* tmc18c50 only */
- + Configuration2 = 11, /* tmc18c50/tmc18c30 only */
- Read_FIFO = 12,
- FIFO_Data_Count = 14
- };
- @@ -223,8 +248,9 @@
- Interrupt_Cntl = 2,
- SCSI_Mode_Cntl = 3,
- TMC_Cntl = 4,
- - Memory_Cntl = 5, /* tmc18c50 only */
- + Memory_Cntl = 5, /* tmc18c50/tmc18c30 only */
- Write_Loopback = 7,
- + IO_Control = 11, /* tmc18c30 only */
- Write_FIFO = 12
- };
-
- @@ -278,8 +304,9 @@
-
- READ EVERY WORD, ESPECIALLY THE WORD *NOT*
-
- - This driver works *ONLY* for Future Domain cards using the TMC-1800 or
- - the TMC-18C50 chip. This includes models TMC-1650, 1660, 1670, and 1680.
- + This driver works *ONLY* for Future Domain cards using the TMC-1800,
- + TMC-18C50, or TMC-18C30 chip. This includes models TMC-1650, 1660, 1670,
- + and 1680.
-
- The following BIOS signature signatures are for boards which do *NOT*
- work with this driver (these TMC-8xx and TMC-9xx boards may work with the
- @@ -308,6 +335,7 @@
- { "FUTURE DOMAIN CORP. (C) 1986-1990 1800-V1.07/28/89", 5, 50, 2, 0 },
- { "FUTURE DOMAIN CORP. (C) 1992 V3.00.004/02/92", 5, 44, 3, 0 },
- { "FUTURE DOMAIN TMC-18XX (C) 1993 V3.203/12/93", 5, 44, 3, 2 },
- + { "Future Domain Corp. V1.0008/18/93", 5, 33, 3, 4 },
- { "FUTURE DOMAIN TMC-18XX", 5, 22, -1, -1 },
-
- /* READ NOTICE ABOVE *BEFORE* YOU WASTE YOUR TIME ADDING A SIGANTURE
- @@ -331,7 +359,8 @@
- printk( "Future Domain: BIOS version %d.%d, %s\n",
- bios_major, bios_minor,
- chip == tmc1800 ? "TMC-1800"
- - : (chip == tmc18c50 ? "TMC-18C50" : "Unknown") );
- + : (chip == tmc18c50 ? "TMC-18C50"
- + : (chip == tmc18c30 ? "TMC-18C30" : "Unknown")) );
-
- if (interrupt_level) {
- printk( "Future Domain: BIOS at %x; port base at %x; using IRQ %d\n",
- @@ -353,7 +382,7 @@
- {
- outb( 0, SCSI_Cntl_port );
- outb( 0, SCSI_Mode_Cntl_port );
- - if (chip == tmc18c50)
- + if (chip == tmc18c50 || chip == tmc18c30)
- outb( 0x21 | PARITY_MASK, TMC_Cntl_port ); /* Clear forced intr. */
- else
- outb( 0x01 | PARITY_MASK, TMC_Cntl_port );
- @@ -381,6 +410,28 @@
- } else { /* test for 0xe960 id */
- if (inb( port + MSB_ID_Code ) != 0x60) return 0;
- chip = tmc18c50;
- +
- +#if 0
- +
- + /* Try to toggle 32-bit mode. This only
- + works on an 18c30 chip. (User reports
- + say that this doesn't work at all, so
- + we'll use the other method.) */
- +
- + outb( 0x80, port + IO_Control );
- + if (inb( port + Configuration2 ) & 0x80 == 0x80) {
- + outb( 0x00, port + IO_Control );
- + if (inb( port + Configuration2 ) & 0x80 == 0x00) chip = tmc18c30;
- + }
- +#else
- +
- + /* That should have worked, but appears to
- + have problems. Lets assume it is an
- + 18c30 if the RAM is disabled. */
- +
- + if (inb( port + Configuration2 ) & 0x02) chip = tmc18c30;
- +#endif
- + /* If that failed, we are an 18c50. */
- }
-
- /* We have a valid MCA ID for a TMC-1660/TMC-1680 Future Domain board.
- @@ -395,9 +446,13 @@
- printk( " Options = %x\n", options );
- #endif
-
- - /* Check for board with lowest bios_base. */
- - if (addresses[ (options & 0xc0) >> 6 ] != bios_base)
- + /* Check for board with lowest bios_base --
- + this isn't valid for the 18c30, so just
- + assume we have the right board. */
- +
- + if (chip != tmc18c30 && addresses[ (options & 0xc0) >> 6 ] != bios_base)
- return 0;
- +
- interrupt_level = ints[ (options & 0x0e) >> 1 ];
-
- return 1;
- @@ -705,7 +760,7 @@
- printk( "Arbitration failed, status = %x\n", status );
- #endif
- #if ERRORS_ONLY
- - printk( "Future Domain: Arbitration failed, status = %x", status );
- + printk( "Future Domain: Arbitration failed, status = %x\n", status );
- #endif
- return 1;
- }
- @@ -723,7 +778,11 @@
- /* Stop arbitration and enable parity */
- outb( PARITY_MASK, TMC_Cntl_port );
-
- +#if 0
- timeout = jiffies + 25; /* 250mS */
- +#else
- + timeout = jiffies + 35; /* 350mS -- because of timeouts */
- +#endif
- while (jiffies < timeout) {
- status = inb( SCSI_Status_port ); /* Read adapter status */
- if (status & 1) { /* Busy asserted */
- @@ -738,7 +797,7 @@
- if (!target) printk( "Selection failed\n" );
- #endif
- #if ERRORS_ONLY
- - if (!target) printk( "Future Domain: Selection failed" );
- + if (!target) printk( "Future Domain: Selection failed\n" );
- #endif
- return 1;
- }
- @@ -858,13 +917,13 @@
- current_SC->cmnd[ current_SC->SCp.sent_command - 1] );
- #endif
- break;
- - case 0x00: /* DATA OUT -- tmc18c50 only */
- + case 0x00: /* DATA OUT -- tmc18c50/tmc18c30 only */
- if (chip != tmc1800 && !current_SC->SCp.have_data_in) {
- current_SC->SCp.have_data_in = -1;
- outb( 0xd0 | PARITY_MASK, TMC_Cntl_port );
- }
- break;
- - case 0x04: /* DATA IN -- tmc18c50 only */
- + case 0x04: /* DATA IN -- tmc18c50/tmc18c30 only */
- if (chip != tmc1800 && !current_SC->SCp.have_data_in) {
- current_SC->SCp.have_data_in = 1;
- outb( 0x90 | PARITY_MASK, TMC_Cntl_port );
- @@ -1315,13 +1374,13 @@
- if (inb( Interrupt_Status_port ) & 0x08)
- printk( " (enabled)" );
- printk( "\n" );
- - if (chip == tmc18c50) {
- + if (chip == tmc18c50 || chip == tmc18c30) {
- printk( "FIFO Status = 0x%02x\n", inb( port_base + FIFO_Status ) );
- printk( "Int. Condition = 0x%02x\n",
- inb( port_base + Interrupt_Cond ) );
- }
- printk( "Configuration 1 = 0x%02x\n", inb( port_base + Configuration1 ) );
- - if (chip == tmc18c50)
- + if (chip == tmc18c50 || chip == tmc18c30)
- printk( "Configuration 2 = 0x%02x\n",
- inb( port_base + Configuration2 ) );
- }
- @@ -1396,9 +1455,20 @@
- return 0;
- }
-
- +#ifdef CONFIG_BLK_DEV_SD
- +
- +#include "sd.h"
- +#include "scsi_ioctl.h"
- +
- int fdomain_16x0_biosparam( int size, int dev, int *info_array )
- {
- - int drive;
- + int drive;
- + unsigned char buf[512 + sizeof( int ) * 2];
- + int *sizes = (int *)buf;
- + unsigned char *data = (unsigned char *)(sizes + 2);
- + unsigned char do_read[] = { READ_6, 0, 0, 0, 1, 0 };
- + int retcode;
- + Scsi_Device *disk;
- struct drive_info {
- unsigned short cylinders;
- unsigned char heads;
- @@ -1438,43 +1508,84 @@
- */
-
- drive = MINOR(dev) / 16;
- + disk = rscsi_disks[ drive ].device;
-
- if (bios_major == 2) {
- i = (struct drive_info *)( (char *)bios_base + 0x1f31 + drive * 25 );
- info_array[0] = i->heads;
- info_array[1] = i->sectors;
- info_array[2] = i->cylinders;
- - } else if (bios_major == 3) { /* Appears to be the same for 3.0 and 3.2 */
- - i = (struct drive_info *)( (char *)bios_base + 0x1f71 + drive * 10 );
- - info_array[0] = i->heads + 1;
- - info_array[1] = i->sectors;
- - info_array[2] = i->cylinders;
- - } else {
- - /* How the data is stored in the RAM area is very BIOS-dependent.
- - Therefore, assume a version 3 layout, and check for validity. */
- -
- + } else if (bios_major == 3 && bios_minor < 4) { /* 3.0 and 3.2 BIOS */
- i = (struct drive_info *)( (char *)bios_base + 0x1f71 + drive * 10 );
- info_array[0] = i->heads + 1;
- info_array[1] = i->sectors;
- info_array[2] = i->cylinders;
- + } else { /* 3.4 BIOS (and up?) */
- + /* This algorithm was provided by Future Domain (much thanks!). */
-
- - if (!info_array[0]
- - || !info_array[1]
- - || !info_array[2]
- - || info_array[2] > 1024 /* DOS uses only 10 bits.
- - Should this be changed
- - to support larger drives?
- - I.e., will the controller
- - "do the right thing"?
- - */
- - ) {
- -
- - info_array[0]
- - = info_array[1]
- - = info_array[2]
- - = 0;
- + sizes[0] = 0; /* zero bytes out */
- + sizes[1] = 512; /* one sector in */
- + memcpy( data, do_read, sizeof( do_read ) );
- + retcode = kernel_scsi_ioctl( disk,
- + SCSI_IOCTL_SEND_COMMAND,
- + (void *)buf );
- + if (!retcode /* SCSI command ok */
- + && data[511] == 0xaa && data[510] == 0x55 /* Partition table valid */
- + && data[0x1c2]) { /* Partition type */
- +
- + /* The partition table layout is as follows:
- +
- + Start: 0x1b3h
- + Offset: 0 = partition status
- + 1 = starting head
- + 2 = starting sector and cylinder (word, encoded)
- + 4 = partition type
- + 5 = ending head
- + 6 = ending sector and cylinder (word, encoded)
- + 8 = starting absolute sector (double word)
- + c = number of sectors (double word)
- + Signature: 0x1fe = 0x55aa
- +
- + So, this algorithm assumes:
- + 1) the first partition table is in use,
- + 2) the data in the first entry is correct, and
- + 3) partitions never divide cylinders
- +
- + Note that (1) may be FALSE for NetBSD (and other BSD flavors),
- + as well as for Linux. Note also, that Linux doesn't pay any
- + attention to the fields that are used by this algorithm -- it
- + only uses the absolute sector data. Recent versions of Linux's
- + fdisk(1) will fill this data in correctly, and forthcoming
- + versions will check for consistency.
- +
- + Checking for a non-zero partition type is not part of the
- + Future Domain algorithm, but it seemed to be a reasonable thing
- + to do, especially in the Linux and BSD worlds. */
- +
- + info_array[0] = data[0x1c3] + 1; /* heads */
- + info_array[1] = data[0x1c4] & 0x3f; /* sectors */
- + } else {
- +
- + /* Note that this new method guarantees that there will always be
- + less than 1024 cylinders on a platter. This is good for drives
- + up to approximately 7.85GB (where 1GB = 1024 * 1024 kB). */
- +
- + if ((unsigned int)size >= 0x7e0000U) {
- + info_array[0] = 0xff; /* heads = 255 */
- + info_array[1] = 0x3f; /* sectors = 63 */
- + } else if ((unsigned int)size >= 0x200000U) {
- + info_array[0] = 0x80; /* heads = 128 */
- + info_array[1] = 0x3f; /* sectors = 63 */
- + } else {
- + info_array[0] = 0x40; /* heads = 64 */
- + info_array[1] = 0x20; /* sectors = 32 */
- + }
- }
- + /* For both methods, compute the cylinders */
- + info_array[2] = (unsigned int)size / (info_array[0] * info_array[1] );
- }
-
- return 0;
- }
- +
- +#endif /* CONFIG_BLK_DEV_SD */
- diff -u --recursive --new-file v1.0.7/linux/drivers/scsi/fdomain.h linux/drivers/scsi/fdomain.h
- --- v1.0.7/linux/drivers/scsi/fdomain.h Wed Jan 5 08:18:50 1994
- +++ linux/drivers/scsi/fdomain.h Thu Apr 7 07:50:25 1994
- @@ -1,10 +1,10 @@
- /* fdomain.h -- Header for Future Domain TMC-16x0 driver
- * Created: Sun May 3 18:47:33 1992 by faith@cs.unc.edu
- - * Revised: Tue Jan 4 20:44:04 1994 by faith@cs.unc.edu
- + * Revised: Sat Mar 19 16:07:14 1994 by faith@cs.unc.edu
- * Author: Rickard E. Faith, faith@cs.unc.edu
- * Copyright 1992, 1993, 1994 Rickard E. Faith
- *
- - * $Id: fdomain.h,v 5.3 1994/01/05 01:44:16 root Exp $
- + * $Id: fdomain.h,v 5.5 1994/03/19 21:07:38 root Exp $
-
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- @@ -16,6 +16,10 @@
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
-
- + * You should have received a copy of the GNU General Public License along
- + * with this program; if not, write to the Free Software Foundation, Inc.,
- + * 675 Mass Ave, Cambridge, MA 02139, USA.
- +
- */
-
- #ifndef _FDOMAIN_H
- @@ -27,7 +31,12 @@
- const char *fdomain_16x0_info( void );
- int fdomain_16x0_reset( Scsi_Cmnd * );
- int fdomain_16x0_queue( Scsi_Cmnd *, void (*done)(Scsi_Cmnd *) );
- +
- +#ifdef CONFIG_BLK_DEV_SD
- int fdomain_16x0_biosparam( int, int, int * );
- +#else
- +#define fdomain_16x0_biosparam NULL
- +#endif
-
- #define FDOMAIN_16X0 { "Future Domain TMC-16x0", \
- fdomain_16x0_detect, \
- diff -u --recursive --new-file v1.0.7/linux/net/inet/tcp.c linux/net/inet/tcp.c
- --- v1.0.7/linux/net/inet/tcp.c Wed Apr 6 13:13:35 1994
- +++ linux/net/inet/tcp.c Thu Apr 7 07:51:05 1994
- @@ -3407,7 +3407,6 @@
- case TCP_SYN_RECV:
- if (th->syn) {
- /* Probably a retransmitted syn */
- - printk("syn while in TCP_SYN_RECV\n");
- kfree_skb(skb, FREE_READ);
- release_sock(sk);
- return(0);
-