diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-03 00:01:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-03 00:01:13 -0400 |
commit | fffe566b8f735fa71b38c7cc487b471b85894401 (patch) | |
tree | 98cb948327f7f8d3be41581c9af0e1dadb30f969 /drivers | |
parent | dcf87a2e357e277d3f3e3661962703b80113d2f8 (diff) | |
parent | a3cabb271ea66739704497102536fb01bb72fe37 (diff) |
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
libata: PATA-mode fixes for sis_sata
libata: add HTS541616J9SA00 to NCQ blacklist
sata_nv: allow changing queue depth
sata_inic162x: disable LBA48 devices
libata: remove reading alt_status from ata_hsm_qc_complete()
libata: pata_pdc2027x PLL input clock fix
scsi disk help file is not complete
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ata/Kconfig | 5 | ||||
-rw-r--r-- | drivers/ata/libata-core.c | 3 | ||||
-rw-r--r-- | drivers/ata/pata_pdc2027x.c | 11 | ||||
-rw-r--r-- | drivers/ata/pata_sis.c | 46 | ||||
-rw-r--r-- | drivers/ata/sata_inic162x.c | 7 | ||||
-rw-r--r-- | drivers/ata/sata_nv.c | 2 | ||||
-rw-r--r-- | drivers/ata/sata_sis.c | 39 | ||||
-rw-r--r-- | drivers/ata/sis.h | 2 | ||||
-rw-r--r-- | drivers/scsi/Kconfig | 1 |
9 files changed, 89 insertions, 27 deletions
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig index b4a8d6030e48..4ad8675f5a16 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig | |||
@@ -16,6 +16,11 @@ menuconfig ATA | |||
16 | that "speaks" the ATA protocol, also called ATA controller), | 16 | that "speaks" the ATA protocol, also called ATA controller), |
17 | because you will be asked for it. | 17 | because you will be asked for it. |
18 | 18 | ||
19 | NOTE: ATA enables basic SCSI support; *however*, | ||
20 | 'SCSI disk support', 'SCSI tape support', or | ||
21 | 'SCSI CDROM support' may also be needed, | ||
22 | depending on your hardware configuration. | ||
23 | |||
19 | if ATA | 24 | if ATA |
20 | 25 | ||
21 | config ATA_NONSTANDARD | 26 | config ATA_NONSTANDARD |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index bfc59a104728..2407f8482948 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -3798,6 +3798,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { | |||
3798 | /* Drives which do spurious command completion */ | 3798 | /* Drives which do spurious command completion */ |
3799 | { "HTS541680J9SA00", "SB2IC7EP", ATA_HORKAGE_NONCQ, }, | 3799 | { "HTS541680J9SA00", "SB2IC7EP", ATA_HORKAGE_NONCQ, }, |
3800 | { "HTS541612J9SA00", "SBDIC7JP", ATA_HORKAGE_NONCQ, }, | 3800 | { "HTS541612J9SA00", "SBDIC7JP", ATA_HORKAGE_NONCQ, }, |
3801 | { "Hitachi HTS541616J9SA00", "SB4OC70P", ATA_HORKAGE_NONCQ, }, | ||
3801 | { "WDC WD740ADFD-00NLR1", NULL, ATA_HORKAGE_NONCQ, }, | 3802 | { "WDC WD740ADFD-00NLR1", NULL, ATA_HORKAGE_NONCQ, }, |
3802 | 3803 | ||
3803 | /* Devices with NCQ limits */ | 3804 | /* Devices with NCQ limits */ |
@@ -4781,8 +4782,6 @@ static void ata_hsm_qc_complete(struct ata_queued_cmd *qc, int in_wq) | |||
4781 | } else | 4782 | } else |
4782 | ata_qc_complete(qc); | 4783 | ata_qc_complete(qc); |
4783 | } | 4784 | } |
4784 | |||
4785 | ata_altstatus(ap); /* flush */ | ||
4786 | } | 4785 | } |
4787 | 4786 | ||
4788 | /** | 4787 | /** |
diff --git a/drivers/ata/pata_pdc2027x.c b/drivers/ata/pata_pdc2027x.c index 0d2cc49fde4b..69a5aa4949f5 100644 --- a/drivers/ata/pata_pdc2027x.c +++ b/drivers/ata/pata_pdc2027x.c | |||
@@ -689,10 +689,12 @@ static long pdc_detect_pll_input_clock(struct ata_host *host) | |||
689 | void __iomem *mmio_base = host->iomap[PDC_MMIO_BAR]; | 689 | void __iomem *mmio_base = host->iomap[PDC_MMIO_BAR]; |
690 | u32 scr; | 690 | u32 scr; |
691 | long start_count, end_count; | 691 | long start_count, end_count; |
692 | long pll_clock; | 692 | struct timeval start_time, end_time; |
693 | long pll_clock, usec_elapsed; | ||
693 | 694 | ||
694 | /* Read current counter value */ | 695 | /* Read current counter value */ |
695 | start_count = pdc_read_counter(host); | 696 | start_count = pdc_read_counter(host); |
697 | do_gettimeofday(&start_time); | ||
696 | 698 | ||
697 | /* Start the test mode */ | 699 | /* Start the test mode */ |
698 | scr = readl(mmio_base + PDC_SYS_CTL); | 700 | scr = readl(mmio_base + PDC_SYS_CTL); |
@@ -705,6 +707,7 @@ static long pdc_detect_pll_input_clock(struct ata_host *host) | |||
705 | 707 | ||
706 | /* Read the counter values again */ | 708 | /* Read the counter values again */ |
707 | end_count = pdc_read_counter(host); | 709 | end_count = pdc_read_counter(host); |
710 | do_gettimeofday(&end_time); | ||
708 | 711 | ||
709 | /* Stop the test mode */ | 712 | /* Stop the test mode */ |
710 | scr = readl(mmio_base + PDC_SYS_CTL); | 713 | scr = readl(mmio_base + PDC_SYS_CTL); |
@@ -713,7 +716,11 @@ static long pdc_detect_pll_input_clock(struct ata_host *host) | |||
713 | readl(mmio_base + PDC_SYS_CTL); /* flush */ | 716 | readl(mmio_base + PDC_SYS_CTL); /* flush */ |
714 | 717 | ||
715 | /* calculate the input clock in Hz */ | 718 | /* calculate the input clock in Hz */ |
716 | pll_clock = (start_count - end_count) * 10; | 719 | usec_elapsed = (end_time.tv_sec - start_time.tv_sec) * 1000000 + |
720 | (end_time.tv_usec - start_time.tv_usec); | ||
721 | |||
722 | pll_clock = (start_count - end_count) / 100 * | ||
723 | (100000000 / usec_elapsed); | ||
717 | 724 | ||
718 | PDPRINTK("start[%ld] end[%ld] \n", start_count, end_count); | 725 | PDPRINTK("start[%ld] end[%ld] \n", start_count, end_count); |
719 | PDPRINTK("PLL input clock[%ld]Hz\n", pll_clock); | 726 | PDPRINTK("PLL input clock[%ld]Hz\n", pll_clock); |
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c index ec3ae9375015..cfe4ec6eb3d5 100644 --- a/drivers/ata/pata_sis.c +++ b/drivers/ata/pata_sis.c | |||
@@ -560,6 +560,40 @@ static const struct ata_port_operations sis_133_ops = { | |||
560 | .port_start = ata_port_start, | 560 | .port_start = ata_port_start, |
561 | }; | 561 | }; |
562 | 562 | ||
563 | static const struct ata_port_operations sis_133_for_sata_ops = { | ||
564 | .port_disable = ata_port_disable, | ||
565 | .set_piomode = sis_133_set_piomode, | ||
566 | .set_dmamode = sis_133_set_dmamode, | ||
567 | .mode_filter = ata_pci_default_filter, | ||
568 | |||
569 | .tf_load = ata_tf_load, | ||
570 | .tf_read = ata_tf_read, | ||
571 | .check_status = ata_check_status, | ||
572 | .exec_command = ata_exec_command, | ||
573 | .dev_select = ata_std_dev_select, | ||
574 | |||
575 | .freeze = ata_bmdma_freeze, | ||
576 | .thaw = ata_bmdma_thaw, | ||
577 | .error_handler = ata_bmdma_error_handler, | ||
578 | .post_internal_cmd = ata_bmdma_post_internal_cmd, | ||
579 | .cable_detect = sis_133_cable_detect, | ||
580 | |||
581 | .bmdma_setup = ata_bmdma_setup, | ||
582 | .bmdma_start = ata_bmdma_start, | ||
583 | .bmdma_stop = ata_bmdma_stop, | ||
584 | .bmdma_status = ata_bmdma_status, | ||
585 | .qc_prep = ata_qc_prep, | ||
586 | .qc_issue = ata_qc_issue_prot, | ||
587 | .data_xfer = ata_data_xfer, | ||
588 | |||
589 | .irq_handler = ata_interrupt, | ||
590 | .irq_clear = ata_bmdma_irq_clear, | ||
591 | .irq_on = ata_irq_on, | ||
592 | .irq_ack = ata_irq_ack, | ||
593 | |||
594 | .port_start = ata_port_start, | ||
595 | }; | ||
596 | |||
563 | static const struct ata_port_operations sis_133_early_ops = { | 597 | static const struct ata_port_operations sis_133_early_ops = { |
564 | .port_disable = ata_port_disable, | 598 | .port_disable = ata_port_disable, |
565 | .set_piomode = sis_100_set_piomode, | 599 | .set_piomode = sis_100_set_piomode, |
@@ -733,13 +767,20 @@ static const struct ata_port_info sis_info100_early = { | |||
733 | .pio_mask = 0x1f, /* pio0-4 */ | 767 | .pio_mask = 0x1f, /* pio0-4 */ |
734 | .port_ops = &sis_66_ops, | 768 | .port_ops = &sis_66_ops, |
735 | }; | 769 | }; |
736 | const struct ata_port_info sis_info133 = { | 770 | static const struct ata_port_info sis_info133 = { |
737 | .sht = &sis_sht, | 771 | .sht = &sis_sht, |
738 | .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST, | 772 | .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST, |
739 | .pio_mask = 0x1f, /* pio0-4 */ | 773 | .pio_mask = 0x1f, /* pio0-4 */ |
740 | .udma_mask = ATA_UDMA6, | 774 | .udma_mask = ATA_UDMA6, |
741 | .port_ops = &sis_133_ops, | 775 | .port_ops = &sis_133_ops, |
742 | }; | 776 | }; |
777 | const struct ata_port_info sis_info133_for_sata = { | ||
778 | .sht = &sis_sht, | ||
779 | .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST, | ||
780 | .pio_mask = 0x1f, /* pio0-4 */ | ||
781 | .udma_mask = ATA_UDMA6, | ||
782 | .port_ops = &sis_133_for_sata_ops, | ||
783 | }; | ||
743 | static const struct ata_port_info sis_info133_early = { | 784 | static const struct ata_port_info sis_info133_early = { |
744 | .sht = &sis_sht, | 785 | .sht = &sis_sht, |
745 | .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST, | 786 | .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST, |
@@ -749,7 +790,7 @@ static const struct ata_port_info sis_info133_early = { | |||
749 | }; | 790 | }; |
750 | 791 | ||
751 | /* Privately shared with the SiS180 SATA driver, not for use elsewhere */ | 792 | /* Privately shared with the SiS180 SATA driver, not for use elsewhere */ |
752 | EXPORT_SYMBOL_GPL(sis_info133); | 793 | EXPORT_SYMBOL_GPL(sis_info133_for_sata); |
753 | 794 | ||
754 | static void sis_fixup(struct pci_dev *pdev, struct sis_chipset *sis) | 795 | static void sis_fixup(struct pci_dev *pdev, struct sis_chipset *sis) |
755 | { | 796 | { |
@@ -975,6 +1016,7 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
975 | static const struct pci_device_id sis_pci_tbl[] = { | 1016 | static const struct pci_device_id sis_pci_tbl[] = { |
976 | { PCI_VDEVICE(SI, 0x5513), }, /* SiS 5513 */ | 1017 | { PCI_VDEVICE(SI, 0x5513), }, /* SiS 5513 */ |
977 | { PCI_VDEVICE(SI, 0x5518), }, /* SiS 5518 */ | 1018 | { PCI_VDEVICE(SI, 0x5518), }, /* SiS 5518 */ |
1019 | { PCI_VDEVICE(SI, 0x1180), }, /* SiS 1180 */ | ||
978 | 1020 | ||
979 | { } | 1021 | { } |
980 | }; | 1022 | }; |
diff --git a/drivers/ata/sata_inic162x.c b/drivers/ata/sata_inic162x.c index 2d80c9d95e95..dc3bbce04676 100644 --- a/drivers/ata/sata_inic162x.c +++ b/drivers/ata/sata_inic162x.c | |||
@@ -496,6 +496,13 @@ static void inic_dev_config(struct ata_device *dev) | |||
496 | /* inic can only handle upto LBA28 max sectors */ | 496 | /* inic can only handle upto LBA28 max sectors */ |
497 | if (dev->max_sectors > ATA_MAX_SECTORS) | 497 | if (dev->max_sectors > ATA_MAX_SECTORS) |
498 | dev->max_sectors = ATA_MAX_SECTORS; | 498 | dev->max_sectors = ATA_MAX_SECTORS; |
499 | |||
500 | if (dev->n_sectors >= 1 << 28) { | ||
501 | ata_dev_printk(dev, KERN_ERR, | ||
502 | "ERROR: This driver doesn't support LBA48 yet and may cause\n" | ||
503 | " data corruption on such devices. Disabling.\n"); | ||
504 | ata_dev_disable(dev); | ||
505 | } | ||
499 | } | 506 | } |
500 | 507 | ||
501 | static void init_port(struct ata_port *ap) | 508 | static void init_port(struct ata_port *ap) |
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c index adfa693db53d..d53cb8c47f39 100644 --- a/drivers/ata/sata_nv.c +++ b/drivers/ata/sata_nv.c | |||
@@ -307,6 +307,7 @@ static struct scsi_host_template nv_sht = { | |||
307 | .name = DRV_NAME, | 307 | .name = DRV_NAME, |
308 | .ioctl = ata_scsi_ioctl, | 308 | .ioctl = ata_scsi_ioctl, |
309 | .queuecommand = ata_scsi_queuecmd, | 309 | .queuecommand = ata_scsi_queuecmd, |
310 | .change_queue_depth = ata_scsi_change_queue_depth, | ||
310 | .can_queue = ATA_DEF_QUEUE, | 311 | .can_queue = ATA_DEF_QUEUE, |
311 | .this_id = ATA_SHT_THIS_ID, | 312 | .this_id = ATA_SHT_THIS_ID, |
312 | .sg_tablesize = LIBATA_MAX_PRD, | 313 | .sg_tablesize = LIBATA_MAX_PRD, |
@@ -325,6 +326,7 @@ static struct scsi_host_template nv_adma_sht = { | |||
325 | .name = DRV_NAME, | 326 | .name = DRV_NAME, |
326 | .ioctl = ata_scsi_ioctl, | 327 | .ioctl = ata_scsi_ioctl, |
327 | .queuecommand = ata_scsi_queuecmd, | 328 | .queuecommand = ata_scsi_queuecmd, |
329 | .change_queue_depth = ata_scsi_change_queue_depth, | ||
328 | .can_queue = NV_ADMA_MAX_CPBS, | 330 | .can_queue = NV_ADMA_MAX_CPBS, |
329 | .this_id = ATA_SHT_THIS_ID, | 331 | .this_id = ATA_SHT_THIS_ID, |
330 | .sg_tablesize = NV_ADMA_SGTBL_TOTAL_LEN, | 332 | .sg_tablesize = NV_ADMA_SGTBL_TOTAL_LEN, |
diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c index 221099d1d08f..f111c984a359 100644 --- a/drivers/ata/sata_sis.c +++ b/drivers/ata/sata_sis.c | |||
@@ -72,8 +72,8 @@ static const struct pci_device_id sis_pci_tbl[] = { | |||
72 | { PCI_VDEVICE(SI, 0x0181), sis_180 }, /* SiS 964/180 */ | 72 | { PCI_VDEVICE(SI, 0x0181), sis_180 }, /* SiS 964/180 */ |
73 | { PCI_VDEVICE(SI, 0x0182), sis_180 }, /* SiS 965/965L */ | 73 | { PCI_VDEVICE(SI, 0x0182), sis_180 }, /* SiS 965/965L */ |
74 | { PCI_VDEVICE(SI, 0x0183), sis_180 }, /* SiS 965/965L */ | 74 | { PCI_VDEVICE(SI, 0x0183), sis_180 }, /* SiS 965/965L */ |
75 | { PCI_VDEVICE(SI, 0x1182), sis_180 }, /* SiS 966/966L */ | 75 | { PCI_VDEVICE(SI, 0x1182), sis_180 }, /* SiS 966/680 */ |
76 | { PCI_VDEVICE(SI, 0x1183), sis_180 }, /* SiS 966/966L */ | 76 | { PCI_VDEVICE(SI, 0x1183), sis_180 }, /* SiS 966/966L/968/680 */ |
77 | 77 | ||
78 | { } /* terminate list */ | 78 | { } /* terminate list */ |
79 | }; | 79 | }; |
@@ -161,7 +161,6 @@ static unsigned int get_scr_cfg_addr(struct ata_port *ap, unsigned int sc_reg) | |||
161 | case 0x0182: | 161 | case 0x0182: |
162 | case 0x0183: | 162 | case 0x0183: |
163 | case 0x1182: | 163 | case 0x1182: |
164 | case 0x1183: | ||
165 | addr += SIS182_SATA1_OFS; | 164 | addr += SIS182_SATA1_OFS; |
166 | break; | 165 | break; |
167 | } | 166 | } |
@@ -183,8 +182,8 @@ static u32 sis_scr_cfg_read (struct ata_port *ap, unsigned int sc_reg) | |||
183 | 182 | ||
184 | pci_read_config_dword(pdev, cfg_addr, &val); | 183 | pci_read_config_dword(pdev, cfg_addr, &val); |
185 | 184 | ||
186 | if ((pdev->device == 0x0182) || (pdev->device == 0x0183) || (pdev->device == 0x1182) || | 185 | if ((pdev->device == 0x0182) || (pdev->device == 0x0183) || |
187 | (pdev->device == 0x1183) || (pmr & SIS_PMR_COMBINED)) | 186 | (pdev->device == 0x1182) || (pmr & SIS_PMR_COMBINED)) |
188 | pci_read_config_dword(pdev, cfg_addr+0x10, &val2); | 187 | pci_read_config_dword(pdev, cfg_addr+0x10, &val2); |
189 | 188 | ||
190 | return (val|val2) & 0xfffffffb; /* avoid problems with powerdowned ports */ | 189 | return (val|val2) & 0xfffffffb; /* avoid problems with powerdowned ports */ |
@@ -203,8 +202,8 @@ static void sis_scr_cfg_write (struct ata_port *ap, unsigned int sc_reg, u32 val | |||
203 | 202 | ||
204 | pci_write_config_dword(pdev, cfg_addr, val); | 203 | pci_write_config_dword(pdev, cfg_addr, val); |
205 | 204 | ||
206 | if ((pdev->device == 0x0182) || (pdev->device == 0x0183) || (pdev->device == 0x1182) || | 205 | if ((pdev->device == 0x0182) || (pdev->device == 0x0183) || |
207 | (pdev->device == 0x1183) || (pmr & SIS_PMR_COMBINED)) | 206 | (pdev->device == 0x1182) || (pmr & SIS_PMR_COMBINED)) |
208 | pci_write_config_dword(pdev, cfg_addr+0x10, val); | 207 | pci_write_config_dword(pdev, cfg_addr+0x10, val); |
209 | } | 208 | } |
210 | 209 | ||
@@ -224,8 +223,8 @@ static u32 sis_scr_read (struct ata_port *ap, unsigned int sc_reg) | |||
224 | 223 | ||
225 | val = ioread32(ap->ioaddr.scr_addr + (sc_reg * 4)); | 224 | val = ioread32(ap->ioaddr.scr_addr + (sc_reg * 4)); |
226 | 225 | ||
227 | if ((pdev->device == 0x0182) || (pdev->device == 0x0183) || (pdev->device == 0x1182) || | 226 | if ((pdev->device == 0x0182) || (pdev->device == 0x0183) || |
228 | (pdev->device == 0x1183) || (pmr & SIS_PMR_COMBINED)) | 227 | (pdev->device == 0x1182) || (pmr & SIS_PMR_COMBINED)) |
229 | val2 = ioread32(ap->ioaddr.scr_addr + (sc_reg * 4) + 0x10); | 228 | val2 = ioread32(ap->ioaddr.scr_addr + (sc_reg * 4) + 0x10); |
230 | 229 | ||
231 | return (val | val2) & 0xfffffffb; | 230 | return (val | val2) & 0xfffffffb; |
@@ -245,8 +244,8 @@ static void sis_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val) | |||
245 | sis_scr_cfg_write(ap, sc_reg, val); | 244 | sis_scr_cfg_write(ap, sc_reg, val); |
246 | else { | 245 | else { |
247 | iowrite32(val, ap->ioaddr.scr_addr + (sc_reg * 4)); | 246 | iowrite32(val, ap->ioaddr.scr_addr + (sc_reg * 4)); |
248 | if ((pdev->device == 0x0182) || (pdev->device == 0x0183) || (pdev->device == 0x1182) || | 247 | if ((pdev->device == 0x0182) || (pdev->device == 0x0183) || |
249 | (pdev->device == 0x1183) || (pmr & SIS_PMR_COMBINED)) | 248 | (pdev->device == 0x1182) || (pmr & SIS_PMR_COMBINED)) |
250 | iowrite32(val, ap->ioaddr.scr_addr + (sc_reg * 4)+0x10); | 249 | iowrite32(val, ap->ioaddr.scr_addr + (sc_reg * 4)+0x10); |
251 | } | 250 | } |
252 | } | 251 | } |
@@ -293,11 +292,11 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
293 | /* The PATA-handling is provided by pata_sis */ | 292 | /* The PATA-handling is provided by pata_sis */ |
294 | switch (pmr & 0x30) { | 293 | switch (pmr & 0x30) { |
295 | case 0x10: | 294 | case 0x10: |
296 | ppi[1] = &sis_info133; | 295 | ppi[1] = &sis_info133_for_sata; |
297 | break; | 296 | break; |
298 | 297 | ||
299 | case 0x30: | 298 | case 0x30: |
300 | ppi[0] = &sis_info133; | 299 | ppi[0] = &sis_info133_for_sata; |
301 | break; | 300 | break; |
302 | } | 301 | } |
303 | if ((pmr & SIS_PMR_COMBINED) == 0) { | 302 | if ((pmr & SIS_PMR_COMBINED) == 0) { |
@@ -324,14 +323,14 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
324 | break; | 323 | break; |
325 | 324 | ||
326 | case 0x1182: | 325 | case 0x1182: |
326 | dev_printk(KERN_INFO, &pdev->dev, "Detected SiS 1182/966/680 SATA controller\n"); | ||
327 | pi.flags |= ATA_FLAG_SLAVE_POSS; | ||
328 | break; | ||
329 | |||
327 | case 0x1183: | 330 | case 0x1183: |
328 | pci_read_config_dword(pdev, 0x64, &val); | 331 | dev_printk(KERN_INFO, &pdev->dev, "Detected SiS 1183/966/966L/968/680 controller in PATA mode\n"); |
329 | if (val & 0x10000000) { | 332 | ppi[0] = &sis_info133_for_sata; |
330 | dev_printk(KERN_INFO, &pdev->dev, "Detected SiS 1182/1183/966L SATA controller\n"); | 333 | ppi[1] = &sis_info133_for_sata; |
331 | } else { | ||
332 | dev_printk(KERN_INFO, &pdev->dev, "Detected SiS 1182/1183/966 SATA controller\n"); | ||
333 | pi.flags |= ATA_FLAG_SLAVE_POSS; | ||
334 | } | ||
335 | break; | 334 | break; |
336 | } | 335 | } |
337 | 336 | ||
diff --git a/drivers/ata/sis.h b/drivers/ata/sis.h index 0f2208d8d5ef..f7f3eebe666c 100644 --- a/drivers/ata/sis.h +++ b/drivers/ata/sis.h | |||
@@ -2,4 +2,4 @@ | |||
2 | struct ata_port_info; | 2 | struct ata_port_info; |
3 | 3 | ||
4 | /* pata_sis.c */ | 4 | /* pata_sis.c */ |
5 | extern const struct ata_port_info sis_info133; | 5 | extern const struct ata_port_info sis_info133_for_sata; |
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 2b2f5c12019b..eb46cb0e3cb7 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig | |||
@@ -60,6 +60,7 @@ config BLK_DEV_SD | |||
60 | depends on SCSI | 60 | depends on SCSI |
61 | ---help--- | 61 | ---help--- |
62 | If you want to use SCSI hard disks, Fibre Channel disks, | 62 | If you want to use SCSI hard disks, Fibre Channel disks, |
63 | Serial ATA (SATA) or Parallel ATA (PATA) hard disks, | ||
63 | USB storage or the SCSI or parallel port version of | 64 | USB storage or the SCSI or parallel port version of |
64 | the IOMEGA ZIP drive, say Y and read the SCSI-HOWTO, | 65 | the IOMEGA ZIP drive, say Y and read the SCSI-HOWTO, |
65 | the Disk-HOWTO and the Multi-Disk-HOWTO, available from | 66 | the Disk-HOWTO and the Multi-Disk-HOWTO, available from |