Merge branch 'upstream-linus' of git://github.com/jgarzik/libata-dev
* 'upstream-linus' of git://github.com/jgarzik/libata-dev: pata_of_platform: Don't use NO_IRQ [libata] ahci: Add ASMedia ASM1061 support [libata] Issue SRST to Sil3726 PMP sata_sis.c: trivial spelling fix ahci_platform: use dev_get_platdata() [libata] libata-scsi.c: Add function parameter documentation
This commit is contained in:
commit
87618e0003
8 changed files with 26 additions and 10 deletions
|
@ -390,6 +390,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
||||||
/* Promise */
|
/* Promise */
|
||||||
{ PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */
|
{ PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */
|
||||||
|
|
||||||
|
/* Asmedia */
|
||||||
|
{ PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1061 */
|
||||||
|
|
||||||
/* Generic, PCI class code for AHCI */
|
/* Generic, PCI class code for AHCI */
|
||||||
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
||||||
PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci },
|
PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci },
|
||||||
|
|
|
@ -65,7 +65,7 @@ static struct scsi_host_template ahci_platform_sht = {
|
||||||
static int __init ahci_probe(struct platform_device *pdev)
|
static int __init ahci_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct ahci_platform_data *pdata = dev->platform_data;
|
struct ahci_platform_data *pdata = dev_get_platdata(dev);
|
||||||
const struct platform_device_id *id = platform_get_device_id(pdev);
|
const struct platform_device_id *id = platform_get_device_id(pdev);
|
||||||
struct ata_port_info pi = ahci_port_info[id->driver_data];
|
struct ata_port_info pi = ahci_port_info[id->driver_data];
|
||||||
const struct ata_port_info *ppi[] = { &pi, NULL };
|
const struct ata_port_info *ppi[] = { &pi, NULL };
|
||||||
|
@ -191,7 +191,7 @@ static int __init ahci_probe(struct platform_device *pdev)
|
||||||
static int __devexit ahci_remove(struct platform_device *pdev)
|
static int __devexit ahci_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct ahci_platform_data *pdata = dev->platform_data;
|
struct ahci_platform_data *pdata = dev_get_platdata(dev);
|
||||||
struct ata_host *host = dev_get_drvdata(dev);
|
struct ata_host *host = dev_get_drvdata(dev);
|
||||||
|
|
||||||
ata_host_detach(host);
|
ata_host_detach(host);
|
||||||
|
|
|
@ -2883,7 +2883,7 @@ int ata_eh_reset(struct ata_link *link, int classify,
|
||||||
sata_scr_read(link, SCR_STATUS, &sstatus))
|
sata_scr_read(link, SCR_STATUS, &sstatus))
|
||||||
rc = -ERESTART;
|
rc = -ERESTART;
|
||||||
|
|
||||||
if (rc == -ERESTART || try >= max_tries) {
|
if (try >= max_tries) {
|
||||||
/*
|
/*
|
||||||
* Thaw host port even if reset failed, so that the port
|
* Thaw host port even if reset failed, so that the port
|
||||||
* can be retried on the next phy event. This risks
|
* can be retried on the next phy event. This risks
|
||||||
|
@ -2909,6 +2909,16 @@ int ata_eh_reset(struct ata_link *link, int classify,
|
||||||
ata_eh_acquire(ap);
|
ata_eh_acquire(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* While disks spinup behind PMP, some controllers fail sending SRST.
|
||||||
|
* They need to be reset - as well as the PMP - before retrying.
|
||||||
|
*/
|
||||||
|
if (rc == -ERESTART) {
|
||||||
|
if (ata_is_host_link(link))
|
||||||
|
ata_eh_thaw_port(ap);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (try == max_tries - 1) {
|
if (try == max_tries - 1) {
|
||||||
sata_down_spd_limit(link, 0);
|
sata_down_spd_limit(link, 0);
|
||||||
if (slave)
|
if (slave)
|
||||||
|
|
|
@ -389,12 +389,9 @@ static void sata_pmp_quirks(struct ata_port *ap)
|
||||||
/* link reports offline after LPM */
|
/* link reports offline after LPM */
|
||||||
link->flags |= ATA_LFLAG_NO_LPM;
|
link->flags |= ATA_LFLAG_NO_LPM;
|
||||||
|
|
||||||
/* Class code report is unreliable and SRST
|
/* Class code report is unreliable. */
|
||||||
* times out under certain configurations.
|
|
||||||
*/
|
|
||||||
if (link->pmp < 5)
|
if (link->pmp < 5)
|
||||||
link->flags |= ATA_LFLAG_NO_SRST |
|
link->flags |= ATA_LFLAG_ASSUME_ATA;
|
||||||
ATA_LFLAG_ASSUME_ATA;
|
|
||||||
|
|
||||||
/* port 5 is for SEMB device and it doesn't like SRST */
|
/* port 5 is for SEMB device and it doesn't like SRST */
|
||||||
if (link->pmp == 5)
|
if (link->pmp == 5)
|
||||||
|
|
|
@ -1217,6 +1217,10 @@ void ata_scsi_slave_destroy(struct scsi_device *sdev)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __ata_change_queue_depth - helper for ata_scsi_change_queue_depth
|
* __ata_change_queue_depth - helper for ata_scsi_change_queue_depth
|
||||||
|
* @ap: ATA port to which the device change the queue depth
|
||||||
|
* @sdev: SCSI device to configure queue depth for
|
||||||
|
* @queue_depth: new queue depth
|
||||||
|
* @reason: calling context
|
||||||
*
|
*
|
||||||
* libsas and libata have different approaches for associating a sdev to
|
* libsas and libata have different approaches for associating a sdev to
|
||||||
* its ata_port.
|
* its ata_port.
|
||||||
|
|
|
@ -52,7 +52,7 @@ static int __devinit pata_of_platform_probe(struct platform_device *ofdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = of_irq_to_resource(dn, 0, &irq_res);
|
ret = of_irq_to_resource(dn, 0, &irq_res);
|
||||||
if (ret == NO_IRQ)
|
if (!ret)
|
||||||
irq_res.start = irq_res.end = 0;
|
irq_res.start = irq_res.end = 0;
|
||||||
else
|
else
|
||||||
irq_res.flags = 0;
|
irq_res.flags = 0;
|
||||||
|
|
|
@ -104,7 +104,7 @@ static const struct ata_port_info sis_port_info = {
|
||||||
};
|
};
|
||||||
|
|
||||||
MODULE_AUTHOR("Uwe Koziolek");
|
MODULE_AUTHOR("Uwe Koziolek");
|
||||||
MODULE_DESCRIPTION("low-level driver for Silicon Integratad Systems SATA controller");
|
MODULE_DESCRIPTION("low-level driver for Silicon Integrated Systems SATA controller");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_DEVICE_TABLE(pci, sis_pci_tbl);
|
MODULE_DEVICE_TABLE(pci, sis_pci_tbl);
|
||||||
MODULE_VERSION(DRV_VERSION);
|
MODULE_VERSION(DRV_VERSION);
|
||||||
|
|
|
@ -2405,6 +2405,8 @@
|
||||||
|
|
||||||
#define PCI_VENDOR_ID_AZWAVE 0x1a3b
|
#define PCI_VENDOR_ID_AZWAVE 0x1a3b
|
||||||
|
|
||||||
|
#define PCI_VENDOR_ID_ASMEDIA 0x1b21
|
||||||
|
|
||||||
#define PCI_VENDOR_ID_TEKRAM 0x1de1
|
#define PCI_VENDOR_ID_TEKRAM 0x1de1
|
||||||
#define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29
|
#define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue