Commit 26265657 authored by Linus Torvalds's avatar Linus Torvalds

Import 1.3.79

parent 24747a70
This diff is collapsed.
Video Mode Selection Support 2.5 Video Mode Selection Support 2.6
(c) 1995, 1996 Martin Mares, <mj@k332.feld.cvut.cz> (c) 1995, 1996 Martin Mares, <mj@k332.feld.cvut.cz>
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
...@@ -223,3 +223,5 @@ this must be done manually -- no autodetection mechanisms are available. ...@@ -223,3 +223,5 @@ this must be done manually -- no autodetection mechanisms are available.
only with some loaders now. only with some loaders now.
Added a Tseng 132x60 mode. Added a Tseng 132x60 mode.
2.5 (19-Mar-96) Fixed a VESA mode scanning bug introduced in 2.4. 2.5 (19-Mar-96) Fixed a VESA mode scanning bug introduced in 2.4.
2.6 (25-Mar-96) Some VESA BIOS errors not reported -- it fixes error reports on
several cards with broken VESA code (e.g., ATI VGA).
VERSION = 1 VERSION = 1
PATCHLEVEL = 3 PATCHLEVEL = 3
SUBLEVEL = 78 SUBLEVEL = 79
ARCH = i386 ARCH = i386
......
! !
! Display adapter & video mode setup, version 2.5 (19-Mar-96) ! Display adapter & video mode setup, version 2.6 (25-Mar-96)
! !
! Copyright (C) 1995, 1996 Martin Mares <mj@k332.feld.cvut.cz> ! Copyright (C) 1995, 1996 Martin Mares <mj@k332.feld.cvut.cz>
! Based on the original setup.S code (C) Linus Torvalds ! Based on the original setup.S code (C) Linus Torvalds
...@@ -779,7 +779,7 @@ vesa2: push cx ...@@ -779,7 +779,7 @@ vesa2: push cx
add bh,#VIDEO_FIRST_VESA>>8 add bh,#VIDEO_FIRST_VESA>>8
pop cx pop cx
cmp ax,#0x004f cmp ax,#0x004f
jnz vesae jnz vesan ! Don't report errors (buggy BIOSES :-[ )
mov al,(di) ! Check capabilities. We require mov al,(di) ! Check capabilities. We require
and al,#0x19 ! a color text mode. and al,#0x19 ! a color text mode.
cmp al,#0x09 cmp al,#0x09
......
...@@ -225,6 +225,16 @@ static const char * i586model(unsigned int nr) ...@@ -225,6 +225,16 @@ static const char * i586model(unsigned int nr)
return NULL; return NULL;
} }
static const char * i686model(unsigned int nr)
{
static const char *model[] = {
"PPro A-step", "Pentium Pro"
};
if (nr < sizeof(model)/sizeof(char *))
return model[nr];
return NULL;
}
static const char * getmodel(int x86, int model) static const char * getmodel(int x86, int model)
{ {
const char *p = NULL; const char *p = NULL;
...@@ -236,6 +246,9 @@ static const char * getmodel(int x86, int model) ...@@ -236,6 +246,9 @@ static const char * getmodel(int x86, int model)
case 5: case 5:
p = i586model(model); p = i586model(model);
break; break;
case 6:
p = i686model(model);
break;
} }
if (p) if (p)
return p; return p;
...@@ -294,12 +307,15 @@ int get_cpuinfo(char * buffer) ...@@ -294,12 +307,15 @@ int get_cpuinfo(char * buffer)
"fdiv_bug\t: %s\n" "fdiv_bug\t: %s\n"
"hlt_bug\t\t: %s\n" "hlt_bug\t\t: %s\n"
"fpu\t\t: %s\n" "fpu\t\t: %s\n"
"fpu_exception\t: %s\n"
"cpuid\t\t: %s\n" "cpuid\t\t: %s\n"
"wp\t\t: %s\n" "wp\t\t: %s\n"
"flags\t\t:", "flags\t\t:",
CD(fdiv_bug) ? "yes" : "no", CD(fdiv_bug) ? "yes" : "no",
CD(hlt_works_ok) ? "no" : "yes", CD(hlt_works_ok) ? "no" : "yes",
CD(hard_math) ? "yes" : "no", CD(hard_math) ? "yes" : "no",
(CD(hard_math) && ignore_irq13)
? "yes" : "no",
CD(have_cpuid) ? "yes" : "no", CD(have_cpuid) ? "yes" : "no",
CD(wp_works_ok) ? "yes" : "no"); CD(wp_works_ok) ? "yes" : "no");
......
...@@ -2597,7 +2597,7 @@ static void redo_fd_request(void) ...@@ -2597,7 +2597,7 @@ static void redo_fd_request(void)
} }
while(1){ while(1){
if (!CURRENT || CURRENT_PLUGGED) { if (!CURRENT) {
CLEAR_INTR; CLEAR_INTR;
unlock_fdc(); unlock_fdc();
return; return;
......
...@@ -1469,8 +1469,6 @@ void ide_do_request (ide_hwgroup_t *hwgroup) ...@@ -1469,8 +1469,6 @@ void ide_do_request (ide_hwgroup_t *hwgroup)
*/ */
hwif = hwgroup->next_hwif; hwif = hwgroup->next_hwif;
do { do {
if (IS_PLUGGED(blk_dev + hwif->major))
continue;
rq = blk_dev[hwif->major].current_request; rq = blk_dev[hwif->major].current_request;
if (rq != NULL && rq->rq_status != RQ_INACTIVE) if (rq != NULL && rq->rq_status != RQ_INACTIVE)
goto got_rq; goto got_rq;
......
...@@ -85,8 +85,9 @@ static void unplug_device(void * data) ...@@ -85,8 +85,9 @@ static void unplug_device(void * data)
save_flags(flags); save_flags(flags);
cli(); cli();
if (dev->current_request) dev->current_request = dev->plug.next;
(dev->request_fn)(); dev->plug.next = NULL;
(dev->request_fn)();
restore_flags(flags); restore_flags(flags);
} }
...@@ -94,11 +95,20 @@ static void unplug_device(void * data) ...@@ -94,11 +95,20 @@ static void unplug_device(void * data)
* "plug" the device if there are no outstanding requests: this will * "plug" the device if there are no outstanding requests: this will
* force the transfer to start only after we have put all the requests * force the transfer to start only after we have put all the requests
* on the list. * on the list.
*
* Note! We can do the check without interrupts off, because interrupts
* will never add a new request to the queue, only take requests off..
*/ */
static inline void plug_device(struct blk_dev_struct * dev) static inline void plug_device(struct blk_dev_struct * dev)
{ {
if (!dev->current_request && !IS_PLUGGED(dev)) { if (!dev->current_request) {
unsigned long flags;
save_flags(flags);
cli();
dev->current_request = &dev->plug;
queue_task_irq_off(&dev->plug_tq, &tq_scheduler); queue_task_irq_off(&dev->plug_tq, &tq_scheduler);
restore_flags(flags);
} }
} }
...@@ -250,8 +260,7 @@ void add_request(struct blk_dev_struct * dev, struct request * req) ...@@ -250,8 +260,7 @@ void add_request(struct blk_dev_struct * dev, struct request * req)
if (!(tmp = dev->current_request)) { if (!(tmp = dev->current_request)) {
dev->current_request = req; dev->current_request = req;
up (&request_lock); up (&request_lock);
if (!IS_PLUGGED(dev)) (dev->request_fn)();
(dev->request_fn)();
sti(); sti();
return; return;
} }
...@@ -266,7 +275,7 @@ void add_request(struct blk_dev_struct * dev, struct request * req) ...@@ -266,7 +275,7 @@ void add_request(struct blk_dev_struct * dev, struct request * req)
up (&request_lock); up (&request_lock);
/* for SCSI devices, call request_fn unconditionally */ /* for SCSI devices, call request_fn unconditionally */
if (!IS_PLUGGED(dev) && scsi_major(MAJOR(req->rq_dev)) && MAJOR(req->rq_dev)!=MD_MAJOR) if (scsi_major(MAJOR(req->rq_dev)) && MAJOR(req->rq_dev)!=MD_MAJOR)
(dev->request_fn)(); (dev->request_fn)();
sti(); sti();
...@@ -609,6 +618,9 @@ int blk_dev_init(void) ...@@ -609,6 +618,9 @@ int blk_dev_init(void)
for (dev = blk_dev + MAX_BLKDEV; dev-- != blk_dev;) { for (dev = blk_dev + MAX_BLKDEV; dev-- != blk_dev;) {
dev->request_fn = NULL; dev->request_fn = NULL;
dev->current_request = NULL; dev->current_request = NULL;
dev->plug.rq_status = RQ_INACTIVE;
dev->plug.cmd = -1;
dev->plug.next = NULL;
dev->plug_tq.routine = &unplug_device; dev->plug_tq.routine = &unplug_device;
dev->plug_tq.data = dev; dev->plug_tq.data = dev;
} }
......
...@@ -1525,7 +1525,7 @@ do_cdu31a_request(void) ...@@ -1525,7 +1525,7 @@ do_cdu31a_request(void)
* The beginning here is stolen from the hard disk driver. I hope * The beginning here is stolen from the hard disk driver. I hope
* it's right. * it's right.
*/ */
if (!(CURRENT) || CURRENT_PLUGGED || CURRENT->rq_status == RQ_INACTIVE) if (!(CURRENT) || CURRENT->rq_status == RQ_INACTIVE)
{ {
goto end_do_cdu31a_request; goto end_do_cdu31a_request;
} }
......
...@@ -1654,7 +1654,7 @@ sonycd535_setup(char *strings, int *ints) ...@@ -1654,7 +1654,7 @@ sonycd535_setup(char *strings, int *ints)
* then call with io base of 0 * then call with io base of 0
*/ */
if (ints[0] > 0) if (ints[0] > 0)
if (ints[0] != 0) if (ints[1] != 0)
sony535_cd_base_io = ints[1]; sony535_cd_base_io = ints[1];
if (ints[0] > 1) if (ints[0] > 1)
sony535_irq_used = ints[2]; sony535_irq_used = ints[2];
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
Stallion Multiport Serial Drivers Stallion Multiport Serial Drivers
--------------------------------- ---------------------------------
Version: 1.0.6 Version: 1.0.8
Date: 11MAR96 Date: 25MAR96
Author: Greg Ungerer (gerg@stallion.oz.au) Author: Greg Ungerer (gerg@stallion.oz.au)
...@@ -12,31 +12,31 @@ Author: Greg Ungerer (gerg@stallion.oz.au) ...@@ -12,31 +12,31 @@ Author: Greg Ungerer (gerg@stallion.oz.au)
There are two drivers that work with the different families of Stallion There are two drivers that work with the different families of Stallion
multiport serial boards. One is for the Stallion smart boards - that is multiport serial boards. One is for the Stallion smart boards - that is
EasyIO and EasyConnection 8/32, the other for the true Stallion intelligent EasyIO and EasyConnection 8/32, the other for the true Stallion intelligent
multiport boards - Stallion, Brumby, ONboard and EasyConnection 8/64. multiport boards - EasyConnection 8/64, ONboard, Brumby and Stallion.
If you are using any of the Stallion intelligent multiport boards (Brumby, If you are using any of the Stallion intelligent multiport boards (Brumby,
ONboard, Stallion, EasyConnection 8/64) with Linux you will need to get the ONboard, Stallion, EasyConnection 8/64) with Linux you will need to get the
driver utility package. This package is available at most of the Linux driver utility package. This package is available at most of the Linux
archive sites (and on CD's that contain these archives). The file will be archive sites (and on CD's that contain these archives). The file will be
called stallion-X.X.X.tar.gz where X.X.X will be the version number. In called stallion-X.X.X.tar.gz where X.X.X will be the version number. In
particular this package contains the board embeded executable images that particular this package contains the board embedded executable images that
are required for these boards. It also contains the downloader program. are required for these boards. It also contains the downloader program.
These boards cannot be used without this. These boards cannot be used without this.
The following ftp sites (and their mirrors) definately have the stallion The following ftp sites (and their mirrors) definitely have the stallion
driver utility package: ftp.stallion.com, tsx-11.mit.edu, sunsite.unc.edu. driver utility package: ftp.stallion.com, tsx-11.mit.edu, sunsite.unc.edu.
ftp.stallion.com:/drivers/ata5/Linux/stallion-1.0.1.tar.gz ftp.stallion.com:/drivers/ata5/Linux/stallion-1.0.7.tar.gz
tsx-11.mit.edu:/pub/linux/BETA/serial/stallion/stallion-1.0.1.tar.gz tsx-11.mit.edu:/pub/linux/BETA/serial/stallion/stallion-1.0.7.tar.gz
sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-1.0.1.tar.gz sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-1.0.7.tar.gz
If you are using the EasyIO or EasyConnection 8/32 boards then you don't If you are using the EasyIO or EasyConnection 8/32 boards then you don't
need this package. Although it does have a handy script to create the need this package. Although it does have a handy script to create the
/dev device nodes for these boards. /dev device nodes for these boards, and a serial stats display program.
If you require DIP switch settings, EISA/MCA configuration files, or any If you require DIP switch settings, EISA/MCA configuration files, or any
other information related to Stallion boards then have a look at other information related to Stallion boards then have a look at Stallion's
http://www.stallion.com. web pages at http://www.stallion.com.
...@@ -265,13 +265,15 @@ by Greg Hankins. It will explain everything you need to know! ...@@ -265,13 +265,15 @@ by Greg Hankins. It will explain everything you need to know!
You can use both drivers at once if you have a mix of board types installed You can use both drivers at once if you have a mix of board types installed
in a system. However to do this you will need to change the major numbers in a system. However to do this you will need to change the major numbers
used by one of the drivers. Currently both drivers use major numbers 24 and used by one of the drivers. Currently both drivers use major numbers 24, 25
25 for their port devices. Change one driver to use some other major numbers, and 28 for their devices. Change one driver to use some other major numbers,
and then modify the mkdevnods script to make device nodes based on those new and then modify the mkdevnods script to make device nodes based on those new
major numbers. For example, you could change the stallion.c driver to use major numbers. For example, you could change the istallion.c driver to use
major numbers 30 and 31 (don't use 28, it's used by istallion.c driver for its major numbers 60, 61 and 62. You will also need to create device nodes with
sio memory device!). You will also need to create device nodes with different different names for the ports, for example ttyF# and cuf#.
names for the ports...
The original Stallion board is no longer supported by Stallion Technologies.
Although it is known to work with the istallion driver.
Finding a free physical memory address range can be a problem. The older Finding a free physical memory address range can be a problem. The older
boards like the Stallion and ONboard need large areas (64K or even 128K), so boards like the Stallion and ONboard need large areas (64K or even 128K), so
...@@ -301,32 +303,14 @@ them can be used then the high memory support to use the really high address ...@@ -301,32 +303,14 @@ them can be used then the high memory support to use the really high address
ranges is the best option. Typically the 2Gb range is convenient for them, ranges is the best option. Typically the 2Gb range is convenient for them,
and gets them well out of the way. and gets them well out of the way.
There is a new utility program in the stallion utility package called
"stlstty". Most people will not need to use this. If you have an ONboard/16
which has partial signals on the upper 12 ports then this program can be used
to set the upper ports to have modem control instead of hardware flow control.
Use the "mapcts maprts" flag options to this utility on the port(s) that you
wish to do this mapping on, eg
./stlstty maprts mapcts < /dev/cue0
This enables RTS to act like DTR and CTS to act like DCD on the specified
port.
The ports of the EasyIO-8M board do not have DCD or DTR signals. So these The ports of the EasyIO-8M board do not have DCD or DTR signals. So these
ports cannot be used as real modem devices. Generally when using these ports cannot be used as real modem devices. Generally when using these
ports you should only use the cueX devices. ports you should only use the cueX devices.
There is another new utility in this package that reports statistics on The driver utility package contains a couple of very useful programs. One
the serial ports. You will need to have the curses libray installed on is a serial port statistics collection and display program - very handy
your system to build it. for solving serial port problems. The other is an extended option setting
program that works with the intelligent boards.
To build the statistics display program type:
make stlstats
Once compiled simply run it (you will need to be root) and it will display
a port summary for the first board and panel installed. Use the digits to
select different board numbers, or 'n' to cycle through the panels on a
board. To look at detailed port information then hit 'p', that will display
detailed port 0 information. Use the digits and letteres 'a' through 'f' to
select the different ports (on this board and panel).
......
...@@ -180,7 +180,7 @@ static int stli_nrbrds = sizeof(stli_brdconf) / sizeof(stlconf_t); ...@@ -180,7 +180,7 @@ static int stli_nrbrds = sizeof(stli_brdconf) / sizeof(stlconf_t);
* all the local structures required by a serial tty driver. * all the local structures required by a serial tty driver.
*/ */
static char *stli_drvname = "Stallion Intelligent Multiport Serial Driver"; static char *stli_drvname = "Stallion Intelligent Multiport Serial Driver";
static char *stli_drvversion = "1.0.6"; static char *stli_drvversion = "1.0.8";
static char *stli_serialname = "ttyE"; static char *stli_serialname = "ttyE";
static char *stli_calloutname = "cue"; static char *stli_calloutname = "cue";
...@@ -279,7 +279,6 @@ typedef struct { ...@@ -279,7 +279,6 @@ typedef struct {
struct termios normaltermios; struct termios normaltermios;
struct termios callouttermios; struct termios callouttermios;
asysigs_t asig; asysigs_t asig;
comstats_t stats;
unsigned long addr; unsigned long addr;
unsigned long rxoffset; unsigned long rxoffset;
unsigned long txoffset; unsigned long txoffset;
...@@ -4351,48 +4350,48 @@ static int stli_getportstats(stliport_t *portp, comstats_t *cp) ...@@ -4351,48 +4350,48 @@ static int stli_getportstats(stliport_t *portp, comstats_t *cp)
if (brdp == (stlibrd_t *) NULL) if (brdp == (stlibrd_t *) NULL)
return(-ENODEV); return(-ENODEV);
portp->stats.state = portp->state; if ((rc = stli_cmdwait(brdp, portp, A_GETSTATS, &stli_cdkstats, sizeof(asystats_t), 1)) < 0)
portp->stats.flags = portp->flags; return(rc);
stli_comstats.state = portp->state;
stli_comstats.flags = portp->flags;
if (portp->tty != (struct tty_struct *) NULL) { if (portp->tty != (struct tty_struct *) NULL) {
portp->stats.ttystate = portp->tty->flags; stli_comstats.ttystate = portp->tty->flags;
portp->stats.cflags = portp->tty->termios->c_cflag; stli_comstats.cflags = portp->tty->termios->c_cflag;
portp->stats.iflags = portp->tty->termios->c_iflag; stli_comstats.iflags = portp->tty->termios->c_iflag;
portp->stats.oflags = portp->tty->termios->c_oflag; stli_comstats.oflags = portp->tty->termios->c_oflag;
portp->stats.lflags = portp->tty->termios->c_lflag; stli_comstats.lflags = portp->tty->termios->c_lflag;
portp->stats.rxbuffered = portp->tty->flip.count; stli_comstats.rxbuffered = portp->tty->flip.count;
} else { } else {
portp->stats.ttystate = 0; stli_comstats.ttystate = 0;
portp->stats.cflags = 0; stli_comstats.cflags = 0;
portp->stats.iflags = 0; stli_comstats.iflags = 0;
portp->stats.oflags = 0; stli_comstats.oflags = 0;
portp->stats.lflags = 0; stli_comstats.lflags = 0;
portp->stats.rxbuffered = 0; stli_comstats.rxbuffered = 0;
} }
if ((rc = stli_cmdwait(brdp, portp, A_GETSTATS, &stli_cdkstats, sizeof(asystats_t), 1)) < 0) stli_comstats.txtotal = stli_cdkstats.txchars;
return(rc); stli_comstats.rxtotal = stli_cdkstats.rxchars + stli_cdkstats.ringover;
stli_comstats.txbuffered = stli_cdkstats.txringq;
portp->stats.txtotal = stli_cdkstats.txchars; stli_comstats.rxbuffered += stli_cdkstats.rxringq;
portp->stats.rxtotal = stli_cdkstats.rxchars + stli_cdkstats.ringover; stli_comstats.rxoverrun = stli_cdkstats.overruns;
portp->stats.txbuffered = stli_cdkstats.txringq; stli_comstats.rxparity = stli_cdkstats.parity;
portp->stats.rxbuffered += stli_cdkstats.rxringq; stli_comstats.rxframing = stli_cdkstats.framing;
portp->stats.rxoverrun = stli_cdkstats.overruns; stli_comstats.rxlost = stli_cdkstats.ringover;
portp->stats.rxparity = stli_cdkstats.parity; stli_comstats.rxbreaks = stli_cdkstats.rxbreaks;
portp->stats.rxframing = stli_cdkstats.framing; stli_comstats.txbreaks = stli_cdkstats.txbreaks;
portp->stats.rxlost = stli_cdkstats.ringover; stli_comstats.txxon = stli_cdkstats.txstart;
portp->stats.rxbreaks = stli_cdkstats.rxbreaks; stli_comstats.txxoff = stli_cdkstats.txstop;
portp->stats.txbreaks = stli_cdkstats.txbreaks; stli_comstats.rxxon = stli_cdkstats.rxstart;
portp->stats.txxon = stli_cdkstats.txstart; stli_comstats.rxxoff = stli_cdkstats.rxstop;
portp->stats.txxoff = stli_cdkstats.txstop; stli_comstats.rxrtsoff = stli_cdkstats.rtscnt / 2;
portp->stats.rxxon = stli_cdkstats.rxstart; stli_comstats.rxrtson = stli_cdkstats.rtscnt - stli_comstats.rxrtsoff;
portp->stats.rxxoff = stli_cdkstats.rxstop; stli_comstats.modem = stli_cdkstats.dcdcnt;
portp->stats.rxrtsoff = stli_cdkstats.rtscnt / 2; stli_comstats.hwid = stli_cdkstats.hwid;
portp->stats.rxrtson = stli_cdkstats.rtscnt - portp->stats.rxrtsoff; stli_comstats.signals = stli_mktiocm(stli_cdkstats.signals);
portp->stats.modem = stli_cdkstats.dcdcnt;
portp->stats.hwid = stli_cdkstats.hwid; memcpy_tofs(cp, &stli_comstats, sizeof(comstats_t));
portp->stats.signals = stli_mktiocm(stli_cdkstats.signals);
memcpy_tofs(cp, &portp->stats, sizeof(comstats_t));
return(0); return(0);
} }
...@@ -4418,15 +4417,15 @@ static int stli_clrportstats(stliport_t *portp, comstats_t *cp) ...@@ -4418,15 +4417,15 @@ static int stli_clrportstats(stliport_t *portp, comstats_t *cp)
if (brdp == (stlibrd_t *) NULL) if (brdp == (stlibrd_t *) NULL)
return(-ENODEV); return(-ENODEV);
memset(&portp->stats, 0, sizeof(comstats_t));
portp->stats.brd = portp->brdnr;
portp->stats.panel = portp->panelnr;
portp->stats.port = portp->portnr;
if ((rc = stli_cmdwait(brdp, portp, A_CLEARSTATS, 0, 0, 0)) < 0) if ((rc = stli_cmdwait(brdp, portp, A_CLEARSTATS, 0, 0, 0)) < 0)
return(rc); return(rc);
memcpy_tofs(cp, &portp->stats, sizeof(comstats_t)); memset(&stli_comstats, 0, sizeof(comstats_t));
stli_comstats.brd = portp->brdnr;
stli_comstats.panel = portp->panelnr;
stli_comstats.port = portp->portnr;
memcpy_tofs(cp, &stli_comstats, sizeof(comstats_t));
return(0); return(0);
} }
......
...@@ -145,7 +145,7 @@ static int stl_nrbrds = sizeof(stl_brdconf) / sizeof(stlconf_t); ...@@ -145,7 +145,7 @@ static int stl_nrbrds = sizeof(stl_brdconf) / sizeof(stlconf_t);
* all the local structures required by a serial tty driver. * all the local structures required by a serial tty driver.
*/ */
static char *stl_drvname = "Stallion Multiport Serial Driver"; static char *stl_drvname = "Stallion Multiport Serial Driver";
static char *stl_drvversion = "1.0.6"; static char *stl_drvversion = "1.0.8";
static char *stl_serialname = "ttyE"; static char *stl_serialname = "ttyE";
static char *stl_calloutname = "cue"; static char *stl_calloutname = "cue";
......
...@@ -153,7 +153,7 @@ static short TokBaseAddrs[] = { MMIOStartLocP, MMIOStartLocA }; ...@@ -153,7 +153,7 @@ static short TokBaseAddrs[] = { MMIOStartLocP, MMIOStartLocA };
int tok_probe(struct device *dev); int tok_probe(struct device *dev);
unsigned char get_sram_size(struct tok_info *adapt_info); unsigned char get_sram_size(struct tok_info *adapt_info);
static int tok_init_card(struct device *dev); static void tok_init_card(unsigned long dev_addr);
int trdev_init(struct device *dev); int trdev_init(struct device *dev);
void tok_interrupt(int irq, void *dev_id, struct pt_regs *regs); void tok_interrupt(int irq, void *dev_id, struct pt_regs *regs);
......
...@@ -514,7 +514,7 @@ static Scsi_Cmnd * end_scsi_request(Scsi_Cmnd * SCpnt, int uptodate, int sectors ...@@ -514,7 +514,7 @@ static Scsi_Cmnd * end_scsi_request(Scsi_Cmnd * SCpnt, int uptodate, int sectors
* turned off * turned off
*/ */
#define INIT_SCSI_REQUEST \ #define INIT_SCSI_REQUEST \
if (!CURRENT || CURRENT_PLUGGED) { \ if (!CURRENT) { \
CLEAR_INTR; \ CLEAR_INTR; \
restore_flags(flags); \ restore_flags(flags); \
return; \ return; \
......
...@@ -103,7 +103,7 @@ union bdflush_param{ ...@@ -103,7 +103,7 @@ union bdflush_param{
trim back the buffers */ trim back the buffers */
} b_un; } b_un;
unsigned int data[N_PARAM]; unsigned int data[N_PARAM];
} bdf_prm = {{25, 500, 64, 256, 15, 30*HZ, 5*HZ, 1884, 2}}; } bdf_prm = {{60, 500, 64, 256, 15, 30*HZ, 5*HZ, 1884, 2}};
/* The lav constant is set for 1 minute, as long as the update process runs /* The lav constant is set for 1 minute, as long as the update process runs
every 5 seconds. If you change the frequency of update, the time every 5 seconds. If you change the frequency of update, the time
......
...@@ -393,7 +393,7 @@ ncp_read_volume_list(struct ncp_server *server, int fpos, int cache_size) ...@@ -393,7 +393,7 @@ ncp_read_volume_list(struct ncp_server *server, int fpos, int cache_size)
if (ncp_get_volume_info_with_number(server, i, &info) != 0) if (ncp_get_volume_info_with_number(server, i, &info) != 0)
{ {
return total_count; return (total_count - fpos);
} }
if (strlen(info.volume_name) > 0) if (strlen(info.volume_name) > 0)
......
...@@ -65,8 +65,8 @@ ...@@ -65,8 +65,8 @@
#include <linux/if.h> #include <linux/if.h>
#include <linux/inet.h> #include <linux/inet.h>
#include <linux/net.h> #include <linux/net.h>
#include <linux/if_arp.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/if_arp.h>
#ifdef CONFIG_AX25 #ifdef CONFIG_AX25
#include <net/ax25.h> /* For AX25_P_IP */ #include <net/ax25.h> /* For AX25_P_IP */
#endif #endif
......
...@@ -7,25 +7,29 @@ ...@@ -7,25 +7,29 @@
* assume GCC is being used. * assume GCC is being used.
*/ */
typedef unsigned int __dev_t; typedef unsigned int __kernel_dev_t;
typedef unsigned int __ino_t; typedef unsigned int __kernel_ino_t;
typedef unsigned int __mode_t; typedef unsigned int __kernel_mode_t;
typedef unsigned short __nlink_t; typedef unsigned short __kernel_nlink_t;
typedef long __off_t; typedef long __kernel_off_t;
typedef int __pid_t; typedef int __kernel_pid_t;
typedef unsigned int __uid_t; typedef unsigned int __kernel_uid_t;
typedef unsigned int __gid_t; typedef unsigned int __kernel_gid_t;
typedef unsigned long __size_t; typedef unsigned long __kernel_size_t;
typedef long __ssize_t; typedef long __kernel_ssize_t;
typedef long __ptrdiff_t; typedef long __kernel_ptrdiff_t;
typedef long __time_t; typedef long __kernel_time_t;
typedef long __clock_t; typedef long __kernel_clock_t;
typedef int __daddr_t; typedef int __kernel_daddr_t;
typedef char * __caddr_t; typedef char * __kernel_caddr_t;
#ifdef __GNUC__
typedef long long __kernel_loff_t;
#endif
typedef struct { typedef struct {
int val[2]; int val[2];
} __fsid_t; } __kernel_fsid_t;
#ifndef __GNUC__ #ifndef __GNUC__
...@@ -33,14 +37,14 @@ typedef struct { ...@@ -33,14 +37,14 @@ typedef struct {
#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d)) #define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
#define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) #define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
#define __FD_ZERO(set) \ #define __FD_ZERO(set) \
((void) memset ((__ptr_t) (set), 0, sizeof (__fd_set))) ((void) memset ((__ptr_t) (set), 0, sizeof (__kernel_fd_set)))
#else /* __GNUC__ */ #else /* __GNUC__ */
/* With GNU C, use inline functions instead so args are evaluated only once: */ /* With GNU C, use inline functions instead so args are evaluated only once: */
#undef __FD_SET #undef __FD_SET
static __inline__ void __FD_SET(unsigned long fd, __fd_set *fdsetp) static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
{ {
unsigned long _tmp = fd / __NFDBITS; unsigned long _tmp = fd / __NFDBITS;
unsigned long _rem = fd % __NFDBITS; unsigned long _rem = fd % __NFDBITS;
...@@ -48,7 +52,7 @@ static __inline__ void __FD_SET(unsigned long fd, __fd_set *fdsetp) ...@@ -48,7 +52,7 @@ static __inline__ void __FD_SET(unsigned long fd, __fd_set *fdsetp)
} }
#undef __FD_CLR #undef __FD_CLR
static __inline__ void __FD_CLR(unsigned long fd, __fd_set *fdsetp) static __inline__ void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
{ {
unsigned long _tmp = fd / __NFDBITS; unsigned long _tmp = fd / __NFDBITS;
unsigned long _rem = fd % __NFDBITS; unsigned long _rem = fd % __NFDBITS;
...@@ -56,7 +60,7 @@ static __inline__ void __FD_CLR(unsigned long fd, __fd_set *fdsetp) ...@@ -56,7 +60,7 @@ static __inline__ void __FD_CLR(unsigned long fd, __fd_set *fdsetp)
} }
#undef __FD_ISSET #undef __FD_ISSET
static __inline__ int __FD_ISSET(unsigned long fd, __fd_set *p) static __inline__ int __FD_ISSET(unsigned long fd, __kernel_fd_set *p)
{ {
unsigned long _tmp = fd / __NFDBITS; unsigned long _tmp = fd / __NFDBITS;
unsigned long _rem = fd % __NFDBITS; unsigned long _rem = fd % __NFDBITS;
...@@ -68,7 +72,7 @@ static __inline__ int __FD_ISSET(unsigned long fd, __fd_set *p) ...@@ -68,7 +72,7 @@ static __inline__ int __FD_ISSET(unsigned long fd, __fd_set *p)
* for a 256-bit fd_set) * for a 256-bit fd_set)
*/ */
#undef __FD_ZERO #undef __FD_ZERO
static __inline__ void __FD_ZERO(__fd_set *p) static __inline__ void __FD_ZERO(__kernel_fd_set *p)
{ {
unsigned int *tmp = p->fds_bits; unsigned int *tmp = p->fds_bits;
int i; int i;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <linux/posix_types.h> #include <linux/posix_types.h>
typedef __fsid_t fsid_t; typedef __kernel_fsid_t fsid_t;
#endif #endif
...@@ -23,7 +23,7 @@ struct statfs { ...@@ -23,7 +23,7 @@ struct statfs {
int f_bavail; int f_bavail;
int f_files; int f_files;
int f_ffree; int f_ffree;
__fsid_t f_fsid; __kernel_fsid_t f_fsid;
/* linux-specific entries start here.. */ /* linux-specific entries start here.. */
int f_namelen; int f_namelen;
}; };
......
...@@ -7,21 +7,25 @@ ...@@ -7,21 +7,25 @@
* assume GCC is being used. * assume GCC is being used.
*/ */
typedef unsigned short __dev_t; typedef unsigned short __kernel_dev_t;
typedef unsigned long __ino_t; typedef unsigned long __kernel_ino_t;
typedef unsigned short __mode_t; typedef unsigned short __kernel_mode_t;
typedef unsigned short __nlink_t; typedef unsigned short __kernel_nlink_t;
typedef long __off_t; typedef long __kernel_off_t;
typedef int __pid_t; typedef int __kernel_pid_t;
typedef unsigned short __uid_t; typedef unsigned short __kernel_uid_t;
typedef unsigned short __gid_t; typedef unsigned short __kernel_gid_t;
typedef unsigned int __size_t; typedef unsigned int __kernel_size_t;
typedef int __ssize_t; typedef int __kernel_ssize_t;
typedef int __ptrdiff_t; typedef int __kernel_ptrdiff_t;
typedef long __time_t; typedef long __kernel_time_t;
typedef long __clock_t; typedef long __kernel_clock_t;
typedef int __daddr_t; typedef int __kernel_daddr_t;
typedef char * __caddr_t; typedef char * __kernel_caddr_t;
#ifdef __GNUC__
typedef long long __kernel_loff_t;
#endif
#undef __FD_SET #undef __FD_SET
#define __FD_SET(fd,fdsetp) \ #define __FD_SET(fd,fdsetp) \
......
...@@ -319,8 +319,6 @@ static void floppy_off(unsigned int nr); ...@@ -319,8 +319,6 @@ static void floppy_off(unsigned int nr);
#define CURRENT (blk_dev[MAJOR_NR].current_request) #define CURRENT (blk_dev[MAJOR_NR].current_request)
#endif #endif
#define CURRENT_PLUGGED IS_PLUGGED(blk_dev+MAJOR_NR)
#define CURRENT_DEV DEVICE_NR(CURRENT->rq_dev) #define CURRENT_DEV DEVICE_NR(CURRENT->rq_dev)
#ifdef DEVICE_INTR #ifdef DEVICE_INTR
...@@ -358,7 +356,7 @@ static void (DEVICE_REQUEST)(void); ...@@ -358,7 +356,7 @@ static void (DEVICE_REQUEST)(void);
#endif #endif
#define INIT_REQUEST \ #define INIT_REQUEST \
if (!CURRENT || CURRENT_PLUGGED) {\ if (!CURRENT) {\
CLEAR_INTR; \ CLEAR_INTR; \
return; \ return; \
} \ } \
......
...@@ -36,11 +36,10 @@ struct request { ...@@ -36,11 +36,10 @@ struct request {
struct blk_dev_struct { struct blk_dev_struct {
void (*request_fn)(void); void (*request_fn)(void);
struct request * current_request; struct request * current_request;
struct request plug;
struct tq_struct plug_tq; struct tq_struct plug_tq;
}; };
#define IS_PLUGGED(dev) ((dev)->plug_tq.sync)
struct sec_size { struct sec_size {
unsigned block_size; unsigned block_size;
unsigned block_size_bits; unsigned block_size_bits;
......
#ifndef _LINUX_POSIX_TYPES_H #ifndef _LINUX_POSIX_TYPES_H
#define _LINUX_POSIX_TYPES_H #define _LINUX_POSIX_TYPES_H
#define _GNU_TYPES_H
/* /*
* This file is generally used by user-level software, so you need to * This file is generally used by user-level software, so you need to
* be a little careful about namespace pollution etc. Also, we cannot * be a little careful about namespace pollution etc. Also, we cannot
...@@ -45,15 +43,8 @@ ...@@ -45,15 +43,8 @@
typedef struct fd_set { typedef struct fd_set {
unsigned int fds_bits [__FDSET_INTS]; unsigned int fds_bits [__FDSET_INTS];
} __fd_set; } __kernel_fd_set;
#include <asm/posix_types.h> #include <asm/posix_types.h>
/* bsd */
typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;
#endif /* _LINUX_POSIX_TYPES_H */ #endif /* _LINUX_POSIX_TYPES_H */
...@@ -6,23 +6,20 @@ ...@@ -6,23 +6,20 @@
#ifndef _LINUX_TYPES_DONT_EXPORT #ifndef _LINUX_TYPES_DONT_EXPORT
typedef __fd_set fd_set; typedef __kernel_fd_set fd_set;
typedef __dev_t dev_t; typedef __kernel_dev_t dev_t;
typedef __ino_t ino_t; typedef __kernel_ino_t ino_t;
typedef __mode_t mode_t; typedef __kernel_mode_t mode_t;
typedef __nlink_t nlink_t; typedef __kernel_nlink_t nlink_t;
typedef __off_t off_t; typedef __kernel_off_t off_t;
typedef __pid_t pid_t; typedef __kernel_pid_t pid_t;
typedef __uid_t uid_t; typedef __kernel_uid_t uid_t;
typedef __gid_t gid_t; typedef __kernel_gid_t gid_t;
typedef __daddr_t daddr_t; typedef __kernel_daddr_t daddr_t;
/* bsd */ #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
typedef __kernel_loff_t loff_t;
typedef __u_char u_char; #endif
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
/* /*
* The following typedefs are also protected by individual ifdefs for * The following typedefs are also protected by individual ifdefs for
...@@ -30,39 +27,45 @@ typedef __u_long u_long; ...@@ -30,39 +27,45 @@ typedef __u_long u_long;
*/ */
#ifndef _SIZE_T #ifndef _SIZE_T
#define _SIZE_T #define _SIZE_T
typedef __size_t size_t; typedef __kernel_size_t size_t;
#endif #endif
#ifndef _SSIZE_T #ifndef _SSIZE_T
#define _SSIZE_T #define _SSIZE_T
typedef __ssize_t ssize_t; typedef __kernel_ssize_t ssize_t;
#endif #endif
#ifndef _PTRDIFF_T #ifndef _PTRDIFF_T
#define _PTRDIFF_T #define _PTRDIFF_T
typedef __ptrdiff_t ptrdiff_t; typedef __kernel_ptrdiff_t ptrdiff_t;
#endif #endif
#ifndef _TIME_T #ifndef _TIME_T
#define _TIME_T #define _TIME_T
typedef __time_t time_t; typedef __kernel_time_t time_t;
#endif #endif
#ifndef _CLOCK_T #ifndef _CLOCK_T
#define _CLOCK_T #define _CLOCK_T
typedef __clock_t clock_t; typedef __kernel_clock_t clock_t;
#endif #endif
#ifndef _CADDR_T #ifndef _CADDR_T
#define _CADDR_T #define _CADDR_T
typedef __caddr_t caddr_t; typedef __kernel_caddr_t caddr_t;
#endif #endif
/* bsd */
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
/* sysv */ /* sysv */
typedef unsigned char unchar; typedef unsigned char unchar;
typedef unsigned short ushort; typedef unsigned short ushort;
typedef unsigned int uint; typedef unsigned int uint;
typedef unsigned long ulong; typedef unsigned long ulong;
#endif /* _LINUX_TYPES_DONT_EXPORT */ #endif /* _LINUX_TYPES_DONT_EXPORT */
...@@ -71,22 +74,11 @@ typedef unsigned long ulong; ...@@ -71,22 +74,11 @@ typedef unsigned long ulong;
* any application/library that wants linux/types.h. * any application/library that wants linux/types.h.
*/ */
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
typedef long long __loff_t;
#ifndef _LINUX_TYPES_DONT_EXPORT
#define _LOFF_T
typedef __loff_t loff_t;
#endif
#endif
struct ustat { struct ustat {
__daddr_t f_tfree; __kernel_daddr_t f_tfree;
__ino_t f_tinode; __kernel_ino_t f_tinode;
char f_fname[6]; char f_fname[6];
char f_fpack[6]; char f_fpack[6];
}; };
#endif /* _LINUX_TYPES_H */ #endif /* _LINUX_TYPES_H */
...@@ -346,11 +346,6 @@ struct symbol_table symbol_table = { ...@@ -346,11 +346,6 @@ struct symbol_table symbol_table = {
X(aux_device_present), X(aux_device_present),
X(kbd_read_mask), X(kbd_read_mask),
#ifdef CONFIG_TR
X(tr_setup),
X(tr_type_trans),
#endif
#ifdef CONFIG_BLK_DEV_IDE_PCMCIA #ifdef CONFIG_BLK_DEV_IDE_PCMCIA
X(ide_register), X(ide_register),
X(ide_unregister), X(ide_unregister),
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#include <linux/socket.h> #include <linux/socket.h>
#include <linux/sockios.h> #include <linux/sockios.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/netdevice.h>
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <linux/in.h> #include <linux/in.h>
#include <linux/config.h> #include <linux/config.h>
...@@ -49,7 +50,6 @@ ...@@ -49,7 +50,6 @@
#include <asm/segment.h> #include <asm/segment.h>
#include <stdarg.h> #include <stdarg.h>
#include <linux/inet.h> #include <linux/inet.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <net/ip.h> #include <net/ip.h>
#include <net/route.h> #include <net/route.h>
......
...@@ -113,6 +113,11 @@ static struct symbol_table net_syms = { ...@@ -113,6 +113,11 @@ static struct symbol_table net_syms = {
X(NS8390_init), X(NS8390_init),
#endif #endif
#ifdef CONFIG_TR
X(tr_setup),
X(tr_type_trans),
#endif
#ifdef CONFIG_NET_ALIAS #ifdef CONFIG_NET_ALIAS
#include <linux/net_alias.h> #include <linux/net_alias.h>
#endif #endif
......
...@@ -78,16 +78,13 @@ function bool () { ...@@ -78,16 +78,13 @@ function bool () {
eval $2=\${$2:-'n'} x=\$$2 eval $2=\${$2:-'n'} x=\$$2
case $x in case $x in
y|m) yes='ON' no='OFF' flag="*" y|m) flag="*" ;;
;; n) flag=" " ;;
n) yes='OFF' no='ON' flag=" "
;;
esac esac
echo -ne "'$2' '($flag) $1' " >>MCmenu echo -ne "'$2' '($flag) $1' " >>MCmenu
echo -e "function $2 () { l_bool '$1' '$yes' '$no' '$2' }\n" \ echo -e "function $2 () { l_bool '$2' \"\$1\" }\n" >>MCradiolists
>>MCradiolists
} }
# #
...@@ -104,20 +101,15 @@ function tristate () { ...@@ -104,20 +101,15 @@ function tristate () {
eval $2=\${$2:-'n'} x=\$$2 eval $2=\${$2:-'n'} x=\$$2
case $x in case $x in
y) yes='ON' no='OFF' module='OFF' flag="*" y) flag="*" ;;
;; m) flag="M" ;;
m) yes='OFF' no='OFF' module='ON' flag="M" *) flag=" " ;;
;;
*) yes='OFF' no='ON' module='OFF' flag=" "
;;
esac esac
echo -ne "'$2' '<$flag> $1' " >>MCmenu echo -ne "'$2' '<$flag> $1' " >>MCmenu
echo -e " echo -e "
function $2 () { \ function $2 () { l_tristate '$2' \"\$1\" }" >>MCradiolists
l_tristate '$1' '$yes' '$no' '$module' '$2'
}" >>MCradiolists
fi fi
} }
...@@ -155,7 +147,7 @@ function int () { ...@@ -155,7 +147,7 @@ function int () {
echo -ne "'$2' '($x) $1' " >>MCmenu echo -ne "'$2' '($x) $1' " >>MCmenu
echo -e "function $2 () { l_int '$1' '$2' '$3' '$x' }\n" >>MCradiolists echo -e "function $2 () { l_int '$1' '$2' '$3' '$x' }" >>MCradiolists
} }
# #
...@@ -166,7 +158,7 @@ function hex () { ...@@ -166,7 +158,7 @@ function hex () {
echo -ne "'$2' '($x) $1' " >>MCmenu echo -ne "'$2' '($x) $1' " >>MCmenu
echo -e "function $2 () { l_hex '$1' '$2' '$3' '$x' }\n" >>MCradiolists echo -e "function $2 () { l_hex '$1' '$2' '$3' '$x' }" >>MCradiolists
} }
# #
...@@ -203,9 +195,8 @@ function choice () { ...@@ -203,9 +195,8 @@ function choice () {
echo -ne "'$firstchoice' '($current) $title' " >>MCmenu echo -ne "'$firstchoice' '($current) $title' " >>MCmenu
echo -e " echo -e "
function $firstchoice () { function $firstchoice () \
l_choice '$title' \"$choices\" $current { l_choice '$title' \"$choices\" $current }" >>MCradiolists
}\n" >>MCradiolists
} }
} # END load_functions() } # END load_functions()
...@@ -236,12 +227,14 @@ function extract_help () { ...@@ -236,12 +227,14 @@ function extract_help () {
if [ -z "$text" ] if [ -z "$text" ]
then then
echo "There is no help available for this kernel option." echo "There is no help available for this kernel option."
return 1
else else
echo "$text" echo "$text"
fi fi
else else
echo "There is no help available for this kernel option." echo "There is no help available for this kernel option."
return 1
fi fi
} }
...@@ -263,7 +256,7 @@ function help () { ...@@ -263,7 +256,7 @@ function help () {
# #
# Show the README file. # Show the README file.
# #
function show_readme() { function show_readme () {
$DIALOG --backtitle "$backtitle" \ $DIALOG --backtitle "$backtitle" \
--textbox scripts/README.Menuconfig $LINES $COLS --textbox scripts/README.Menuconfig $LINES $COLS
} }
...@@ -309,22 +302,15 @@ function l_soundcfg () { ...@@ -309,22 +302,15 @@ function l_soundcfg () {
# Handle a boolean (Yes/No) option. # Handle a boolean (Yes/No) option.
# #
function l_bool () { function l_bool () {
while true if [ -n "$2" ]
do then
$DIALOG --title "$1" \ case "$2" in
--backtitle "$backtitle" \ y|m) eval $1=y ;;
--radiolist "$radiolist_instructions" 12 70 2 \ *) eval $1=n ;;
'y' 'Yes' $2 'n' 'No' $3 2>MCdialog.out
case "$?" in
0) eval $4=`cat MCdialog.out`
break ;;
1) help "$4" "$1" ;;
*) break ;;
esac esac
done else
echo -ne "\007"
fi
} }
# #
...@@ -334,62 +320,44 @@ function mod_bool () { ...@@ -334,62 +320,44 @@ function mod_bool () {
eval $2=\${$2:-'n'} x=\$$2 eval $2=\${$2:-'n'} x=\$$2
case $x in case $x in
m) module='ON' no='OFF' flag='M' y|m) flag='M' ;;
;; *) flag=' ' ;;
*) module='OFF' no='ON' flag=' '
;;
esac esac
echo -ne "'$2' '<$flag> $1' " >>MCmenu echo -ne "'$2' '<$flag> $1' " >>MCmenu
echo -e "function $2 () { l_mod_bool '$1' '$module' '$no' '$2' }\n" \ echo -e "function $2 () { l_mod_bool '$2' \"\$1\" }" >>MCradiolists
>>MCradiolists
} }
# #
# Same as l_bool() except options are (Module/No) # Same as l_bool() except options are (Module/No)
# #
function l_mod_bool() { function l_mod_bool() {
while true if [ -n "$2" ]
do then
$DIALOG --title "$1" \ case "$2" in
--backtitle "$backtitle" \ y|m) eval $1=m ;;
--radiolist "$radiolist_instructions" 12 70 2 \ *) eval $1=n ;;
'm' 'Module' $2 'n' 'No' $3 2>MCdialog.out
case "$?" in
0) eval $4=`cat MCdialog.out`
break ;;
1) help "$4" "$1" ;;
*) break ;;
esac esac
else
done echo -ne "\007"
fi
} }
# #
# Handle a tristate (Yes/No/Module) option. # Handle a tristate (Yes/No/Module) option.
# #
function l_tristate () { function l_tristate () {
while true if [ -n "$2" ]
do then
$DIALOG --title "$1" \ case "$2" in
--backtitle "$backtitle" \ y) eval $1=y ;;
--radiolist "$radiolist_instructions" 13 70 3 \ m) eval $1=m ;;
'y' 'Yes' $2 'n' 'No' $3 'm' 'Module' $4 \ *) eval $1=n ;;
2>MCdialog.out
case "$?" in
0) eval $5=`cat MCdialog.out`
break ;;
1) help "$5" "$1" ;;
*) break ;;
esac esac
done else
echo -ne "\007"
fi
} }
# #
...@@ -401,7 +369,7 @@ function l_int () { ...@@ -401,7 +369,7 @@ function l_int () {
if $DIALOG --title "$1" \ if $DIALOG --title "$1" \
--backtitle "$backtitle" \ --backtitle "$backtitle" \
--inputbox "$inputbox_instructions_int" \ --inputbox "$inputbox_instructions_int" \
15 55 "$4" 2>MCdialog.out 10 75 "$4" 2>MCdialog.out
then then
answer="`cat MCdialog.out`" answer="`cat MCdialog.out`"
answer="${answer:-$3}" answer="${answer:-$3}"
...@@ -433,7 +401,7 @@ function l_hex () { ...@@ -433,7 +401,7 @@ function l_hex () {
if $DIALOG --title "$1" \ if $DIALOG --title "$1" \
--backtitle "$backtitle" \ --backtitle "$backtitle" \
--inputbox "$inputbox_instructions_hex" \ --inputbox "$inputbox_instructions_hex" \
15 55 "$4" 2>MCdialog.out 10 75 "$4" 2>MCdialog.out
then then
answer="`cat MCdialog.out`" answer="`cat MCdialog.out`"
answer="${answer:-$3}" answer="${answer:-$3}"
...@@ -489,7 +457,7 @@ function l_choice () { ...@@ -489,7 +457,7 @@ function l_choice () {
if $DIALOG --title "$title" \ if $DIALOG --title "$title" \
--backtitle "$backtitle" \ --backtitle "$backtitle" \
--radiolist "$radiolist_instructions" \ --radiolist "$radiolist_instructions" \
22 70 11 $list 2>MCdialog.out 15 70 6 $list 2>MCdialog.out
then then
choice=`cat MCdialog.out` choice=`cat MCdialog.out`
break break
...@@ -647,30 +615,37 @@ function parse_config_files () { ...@@ -647,30 +615,37 @@ function parse_config_files () {
# dialog commands or recursively call other menus. # dialog commands or recursively call other menus.
# #
function activate_menu () { function activate_menu () {
while true while true
do do
comment_ctr=0 comment_ctr=0 #So comment lines get unique tags
$1 "$default" #Create the radiolists and dialog cmd
. MCradiolists #Read in the dialog functions. $1 "$default" #Create the lxdialog menu & functions
. MCradiolists #Source the menu's functions
. MCmenu 2>MCdialog.out #Activate this menu . MCmenu 2>MCdialog.out #Activate the lxdialog menu
ret=$?
case "$?" in read selection <MCdialog.out
0)
defaults="`cat MCdialog.out`$defaults" #psuedo stack case "$ret" in
. MCdialog.out 0|3|4|5)
defaults="$selection$defaults" #psuedo stack
case "$ret" in
0) eval $selection ;;
3) eval $selection y ;;
4) eval $selection n ;;
5) eval $selection m ;;
esac
default="${defaults%%*}" defaults="${defaults#*}" default="${defaults%%*}" defaults="${defaults#*}"
;; ;;
2) 2)
echo >>MCdialog.out
read selection <MCdialog.out
default="${selection%% *}" default="${selection%% *}"
case "$selection" in case "$selection" in
*"-->"*|\ *"-->"*|*"alt_config"*)
*"alt_config"*) show_readme ;; show_readme ;;
*) eval help $selection ;; *)
eval help $selection ;;
esac esac
;; ;;
255|1) 255|1)
...@@ -876,8 +851,9 @@ save_configuration () { ...@@ -876,8 +851,9 @@ save_configuration () {
m) m)
if [ "$CONFIG_MODULES" = "y" ] if [ "$CONFIG_MODULES" = "y" ]
then then
echo "$1=m" >>$CONFIG echo "$1=m" >>$CONFIG
echo "#undef $1" >>$CONFIG_H echo "#undef $1" >>$CONFIG_H
echo "#define $1_MODULE 1" >>$CONFIG_H
else else
echo "$1=y" >>$CONFIG echo "$1=y" >>$CONFIG
echo "#define $1 1" >>$CONFIG_H echo "#define $1 1" >>$CONFIG_H
...@@ -1026,17 +1002,24 @@ case $x in ...@@ -1026,17 +1002,24 @@ case $x in
COLS=75 COLS=75
;; ;;
esac esac
if [ $LINES -lt 15 -o $COLS -lt 75 ]
then
echo -e "\n\007Your display is too small to run Menuconfig!\n"
echo "It is currently set to $LINES lines by $COLS columns."
echo "It must be at least 15 lines by 75 columns."
exit 0
fi
menu_instructions="\ menu_instructions="\
The Arrow keys navigate the menu. \ Arrow keys navigate the menu. \
Highlighted letters are hotkeys. \ Highlighted letters are hotkeys. \
Press the <Space Bar> to select an item. \ Pressing <Y> includes a feature, <N> excludes it, <M> makes it modular. \
Press <Esc><Esc> to exit. \ Press <Esc><Esc> to exit or <?> for Help. \
Press <?> for Help. \ (*) shows built in features. \
(*) options will be compiled into the kernel. \ (M) shows modules. \
(M) options will be modules. \ < > features are module capable."
< > marks module capable options."
radiolist_instructions="\ radiolist_instructions="\
Use the arrow keys to navigate this window or \ Use the arrow keys to navigate this window or \
...@@ -1047,11 +1030,11 @@ Press <?> for additional information about this option." ...@@ -1047,11 +1030,11 @@ Press <?> for additional information about this option."
inputbox_instructions_int="\ inputbox_instructions_int="\
Please enter a decimal value between 1 and 9999. \ Please enter a decimal value between 1 and 9999. \
Fractions will not be accepted. \ Fractions will not be accepted. \
Use the <TAB> key to move from the input field to buttons below it." Use the <TAB> key to move from the input field to the buttons below it."
inputbox_instructions_hex="\ inputbox_instructions_hex="\
Please enter a hexidecimal value. \ Please enter a hexidecimal value. \
Use the <TAB> key to move from the input field to buttons below it." Use the <TAB> key to move from the input field to the buttons below it."
backtitle="Linux Kernel Configuration" backtitle="Linux Kernel Configuration"
......
...@@ -3,25 +3,46 @@ lift. Featuring text based color menus and dialogs, it does not ...@@ -3,25 +3,46 @@ lift. Featuring text based color menus and dialogs, it does not
require X Windows. With this utility you can easily select a kernel require X Windows. With this utility you can easily select a kernel
option to modify without sifting through 100 other options. option to modify without sifting through 100 other options.
Some Menuconfig keyboard hints: Overview
--------
Some kernel features may be built directly into the kernel.
Some may be made into loadable runtime modules. Some features
may be completely removed altogether. There are also certain
kernel parameters which are not really features, but must be
entered in as decimal or hexidecimal numbers or possibly text.
Menu items beginning with (*), (M) or ( ) represent features
configured to be built in, modularized or removed respectively.
Pointed brackets <> represent module capable features.
more...
To change any of these features, highlight it with the cursor
keys and press <Y> to build it in, <M> to make it a module or
<N> to removed it. (See keyboard hints below)
Items beginning with numbers or other text within parenthesis can
be changed by highlighting the item and pressing <Enter>. Then
enter the new parameter into the dialog box that pops up.
Some keyboard hints:
Menus Menus
---------- ----------
o Use the Up/Down arrow keys (cursor keys) to highlight the item o Use the Up/Down arrow keys (cursor keys) to highlight the item
or submenu you wish to select. you wish to change or submenu wish to select. Submenus are
designated by "--->".
Shortcut: Press the option's highlighted letter (hotkey). Shortcut: Press the option's highlighted letter (hotkey).
Pressing a hotkey more than once will sequence Pressing a hotkey more than once will sequence
through all items which use that hotkey. through all visible items which use that hotkey.
You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll
unseen options into view. unseen options into view.
o Use the cursor keys to highlight <Select> and press <ENTER>.
Shortcut: Press the <SPACE BAR> or <S> if there is no item using
<S> as it's hotkey.
o To exit a menu use the cursor keys to highlight the <Exit> button o To exit a menu use the cursor keys to highlight the <Exit> button
and press <ENTER>. and press <ENTER>.
Shortcut: Press <ESC><ESC> or <E> or <X> if there is no hotkey Shortcut: Press <ESC><ESC> or <E> or <X> if there is no hotkey
using those letters. You may press a single <ESC>, but using those letters. You may press a single <ESC>, but
there is a delayed response which you may find annoying. there is a delayed response which you may find annoying.
...@@ -31,18 +52,21 @@ o To exit a menu use the cursor keys to highlight the <Exit> button ...@@ -31,18 +52,21 @@ o To exit a menu use the cursor keys to highlight the <Exit> button
o To get help with an item, use the cursor keys to highlight <Help> o To get help with an item, use the cursor keys to highlight <Help>
and Press <ENTER>. and Press <ENTER>.
Shortcut: Press <H> or <?>. Shortcut: Press <H> or <?>.
Radiolists (Yes/No/Module) Radiolists (Choice lists)
----------- -----------
o Use the cursor keys to select the option you wish to set and press o Use the cursor keys to select the option you wish to set and press
<S> or the <SPACE BAR>. <S> or the <SPACE BAR>.
Shortcut: Press the first letter of the option you wish to set then Shortcut: Press the first letter of the option you wish to set then
press <S> or <SPACE BAR>. press <S> or <SPACE BAR>.
o To see available help for the item, use the cursor keys to highlight o To see available help for the item, use the cursor keys to highlight
<Help> and Press <ENTER>. <Help> and Press <ENTER>.
Shortcut: Press <H> or <?>. Shortcut: Press <H> or <?>.
Also, the <TAB> and cursor keys will cycle between <Select> and Also, the <TAB> and cursor keys will cycle between <Select> and
......
...@@ -204,7 +204,8 @@ proc write_tristate { file1 file2 varname variable dep } { ...@@ -204,7 +204,8 @@ proc write_tristate { file1 file2 varname variable dep } {
puts $file2 "#undef $varname"} \ puts $file2 "#undef $varname"} \
elseif { $variable == 2 || ($dep == 2 && $variable == 1) } \ elseif { $variable == 2 || ($dep == 2 && $variable == 1) } \
then { puts $file1 "$varname=m"; \ then { puts $file1 "$varname=m"; \
puts $file2 "#undef $varname" } \ puts $file2 "#undef $varname"; \
puts $file2 "#define $varname_MODULE 1" } \
elseif { $variable == 1 && $dep != 2 } \ elseif { $variable == 1 && $dep != 2 } \
then { puts $file1 "$varname=y"; \ then { puts $file1 "$varname=y"; \
puts $file2 "#define $varname 1" } \ puts $file2 "#define $varname 1" } \
......
...@@ -197,19 +197,25 @@ dialog_menu (const char *title, const char *prompt, int height, int width, ...@@ -197,19 +197,25 @@ dialog_menu (const char *title, const char *prompt, int height, int width,
print_buttons (dialog, height, width, 0); print_buttons (dialog, height, width, 0);
while (key != ESC) { while (key != ESC) {
key = wgetch (dialog); key = wgetch(dialog);
if (isalpha(key)) key = tolower(key);
if (strchr("ynm", key))
i = max_choice;
else {
for (i = choice+1; i < max_choice; i++) { for (i = choice+1; i < max_choice; i++) {
j = first_alpha(items[(scroll+i)*2+1]); j = first_alpha(items[(scroll+i)*2+1]);
if (toupper(key) == toupper(items[(scroll+i)*2+1][j])) if (key == tolower(items[(scroll+i)*2+1][j]))
break; break;
} }
if (i == max_choice) if (i == max_choice)
for (i = 0; i < max_choice; i++) { for (i = 0; i < max_choice; i++) {
j = first_alpha(items[(scroll+i)*2+1]); j = first_alpha(items[(scroll+i)*2+1]);
if (toupper(key) == toupper(items[(scroll+i)*2+1][j])) if (key == tolower(items[(scroll+i)*2+1][j]))
break; break;
} }
}
if (i < max_choice || if (i < max_choice ||
key == KEY_UP || key == KEY_DOWN || key == KEY_UP || key == KEY_DOWN ||
...@@ -302,30 +308,31 @@ dialog_menu (const char *title, const char *prompt, int height, int width, ...@@ -302,30 +308,31 @@ dialog_menu (const char *title, const char *prompt, int height, int width,
print_buttons(dialog, height, width, button); print_buttons(dialog, height, width, button);
wrefresh (dialog); wrefresh (dialog);
break; break;
case ' ':
case 'S':
case 's': case 's':
case 'y':
case 'n':
case 'm':
delwin (dialog); delwin (dialog);
fprintf(stderr, items[(scroll + choice) * 2]); fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
if (key == 'y') return 3;
if (key == 'n') return 4;
if (key == 'm') return 5;
return 0; return 0;
case 'H':
case 'h': case 'h':
case '?': case '?':
button = 2; button = 2;
case '\n': case '\n':
delwin (dialog); delwin (dialog);
if (button == 2) if (button == 2)
fprintf(stderr, "%s \"%s\"", fprintf(stderr, "%s \"%s\"\n",
items[(scroll + choice) * 2], items[(scroll + choice) * 2],
items[(scroll + choice) * 2 + 1] + items[(scroll + choice) * 2 + 1] +
first_alpha(items[(scroll + choice) * 2 + 1])); first_alpha(items[(scroll + choice) * 2 + 1]));
else else
fprintf(stderr, items[(scroll + choice) * 2]); fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
return button; return button;
case 'E':
case 'e': case 'e':
case 'X':
case 'x': case 'x':
key = ESC; key = ESC;
case ESC: case ESC:
......
...@@ -342,13 +342,16 @@ draw_shadow (WINDOW * win, int y, int x, int height, int width) ...@@ -342,13 +342,16 @@ draw_shadow (WINDOW * win, int y, int x, int height, int width)
int int
first_alpha(const char *string) first_alpha(const char *string)
{ {
int i, in_paren=0; int i, in_paren=0, c;
for (i = 0; i < strlen(string); i++) { for (i = 0; i < strlen(string); i++) {
if (string[i] == '(') ++in_paren; c = tolower(string[i]);
if (string[i] == ')') --in_paren;
if ((! in_paren) && isalpha(string[i])) if (c == '(') ++in_paren;
if (c == ')') --in_paren;
if ((! in_paren) && isalpha(c) &&
strchr("nNyYmM", c) == 0)
return i; return i;
} }
......
...@@ -43,11 +43,11 @@ do ...@@ -43,11 +43,11 @@ do
echo "failed. Clean up yourself." echo "failed. Clean up yourself."
break break
fi fi
if [ "`find $sourcedir -follow '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ] if [ "`find $sourcedir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ]
then then
echo "Aborting. Reject files found." echo "Aborting. Reject files found."
break break
fi fi
# Remove backup files # Remove backup files
find $sourcedir -follow '(' -name '*.orig' -o -name '.*.orig' ')' -print | xargs rm -f find $sourcedir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \;
done done
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