linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/9] Assorted PXA3xx DT patches
@ 2012-07-28 10:07 Daniel Mack
  2012-07-28 10:07 ` [PATCH v3 1/9] RTC: add DT bindings to pxa-rtc Daniel Mack
                   ` (9 more replies)
  0 siblings, 10 replies; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

This is a series of 9 patches that add basic support for booting PXA3xx
boards from devicetrees. I'm able to mount a rootfs and use all
irq/gpio based functions as well as the NAND, USB and RTC drivers.

Changes from v2:
 - more "mrvl" -> "marvell" renaming fixes
 - avoid PXA_IRQ() in new code in arch/arm/mach-pxa/irq.c
 - add the two GPIO patches that have been acked-by Arnd already

Changes from v1:
 - renaming of "mrvl" to "marvell"
 - better documentation

Daniel Mack (9):
  RTC: add DT bindings to pxa-rtc
  MMC: pxa-mci: add DT bindings
  MTD: pxa3xx-nand: add devicetree bindings
  GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip()
  GPIO: gpio-pxa: fix devicetree functions
  ARM: pxa: add devicetree code for irq handling
  ARM: pxa3xx: skip default device initialization when booting via DT
  ARM: pxa3xx: add generic DT machine code
  ARM: pxa: add .dtsi files

 Documentation/devicetree/bindings/mmc/pxa-mmc.txt  |  25 ++++
 .../devicetree/bindings/mtd/pxa3xx-nand.txt        |  31 +++++
 Documentation/devicetree/bindings/rtc/pxa-rtc.txt  |  14 +++
 arch/arm/boot/dts/pxa2xx.dtsi                      | 132 +++++++++++++++++++++
 arch/arm/boot/dts/pxa3xx.dtsi                      |  27 +++++
 arch/arm/mach-pxa/Kconfig                          |  12 ++
 arch/arm/mach-pxa/Makefile                         |   3 +
 arch/arm/mach-pxa/irq.c                            |  74 ++++++++++++
 arch/arm/mach-pxa/pxa-dt.c                         |  63 ++++++++++
 arch/arm/mach-pxa/pxa3xx.c                         |  21 +++-
 drivers/gpio/gpio-pxa.c                            |  96 +++++++--------
 drivers/mmc/host/pxamci.c                          |  52 ++++++++
 drivers/mtd/nand/pxa3xx_nand.c                     |  85 ++++++++++---
 drivers/rtc/rtc-pxa.c                              |  11 ++
 14 files changed, 575 insertions(+), 71 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mmc/pxa-mmc.txt
 create mode 100644 Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt
 create mode 100644 Documentation/devicetree/bindings/rtc/pxa-rtc.txt
 create mode 100644 arch/arm/boot/dts/pxa2xx.dtsi
 create mode 100644 arch/arm/boot/dts/pxa3xx.dtsi
 create mode 100644 arch/arm/mach-pxa/pxa-dt.c

-- 
1.7.11.2

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

* [PATCH v3 1/9] RTC: add DT bindings to pxa-rtc
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
@ 2012-07-28 10:07 ` Daniel Mack
  2012-07-28 10:07 ` [PATCH v3 2/9] MMC: pxa-mci: add DT bindings Daniel Mack
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

This patch adds generic device tree bindings to the PXA RTC driver.
Documentation for bindings were also added.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Cc: Robert Jarzmik <robert.jarzmik@free.fr>
Cc: Alessandro Zummo <a.zummo@towertech.it>
---
 Documentation/devicetree/bindings/rtc/pxa-rtc.txt | 14 ++++++++++++++
 drivers/rtc/rtc-pxa.c                             | 11 +++++++++++
 2 files changed, 25 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/rtc/pxa-rtc.txt

diff --git a/Documentation/devicetree/bindings/rtc/pxa-rtc.txt b/Documentation/devicetree/bindings/rtc/pxa-rtc.txt
new file mode 100644
index 0000000..8c6672a
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/pxa-rtc.txt
@@ -0,0 +1,14 @@
+* PXA RTC
+
+PXA specific RTC driver.
+
+Required properties:
+- compatible : Should be "marvell,pxa-rtc"
+
+Examples:
+
+rtc at 40900000 {
+	compatible = "marvell,pxa-rtc";
+	reg = <0x40900000 0x3c>;
+	interrupts = <30 31>;
+};
diff --git a/drivers/rtc/rtc-pxa.c b/drivers/rtc/rtc-pxa.c
index 0075c8f..f771b2e 100644
--- a/drivers/rtc/rtc-pxa.c
+++ b/drivers/rtc/rtc-pxa.c
@@ -27,6 +27,8 @@
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/slab.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
 
 #include <mach/hardware.h>
 
@@ -396,6 +398,14 @@ static int __exit pxa_rtc_remove(struct platform_device *pdev)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static struct of_device_id pxa_rtc_dt_ids[] = {
+	{ .compatible = "marvell,pxa-rtc" },
+	{}
+};
+MODULE_DEVICE_TABLE(of, pxa_rtc_dt_ids);
+#endif
+
 #ifdef CONFIG_PM
 static int pxa_rtc_suspend(struct device *dev)
 {
@@ -425,6 +435,7 @@ static struct platform_driver pxa_rtc_driver = {
 	.remove		= __exit_p(pxa_rtc_remove),
 	.driver		= {
 		.name	= "pxa-rtc",
+		.of_match_table = of_match_ptr(pxa_rtc_dt_ids),
 #ifdef CONFIG_PM
 		.pm	= &pxa_rtc_pm_ops,
 #endif
-- 
1.7.11.2

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

* [PATCH v3 2/9] MMC: pxa-mci: add DT bindings
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
  2012-07-28 10:07 ` [PATCH v3 1/9] RTC: add DT bindings to pxa-rtc Daniel Mack
@ 2012-07-28 10:07 ` Daniel Mack
  2012-08-03 23:52   ` Chris Ball
  2012-07-28 10:07 ` [PATCH v3 3/9] MTD: pxa3xx-nand: add devicetree bindings Daniel Mack
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Daniel Mack <zonque@gmail.com>
Cc: Nicolas Pitre <nico@fluxnic.net>
Cc: Chris Ball <cjb@laptop.org>
---
 Documentation/devicetree/bindings/mmc/pxa-mmc.txt | 25 +++++++++++
 drivers/mmc/host/pxamci.c                         | 52 +++++++++++++++++++++++
 2 files changed, 77 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mmc/pxa-mmc.txt

diff --git a/Documentation/devicetree/bindings/mmc/pxa-mmc.txt b/Documentation/devicetree/bindings/mmc/pxa-mmc.txt
new file mode 100644
index 0000000..b7025de
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/pxa-mmc.txt
@@ -0,0 +1,25 @@
+* PXA MMC drivers
+
+Driver bindings for the PXA MCI (MMC/SDIO) interfaces
+
+Required properties:
+- compatible: Should be "marvell,pxa-mmc".
+- vmmc-supply: A regulator for VMMC
+
+Optional properties:
+- marvell,detect-delay-ms: sets the detection delay timeout in ms.
+- marvell,gpio-power: GPIO spec for the card power enable pin
+
+This file documents differences between the core properties in mmc.txt
+and the properties used by the pxa-mmc driver.
+
+Examples:
+
+mmc0: mmc at 41100000 {
+	compatible = "marvell,pxa-mmc";
+	reg = <0x41100000 0x1000>;
+	interrupts = <23>;
+	cd-gpios = <&gpio 23 0>;
+	wp-gpios = <&gpio 24 0>;
+};
+
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
index cb2dc0e..11df800 100644
--- a/drivers/mmc/host/pxamci.c
+++ b/drivers/mmc/host/pxamci.c
@@ -30,6 +30,9 @@
 #include <linux/regulator/consumer.h>
 #include <linux/gpio.h>
 #include <linux/gfp.h>
+#include <linux/of.h>
+#include <linux/of_gpio.h>
+#include <linux/of_device.h>
 
 #include <asm/sizes.h>
 
@@ -573,6 +576,50 @@ static irqreturn_t pxamci_detect_irq(int irq, void *devid)
 	return IRQ_HANDLED;
 }
 
+#ifdef CONFIG_OF
+static const struct of_device_id pxa_mmc_dt_ids[] = {
+        { .compatible = "marvell,pxa-mmc" },
+        { }
+};
+
+MODULE_DEVICE_TABLE(of, pxa_mmc_dt_ids);
+
+static int __devinit pxamci_of_init(struct platform_device *pdev)
+{
+        struct device_node *np = pdev->dev.of_node;
+        struct pxamci_platform_data *pdata;
+        u32 tmp;
+
+        if (!np)
+                return 0;
+
+        pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
+        if (!pdata)
+                return -ENOMEM;
+
+	pdata->gpio_card_detect =
+		of_get_named_gpio(np, "cd-gpios", 0);
+	pdata->gpio_card_ro =
+		of_get_named_gpio(np, "wp-gpios", 0);
+
+	/* pxa-mmc specific */
+	pdata->gpio_power =
+		of_get_named_gpio(np, "pxa-mmc,gpio-power", 0);
+
+	if (of_property_read_u32(np, "pxa-mmc,detect-delay-ms", &tmp) == 0)
+		pdata->detect_delay_ms = tmp;
+
+        pdev->dev.platform_data = pdata;
+
+        return 0;
+}
+#else
+static int __devinit pxamci_of_init(struct platform_device *pdev)
+{
+        return 0;
+}
+#endif
+
 static int pxamci_probe(struct platform_device *pdev)
 {
 	struct mmc_host *mmc;
@@ -580,6 +627,10 @@ static int pxamci_probe(struct platform_device *pdev)
 	struct resource *r, *dmarx, *dmatx;
 	int ret, irq, gpio_cd = -1, gpio_ro = -1, gpio_power = -1;
 
+	ret = pxamci_of_init(pdev);
+	if (ret)
+		return ret;
+
 	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	irq = platform_get_irq(pdev, 0);
 	if (!r || irq < 0)
@@ -866,6 +917,7 @@ static struct platform_driver pxamci_driver = {
 	.driver		= {
 		.name	= DRIVER_NAME,
 		.owner	= THIS_MODULE,
+		.of_match_table = of_match_ptr(pxa_mmc_dt_ids),
 #ifdef CONFIG_PM
 		.pm	= &pxamci_pm_ops,
 #endif
-- 
1.7.11.2

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

* [PATCH v3 3/9] MTD: pxa3xx-nand: add devicetree bindings
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
  2012-07-28 10:07 ` [PATCH v3 1/9] RTC: add DT bindings to pxa-rtc Daniel Mack
  2012-07-28 10:07 ` [PATCH v3 2/9] MMC: pxa-mci: add DT bindings Daniel Mack
@ 2012-07-28 10:07 ` Daniel Mack
  2012-07-28 10:07 ` [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip() Daniel Mack
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

This patch contains a hack to get the DMA resources of the device when
probed from a devicetree node. This can be removed once a generic DMA
controller framework lands.

A mtd_part_parser_data is passed mtd_device_parse_register which
contains a reference to the device node, so MTD partitions can be
added as children.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Cc: David Woodhouse <dwmw2@infradead.org>
---
 .../devicetree/bindings/mtd/pxa3xx-nand.txt        | 31 ++++++++
 drivers/mtd/nand/pxa3xx_nand.c                     | 85 ++++++++++++++++++----
 2 files changed, 102 insertions(+), 14 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt

diff --git a/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt b/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt
new file mode 100644
index 0000000..f1421e2
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt
@@ -0,0 +1,31 @@
+PXA3xx NAND DT bindings
+
+Required properties:
+
+ - compatible:		Should be "marvell,pxa3xx-nand"
+ - reg: 		The register base for the controller
+ - interrupts:		The interrupt to map
+ - #address-cells:	Set to <1> if the node includes partitions
+
+Optional properties:
+
+ - marvell,nand-enable-arbiter:	Set to enable the bus arbiter
+ - marvell,nand-keep-config:	Set to keep the NAND controller config as set
+				by the bootloader
+ - num-cs:			Number of chipselect lines to usw
+
+Example:
+
+	nand0: nand at 43100000 {
+		compatible = "marvell,pxa3xx-nand";
+		reg = <0x43100000 90>;
+		interrupts = <45>;
+		#address-cells = <1>;
+
+		marvell,nand-enable-arbiter;
+		marvell,nand-keep-config;
+		num-cs = <1>;
+
+		/* partitions (optional) */
+	};
+
diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
index 252aaef..b0319d8 100644
--- a/drivers/mtd/nand/pxa3xx_nand.c
+++ b/drivers/mtd/nand/pxa3xx_nand.c
@@ -22,6 +22,8 @@
 #include <linux/io.h>
 #include <linux/irq.h>
 #include <linux/slab.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
 
 #include <mach/dma.h>
 #include <plat/pxa3xx_nand.h>
@@ -1081,21 +1083,31 @@ static int alloc_nand_resource(struct platform_device *pdev)
 	}
 	clk_enable(info->clk);
 
-	r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
-	if (r == NULL) {
-		dev_err(&pdev->dev, "no resource defined for data DMA\n");
-		ret = -ENXIO;
-		goto fail_put_clk;
-	}
-	info->drcmr_dat = r->start;
+	/*
+	 * This is a dirty hack to make this driver work from devicetree
+	 * bindings. It can be removed once we have a prober DMA controller
+	 * framework for DT.
+	 */
+	if (pdev->dev.of_node && cpu_is_pxa3xx()) {
+		info->drcmr_dat = 97;
+		info->drcmr_cmd = 99;
+	} else {
+		r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
+		if (r == NULL) {
+			dev_err(&pdev->dev, "no resource defined for data DMA\n");
+			ret = -ENXIO;
+			goto fail_put_clk;
+		}
+		info->drcmr_dat = r->start;
 
-	r = platform_get_resource(pdev, IORESOURCE_DMA, 1);
-	if (r == NULL) {
-		dev_err(&pdev->dev, "no resource defined for command DMA\n");
-		ret = -ENXIO;
-		goto fail_put_clk;
+		r = platform_get_resource(pdev, IORESOURCE_DMA, 1);
+		if (r == NULL) {
+			dev_err(&pdev->dev, "no resource defined for command DMA\n");
+			ret = -ENXIO;
+			goto fail_put_clk;
+		}
+		info->drcmr_cmd = r->start;
 	}
-	info->drcmr_cmd = r->start;
 
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
@@ -1200,12 +1212,55 @@ static int pxa3xx_nand_remove(struct platform_device *pdev)
 	return 0;
 }
 
+#ifdef CONFIG_OF
+static struct of_device_id pxa3xx_nand_dt_ids[] = {
+	{ .compatible = "marvell,pxa3xx-nand" },
+	{}
+};
+MODULE_DEVICE_TABLE(of, i2c_pxa_dt_ids);
+
+static int pxa3xx_nand_probe_dt(struct platform_device *pdev)
+{
+	struct pxa3xx_nand_platform_data *pdata;
+	struct device_node *np = pdev->dev.of_node;
+	const struct of_device_id *of_id =
+			of_match_device(pxa3xx_nand_dt_ids, &pdev->dev);
+
+	if (!of_id)
+		return 0;
+
+	pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
+	if (!pdata)
+		return -ENOMEM;
+
+	if (of_get_property(np, "marvell,nand-enable-arbiter", NULL))
+		pdata->enable_arbiter = 1;
+	if (of_get_property(np, "marvell,nand-keep-config", NULL))
+		pdata->keep_config = 1;
+	of_property_read_u32(np, "num-cs", &pdata->num_cs);
+
+	pdev->dev.platform_data = pdata;
+
+	return 0;
+}
+#else
+static inline int pxa3xx_nand_probe_dt(struct platform_device *)
+{
+	return 0;
+}
+#endif
+
 static int pxa3xx_nand_probe(struct platform_device *pdev)
 {
 	struct pxa3xx_nand_platform_data *pdata;
+	struct mtd_part_parser_data ppdata = {};
 	struct pxa3xx_nand_info *info;
 	int ret, cs, probe_success;
 
+	ret = pxa3xx_nand_probe_dt(pdev);
+	if (ret)
+		return ret;
+
 	pdata = pdev->dev.platform_data;
 	if (!pdata) {
 		dev_err(&pdev->dev, "no platform data defined\n");
@@ -1229,8 +1284,9 @@ static int pxa3xx_nand_probe(struct platform_device *pdev)
 			continue;
 		}
 
+		ppdata.of_node = pdev->dev.of_node;
 		ret = mtd_device_parse_register(info->host[cs]->mtd, NULL,
-						NULL, pdata->parts[cs],
+						&ppdata, pdata->parts[cs],
 						pdata->nr_parts[cs]);
 		if (!ret)
 			probe_success = 1;
@@ -1306,6 +1362,7 @@ static int pxa3xx_nand_resume(struct platform_device *pdev)
 static struct platform_driver pxa3xx_nand_driver = {
 	.driver = {
 		.name	= "pxa3xx-nand",
+		.of_match_table = of_match_ptr(pxa3xx_nand_dt_ids),
 	},
 	.probe		= pxa3xx_nand_probe,
 	.remove		= pxa3xx_nand_remove,
-- 
1.7.11.2

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

* [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip()
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
                   ` (2 preceding siblings ...)
  2012-07-28 10:07 ` [PATCH v3 3/9] MTD: pxa3xx-nand: add devicetree bindings Daniel Mack
@ 2012-07-28 10:07 ` Daniel Mack
  2012-08-05  0:12   ` Linus Walleij
  2012-07-28 10:07 ` [PATCH v3 5/9] GPIO: gpio-pxa: fix devicetree functions Daniel Mack
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

Simplify the code in gpio-pxa.c and make them based on irq_base.
When not probed from devicetree, initialize irq_base from
PXA_GPIO_TO_IRQ() or MMP_GPIO_TO_IRQ(), respectively, so the non-DT case
still works.

Only tested on PXA3xx.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/gpio/gpio-pxa.c | 70 +++++++++++--------------------------------------
 1 file changed, 16 insertions(+), 54 deletions(-)

diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index 58a6a63..6d0cb9d 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -59,6 +59,7 @@
 #define BANK_OFF(n)	(((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2))
 
 int pxa_last_gpio;
+static int irq_base;
 
 #ifdef CONFIG_OF
 static struct irq_domain *domain;
@@ -166,63 +167,14 @@ static inline int __gpio_is_occupied(unsigned gpio)
 	return ret;
 }
 
-#ifdef CONFIG_ARCH_PXA
-static inline int __pxa_gpio_to_irq(int gpio)
-{
-	if (gpio_is_pxa_type(gpio_type))
-		return PXA_GPIO_TO_IRQ(gpio);
-	return -1;
-}
-
-static inline int __pxa_irq_to_gpio(int irq)
-{
-	if (gpio_is_pxa_type(gpio_type))
-		return irq - PXA_GPIO_TO_IRQ(0);
-	return -1;
-}
-#else
-static inline int __pxa_gpio_to_irq(int gpio) { return -1; }
-static inline int __pxa_irq_to_gpio(int irq) { return -1; }
-#endif
-
-#ifdef CONFIG_ARCH_MMP
-static inline int __mmp_gpio_to_irq(int gpio)
-{
-	if (gpio_is_mmp_type(gpio_type))
-		return MMP_GPIO_TO_IRQ(gpio);
-	return -1;
-}
-
-static inline int __mmp_irq_to_gpio(int irq)
-{
-	if (gpio_is_mmp_type(gpio_type))
-		return irq - MMP_GPIO_TO_IRQ(0);
-	return -1;
-}
-#else
-static inline int __mmp_gpio_to_irq(int gpio) { return -1; }
-static inline int __mmp_irq_to_gpio(int irq) { return -1; }
-#endif
-
 static int pxa_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
 {
-	int gpio, ret;
-
-	gpio = chip->base + offset;
-	ret = __pxa_gpio_to_irq(gpio);
-	if (ret >= 0)
-		return ret;
-	return __mmp_gpio_to_irq(gpio);
+	return chip->base + offset + irq_base;
 }
 
 int pxa_irq_to_gpio(int irq)
 {
-	int ret;
-
-	ret = __pxa_irq_to_gpio(irq);
-	if (ret >= 0)
-		return ret;
-	return __mmp_irq_to_gpio(irq);
+	return irq - irq_base;
 }
 
 static int pxa_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
@@ -510,7 +462,7 @@ const struct irq_domain_ops pxa_irq_domain_ops = {
 #ifdef CONFIG_OF
 static int __devinit pxa_gpio_probe_dt(struct platform_device *pdev)
 {
-	int ret, nr_banks, nr_gpios, irq_base;
+	int ret, nr_banks, nr_gpios;
 	struct device_node *prev, *next, *np = pdev->dev.of_node;
 	const struct of_device_id *of_id =
 				of_match_device(pxa_gpio_dt_ids, &pdev->dev);
@@ -564,10 +516,20 @@ static int __devinit pxa_gpio_probe(struct platform_device *pdev)
 	int irq0 = 0, irq1 = 0, irq_mux, gpio_offset = 0;
 
 	ret = pxa_gpio_probe_dt(pdev);
-	if (ret < 0)
+	if (ret < 0) {
 		pxa_last_gpio = pxa_gpio_nums();
-	else
+#ifdef CONFIG_ARCH_PXA
+		if (gpio_is_pxa_type(gpio_type))
+			irq_base = PXA_GPIO_TO_IRQ(0);
+#endif
+#ifdef CONFIG_ARCH_MMP
+		if (gpio_is_mmp_type(gpio_type))
+			irq_base = MMP_GPIO_TO_IRQ(0);
+#endif
+	} else {
 		use_of = 1;
+	}
+
 	if (!pxa_last_gpio)
 		return -EINVAL;
 
-- 
1.7.11.2

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

* [PATCH v3 5/9] GPIO: gpio-pxa: fix devicetree functions
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
                   ` (3 preceding siblings ...)
  2012-07-28 10:07 ` [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip() Daniel Mack
@ 2012-07-28 10:07 ` Daniel Mack
  2012-08-04 23:40   ` Linus Walleij
  2012-07-28 10:07 ` [PATCH v3 6/9] ARM: pxa: add devicetree code for irq handling Daniel Mack
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

Provide an of_xlate function for the PXA GPIO chips and make it work for
devicetree environments.

Successfully tested on a PXA3xx board.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/gpio/gpio-pxa.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index 6d0cb9d..f47e6b3 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -63,6 +63,7 @@ static int irq_base;
 
 #ifdef CONFIG_OF
 static struct irq_domain *domain;
+static struct device_node *pxa_gpio_of_node;
 #endif
 
 struct pxa_gpio_chip {
@@ -229,6 +230,24 @@ static void pxa_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
 				(value ? GPSR_OFFSET : GPCR_OFFSET));
 }
 
+#ifdef CONFIG_OF_GPIO
+static int pxa_gpio_of_xlate(struct gpio_chip *gc,
+			     const struct of_phandle_args *gpiospec,
+			     u32 *flags)
+{
+	if (gpiospec->args[0] > pxa_last_gpio)
+		return -EINVAL;
+
+	if (gc != &pxa_gpio_chips[gpiospec->args[0] / 32].chip)
+		return -EINVAL;
+
+	if (flags)
+		*flags = gpiospec->args[1];
+
+	return gpiospec->args[0] % 32;
+}
+#endif
+
 static int __devinit pxa_init_gpio_chip(int gpio_end,
 					int (*set_wake)(unsigned int, unsigned int))
 {
@@ -256,6 +275,11 @@ static int __devinit pxa_init_gpio_chip(int gpio_end,
 		c->get = pxa_gpio_get;
 		c->set = pxa_gpio_set;
 		c->to_irq = pxa_gpio_to_irq;
+#ifdef CONFIG_OF_GPIO
+		c->of_node = pxa_gpio_of_node;
+		c->of_xlate = pxa_gpio_of_xlate;
+		c->of_gpio_n_cells = 2;
+#endif
 
 		/* number of GPIOs on last bank may be less than 32 */
 		c->ngpio = (gpio + 31 > gpio_end) ? (gpio_end - gpio + 1) : 32;
@@ -457,6 +481,7 @@ static int pxa_irq_domain_map(struct irq_domain *d, unsigned int irq,
 
 const struct irq_domain_ops pxa_irq_domain_ops = {
 	.map	= pxa_irq_domain_map,
+	.xlate	= irq_domain_xlate_twocell,
 };
 
 #ifdef CONFIG_OF
@@ -497,6 +522,7 @@ static int __devinit pxa_gpio_probe_dt(struct platform_device *pdev)
 	}
 	domain = irq_domain_add_legacy(np, nr_gpios, irq_base, 0,
 				       &pxa_irq_domain_ops, NULL);
+	pxa_gpio_of_node = np;
 	return 0;
 err:
 	iounmap(gpio_reg_base);
-- 
1.7.11.2

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

* [PATCH v3 6/9] ARM: pxa: add devicetree code for irq handling
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
                   ` (4 preceding siblings ...)
  2012-07-28 10:07 ` [PATCH v3 5/9] GPIO: gpio-pxa: fix devicetree functions Daniel Mack
@ 2012-07-28 10:07 ` Daniel Mack
  2012-07-28 10:07 ` [PATCH v3 7/9] ARM: pxa3xx: skip default device initialization when booting via DT Daniel Mack
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

Properly register on-chip interrupt using the irqdomain logic. The
number of interrupts is taken from the devicetree node.

Signed-off-by: Daniel Mack <zonque@gmail.com>
---
 arch/arm/mach-pxa/irq.c    | 74 ++++++++++++++++++++++++++++++++++++++++++++++
 arch/arm/mach-pxa/pxa3xx.c | 17 +++++++++--
 2 files changed, 89 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
index 5dae15e..4871908 100644
--- a/arch/arm/mach-pxa/irq.c
+++ b/arch/arm/mach-pxa/irq.c
@@ -17,6 +17,8 @@
 #include <linux/syscore_ops.h>
 #include <linux/io.h>
 #include <linux/irq.h>
+#include <linux/of_address.h>
+#include <linux/of_irq.h>
 
 #include <asm/exception.h>
 
@@ -49,6 +51,7 @@
  */
 
 static int pxa_internal_irq_nr;
+static int pxa_irq_base;
 
 static inline int cpu_has_ipr(void)
 {
@@ -202,3 +205,74 @@ struct syscore_ops pxa_irq_syscore_ops = {
 	.suspend	= pxa_irq_suspend,
 	.resume		= pxa_irq_resume,
 };
+
+#ifdef CONFIG_OF
+static struct irq_domain *pxa_irq_domain;
+
+static int pxa_irq_map(struct irq_domain *h, unsigned int virq,
+		       irq_hw_number_t hw)
+{
+	int i = hw % 32;
+	int irq = virq - NR_IRQS_LEGACY;
+	void __iomem *base = irq_base(hw / 32);
+
+	/* initialize interrupt priority */
+	if (cpu_has_ipr())
+		__raw_writel(i | IPR_VALID, IRQ_BASE + IPR(i));
+
+	irq_set_chip_and_handler(irq, &pxa_internal_irq_chip,
+				 handle_level_irq);
+	irq_set_chip_data(irq, base);
+	set_irq_flags(irq, IRQF_VALID);
+
+	return 0;
+}
+
+static struct irq_domain_ops pxa_irq_ops = {
+	.map    = pxa_irq_map,
+	.xlate  = irq_domain_xlate_onecell,
+};
+
+static const struct of_device_id intc_ids[] __initconst = {
+	{ .compatible = "marvell,pxa-intc", },
+	{}
+};
+
+void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int))
+{
+	struct device_node *node;
+	const struct of_device_id *of_id;
+	struct pxa_intc_conf *conf;
+	int nr_irqs, ret;
+
+	node = of_find_matching_node(NULL, intc_ids);
+	if (!node) {
+		pr_err("Failed to find interrupt controller in arch-pxa\n");
+		return;
+	}
+	of_id = of_match_node(intc_ids, node);
+	conf = of_id->data;
+
+	ret = of_property_read_u32(node, "mrvl,intc-nr-irqs", &nr_irqs);
+	if (ret) {
+		pr_err("Not found mrvl,intc-nr-irqs property\n");
+		return;
+	}
+
+	pxa_irq_base = irq_alloc_descs(-1, 0, nr_irqs, 0);
+	if (pxa_irq_base < 0) {
+		pr_err("Failed to allocate IRQ numbers\n");
+		return;
+	}
+
+	pxa_irq_domain = irq_domain_add_legacy(node, nr_irqs, 0, 0,
+					       &pxa_irq_ops, NULL);
+	if (!pxa_irq_domain)
+		panic("Unable to add PXA IRQ domain\n");
+
+	irq_set_default_host(pxa_irq_domain);
+	pxa_init_irq(nr_irqs, fn);
+
+	return;
+}
+#endif /* CONFIG_OF */
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index dffb7e8..1827d3c 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -40,6 +40,8 @@
 #define PECR_IE(n)	((1 << ((n) * 2)) << 28)
 #define PECR_IS(n)	((1 << ((n) * 2)) << 29)
 
+extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int));
+
 static DEFINE_PXA3_CKEN(pxa3xx_ffuart, FFUART, 14857000, 1);
 static DEFINE_PXA3_CKEN(pxa3xx_btuart, BTUART, 14857000, 1);
 static DEFINE_PXA3_CKEN(pxa3xx_stuart, STUART, 14857000, 1);
@@ -382,7 +384,7 @@ static void __init pxa_init_ext_wakeup_irq(int (*fn)(struct irq_data *,
 	pxa_ext_wakeup_chip.irq_set_wake = fn;
 }
 
-void __init pxa3xx_init_irq(void)
+static void __init __pxa3xx_init_irq(void)
 {
 	/* enable CP6 access */
 	u32 value;
@@ -390,10 +392,21 @@ void __init pxa3xx_init_irq(void)
 	value |= (1 << 6);
 	__asm__ __volatile__("mcr p15, 0, %0, c15, c1, 0\n": :"r"(value));
 
-	pxa_init_irq(56, pxa3xx_set_wake);
 	pxa_init_ext_wakeup_irq(pxa3xx_set_wake);
 }
 
+void __init pxa3xx_init_irq(void)
+{
+	__pxa3xx_init_irq();
+	pxa_init_irq(56, pxa3xx_set_wake);
+}
+
+void __init pxa3xx_dt_init_irq(void)
+{
+	__pxa3xx_init_irq();
+	pxa_dt_irq_init(pxa3xx_set_wake);
+}
+
 static struct map_desc pxa3xx_io_desc[] __initdata = {
 	{	/* Mem Ctl */
 		.virtual	= (unsigned long)SMEMC_VIRT,
-- 
1.7.11.2

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

* [PATCH v3 7/9] ARM: pxa3xx: skip default device initialization when booting via DT
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
                   ` (5 preceding siblings ...)
  2012-07-28 10:07 ` [PATCH v3 6/9] ARM: pxa: add devicetree code for irq handling Daniel Mack
@ 2012-07-28 10:07 ` Daniel Mack
  2012-07-28 10:07 ` [PATCH v3 8/9] ARM: pxa3xx: add generic DT machine code Daniel Mack
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

When booting via DT, the default PXA devices must not have been probed
before, otherwise the augmented information from the device tree is
ignored.

Signed-off-by: Daniel Mack <zonque@gmail.com>
---
 arch/arm/mach-pxa/pxa3xx.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index 1827d3c..4a9d04a 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -19,6 +19,7 @@
 #include <linux/platform_device.h>
 #include <linux/irq.h>
 #include <linux/io.h>
+#include <linux/of.h>
 #include <linux/syscore_ops.h>
 #include <linux/i2c/pxa-i2c.h>
 
@@ -479,7 +480,8 @@ static int __init pxa3xx_init(void)
 		register_syscore_ops(&pxa3xx_mfp_syscore_ops);
 		register_syscore_ops(&pxa3xx_clock_syscore_ops);
 
-		ret = platform_add_devices(devices, ARRAY_SIZE(devices));
+		if (!of_have_populated_dt())
+			ret = platform_add_devices(devices, ARRAY_SIZE(devices));
 	}
 
 	return ret;
-- 
1.7.11.2

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

* [PATCH v3 8/9] ARM: pxa3xx: add generic DT machine code
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
                   ` (6 preceding siblings ...)
  2012-07-28 10:07 ` [PATCH v3 7/9] ARM: pxa3xx: skip default device initialization when booting via DT Daniel Mack
@ 2012-07-28 10:07 ` Daniel Mack
  2012-07-28 10:07 ` [PATCH v3 9/9] ARM: pxa: add .dtsi files Daniel Mack
  2012-07-29 13:04 ` [PATCH v3 0/9] Assorted PXA3xx DT patches Arnd Bergmann
  9 siblings, 0 replies; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

Add a DT_MACHINE_START entry for PXA3xx machines and a auxdata table for
some of the devices. This file can be extended to also support pxa2xx
and pxa9xx boards.

Signed-off-by: Daniel Mack <zonque@gmail.com>
---
 arch/arm/mach-pxa/Kconfig  | 12 +++++++++
 arch/arm/mach-pxa/Makefile |  3 +++
 arch/arm/mach-pxa/pxa-dt.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 78 insertions(+)
 create mode 100644 arch/arm/mach-pxa/pxa-dt.c

diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index fe2d1f8..8e6288d 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -25,6 +25,18 @@ config PXA_V7_MACH_AUTO
 if !ARCH_PXA_V7
 comment "Intel/Marvell Dev Platforms (sorted by hardware release time)"
 
+config MACH_PXA3XX_DT
+	bool "Support PXA3xx platforms from device tree"
+	select PXA3xx
+	select CPU_PXA300
+	select POWER_SUPPLY
+	select HAVE_PWM
+	select USE_OF
+	help
+	  Include support for Marvell PXA3xx based platforms using
+	  the device tree. Needn't select any other machine while
+	  MACH_PXA3XX_DT is enabled.
+
 config ARCH_LUBBOCK
 	bool "Intel DBPXA250 Development Platform (aka Lubbock)"
 	select PXA25x
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index be0f7df..2bedc9e 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -26,6 +26,9 @@ obj-$(CONFIG_CPU_PXA930)	+= pxa930.o
 
 # NOTE: keep the order of boards in accordance to their order in Kconfig
 
+# Device Tree support
+obj-$(CONFIG_MACH_PXA3XX_DT)	+= pxa-dt.o
+
 # Intel/Marvell Dev Platforms
 obj-$(CONFIG_ARCH_LUBBOCK)	+= lubbock.o
 obj-$(CONFIG_MACH_MAINSTONE)	+= mainstone.o
diff --git a/arch/arm/mach-pxa/pxa-dt.c b/arch/arm/mach-pxa/pxa-dt.c
new file mode 100644
index 0000000..c9192ce
--- /dev/null
+++ b/arch/arm/mach-pxa/pxa-dt.c
@@ -0,0 +1,63 @@
+/*
+ *  linux/arch/arm/mach-pxa/pxa-dt.c
+ *
+ *  Copyright (C) 2012 Daniel Mack
+ *
+ *  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
+ *  publishhed by the Free Software Foundation.
+ */
+
+#include <linux/irq.h>
+#include <linux/irqdomain.h>
+#include <linux/of_irq.h>
+#include <linux/of_platform.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/time.h>
+#include <mach/irqs.h>
+#include <mach/pxa3xx.h>
+
+#include "generic.h"
+
+#ifdef CONFIG_PXA3xx
+extern void __init pxa3xx_dt_init_irq(void);
+
+static const struct of_dev_auxdata pxa3xx_auxdata_lookup[] __initconst = {
+	OF_DEV_AUXDATA("mrvl,pxa-uart",		0x40100000, "pxa2xx-uart.0", NULL),
+	OF_DEV_AUXDATA("mrvl,pxa-uart",		0x40200000, "pxa2xx-uart.1", NULL),
+	OF_DEV_AUXDATA("mrvl,pxa-uart",		0x40700000, "pxa2xx-uart.2", NULL),
+	OF_DEV_AUXDATA("mrvl,pxa-uart",		0x41600000, "pxa2xx-uart.3", NULL),
+	OF_DEV_AUXDATA("marvell,pxa-mmc",	0x41100000, "pxa2xx-mci.0", NULL),
+	OF_DEV_AUXDATA("mrvl,pxa-gpio",		0x40e00000, "pxa-gpio", NULL),
+	OF_DEV_AUXDATA("marvell,pxa-ohci",	0x4c000000, "pxa27x-ohci", NULL),
+	OF_DEV_AUXDATA("mrvl,pxa-i2c",		0x40301680, "pxa2xx-i2c.0", NULL),
+	OF_DEV_AUXDATA("mrvl,pwri2c",		0x40f500c0, "pxa3xx-i2c.1", NULL),
+	OF_DEV_AUXDATA("marvell,pxa3xx-nand",	0x43100000, "pxa3xx-nand", NULL),
+	{}
+};
+
+static void __init pxa3xx_dt_init(void)
+{
+	of_platform_populate(NULL, of_default_bus_match_table,
+			     pxa3xx_auxdata_lookup, NULL);
+}
+
+static const char *pxa3xx_dt_board_compat[] __initdata = {
+	"marvell,pxa300",
+	"marvell,pxa310",
+	"marvell,pxa320",
+	NULL,
+};
+#endif
+
+#ifdef CONFIG_PXA3xx
+DT_MACHINE_START(PXA_DT, "Marvell PXA3xx (Device Tree Support)")
+	.map_io		= pxa3xx_map_io,
+	.init_irq	= pxa3xx_dt_init_irq,
+	.handle_irq	= pxa3xx_handle_irq,
+	.timer		= &pxa_timer,
+	.restart	= pxa_restart,
+	.init_machine	= pxa3xx_dt_init,
+	.dt_compat	= pxa3xx_dt_board_compat,
+MACHINE_END
+#endif
-- 
1.7.11.2

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

* [PATCH v3 9/9] ARM: pxa: add .dtsi files
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
                   ` (7 preceding siblings ...)
  2012-07-28 10:07 ` [PATCH v3 8/9] ARM: pxa3xx: add generic DT machine code Daniel Mack
@ 2012-07-28 10:07 ` Daniel Mack
  2012-07-28 18:42   ` Amar Nath
  2012-07-29 19:05   ` Daniel Mack
  2012-07-29 13:04 ` [PATCH v3 0/9] Assorted PXA3xx DT patches Arnd Bergmann
  9 siblings, 2 replies; 24+ messages in thread
From: Daniel Mack @ 2012-07-28 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

This adds .dtsi files to describe the PXA SoCs. pxa3xx simply augments
pxa2xx. Not all devices are listed yet, and it will need some time to
get all the drivers ported.

Signed-off-by: Daniel Mack <zonque@gmail.com>
---
 arch/arm/boot/dts/pxa2xx.dtsi | 132 ++++++++++++++++++++++++++++++++++++++++++
 arch/arm/boot/dts/pxa3xx.dtsi |  27 +++++++++
 2 files changed, 159 insertions(+)
 create mode 100644 arch/arm/boot/dts/pxa2xx.dtsi
 create mode 100644 arch/arm/boot/dts/pxa3xx.dtsi

diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
new file mode 100644
index 0000000..4fe3b91
--- /dev/null
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -0,0 +1,132 @@
+/*
+ * pxa2xx.dtsi - Device Tree Include file for Marvell PXA2xx family SoC
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ *
+ * Licensed under GPLv2 or later.
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+	model = "Marvell PXA2xx family SoC";
+	compatible = "marvell,pxa2xx";
+	interrupt-parent = <&pxairq>;
+
+	aliases {
+		serial0 = &ffuart;
+		serial1 = &btuart;
+		serial2 = &stuart;
+		serial3 = &hwuart;
+		i2c0 = &pwri2c;
+		i2c1 = &pxai2c1;
+	};
+
+	cpus {
+		cpu at 0 {
+			compatible = "arm,xscale";
+		};
+	};
+
+	pxabus {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+
+		pxairq: interrupt-controller at 40d00000 {
+			#interrupt-cells = <1>;
+			compatible = "marvell,pxa-intc";
+			interrupt-controller;
+			interrupt-parent;
+			mrvl,intc-nr-irqs = <56>;
+			reg = <0x40d00000 0xd0>;
+		};
+
+		gpio: gpio at 40e00000 {
+			compatible = "mrvl,pxa-gpio";
+			#address-cells = <0x1>;
+			#size-cells = <0x1>;
+			reg = <0x40e00000 0x10000>;
+			gpio-controller;
+			#gpio-cells = <0x2>;
+			interrupts = <10>;
+			interrupt-names = "gpio_mux";
+			interrupt-controller;
+			#interrupt-cells = <0x2>;
+			ranges;
+
+			gcb0: gpio at 40e00000 {
+				reg = <0x40e00000 0x4>;
+			};
+
+			gcb1: gpio at 40e00004 {
+				reg = <0x40e00004 0x4>;
+			};
+
+			gcb2: gpio at 40e00008 {
+				reg = <0x40e00008 0x4>;
+			};
+			gcb3: gpio at 40e0000c {
+				reg = <0x40e0000c 0x4>;
+			};
+		};
+
+		ffuart: uart at 40100000 {
+			compatible = "mrvl,pxa-uart";
+			reg = <0x40100000 0x30>;
+			interrupts = <22>;
+			status = "disabled";
+		};
+
+		btuart: uart at 40200000 {
+			compatible = "mrvl,pxa-uart";
+			reg = <0x40200000 0x30>;
+			interrupts = <21>;
+			status = "disabled";
+		};
+
+		stuart: uart at 40700000 {
+			compatible = "mrvl,pxa-uart";
+			reg = <0x40700000 0x30>;
+			interrupts = <20>;
+			status = "disabled";
+		};
+
+		hwuart: uart at 41100000 {
+			compatible = "mrvl,pxa-uart";
+			reg = <0x41100000 0x30>;
+			interrupts = <7>;
+			status = "disabled";
+		};
+
+		pxai2c1: i2c at 40301680 {
+			compatible = "mrvl,pxa-i2c";
+			reg = <0x40301680 0x30>;
+			interrupts = <18>;
+			#address-cells = <0x1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		usb0: ohci at 4c000000 {
+			compatible = "mrvl,pxa-ohci";
+			reg = <0x4c000000 0x10000>;
+			interrupts = <3>;
+			status = "disabled";
+		};
+
+		mmc0: mmc at 41100000 {
+			compatible = "mrvl,pxa-mmc";
+			reg = <0x41100000 0x1000>;
+			interrupts = <23>;
+			status = "disabled";
+		};
+
+		rtc at 40900000 {
+			compatible = "marvell,pxa-rtc";
+			reg = <0x40900000 0x3c>;
+			interrupts = <30 31>;
+		};
+	};
+};
diff --git a/arch/arm/boot/dts/pxa3xx.dtsi b/arch/arm/boot/dts/pxa3xx.dtsi
new file mode 100644
index 0000000..41e0a42
--- /dev/null
+++ b/arch/arm/boot/dts/pxa3xx.dtsi
@@ -0,0 +1,27 @@
+/* The pxa3xx skeleton simply augments the 2xx version */
+/include/ "pxa2xx.dtsi"
+
+/ {
+	model = "Marvell PXA3xx familiy SoC";
+	compatible = "marvell,pxa3xx";
+
+	pxabus {
+		pwri2c: i2c at 40f500c0 {
+			compatible = "mrvl,pwri2c";
+			reg = <0x40f500c0 0x30>;
+			interrupts = <6>;
+			#address-cells = <0x1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		nand0: nand at 43100000 {
+			compatible = "marvell,pxa3xx-nand";
+			reg = <0x43100000 90>;
+			interrupts = <45>;
+			#address-cells = <1>;
+			#size-cells = <1>;	
+			status = "disabled";
+		};
+	};
+};
-- 
1.7.11.2

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

* [PATCH v3 9/9] ARM: pxa: add .dtsi files
  2012-07-28 10:07 ` [PATCH v3 9/9] ARM: pxa: add .dtsi files Daniel Mack
@ 2012-07-28 18:42   ` Amar Nath
  2012-07-29  0:02     ` Daniel Mack
  2012-07-29 19:05   ` Daniel Mack
  1 sibling, 1 reply; 24+ messages in thread
From: Amar Nath @ 2012-07-28 18:42 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Daniel,

On Sat, Jul 28, 2012 at 3:37 PM, Daniel Mack <zonque@gmail.com> wrote:

> This adds .dtsi files to describe the PXA SoCs. pxa3xx simply augments
> pxa2xx. Not all devices are listed yet, and it will need some time to
> get all the drivers ported.
>
> Signed-off-by: Daniel Mack <zonque@gmail.com>
> ---
>  arch/arm/boot/dts/pxa2xx.dtsi | 132
> ++++++++++++++++++++++++++++++++++++++++++
>  arch/arm/boot/dts/pxa3xx.dtsi |  27 +++++++++
>  2 files changed, 159 insertions(+)
>  create mode 100644 arch/arm/boot/dts/pxa2xx.dtsi
>  create mode 100644 arch/arm/boot/dts/pxa3xx.dtsi
>
> diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
> new file mode 100644
> index 0000000..4fe3b91
> --- /dev/null
> +++ b/arch/arm/boot/dts/pxa2xx.dtsi
> @@ -0,0 +1,132 @@
> +/*
> + * pxa2xx.dtsi - Device Tree Include file for Marvell PXA2xx family SoC
> + *
> + * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
> + *
> + * Licensed under GPLv2 or later.
> + */
> +
> +/include/ "skeleton.dtsi"
> +
> +/ {
> +       model = "Marvell PXA2xx family SoC";
> +       compatible = "marvell,pxa2xx";
> +       interrupt-parent = <&pxairq>;
> +
> +       aliases {
> +               serial0 = &ffuart;
> +               serial1 = &btuart;
> +               serial2 = &stuart;
> +               serial3 = &hwuart;
> +               i2c0 = &pwri2c;
> +               i2c1 = &pxai2c1;
> +       };
> +
> +       cpus {
> +               cpu at 0 {
> +                       compatible = "arm,xscale";
> +               };
> +       };
> +
> +       pxabus {
> +               compatible = "simple-bus";
> +               #address-cells = <1>;
> +               #size-cells = <1>;
> +               ranges;
> +
> +               pxairq: interrupt-controller at 40d00000 {
> +                       #interrupt-cells = <1>;
> +                       compatible = "marvell,pxa-intc";
> +                       interrupt-controller;
> +                       interrupt-parent;
> +                       mrvl,intc-nr-irqs = <56>;
> +                       reg = <0x40d00000 0xd0>;
> +               };
> +
> +               gpio: gpio at 40e00000 {
> +                       compatible = "mrvl,pxa-gpio";
> +                       #address-cells = <0x1>;
> +                       #size-cells = <0x1>;
> +                       reg = <0x40e00000 0x10000>;
> +                       gpio-controller;
> +                       #gpio-cells = <0x2>;
> +                       interrupts = <10>;
> +                       interrupt-names = "gpio_mux";
> +                       interrupt-controller;
> +                       #interrupt-cells = <0x2>;
> +                       ranges;
> +
> +                       gcb0: gpio at 40e00000 {
> +                               reg = <0x40e00000 0x4>;
> +                       };
> +
> +                       gcb1: gpio at 40e00004 {
> +                               reg = <0x40e00004 0x4>;
> +                       };
> +
> +                       gcb2: gpio at 40e00008 {
> +                               reg = <0x40e00008 0x4>;
> +                       };
> +                       gcb3: gpio at 40e0000c {
> +                               reg = <0x40e0000c 0x4>;
> +                       };
> +               };
> +
> +               ffuart: uart at 40100000 {
> +                       compatible = "mrvl,pxa-uart";
> +                       reg = <0x40100000 0x30>;
> +                       interrupts = <22>;
> +                       status = "disabled";
> +               };
> +
> +               btuart: uart at 40200000 {
> +                       compatible = "mrvl,pxa-uart";
> +                       reg = <0x40200000 0x30>;
> +                       interrupts = <21>;
> +                       status = "disabled";
> +               };
> +
> +               stuart: uart at 40700000 {
> +                       compatible = "mrvl,pxa-uart";
> +                       reg = <0x40700000 0x30>;
> +                       interrupts = <20>;
> +                       status = "disabled";
> +               };
> +
> +               hwuart: uart at 41100000 {
> +                       compatible = "mrvl,pxa-uart";
> +                       reg = <0x41100000 0x30>;
> +                       interrupts = <7>;
> +                       status = "disabled";
> +               };
> +
> +               pxai2c1: i2c at 40301680 {
> +                       compatible = "mrvl,pxa-i2c";
> +                       reg = <0x40301680 0x30>;
> +                       interrupts = <18>;
> +                       #address-cells = <0x1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               usb0: ohci at 4c000000 {
> +                       compatible = "mrvl,pxa-ohci";
> +                       reg = <0x4c000000 0x10000>;
> +                       interrupts = <3>;
> +                       status = "disabled";
> +               };
> +
> +               mmc0: mmc at 41100000 {
> +                       compatible = "mrvl,pxa-mmc";
> +                       reg = <0x41100000 0x1000>;
> +                       interrupts = <23>;
> +                       status = "disabled";
> +               };
> +
> +               rtc at 40900000 {
> +                       compatible = "marvell,pxa-rtc";
> +                       reg = <0x40900000 0x3c>;
> +                       interrupts = <30 31>;
> +               };
> +       };
> +};
> diff --git a/arch/arm/boot/dts/pxa3xx.dtsi b/arch/arm/boot/dts/pxa3xx.dtsi
> new file mode 100644
> index 0000000..41e0a42
> --- /dev/null
> +++ b/arch/arm/boot/dts/pxa3xx.dtsi
> @@ -0,0 +1,27 @@
> +/* The pxa3xx skeleton simply augments the 2xx version */
> +/include/ "pxa2xx.dtsi"
> +
> +/ {
> +       model = "Marvell PXA3xx familiy SoC";
> +       compatible = "marvell,pxa3xx";
> +
> +       pxabus {
> +               pwri2c: i2c at 40f500c0 {
> +                       compatible = "mrvl,pwri2c";
> +                       reg = <0x40f500c0 0x30>;
> +                       interrupts = <6>;
> +                       #address-cells = <0x1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               nand0: nand at 43100000 {
> +                       compatible = "marvell,pxa3xx-nand";
> +                       reg = <0x43100000 90>;
> +                       interrupts = <45>;
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       status = "disabled";
> +               };
> +       };
> +};
> --
> 1.7.11.2
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>

I guess there are few more "mrvl" -> "marvell" renaming fixes still
pending....

Regards,
-Amar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120728/d420a6a9/attachment.html>

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

* [PATCH v3 9/9] ARM: pxa: add .dtsi files
  2012-07-28 18:42   ` Amar Nath
@ 2012-07-29  0:02     ` Daniel Mack
  0 siblings, 0 replies; 24+ messages in thread
From: Daniel Mack @ 2012-07-29  0:02 UTC (permalink / raw)
  To: linux-arm-kernel

On 28.07.2012 20:41, Amar Nath wrote:
> Hi Daniel,
> 
> On Sat, Jul 28, 2012 at 3:37 PM, Daniel Mack <zonque@gmail.com
> <mailto:zonque@gmail.com>> wrote:
> 
>     This adds .dtsi files to describe the PXA SoCs. pxa3xx simply augments
>     pxa2xx. Not all devices are listed yet, and it will need some time to
>     get all the drivers ported.
> 
>     Signed-off-by: Daniel Mack <zonque at gmail.com <mailto:zonque@gmail.com>>
>     ---
>      arch/arm/boot/dts/pxa2xx.dtsi | 132
>     ++++++++++++++++++++++++++++++++++++++++++
>      arch/arm/boot/dts/pxa3xx.dtsi |  27 +++++++++
>      2 files changed, 159 insertions(+)
>      create mode 100644 arch/arm/boot/dts/pxa2xx.dtsi
>      create mode 100644 arch/arm/boot/dts/pxa3xx.dtsi
> 
>     diff --git a/arch/arm/boot/dts/pxa2xx.dtsi
>     b/arch/arm/boot/dts/pxa2xx.dtsi
>     new file mode 100644
>     index 0000000..4fe3b91
>     --- /dev/null
>     +++ b/arch/arm/boot/dts/pxa2xx.dtsi
>     @@ -0,0 +1,132 @@
>     +/*
>     + * pxa2xx.dtsi - Device Tree Include file for Marvell PXA2xx family SoC
>     + *
>     + * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com
>     <mailto:marek.vasut@gmail.com>>
>     + *
>     + * Licensed under GPLv2 or later.
>     + */
>     +
>     +/include/ "skeleton.dtsi"
>     +
>     +/ {
>     +       model = "Marvell PXA2xx family SoC";
>     +       compatible = "marvell,pxa2xx";
>     +       interrupt-parent = <&pxairq>;
>     +
>     +       aliases {
>     +               serial0 = &ffuart;
>     +               serial1 = &btuart;
>     +               serial2 = &stuart;
>     +               serial3 = &hwuart;
>     +               i2c0 = &pwri2c;
>     +               i2c1 = &pxai2c1;
>     +       };
>     +
>     +       cpus {
>     +               cpu at 0 {
>     +                       compatible = "arm,xscale";
>     +               };
>     +       };
>     +
>     +       pxabus {
>     +               compatible = "simple-bus";
>     +               #address-cells = <1>;
>     +               #size-cells = <1>;
>     +               ranges;
>     +
>     +               pxairq: interrupt-controller at 40d00000 {
>     +                       #interrupt-cells = <1>;
>     +                       compatible = "marvell,pxa-intc";
>     +                       interrupt-controller;
>     +                       interrupt-parent;
>     +                       mrvl,intc-nr-irqs = <56>;
>     +                       reg = <0x40d00000 0xd0>;
>     +               };
>     +
>     +               gpio: gpio at 40e00000 {
>     +                       compatible = "mrvl,pxa-gpio";
>     +                       #address-cells = <0x1>;
>     +                       #size-cells = <0x1>;
>     +                       reg = <0x40e00000 0x10000>;
>     +                       gpio-controller;
>     +                       #gpio-cells = <0x2>;
>     +                       interrupts = <10>;
>     +                       interrupt-names = "gpio_mux";
>     +                       interrupt-controller;
>     +                       #interrupt-cells = <0x2>;
>     +                       ranges;
>     +
>     +                       gcb0: gpio at 40e00000 {
>     +                               reg = <0x40e00000 0x4>;
>     +                       };
>     +
>     +                       gcb1: gpio at 40e00004 {
>     +                               reg = <0x40e00004 0x4>;
>     +                       };
>     +
>     +                       gcb2: gpio at 40e00008 {
>     +                               reg = <0x40e00008 0x4>;
>     +                       };
>     +                       gcb3: gpio at 40e0000c {
>     +                               reg = <0x40e0000c 0x4>;
>     +                       };
>     +               };
>     +
>     +               ffuart: uart at 40100000 {
>     +                       compatible = "mrvl,pxa-uart";
>     +                       reg = <0x40100000 0x30>;
>     +                       interrupts = <22>;
>     +                       status = "disabled";
>     +               };
>     +
>     +               btuart: uart at 40200000 {
>     +                       compatible = "mrvl,pxa-uart";
>     +                       reg = <0x40200000 0x30>;
>     +                       interrupts = <21>;
>     +                       status = "disabled";
>     +               };
>     +
>     +               stuart: uart at 40700000 {
>     +                       compatible = "mrvl,pxa-uart";
>     +                       reg = <0x40700000 0x30>;
>     +                       interrupts = <20>;
>     +                       status = "disabled";
>     +               };
>     +
>     +               hwuart: uart at 41100000 {
>     +                       compatible = "mrvl,pxa-uart";
>     +                       reg = <0x41100000 0x30>;
>     +                       interrupts = <7>;
>     +                       status = "disabled";
>     +               };
>     +
>     +               pxai2c1: i2c at 40301680 {
>     +                       compatible = "mrvl,pxa-i2c";
>     +                       reg = <0x40301680 0x30>;
>     +                       interrupts = <18>;
>     +                       #address-cells = <0x1>;
>     +                       #size-cells = <0>;
>     +                       status = "disabled";
>     +               };
>     +
>     +               usb0: ohci at 4c000000 {
>     +                       compatible = "mrvl,pxa-ohci";
>     +                       reg = <0x4c000000 0x10000>;
>     +                       interrupts = <3>;
>     +                       status = "disabled";
>     +               };
>     +
>     +               mmc0: mmc at 41100000 {
>     +                       compatible = "mrvl,pxa-mmc";
>     +                       reg = <0x41100000 0x1000>;
>     +                       interrupts = <23>;
>     +                       status = "disabled";
>     +               };
>     +
>     +               rtc at 40900000 {
>     +                       compatible = "marvell,pxa-rtc";
>     +                       reg = <0x40900000 0x3c>;
>     +                       interrupts = <30 31>;
>     +               };
>     +       };
>     +};
>     diff --git a/arch/arm/boot/dts/pxa3xx.dtsi
>     b/arch/arm/boot/dts/pxa3xx.dtsi
>     new file mode 100644
>     index 0000000..41e0a42
>     --- /dev/null
>     +++ b/arch/arm/boot/dts/pxa3xx.dtsi
>     @@ -0,0 +1,27 @@
>     +/* The pxa3xx skeleton simply augments the 2xx version */
>     +/include/ "pxa2xx.dtsi"
>     +
>     +/ {
>     +       model = "Marvell PXA3xx familiy SoC";
>     +       compatible = "marvell,pxa3xx";
>     +
>     +       pxabus {
>     +               pwri2c: i2c at 40f500c0 {
>     +                       compatible = "mrvl,pwri2c";
>     +                       reg = <0x40f500c0 0x30>;
>     +                       interrupts = <6>;
>     +                       #address-cells = <0x1>;
>     +                       #size-cells = <0>;
>     +                       status = "disabled";
>     +               };
>     +
>     +               nand0: nand at 43100000 {
>     +                       compatible = "marvell,pxa3xx-nand";
>     +                       reg = <0x43100000 90>;
>     +                       interrupts = <45>;
>     +                       #address-cells = <1>;
>     +                       #size-cells = <1>;
>     +                       status = "disabled";
>     +               };
>     +       };
>     +};
>     --
>
> I guess there are few more "mrvl" -> "marvell" renaming fixes still
> pending....

Yes, there are. But some drivers were already present, and my patch
series don't touch them. Only new bindings will be added with the name
"marvell".

There will be a big renaming patch soon that cleans up the rest in one go.


Daniel

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

* [PATCH v3 0/9] Assorted PXA3xx DT patches
  2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
                   ` (8 preceding siblings ...)
  2012-07-28 10:07 ` [PATCH v3 9/9] ARM: pxa: add .dtsi files Daniel Mack
@ 2012-07-29 13:04 ` Arnd Bergmann
  2012-07-30 14:01   ` Haojian Zhuang
  9 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2012-07-29 13:04 UTC (permalink / raw)
  To: linux-arm-kernel

On Saturday 28 July 2012, Daniel Mack wrote:
> 
> This is a series of 9 patches that add basic support for booting PXA3xx
> boards from devicetrees. I'm able to mount a rootfs and use all
> irq/gpio based functions as well as the NAND, USB and RTC drivers.
> 
> Changes from v2:
>  - more "mrvl" -> "marvell" renaming fixes
>  - avoid PXA_IRQ() in new code in arch/arm/mach-pxa/irq.c
>  - add the two GPIO patches that have been acked-by Arnd already
> 

Acked-by: Arnd Bergmann <arnd@arndb.de>

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

* [PATCH v3 9/9] ARM: pxa: add .dtsi files
  2012-07-28 10:07 ` [PATCH v3 9/9] ARM: pxa: add .dtsi files Daniel Mack
  2012-07-28 18:42   ` Amar Nath
@ 2012-07-29 19:05   ` Daniel Mack
  1 sibling, 0 replies; 24+ messages in thread
From: Daniel Mack @ 2012-07-29 19:05 UTC (permalink / raw)
  To: linux-arm-kernel

On 28.07.2012 12:07, Daniel Mack wrote:
> This adds .dtsi files to describe the PXA SoCs. pxa3xx simply augments
> pxa2xx. Not all devices are listed yet, and it will need some time to
> get all the drivers ported.

Here's a new version of that patch which adds pxa27x.dtsi and enables
the interrupt priority features of pxa3xx and pxa27x.

Haojian, is it ok to send the updates inline or would you prefer a new
series? Or a branch to pull from?


Daniel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ARM-pxa-add-.dtsi-files.patch
Type: text/x-patch
Size: 5061 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120729/f3f08537/attachment.bin>

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

* [PATCH v3 0/9] Assorted PXA3xx DT patches
  2012-07-29 13:04 ` [PATCH v3 0/9] Assorted PXA3xx DT patches Arnd Bergmann
@ 2012-07-30 14:01   ` Haojian Zhuang
  0 siblings, 0 replies; 24+ messages in thread
From: Haojian Zhuang @ 2012-07-30 14:01 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, Jul 29, 2012 at 9:04 PM, Arnd Bergmann <arnd@arndb.de> wrote:
> On Saturday 28 July 2012, Daniel Mack wrote:
>>
>> This is a series of 9 patches that add basic support for booting PXA3xx
>> boards from devicetrees. I'm able to mount a rootfs and use all
>> irq/gpio based functions as well as the NAND, USB and RTC drivers.
>>
>> Changes from v2:
>>  - more "mrvl" -> "marvell" renaming fixes
>>  - avoid PXA_IRQ() in new code in arch/arm/mach-pxa/irq.c
>>  - add the two GPIO patches that have been acked-by Arnd already
>>
>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
>
Applied

Regards
Haojian

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

* [PATCH v3 2/9] MMC: pxa-mci: add DT bindings
  2012-07-28 10:07 ` [PATCH v3 2/9] MMC: pxa-mci: add DT bindings Daniel Mack
@ 2012-08-03 23:52   ` Chris Ball
  2012-08-04  1:30     ` Haojian Zhuang
  0 siblings, 1 reply; 24+ messages in thread
From: Chris Ball @ 2012-08-03 23:52 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Sat, Jul 28 2012, Daniel Mack wrote:
> Signed-off-by: Daniel Mack <zonque@gmail.com>
> Cc: Nicolas Pitre <nico@fluxnic.net>
> Cc: Chris Ball <cjb@laptop.org>
> ---
>  Documentation/devicetree/bindings/mmc/pxa-mmc.txt | 25 +++++++++++
>  drivers/mmc/host/pxamci.c                         | 52 +++++++++++++++++++++++
>  2 files changed, 77 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/mmc/pxa-mmc.txt

Mind if I merge this via the MMC tree?  I prefer to take MMC patches
there, and it doesn't look like there are any dependencies involved.
I've pushed it to mmc-next now.

Thanks,

- Chris.
-- 
Chris Ball   <cjb@laptop.org>   <http://printf.net/>
One Laptop Per Child

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

* [PATCH v3 2/9] MMC: pxa-mci: add DT bindings
  2012-08-03 23:52   ` Chris Ball
@ 2012-08-04  1:30     ` Haojian Zhuang
  0 siblings, 0 replies; 24+ messages in thread
From: Haojian Zhuang @ 2012-08-04  1:30 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Aug 4, 2012 at 7:52 AM, Chris Ball <cjb@laptop.org> wrote:
> Hi,
>
> On Sat, Jul 28 2012, Daniel Mack wrote:
>> Signed-off-by: Daniel Mack <zonque@gmail.com>
>> Cc: Nicolas Pitre <nico@fluxnic.net>
>> Cc: Chris Ball <cjb@laptop.org>
>> ---
>>  Documentation/devicetree/bindings/mmc/pxa-mmc.txt | 25 +++++++++++
>>  drivers/mmc/host/pxamci.c                         | 52 +++++++++++++++++++++++
>>  2 files changed, 77 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/mmc/pxa-mmc.txt
>
> Mind if I merge this via the MMC tree?  I prefer to take MMC patches
> there, and it doesn't look like there are any dependencies involved.
> I've pushed it to mmc-next now.
>

There's no problem of your merging. I'll revert it in pxa git tree.

Regards
Haojian

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

* [PATCH v3 5/9] GPIO: gpio-pxa: fix devicetree functions
  2012-07-28 10:07 ` [PATCH v3 5/9] GPIO: gpio-pxa: fix devicetree functions Daniel Mack
@ 2012-08-04 23:40   ` Linus Walleij
  2012-08-05  2:58     ` Haojian Zhuang
  0 siblings, 1 reply; 24+ messages in thread
From: Linus Walleij @ 2012-08-04 23:40 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Jul 28, 2012 at 12:07 PM, Daniel Mack <zonque@gmail.com> wrote:

> Provide an of_xlate function for the PXA GPIO chips and make it work for
> devicetree environments.
>
> Successfully tested on a PXA3xx board.
>
> Signed-off-by: Daniel Mack <zonque@gmail.com>
> Acked-by: Arnd Bergmann <arnd@arndb.de>

Are you planning to funnel these through say arm-soc?

Yours,
Linus Walleij

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

* [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip()
  2012-07-28 10:07 ` [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip() Daniel Mack
@ 2012-08-05  0:12   ` Linus Walleij
  2012-08-05  2:56     ` Haojian Zhuang
  0 siblings, 1 reply; 24+ messages in thread
From: Linus Walleij @ 2012-08-05  0:12 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Jul 28, 2012 at 12:07 PM, Daniel Mack <zonque@gmail.com> wrote:

> Simplify the code in gpio-pxa.c and make them based on irq_base.
> When not probed from devicetree, initialize irq_base from
> PXA_GPIO_TO_IRQ() or MMP_GPIO_TO_IRQ(), respectively, so the non-DT case
> still works.
>
> Only tested on PXA3xx.
>
> Signed-off-by: Daniel Mack <zonque@gmail.com>
> Acked-by: Arnd Bergmann <arnd@arndb.de>

OK:
Acked-by: Linus Walleij <linus.walleij@linaro.org>

But:

> +#ifdef CONFIG_ARCH_PXA
> +               if (gpio_is_pxa_type(gpio_type))
> +                       irq_base = PXA_GPIO_TO_IRQ(0);
> +#endif
> +#ifdef CONFIG_ARCH_MMP
> +               if (gpio_is_mmp_type(gpio_type))
> +                       irq_base = MMP_GPIO_TO_IRQ(0);
> +#endif

Grrr. Can we think of a way to get rid of these #ifdef:s?

Yours,
Linus Walleij

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

* [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip()
  2012-08-05  0:12   ` Linus Walleij
@ 2012-08-05  2:56     ` Haojian Zhuang
  2012-08-05  9:37       ` Linus Walleij
  0 siblings, 1 reply; 24+ messages in thread
From: Haojian Zhuang @ 2012-08-05  2:56 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, Aug 5, 2012 at 8:12 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> On Sat, Jul 28, 2012 at 12:07 PM, Daniel Mack <zonque@gmail.com> wrote:
>
>> Simplify the code in gpio-pxa.c and make them based on irq_base.
>> When not probed from devicetree, initialize irq_base from
>> PXA_GPIO_TO_IRQ() or MMP_GPIO_TO_IRQ(), respectively, so the non-DT case
>> still works.
>>
>> +#ifdef CONFIG_ARCH_PXA
>> +               if (gpio_is_pxa_type(gpio_type))
>> +                       irq_base = PXA_GPIO_TO_IRQ(0);
>> +#endif
>> +#ifdef CONFIG_ARCH_MMP
>> +               if (gpio_is_mmp_type(gpio_type))
>> +                       irq_base = MMP_GPIO_TO_IRQ(0);
>> +#endif
>
> Grrr. Can we think of a way to get rid of these #ifdef:s?
>

It's used for non-DT mode. This driver is used in both arch-pxa
and arch-mmp. Since we use static irq allocation in non-DT mode,
we have to use this kind of code to get irq_base.

What Daniel did is only simplifying the code.

Regards
Haojian

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

* [PATCH v3 5/9] GPIO: gpio-pxa: fix devicetree functions
  2012-08-04 23:40   ` Linus Walleij
@ 2012-08-05  2:58     ` Haojian Zhuang
  0 siblings, 0 replies; 24+ messages in thread
From: Haojian Zhuang @ 2012-08-05  2:58 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, Aug 5, 2012 at 7:40 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> On Sat, Jul 28, 2012 at 12:07 PM, Daniel Mack <zonque@gmail.com> wrote:
>
>> Provide an of_xlate function for the PXA GPIO chips and make it work for
>> devicetree environments.
>>
>> Successfully tested on a PXA3xx board.
>>
>> Signed-off-by: Daniel Mack <zonque@gmail.com>
>> Acked-by: Arnd Bergmann <arnd@arndb.de>
>
> Are you planning to funnel these through say arm-soc?
>
> Yours,
> Linus Walleij

Yes, Daniel plans to go through arm-soc. And I merged it into pxa git tree.

Regards
Haojian

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

* [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip()
  2012-08-05  2:56     ` Haojian Zhuang
@ 2012-08-05  9:37       ` Linus Walleij
  2012-08-06  8:09         ` Arnd Bergmann
  0 siblings, 1 reply; 24+ messages in thread
From: Linus Walleij @ 2012-08-05  9:37 UTC (permalink / raw)
  To: linux-arm-kernel

On Sun, Aug 5, 2012 at 4:56 AM, Haojian Zhuang <haojian.zhuang@gmail.com> wrote:
> On Sun, Aug 5, 2012 at 8:12 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
>> On Sat, Jul 28, 2012 at 12:07 PM, Daniel Mack <zonque@gmail.com> wrote:
>>
>>> Simplify the code in gpio-pxa.c and make them based on irq_base.
>>> When not probed from devicetree, initialize irq_base from
>>> PXA_GPIO_TO_IRQ() or MMP_GPIO_TO_IRQ(), respectively, so the non-DT case
>>> still works.
>>>
>>> +#ifdef CONFIG_ARCH_PXA
>>> +               if (gpio_is_pxa_type(gpio_type))
>>> +                       irq_base = PXA_GPIO_TO_IRQ(0);
>>> +#endif
>>> +#ifdef CONFIG_ARCH_MMP
>>> +               if (gpio_is_mmp_type(gpio_type))
>>> +                       irq_base = MMP_GPIO_TO_IRQ(0);
>>> +#endif
>>
>> Grrr. Can we think of a way to get rid of these #ifdef:s?
>>
>
> It's used for non-DT mode. This driver is used in both arch-pxa
> and arch-mmp. Since we use static irq allocation in non-DT mode,
> we have to use this kind of code to get irq_base.
>
> What Daniel did is only simplifying the code.

Yep I know, and the result is better than without the patch, so
I Acked it. But if I have my dreams come true we could do away
with this compile-time stuff as well...

Yours,
Linus Walleij

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

* [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip()
  2012-08-05  9:37       ` Linus Walleij
@ 2012-08-06  8:09         ` Arnd Bergmann
  2012-08-06  8:11           ` Daniel Mack
  0 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2012-08-06  8:09 UTC (permalink / raw)
  To: linux-arm-kernel

On Sunday 05 August 2012, Linus Walleij wrote:
> >>>
> >>> +#ifdef CONFIG_ARCH_PXA
> >>> +               if (gpio_is_pxa_type(gpio_type))
> >>> +                       irq_base = PXA_GPIO_TO_IRQ(0);
> >>> +#endif
> >>> +#ifdef CONFIG_ARCH_MMP
> >>> +               if (gpio_is_mmp_type(gpio_type))
> >>> +                       irq_base = MMP_GPIO_TO_IRQ(0);
> >>> +#endif
> >>
> >> Grrr. Can we think of a way to get rid of these #ifdef:s?
> >>
> >
> > It's used for non-DT mode. This driver is used in both arch-pxa
> > and arch-mmp. Since we use static irq allocation in non-DT mode,
> > we have to use this kind of code to get irq_base.
> >
> > What Daniel did is only simplifying the code.
> 
> Yep I know, and the result is better than without the patch, so
> I Acked it. But if I have my dreams come true we could do away
> with this compile-time stuff as well...

I think the real solution for these is to merge ARCH_PXA and ARCH_MMP
and move all the code into one directory. I think it's ok to have
the above hack in there in the meantime as long as we can agree on where
we're heading eventually.

	Arnd

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

* [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip()
  2012-08-06  8:09         ` Arnd Bergmann
@ 2012-08-06  8:11           ` Daniel Mack
  0 siblings, 0 replies; 24+ messages in thread
From: Daniel Mack @ 2012-08-06  8:11 UTC (permalink / raw)
  To: linux-arm-kernel

On 06.08.2012 10:09, Arnd Bergmann wrote:
> On Sunday 05 August 2012, Linus Walleij wrote:
>>>>>
>>>>> +#ifdef CONFIG_ARCH_PXA
>>>>> +               if (gpio_is_pxa_type(gpio_type))
>>>>> +                       irq_base = PXA_GPIO_TO_IRQ(0);
>>>>> +#endif
>>>>> +#ifdef CONFIG_ARCH_MMP
>>>>> +               if (gpio_is_mmp_type(gpio_type))
>>>>> +                       irq_base = MMP_GPIO_TO_IRQ(0);
>>>>> +#endif
>>>>
>>>> Grrr. Can we think of a way to get rid of these #ifdef:s?
>>>>
>>>
>>> It's used for non-DT mode. This driver is used in both arch-pxa
>>> and arch-mmp. Since we use static irq allocation in non-DT mode,
>>> we have to use this kind of code to get irq_base.
>>>
>>> What Daniel did is only simplifying the code.
>>
>> Yep I know, and the result is better than without the patch, so
>> I Acked it. But if I have my dreams come true we could do away
>> with this compile-time stuff as well...
> 
> I think the real solution for these is to merge ARCH_PXA and ARCH_MMP
> and move all the code into one directory. I think it's ok to have
> the above hack in there in the meantime as long as we can agree on where
> we're heading eventually.

I don't know how much work that would be but I agree that it would
definitiely be nicer, yes. Note, however, that there was a lot more
#ifdef hackery in that driver before the cleanup.


Daniel

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

end of thread, other threads:[~2012-08-06  8:11 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-28 10:07 [PATCH v3 0/9] Assorted PXA3xx DT patches Daniel Mack
2012-07-28 10:07 ` [PATCH v3 1/9] RTC: add DT bindings to pxa-rtc Daniel Mack
2012-07-28 10:07 ` [PATCH v3 2/9] MMC: pxa-mci: add DT bindings Daniel Mack
2012-08-03 23:52   ` Chris Ball
2012-08-04  1:30     ` Haojian Zhuang
2012-07-28 10:07 ` [PATCH v3 3/9] MTD: pxa3xx-nand: add devicetree bindings Daniel Mack
2012-07-28 10:07 ` [PATCH v3 4/9] GPIO: gpio-pxa: simplify pxa_gpio_to_irq() and pxa_irq_to_chip() Daniel Mack
2012-08-05  0:12   ` Linus Walleij
2012-08-05  2:56     ` Haojian Zhuang
2012-08-05  9:37       ` Linus Walleij
2012-08-06  8:09         ` Arnd Bergmann
2012-08-06  8:11           ` Daniel Mack
2012-07-28 10:07 ` [PATCH v3 5/9] GPIO: gpio-pxa: fix devicetree functions Daniel Mack
2012-08-04 23:40   ` Linus Walleij
2012-08-05  2:58     ` Haojian Zhuang
2012-07-28 10:07 ` [PATCH v3 6/9] ARM: pxa: add devicetree code for irq handling Daniel Mack
2012-07-28 10:07 ` [PATCH v3 7/9] ARM: pxa3xx: skip default device initialization when booting via DT Daniel Mack
2012-07-28 10:07 ` [PATCH v3 8/9] ARM: pxa3xx: add generic DT machine code Daniel Mack
2012-07-28 10:07 ` [PATCH v3 9/9] ARM: pxa: add .dtsi files Daniel Mack
2012-07-28 18:42   ` Amar Nath
2012-07-29  0:02     ` Daniel Mack
2012-07-29 19:05   ` Daniel Mack
2012-07-29 13:04 ` [PATCH v3 0/9] Assorted PXA3xx DT patches Arnd Bergmann
2012-07-30 14:01   ` Haojian Zhuang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).