aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_sil680.c
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/ata/pata_sil680.c
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'drivers/ata/pata_sil680.c')
-rw-r--r--drivers/ata/pata_sil680.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c
index d3190d7ec304..118787caa93f 100644
--- a/drivers/ata/pata_sil680.c
+++ b/drivers/ata/pata_sil680.c
@@ -11,7 +11,7 @@
11 * 11 *
12 * May be copied or modified under the terms of the GNU General Public License 12 * May be copied or modified under the terms of the GNU General Public License
13 * 13 *
14 * Documentation publically available. 14 * Documentation publicly available.
15 * 15 *
16 * If you have strange problems with nVidia chipset systems please 16 * If you have strange problems with nVidia chipset systems please
17 * see the SI support documentation and update your system BIOS 17 * see the SI support documentation and update your system BIOS
@@ -43,7 +43,7 @@
43 * 43 *
44 * Turn a config register offset into the right address in either 44 * Turn a config register offset into the right address in either
45 * PCI space or MMIO space to access the control register in question 45 * PCI space or MMIO space to access the control register in question
46 * Thankfully this is a configuration operation so isnt performance 46 * Thankfully this is a configuration operation so isn't performance
47 * criticial. 47 * criticial.
48 */ 48 */
49 49
@@ -202,14 +202,25 @@ static void sil680_set_dmamode(struct ata_port *ap, struct ata_device *adev)
202 * LOCKING: 202 * LOCKING:
203 * spin_lock_irqsave(host lock) 203 * spin_lock_irqsave(host lock)
204 */ 204 */
205void sil680_sff_exec_command(struct ata_port *ap, 205static void sil680_sff_exec_command(struct ata_port *ap,
206 const struct ata_taskfile *tf) 206 const struct ata_taskfile *tf)
207{ 207{
208 DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command); 208 DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command);
209 iowrite8(tf->command, ap->ioaddr.command_addr); 209 iowrite8(tf->command, ap->ioaddr.command_addr);
210 ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); 210 ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
211} 211}
212 212
213static bool sil680_sff_irq_check(struct ata_port *ap)
214{
215 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
216 unsigned long addr = sil680_selreg(ap, 1);
217 u8 val;
218
219 pci_read_config_byte(pdev, addr, &val);
220
221 return val & 0x08;
222}
223
213static struct scsi_host_template sil680_sht = { 224static struct scsi_host_template sil680_sht = {
214 ATA_BMDMA_SHT(DRV_NAME), 225 ATA_BMDMA_SHT(DRV_NAME),
215}; 226};
@@ -218,6 +229,7 @@ static struct scsi_host_template sil680_sht = {
218static struct ata_port_operations sil680_port_ops = { 229static struct ata_port_operations sil680_port_ops = {
219 .inherits = &ata_bmdma32_port_ops, 230 .inherits = &ata_bmdma32_port_ops,
220 .sff_exec_command = sil680_sff_exec_command, 231 .sff_exec_command = sil680_sff_exec_command,
232 .sff_irq_check = sil680_sff_irq_check,
221 .cable_detect = sil680_cable_detect, 233 .cable_detect = sil680_cable_detect,
222 .set_piomode = sil680_set_piomode, 234 .set_piomode = sil680_set_piomode,
223 .set_dmamode = sil680_set_dmamode, 235 .set_dmamode = sil680_set_dmamode,