Commit 2ff1ae4e authored by Linus Torvalds's avatar Linus Torvalds

Import 1.3.49

parent 97d32f33
...@@ -483,6 +483,14 @@ S: Hoefbladhof 27 ...@@ -483,6 +483,14 @@ S: Hoefbladhof 27
S: 2215 DV Voorhout S: 2215 DV Voorhout
S: The Netherlands S: The Netherlands
N: Karl Keyte
E: kkeyte@koft.rhein-main.de
E: kkeyte@esoc.esa.de
D: Disk usage statistics and modifications to line printer driver
S: Erbacher Strasse 6
S: D-64283 Darmstadt
S: Germany
N: Olaf Kirch N: Olaf Kirch
E: okir@monad.swb.de E: okir@monad.swb.de
D: Author of the Linux Network Administrators' Guide D: Author of the Linux Network Administrators' Guide
......
This diff is collapsed.
VERSION = 1 VERSION = 1
PATCHLEVEL = 3 PATCHLEVEL = 3
SUBLEVEL = 48 SUBLEVEL = 49
ARCH = i386 ARCH = i386
......
...@@ -175,7 +175,7 @@ void setup_arch(char **cmdline_p, ...@@ -175,7 +175,7 @@ void setup_arch(char **cmdline_p,
static const char * i486model(unsigned int nr) static const char * i486model(unsigned int nr)
{ {
static const char *model[] = { static const char *model[] = {
"0", "DX","SX","DX/2","4","SX/2","6","DX/2-WB","DX/4" "0", "DX","SX","DX/2","4","SX/2","6","DX/2-WB","DX/4","DX/4-WB"
}; };
if (nr < sizeof(model)/sizeof(char *)) if (nr < sizeof(model)/sizeof(char *))
return model[nr]; return model[nr];
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <asm/i82489.h> #include <asm/i82489.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/pgtable.h>
#include <asm/bitops.h> #include <asm/bitops.h>
#include <asm/smp.h> #include <asm/smp.h>
......
// 950913: note -- I will upload the new version 1.9a to ftp.ucsd.edu
// as soon as possible...
//
// ******
// ****** The driver has a n e w MAJOR number (34) now! ******
// ******
//
// please remake /dev/sc*:
//
// mknod /dev/scc0 c 34 0
// mknod /dev/scc1 c 34 1
// mknod /dev/scc2 c 34 2
// mknod /dev/scc3 c 34 3
//
// (and so on...)
//
// If you want to use the old device naming scheme use:
//
// ln -f /dev/scc0 /dev/sc1
// ln -f /dev/scc1 /dev/sc2
// ln -f /dev/scc2 /dev/sc3
// ln -f /dev/scc3 /dev/sc4
//
// (you get the idea...)
//
// -dl1bke-
You will find subset of the documentation in You will find subset of the documentation in
...@@ -33,11 +6,11 @@ You will find subset of the documentation in ...@@ -33,11 +6,11 @@ You will find subset of the documentation in
To use this driver you MUST have the full package from To use this driver you MUST have the full package from
ftp.ucsd.edu:/hamradio/packet/tcpip/incoming/z8530drv-1.9a.dl1bke.tar.gz ftp.ucsd.edu:/hamradio/packet/tcpip/incoming/z8530drv-2.01.dl1bke.real.tar.gz
[ [
if you can't find it there, try: if you can't find it there, try:
.../tcpip/linux/z8530drv-1.9a.dl1bke.tar.gz .../tcpip/linux/z8530drv-2.01.dl1bke.tar.gz
] ]
......
This diff is collapsed.
#include <linux/scc.h>
/********* CONFIGURATION PARAMATERES; PLEASE CHANGE THIS TO YOUR OWN SITUATION **********/
/* SCC hardware parameters */
/* use the following board types:
*
* PA0HZP OptoSCC (PA0HZP)
* EAGLE EAGLE
* PC100 PC100
* PRIMUS PRIMUS-PC (DG9BL)
* DRSI DRSI PC*Packet
* BAYCOM BayCom (U)SCC
*
*/
int Nchips = 2 ; /* number of chips */
io_port Vector_Latch = 0 ; /* addr. of INTACK-Latch (0 for poll mode) */
int Ivec = 7 ; /* interrupt vector */
long Clock = 4915200 ; /* frequency of the scc clock */
char Board = BAYCOM ; /* what type of SCC card do you use? */
int Option = 0 ; /* command for extra hardware */
io_port Special_Port = 0 ; /* port address for special hardware */
/* (for EAGLE, PC100, PRIMUS, DRSI) */
/* ^ never remove the semicolon !! */
/* Channel A B Chip */
/* ============ ======== */
/* Control ports: */
io_port SCC_ctrl[MAXSCC * 2] = {0x304, 0x305, /* ...one... */
0x306, 0x307, /* ...two... */
0, 0, /* ...three... */
0, 0}; /* ...four... */
/* Data ports: */
io_port SCC_data[MAXSCC * 2] = {0x300, 0x301, /* ...one... */
0x302, 0x303, /* ...two... */
0, 0, /* ...three... */
0, 0}; /* ...four... */
/* set to '1' if you have and want ESCC chip (8580/85180/85280) support */
/* Chip */
/* ======== */
int SCC_Enhanced[MAXSCC] = {0, /* ...one... */
0, /* ...two... */
0, /* ...three... */
0}; /* ...four... */
/* some useful #defines. You might need them or not */
#define VERBOSE_BOOTMSG 1
#undef SCC_DELAY /* perhaps a 486DX2 is a *bit* too fast */
#undef SCC_LDELAY /* slow it even a bit more down */
#undef DONT_CHECK /* don't look if the SCCs you specified are available */
#define DO_FAST_RX /* experimental timer routine called immediateley */
/* after every received frame */
/* The external clocking, nrz and fullduplex divider configuration is gone */
/* you can set these parameters in /etc/z8530drv.rc and initialize the */
/* driver with sccinit */
...@@ -475,6 +475,7 @@ el2_get_8390_hdr(struct device *dev, struct e8390_pkt_hdr *hdr, int ring_page) ...@@ -475,6 +475,7 @@ el2_get_8390_hdr(struct device *dev, struct e8390_pkt_hdr *hdr, int ring_page)
{ {
unsigned int i; unsigned int i;
unsigned long hdr_start = dev->mem_start + ((ring_page - EL2_MB1_START_PG)<<8); unsigned long hdr_start = dev->mem_start + ((ring_page - EL2_MB1_START_PG)<<8);
unsigned long fifo_watchdog;
if (dev->mem_start) { /* Use the shared memory. */ if (dev->mem_start) { /* Use the shared memory. */
#ifdef notdef #ifdef notdef
...@@ -492,7 +493,15 @@ el2_get_8390_hdr(struct device *dev, struct e8390_pkt_hdr *hdr, int ring_page) ...@@ -492,7 +493,15 @@ el2_get_8390_hdr(struct device *dev, struct e8390_pkt_hdr *hdr, int ring_page)
outb_p((ei_status.interface_num == 0 ? ECNTRL_THIN : ECNTRL_AUI) | ECNTRL_INPUT outb_p((ei_status.interface_num == 0 ? ECNTRL_THIN : ECNTRL_AUI) | ECNTRL_INPUT
| ECNTRL_START, E33G_CNTRL); | ECNTRL_START, E33G_CNTRL);
/* Header is less than 8 bytes, so we can ignore the FIFO. */ /* Header is < 8 bytes, so only check the FIFO at the beginning. */
fifo_watchdog = jiffies;
while ((inb(E33G_STATUS) & ESTAT_DPRDY) == 0) {
if (jiffies - fifo_watchdog > 2*HZ/100) {
printk("%s: FIFO blocked in el2_get_8390_hdr.\n", dev->name);
break;
}
}
for(i = 0; i < sizeof(struct e8390_pkt_hdr); i++) for(i = 0; i < sizeof(struct e8390_pkt_hdr); i++)
((char *)(hdr))[i] = inb_p(E33G_FIFOH); ((char *)(hdr))[i] = inb_p(E33G_FIFOH);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* be here without 3C505 technical reference provided by * be here without 3C505 technical reference provided by
* 3Com. * 3Com.
* *
* Version: @(#)3c505.c 0.8.3 12-Nov-95 * Version: @(#)3c505.c 0.8.4 17-Dec-95
* *
* Authors: Linux 3c505 device driver by * Authors: Linux 3c505 device driver by
* Craig Southeren, <craigs@ineluki.apana.org.au> * Craig Southeren, <craigs@ineluki.apana.org.au>
...@@ -103,7 +103,7 @@ static int elp_debug = 0; ...@@ -103,7 +103,7 @@ static int elp_debug = 0;
* 3 = messages when interrupts received * 3 = messages when interrupts received
*/ */
#define ELP_VERSION "0.8.3" #define ELP_VERSION "0.8.4"
/***************************************************************** /*****************************************************************
* *
...@@ -1284,9 +1284,13 @@ elp_sense (struct device * dev) ...@@ -1284,9 +1284,13 @@ elp_sense (struct device * dev)
int addr=dev->base_addr; int addr=dev->base_addr;
const char *name=dev->name; const char *name=dev->name;
long flags; long flags;
byte orig_HCR, orig_HSR;
byte orig_HCR=inb_control(addr), if (check_region(addr, 0xf))
orig_HSR=inb_status(addr); return -1;
orig_HCR=inb_control(addr);
orig_HSR=inb_status(addr);
if (elp_debug > 0) if (elp_debug > 0)
printk(search_msg, name, addr); printk(search_msg, name, addr);
...@@ -1472,6 +1476,7 @@ elplus_probe (struct device *dev) ...@@ -1472,6 +1476,7 @@ elplus_probe (struct device *dev)
elp_init(dev); elp_init(dev);
return 0; return 0;
} }
#ifdef MODULE #ifdef MODULE
static char devicename[9] = { 0, }; static char devicename[9] = { 0, };
static struct device dev_3c505 = { static struct device dev_3c505 = {
......
...@@ -174,9 +174,12 @@ struct pci_dev_info dev_info[] = { ...@@ -174,9 +174,12 @@ struct pci_dev_info dev_info[] = {
DEVICE( ADAPTEC, ADAPTEC_7871, "AIC-7871"), DEVICE( ADAPTEC, ADAPTEC_7871, "AIC-7871"),
DEVICE( ADAPTEC, ADAPTEC_7872, "AIC-7872"), DEVICE( ADAPTEC, ADAPTEC_7872, "AIC-7872"),
DEVICE( ADAPTEC, ADAPTEC_7873, "AIC-7873"), DEVICE( ADAPTEC, ADAPTEC_7873, "AIC-7873"),
DEVICE( ADAPTEC, ADAPTEC_7874, "AIC-7874"),
DEVICE( ADAPTEC, ADAPTEC_7880, "AIC-7880U"), DEVICE( ADAPTEC, ADAPTEC_7880, "AIC-7880U"),
DEVICE( ADAPTEC, ADAPTEC_7881, "AIC-7881U"), DEVICE( ADAPTEC, ADAPTEC_7881, "AIC-7881U"),
DEVICE( ADAPTEC, ADAPTEC_7882, "AIC-7882U"), DEVICE( ADAPTEC, ADAPTEC_7882, "AIC-7882U"),
DEVICE( ADAPTEC, ADAPTEC_7883, "AIC-7883U"),
DEVICE( ADAPTEC, ADAPTEC_7884, "AIC-7884U"),
DEVICE( ATRONICS, ATRONICS_2015, "IDE-2015PL"), DEVICE( ATRONICS, ATRONICS_2015, "IDE-2015PL"),
DEVICE( HER, HER_STING, "Stingray"), DEVICE( HER, HER_STING, "Stingray"),
DEVICE( HER, HER_STINGARK, "Stingray ARK 2000PV") DEVICE( HER, HER_STINGARK, "Stingray ARK 2000PV")
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
#undef A_NCR53c7xx_msg_reject #undef A_NCR53c7xx_msg_reject
#undef A_NCR53c7xx_sink #undef A_NCR53c7xx_sink
#undef A_NCR53c7xx_zero #undef A_NCR53c7xx_zero
#undef A_NOP_insn
#undef A_addr_reconnect_dsa_head
#undef A_addr_scratch #undef A_addr_scratch
#undef A_addr_sfbr
#undef A_addr_temp #undef A_addr_temp
#undef A_dmode_memory_to_memory #undef A_dmode_memory_to_memory
#undef A_dmode_memory_to_ncr #undef A_dmode_memory_to_ncr
#undef A_dmode_ncr_to_memory #undef A_dmode_ncr_to_memory
#undef A_dmode_ncr_to_ncr
#undef A_dsa_check_reselect #undef A_dsa_check_reselect
#undef A_dsa_cmdout #undef A_dsa_cmdout
#undef A_dsa_cmnd #undef A_dsa_cmnd
...@@ -20,19 +20,23 @@ ...@@ -20,19 +20,23 @@
#undef A_dsa_msgout #undef A_dsa_msgout
#undef A_dsa_msgout_other #undef A_dsa_msgout_other
#undef A_dsa_next #undef A_dsa_next
#undef A_dsa_restore_pointers
#undef A_dsa_save_data_pointer
#undef A_dsa_select #undef A_dsa_select
#undef A_dsa_status #undef A_dsa_status
#undef A_dsa_temp_dsa_next #undef A_dsa_temp_addr_array_value
#undef A_dsa_temp_jump_resume #undef A_dsa_temp_addr_dsa_value
#undef A_dsa_temp_addr_new_value
#undef A_dsa_temp_addr_next
#undef A_dsa_temp_addr_residual
#undef A_dsa_temp_addr_saved_pointer
#undef A_dsa_temp_addr_saved_residual
#undef A_dsa_temp_lun #undef A_dsa_temp_lun
#undef A_dsa_temp_next
#undef A_dsa_temp_sync #undef A_dsa_temp_sync
#undef A_dsa_temp_target #undef A_dsa_temp_target
#undef A_int_debug_break #undef A_int_debug_break
#undef A_int_debug_dsa_loaded #undef A_int_debug_panic
#undef A_int_debug_head
#undef A_int_debug_idle
#undef A_int_debug_reselected
#undef A_int_debug_scheduled
#undef A_int_err_check_condition #undef A_int_err_check_condition
#undef A_int_err_no_phase #undef A_int_err_no_phase
#undef A_int_err_selected #undef A_int_err_selected
...@@ -50,34 +54,44 @@ ...@@ -50,34 +54,44 @@
#undef A_int_test_1 #undef A_int_test_1
#undef A_int_test_2 #undef A_int_test_2
#undef A_int_test_3 #undef A_int_test_3
#undef A_issue_dsa_head
#undef A_msg_buf #undef A_msg_buf
#undef A_reconnect_dsa_head #undef A_reconnect_dsa_head
#undef A_reselected_identify #undef A_reselected_identify
#undef A_reselected_tag #undef A_reselected_tag
#undef A_schedule
#undef A_test_dest #undef A_test_dest
#undef A_test_src #undef A_test_src
#undef Ent_accept_message #undef Ent_accept_message
#undef Ent_cmdout_cmdout #undef Ent_cmdout_cmdout
#undef Ent_command_complete #undef Ent_command_complete
#undef Ent_command_complete_msgin #undef Ent_command_complete_msgin
#undef Ent_data_transfer
#undef Ent_datain_to_jump
#undef Ent_debug_break #undef Ent_debug_break
#undef Ent_dsa_code_begin
#undef Ent_dsa_code_check_reselect #undef Ent_dsa_code_check_reselect
#undef Ent_dsa_code_fix_jump
#undef Ent_dsa_code_restore_pointers
#undef Ent_dsa_code_save_data_pointer
#undef Ent_dsa_code_template #undef Ent_dsa_code_template
#undef Ent_dsa_code_template_end #undef Ent_dsa_code_template_end
#undef Ent_dsa_jump_resume
#undef Ent_dsa_schedule #undef Ent_dsa_schedule
#undef Ent_dsa_zero #undef Ent_dsa_zero
#undef Ent_end_data_transfer
#undef Ent_initiator_abort #undef Ent_initiator_abort
#undef Ent_msg_in #undef Ent_msg_in
#undef Ent_msg_in_restart
#undef Ent_other_in
#undef Ent_other_out
#undef Ent_other_transfer #undef Ent_other_transfer
#undef Ent_reject_message #undef Ent_reject_message
#undef Ent_reselected_check_next #undef Ent_reselected_check_next
#undef Ent_reselected_ok
#undef Ent_respond_message #undef Ent_respond_message
#undef Ent_schedule
#undef Ent_select #undef Ent_select
#undef Ent_select_msgout #undef Ent_select_msgout
#undef Ent_target_abort #undef Ent_target_abort
#undef Ent_test_1 #undef Ent_test_1
#undef Ent_test_2 #undef Ent_test_2
#undef Ent_test_2_msgout #undef Ent_test_2_msgout
#undef Ent_wait_reselect
This diff is collapsed.
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define _AHA152X_H #define _AHA152X_H
/* /*
* $Id: aha152x.h,v 1.11 1995/12/07 01:03:20 fischer Exp root $ * $Id: aha152x.h,v 1.12 1995/12/07 01:03:48 fischer Exp fischer $
*/ */
#if defined(__KERNEL__) #if defined(__KERNEL__)
...@@ -23,7 +23,7 @@ int aha152x_proc_info(char *buffer, char **start, off_t offset, int length, int ...@@ -23,7 +23,7 @@ int aha152x_proc_info(char *buffer, char **start, off_t offset, int length, int
(unless we support more than 1 cmd_per_lun this should do) */ (unless we support more than 1 cmd_per_lun this should do) */
#define AHA152X_MAXQUEUE 7 #define AHA152X_MAXQUEUE 7
#define AHA152X_REVID "Adaptec 152x SCSI driver; $Revision: 1.11 $" #define AHA152X_REVID "Adaptec 152x SCSI driver; $Revision: 1.12 $"
extern struct proc_dir_entry proc_scsi_aha152x; extern struct proc_dir_entry proc_scsi_aha152x;
......
This diff is collapsed.
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
* *
* Dean W. Gehnert, deang@ims.com, 08/30/95 * Dean W. Gehnert, deang@ims.com, 08/30/95
* *
* $Id: aic7xxx_proc.c,v 2.2 1995/09/12 05:24:37 deang Exp $ * $Id: aic7xxx_proc.c,v 2.5 1995/12/16 23:11:55 deang Exp $
*-M*************************************************************************/ *-M*************************************************************************/
#define BLS buffer + len + size #define BLS buffer + len + size
...@@ -82,7 +82,6 @@ aic7xxx_proc_info(char *buffer, char **start, off_t offset, int length, ...@@ -82,7 +82,6 @@ aic7xxx_proc_info(char *buffer, char **start, off_t offset, int length,
int len = 0; int len = 0;
off_t begin = 0; off_t begin = 0;
off_t pos = 0; off_t pos = 0;
static char *board_name[] = {"None", "274x", "284x", "7870", "7850", "7872"};
static char *bus_name[] = {"Single", "Twin", "Wide"}; static char *bus_name[] = {"Single", "Twin", "Wide"};
HBAptr = NULL; HBAptr = NULL;
...@@ -157,23 +156,18 @@ aic7xxx_proc_info(char *buffer, char **start, off_t offset, int length, ...@@ -157,23 +156,18 @@ aic7xxx_proc_info(char *buffer, char **start, off_t offset, int length,
size += sprintf(BLS, " AIC7XXX_PROC_STATS : Enabled\n"); size += sprintf(BLS, " AIC7XXX_PROC_STATS : Enabled\n");
#else #else
size += sprintf(BLS, " AIC7XXX_PROC_STATS : Disabled\n"); size += sprintf(BLS, " AIC7XXX_PROC_STATS : Disabled\n");
#endif
#ifdef AIC7XXX_POLL
size += sprintf(BLS, " AIC7XXX_POLL : Enabled\n");
#else
size += sprintf(BLS, " AIC7XXX_POLL : Disabled\n");
#endif #endif
len += size; pos = begin + len; size = 0; len += size; pos = begin + len; size = 0;
size += sprintf(BLS, "\n"); size += sprintf(BLS, "\n");
size += sprintf(BLS, "Adapter Configuration:\n"); size += sprintf(BLS, "Adapter Configuration:\n");
size += sprintf(BLS, " SCSI Adapter: %s\n", board_name[p->type]); size += sprintf(BLS, " SCSI Adapter: %s\n", board_names[p->type]);
size += sprintf(BLS, " Host Bus: %s\n", bus_name[p->bus_type]); size += sprintf(BLS, " Host Bus: %s\n", bus_name[p->bus_type]);
size += sprintf(BLS, " Base IO: %#.4x\n", p->base); size += sprintf(BLS, " Base IO: %#.4x\n", p->base);
size += sprintf(BLS, " IRQ: %d\n", HBAptr->irq); size += sprintf(BLS, " IRQ: %d\n", HBAptr->irq);
size += sprintf(BLS, " SCB: %d (%d)\n", p->numscb, p->maxscb); size += sprintf(BLS, " SCB: %d (%d)\n", p->numscb, p->maxscb);
size += sprintf(BLS, " Interrupts: %d", p->isr_count); size += sprintf(BLS, " Interrupts: %d", p->isr_count);
if ((p->type == AIC_274x) || (p->type == AIC_284x)) if (p->chip_type == AIC_777x)
{ {
size += sprintf(BLS, " %s\n", size += sprintf(BLS, " %s\n",
(p->pause & IRQMS) ? "(Level Sensitive)" : "(Edge Triggered)"); (p->pause & IRQMS) ? "(Level Sensitive)" : "(Edge Triggered)");
...@@ -190,6 +184,8 @@ aic7xxx_proc_info(char *buffer, char **start, off_t offset, int length, ...@@ -190,6 +184,8 @@ aic7xxx_proc_info(char *buffer, char **start, off_t offset, int length,
p->extended ? "En" : "Dis"); p->extended ? "En" : "Dis");
size += sprintf(BLS, " SCSI Bus Reset: %sabled\n", size += sprintf(BLS, " SCSI Bus Reset: %sabled\n",
aic7xxx_no_reset ? "Dis" : "En"); aic7xxx_no_reset ? "Dis" : "En");
size += sprintf(BLS, " Ultra SCSI: %sabled\n",
p->ultra_enabled ? "En" : "Dis");
len += size; pos = begin + len; size = 0; len += size; pos = begin + len; size = 0;
#ifdef AIC7XXX_PROC_STATS #ifdef AIC7XXX_PROC_STATS
......
...@@ -662,7 +662,7 @@ void refill_freelist(int size) ...@@ -662,7 +662,7 @@ void refill_freelist(int size)
continue; continue;
}; };
if (bh->b_count || bh->b_size != size) if (bh->b_count || buffer_protected(bh) || bh->b_size != size)
continue; continue;
/* Buffers are written in the order they are /* Buffers are written in the order they are
...@@ -840,10 +840,6 @@ void __bforget(struct buffer_head * buf) ...@@ -840,10 +840,6 @@ void __bforget(struct buffer_head * buf)
printk("Aieee... bforget(): shared buffer\n"); printk("Aieee... bforget(): shared buffer\n");
return; return;
} }
if (buffer_protected(buf)) {
printk("Aieee... bforget(): protected buffer\n");
return;
}
mark_buffer_clean(buf); mark_buffer_clean(buf);
buf->b_count = 0; buf->b_count = 0;
remove_from_queues(buf); remove_from_queues(buf);
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <linux/mount.h> #include <linux/mount.h>
#include <asm/segment.h> #include <asm/segment.h>
#include <sys/sysmacros.h>
#define __DQUOT_VERSION__ "dquot_5.6.0" #define __DQUOT_VERSION__ "dquot_5.6.0"
......
...@@ -50,14 +50,14 @@ ...@@ -50,14 +50,14 @@
#include <linux/nfs.h> #include <linux/nfs.h>
#include <linux/nfs_fs.h> #include <linux/nfs_fs.h>
#include <linux/nfs_mount.h> #include <linux/nfs_mount.h>
#include <netinet/in.h> #include <linux/in.h>
#include <net/route.h> #include <net/route.h>
/* Range of privileged ports */ /* Range of privileged ports */
#define STARTPORT 600 #define STARTPORT 600
#define ENDPORT (IPPORT_RESERVED - 1) #define ENDPORT 1023
#define NPORTS (ENDPORT - STARTPORT + 1) #define NPORTS (ENDPORT - STARTPORT + 1)
......
...@@ -463,9 +463,12 @@ ...@@ -463,9 +463,12 @@
#define PCI_DEVICE_ID_ADAPTEC_7871 0x7178 #define PCI_DEVICE_ID_ADAPTEC_7871 0x7178
#define PCI_DEVICE_ID_ADAPTEC_7872 0x7278 #define PCI_DEVICE_ID_ADAPTEC_7872 0x7278
#define PCI_DEVICE_ID_ADAPTEC_7873 0x7378 #define PCI_DEVICE_ID_ADAPTEC_7873 0x7378
#define PCI_DEVICE_ID_ADAPTEC_7874 0x7478
#define PCI_DEVICE_ID_ADAPTEC_7880 0x8078 #define PCI_DEVICE_ID_ADAPTEC_7880 0x8078
#define PCI_DEVICE_ID_ADAPTEC_7881 0x8178 #define PCI_DEVICE_ID_ADAPTEC_7881 0x8178
#define PCI_DEVICE_ID_ADAPTEC_7882 0x8278 #define PCI_DEVICE_ID_ADAPTEC_7882 0x8278
#define PCI_DEVICE_ID_ADAPTEC_7883 0x8378
#define PCI_DEVICE_ID_ADAPTEC_7884 0x8478
#define PCI_VENDOR_ID_ATRONICS 0x907f #define PCI_VENDOR_ID_ATRONICS 0x907f
#define PCI_DEVICE_ID_ATRONICS_2015 0x2015 #define PCI_DEVICE_ID_ATRONICS_2015 0x2015
......
/* $Id: scc.h,v 1.11 1995/08/24 21:06:24 jreuter Exp jreuter $ */ /* $Id: scc.h,v 1.15 1995/11/16 20:19:26 jreuter Exp jreuter $ */
#ifndef _SCC_H #ifndef _SCC_H
#define _SCC_H #define _SCC_H
...@@ -12,28 +12,22 @@ ...@@ -12,28 +12,22 @@
#define DRSI 0x08 /* hardware type for DRSI PC*Packet card */ #define DRSI 0x08 /* hardware type for DRSI PC*Packet card */
#define BAYCOM 0x10 /* hardware type for BayCom (U)SCC */ #define BAYCOM 0x10 /* hardware type for BayCom (U)SCC */
/* Constants */ /* Paranoia check... */
#define MAXSCC 4 /* number of max. supported chips */
#define MAX_IBUFS 200 /* change this if you run out of memory */
#define BUFSIZE 128 /* must not exceed 4096 */
#define TPS 25 /* scc_timer(): Ticks Per Second */
#define SCC_TIMER 3
#define SCC_PARANOIA_CHECK /* tell the user if something is going wrong */ #define SCC_PARANOIA_CHECK /* tell the user if something is going wrong */
/* ioctl() commands */ /* ioctl() commands */
/* !!! NEW VALUES !!! */ #define TIOCSCCCFG 0x2200 /* set hardware parameters */
#define TIOCSCCINI 0x2201 /* init driver */
#define TIOCCHANINI 0x2202 /* init channel */
#define TIOCSCCINI 0x5470 /* init driver */ #define TIOCCHANMEM 0x2210 /* adjust buffer pools */
#define TIOCCHANINI 0x5471 /* init channel */
#define TIOCGKISS 0x5472 /* get kiss parameter */ #define TIOCGKISS 0x2282 /* get kiss parameter */
#define TIOCSKISS 0x5473 /* set kiss parameter */ #define TIOCSKISS 0x2283 /* set kiss parameter */
#define TIOCSCCSTAT 0x5474 /* get scc status */ #define TIOCSCCSTAT 0x2284 /* get scc status */
/* magic number */ /* magic number */
...@@ -106,9 +100,6 @@ ...@@ -106,9 +100,6 @@
#define BT_RECEIVE 1 /* buffer allocated by receive */ #define BT_RECEIVE 1 /* buffer allocated by receive */
#define BT_TRANSMIT 2 /* buffer allocated by transmit */ #define BT_TRANSMIT 2 /* buffer allocated by transmit */
#define QUEUE_THRES MAX_IBUFS/20 /* maximum amount of packets being queued */
#define QUEUE_HYST 3 /* leave QUEUE_HYST packets untouched */
#define NULLBUF (struct mbuf *)0 #define NULLBUF (struct mbuf *)0
#define NULLBUFP (struct mbuf **)0 #define NULLBUFP (struct mbuf **)0
...@@ -134,30 +125,15 @@ typedef unsigned short ioaddr; /* old def */ ...@@ -134,30 +125,15 @@ typedef unsigned short ioaddr; /* old def */
/* Basic message buffer structure */ /* Basic message buffer structure */
/* looks familiar? Hmm, yes... */
struct mbuf { struct mbuf {
struct mbuf *next; /* Links mbufs belonging to single packets */ struct mbuf *next; /* Link to next buffer */
struct mbuf *anext; /* Links packets on queues */ struct mbuf *prev; /* Link to previous buffer */
char type; /* who allocated this buffer? */
int time_out; /* unimplemented yet */
int size; /* Size of associated data buffer */ int cnt; /* Number of bytes stored in buffer */
int refcnt; /* Reference count */ unsigned char *rw_ptr; /* read-write pointer */
struct mbuf *dup; /* Pointer to duplicated mbuf */ unsigned char data[0]; /* anchor for allocated buffer */
char data[BUFSIZE]; /* Active working pointers */
int cnt;
int in_use;
}; };
struct sccbuf {
struct mbuf *bp;
int inuse;
};
/* SCC channel control structure for KISS */ /* SCC channel control structure for KISS */
struct scc_kiss { struct scc_kiss {
...@@ -203,9 +179,9 @@ struct scc_stat { ...@@ -203,9 +179,9 @@ struct scc_stat {
int tx_queued; /* tx frames enqueued */ int tx_queued; /* tx frames enqueued */
int rx_queued; /* rx frames enqueued */ int rx_queued; /* rx frames enqueued */
unsigned int rx_alloc; /* allocated rx_buffers */ unsigned int rxbuffers; /* allocated rx_buffers */
unsigned int tx_alloc; /* allocated tx_buffers */ unsigned int txbuffers; /* allocated tx_buffers */
unsigned int used_buf; /* used buffers (should be rx_alloc+tx_alloc) */ unsigned int bufsize; /* used buffersize */
}; };
...@@ -220,6 +196,33 @@ struct ioctl_command { ...@@ -220,6 +196,33 @@ struct ioctl_command {
unsigned param; /* KISS-Param */ unsigned param; /* KISS-Param */
}; };
/* currently unused */
struct scc_hw_config {
io_port data_a; /* data port channel A */
io_port ctrl_a; /* control port channel A */
io_port data_b; /* data port channel B */
io_port ctrl_b; /* control port channel B */
io_port vector_latch; /* INTACK-Latch (#) */
io_port special; /* special function port */
int irq; /* irq */
long clock; /* clock */
char option; /* command for function port */
char brand; /* hardware type */
char escc; /* use ext. features of a 8580/85180/85280 */
};
struct scc_mem_config {
unsigned int rxbuffers;
unsigned int txbuffers;
unsigned int bufsize;
};
/* (#) only one INTACK latch allowed. */
/* SCC channel structure */ /* SCC channel structure */
struct scc_channel { struct scc_channel {
...@@ -227,10 +230,17 @@ struct scc_channel { ...@@ -227,10 +230,17 @@ struct scc_channel {
int init; /* channel exists? */ int init; /* channel exists? */
struct tty_struct *tty; /* link to tty control structure */ struct tty_struct *tty; /* link to tty control structure */
unsigned char tty_opened; char tty_opened; /* No. of open() calls... */
char throttled; /* driver is throttled */
char brand; /* manufacturer of the board */
long clock; /* used clock */
io_port ctrl; /* I/O address of CONTROL register */ io_port ctrl; /* I/O address of CONTROL register */
io_port data; /* I/O address of DATA register */ io_port data; /* I/O address of DATA register */
io_port special; /* I/O address of special function port */
char option;
char enhanced; /* Enhanced SCC support */ char enhanced; /* Enhanced SCC support */
unsigned char wreg[16]; /* Copy of last written value in WRx */ unsigned char wreg[16]; /* Copy of last written value in WRx */
...@@ -239,20 +249,25 @@ struct scc_channel { ...@@ -239,20 +249,25 @@ struct scc_channel {
struct scc_kiss kiss; /* control structure for KISS params */ struct scc_kiss kiss; /* control structure for KISS params */
struct scc_stat stat; /* statistical information */ struct scc_stat stat; /* statistical information */
struct scc_modem modem; /* modem information */ struct scc_modem modem; /* modem information */
struct mbuf *rbp; /* rx: Head of mbuf chain being filled */ struct mbuf *rx_buffer_pool; /* free buffers for rx/tx frames are */
struct mbuf *rbp1; /* rx: Pointer to mbuf currently being written */ struct mbuf *tx_buffer_pool; /* linked in these ring chains */
struct mbuf *rcvq; /* Pointer to mbuf packets currently received */
struct mbuf *rx_queue; /* chain of received frames */
struct mbuf *sndq; /* tx: Packets awaiting transmission */ struct mbuf *tx_queue; /* chain of frames due to transmit */
struct mbuf *tbp; /* tx: Transmit mbuf being sent */ struct mbuf *rx_bp; /* pointer to frame currently received */
struct mbuf *tx_bp; /* pointer to frame currently transmitted */
struct mbuf *sndq1; /* Pointer to mbuf currently under construction */
struct mbuf *sndq2; /* Pointer to mbuf currently under construction */ struct mbuf *kiss_decode_bp; /* frame we are receiving from tty */
struct mbuf *kiss_encode_bp; /* frame we are sending to tty */
/* Timer */ /* Timer */
struct timer_list tx_t; /* tx timer for this channel */
struct timer_list rx_t; /* rx timer */
/* rx timer counters */
unsigned int t_dwait; /* wait time (DWAIT) */ unsigned int t_dwait; /* wait time (DWAIT) */
unsigned int t_slot; /* channel sample frequency */ unsigned int t_slot; /* channel sample frequency */
unsigned int t_txdel; /* TX delay */ unsigned int t_txdel; /* TX delay */
...@@ -263,14 +278,6 @@ struct scc_channel { ...@@ -263,14 +278,6 @@ struct scc_channel {
unsigned int t_mbusy; /* time until defer if channel busy */ unsigned int t_mbusy; /* time until defer if channel busy */
}; };
/* some variables for scc_rx_timer() bound together in a struct */
struct rx_timer_CB {
char lock;
unsigned long expires;
struct scc_channel *scc;
};
/* 8530 Serial Communications Controller Register definitions */ /* 8530 Serial Communications Controller Register definitions */
#define FLAG 0x7e #define FLAG 0x7e
...@@ -557,4 +564,8 @@ struct rx_timer_CB { ...@@ -557,4 +564,8 @@ struct rx_timer_CB {
/* global functions */ /* global functions */
#ifdef PREV_LINUX_1_3_33
extern long scc_init(long kmem_start);
#else
extern int scc_init(void); extern int scc_init(void);
#endif
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <linux/sem.h> #include <linux/sem.h>
#include <linux/minix_fs.h> #include <linux/minix_fs.h>
#include <linux/ext2_fs.h> #include <linux/ext2_fs.h>
#include <linux/random.h>
#ifdef __alpha__ #ifdef __alpha__
# include <asm/io.h> # include <asm/io.h>
...@@ -241,6 +242,7 @@ struct symbol_table symbol_table = { ...@@ -241,6 +242,7 @@ struct symbol_table symbol_table = {
X(dcache_lookup), X(dcache_lookup),
X(dcache_add), X(dcache_add),
X(aout_core_dump), X(aout_core_dump),
X(add_blkdev_randomness),
/* device registration */ /* device registration */
X(register_chrdev), X(register_chrdev),
...@@ -388,6 +390,7 @@ struct symbol_table symbol_table = { ...@@ -388,6 +390,7 @@ struct symbol_table symbol_table = {
X(rarp_ioctl_hook), X(rarp_ioctl_hook),
X(init_etherdev), X(init_etherdev),
X(ip_rt_route), X(ip_rt_route),
X(ip_rt_put),
X(arp_send), X(arp_send),
#ifdef CONFIG_IP_FORWARD #ifdef CONFIG_IP_FORWARD
X(ip_forward), X(ip_forward),
...@@ -549,6 +552,8 @@ struct symbol_table symbol_table = { ...@@ -549,6 +552,8 @@ struct symbol_table symbol_table = {
X(generate_cluster), X(generate_cluster),
X(proc_scsi), X(proc_scsi),
X(proc_scsi_inode_operations), X(proc_scsi_inode_operations),
X(proc_net_inode_operations),
X(proc_net),
#endif #endif
/******************************************************** /********************************************************
* Do not add anything below this line, * Do not add anything below this line,
......
...@@ -309,9 +309,10 @@ static inline void forget_pte(pte_t page) ...@@ -309,9 +309,10 @@ static inline void forget_pte(pte_t page)
if (pte_none(page)) if (pte_none(page))
return; return;
if (pte_present(page)) { if (pte_present(page)) {
free_page(pte_page(page)); unsigned long addr = pte_page(page);
if (mem_map[MAP_NR(pte_page(page))].reserved) if (addr >= high_memory || mem_map[MAP_NR(addr)].reserved)
return; return;
free_page(addr);
if (current->mm->rss <= 0) if (current->mm->rss <= 0)
return; return;
current->mm->rss--; current->mm->rss--;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment