aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ppc/pmac.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:52 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:52 -0400
commit6e6afb3b7401f0181da74a1add57f126946b43e6 (patch)
tree2ca80a7fa25a387b5f3d479d9e94b1339ee440ac /drivers/ide/ppc/pmac.c
parent1f6d8a0fd8f6cc5ee2219a8cf9b2da16dfd67397 (diff)
ide: add ->set_irq method
Add ->set_irq method for setting nIEN bit of ATA Device Control register and use it instead of ide_set_irq(). While at it: * Use ->set_irq in init_irq() and do_reset1(). * Don't use HWIF() macro in ide_check_pm_state(). There should be no functional changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/ppc/pmac.c')
-rw-r--r--drivers/ide/ppc/pmac.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c
index 7c3a84f8fbed..a0d66480a797 100644
--- a/drivers/ide/ppc/pmac.c
+++ b/drivers/ide/ppc/pmac.c
@@ -502,6 +502,22 @@ static void pmac_exec_command(ide_hwif_t *hwif, u8 cmd)
502 + IDE_TIMING_CONFIG)); 502 + IDE_TIMING_CONFIG));
503} 503}
504 504
505static void pmac_set_irq(ide_hwif_t *hwif, int on)
506{
507 u8 ctl = ATA_DEVCTL_OBS;
508
509 if (on == 4) { /* hack for SRST */
510 ctl |= 4;
511 on &= ~4;
512 }
513
514 ctl |= on ? 0 : 2;
515
516 writeb(ctl, (void __iomem *)hwif->io_ports.ctl_addr);
517 (void)readl((void __iomem *)(hwif->io_ports.data_addr
518 + IDE_TIMING_CONFIG));
519}
520
505/* 521/*
506 * Old tuning functions (called on hdparm -p), sets up drive PIO timings 522 * Old tuning functions (called on hdparm -p), sets up drive PIO timings
507 */ 523 */
@@ -1100,6 +1116,7 @@ static int __devinit pmac_ide_setup_device(pmac_ide_hwif_t *pmif, hw_regs_t *hw)
1100 return -ENOENT; 1116 return -ENOENT;
1101 1117
1102 hwif->exec_command = pmac_exec_command; 1118 hwif->exec_command = pmac_exec_command;
1119 hwif->set_irq = pmac_set_irq;
1103 1120
1104 /* Setup MMIO ops */ 1121 /* Setup MMIO ops */
1105 default_hwif_mmiops(hwif); 1122 default_hwif_mmiops(hwif);