Skip to content

Commit da31ce7

Browse files
committed
Merge tag 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
Pull libata fixes from Jeff Garzik: - libata-acpi regression fix - additional or corrected drive quirks for ata_blacklist - Kconfig text tweaking - new PCI IDs - pata_atiixp: quirk for MSI motherboard - export ahci_dev_classify for an ahci_platform driver * tag 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: libata: Add a space to " 2GB ATA Flash Disk" DMA blacklist entry [libata] new quirk, lift bridge limits for Buffalo DriveStation Quattro [libata] Kconfig: Elaborate that SFF is meant for legacy and PATA stuff [libata] acpi: call ata_acpi_gtm during ata port init time ata_piix: Add Device IDs for Intel Lynx Point-LP PCH ahci: Add Device IDs for Intel Lynx Point-LP PCH pata_atiixp: override cable detection on MSI E350DM-E33 ahci: un-staticize ahci_dev_classify
2 parents 2d809dc + d17d794 commit da31ce7

File tree

8 files changed

+42
-14
lines changed

8 files changed

+42
-14
lines changed

drivers/ata/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ config SATA_SIL24
115115
If unsure, say N.
116116

117117
config ATA_SFF
118-
bool "ATA SFF support"
118+
bool "ATA SFF support (for legacy IDE and PATA)"
119119
default y
120120
help
121121
This option adds support for ATA controllers with SFF

drivers/ata/ahci.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,14 @@ static const struct pci_device_id ahci_pci_tbl[] = {
256256
{ PCI_VDEVICE(INTEL, 0x8c07), board_ahci }, /* Lynx Point RAID */
257257
{ PCI_VDEVICE(INTEL, 0x8c0e), board_ahci }, /* Lynx Point RAID */
258258
{ PCI_VDEVICE(INTEL, 0x8c0f), board_ahci }, /* Lynx Point RAID */
259+
{ PCI_VDEVICE(INTEL, 0x9c02), board_ahci }, /* Lynx Point-LP AHCI */
260+
{ PCI_VDEVICE(INTEL, 0x9c03), board_ahci }, /* Lynx Point-LP AHCI */
261+
{ PCI_VDEVICE(INTEL, 0x9c04), board_ahci }, /* Lynx Point-LP RAID */
262+
{ PCI_VDEVICE(INTEL, 0x9c05), board_ahci }, /* Lynx Point-LP RAID */
263+
{ PCI_VDEVICE(INTEL, 0x9c06), board_ahci }, /* Lynx Point-LP RAID */
264+
{ PCI_VDEVICE(INTEL, 0x9c07), board_ahci }, /* Lynx Point-LP RAID */
265+
{ PCI_VDEVICE(INTEL, 0x9c0e), board_ahci }, /* Lynx Point-LP RAID */
266+
{ PCI_VDEVICE(INTEL, 0x9c0f), board_ahci }, /* Lynx Point-LP RAID */
259267

260268
/* JMicron 360/1/3/5/6, match class to avoid IDE function */
261269
{ PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,

drivers/ata/ahci.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ extern struct device_attribute *ahci_sdev_attrs[];
320320
extern struct ata_port_operations ahci_ops;
321321
extern struct ata_port_operations ahci_pmp_retry_srst_ops;
322322

323+
unsigned int ahci_dev_classify(struct ata_port *ap);
323324
void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag,
324325
u32 opts);
325326
void ahci_save_initial_config(struct device *dev,

drivers/ata/ata_piix.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,14 @@ static const struct pci_device_id piix_pci_tbl[] = {
329329
{ 0x8086, 0x8c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
330330
/* SATA Controller IDE (Lynx Point) */
331331
{ 0x8086, 0x8c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
332+
/* SATA Controller IDE (Lynx Point-LP) */
333+
{ 0x8086, 0x9c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb },
334+
/* SATA Controller IDE (Lynx Point-LP) */
335+
{ 0x8086, 0x9c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb },
336+
/* SATA Controller IDE (Lynx Point-LP) */
337+
{ 0x8086, 0x9c08, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
338+
/* SATA Controller IDE (Lynx Point-LP) */
339+
{ 0x8086, 0x9c09, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
332340
/* SATA Controller IDE (DH89xxCC) */
333341
{ 0x8086, 0x2326, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata },
334342
{ } /* terminate list */

drivers/ata/libahci.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1139,7 +1139,7 @@ static void ahci_dev_config(struct ata_device *dev)
11391139
}
11401140
}
11411141

1142-
static unsigned int ahci_dev_classify(struct ata_port *ap)
1142+
unsigned int ahci_dev_classify(struct ata_port *ap)
11431143
{
11441144
void __iomem *port_mmio = ahci_port_base(ap);
11451145
struct ata_taskfile tf;
@@ -1153,6 +1153,7 @@ static unsigned int ahci_dev_classify(struct ata_port *ap)
11531153

11541154
return ata_dev_classify(&tf);
11551155
}
1156+
EXPORT_SYMBOL_GPL(ahci_dev_classify);
11561157

11571158
void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag,
11581159
u32 opts)

drivers/ata/libata-acpi.c

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,7 @@ acpi_handle ata_ap_acpi_handle(struct ata_port *ap)
6060
if (ap->flags & ATA_FLAG_ACPI_SATA)
6161
return NULL;
6262

63-
/*
64-
* If acpi bind operation has already happened, we can get the handle
65-
* for the port by checking the corresponding scsi_host device's
66-
* firmware node, otherwise we will need to find out the handle from
67-
* its parent's acpi node.
68-
*/
69-
if (ap->scsi_host)
70-
return DEVICE_ACPI_HANDLE(&ap->scsi_host->shost_gendev);
71-
else
72-
return acpi_get_child(DEVICE_ACPI_HANDLE(ap->host->dev),
73-
ap->port_no);
63+
return acpi_get_child(DEVICE_ACPI_HANDLE(ap->host->dev), ap->port_no);
7464
}
7565
EXPORT_SYMBOL(ata_ap_acpi_handle);
7666

@@ -1101,6 +1091,9 @@ static int ata_acpi_bind_host(struct ata_port *ap, acpi_handle *handle)
11011091
if (!*handle)
11021092
return -ENODEV;
11031093

1094+
if (ata_acpi_gtm(ap, &ap->__acpi_init_gtm) == 0)
1095+
ap->pflags |= ATA_PFLAG_INIT_GTM_VALID;
1096+
11041097
return 0;
11051098
}
11061099

drivers/ata/libata-core.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4062,7 +4062,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
40624062
{ "_NEC DV5800A", NULL, ATA_HORKAGE_NODMA },
40634063
{ "SAMSUNG CD-ROM SN-124", "N001", ATA_HORKAGE_NODMA },
40644064
{ "Seagate STT20000A", NULL, ATA_HORKAGE_NODMA },
4065-
{ "2GB ATA Flash Disk", "ADMA428M", ATA_HORKAGE_NODMA },
4065+
{ " 2GB ATA Flash Disk", "ADMA428M", ATA_HORKAGE_NODMA },
40664066
/* Odd clown on sil3726/4726 PMPs */
40674067
{ "Config Disk", NULL, ATA_HORKAGE_DISABLE },
40684068

@@ -4128,6 +4128,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
41284128

41294129
/* Devices that do not need bridging limits applied */
41304130
{ "MTRON MSP-SATA*", NULL, ATA_HORKAGE_BRIDGE_OK, },
4131+
{ "BUFFALO HD-QSU2/R5", NULL, ATA_HORKAGE_BRIDGE_OK, },
41314132

41324133
/* Devices which aren't very happy with higher link speeds */
41334134
{ "WD My Book", NULL, ATA_HORKAGE_1_5_GBPS, },

drivers/ata/pata_atiixp.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <linux/delay.h>
2121
#include <scsi/scsi_host.h>
2222
#include <linux/libata.h>
23+
#include <linux/dmi.h>
2324

2425
#define DRV_NAME "pata_atiixp"
2526
#define DRV_VERSION "0.4.6"
@@ -33,11 +34,26 @@ enum {
3334
ATIIXP_IDE_UDMA_MODE = 0x56
3435
};
3536

37+
static const struct dmi_system_id attixp_cable_override_dmi_table[] = {
38+
{
39+
/* Board has onboard PATA<->SATA converters */
40+
.ident = "MSI E350DM-E33",
41+
.matches = {
42+
DMI_MATCH(DMI_BOARD_VENDOR, "MSI"),
43+
DMI_MATCH(DMI_BOARD_NAME, "E350DM-E33(MS-7720)"),
44+
},
45+
},
46+
{ }
47+
};
48+
3649
static int atiixp_cable_detect(struct ata_port *ap)
3750
{
3851
struct pci_dev *pdev = to_pci_dev(ap->host->dev);
3952
u8 udma;
4053

54+
if (dmi_check_system(attixp_cable_override_dmi_table))
55+
return ATA_CBL_PATA40_SHORT;
56+
4157
/* Hack from drivers/ide/pci. Really we want to know how to do the
4258
raw detection not play follow the bios mode guess */
4359
pci_read_config_byte(pdev, ATIIXP_IDE_UDMA_MODE + ap->port_no, &udma);

0 commit comments

Comments
 (0)