Re: [PATCH 2/7] I/OAT: Rename the source file

2007-07-19 Thread David Miller
From: Shannon Nelson <[EMAIL PROTECTED]>
Date: Thu, 19 Jul 2007 17:44:57 -0700

> Rename the ioatdma.c file in preparation for splitting into multiple files,
> which will allow for easier adding new functionality.
> 
> Signed-off-by: Shannon Nelson <[EMAIL PROTECTED]>

Acked-by: David S. Miller <[EMAIL PROTECTED]>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 2/7] I/OAT: Rename the source file

2007-07-19 Thread Shannon Nelson
Rename the ioatdma.c file in preparation for splitting into multiple files,
which will allow for easier adding new functionality.

Signed-off-by: Shannon Nelson <[EMAIL PROTECTED]>
---

 drivers/dma/Makefile   |1 
 drivers/dma/ioat_dma.c |  829 
 drivers/dma/ioatdma.c  |  829 
 3 files changed, 830 insertions(+), 829 deletions(-)

diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
index b3839b6..77bee99 100644
--- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile
@@ -1,4 +1,5 @@
 obj-$(CONFIG_DMA_ENGINE) += dmaengine.o
 obj-$(CONFIG_NET_DMA) += iovlock.o
 obj-$(CONFIG_INTEL_IOATDMA) += ioatdma.o
+ioatdma-objs := ioat_dma.o
 obj-$(CONFIG_INTEL_IOP_ADMA) += iop-adma.o
diff --git a/drivers/dma/ioat_dma.c b/drivers/dma/ioat_dma.c
new file mode 100644
index 000..52e2ac2
--- /dev/null
+++ b/drivers/dma/ioat_dma.c
@@ -0,0 +1,829 @@
+/*
+ * Copyright(c) 2004 - 2006 Intel Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * The full GNU General Public License is included in this distribution in the
+ * file called COPYING.
+ */
+
+/*
+ * This driver supports an Intel I/OAT DMA engine, which does asynchronous
+ * copy operations.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "ioatdma.h"
+#include "ioatdma_registers.h"
+#include "ioatdma_hw.h"
+
+#define to_ioat_chan(chan) container_of(chan, struct ioat_dma_chan, common)
+#define to_ioat_device(dev) container_of(dev, struct ioat_device, common)
+#define to_ioat_desc(lh) container_of(lh, struct ioat_desc_sw, node)
+#define tx_to_ioat_desc(tx) container_of(tx, struct ioat_desc_sw, async_tx)
+
+/* internal functions */
+static int __devinit ioat_probe(struct pci_dev *pdev, const struct 
pci_device_id *ent);
+static void ioat_shutdown(struct pci_dev *pdev);
+static void __devexit ioat_remove(struct pci_dev *pdev);
+
+static int enumerate_dma_channels(struct ioat_device *device)
+{
+   u8 xfercap_scale;
+   u32 xfercap;
+   int i;
+   struct ioat_dma_chan *ioat_chan;
+
+   device->common.chancnt = readb(device->reg_base + IOAT_CHANCNT_OFFSET);
+   xfercap_scale = readb(device->reg_base + IOAT_XFERCAP_OFFSET);
+   xfercap = (xfercap_scale == 0 ? -1 : (1UL << xfercap_scale));
+
+   for (i = 0; i < device->common.chancnt; i++) {
+   ioat_chan = kzalloc(sizeof(*ioat_chan), GFP_KERNEL);
+   if (!ioat_chan) {
+   device->common.chancnt = i;
+   break;
+   }
+
+   ioat_chan->device = device;
+   ioat_chan->reg_base = device->reg_base + (0x80 * (i + 1));
+   ioat_chan->xfercap = xfercap;
+   spin_lock_init(_chan->cleanup_lock);
+   spin_lock_init(_chan->desc_lock);
+   INIT_LIST_HEAD(_chan->free_desc);
+   INIT_LIST_HEAD(_chan->used_desc);
+   /* This should be made common somewhere in dmaengine.c */
+   ioat_chan->common.device = >common;
+   list_add_tail(_chan->common.device_node,
+ >common.channels);
+   }
+   return device->common.chancnt;
+}
+
+static void
+ioat_set_src(dma_addr_t addr, struct dma_async_tx_descriptor *tx, int index)
+{
+   struct ioat_desc_sw *iter, *desc = tx_to_ioat_desc(tx);
+   struct ioat_dma_chan *ioat_chan = to_ioat_chan(tx->chan);
+
+   pci_unmap_addr_set(desc, src, addr);
+
+   list_for_each_entry(iter, >async_tx.tx_list, node) {
+   iter->hw->src_addr = addr;
+   addr += ioat_chan->xfercap;
+   }
+
+}
+
+static void
+ioat_set_dest(dma_addr_t addr, struct dma_async_tx_descriptor *tx, int index)
+{
+   struct ioat_desc_sw *iter, *desc = tx_to_ioat_desc(tx);
+   struct ioat_dma_chan *ioat_chan = to_ioat_chan(tx->chan);
+
+   pci_unmap_addr_set(desc, dst, addr);
+
+   list_for_each_entry(iter, >async_tx.tx_list, node) {
+   iter->hw->dst_addr = addr;
+   addr += ioat_chan->xfercap;
+   }
+}
+
+static dma_cookie_t
+ioat_tx_submit(struct dma_async_tx_descriptor *tx)
+{
+   struct ioat_dma_chan *ioat_chan = to_ioat_chan(tx->chan);
+   

[PATCH 2/7] I/OAT: Rename the source file

2007-07-19 Thread Shannon Nelson
Rename the ioatdma.c file in preparation for splitting into multiple files,
which will allow for easier adding new functionality.

Signed-off-by: Shannon Nelson [EMAIL PROTECTED]
---

 drivers/dma/Makefile   |1 
 drivers/dma/ioat_dma.c |  829 
 drivers/dma/ioatdma.c  |  829 
 3 files changed, 830 insertions(+), 829 deletions(-)

diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
index b3839b6..77bee99 100644
--- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile
@@ -1,4 +1,5 @@
 obj-$(CONFIG_DMA_ENGINE) += dmaengine.o
 obj-$(CONFIG_NET_DMA) += iovlock.o
 obj-$(CONFIG_INTEL_IOATDMA) += ioatdma.o
+ioatdma-objs := ioat_dma.o
 obj-$(CONFIG_INTEL_IOP_ADMA) += iop-adma.o
diff --git a/drivers/dma/ioat_dma.c b/drivers/dma/ioat_dma.c
new file mode 100644
index 000..52e2ac2
--- /dev/null
+++ b/drivers/dma/ioat_dma.c
@@ -0,0 +1,829 @@
+/*
+ * Copyright(c) 2004 - 2006 Intel Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * The full GNU General Public License is included in this distribution in the
+ * file called COPYING.
+ */
+
+/*
+ * This driver supports an Intel I/OAT DMA engine, which does asynchronous
+ * copy operations.
+ */
+
+#include linux/init.h
+#include linux/module.h
+#include linux/pci.h
+#include linux/interrupt.h
+#include linux/dmaengine.h
+#include linux/delay.h
+#include linux/dma-mapping.h
+#include ioatdma.h
+#include ioatdma_registers.h
+#include ioatdma_hw.h
+
+#define to_ioat_chan(chan) container_of(chan, struct ioat_dma_chan, common)
+#define to_ioat_device(dev) container_of(dev, struct ioat_device, common)
+#define to_ioat_desc(lh) container_of(lh, struct ioat_desc_sw, node)
+#define tx_to_ioat_desc(tx) container_of(tx, struct ioat_desc_sw, async_tx)
+
+/* internal functions */
+static int __devinit ioat_probe(struct pci_dev *pdev, const struct 
pci_device_id *ent);
+static void ioat_shutdown(struct pci_dev *pdev);
+static void __devexit ioat_remove(struct pci_dev *pdev);
+
+static int enumerate_dma_channels(struct ioat_device *device)
+{
+   u8 xfercap_scale;
+   u32 xfercap;
+   int i;
+   struct ioat_dma_chan *ioat_chan;
+
+   device-common.chancnt = readb(device-reg_base + IOAT_CHANCNT_OFFSET);
+   xfercap_scale = readb(device-reg_base + IOAT_XFERCAP_OFFSET);
+   xfercap = (xfercap_scale == 0 ? -1 : (1UL  xfercap_scale));
+
+   for (i = 0; i  device-common.chancnt; i++) {
+   ioat_chan = kzalloc(sizeof(*ioat_chan), GFP_KERNEL);
+   if (!ioat_chan) {
+   device-common.chancnt = i;
+   break;
+   }
+
+   ioat_chan-device = device;
+   ioat_chan-reg_base = device-reg_base + (0x80 * (i + 1));
+   ioat_chan-xfercap = xfercap;
+   spin_lock_init(ioat_chan-cleanup_lock);
+   spin_lock_init(ioat_chan-desc_lock);
+   INIT_LIST_HEAD(ioat_chan-free_desc);
+   INIT_LIST_HEAD(ioat_chan-used_desc);
+   /* This should be made common somewhere in dmaengine.c */
+   ioat_chan-common.device = device-common;
+   list_add_tail(ioat_chan-common.device_node,
+ device-common.channels);
+   }
+   return device-common.chancnt;
+}
+
+static void
+ioat_set_src(dma_addr_t addr, struct dma_async_tx_descriptor *tx, int index)
+{
+   struct ioat_desc_sw *iter, *desc = tx_to_ioat_desc(tx);
+   struct ioat_dma_chan *ioat_chan = to_ioat_chan(tx-chan);
+
+   pci_unmap_addr_set(desc, src, addr);
+
+   list_for_each_entry(iter, desc-async_tx.tx_list, node) {
+   iter-hw-src_addr = addr;
+   addr += ioat_chan-xfercap;
+   }
+
+}
+
+static void
+ioat_set_dest(dma_addr_t addr, struct dma_async_tx_descriptor *tx, int index)
+{
+   struct ioat_desc_sw *iter, *desc = tx_to_ioat_desc(tx);
+   struct ioat_dma_chan *ioat_chan = to_ioat_chan(tx-chan);
+
+   pci_unmap_addr_set(desc, dst, addr);
+
+   list_for_each_entry(iter, desc-async_tx.tx_list, node) {
+   iter-hw-dst_addr = addr;
+   addr += ioat_chan-xfercap;
+   }
+}
+
+static dma_cookie_t
+ioat_tx_submit(struct 

Re: [PATCH 2/7] I/OAT: Rename the source file

2007-07-19 Thread David Miller
From: Shannon Nelson [EMAIL PROTECTED]
Date: Thu, 19 Jul 2007 17:44:57 -0700

 Rename the ioatdma.c file in preparation for splitting into multiple files,
 which will allow for easier adding new functionality.
 
 Signed-off-by: Shannon Nelson [EMAIL PROTECTED]

Acked-by: David S. Miller [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/