[PATCH 62/68] pata_sl82c105: move code to be re-used by ide2libata to pata_sl82c105.h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
Subject: [PATCH] pata_sl82c105: move code to be re-used by ide2libata to pata_sl82c105.h

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
---
 drivers/ata/pata_sl82c105.c |  106 --------------------------------------------
 drivers/ata/pata_sl82c105.h |  106 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 107 insertions(+), 105 deletions(-)

Index: b/drivers/ata/pata_sl82c105.c
===================================================================
--- a/drivers/ata/pata_sl82c105.c
+++ b/drivers/ata/pata_sl82c105.c
@@ -28,18 +28,7 @@
 #define DRV_NAME "pata_sl82c105"
 #define DRV_VERSION "0.3.3"
 
-enum {
-	/*
-	 * SL82C105 PCI config register 0x40 bits.
-	 */
-	CTRL_IDE_IRQB	=	(1 << 30),
-	CTRL_IDE_IRQA   =	(1 << 28),
-	CTRL_LEGIRQ     =	(1 << 11),
-	CTRL_P1F16      =	(1 << 5),
-	CTRL_P1EN       =	(1 << 4),
-	CTRL_P0F16      =	(1 << 1),
-	CTRL_P0EN       =	(1 << 0)
-};
+#include "pata_sl82c105.h"
 
 /**
  *	sl82c105_pre_reset		-	probe begin
@@ -104,50 +93,6 @@ static void sl82c105_set_piomode(struct
 }
 
 /**
- *	sl82c105_configure_dmamode	-	set DMA mode in chip
- *	@ap: ATA interface
- *	@adev: ATA device
- *
- *	Load DMA cycle times into the chip ready for a DMA transfer
- *	to occur.
- */
-
-static void sl82c105_configure_dmamode(struct ata_port *ap, struct ata_device *adev)
-{
-	struct pci_dev *pdev = to_pci_dev(ap->host->dev);
-	static u16 dma_timing[3] = {
-		0x707, 0x201, 0x200
-	};
-	u16 dummy;
-	int timing = 0x44 + (8 * ap->port_no) + (4 * adev->devno);
-	int dma = adev->dma_mode - XFER_MW_DMA_0;
-
-	pci_write_config_word(pdev, timing, dma_timing[dma]);
-	/* Can we lose this oddity of the old driver */
-	pci_read_config_word(pdev, timing, &dummy);
-}
-
-/**
- *	sl82c105_reset_engine	-	Reset the DMA engine
- *	@ap: ATA interface
- *
- *	The sl82c105 has some serious problems with the DMA engine
- *	when transfers don't run as expected or ATAPI is used. The
- *	recommended fix is to reset the engine each use using a chip
- *	test register.
- */
-
-static void sl82c105_reset_engine(struct ata_port *ap)
-{
-	struct pci_dev *pdev = to_pci_dev(ap->host->dev);
-	u16 val;
-
-	pci_read_config_word(pdev, 0x7E, &val);
-	pci_write_config_word(pdev, 0x7E, val | 4);
-	pci_write_config_word(pdev, 0x7E, val & ~4);
-}
-
-/**
  *	sl82c105_bmdma_start		-	DMA engine begin
  *	@qc: ATA command
  *
@@ -242,55 +187,6 @@ static struct ata_port_operations sl82c1
 	.prereset	= sl82c105_pre_reset,
 };
 
-/**
- *	sl82c105_bridge_revision	-	find bridge version
- *	@pdev: PCI device for the ATA function
- *
- *	Locates the PCI bridge associated with the ATA function and
- *	providing it is a Winbond 553 reports the revision. If it cannot
- *	find a revision or the right device it returns -1
- */
-
-static int sl82c105_bridge_revision(struct pci_dev *pdev)
-{
-	struct pci_dev *bridge;
-
-	/*
-	 * The bridge should be part of the same device, but function 0.
-	 */
-	bridge = pci_get_slot(pdev->bus,
-			       PCI_DEVFN(PCI_SLOT(pdev->devfn), 0));
-	if (!bridge)
-		return -1;
-
-	/*
-	 * Make sure it is a Winbond 553 and is an ISA bridge.
-	 */
-	if (bridge->vendor != PCI_VENDOR_ID_WINBOND ||
-	    bridge->device != PCI_DEVICE_ID_WINBOND_83C553 ||
-	    bridge->class >> 8 != PCI_CLASS_BRIDGE_ISA) {
-	    	pci_dev_put(bridge);
-		return -1;
-	}
-	/*
-	 * We need to find function 0's revision, not function 1
-	 */
-	pci_dev_put(bridge);
-	return bridge->revision;
-}
-
-static int sl82c105_fixup(struct device *dev)
-{
-	struct pci_dev *pdev = to_pci_dev(dev);
-	u32 val;
-
-	pci_read_config_dword(pdev, 0x40, &val);
-	val |= CTRL_P0EN | CTRL_P0F16 | CTRL_P1F16;
-	pci_write_config_dword(pdev, 0x40, val);
-
-	return 0;
-}
-
 static int sl82c105_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
 	static const struct ata_port_info info_dma = {
Index: b/drivers/ata/pata_sl82c105.h
===================================================================
--- /dev/null
+++ b/drivers/ata/pata_sl82c105.h
@@ -0,0 +1,106 @@
+
+enum {
+	/*
+	 * SL82C105 PCI config register 0x40 bits.
+	 */
+	CTRL_IDE_IRQB	=	(1 << 30),
+	CTRL_IDE_IRQA   =	(1 << 28),
+	CTRL_LEGIRQ     =	(1 << 11),
+	CTRL_P1F16      =	(1 << 5),
+	CTRL_P1EN       =	(1 << 4),
+	CTRL_P0F16      =	(1 << 1),
+	CTRL_P0EN       =	(1 << 0)
+};
+
+/**
+ *	sl82c105_configure_dmamode	-	set DMA mode in chip
+ *	@ap: ATA interface
+ *	@adev: ATA device
+ *
+ *	Load DMA cycle times into the chip ready for a DMA transfer
+ *	to occur.
+ */
+
+static void sl82c105_configure_dmamode(struct ata_port *ap, struct ata_device *adev)
+{
+	struct pci_dev *pdev = to_pci_dev(ap->host->dev);
+	static u16 dma_timing[3] = {
+		0x707, 0x201, 0x200
+	};
+	u16 dummy;
+	int timing = 0x44 + (8 * ap->port_no) + (4 * adev->devno);
+	int dma = adev->dma_mode - XFER_MW_DMA_0;
+
+	pci_write_config_word(pdev, timing, dma_timing[dma]);
+	/* Can we lose this oddity of the old driver */
+	pci_read_config_word(pdev, timing, &dummy);
+}
+
+/**
+ *	sl82c105_reset_engine	-	Reset the DMA engine
+ *	@ap: ATA interface
+ *
+ *	The sl82c105 has some serious problems with the DMA engine
+ *	when transfers don't run as expected or ATAPI is used. The
+ *	recommended fix is to reset the engine each use using a chip
+ *	test register.
+ */
+
+static void sl82c105_reset_engine(struct ata_port *ap)
+{
+	struct pci_dev *pdev = to_pci_dev(ap->host->dev);
+	u16 val;
+
+	pci_read_config_word(pdev, 0x7E, &val);
+	pci_write_config_word(pdev, 0x7E, val | 4);
+	pci_write_config_word(pdev, 0x7E, val & ~4);
+}
+
+/**
+ *	sl82c105_bridge_revision	-	find bridge version
+ *	@pdev: PCI device for the ATA function
+ *
+ *	Locates the PCI bridge associated with the ATA function and
+ *	providing it is a Winbond 553 reports the revision. If it cannot
+ *	find a revision or the right device it returns -1
+ */
+
+static int sl82c105_bridge_revision(struct pci_dev *pdev)
+{
+	struct pci_dev *bridge;
+
+	/*
+	 * The bridge should be part of the same device, but function 0.
+	 */
+	bridge = pci_get_slot(pdev->bus,
+			       PCI_DEVFN(PCI_SLOT(pdev->devfn), 0));
+	if (!bridge)
+		return -1;
+
+	/*
+	 * Make sure it is a Winbond 553 and is an ISA bridge.
+	 */
+	if (bridge->vendor != PCI_VENDOR_ID_WINBOND ||
+	    bridge->device != PCI_DEVICE_ID_WINBOND_83C553 ||
+	    bridge->class >> 8 != PCI_CLASS_BRIDGE_ISA) {
+		pci_dev_put(bridge);
+		return -1;
+	}
+	/*
+	 * We need to find function 0's revision, not function 1
+	 */
+	pci_dev_put(bridge);
+	return bridge->revision;
+}
+
+static int sl82c105_fixup(struct device *dev)
+{
+	struct pci_dev *pdev = to_pci_dev(dev);
+	u32 val;
+
+	pci_read_config_dword(pdev, 0x40, &val);
+	val |= CTRL_P0EN | CTRL_P0F16 | CTRL_P1F16;
+	pci_write_config_dword(pdev, 0x40, val);
+
+	return 0;
+}
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux