IDE fixes
PATCH 1/1 IDE fixes
Contains cmd64x regression fix from Sergei + some minor fixes.
Please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6.git/
to receive the following updates:
drivers/ide/Kconfig | 4 ---- drivers/ide/cris/ide-cris.c | 3 +-- drivers/ide/ide-io.c | 6 +----- drivers/ide/ide-lib.c | 1 + drivers/ide/pci/cmd64x.c | 5 +++-- drivers/ide/pci/cs5530.c | 3 +-- drivers/ide/pci/it821x.c | 3 +-- drivers/ide/pci/jmicron.c | 3 +-- drivers/ide/pci/sc1200.c | 3 +-- drivers/ide/pci/sis5513.c | 1 - drivers/ide/ppc/pmac.c | 1 + drivers/ide/setup-pci.c | 5 ----- 12 files changed, 11 insertions(+), 27 deletions(-)
Adrian Bunk (1):
ide: BLK_DEV_IDECD help: remove outdated note
Bartlomiej Zolnierkiewicz (6):
ide-pmac: skip conservative PIO "downgrade"
ide: add missing HOB bit clearing to ide_dump_ata_status()
ide: use drive->select.all for REQ_TYPE_ATA_TASK in execute_drive_cmd()
ide: don't BUG() on unsupported transfer modes it821x/jmicron: fix return value of {it821x,jmicron}_init_one()
ide: remove stale/incorrect comment from setup-pci.c
Sergei Shtylyov (1):
cmd64x: don't clear the other channel's interrupt
drivers/ide/Kconfig +0 -4
@@ -203,10 +203,6 @@ config BLK_DEV_IDECD CD-ROM drive, you can say N to all other CD-ROM options, but be sure to say Y or M to "ISO 9660 CD-ROM file system support". - Note that older versions of LILO (LInux LOader) cannot properly deal - with IDE/ATAPI CD-ROMs, so install LILO 16 or higher, available from - <http://lilo.go.dyndns.org/>. - To compile this driver as a module, choose M here: the module will be called ide-cd.
drivers/ide/cris/ide-cris.c +1 -2
@@ -748,8 +748,7 @@ static void cris_set_dma_mode(ide_drive_t *drive, const u8 speed) hold =ATA_DMA2_HOLD ;break ;default : -BUG (); -break ; +return ; }if (speed >=XFER_UDMA_0 )
drivers/ide/ide-io.c +1 -5
@@ -885,7 +885,6 @@ static ide_startstop_t execute_drive_cmd (ide_drive_t *drive,return do_rw_taskfile (drive, args); }else if (rq->cmd_type ==REQ_TYPE_ATA_TASK ) {u8 *args = rq->buffer; -u8 sel;if (!args) goto done;
@@ -903,10 +902,7 @@ static ide_startstop_t execute_drive_cmd (ide_drive_t *drive, hwif->OUTB (args[3 ],IDE_SECTOR_REG ); hwif->OUTB (args[4 ],IDE_LCYL_REG ); hwif->OUTB (args[5 ],IDE_HCYL_REG ); - sel = (args[6 ] & ~0x10 ); -if (drive->select.b.unit) - sel |=0x10 ; - hwif->OUTB (sel,IDE_SELECT_REG ); + hwif->OUTB ((args[6 ] &0xEF )|drive->select.all,IDE_SELECT_REG );ide_cmd (drive, args[0 ], args[2 ], &drive_cmd_intr);return ide_started; }else if (rq->cmd_type ==REQ_TYPE_ATA_CMD ) {
drivers/ide/ide-lib.c +1 -0
@@ -514,6 +514,7 @@ static u8 ide_dump_ata_status(ide_drive_t *drive, const char *msg, u8 stat)if (drive->addressing ==1 ) {__u64 sectors =0 ;u32 low =0 , high =0 ; + hwif->OUTB (drive->ctl&~0x80 ,IDE_CONTROL_REG ); low =ide_read_24 (drive); hwif->OUTB (drive->ctl|0x80 ,IDE_CONTROL_REG ); high =ide_read_24 (drive);
drivers/ide/pci/cmd64x.c +3 -2
@@ -1,5 +1,5 @@/* -* linux/drivers/ide/pci/cmd64x.c Version 1.50 May 10, 2007 +* linux/drivers/ide/pci/cmd64x.c Version 1.51 Nov 8, 2007 * * cmd64x.c: Enable interrupts at initialization time on Ultra/PCI machines. * Due to massive hardware bugs, UltraDMA is only supported
@@ -339,7 +339,8 @@ static int cmd648_ide_dma_end (ide_drive_t *drive)u8 mrdmode =inb (hwif->dma_master +0x01 );/* clear the interrupt bit */ -outb (mrdmode | irq_mask, hwif->dma_master +0x01 ); +outb ((mrdmode & ~(MRDMODE_INTR_CH0 |MRDMODE_INTR_CH1 )) | irq_mask, + hwif->dma_master +0x01 );return err; }
drivers/ide/pci/cs5530.c +1 -2
@@ -117,8 +117,7 @@ static void cs5530_set_dma_mode(ide_drive_t *drive, const u8 mode)case XFER_MW_DMA_1 : timings =0x00012121 ;break ;case XFER_MW_DMA_2 : timings =0x00002020 ;break ;default : -BUG (); -break ; +return ; } basereg =CS5530_BASEREG (drive->hwif); reg =inl (basereg +4 );/* get drive0 config register */
drivers/ide/pci/it821x.c +1 -2
@@ -653,8 +653,7 @@ static const struct ide_port_info it821x_chipsets[] __devinitdata = {static int __devinit it821x_init_one (struct pci_dev *dev,const struct pci_device_id *id) { -ide_setup_pci_device (dev, &it821x_chipsets[id->driver_data]); -return 0 ; +return ide_setup_pci_device (dev, &it821x_chipsets[id->driver_data]); }static const struct pci_device_id it821x_pci_tbl[] = {
drivers/ide/pci/jmicron.c +1 -2
@@ -139,8 +139,7 @@ static const struct ide_port_info jmicron_chipset __devinitdata = {static int __devinit jmicron_init_one (struct pci_dev *dev,const struct pci_device_id *id) { -ide_setup_pci_device (dev, &jmicron_chipset); -return 0 ; +return ide_setup_pci_device (dev, &jmicron_chipset); }/* All JMB PATA controllers have and will continue to have the same
drivers/ide/pci/sc1200.c +1 -2
@@ -186,8 +186,7 @@ static void sc1200_set_dma_mode(ide_drive_t *drive, const u8 mode) }break ;default : -BUG (); -break ; +return ; }if (unit ==0 ) {/* are we configuring drive0? */
drivers/ide/pci/sis5513.c +0 -1
@@ -356,7 +356,6 @@ static void sis_set_dma_mode(ide_drive_t *drive, const u8 speed)sis_program_timings (drive, speed);break ;default : -BUG ();break ; } }
drivers/ide/ppc/pmac.c +1 -0
@@ -1138,6 +1138,7 @@ pmac_ide_setup_device(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif) hwif->drives[0 ].autotune =IDE_TUNE_AUTO ; hwif->drives[1 ].autotune =IDE_TUNE_AUTO ; hwif->host_flags =IDE_HFLAG_SET_PIO_MODE_KEEP_DMA | +IDE_HFLAG_PIO_NO_DOWNGRADE |IDE_HFLAG_POST_SET_MODE ; hwif->pio_mask =ATA_PIO4 ; hwif->set_pio_mode = pmac_ide_set_pio_mode;
drivers/ide/setup-pci.c +0 -5
@@ -7,11 +7,6 @@* May be copied or modified under the terms of the GNU General Public License */ -/* -* This module provides support for automatic detection and -* configuration of all PCI IDE interfaces present in a system. -*/ -#include <linux/module.h> #include <linux/types.h> #include <linux/kernel.h>