mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-10 05:05:40 +07:00
Merge branch 'for-3.17-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata
Pull libata fixes from Tejun Heo: "Nothing drastic but pushing out early due to build breakage in the new tegra platform. Additionally: - M550 tagged trim blacklist pattern is widened so that it matches the new 1TB model - three controller specific fixes" * 'for-3.17-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata: libata: widen Crucial M550 blacklist matching pata_scc: propagate return value of scc_wait_after_reset ata: ahci_tegra: Change include to fix compilation pata_samsung_cf: change ret type to signed ahci_xgene: Removing NCQ support from the APM X-Gene SoC AHCI SATA Host Controller driver.
This commit is contained in:
commit
5317821c08
@ -24,8 +24,8 @@
|
|||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/of_device.h>
|
#include <linux/of_device.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/tegra-powergate.h>
|
|
||||||
#include <linux/regulator/consumer.h>
|
#include <linux/regulator/consumer.h>
|
||||||
|
#include <soc/tegra/pmc.h>
|
||||||
#include "ahci.h"
|
#include "ahci.h"
|
||||||
|
|
||||||
#define SATA_CONFIGURATION_0 0x180
|
#define SATA_CONFIGURATION_0 0x180
|
||||||
|
@ -344,7 +344,7 @@ static struct ata_port_operations xgene_ahci_ops = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct ata_port_info xgene_ahci_port_info = {
|
static const struct ata_port_info xgene_ahci_port_info = {
|
||||||
.flags = AHCI_FLAG_COMMON | ATA_FLAG_NCQ,
|
.flags = AHCI_FLAG_COMMON,
|
||||||
.pio_mask = ATA_PIO4,
|
.pio_mask = ATA_PIO4,
|
||||||
.udma_mask = ATA_UDMA6,
|
.udma_mask = ATA_UDMA6,
|
||||||
.port_ops = &xgene_ahci_ops,
|
.port_ops = &xgene_ahci_ops,
|
||||||
@ -480,7 +480,7 @@ static int xgene_ahci_probe(struct platform_device *pdev)
|
|||||||
/* Configure the host controller */
|
/* Configure the host controller */
|
||||||
xgene_ahci_hw_init(hpriv);
|
xgene_ahci_hw_init(hpriv);
|
||||||
|
|
||||||
hpriv->flags = AHCI_HFLAG_NO_PMP | AHCI_HFLAG_YES_NCQ;
|
hpriv->flags = AHCI_HFLAG_NO_PMP | AHCI_HFLAG_NO_NCQ;
|
||||||
|
|
||||||
rc = ahci_platform_init_host(pdev, hpriv, &xgene_ahci_port_info);
|
rc = ahci_platform_init_host(pdev, hpriv, &xgene_ahci_port_info);
|
||||||
if (rc)
|
if (rc)
|
||||||
|
@ -4228,7 +4228,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
|
|||||||
{ "Micron_M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
|
{ "Micron_M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
|
||||||
{ "Crucial_CT???M500SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
|
{ "Crucial_CT???M500SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
|
||||||
{ "Micron_M550*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
|
{ "Micron_M550*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
|
||||||
{ "Crucial_CT???M550SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
|
{ "Crucial_CT*M550SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some WD SATA-I drives spin up and down erratically when the link
|
* Some WD SATA-I drives spin up and down erratically when the link
|
||||||
|
@ -360,7 +360,7 @@ static int pata_s3c_wait_after_reset(struct ata_link *link,
|
|||||||
/*
|
/*
|
||||||
* pata_s3c_bus_softreset - PATA device software reset
|
* pata_s3c_bus_softreset - PATA device software reset
|
||||||
*/
|
*/
|
||||||
static unsigned int pata_s3c_bus_softreset(struct ata_port *ap,
|
static int pata_s3c_bus_softreset(struct ata_port *ap,
|
||||||
unsigned long deadline)
|
unsigned long deadline)
|
||||||
{
|
{
|
||||||
struct ata_ioports *ioaddr = &ap->ioaddr;
|
struct ata_ioports *ioaddr = &ap->ioaddr;
|
||||||
|
@ -585,7 +585,7 @@ static int scc_wait_after_reset(struct ata_link *link, unsigned int devmask,
|
|||||||
* Note: Original code is ata_bus_softreset().
|
* Note: Original code is ata_bus_softreset().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static unsigned int scc_bus_softreset(struct ata_port *ap, unsigned int devmask,
|
static int scc_bus_softreset(struct ata_port *ap, unsigned int devmask,
|
||||||
unsigned long deadline)
|
unsigned long deadline)
|
||||||
{
|
{
|
||||||
struct ata_ioports *ioaddr = &ap->ioaddr;
|
struct ata_ioports *ioaddr = &ap->ioaddr;
|
||||||
@ -599,9 +599,7 @@ static unsigned int scc_bus_softreset(struct ata_port *ap, unsigned int devmask,
|
|||||||
udelay(20);
|
udelay(20);
|
||||||
out_be32(ioaddr->ctl_addr, ap->ctl);
|
out_be32(ioaddr->ctl_addr, ap->ctl);
|
||||||
|
|
||||||
scc_wait_after_reset(&ap->link, devmask, deadline);
|
return scc_wait_after_reset(&ap->link, devmask, deadline);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -618,7 +616,8 @@ static int scc_softreset(struct ata_link *link, unsigned int *classes,
|
|||||||
{
|
{
|
||||||
struct ata_port *ap = link->ap;
|
struct ata_port *ap = link->ap;
|
||||||
unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
|
unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
|
||||||
unsigned int devmask = 0, err_mask;
|
unsigned int devmask = 0;
|
||||||
|
int rc;
|
||||||
u8 err;
|
u8 err;
|
||||||
|
|
||||||
DPRINTK("ENTER\n");
|
DPRINTK("ENTER\n");
|
||||||
@ -634,9 +633,9 @@ static int scc_softreset(struct ata_link *link, unsigned int *classes,
|
|||||||
|
|
||||||
/* issue bus reset */
|
/* issue bus reset */
|
||||||
DPRINTK("about to softreset, devmask=%x\n", devmask);
|
DPRINTK("about to softreset, devmask=%x\n", devmask);
|
||||||
err_mask = scc_bus_softreset(ap, devmask, deadline);
|
rc = scc_bus_softreset(ap, devmask, deadline);
|
||||||
if (err_mask) {
|
if (rc) {
|
||||||
ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", err_mask);
|
ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", rc);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user