mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Merge branch 'omap2-upstream' into devel
This commit is contained in:
commit
adf6d34e46
737 changed files with 24475 additions and 14528 deletions
|
|
@ -325,6 +325,44 @@ static void ata_force_horkage(struct ata_device *dev)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* atapi_cmd_type - Determine ATAPI command type from SCSI opcode
|
||||
* @opcode: SCSI opcode
|
||||
*
|
||||
* Determine ATAPI command type from @opcode.
|
||||
*
|
||||
* LOCKING:
|
||||
* None.
|
||||
*
|
||||
* RETURNS:
|
||||
* ATAPI_{READ|WRITE|READ_CD|PASS_THRU|MISC}
|
||||
*/
|
||||
int atapi_cmd_type(u8 opcode)
|
||||
{
|
||||
switch (opcode) {
|
||||
case GPCMD_READ_10:
|
||||
case GPCMD_READ_12:
|
||||
return ATAPI_READ;
|
||||
|
||||
case GPCMD_WRITE_10:
|
||||
case GPCMD_WRITE_12:
|
||||
case GPCMD_WRITE_AND_VERIFY_10:
|
||||
return ATAPI_WRITE;
|
||||
|
||||
case GPCMD_READ_CD:
|
||||
case GPCMD_READ_CD_MSF:
|
||||
return ATAPI_READ_CD;
|
||||
|
||||
case ATA_16:
|
||||
case ATA_12:
|
||||
if (atapi_passthru16)
|
||||
return ATAPI_PASS_THRU;
|
||||
/* fall thru */
|
||||
default:
|
||||
return ATAPI_MISC;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_tf_to_fis - Convert ATA taskfile to SATA FIS structure
|
||||
* @tf: Taskfile to convert
|
||||
|
|
@ -972,7 +1010,7 @@ static void ata_dev_disable_pm(struct ata_device *dev)
|
|||
void ata_lpm_schedule(struct ata_port *ap, enum link_pm policy)
|
||||
{
|
||||
ap->pm_policy = policy;
|
||||
ap->link.eh_info.action |= ATA_EHI_LPM;
|
||||
ap->link.eh_info.action |= ATA_EH_LPM;
|
||||
ap->link.eh_info.flags |= ATA_EHI_NO_AUTOPSY;
|
||||
ata_port_schedule_eh(ap);
|
||||
}
|
||||
|
|
@ -2660,7 +2698,7 @@ int ata_bus_probe(struct ata_port *ap)
|
|||
specific sequence bass-ackwards so that PDIAG- is released by
|
||||
the slave device */
|
||||
|
||||
ata_link_for_each_dev(dev, &ap->link) {
|
||||
ata_link_for_each_dev_reverse(dev, &ap->link) {
|
||||
if (tries[dev->devno])
|
||||
dev->class = classes[dev->devno];
|
||||
|
||||
|
|
@ -7774,6 +7812,7 @@ EXPORT_SYMBOL_GPL(ata_tf_read);
|
|||
EXPORT_SYMBOL_GPL(ata_noop_dev_select);
|
||||
EXPORT_SYMBOL_GPL(ata_std_dev_select);
|
||||
EXPORT_SYMBOL_GPL(sata_print_link_status);
|
||||
EXPORT_SYMBOL_GPL(atapi_cmd_type);
|
||||
EXPORT_SYMBOL_GPL(ata_tf_to_fis);
|
||||
EXPORT_SYMBOL_GPL(ata_tf_from_fis);
|
||||
EXPORT_SYMBOL_GPL(ata_pack_xfermask);
|
||||
|
|
|
|||
|
|
@ -2748,7 +2748,7 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset,
|
|||
ehc->i.flags &= ~ATA_EHI_SETMODE;
|
||||
}
|
||||
|
||||
if (ehc->i.action & ATA_EHI_LPM)
|
||||
if (ehc->i.action & ATA_EH_LPM)
|
||||
ata_link_for_each_dev(dev, link)
|
||||
ata_dev_enable_pm(dev, ap->pm_policy);
|
||||
|
||||
|
|
|
|||
|
|
@ -36,6 +36,10 @@
|
|||
#define DRV_NAME "pata_ali"
|
||||
#define DRV_VERSION "0.7.5"
|
||||
|
||||
int ali_atapi_dma = 0;
|
||||
module_param_named(atapi_dma, ali_atapi_dma, int, 0644);
|
||||
MODULE_PARM_DESC(atapi_dma, "Enable ATAPI DMA (0=disable, 1=enable)");
|
||||
|
||||
/*
|
||||
* Cable special cases
|
||||
*/
|
||||
|
|
@ -269,6 +273,27 @@ static void ali_set_dmamode(struct ata_port *ap, struct ata_device *adev)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ali_warn_atapi_dma - Warn about ATAPI DMA disablement
|
||||
* @adev: Device
|
||||
*
|
||||
* Whine about ATAPI DMA disablement if @adev is an ATAPI device.
|
||||
* Can be used as ->dev_config.
|
||||
*/
|
||||
|
||||
static void ali_warn_atapi_dma(struct ata_device *adev)
|
||||
{
|
||||
struct ata_eh_context *ehc = &adev->link->eh_context;
|
||||
int print_info = ehc->i.flags & ATA_EHI_PRINTINFO;
|
||||
|
||||
if (print_info && adev->class == ATA_DEV_ATAPI && !ali_atapi_dma) {
|
||||
ata_dev_printk(adev, KERN_WARNING,
|
||||
"WARNING: ATAPI DMA disabled for reliablity issues. It can be enabled\n");
|
||||
ata_dev_printk(adev, KERN_WARNING,
|
||||
"WARNING: via pata_ali.atapi_dma modparam or corresponding sysfs node.\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ali_lock_sectors - Keep older devices to 255 sector mode
|
||||
* @adev: Device
|
||||
|
|
@ -283,6 +308,7 @@ static void ali_set_dmamode(struct ata_port *ap, struct ata_device *adev)
|
|||
static void ali_lock_sectors(struct ata_device *adev)
|
||||
{
|
||||
adev->max_sectors = 255;
|
||||
ali_warn_atapi_dma(adev);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -294,6 +320,18 @@ static void ali_lock_sectors(struct ata_device *adev)
|
|||
|
||||
static int ali_check_atapi_dma(struct ata_queued_cmd *qc)
|
||||
{
|
||||
if (!ali_atapi_dma) {
|
||||
/* FIXME: pata_ali can't do ATAPI DMA reliably but the
|
||||
* IDE alim15x3 driver can. I tried lots of things
|
||||
* but couldn't find what the actual difference was.
|
||||
* If you got an idea, please write it to
|
||||
* linux-ide@vger.kernel.org and cc htejun@gmail.com.
|
||||
*
|
||||
* Disable ATAPI DMA for now.
|
||||
*/
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
/* If its not a media command, its not worth it */
|
||||
if (atapi_cmd_type(qc->cdb[0]) == ATAPI_MISC)
|
||||
return -EOPNOTSUPP;
|
||||
|
|
@ -359,6 +397,7 @@ static struct ata_port_operations ali_20_port_ops = {
|
|||
|
||||
.tf_load = ata_tf_load,
|
||||
.tf_read = ata_tf_read,
|
||||
.check_atapi_dma = ali_check_atapi_dma,
|
||||
.check_status = ata_check_status,
|
||||
.exec_command = ata_exec_command,
|
||||
.dev_select = ata_std_dev_select,
|
||||
|
|
@ -438,6 +477,7 @@ static struct ata_port_operations ali_c5_port_ops = {
|
|||
.check_status = ata_check_status,
|
||||
.exec_command = ata_exec_command,
|
||||
.dev_select = ata_std_dev_select,
|
||||
.dev_config = ali_warn_atapi_dma,
|
||||
|
||||
.freeze = ata_bmdma_freeze,
|
||||
.thaw = ata_bmdma_thaw,
|
||||
|
|
|
|||
|
|
@ -269,7 +269,11 @@ static u8 sil680_init_chip(struct pci_dev *pdev, int *try_mmio)
|
|||
dev_dbg(&pdev->dev, "sil680: BA5_EN = %d clock = %02X\n",
|
||||
tmpbyte & 1, tmpbyte & 0x30);
|
||||
|
||||
*try_mmio = (tmpbyte & 1) || pci_resource_start(pdev, 5);
|
||||
*try_mmio = 0;
|
||||
#ifdef CONFIG_PPC_MERGE
|
||||
if (machine_is(cell))
|
||||
*try_mmio = (tmpbyte & 1) || pci_resource_start(pdev, 5);
|
||||
#endif
|
||||
|
||||
switch(tmpbyte & 0x30) {
|
||||
case 0x00:
|
||||
|
|
|
|||
|
|
@ -1256,7 +1256,6 @@ static int sata_fsl_probe(struct of_device *ofdev,
|
|||
void __iomem *ssr_base = NULL;
|
||||
void __iomem *csr_base = NULL;
|
||||
struct sata_fsl_host_priv *host_priv = NULL;
|
||||
struct resource *r;
|
||||
int irq;
|
||||
struct ata_host *host;
|
||||
|
||||
|
|
@ -1266,8 +1265,6 @@ static int sata_fsl_probe(struct of_device *ofdev,
|
|||
dev_printk(KERN_INFO, &ofdev->dev,
|
||||
"Sata FSL Platform/CSB Driver init\n");
|
||||
|
||||
r = kmalloc(sizeof(struct resource), GFP_KERNEL);
|
||||
|
||||
hcr_base = of_iomap(ofdev->node, 0);
|
||||
if (!hcr_base)
|
||||
goto error_exit_with_cleanup;
|
||||
|
|
@ -1348,10 +1345,7 @@ static int sata_fsl_remove(struct of_device *ofdev)
|
|||
|
||||
static struct of_device_id fsl_sata_match[] = {
|
||||
{
|
||||
.compatible = "fsl,mpc8315-sata",
|
||||
},
|
||||
{
|
||||
.compatible = "fsl,mpc8379-sata",
|
||||
.compatible = "fsl,pq-sata",
|
||||
},
|
||||
{},
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue