mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder
@ 2012-10-30 12:32 Andy Shevchenko
  2012-10-30 12:32 ` [PATCH 1/3] dmaengine: dw_dmac: add PCI part of the driver Andy Shevchenko
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Andy Shevchenko @ 2012-10-30 12:32 UTC (permalink / raw)
  To: Viresh Kumar, Vinod Koul, linux-kernel, spear-devel; +Cc: Andy Shevchenko

This is split of the dw_dmac to support different platform devices with one
core driver. It uses platform_driver model and weak link to the parent driver.
The pros and cons are still under discussion here:
http://www.spinics.net/lists/kernel/msg1408495.html

Andy Shevchenko (2):
  dma: move dw_dmac driver to an own directory
  MAINTAINERS: add recently created files to dw_dmac section

Heikki Krogerus (1):
  dmaengine: dw_dmac: add PCI part of the driver

 MAINTAINERS                         |    3 +-
 drivers/dma/Kconfig                 |    9 +++
 drivers/dma/Makefile                |    2 +-
 drivers/dma/dw/Makefile             |    2 +
 drivers/dma/{ => dw}/dw_dmac.c      |    2 +-
 drivers/dma/dw/dw_dmac_pci.c        |  133 +++++++++++++++++++++++++++++++++++
 drivers/dma/{ => dw}/dw_dmac_regs.h |    0
 7 files changed, 147 insertions(+), 4 deletions(-)
 create mode 100644 drivers/dma/dw/Makefile
 rename drivers/dma/{ => dw}/dw_dmac.c (99%)
 create mode 100644 drivers/dma/dw/dw_dmac_pci.c
 rename drivers/dma/{ => dw}/dw_dmac_regs.h (100%)

-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] dmaengine: dw_dmac: add PCI part of the driver
  2012-10-30 12:32 [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder Andy Shevchenko
@ 2012-10-30 12:32 ` Andy Shevchenko
  2012-10-30 12:32 ` [PATCH 2/3] dma: move dw_dmac driver to an own directory Andy Shevchenko
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2012-10-30 12:32 UTC (permalink / raw)
  To: Viresh Kumar, Vinod Koul, linux-kernel, spear-devel
  Cc: Heikki Krogerus, Andy Shevchenko

From: Heikki Krogerus <heikki.krogerus@linux.intel.com>

This is the PCI part of the DesignWare DMAC driver. The controller is usually
used in the Intel hardware such as Medfield.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/dma/Kconfig       |    9 +++
 drivers/dma/Makefile      |    1 +
 drivers/dma/dw_dmac_pci.c |  133 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 143 insertions(+)
 create mode 100644 drivers/dma/dw_dmac_pci.c

diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 6761cc8..ae706ca 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -100,6 +100,15 @@ config DW_DMAC_BIG_ENDIAN_IO
 
 	  If unsure, use the default setting.
 
+config DW_DMAC_PCI
+	tristate "Synopsys DesignWare AHB DMA support (PCI bus)"
+	depends on PCI
+	select DW_DMAC
+	help
+	  Support the Synopsys DesignWare AHB DMA controller on the platfroms
+	  that provide it as a PCI device. For example, Intel Medfield has
+	  integrated this GPDMA controller.
+
 config AT_HDMAC
 	tristate "Atmel AHB DMA support"
 	depends on ARCH_AT91
diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
index 7428fea..15eef5f 100644
--- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_FSL_DMA) += fsldma.o
 obj-$(CONFIG_MPC512X_DMA) += mpc512x_dma.o
 obj-$(CONFIG_MV_XOR) += mv_xor.o
 obj-$(CONFIG_DW_DMAC) += dw_dmac.o
+obj-$(CONFIG_DW_DMAC_PCI) += dw_dmac_pci.o
 obj-$(CONFIG_AT_HDMAC) += at_hdmac.o
 obj-$(CONFIG_MX3_IPU) += ipu/
 obj-$(CONFIG_TXX9_DMAC) += txx9dmac.o
diff --git a/drivers/dma/dw_dmac_pci.c b/drivers/dma/dw_dmac_pci.c
new file mode 100644
index 0000000..043a963
--- /dev/null
+++ b/drivers/dma/dw_dmac_pci.c
@@ -0,0 +1,133 @@
+/*
+ * PCI driver for the Synopsys DesignWare DMA Controller
+ *
+ * Copyright (C) 2012 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/idr.h>
+#include <linux/pci.h>
+#include <linux/platform_device.h>
+#include <linux/dw_dmac.h>
+
+static struct dw_dma_platform_data dw_pci_pdata = {
+	.is_private = 1,
+	.chan_allocation_order = CHAN_ALLOCATION_ASCENDING,
+	.chan_priority = CHAN_PRIORITY_ASCENDING,
+};
+
+static DEFINE_IDA(dw_pci_ida);
+
+static int __devinit dw_pci_probe(struct pci_dev *pdev,
+				  const struct pci_device_id *pid)
+{
+	struct platform_device *pd;
+	struct resource r[2];
+	struct dw_dma_platform_data *driver = (void *)pid->driver_data;
+	int id, ret;
+
+	id = ida_simple_get(&dw_pci_ida, 0, 0, GFP_KERNEL);
+	if (id < 0)
+		return id;
+
+	ret = pci_enable_device(pdev);
+	if (ret)
+		goto put_id;
+
+	pci_set_power_state(pdev, PCI_D0);
+	pci_set_master(pdev);
+	pci_try_set_mwi(pdev);
+
+	ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
+	if (ret)
+		goto err0;
+
+	ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
+	if (ret)
+		goto err0;
+
+	pd = platform_device_alloc("dw_dmac", id);
+	if (!pd) {
+		dev_err(&pdev->dev, "can't allocate dw_dmac platform device\n");
+		ret = -ENOMEM;
+		goto err0;
+	}
+
+	memset(r, 0, sizeof(r));
+
+	r[0].start = pci_resource_start(pdev, 0);
+	r[0].end = pci_resource_end(pdev, 0);
+	r[0].flags = IORESOURCE_MEM;
+
+	r[1].start = pdev->irq;
+	r[1].flags = IORESOURCE_IRQ;
+
+	ret = platform_device_add_resources(pd, r, ARRAY_SIZE(r));
+	if (ret) {
+		dev_err(&pdev->dev, "can't add resources to platform device\n");
+		goto err1;
+	}
+
+	ret = platform_device_add_data(pd, driver, sizeof(*driver));
+	if (ret)
+		goto err1;
+
+	dma_set_coherent_mask(&pd->dev, pdev->dev.coherent_dma_mask);
+	pd->dev.dma_mask = pdev->dev.dma_mask;
+	pd->dev.dma_parms = pdev->dev.dma_parms;
+	pd->dev.parent = &pdev->dev;
+
+	pci_set_drvdata(pdev, pd);
+
+	ret = platform_device_add(pd);
+	if (ret) {
+		dev_err(&pdev->dev, "platform_device_add failed\n");
+		goto err1;
+	}
+
+	return 0;
+
+err1:
+	platform_device_put(pd);
+err0:
+	pci_disable_device(pdev);
+put_id:
+	ida_simple_remove(&dw_pci_ida, id);
+	return ret;
+}
+
+static void __devexit dw_pci_remove(struct pci_dev *pdev)
+{
+	struct platform_device *pd = pci_get_drvdata(pdev);
+
+	platform_device_unregister(pd);
+	ida_simple_remove(&dw_pci_ida, pd->id);
+	pci_set_drvdata(pdev, NULL);
+	pci_disable_device(pdev);
+}
+
+static DEFINE_PCI_DEVICE_TABLE(dw_pci_id_table) = {
+	{ PCI_VDEVICE(INTEL, 0x0827), (kernel_ulong_t)&dw_pci_pdata },
+	{ PCI_VDEVICE(INTEL, 0x0830), (kernel_ulong_t)&dw_pci_pdata },
+	{ PCI_VDEVICE(INTEL, 0x0f06), (kernel_ulong_t)&dw_pci_pdata },
+	{ 0, }
+};
+MODULE_DEVICE_TABLE(pci, dw_pci_id_table);
+
+static struct pci_driver dw_pci_driver = {
+	.name		= "dw_dmac_pci",
+	.id_table	= dw_pci_id_table,
+	.probe		= dw_pci_probe,
+	.remove		= __devexit_p(dw_pci_remove),
+};
+
+module_pci_driver(dw_pci_driver);
+
+MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("DesignWare DMAC PCI driver");
+MODULE_AUTHOR("Heikki Krogerus <heikki.krogerus@linux.intel.com>");
+MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>");
-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 2/3] dma: move dw_dmac driver to an own directory
  2012-10-30 12:32 [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder Andy Shevchenko
  2012-10-30 12:32 ` [PATCH 1/3] dmaengine: dw_dmac: add PCI part of the driver Andy Shevchenko
@ 2012-10-30 12:32 ` Andy Shevchenko
  2012-10-30 12:35   ` Felipe Balbi
  2012-10-30 12:32 ` [PATCH 3/3] MAINTAINERS: add recently created files to dw_dmac section Andy Shevchenko
  2012-10-30 13:47 ` [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder viresh kumar
  3 siblings, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2012-10-30 12:32 UTC (permalink / raw)
  To: Viresh Kumar, Vinod Koul, linux-kernel, spear-devel; +Cc: Andy Shevchenko

The dw_dmac driver contains multiple files. To make a management of them more
convenient move it to an own directory.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 drivers/dma/Makefile                |    3 +--
 drivers/dma/dw/Makefile             |    2 ++
 drivers/dma/{ => dw}/dw_dmac.c      |    2 +-
 drivers/dma/{ => dw}/dw_dmac_pci.c  |    0
 drivers/dma/{ => dw}/dw_dmac_regs.h |    0
 5 files changed, 4 insertions(+), 3 deletions(-)
 create mode 100644 drivers/dma/dw/Makefile
 rename drivers/dma/{ => dw}/dw_dmac.c (99%)
 rename drivers/dma/{ => dw}/dw_dmac_pci.c (100%)
 rename drivers/dma/{ => dw}/dw_dmac_regs.h (100%)

diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
index 15eef5f..122a48a 100644
--- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile
@@ -11,8 +11,7 @@ obj-$(CONFIG_INTEL_IOP_ADMA) += iop-adma.o
 obj-$(CONFIG_FSL_DMA) += fsldma.o
 obj-$(CONFIG_MPC512X_DMA) += mpc512x_dma.o
 obj-$(CONFIG_MV_XOR) += mv_xor.o
-obj-$(CONFIG_DW_DMAC) += dw_dmac.o
-obj-$(CONFIG_DW_DMAC_PCI) += dw_dmac_pci.o
+obj-$(CONFIG_DW_DMAC) += dw/
 obj-$(CONFIG_AT_HDMAC) += at_hdmac.o
 obj-$(CONFIG_MX3_IPU) += ipu/
 obj-$(CONFIG_TXX9_DMAC) += txx9dmac.o
diff --git a/drivers/dma/dw/Makefile b/drivers/dma/dw/Makefile
new file mode 100644
index 0000000..2edfb24
--- /dev/null
+++ b/drivers/dma/dw/Makefile
@@ -0,0 +1,2 @@
+obj-$(CONFIG_DW_DMAC) += dw_dmac.o
+obj-$(CONFIG_DW_DMAC_PCI) += dw_dmac_pci.o
diff --git a/drivers/dma/dw_dmac.c b/drivers/dma/dw/dw_dmac.c
similarity index 99%
rename from drivers/dma/dw_dmac.c
rename to drivers/dma/dw/dw_dmac.c
index 2c8096d..29aa9d86 100644
--- a/drivers/dma/dw_dmac.c
+++ b/drivers/dma/dw/dw_dmac.c
@@ -23,8 +23,8 @@
 #include <linux/platform_device.h>
 #include <linux/slab.h>
 
+#include "../dmaengine.h"
 #include "dw_dmac_regs.h"
-#include "dmaengine.h"
 
 /*
  * This supports the Synopsys "DesignWare AHB Central DMA Controller",
diff --git a/drivers/dma/dw_dmac_pci.c b/drivers/dma/dw/dw_dmac_pci.c
similarity index 100%
rename from drivers/dma/dw_dmac_pci.c
rename to drivers/dma/dw/dw_dmac_pci.c
diff --git a/drivers/dma/dw_dmac_regs.h b/drivers/dma/dw/dw_dmac_regs.h
similarity index 100%
rename from drivers/dma/dw_dmac_regs.h
rename to drivers/dma/dw/dw_dmac_regs.h
-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 3/3] MAINTAINERS: add recently created files to dw_dmac section
  2012-10-30 12:32 [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder Andy Shevchenko
  2012-10-30 12:32 ` [PATCH 1/3] dmaengine: dw_dmac: add PCI part of the driver Andy Shevchenko
  2012-10-30 12:32 ` [PATCH 2/3] dma: move dw_dmac driver to an own directory Andy Shevchenko
@ 2012-10-30 12:32 ` Andy Shevchenko
  2012-10-30 13:38   ` viresh kumar
  2012-10-30 13:47 ` [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder viresh kumar
  3 siblings, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2012-10-30 12:32 UTC (permalink / raw)
  To: Viresh Kumar, Vinod Koul, linux-kernel, spear-devel; +Cc: Andy Shevchenko

The DesignWare DMAC driver is moved to an own directory. The patch updates
MAINTAINERS file accordingly.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 MAINTAINERS |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index a2a3434..edf99d0 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6293,8 +6293,7 @@ SYNOPSYS DESIGNWARE DMAC DRIVER
 M:	Viresh Kumar <viresh.linux@gmail.com>
 S:	Maintained
 F:	include/linux/dw_dmac.h
-F:	drivers/dma/dw_dmac_regs.h
-F:	drivers/dma/dw_dmac.c
+F:	drivers/dma/dw/
 
 TIMEKEEPING, NTP
 M:	John Stultz <johnstul@us.ibm.com>
-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/3] dma: move dw_dmac driver to an own directory
  2012-10-30 12:32 ` [PATCH 2/3] dma: move dw_dmac driver to an own directory Andy Shevchenko
@ 2012-10-30 12:35   ` Felipe Balbi
  0 siblings, 0 replies; 7+ messages in thread
From: Felipe Balbi @ 2012-10-30 12:35 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: Viresh Kumar, Vinod Koul, linux-kernel, spear-devel

[-- Attachment #1: Type: text/plain, Size: 1545 bytes --]

Hi,

On Tue, Oct 30, 2012 at 02:32:11PM +0200, Andy Shevchenko wrote:
> The dw_dmac driver contains multiple files. To make a management of them more
> convenient move it to an own directory.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Felipe Balbi <balbi@ti.com>
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
>  drivers/dma/Makefile                |    3 +--
>  drivers/dma/dw/Makefile             |    2 ++
>  drivers/dma/{ => dw}/dw_dmac.c      |    2 +-
>  drivers/dma/{ => dw}/dw_dmac_pci.c  |    0
>  drivers/dma/{ => dw}/dw_dmac_regs.h |    0
>  5 files changed, 4 insertions(+), 3 deletions(-)
>  create mode 100644 drivers/dma/dw/Makefile
>  rename drivers/dma/{ => dw}/dw_dmac.c (99%)
>  rename drivers/dma/{ => dw}/dw_dmac_pci.c (100%)
>  rename drivers/dma/{ => dw}/dw_dmac_regs.h (100%)
> 
> diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
> index 15eef5f..122a48a 100644
> --- a/drivers/dma/Makefile
> +++ b/drivers/dma/Makefile
> @@ -11,8 +11,7 @@ obj-$(CONFIG_INTEL_IOP_ADMA) += iop-adma.o
>  obj-$(CONFIG_FSL_DMA) += fsldma.o
>  obj-$(CONFIG_MPC512X_DMA) += mpc512x_dma.o
>  obj-$(CONFIG_MV_XOR) += mv_xor.o
> -obj-$(CONFIG_DW_DMAC) += dw_dmac.o
> -obj-$(CONFIG_DW_DMAC_PCI) += dw_dmac_pci.o
> +obj-$(CONFIG_DW_DMAC) += dw/

this is wrong, I guess. If you want dw_dmac_pci.o to be statically
built-in, but dw_dmac.o to be a dynamic module, according to this
Makefile entry, dw_dmac_pci.o will be linked to vmlinux.

-- 
balbi

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] MAINTAINERS: add recently created files to dw_dmac section
  2012-10-30 12:32 ` [PATCH 3/3] MAINTAINERS: add recently created files to dw_dmac section Andy Shevchenko
@ 2012-10-30 13:38   ` viresh kumar
  0 siblings, 0 replies; 7+ messages in thread
From: viresh kumar @ 2012-10-30 13:38 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: Vinod Koul, linux-kernel, spear-devel

On Tue, Oct 30, 2012 at 6:02 PM, Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
> The DesignWare DMAC driver is moved to an own directory. The patch updates
> MAINTAINERS file accordingly.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  MAINTAINERS |    3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

I don't agree with the order of patches. Why create *pci.c file first
and then move it
to some other folder.

I would have done following:
PATCH 1/2: Merge of your 2/3 and 3/3
PATCH 2/2: Your 1/3

--
viresh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder
  2012-10-30 12:32 [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder Andy Shevchenko
                   ` (2 preceding siblings ...)
  2012-10-30 12:32 ` [PATCH 3/3] MAINTAINERS: add recently created files to dw_dmac section Andy Shevchenko
@ 2012-10-30 13:47 ` viresh kumar
  3 siblings, 0 replies; 7+ messages in thread
From: viresh kumar @ 2012-10-30 13:47 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: Vinod Koul, linux-kernel, spear-devel

On Tue, Oct 30, 2012 at 6:02 PM, Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
> This is split of the dw_dmac to support different platform devices with one
> core driver. It uses platform_driver model and weak link to the parent driver.
> The pros and cons are still under discussion here:
> http://www.spinics.net/lists/kernel/msg1408495.html

This was the last discussion on earlier thread.

http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg327998.html

This is highly discouraged in kernel mailing lists. You must have closed
the earlier thread before pushing these patches again for review. This is
waste of time for people who are involved in review.

Please close the earlier thread first. I really hoped you agreed to my and
Vinod's view there. :)

--
viresh

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-10-30 14:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-30 12:32 [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder Andy Shevchenko
2012-10-30 12:32 ` [PATCH 1/3] dmaengine: dw_dmac: add PCI part of the driver Andy Shevchenko
2012-10-30 12:32 ` [PATCH 2/3] dma: move dw_dmac driver to an own directory Andy Shevchenko
2012-10-30 12:35   ` Felipe Balbi
2012-10-30 12:32 ` [PATCH 3/3] MAINTAINERS: add recently created files to dw_dmac section Andy Shevchenko
2012-10-30 13:38   ` viresh kumar
2012-10-30 13:47 ` [PATCH 0/3] dw_dmac: add PCI driver and move dw stuff to its own folder viresh kumar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome