diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 18:19:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 18:19:09 -0400 |
commit | c65a3500b2947d344862da8cce626b7cc7ec5758 (patch) | |
tree | 5ba65501a50ab4b7373cba665357797044750930 | |
parent | d973664992d814d93db161b28c0cc9a4c7e68f42 (diff) | |
parent | f7e989301b6c232dec5489e94ee7741c85cb11ba (diff) |
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
[libata] linux/libata.h: reorganize ata_device struct members a bit
ahci: SB600 ahci can't do MSI, blacklist that capability
libata: More TSSTcorp pain, keep in sync with legacy IDE
pata_via: Fix 6410 misdetect
[libata] pata_atiixp: fix PIO timing data misprogramming
-rw-r--r-- | drivers/ata/ahci.c | 2 | ||||
-rw-r--r-- | drivers/ata/libata-core.c | 3 | ||||
-rw-r--r-- | drivers/ata/pata_atiixp.c | 4 | ||||
-rw-r--r-- | drivers/ata/pata_via.c | 11 | ||||
-rw-r--r-- | include/linux/libata.h | 12 |
5 files changed, 18 insertions, 14 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 7c4f886f1f16..8cace9aa9c03 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -358,7 +358,7 @@ static const struct ata_port_info ahci_port_info[] = { | |||
358 | /* board_ahci_sb600 */ | 358 | /* board_ahci_sb600 */ |
359 | { | 359 | { |
360 | AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL | | 360 | AHCI_HFLAGS (AHCI_HFLAG_IGN_SERR_INTERNAL | |
361 | AHCI_HFLAG_32BIT_ONLY | | 361 | AHCI_HFLAG_32BIT_ONLY | AHCI_HFLAG_NO_MSI | |
362 | AHCI_HFLAG_SECT255 | AHCI_HFLAG_NO_PMP), | 362 | AHCI_HFLAG_SECT255 | AHCI_HFLAG_NO_PMP), |
363 | .flags = AHCI_FLAG_COMMON, | 363 | .flags = AHCI_FLAG_COMMON, |
364 | .pio_mask = 0x1f, /* pio0-4 */ | 364 | .pio_mask = 0x1f, /* pio0-4 */ |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 51b7d2fad36a..3bc488538204 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -3933,6 +3933,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { | |||
3933 | 3933 | ||
3934 | /* Devices which get the IVB wrong */ | 3934 | /* Devices which get the IVB wrong */ |
3935 | { "QUANTUM FIREBALLlct10 05", "A03.0900", ATA_HORKAGE_IVB, }, | 3935 | { "QUANTUM FIREBALLlct10 05", "A03.0900", ATA_HORKAGE_IVB, }, |
3936 | /* Maybe we should just blacklist TSSTcorp... */ | ||
3937 | { "TSSTcorp CDDVDW SH-S202H", "SB00", ATA_HORKAGE_IVB, }, | ||
3938 | { "TSSTcorp CDDVDW SH-S202H", "SB01", ATA_HORKAGE_IVB, }, | ||
3936 | { "TSSTcorp CDDVDW SH-S202J", "SB00", ATA_HORKAGE_IVB, }, | 3939 | { "TSSTcorp CDDVDW SH-S202J", "SB00", ATA_HORKAGE_IVB, }, |
3937 | { "TSSTcorp CDDVDW SH-S202J", "SB01", ATA_HORKAGE_IVB, }, | 3940 | { "TSSTcorp CDDVDW SH-S202J", "SB01", ATA_HORKAGE_IVB, }, |
3938 | { "TSSTcorp CDDVDW SH-S202N", "SB00", ATA_HORKAGE_IVB, }, | 3941 | { "TSSTcorp CDDVDW SH-S202N", "SB00", ATA_HORKAGE_IVB, }, |
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c index 78738fb4223b..d7de7baf58a8 100644 --- a/drivers/ata/pata_atiixp.c +++ b/drivers/ata/pata_atiixp.c | |||
@@ -88,8 +88,8 @@ static void atiixp_set_pio_timing(struct ata_port *ap, struct ata_device *adev, | |||
88 | pci_write_config_word(pdev, ATIIXP_IDE_PIO_MODE, pio_mode_data); | 88 | pci_write_config_word(pdev, ATIIXP_IDE_PIO_MODE, pio_mode_data); |
89 | 89 | ||
90 | pci_read_config_word(pdev, ATIIXP_IDE_PIO_TIMING, &pio_timing_data); | 90 | pci_read_config_word(pdev, ATIIXP_IDE_PIO_TIMING, &pio_timing_data); |
91 | pio_mode_data &= ~(0xFF << timing_shift); | 91 | pio_timing_data &= ~(0xFF << timing_shift); |
92 | pio_mode_data |= (pio_timings[pio] << timing_shift); | 92 | pio_timing_data |= (pio_timings[pio] << timing_shift); |
93 | pci_write_config_word(pdev, ATIIXP_IDE_PIO_TIMING, pio_timing_data); | 93 | pci_write_config_word(pdev, ATIIXP_IDE_PIO_TIMING, pio_timing_data); |
94 | } | 94 | } |
95 | 95 | ||
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index d4840748fb5c..2fea6cbe7755 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c | |||
@@ -464,11 +464,12 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
464 | } | 464 | } |
465 | pci_dev_put(isa); | 465 | pci_dev_put(isa); |
466 | 466 | ||
467 | /* 0x40 low bits indicate enabled channels */ | 467 | if (!(config->flags & VIA_NO_ENABLES)) { |
468 | pci_read_config_byte(pdev, 0x40 , &enable); | 468 | /* 0x40 low bits indicate enabled channels */ |
469 | enable &= 3; | 469 | pci_read_config_byte(pdev, 0x40 , &enable); |
470 | if (enable == 0) { | 470 | enable &= 3; |
471 | return -ENODEV; | 471 | if (enable == 0) |
472 | return -ENODEV; | ||
472 | } | 473 | } |
473 | 474 | ||
474 | /* Initialise the FIFO for the enabled channels. */ | 475 | /* Initialise the FIFO for the enabled channels. */ |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 395a523d8c30..d1dfe872ee30 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -548,11 +548,6 @@ struct ata_device { | |||
548 | u64 n_sectors; /* size of device, if ATA */ | 548 | u64 n_sectors; /* size of device, if ATA */ |
549 | unsigned int class; /* ATA_DEV_xxx */ | 549 | unsigned int class; /* ATA_DEV_xxx */ |
550 | 550 | ||
551 | union { | ||
552 | u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ | ||
553 | u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ | ||
554 | }; | ||
555 | |||
556 | u8 pio_mode; | 551 | u8 pio_mode; |
557 | u8 dma_mode; | 552 | u8 dma_mode; |
558 | u8 xfer_mode; | 553 | u8 xfer_mode; |
@@ -574,8 +569,13 @@ struct ata_device { | |||
574 | u16 sectors; /* Number of sectors per track */ | 569 | u16 sectors; /* Number of sectors per track */ |
575 | 570 | ||
576 | /* error history */ | 571 | /* error history */ |
577 | struct ata_ering ering; | ||
578 | int spdn_cnt; | 572 | int spdn_cnt; |
573 | struct ata_ering ering; | ||
574 | |||
575 | union { | ||
576 | u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */ | ||
577 | u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ | ||
578 | }; | ||
579 | }; | 579 | }; |
580 | 580 | ||
581 | /* Offset into struct ata_device. Fields above it are maintained | 581 | /* Offset into struct ata_device. Fields above it are maintained |