Commit 0f9cac5b authored by Linus Torvalds's avatar Linus Torvalds

Import 2.1.8

parent 6b4869cb
......@@ -707,12 +707,11 @@ S: Santa Clara, California 95050-3452
S: USA
N: Alain L. Knaff
E: Alain.Knaff@imag.fr
E: Alain.Knaff@poboxes.com
D: floppy driver
S: Appartement 310B
S: 11, rue General Mangin
S: 38100 Grenoble
S: France
S: 2a, rue de l'Acier
S: L-4505 Differdange
S: Luxembourg
N: Harald Koenig
E: koenig@tat.physik.uni-tuebingen.de
......
......@@ -1476,24 +1476,37 @@ CONFIG_SCSI_NCR53C8XX
of PCI-SCSI controllers. This driver supports parity checking,
tagged command queuing, fast scsi II transfer up to 10 MB/s with
narrow scsi devices and 20 MB/s with wide scsi devices.
This driver has been tested OK with linux/i386 and is currently
untested under linux/Alpha. If you intend to use this driver under
linux/Alpha, just try it first with read-only or mounted read-only
devices. Memory mapped io is currently not supported under
linux/Alpha. Please read drivers/scsi/README.ncr53c8xx for more
information.
force normal IO
Linux/i386 and Linux/Alpha are supported by this driver.
Memory mapped io is currently untested under Linux/Alpha.
Please read drivers/scsi/README.ncr53c8xx for more information.
synchronous data transfers frequency
CONFIG_SCSI_NCR53C8XX_SYNC
SCSI-2 specifications allow scsi devices to negotiate a synchronous
transfer period of 25 nano-seconds or more.
The transfer period value is 4 times the agreed transfer period.
So, data can be transferred at a 10 MHz frequency, allowing 10 MB/second
throughput with 8 bits scsi-2 devices and 20 MB/second with wide16 devices.
This frequency can be used safely with differential devices but may cause
problems with singled-ended devices.
Specify 0 if you want to only use asynchronous data transfers.
Otherwise, specify a value between 5 and 10.
Commercial O/Ses generally use 5 Mhz frequency for synchronous transfers.
It is a reasonnable default value.
However, a flawless singled-ended scsi bus supports 10 MHz data transfers.
Regardless the value choosen in the Linux configuration, the synchronous
period can be changed after boot-up through the /proc/scsi file system.
The generic command is:
echo "setsync #target period" >/proc/scsi/ncr53c8xx/0
Use a 25 ns period for 10 Mhz synchronous data transfers.
use normal IO
CONFIG_SCSI_NCR53C8XX_IOMAPPED
Under linux/Alpha only normal io is currently supported.
Under linux/i386, this option allows you to force the driver to use
normal IO. Memory mapped IO has less latency than normal IO.
During the initialization phase, the driver first tries to use
memory mapped io. If nothing seems wrong, it will use memory mapped
io. If a flaw is detected, it will use normal io. However, it's
possible that memory mapped does not work properly for you and the
driver has not detected the problem; then you would want to say Y
here. The normal answer therefore is N.
Warning! Under linux/Alpha only normal io has been currently tested.
This option allows you to force the driver to use normal IO.
Memory mapped IO has less latency than normal IO and works for most
Intel-based hardware.
The normal answer therefore is N.
not allow targets to disconnect
CONFIG_SCSI_NCR53C8XX_NO_DISCONNECT
......@@ -1518,17 +1531,13 @@ CONFIG_SCSI_NCR53C8XX_TAGGED_QUEUE
The safe answer therefore is N.
The normal answer therefore is Y.
force asynchronous transfer mode
CONFIG_SCSI_NCR53C8XX_FORCE_ASYNCHRONOUS
This option allows you to force asynchronous transfer mode for all
devices at linux startup. You can enable synchronous negotiation
with the "setsync" control command after boot-up, for example:
echo "setsync 2 25" >/proc/scsi/ncr53c8xx/0
asks the driver to set the period to 25 ns (10MB/sec) for target 2
of controller 0 (please read drivers/scsi/README.ncr53c8xx for more
information). The safe answer therefore is Y. The normal answer
therefore is N.
maximum number of queued commands
CONFIG_SCSI_NCR53C8XX_MAX_TAGS
This option allows you to specify the maximum number of commands that
can be queud to a device, when tagged command queuing is possible.
The default value is 4. Minimum is 2, maximum is 12.
The normal answer therefore is the default one.
force synchronous negotiation
CONFIG_SCSI_NCR53C8XX_FORCE_SYNC_NEGO
Some scsi-2 devices support synchronous negotiations but do not
......
ide.txt -- Information regarding the Enhanced IDE drive in Linux 2.0.xx
ide.txt -- Information regarding the Enhanced IDE drive in Linux 2.1.xx
===============================================================================
Supported by:
Mark Lord <mlord@pobox.com> -- disks, interfaces, probing
......@@ -12,17 +12,18 @@ Supported by:
See description later on below for handling BIG IDE drives with >1024 cyls.
Major features of ide.c & ide-cd.c ("NEW!" marks changes since 1.2.13):
Major features of the 2.1.xx IDE driver ("NEW!" marks changes since 2.0.xx):
NEW! - support for IDE ATAPI *tape* drives, courtesy of Gadi Oxman
NEW! - support for IDE ATAPI *floppy* drives
- support for IDE ATAPI *tape* drives, courtesy of Gadi Oxman
(re-run MAKEDEV.ide to create the tape device entries in /dev/)
NEW! - support for up to *four* IDE interfaces on one or more IRQs
NEW! - support for any mix of up to *eight* disk and/or cdrom drives
- support for up to *four* IDE interfaces on one or more IRQs
- support for any mix of up to *eight* IDE drives
- support for reading IDE ATAPI cdrom drives (NEC,MITSUMI,VERTOS,SONY)
- support for audio functions
- auto-detection of interfaces, drives, IRQs, and disk geometries
- "single" drives should be jumpered as "master", not "slave"
NEW! (both are now probed for)
(both are now probed for)
- support for BIOSs which report "more than 16 heads" on disk drives
- uses LBA (slightly faster) on disk drives which support it
- support for lots of fancy (E)IDE drive functions with hdparm utility
......@@ -32,44 +33,42 @@ NEW! (both are now probed for)
- improved handshaking and error detection/recovery
- can co-exist with hd.c controlling the first interface
- run-time selectable 32bit interface support (using hdparm-2.3)
NEW! - support for reliable operation of buggy RZ1000 interfaces
- support for reliable operation of buggy RZ1000 interfaces
- PCI support is automatic when rz1000 support is configured
NEW! - support for reliable operation of buggy CMD-640 interfaces
- support for reliable operation of buggy CMD-640 interfaces
- PCI support is automatic when cmd640 support is configured
- for VLB, use kernel command line option: ide0=cmd640_vlb
- this support also enables the secondary i/f when needed
- interface PIO timing & prefetch parameter support
NEW! - experimental support for UMC 8672 interfaces
NEW! - support for secondary interface on the FGI/Holtek HT-6560B VLB i/f
- experimental support for UMC 8672 interfaces
- support for secondary interface on the FGI/Holtek HT-6560B VLB i/f
- use kernel command line option: ide0=ht6560
NEW! - experimental support for various IDE chipsets
- experimental support for various IDE chipsets
- use appropriate kernel command line option from list below
NEW! - support for drives with a stuck WRERR_STAT bit
NEW! - support for removable devices, including door lock/unlock
NEW! - transparent support for DiskManager 6.0x and "Dynamic Disk Overlay"
- support for drives with a stuck WRERR_STAT bit
- support for removable devices, including door lock/unlock
- transparent support for DiskManager 6.0x and "Dynamic Disk Overlay"
- works with Linux fdisk, LILO, loadlin, bootln, etc..
NEW! - mostly transparent support for EZ-Drive disk translation software
NEW! - to use LILO with EZ, install LILO on the linux partition
- mostly transparent support for EZ-Drive disk translation software
- to use LILO with EZ, install LILO on the linux partition
rather than on the master boot record, and then mark the
linux partition as "bootable" or "active" using fdisk.
(courtesy of Juha Laiho <jlaiho@ichaos.nullnet.fi>).
NEW! - auto-detect of disk translations by examining partition table
NEW! - ide-cd.c now compiles separate from ide.c
NEW! - Bus-Master DMA support for Intel PCI Triton chipset IDE interfaces
- auto-detect of disk translations by examining partition table
- ide-cd.c now compiles separate from ide.c
- Bus-Master DMA support for Intel PCI Triton chipset IDE interfaces
- for details, see comments at top of triton.c
NEW! - ide-cd.c now supports door locking and auto-loading.
- ide-cd.c now supports door locking and auto-loading.
- Also preliminary support for multisession
and direct reads of audio data.
NEW! - experimental support for Promise DC4030VL caching interface card
NEW! - email thanks/problems to: peterd@pnd-pc.demon.co.uk
NEW! - the hdparm-3.1 package can be used to set PIO modes for some chipsets.
- experimental support for Promise DC4030VL caching interface card
- email thanks/problems to: peterd@pnd-pc.demon.co.uk
- the hdparm-3.1 package can be used to set PIO modes for some chipsets.
NEW! - support for the OPTi 82C621 chipset, courtesy of Jaromir Koutek.
NEW! - support for loadable modules
For work in progress, see the comments in ide.c, ide-cd.c, and triton.c.
Note that there is now a group actively working on support for the Promise
caching IDE cards, such as the DC4030VL, and early results are encouraging.
Look for this support to be added to the kernel soon.
For work in progress, see the comments in ide.c, ide-cd.c, triton.c, ...
*** IMPORTANT NOTICES: BUGGY IDE CHIPSETS CAN CORRUPT DATA!!
*** =================
......@@ -258,7 +257,7 @@ Summary of ide driver parameters for kernel "command line":
"hdx=slow" : insert a huge pause after each access to the data
port. Should be used only as a last resort.
"idebus=xx" : inform IDE driver of VESA/PCI bus speed in Mhz,
"idebus=xx" : inform IDE driver of VESA/PCI bus speed in MHz,
where "xx" is between 20 and 66 inclusive,
used when tuning chipset PIO modes.
For PCI bus, 25 is correct for a P75 system,
......@@ -311,7 +310,7 @@ decoding and tri-state buffers, although several newer localbus cards go much
beyond the basics. When purchasing a localbus IDE interface, avoid cards with
an onboard BIOS and those which require special drivers. Instead, look for a
card which uses hardware switches/jumpers to select the interface timing speed,
to allow much faster data transfers than the original 8Mhz ISA bus allows.
to allow much faster data transfers than the original 8MHz ISA bus allows.
ATA = AT (the old IBM 286 computer) Attachment Interface, a draft American
National Standard for connecting hard drives to PCs. This is the official
......
VERSION = 2
PATCHLEVEL = 1
SUBLEVEL = 7
SUBLEVEL = 8
ARCH = i386
......@@ -313,7 +313,7 @@ clean: archclean
rm -f core `find . -type f -name 'core' -print`
rm -f vmlinux System.map
rm -f .tmp* drivers/sound/configure
rm -fr modules/*
rm -f modules/*
rm -f submenu*
mrproper: clean
......
......@@ -6,7 +6,7 @@ OBJS = __divqu.o __remqu.o __divlu.o __remlu.o memset.o memcpy.o io.o \
checksum.o csum_partial_copy.o strlen.o \
strcat.o strcpy.o strncat.o strncpy.o stxcpy.o stxncpy.o \
strchr.o strrchr.o \
copy_user.o clear_user.o strncpy_from_user.o
copy_user.o clear_user.o strncpy_from_user.o strlen_user.o
lib.a: $(OBJS)
$(AR) rcs lib.a $(OBJS)
......
/*
* arch/alpha/lib/strlen_user.S
*
* Just like strlen except returns -EFAULT if an exception occurs
* before the terminator is found.
*/
#include <alpha/regdef.h>
/* Allow an exception for an insn; exit if we get one. */
#define EX(x,y...) \
99: x,##y; \
.section __ex_table,"a"; \
.gprel32 99b; \
lda zero, $exception-99b(v0); \
.text
.set noreorder
.set noat
.text
.globl strlen_user
.ent strlen_user
.frame sp, 0, ra
.align 3
strlen_user:
.prologue 0
EX( ldq_u t0, 0(a0) ) # load first quadword (a0 may be misaligned)
lda t1, -1(zero)
insqh t1, a0, t1
andnot a0, 7, v0
or t1, t0, t0
nop # dual issue the next two on ev5
cmpbge zero, t0, t1 # t1 <- bitmask: bit i == 1 <==> i-th byte == 0
bne t1, $found
$loop: EX( ldq t0, 8(v0) )
addq v0, 8, v0 # addr += 8
cmpbge zero, t0, t1
beq t1, $loop
$found: negq t1, t2 # clear all but least set bit
and t1, t2, t1
and t1, 0xf0, t2 # binary search for that set bit
and t1, 0xcc, t3
and t1, 0xaa, t4
cmovne t2, 4, t2
cmovne t3, 2, t3
cmovne t4, 1, t4
addq t2, t3, t2
addq v0, t4, v0
addq v0, t2, v0
nop # dual issue next two on ev4 and ev5
subq v0, a0, v0
$exception:
ret
.end strlen_user
......@@ -39,8 +39,10 @@ CONFIG_BLK_DEV_IDE=y
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDE_PCMCIA is not set
CONFIG_BLK_DEV_CMD640=y
# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
......
......@@ -271,15 +271,11 @@ ENTRY(system_call)
#ifdef __SMP__
ENTER_KERNEL
#endif
movl $-ENOSYS,EAX(%esp)
cmpl $(NR_syscalls),%eax
jae ret_from_sys_call
movl SYMBOL_NAME(sys_call_table)(,%eax,4),%eax
testl %eax,%eax
je ret_from_sys_call
jae badsys
testb $0x20,flags(%ebx) # PF_TRACESYS
jne tracesys
call *%eax
call SYMBOL_NAME(sys_call_table)(,%eax,4)
movl %eax,EAX(%esp) # save the return value
ALIGN
.globl ret_from_sys_call
......@@ -327,6 +323,9 @@ tracesys:
movl %eax,EAX(%esp) # save the return value
call SYMBOL_NAME(syscall_trace)
jmp ret_from_sys_call
badsys:
movl $-ENOSYS,EAX(%esp)
jmp ret_from_sys_call
ENTRY(divide_error)
......@@ -452,6 +451,11 @@ ENTRY(page_fault)
pushl $ SYMBOL_NAME(do_page_fault)
jmp error_code
ENTRY(spurious_interrupt_bug)
pushl $0
pushl $ SYMBOL_NAME(do_spurious_interrupt_bug)
jmp error_code
.data
ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_setup) /* 0 */
......@@ -591,7 +595,7 @@ ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_bdflush)
.long SYMBOL_NAME(sys_sysfs) /* 135 */
.long SYMBOL_NAME(sys_personality)
.long 0 /* for afs_syscall */
.long SYMBOL_NAME(sys_ni_syscall) /* for afs_syscall */
.long SYMBOL_NAME(sys_setfsuid)
.long SYMBOL_NAME(sys_setfsgid)
.long SYMBOL_NAME(sys_llseek) /* 140 */
......@@ -620,4 +624,6 @@ ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_mremap)
.long SYMBOL_NAME(sys_setresuid)
.long SYMBOL_NAME(sys_getresuid)
.space (NR_syscalls-165)*4
.rept NR_syscalls-165
.long SYMBOL_NAME(sys_ni_syscall)
.endr
......@@ -522,7 +522,7 @@ int probe_irq_off (unsigned long irqs)
irqmask = (((unsigned int)cache_A1)<<8) | (unsigned int)cache_21;
#ifdef DEBUG
printk("probe_irq_off: irqs=0x%04x irqmask=0x%04x\n", irqs, irqmask);
printk("probe_irq_off: irqs=0x%04lx irqmask=0x%04x\n", irqs, irqmask);
#endif
irqs &= irqmask;
if (!irqs)
......
......@@ -185,7 +185,7 @@ void setup_arch(char **cmdline_p,
#ifdef CONFIG_BLK_DEV_INITRD
if (LOADER_TYPE) {
initrd_start = INITRD_START + PAGE_OFFSET;
initrd_start = INITRD_START ? INITRD_START + PAGE_OFFSET : 0;
initrd_end = initrd_start+INITRD_SIZE;
if (initrd_end > memory_end) {
printk("initrd extends beyond end of memory "
......
......@@ -20,10 +20,13 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/time.h>
#include <linux/delay.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/delay.h>
#include <linux/mc146818rtc.h>
#include <linux/timex.h>
......@@ -462,6 +465,21 @@ void time_init(void)
needs more debugging. */
if (x86_capability & 16) {
do_gettimeoffset = do_fast_gettimeoffset;
if( strcmp( x86_vendor_id, "AuthenticAMD" ) == 0 ) {
if( x86 == 5 ) {
if( x86_model == 0 ) {
/* turn on cycle counters during power down */
__asm__ __volatile__ (" movl $0x83, %%ecx \n \
rdmsr \n \
orl $1,%%eax \n \
wrmsr \n "
: : : "ax", "cx", "dx" );
udelay(500);
}
}
}
/* read Pentium cycle counter */
__asm__(".byte 0x0f,0x31"
:"=a" (init_timer_cc.low),
......
......@@ -81,6 +81,7 @@ asmlinkage void page_fault(void);
asmlinkage void coprocessor_error(void);
asmlinkage void reserved(void);
asmlinkage void alignment_check(void);
asmlinkage void spurious_interrupt_bug(void);
int kstack_depth_to_print = 24;
......@@ -174,8 +175,8 @@ DO_ERROR( 9, SIGFPE, "coprocessor segment overrun", coprocessor_segment_overrun
DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS, current)
DO_ERROR(11, SIGBUS, "segment not present", segment_not_present, current)
DO_ERROR(12, SIGBUS, "stack segment", stack_segment, current)
DO_ERROR(15, SIGSEGV, "reserved", reserved, current)
DO_ERROR(17, SIGSEGV, "alignment check", alignment_check, current)
DO_ERROR(18, SIGSEGV, "reserved", reserved, current)
asmlinkage void do_general_protection(struct pt_regs * regs, long error_code)
{
......@@ -259,6 +260,12 @@ asmlinkage void do_coprocessor_error(struct pt_regs * regs, long error_code)
math_error();
}
asmlinkage void do_spurious_interrupt_bug(struct pt_regs * regs,
long error_code)
{
printk("Ignoring P6 Local APIC Spurious Interrupt Bug...\n");
}
/*
* 'math_state_restore()' saves the current math information in the
* old math state array, and gets the new ones from the current task
......@@ -344,7 +351,7 @@ void trap_init(void)
set_trap_gate(12,&stack_segment);
set_trap_gate(13,&general_protection);
set_trap_gate(14,&page_fault);
set_trap_gate(15,&reserved);
set_trap_gate(15,&spurious_interrupt_bug);
set_trap_gate(16,&coprocessor_error);
set_trap_gate(17,&alignment_check);
for (i=18;i<48;i++)
......
......@@ -2,6 +2,8 @@
* linux/arch/i386/mm/extable.c
*/
#include <linux/config.h>
#include <linux/module.h>
#include <asm/uaccess.h>
extern const struct exception_table_entry __start___ex_table[];
......@@ -37,6 +39,9 @@ unsigned long
search_exception_table(unsigned long addr)
{
unsigned long ret;
#ifdef CONFIG_MODULES
struct module *mp;
#endif
/* Search the kernel's table first. */
ret = search_one_table(__start___ex_table,
......@@ -44,7 +49,15 @@ search_exception_table(unsigned long addr)
if (ret)
return ret;
/* FIXME -- search the module's tables here */
#ifdef CONFIG_MODULES
for (mp = module_list; mp != NULL; mp = mp->next) {
if (mp->exceptinfo.start != NULL) {
ret = search_one_table(mp->exceptinfo.start,
mp->exceptinfo.stop-1, addr);
if (ret)
return ret;
}
}
#endif
return 0;
}
......@@ -71,9 +71,12 @@ mainmenu_option next_comment
comment 'Floppy, IDE, and other block devices'
tristate 'Normal floppy disk support' CONFIG_BLK_DEV_FD
bool 'IDE harddisk support' CONFIG_BLK_DEV_IDE
if [ "$CONFIG_BLK_DEV_IDE" = "y" ]; then
bool ' Include IDE/ATAPI CDROM support' CONFIG_BLK_DEV_IDECD
tristate 'Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support' CONFIG_BLK_DEV_IDE
if [ "$CONFIG_BLK_DEV_IDE" != "n" ]; then
dep_tristate ' Include IDE/ATA-2 DISK support' CONFIG_BLK_DEV_IDEDISK $CONFIG_BLK_DEV_IDE
dep_tristate ' Include IDE/ATAPI CDROM support' CONFIG_BLK_DEV_IDECD $CONFIG_BLK_DEV_IDE
dep_tristate ' Include IDE/ATAPI TAPE support' CONFIG_BLK_DEV_IDETAPE $CONFIG_BLK_DEV_IDE
dep_tristate ' Include IDE/ATAPI FLOPPY support' CONFIG_BLK_DEV_IDEFLOPPY $CONFIG_BLK_DEV_IDE
fi
if [ "$CONFIG_AMIGA" = "y" ]; then
tristate 'Amiga Zorro II ramdisk support' CONFIG_AMIGA_Z2RAM
......
......@@ -5,34 +5,40 @@ mainmenu_option next_comment
comment 'Floppy, IDE, and other block devices'
tristate 'Normal floppy disk support' CONFIG_BLK_DEV_FD
bool 'Enhanced IDE/MFM/RLL disk/cdrom/tape support' CONFIG_BLK_DEV_IDE
tristate 'Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support' CONFIG_BLK_DEV_IDE
comment 'Please see Documentation/ide.txt for help/info on IDE drives'
if [ "$CONFIG_BLK_DEV_IDE" = "n" ]; then
bool 'Old harddisk (MFM/RLL/IDE) driver' CONFIG_BLK_DEV_HD_ONLY
else
bool ' Use old disk-only driver on primary interface' CONFIG_BLK_DEV_HD_IDE
bool ' Include IDE/ATAPI CDROM support' CONFIG_BLK_DEV_IDECD
bool ' Include IDE/ATAPI TAPE support' CONFIG_BLK_DEV_IDETAPE
bool ' Support removable IDE interfaces (PCMCIA)' CONFIG_BLK_DEV_IDE_PCMCIA
bool ' CMD640 chipset bugfix/support' CONFIG_BLK_DEV_CMD640
if [ "$CONFIG_BLK_DEV_CMD640" = "y" ]; then
bool ' CMD640 enhanced support' CONFIG_BLK_DEV_CMD640_ENHANCED
fi
if [ "$CONFIG_PCI" = "y" ]; then
bool ' RZ1000 chipset bugfix/support' CONFIG_BLK_DEV_RZ1000
bool ' Intel 82371 PIIX (Triton I/II) DMA support' CONFIG_BLK_DEV_TRITON
fi
bool ' Other IDE chipset support' CONFIG_IDE_CHIPSETS
if [ "$CONFIG_IDE_CHIPSETS" = "y" ]; then
comment 'Note: most of these also require special kernel boot parameters'
bool ' ALI M14xx support' CONFIG_BLK_DEV_ALI14XX
bool ' DTC-2278 support' CONFIG_BLK_DEV_DTC2278
bool ' Holtek HT6560B support' CONFIG_BLK_DEV_HT6560B
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
bool ' PROMISE DC4030 support (EXPERIMENTAL)' CONFIG_BLK_DEV_PROMISE
dep_tristate ' Include IDE/ATA-2 DISK support' CONFIG_BLK_DEV_IDEDISK $CONFIG_BLK_DEV_IDE
dep_tristate ' Include IDE/ATAPI CDROM support' CONFIG_BLK_DEV_IDECD $CONFIG_BLK_DEV_IDE
dep_tristate ' Include IDE/ATAPI TAPE support' CONFIG_BLK_DEV_IDETAPE $CONFIG_BLK_DEV_IDE
dep_tristate ' Include IDE/ATAPI FLOPPY support' CONFIG_BLK_DEV_IDEFLOPPY $CONFIG_BLK_DEV_IDE
if [ "$CONFIG_BLK_DEV_IDE" = "y" ]; then
bool ' CMD640 chipset bugfix/support' CONFIG_BLK_DEV_CMD640
if [ "$CONFIG_BLK_DEV_CMD640" = "y" ]; then
bool ' CMD640 enhanced support' CONFIG_BLK_DEV_CMD640_ENHANCED
fi
if [ "$CONFIG_PCI" = "y" ]; then
bool ' RZ1000 chipset bugfix/support' CONFIG_BLK_DEV_RZ1000
bool ' Intel 82371 PIIX (Triton I/II) DMA support' CONFIG_BLK_DEV_TRITON
fi
bool ' Other IDE chipset support' CONFIG_IDE_CHIPSETS
if [ "$CONFIG_IDE_CHIPSETS" = "y" ]; then
comment 'Note: most of these also require special kernel boot parameters'
bool ' ALI M14xx support' CONFIG_BLK_DEV_ALI14XX
bool ' DTC-2278 support' CONFIG_BLK_DEV_DTC2278
bool ' Holtek HT6560B support' CONFIG_BLK_DEV_HT6560B
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
bool ' PROMISE DC4030 support (EXPERIMENTAL)' CONFIG_BLK_DEV_PROMISE
if [ "$CONFIG_PCI" = "y" ]; then
bool ' OPTi 82C621 support (EXPERIMENTAL)' CONFIG_BLK_DEV_OPTI621
fi
fi
bool ' QDI QD6580 support' CONFIG_BLK_DEV_QD6580
bool ' UMC 8672 support' CONFIG_BLK_DEV_UMC8672
fi
bool ' QDI QD6580 support' CONFIG_BLK_DEV_QD6580
bool ' UMC 8672 support' CONFIG_BLK_DEV_UMC8672
fi
fi
......
......@@ -50,7 +50,11 @@ L_OBJS += hd.o
endif
ifeq ($(CONFIG_BLK_DEV_IDE),y)
L_OBJS += ide.o
L_OBJS += ide.o ide-probe.o
else
ifeq ($(CONFIG_BLK_DEV_IDE),m)
M_OBJS += ide.o ide-probe.o
endif
endif
ifeq ($(CONFIG_BLK_DEV_RZ1000),y)
......@@ -89,12 +93,40 @@ ifeq ($(CONFIG_BLK_DEV_PROMISE),y)
L_OBJS += promise.o
endif
ifeq ($(CONFIG_BLK_DEV_OPTI621),y)
L_OBJS += opti621.o
endif
ifeq ($(CONFIG_BLK_DEV_IDEDISK),y)
L_OBJS += ide-disk.o
else
ifeq ($(CONFIG_BLK_DEV_IDEDISK),m)
M_OBJS += ide-disk.o
endif
endif
ifeq ($(CONFIG_BLK_DEV_IDECD),y)
L_OBJS += ide-cd.o
else
ifeq ($(CONFIG_BLK_DEV_IDECD),m)
M_OBJS += ide-cd.o
endif
endif
ifeq ($(CONFIG_BLK_DEV_IDETAPE),y)
L_OBJS += ide-tape.o
else
ifeq ($(CONFIG_BLK_DEV_IDETAPE),m)
M_OBJS += ide-tape.o
endif
endif
ifeq ($(CONFIG_BLK_DEV_IDEFLOPPY),y)
L_OBJS += ide-floppy.o
else
ifeq ($(CONFIG_BLK_DEV_IDEFLOPPY),m)
M_OBJS += ide-floppy.o
endif
endif
ifeq ($(CONFIG_BLK_DEV_XD),y)
......
......@@ -431,9 +431,9 @@ static void setup_device_ptrs (void)
for (i = 0; i < MAX_HWIFS; i++) {
ide_hwif_t *hwif = &ide_hwifs[i];
if (hwif->chipset == ide_unknown || hwif->chipset == ide_generic) {
if (hwif->io_base == 0x1f0)
if (hwif->io_ports[IDE_DATA_OFFSET] == 0x1f0)
cmd_hwif0 = hwif;
else if (hwif->io_base == 0x170)
else if (hwif->io_ports[IDE_DATA_OFFSET] == 0x170)
cmd_hwif1 = hwif;
}
}
......@@ -678,11 +678,10 @@ static void cmd640_tune_drive (ide_drive_t *drive, byte mode_wanted)
(void) ide_get_best_pio_mode (drive, mode_wanted, 5, &d);
cmd640_set_mode (index, d.pio_mode, d.cycle_time);
printk ("%s: selected cmd640 PIO mode%d (%dns) %s/IORDY%s",
printk ("%s: selected cmd640 PIO mode%d (%dns)%s",
drive->name,
d.pio_mode,
d.cycle_time,
d.use_iordy ? "w" : "wo",
d.overridden ? " (overriding vendor mode)" : "");
display_clocks(index);
}
......
This diff is collapsed.
......@@ -66,7 +66,6 @@ char *disk_name (struct gendisk *hd, int minor, char *buf)
const char *maj = hd->major_name;
char unit = (minor >> hd->minor_shift) + 'a';
#ifdef CONFIG_BLK_DEV_IDE
/*
* IDE devices use multiple major numbers, but the drives
* are named as: {hda,hdb}, {hdc,hdd}, {hde,hdf}, {hdg,hdh}..
......@@ -82,7 +81,6 @@ char *disk_name (struct gendisk *hd, int minor, char *buf)
case IDE0_MAJOR:
maj = "hd";
}
#endif
part = minor & ((1 << hd->minor_shift) - 1);
if (part)
sprintf(buf, "%s%c%d", maj, unit, part);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -172,14 +172,16 @@ int init_dc4030 (void)
hwif->selectproc = second_hwif->selectproc = &promise_selectproc;
/* Shift the remaining interfaces down by one */
for (i=MAX_HWIFS-1 ; i > hwif->index+1 ; i--) {
ide_hwif_t *h = &ide_hwifs[i];
printk("Shifting i/f %d values to i/f %d\n",i-1,i);
ide_hwifs[i].io_base = ide_hwifs[i-1].io_base;
ide_hwifs[i].ctl_port = ide_hwifs[i-1].ctl_port;
ide_hwifs[i].noprobe = ide_hwifs[i-1].noprobe;
ide_init_hwif_ports(h->io_ports, (h-1)->io_ports[IDE_DATA_OFFSET], NULL);
h->io_ports[IDE_CONTROL_OFFSET] = (h-1)->io_ports[IDE_CONTROL_OFFSET];
h->noprobe = (h-1)->noprobe;
}
second_hwif->is_promise2 = 1;
second_hwif->io_base = hwif->io_base;
second_hwif->ctl_port = hwif->ctl_port;
ide_init_hwif_ports(second_hwif->io_ports, hwif->io_ports[IDE_DATA_OFFSET], NULL);
second_hwif->io_ports[IDE_CONTROL_OFFSET] = hwif->io_ports[IDE_CONTROL_OFFSET];
second_hwif->irq = hwif->irq;
for (i=0; i<2 ; i++) {
hwif->drives[i].io_32bit = 3;
......@@ -309,12 +311,11 @@ static void promise_write (ide_drive_t *drive)
void do_promise_io (ide_drive_t *drive, struct request *rq)
{
unsigned long timeout;
unsigned short io_base = HWIF(drive)->io_base;
byte stat;
if (rq->cmd == READ) {
ide_set_handler(drive, &promise_read_intr, WAIT_CMD);
OUT_BYTE(PROMISE_READ, io_base+IDE_COMMAND_OFFSET);
OUT_BYTE(PROMISE_READ, IDE_COMMAND_REG);
/* The card's behaviour is odd at this point. If the data is
available, DRQ will be true, and no interrupt will be
generated by the card. If this is the case, we need to simulate
......@@ -336,7 +337,7 @@ void do_promise_io (ide_drive_t *drive, struct request *rq)
*/
return;
}
if(IN_BYTE(io_base+IDE_SELECT_OFFSET) & 0x01)
if(IN_BYTE(IDE_SELECT_REG) & 0x01)
return;
udelay(1);
} while (jiffies < timeout);
......@@ -345,7 +346,7 @@ void do_promise_io (ide_drive_t *drive, struct request *rq)
return;
}
if (rq->cmd == WRITE) {
OUT_BYTE(PROMISE_WRITE, io_base+IDE_COMMAND_OFFSET);
OUT_BYTE(PROMISE_WRITE, IDE_COMMAND_REG);
if (ide_wait_stat(drive, DATA_READY, drive->bad_wstat, WAIT_DRQ)) {
printk("%s: no DRQ after issuing PROMISE_WRITE\n", drive->name);
return;
......
This diff is collapsed.
......@@ -64,6 +64,7 @@ static const char *mcdx_c_version
#include <linux/mm.h>
#include <linux/malloc.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <linux/major.h>
#define MAJOR_NR MITSUMI_X_CDROM_MAJOR
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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