Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
Browse files Browse the repository at this point in the history
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:
  ide-cd: fix missing residual count setting in DMA mode
  ht6560b: force prefetch for some devices
  ht6560b can only do up to PIO mode 4
  linux/hdsmart.h: fix goofups (take 2)
  via82cxxx: add new PCI id for cx700
  falconide: locking bugfix
  MAINTAINERS: update ide-cd maintainer's email address
  ide/libata: ST310211A has buggy HPA too
  ide: Add missing base addresses for falconide and macide
  • Loading branch information
Linus Torvalds committed Feb 19, 2008
2 parents b0abcfc + 14e04c3 commit 9a4c854
Show file tree
Hide file tree
Showing 12 changed files with 34 additions and 21 deletions.
2 changes: 1 addition & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -1924,7 +1924,7 @@ S: Maintained

IDE/ATAPI CDROM DRIVER
P: Borislav Petkov
M: bbpetkov@yahoo.de
M: petkovbb@gmail.com
L: linux-ide@vger.kernel.org
S: Maintained

Expand Down
1 change: 1 addition & 0 deletions drivers/ata/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -4190,6 +4190,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
/* Devices which report 1 sector over size HPA */
{ "ST340823A", NULL, ATA_HORKAGE_HPA_SIZE, },
{ "ST320413A", NULL, ATA_HORKAGE_HPA_SIZE, },
{ "ST310211A", NULL, ATA_HORKAGE_HPA_SIZE, },

/* Devices which get the IVB wrong */
{ "QUANTUM FIREBALLlct10 05", "A03.0900", ATA_HORKAGE_IVB, },
Expand Down
6 changes: 5 additions & 1 deletion drivers/ide/ide-cd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1207,9 +1207,13 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
end_request:
if (blk_pc_request(rq)) {
unsigned long flags;
unsigned int dlen = rq->data_len;

if (dma)
rq->data_len = 0;

spin_lock_irqsave(&ide_lock, flags);
if (__blk_end_request(rq, 0, rq->data_len))
if (__blk_end_request(rq, 0, dlen))
BUG();
HWGROUP(drive)->rq = NULL;
spin_unlock_irqrestore(&ide_lock, flags);
Expand Down
1 change: 1 addition & 0 deletions drivers/ide/ide-disk.c
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,7 @@ static inline int idedisk_supports_lba48(const struct hd_driveid *id)
static const struct drive_list_entry hpa_list[] = {
{ "ST340823A", NULL },
{ "ST320413A", NULL },
{ "ST310211A", NULL },
{ NULL, NULL }
};

Expand Down
6 changes: 0 additions & 6 deletions drivers/ide/ide-generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@ static int __init ide_generic_init(void)
u8 idx[MAX_HWIFS];
int i;

if (ide_hwifs[0].io_ports[IDE_DATA_OFFSET])
ide_get_lock(NULL, NULL); /* for atari only */

for (i = 0; i < MAX_HWIFS; i++) {
ide_hwif_t *hwif = &ide_hwifs[i];

Expand All @@ -31,9 +28,6 @@ static int __init ide_generic_init(void)

ide_device_add_all(idx, NULL);

if (ide_hwifs[0].io_ports[IDE_DATA_OFFSET])
ide_release_lock(); /* for atari only */

return 0;
}

Expand Down
4 changes: 3 additions & 1 deletion drivers/ide/legacy/falconide.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ static void __init falconide_setup_ports(hw_regs_t *hw)
for (i = 1; i < 8; i++)
hw->io_ports[i] = ATA_HD_BASE + 1 + i * 4;

hw->io_ports[IDE_CONTROL_OFFSET] = ATA_HD_CONTROL;
hw->io_ports[IDE_CONTROL_OFFSET] = ATA_HD_BASE + ATA_HD_CONTROL;

hw->irq = IRQ_MFP_IDE;
hw->ack_intr = NULL;
Expand Down Expand Up @@ -84,7 +84,9 @@ static int __init falconide_init(void)
ide_init_port_data(hwif, index);
ide_init_port_hw(hwif, &hw);

ide_get_lock(NULL, NULL);
ide_device_add(idx, NULL);
ide_release_lock();
}

return 0;
Expand Down
25 changes: 17 additions & 8 deletions drivers/ide/legacy/ht6560b.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,21 @@
* "Prefetch" mode bit OFF for ide disks and
* ON for anything else.
*
* Version 0.08 Need to force prefetch for CDs and other non-disk
* devices. (not sure which devices exactly need
* prefetch)
*
* HT-6560B EIDE-controller support
* To activate controller support use kernel parameter "ide0=ht6560b".
* Use hdparm utility to enable PIO mode support.
*
* Author: Mikko Ala-Fossi <maf@iki.fi>
* Jan Evert van Grootheest <janevert@iae.nl>
* Jan Evert van Grootheest <janevert@caiway.nl>
*
* Try: http://www.maf.iki.fi/~maf/ht6560b/
*/

#define HT6560B_VERSION "v0.07"
#define HT6560B_VERSION "v0.08"

#include <linux/module.h>
#include <linux/types.h>
Expand Down Expand Up @@ -130,15 +133,20 @@ static void ht6560b_selectproc (ide_drive_t *drive)
u8 select, timing;

local_irq_save(flags);

select = HT_CONFIG(drive);
timing = HT_TIMING(drive);


/*
* Need to enforce prefetch sometimes because otherwise
* it'll hang (hard).
*/
if (drive->media != ide_disk || !drive->present)
select |= HT_PREFETCH_MODE;

if (select != current_select || timing != current_timing) {
current_select = select;
current_timing = timing;
if (drive->media != ide_disk || !drive->present)
select |= HT_PREFETCH_MODE;
(void)inb(HT_CONFIG_PORT);
(void)inb(HT_CONFIG_PORT);
(void)inb(HT_CONFIG_PORT);
Expand Down Expand Up @@ -188,11 +196,12 @@ static int __init try_to_init_ht6560b(void)
outb(HT_TIMING_DEFAULT, 0x1f6); /* IDE_SELECT_REG */
(void) inb(0x1f7); /* IDE_STATUS_REG */

printk("\nht6560b " HT6560B_VERSION
printk("ht6560b " HT6560B_VERSION
": chipset detected and initialized"
#ifdef DEBUG
" with debug enabled"
#endif
"\n"
);
return 1;
}
Expand Down Expand Up @@ -323,7 +332,7 @@ static const struct ide_port_info ht6560b_port_info __initdata = {
IDE_HFLAG_NO_DMA |
IDE_HFLAG_NO_AUTOTUNE |
IDE_HFLAG_ABUSE_PREFETCH,
.pio_mask = ATA_PIO5,
.pio_mask = ATA_PIO4,
};

static int __init ht6560b_init(void)
Expand Down
2 changes: 1 addition & 1 deletion drivers/ide/legacy/macide.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ static void __init macide_setup_ports(hw_regs_t *hw, unsigned long base,
for (i = 0; i < 8; i++)
hw->io_ports[i] = base + i * 4;

hw->io_ports[IDE_CONTROL_OFFSET] = IDE_CONTROL;
hw->io_ports[IDE_CONTROL_OFFSET] = base + IDE_CONTROL;

hw->irq = irq;
hw->ack_intr = ack_intr;
Expand Down
1 change: 1 addition & 0 deletions drivers/ide/pci/via82cxxx.c
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,7 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i
static const struct pci_device_id via_pci_tbl[] = {
{ PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_82C576_1), 0 },
{ PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_82C586_1), 0 },
{ PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_CX700_IDE), 0 },
{ PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_6410), 1 },
{ PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_SATA_EIDE), 1 },
{ 0, },
Expand Down
2 changes: 1 addition & 1 deletion include/linux/Kbuild
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ header-y += fuse.h
header-y += genetlink.h
header-y += gen_stats.h
header-y += gigaset_dev.h
header-y += hdsmart.h
header-y += hysdn_if.h
header-y += i2o-dev.h
header-y += i8k.h
Expand Down Expand Up @@ -211,6 +210,7 @@ unifdef-y += hayesesp.h
unifdef-y += hdlcdrv.h
unifdef-y += hdlc.h
unifdef-y += hdreg.h
unifdef-y += hdsmart.h
unifdef-y += hiddev.h
unifdef-y += hpet.h
unifdef-y += i2c.h
Expand Down
4 changes: 2 additions & 2 deletions include/linux/hdsmart.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#ifndef _LINUX_HDSMART_H
#define _LINUX_HDSMART_H

#ifndef __KERNEL
#ifndef __KERNEL__
#define OFFLINE_FULL_SCAN 0
#define SHORT_SELF_TEST 1
#define EXTEND_SELF_TEST 2
Expand Down Expand Up @@ -121,6 +121,6 @@ typedef struct ata_smart_selftestlog_s {
unsigned char resevered[2];
unsigned char chksum;
} __attribute__ ((packed)) ata_smart_selftestlog_t;
#endif /* __KERNEL__ *
#endif /* __KERNEL__ */

#endif /* _LINUX_HDSMART_H */
1 change: 1 addition & 0 deletions include/linux/pci_ids.h
Original file line number Diff line number Diff line change
Expand Up @@ -1351,6 +1351,7 @@
#define PCI_DEVICE_ID_VIA_8231_4 0x8235
#define PCI_DEVICE_ID_VIA_8365_1 0x8305
#define PCI_DEVICE_ID_VIA_CX700 0x8324
#define PCI_DEVICE_ID_VIA_CX700_IDE 0x0581
#define PCI_DEVICE_ID_VIA_VX800 0x8353
#define PCI_DEVICE_ID_VIA_8371_1 0x8391
#define PCI_DEVICE_ID_VIA_82C598_1 0x8598
Expand Down

0 comments on commit 9a4c854

Please sign in to comment.