[PATCH 08/18] ide: add ->read_altstatus method

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-ide@...>
Cc: Bartlomiej Zolnierkiewicz <bzolnier@...>, <linux-kernel@...>
Date: Friday, June 20, 2008 - 5:34 pm

* Remove ide_read_altstatus() inline helper.

* Add ->read_altstatus method for reading ATA Alternate Status
  register and use it instead of ->INB.

There should be no functional changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
 drivers/ide/ide-iops.c     |   13 +++++++++++--
 drivers/ide/ide-probe.c    |    4 ++--
 drivers/ide/pci/scc_pata.c |    6 ++++++
 include/linux/ide.h        |    8 +-------
 4 files changed, 20 insertions(+), 11 deletions(-)

Index: b/drivers/ide/ide-iops.c
===================================================================
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -119,6 +119,14 @@ static u8 ide_read_status(ide_hwif_t *hw
 		return inb(hwif->io_ports.status_addr);
 }
 
+static u8 ide_read_altstatus(ide_hwif_t *hwif)
+{
+	if (hwif->host_flags & IDE_HFLAG_MMIO)
+		return readb((void __iomem *)hwif->io_ports.ctl_addr);
+	else
+		return inb(hwif->io_ports.ctl_addr);
+}
+
 static u8 ide_read_sff_dma_status(ide_hwif_t *hwif)
 {
 	if (hwif->host_flags & IDE_HFLAG_MMIO)
@@ -349,6 +357,7 @@ void default_hwif_transport(ide_hwif_t *
 {
 	hwif->exec_command	  = ide_exec_command;
 	hwif->read_status	  = ide_read_status;
+	hwif->read_altstatus	  = ide_read_altstatus;
 	hwif->read_sff_dma_status = ide_read_sff_dma_status;
 
 	hwif->tf_load	  = ide_tf_load;
@@ -511,7 +520,7 @@ int drive_is_ready (ide_drive_t *drive)
 	 * about possible isa-pnp and pci-pnp issues yet.
 	 */
 	if (hwif->io_ports.ctl_addr)
-		stat = ide_read_altstatus(drive);
+		stat = hwif->read_altstatus(hwif);
 	else
 		/* Note: this may clear a pending IRQ!! */
 		stat = hwif->read_status(hwif);
@@ -724,7 +733,7 @@ int ide_driveid_update(ide_drive_t *driv
 		}
 
 		msleep(50);	/* give drive a breather */
-		stat = ide_read_altstatus(drive);
+		stat = hwif->read_altstatus(hwif);
 	} while (stat & BUSY_STAT);
 
 	msleep(50);	/* wait for IRQ and DRQ_STAT */
Index: b/drivers/ide/ide-probe.c
===================================================================
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -275,7 +275,7 @@ static int actual_try_to_identify (ide_d
 	msleep(50);
 
 	if (io_ports->ctl_addr) {
-		a = ide_read_altstatus(drive);
+		a = hwif->read_altstatus(hwif);
 		s = hwif->read_status(hwif);
 		if ((a ^ s) & ~INDEX_STAT)
 			/* ancient Seagate drives, broken interfaces */
@@ -306,7 +306,7 @@ static int actual_try_to_identify (ide_d
 		}
 		/* give drive a breather */
 		msleep(50);
-		s = use_altstatus ? ide_read_altstatus(drive)
+		s = use_altstatus ? hwif->read_altstatus(hwif)
 				  : hwif->read_status(hwif);
 	} while (s & BUSY_STAT);
 
Index: b/drivers/ide/pci/scc_pata.c
===================================================================
--- a/drivers/ide/pci/scc_pata.c
+++ b/drivers/ide/pci/scc_pata.c
@@ -139,6 +139,11 @@ static u8 scc_read_status(ide_hwif_t *hw
 	return (u8)in_be32((void *)hwif->io_ports.status_addr);
 }
 
+static u8 scc_read_altstatus(ide_hwif_t *hwif)
+{
+	return (u8)in_be32((void *)hwif->io_ports.ctl_addr);
+}
+
 static u8 scc_read_sff_dma_status(ide_hwif_t *hwif)
 {
 	return (u8)in_be32((void *)(hwif->dma_base + 4));
@@ -795,6 +800,7 @@ static void __devinit init_mmio_iops_scc
 
 	hwif->exec_command	  = scc_exec_command;
 	hwif->read_status	  = scc_read_status;
+	hwif->read_altstatus	  = scc_read_altstatus;
 	hwif->read_sff_dma_status = scc_read_sff_dma_status;
 
 	hwif->tf_load = scc_tf_load;
Index: b/include/linux/ide.h
===================================================================
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -470,6 +470,7 @@ typedef struct hwif_s {
 
 	void	(*exec_command)(struct hwif_s *, u8);
 	u8	(*read_status)(struct hwif_s *);
+	u8	(*read_altstatus)(struct hwif_s *);
 	u8	(*read_sff_dma_status)(struct hwif_s *);
 
 	void (*tf_load)(ide_drive_t *, struct ide_task_s *);
@@ -1349,13 +1350,6 @@ static inline void ide_set_irq(ide_drive
 		       hwif->io_ports.ctl_addr);
 }
 
-static inline u8 ide_read_altstatus(ide_drive_t *drive)
-{
-	ide_hwif_t *hwif = drive->hwif;
-
-	return hwif->INB(hwif->io_ports.ctl_addr);
-}
-
 static inline u8 ide_read_error(ide_drive_t *drive)
 {
 	ide_hwif_t *hwif = drive->hwif;
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 01/18] ide: add -&gt;read_sff_dma_status method, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:33 pm)
Re: [PATCH 01/18] ide: add -&gt;read_sff_dma_status method, Sergei Shtylyov, (Wed Sep 3, 9:19 am)
Re: [PATCH 01/18] ide: add -&gt;read_sff_dma_status method, Bartlomiej Zolnierkiewicz..., (Wed Sep 3, 2:13 pm)
Re: [PATCH 01/18] ide: add -&gt;read_sff_dma_status method, Sergei Shtylyov, (Sun Sep 7, 2:15 pm)
Re: [PATCH 01/18] ide: add -&gt;read_sff_dma_status method, Bartlomiej Zolnierkiewicz..., (Sun Sep 7, 3:23 pm)
Re: [PATCH 01/18] ide: add -&gt;read_sff_dma_status method, Sergei Shtylyov, (Sun Sep 7, 6:26 pm)
Re: [PATCH 01/18] ide: add -&gt;read_sff_dma_status method, Sergei Shtylyov, (Sun Sep 7, 2:49 pm)
[PATCH 18/18] ide: remove -&gt;INB, -&gt;OUTB and -&gt;OUTBSYNC methods, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:35 pm)
[PATCH 17/18] ide: add ide_read_bcount_and_ireason() helper, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:35 pm)
[PATCH 16/18] ide: add ide_read_ireason() helper, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:35 pm)
[PATCH 15/18] ide: add ide_read_device() helper, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:35 pm)
[PATCH 14/18] ide: use -&gt;tf_read in ide_read_error(), Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:34 pm)
[PATCH 13/18] ide: use -&gt;tf_load in SELECT_DRIVE(), Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:34 pm)
[PATCH 12/18] ide: use -&gt;tf_load in actual_try_to_identify(), Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:34 pm)
Re: [PATCH 12/18] ide: use -&gt;tf_load in actual_try_to_ide..., Bartlomiej Zolnierkiewicz..., (Sat Jun 21, 3:10 pm)
[PATCH 11/18] ide: use -&gt;tf_load in ide_config_drive_speed(), Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:34 pm)
[PATCH 10/18] ide: change order of register access in ide_co..., Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:34 pm)
[PATCH 09/18] ide: add -&gt;set_irq method, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:34 pm)
Re: [PATCH 09/18] ide: add -&gt;set_irq method, Sergei Shtylyov, (Wed Oct 15, 8:20 am)
Re: [PATCH 09/18] ide: add -&gt;set_irq method, Bartlomiej Zolnierkiewicz..., (Wed Oct 15, 2:22 pm)
Re: [PATCH 09/18] ide: add -&gt;set_irq method, Sergei Shtylyov, (Wed Oct 15, 5:22 pm)
[PATCH 08/18] ide: add ->read_altstatus method, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:34 pm)
[PATCH 07/18] ide: add -&gt;read_status method, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:34 pm)
[PATCH 06/18] ide: add -&gt;exec_command method, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:34 pm)
[PATCH 05/18] ide: factor out simplex handling from ide_pci_..., Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:33 pm)
[PATCH 04/18] ide: remove ide_setup_dma(), Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:33 pm)
Re: [PATCH 04/18] ide: remove ide_setup_dma(), Sergei Shtylyov, (Thu Aug 21, 1:16 pm)
Re: [PATCH 04/18] ide: remove ide_setup_dma(), Sergei Shtylyov, (Thu Aug 21, 1:56 pm)
Re: [PATCH 04/18] ide: remove ide_setup_dma(), Sergei Shtylyov, (Fri Jun 20, 6:03 pm)
Re: [PATCH 04/18] ide: remove ide_setup_dma(), Bartlomiej Zolnierkiewicz..., (Sat Jun 21, 3:06 pm)
Re: [PATCH 04/18] ide: remove ide_setup_dma(), Sergei Shtylyov, (Sat Jun 21, 3:29 pm)
[PATCH 03/18] ide: remove -&gt;dma_{status,command} fields f..., Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:33 pm)
[PATCH 02/18] ide: use I/O ops directly in ide-dma.c, Bartlomiej Zolnierkiewicz..., (Fri Jun 20, 5:33 pm)
Re: [PATCH 02/18] ide: use I/O ops directly in ide-dma.c, Sergei Shtylyov, (Mon Sep 8, 11:49 am)