Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 173838
b: refs/heads/master
c: 4e5b932
h: refs/heads/master
v: v3
  • Loading branch information
David S. Miller committed Dec 3, 2009
1 parent 73aba67 commit d819eab
Show file tree
Hide file tree
Showing 10 changed files with 38 additions and 120 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f9288e1525e1cca59fdca56463ad9f5a6625dffe
refs/heads/master: 4e5b932c829e9a6bf32ec80c6e1ce60121eef124
45 changes: 10 additions & 35 deletions trunk/drivers/ide/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,50 +7,25 @@ config HAVE_IDE
bool

menuconfig IDE
tristate "ATA/ATAPI/MFM/RLL support"
tristate "ATA/ATAPI/MFM/RLL support (DEPRECATED)"
depends on HAVE_IDE
depends on BLOCK
---help---
If you say Y here, your kernel will be able to manage low cost mass
storage units such as ATA/(E)IDE and ATAPI units. The most common
cases are IDE hard drives and ATAPI CD-ROM drives.

If your system is pure SCSI and doesn't use these interfaces, you
can say N here.

Integrated Disk Electronics (IDE aka ATA-1) is a connecting standard
for mass storage units such as hard disks. It was designed by
Western Digital and Compaq Computer in 1984. It was then named
ST506. Quite a number of disks use the IDE interface.

AT Attachment (ATA) is the superset of the IDE specifications.
ST506 was also called ATA-1.

Fast-IDE is ATA-2 (also named Fast ATA), Enhanced IDE (EIDE) is
ATA-3. It provides support for larger disks (up to 8.4GB by means of
the LBA standard), more disks (4 instead of 2) and for other mass
storage units such as tapes and cdrom. UDMA/33 (aka UltraDMA/33) is
ATA-4 and provides faster (and more CPU friendly) transfer modes
than previous PIO (Programmed processor Input/Output) from previous
ATA/IDE standards by means of fast DMA controllers.

ATA Packet Interface (ATAPI) is a protocol used by EIDE tape and
CD-ROM drives, similar in many respects to the SCSI protocol.

SMART IDE (Self Monitoring, Analysis and Reporting Technology) was
designed in order to prevent data corruption and disk crash by
detecting pre hardware failure conditions (heat, access time, and
the like...). Disks built since June 1995 may follow this standard.
The kernel itself doesn't manage this; however there are quite a
number of user programs such as smart that can query the status of
SMART parameters from disk drives.
If you say Y here, your kernel will be able to manage ATA/(E)IDE and
ATAPI units. The most common cases are IDE hard drives and ATAPI
CD-ROM drives.

This subsystem is currently in maintenance mode with only bug fix
changes applied. Users of ATA hardware are encouraged to migrate to
the newer ATA subsystem ("Serial ATA (prod) and Parallel ATA
(experimental) drivers") which is more actively maintained.

To compile this driver as a module, choose M here: the
module will be called ide-core.

For further information, please read <file:Documentation/ide/ide.txt>.

If unsure, say Y.
If unsure, say N.

if IDE

Expand Down
7 changes: 3 additions & 4 deletions trunk/drivers/ide/au1xxx-ide.c
Original file line number Diff line number Diff line change
Expand Up @@ -532,14 +532,13 @@ static int au_ide_probe(struct platform_device *dev)
goto out;
}

if (!request_mem_region(res->start, res->end - res->start + 1,
dev->name)) {
if (!request_mem_region(res->start, resource_size(res), dev->name)) {
pr_debug("%s: request_mem_region failed\n", DRV_NAME);
ret = -EBUSY;
goto out;
}

ahwif->regbase = (u32)ioremap(res->start, res->end - res->start + 1);
ahwif->regbase = (u32)ioremap(res->start, resource_size(res));
if (ahwif->regbase == 0) {
ret = -ENOMEM;
goto out;
Expand Down Expand Up @@ -575,7 +574,7 @@ static int au_ide_remove(struct platform_device *dev)
iounmap((void *)ahwif->regbase);

res = platform_get_resource(dev, IORESOURCE_MEM, 0);
release_mem_region(res->start, res->end - res->start + 1);
release_mem_region(res->start, resource_size(res));

return 0;
}
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/ide/cs5535.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ static int __devinit cs5535_init_one(struct pci_dev *dev,

static const struct pci_device_id cs5535_pci_tbl[] = {
{ PCI_VDEVICE(NS, PCI_DEVICE_ID_NS_CS5535_IDE), 0 },
{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CS5535_IDE), },
{ 0, },
};

Expand Down
65 changes: 0 additions & 65 deletions trunk/drivers/ide/hpt366.c
Original file line number Diff line number Diff line change
Expand Up @@ -297,68 +297,6 @@ static u32 twenty_five_base_hpt36x[] = {
/* XFER_PIO_0 */ 0xc0d08585
};

#if 0
/* These are the timing tables from the HighPoint open source drivers... */
static u32 thirty_three_base_hpt37x[] = {
/* XFER_UDMA_6 */ 0x12446231, /* 0x12646231 ?? */
/* XFER_UDMA_5 */ 0x12446231,
/* XFER_UDMA_4 */ 0x12446231,
/* XFER_UDMA_3 */ 0x126c6231,
/* XFER_UDMA_2 */ 0x12486231,
/* XFER_UDMA_1 */ 0x124c6233,
/* XFER_UDMA_0 */ 0x12506297,

/* XFER_MW_DMA_2 */ 0x22406c31,
/* XFER_MW_DMA_1 */ 0x22406c33,
/* XFER_MW_DMA_0 */ 0x22406c97,

/* XFER_PIO_4 */ 0x06414e31,
/* XFER_PIO_3 */ 0x06414e42,
/* XFER_PIO_2 */ 0x06414e53,
/* XFER_PIO_1 */ 0x06814e93,
/* XFER_PIO_0 */ 0x06814ea7
};

static u32 fifty_base_hpt37x[] = {
/* XFER_UDMA_6 */ 0x12848242,
/* XFER_UDMA_5 */ 0x12848242,
/* XFER_UDMA_4 */ 0x12ac8242,
/* XFER_UDMA_3 */ 0x128c8242,
/* XFER_UDMA_2 */ 0x120c8242,
/* XFER_UDMA_1 */ 0x12148254,
/* XFER_UDMA_0 */ 0x121882ea,

/* XFER_MW_DMA_2 */ 0x22808242,
/* XFER_MW_DMA_1 */ 0x22808254,
/* XFER_MW_DMA_0 */ 0x228082ea,

/* XFER_PIO_4 */ 0x0a81f442,
/* XFER_PIO_3 */ 0x0a81f443,
/* XFER_PIO_2 */ 0x0a81f454,
/* XFER_PIO_1 */ 0x0ac1f465,
/* XFER_PIO_0 */ 0x0ac1f48a
};

static u32 sixty_six_base_hpt37x[] = {
/* XFER_UDMA_6 */ 0x1c869c62,
/* XFER_UDMA_5 */ 0x1cae9c62, /* 0x1c8a9c62 */
/* XFER_UDMA_4 */ 0x1c8a9c62,
/* XFER_UDMA_3 */ 0x1c8e9c62,
/* XFER_UDMA_2 */ 0x1c929c62,
/* XFER_UDMA_1 */ 0x1c9a9c62,
/* XFER_UDMA_0 */ 0x1c829c62,

/* XFER_MW_DMA_2 */ 0x2c829c62,
/* XFER_MW_DMA_1 */ 0x2c829c66,
/* XFER_MW_DMA_0 */ 0x2c829d2e,

/* XFER_PIO_4 */ 0x0c829c62,
/* XFER_PIO_3 */ 0x0c829c84,
/* XFER_PIO_2 */ 0x0c829ca6,
/* XFER_PIO_1 */ 0x0d029d26,
/* XFER_PIO_0 */ 0x0d029d5e
};
#else
/*
* The following are the new timing tables with PIO mode data/taskfile transfer
* overclocking fixed...
Expand Down Expand Up @@ -424,16 +362,13 @@ static u32 sixty_six_base_hpt37x[] = {
/* XFER_PIO_1 */ 0x0d02ff26,
/* XFER_PIO_0 */ 0x0d42ff7f
};
#endif

#define HPT366_DEBUG_DRIVE_INFO 0
#define HPT371_ALLOW_ATA133_6 1
#define HPT302_ALLOW_ATA133_6 1
#define HPT372_ALLOW_ATA133_6 1
#define HPT370_ALLOW_ATA100_5 0
#define HPT366_ALLOW_ATA66_4 1
#define HPT366_ALLOW_ATA66_3 1
#define HPT366_MAX_DEVS 8

/* Supported ATA clock frequencies */
enum ata_clock {
Expand Down
21 changes: 15 additions & 6 deletions trunk/drivers/ide/ide-tape.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,8 @@ typedef struct ide_tape_obj {

static DEFINE_MUTEX(idetape_ref_mutex);

static DEFINE_MUTEX(idetape_chrdev_mutex);

static struct class *idetape_sysfs_class;

static void ide_tape_release(struct device *);
Expand Down Expand Up @@ -1457,10 +1459,11 @@ static int idetape_chrdev_open(struct inode *inode, struct file *filp)
if (i >= MAX_HWIFS * MAX_DRIVES)
return -ENXIO;

lock_kernel();
mutex_lock(&idetape_chrdev_mutex);

tape = ide_tape_get(NULL, true, i);
if (!tape) {
unlock_kernel();
mutex_unlock(&idetape_chrdev_mutex);
return -ENXIO;
}

Expand Down Expand Up @@ -1519,12 +1522,15 @@ static int idetape_chrdev_open(struct inode *inode, struct file *filp)
tape->door_locked = DOOR_LOCKED;
}
}
unlock_kernel();
mutex_unlock(&idetape_chrdev_mutex);

return 0;

out_put_tape:
ide_tape_put(tape);
unlock_kernel();

mutex_unlock(&idetape_chrdev_mutex);

return retval;
}

Expand All @@ -1551,7 +1557,8 @@ static int idetape_chrdev_release(struct inode *inode, struct file *filp)
ide_drive_t *drive = tape->drive;
unsigned int minor = iminor(inode);

lock_kernel();
mutex_lock(&idetape_chrdev_mutex);

tape = drive->driver_data;

ide_debug_log(IDE_DBG_FUNC, "enter");
Expand All @@ -1575,7 +1582,9 @@ static int idetape_chrdev_release(struct inode *inode, struct file *filp)
}
clear_bit(ilog2(IDE_AFLAG_BUSY), &drive->atapi_flags);
ide_tape_put(tape);
unlock_kernel();

mutex_unlock(&idetape_chrdev_mutex);

return 0;
}

Expand Down
8 changes: 4 additions & 4 deletions trunk/drivers/ide/ide_platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,14 @@ static int __devinit plat_ide_probe(struct platform_device *pdev)

if (mmio) {
base = devm_ioremap(&pdev->dev,
res_base->start, res_base->end - res_base->start + 1);
res_base->start, resource_size(res_base));
alt_base = devm_ioremap(&pdev->dev,
res_alt->start, res_alt->end - res_alt->start + 1);
res_alt->start, resource_size(res_alt));
} else {
base = devm_ioport_map(&pdev->dev,
res_base->start, res_base->end - res_base->start + 1);
res_base->start, resource_size(res_base));
alt_base = devm_ioport_map(&pdev->dev,
res_alt->start, res_alt->end - res_alt->start + 1);
res_alt->start, resource_size(res_alt));
}

memset(&hw, 0, sizeof(hw));
Expand Down
3 changes: 1 addition & 2 deletions trunk/drivers/ide/slc90e66.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,7 @@ static void slc90e66_set_dma_mode(ide_drive_t *drive, const u8 speed)

if (!(reg48 & u_flag))
pci_write_config_word(dev, 0x48, reg48|u_flag);
/* FIXME: (reg4a & a_speed) ? */
if ((reg4a & u_speed) != u_speed) {
if ((reg4a & a_speed) != u_speed) {
pci_write_config_word(dev, 0x4a, reg4a & ~a_speed);
pci_read_config_word(dev, 0x4a, &reg4a);
pci_write_config_word(dev, 0x4a, reg4a|u_speed);
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/ide/tx4938ide.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ static int __init tx4938ide_probe(struct platform_device *pdev)
return -ENODEV;

if (!devm_request_mem_region(&pdev->dev, res->start,
res->end - res->start + 1, "tx4938ide"))
resource_size(res), "tx4938ide"))
return -EBUSY;
mapbase = (unsigned long)devm_ioremap(&pdev->dev, res->start,
8 << pdata->ioport_shift);
Expand Down
4 changes: 2 additions & 2 deletions trunk/include/linux/ide.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ struct ide_io_ports {
* Timeouts for various operations:
*/
enum {
/* spec allows up to 20ms */
WAIT_DRQ = HZ / 10, /* 100ms */
/* spec allows up to 20ms, but CF cards and SSD drives need more */
WAIT_DRQ = 1 * HZ, /* 1s */
/* some laptops are very slow */
WAIT_READY = 5 * HZ, /* 5s */
/* should be less than 3ms (?), if all ATAPI CD is closed at boot */
Expand Down

0 comments on commit d819eab

Please sign in to comment.