summaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/README.fd7
-rw-r--r--drivers/block/ataflop.c2
-rw-r--r--drivers/block/floppy.c5
-rw-r--r--drivers/block/ide-probe.c4
-rw-r--r--drivers/block/ide.h3
-rw-r--r--drivers/block/rd.c7
-rw-r--r--drivers/block/swim3.c2
7 files changed, 21 insertions, 9 deletions
diff --git a/drivers/block/README.fd b/drivers/block/README.fd
index 3ceb16c0b..d05120c59 100644
--- a/drivers/block/README.fd
+++ b/drivers/block/README.fd
@@ -179,6 +179,13 @@ floppy=fifo
Uses a less noisy way to clear the disk change line (which
doesn't involve seeks). Implied by daring.
+ floppy=<nr>,irq
+ Sets the floppy IRQ to <nr> instead of 6
+
+ floppy=<nr>,dma
+ Sets the floppy DMA channel to <nr> instead of 2
+
+
Supporting utilities and additional documentation:
==================================================
diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c
index 7a08808f2..77add0b3a 100644
--- a/drivers/block/ataflop.c
+++ b/drivers/block/ataflop.c
@@ -1981,7 +1981,7 @@ static int floppy_release( struct inode * inode, struct file * filp )
if (!filp || (filp->f_mode & (2 | OPEN_WRITE_BIT)))
/* if the file is mounted OR (writable now AND writable at open
time) Linus: Does this cover all cases? */
- block_fsync (inode, filp);
+ block_fsync (filp, filp->f_dentry);
if (fd_ref[drive] < 0)
fd_ref[drive] = 0;
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index 04ea60ff8..7af5aeee1 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -3502,7 +3502,7 @@ static int floppy_release(struct inode * inode, struct file * filp)
if (!filp || (filp->f_mode & (2 | OPEN_WRITE_BIT)))
/* if the file is mounted OR (writable now AND writable at
* open time) Linus: Does this cover all cases? */
- block_fsync(inode,filp);
+ block_fsync(filp, filp->f_dentry);
if (UDRS->fd_ref < 0)
UDRS->fd_ref=0;
@@ -3865,6 +3865,9 @@ static struct param_table {
{ "all_drives", 0, &allowed_drive_mask, 0xff, 0 }, /* obsolete */
{ "asus_pci", 0, &allowed_drive_mask, 0x33, 0},
+ { "irq", 0, &FLOPPY_IRQ, 6, 0 },
+ { "dma", 0, &FLOPPY_DMA, 2, 0 },
+
{ "daring", daring, 0, 1, 0},
{ "two_fdc", 0, &FDC2, 0x370, 0 },
diff --git a/drivers/block/ide-probe.c b/drivers/block/ide-probe.c
index 25b3d54fa..ddaf1b0c6 100644
--- a/drivers/block/ide-probe.c
+++ b/drivers/block/ide-probe.c
@@ -1,5 +1,5 @@
/*
- * linux/drivers/block/ide-probe.c Version 1.01 Jan 26, 1997
+ * linux/drivers/block/ide-probe.c Version 1.02 Jul 29, 1997
*
* Copyright (C) 1994-1996 Linus Torvalds & authors (see below)
*/
@@ -38,6 +38,8 @@
*
* Version 1.00 move drive probing code from ide.c to ide-probe.c
* Version 1.01 fix compilation problem for m68k
+ * Version 1.02 increase WAIT_PIDENTIFY to avoid CD-ROM locking at boot
+ * by Andrea Arcangeli <arcangeli@mbox.queen.it>
*/
#undef REALLY_SLOW_IO /* most systems can safely undef this */
diff --git a/drivers/block/ide.h b/drivers/block/ide.h
index ecfdc12ea..eb3f54a55 100644
--- a/drivers/block/ide.h
+++ b/drivers/block/ide.h
@@ -158,7 +158,8 @@ typedef unsigned char byte; /* used everywhere */
#else
#define WAIT_READY (3*HZ/100) /* 30msec - should be instantaneous */
#endif /* CONFIG_APM */
-#define WAIT_PIDENTIFY (1*HZ) /* 1sec - should be less than 3ms (?) */
+#define WAIT_PIDENTIFY (10*HZ) /* 10sec - should be less than 3ms (?)
+ if all ATAPI CD is closed at boot */
#define WAIT_WORSTCASE (30*HZ) /* 30sec - worst case when spinning up */
#define WAIT_CMD (10*HZ) /* 10sec - maximum wait for an IRQ to happen */
#define WAIT_MIN_SLEEP (2*HZ/100) /* 20msec - minimum sleep time */
diff --git a/drivers/block/rd.c b/drivers/block/rd.c
index b8239df9b..759dbbca8 100644
--- a/drivers/block/rd.c
+++ b/drivers/block/rd.c
@@ -360,7 +360,7 @@ identify_ramdisk_image(kdev_t device, struct file *fp, int start_block))
* Read block 0 to test for gzipped kernel
*/
if (fp->f_op->llseek)
- fp->f_op->llseek(fp->f_dentry->d_inode, fp, start_block * BLOCK_SIZE, 0);
+ fp->f_op->llseek(fp, start_block * BLOCK_SIZE, 0);
fp->f_pos = start_block * BLOCK_SIZE;
fp->f_op->read(fp->f_dentry->d_inode, fp, buf, size);
@@ -390,8 +390,7 @@ identify_ramdisk_image(kdev_t device, struct file *fp, int start_block))
* Read block 1 to test for minix and ext2 superblock
*/
if (fp->f_op->llseek)
- fp->f_op->llseek(fp->f_dentry->d_inode, fp,
- (start_block+1) * BLOCK_SIZE, 0);
+ fp->f_op->llseek(fp, (start_block+1) * BLOCK_SIZE, 0);
fp->f_pos = (start_block+1) * BLOCK_SIZE;
fp->f_op->read(fp->f_dentry->d_inode, fp, buf, size);
@@ -421,7 +420,7 @@ identify_ramdisk_image(kdev_t device, struct file *fp, int start_block))
done:
if (fp->f_op->llseek)
- fp->f_op->llseek(fp->f_dentry->d_inode, fp, start_block * BLOCK_SIZE, 0);
+ fp->f_op->llseek(fp, start_block * BLOCK_SIZE, 0);
fp->f_pos = start_block * BLOCK_SIZE;
if ((nblocks > 0) && blk_size[MAJOR(device)]) {
diff --git a/drivers/block/swim3.c b/drivers/block/swim3.c
index 4dc442673..12be2e362 100644
--- a/drivers/block/swim3.c
+++ b/drivers/block/swim3.c
@@ -842,7 +842,7 @@ static int floppy_release(struct inode *inode, struct file *filp)
return -ENXIO;
fs = &floppy_states[0];
if (filp == 0 || (filp->f_mode & (2 | OPEN_WRITE_BIT)))
- block_fsync(inode, filp);
+ block_fsync(filp, filp->f_dentry);
sw = fs->swim3;
if (fs->ref_count > 0 && --fs->ref_count == 0) {
swim3_action(fs, MOTOR_OFF);