From: Lee Jones <lee.jones@linaro.org> To: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, grant.likely@secretlab.ca, linus.walleij@stericsson.com, arnd@arndb.de, Samuel Ortiz <sameo@linux.intel.com> Subject: Re: [PATCH 08/14] mfd: Add IRQ domain support for the AB8500 Date: Mon, 18 Jun 2012 10:02:53 +0100 [thread overview] Message-ID: <4FDEEEBD.5070108@linaro.org> (raw) In-Reply-To: <20120614183231.GA30185@sirena.org.uk> Do this look better to you Mark? From: Lee Jones <lee.jones@linaro.org> Date: Sat, 26 May 2012 06:54:04 +0100 Subject: [PATCH 1/1] mfd: Add IRQ domain support for the AB8500 As the AB8500 is an IRQ controller in its own right, here we provide the AB8500 driver with IRQ domain support. This is required if we wish to reference any of its IRQs from a platform's Device Tree. Cc: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Lee Jones <lee.jones@linaro.org> --- drivers/mfd/Kconfig | 1 + drivers/mfd/ab8500-core.c | 114 ++++++++++++++++++++----------------- include/linux/mfd/abx500/ab8500.h | 5 ++ 3 files changed, 69 insertions(+), 51 deletions(-) diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 170072e..e3637c2 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -696,6 +696,7 @@ config AB8500_CORE bool "ST-Ericsson AB8500 Mixed Signal Power Management chip" depends on GENERIC_HARDIRQS && ABX500_CORE && MFD_DB8500_PRCMU select MFD_CORE + select IRQ_DOMAIN help Select this option to enable access to AB8500 power management chip. This connects to U8500 either on the SSP/SPI bus (deprecated diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c index 4dc5024..47bf8aa 100644 --- a/drivers/mfd/ab8500-core.c +++ b/drivers/mfd/ab8500-core.c @@ -11,6 +11,7 @@ #include <linux/slab.h> #include <linux/init.h> #include <linux/irq.h> +#include <linux/irqdomain.h> #include <linux/delay.h> #include <linux/interrupt.h> #include <linux/module.h> @@ -361,7 +362,7 @@ static void ab8500_irq_sync_unlock(struct irq_data *data) static void ab8500_irq_mask(struct irq_data *data) { struct ab8500 *ab8500 = irq_data_get_irq_chip_data(data); - int offset = data->irq - ab8500->irq_base; + int offset = data->irq; int index = offset / 8; int mask = 1 << (offset % 8); @@ -371,7 +372,7 @@ static void ab8500_irq_mask(struct irq_data *data) static void ab8500_irq_unmask(struct irq_data *data) { struct ab8500 *ab8500 = irq_data_get_irq_chip_data(data); - int offset = data->irq - ab8500->irq_base; + int offset = data->irq; int index = offset / 8; int mask = 1 << (offset % 8); @@ -501,7 +502,7 @@ static irqreturn_t ab8500_irq(int irq, void *dev) int bit = __ffs(value); int line = i * 8 + bit; - handle_nested_irq(ab8500->irq_base + line); + handle_nested_irq(line); value &= ~(1 << bit); } while (value); @@ -510,38 +511,51 @@ static irqreturn_t ab8500_irq(int irq, void *dev) return IRQ_HANDLED; } -static int ab8500_irq_init(struct ab8500 *ab8500) +/** + * ab8500_irq_get_virq(): Map an interrupt on a chip to a virtual IRQ + * + * @ab8500: ab8500_irq controller to operate on. + * @irq: index of the interrupt requested in the chip IRQs + * + * Useful for drivers to request their own IRQs. + */ +int ab8500_irq_get_virq(struct ab8500 *ab8500, int irq) { - int base = ab8500->irq_base; - int irq; - int num_irqs; + if (!ab8500) + return -EINVAL; - if (is_ab9540(ab8500)) - num_irqs = AB9540_NR_IRQS; - else if (is_ab8505(ab8500)) - num_irqs = AB8505_NR_IRQS; - else - num_irqs = AB8500_NR_IRQS; + return irq_create_mapping(ab8500->domain, irq); +} +EXPORT_SYMBOL_GPL(ab8500_irq_get_virq); + +static int ab8500_irq_map(struct irq_domain *d, unsigned int virq, + irq_hw_number_t hwirq) +{ + struct ab8500 *ab8500 = d->host_data; - for (irq = base; irq < base + num_irqs; irq++) { - irq_set_chip_data(irq, ab8500); - irq_set_chip_and_handler(irq, &ab8500_irq_chip, - handle_simple_irq); - irq_set_nested_thread(irq, 1); + if (!ab8500) + return -EINVAL; + + irq_set_chip_data(virq, ab8500); + irq_set_chip_and_handler(virq, &ab8500_irq_chip, + handle_simple_irq); + irq_set_nested_thread(virq, 1); #ifdef CONFIG_ARM - set_irq_flags(irq, IRQF_VALID); + set_irq_flags(virq, IRQF_VALID); #else - irq_set_noprobe(irq); + irq_set_noprobe(virq); #endif - } return 0; } -static void ab8500_irq_remove(struct ab8500 *ab8500) +static struct irq_domain_ops ab8500_irq_ops = { + .map = ab8500_irq_map, + .xlate = irq_domain_xlate_twocell, +}; + +static int ab8500_irq_init(struct ab8500 *ab8500, struct device_node *np) { - int base = ab8500->irq_base; - int irq; int num_irqs; if (is_ab9540(ab8500)) @@ -551,13 +565,22 @@ static void ab8500_irq_remove(struct ab8500 *ab8500) else num_irqs = AB8500_NR_IRQS; - for (irq = base; irq < base + num_irqs; irq++) { -#ifdef CONFIG_ARM - set_irq_flags(irq, 0); -#endif - irq_set_chip_and_handler(irq, NULL, NULL); - irq_set_chip_data(irq, NULL); + if (ab8500->irq_base) { + ab8500->domain = irq_domain_add_legacy( + NULL, num_irqs, ab8500->irq_base, + 0, &ab8500_irq_ops, ab8500); + } + else { + ab8500->domain = irq_domain_add_linear( + np, num_irqs, &ab8500_irq_ops, ab8500); + } + + if (!ab8500->domain) { + dev_err(ab8500->dev, "Failed to create irqdomain\n"); + return -ENOSYS; } + + return 0; } int ab8500_suspend(struct ab8500 *ab8500) @@ -1233,14 +1256,6 @@ static int __devinit ab8500_probe(struct platform_device *pdev) if (plat) ab8500->irq_base = plat->irq_base; - else if (np) - ret = of_property_read_u32(np, "stericsson,irq-base", &ab8500->irq_base); - - if (!ab8500->irq_base) { - dev_info(&pdev->dev, "couldn't find irq-base\n"); - ret = -EINVAL; - goto out_free_ab8500; - } ab8500->dev = &pdev->dev; @@ -1323,7 +1338,7 @@ static int __devinit ab8500_probe(struct platform_device *pdev) AB8500_SWITCH_OFF_STATUS, &value); if (ret < 0) return ret; - dev_info(ab8500->dev, "switch off status: %#x", value); + dev_info(ab8500->dev, "switch off status: %#x\n", value); if (plat && plat->init) plat->init(ab8500); @@ -1352,8 +1367,8 @@ static int __devinit ab8500_probe(struct platform_device *pdev) for (i = 0; i < ab8500->mask_size; i++) ab8500->mask[i] = ab8500->oldmask[i] = 0xff; - if (ab8500->irq_base) { - ret = ab8500_irq_init(ab8500); + if (ab8500->irq_base || np) { + ret = ab8500_irq_init(ab8500, np); if (ret) goto out_freeoldmask; @@ -1370,7 +1385,7 @@ static int __devinit ab8500_probe(struct platform_device *pdev) IRQF_ONESHOT | IRQF_NO_SUSPEND, "ab8500", ab8500); if (ret) - goto out_removeirq; + goto out_freeoldmask; } if (!np) { @@ -1417,15 +1432,12 @@ static int __devinit ab8500_probe(struct platform_device *pdev) &ab8500_attr_group); if (ret) dev_err(ab8500->dev, "error creating sysfs entries\n"); - else - return ret; + + return ret; out_freeirq: - if (ab8500->irq_base) + if (ab8500->irq_base || np) free_irq(ab8500->irq, ab8500); -out_removeirq: - if (ab8500->irq_base) - ab8500_irq_remove(ab8500); out_freeoldmask: kfree(ab8500->oldmask); out_freemask: @@ -1439,16 +1451,16 @@ out_free_ab8500: static int __devexit ab8500_remove(struct platform_device *pdev) { struct ab8500 *ab8500 = platform_get_drvdata(pdev); + struct device_node *np = pdev->dev.of_node; if (is_ab9540(ab8500)) sysfs_remove_group(&ab8500->dev->kobj, &ab9540_attr_group); else sysfs_remove_group(&ab8500->dev->kobj, &ab8500_attr_group); mfd_remove_devices(ab8500->dev); - if (ab8500->irq_base) { + if (ab8500->irq_base || np) free_irq(ab8500->irq, ab8500); - ab8500_irq_remove(ab8500); - } + kfree(ab8500->oldmask); kfree(ab8500->mask); kfree(ab8500); diff --git a/include/linux/mfd/abx500/ab8500.h b/include/linux/mfd/abx500/ab8500.h index 91dd3ef..4ae2cd9 100644 --- a/include/linux/mfd/abx500/ab8500.h +++ b/include/linux/mfd/abx500/ab8500.h @@ -9,6 +9,7 @@ #include <linux/atomic.h> #include <linux/mutex.h> +#include <linux/irqdomain.h> struct device; @@ -227,6 +228,7 @@ enum ab8500_version { * @irq_lock: genirq bus lock * @transfer_ongoing: 0 if no transfer ongoing * @irq: irq line + * @irq_domain: irq domain * @version: chip version id (e.g. ab8500 or ab9540) * @chip_id: chip revision id * @write: register write @@ -247,6 +249,7 @@ struct ab8500 { atomic_t transfer_ongoing; int irq_base; int irq; + struct irq_domain *domain; enum ab8500_version version; u8 chip_id; @@ -336,4 +339,6 @@ static inline int is_ab8500_2p0(struct ab8500 *ab) return (is_ab8500(ab) && (ab->chip_id == AB8500_CUT2P0)); } +int ab8500_irq_get_virq(struct ab8500 *ab8500, int irq); + #endif /* MFD_AB8500_H */ -- 1.7.9.5
WARNING: multiple messages have this Message-ID (diff)
From: lee.jones@linaro.org (Lee Jones) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 08/14] mfd: Add IRQ domain support for the AB8500 Date: Mon, 18 Jun 2012 10:02:53 +0100 [thread overview] Message-ID: <4FDEEEBD.5070108@linaro.org> (raw) In-Reply-To: <20120614183231.GA30185@sirena.org.uk> Do this look better to you Mark? From: Lee Jones <lee.jones@linaro.org> Date: Sat, 26 May 2012 06:54:04 +0100 Subject: [PATCH 1/1] mfd: Add IRQ domain support for the AB8500 As the AB8500 is an IRQ controller in its own right, here we provide the AB8500 driver with IRQ domain support. This is required if we wish to reference any of its IRQs from a platform's Device Tree. Cc: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Lee Jones <lee.jones@linaro.org> --- drivers/mfd/Kconfig | 1 + drivers/mfd/ab8500-core.c | 114 ++++++++++++++++++++----------------- include/linux/mfd/abx500/ab8500.h | 5 ++ 3 files changed, 69 insertions(+), 51 deletions(-) diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 170072e..e3637c2 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -696,6 +696,7 @@ config AB8500_CORE bool "ST-Ericsson AB8500 Mixed Signal Power Management chip" depends on GENERIC_HARDIRQS && ABX500_CORE && MFD_DB8500_PRCMU select MFD_CORE + select IRQ_DOMAIN help Select this option to enable access to AB8500 power management chip. This connects to U8500 either on the SSP/SPI bus (deprecated diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c index 4dc5024..47bf8aa 100644 --- a/drivers/mfd/ab8500-core.c +++ b/drivers/mfd/ab8500-core.c @@ -11,6 +11,7 @@ #include <linux/slab.h> #include <linux/init.h> #include <linux/irq.h> +#include <linux/irqdomain.h> #include <linux/delay.h> #include <linux/interrupt.h> #include <linux/module.h> @@ -361,7 +362,7 @@ static void ab8500_irq_sync_unlock(struct irq_data *data) static void ab8500_irq_mask(struct irq_data *data) { struct ab8500 *ab8500 = irq_data_get_irq_chip_data(data); - int offset = data->irq - ab8500->irq_base; + int offset = data->irq; int index = offset / 8; int mask = 1 << (offset % 8); @@ -371,7 +372,7 @@ static void ab8500_irq_mask(struct irq_data *data) static void ab8500_irq_unmask(struct irq_data *data) { struct ab8500 *ab8500 = irq_data_get_irq_chip_data(data); - int offset = data->irq - ab8500->irq_base; + int offset = data->irq; int index = offset / 8; int mask = 1 << (offset % 8); @@ -501,7 +502,7 @@ static irqreturn_t ab8500_irq(int irq, void *dev) int bit = __ffs(value); int line = i * 8 + bit; - handle_nested_irq(ab8500->irq_base + line); + handle_nested_irq(line); value &= ~(1 << bit); } while (value); @@ -510,38 +511,51 @@ static irqreturn_t ab8500_irq(int irq, void *dev) return IRQ_HANDLED; } -static int ab8500_irq_init(struct ab8500 *ab8500) +/** + * ab8500_irq_get_virq(): Map an interrupt on a chip to a virtual IRQ + * + * @ab8500: ab8500_irq controller to operate on. + * @irq: index of the interrupt requested in the chip IRQs + * + * Useful for drivers to request their own IRQs. + */ +int ab8500_irq_get_virq(struct ab8500 *ab8500, int irq) { - int base = ab8500->irq_base; - int irq; - int num_irqs; + if (!ab8500) + return -EINVAL; - if (is_ab9540(ab8500)) - num_irqs = AB9540_NR_IRQS; - else if (is_ab8505(ab8500)) - num_irqs = AB8505_NR_IRQS; - else - num_irqs = AB8500_NR_IRQS; + return irq_create_mapping(ab8500->domain, irq); +} +EXPORT_SYMBOL_GPL(ab8500_irq_get_virq); + +static int ab8500_irq_map(struct irq_domain *d, unsigned int virq, + irq_hw_number_t hwirq) +{ + struct ab8500 *ab8500 = d->host_data; - for (irq = base; irq < base + num_irqs; irq++) { - irq_set_chip_data(irq, ab8500); - irq_set_chip_and_handler(irq, &ab8500_irq_chip, - handle_simple_irq); - irq_set_nested_thread(irq, 1); + if (!ab8500) + return -EINVAL; + + irq_set_chip_data(virq, ab8500); + irq_set_chip_and_handler(virq, &ab8500_irq_chip, + handle_simple_irq); + irq_set_nested_thread(virq, 1); #ifdef CONFIG_ARM - set_irq_flags(irq, IRQF_VALID); + set_irq_flags(virq, IRQF_VALID); #else - irq_set_noprobe(irq); + irq_set_noprobe(virq); #endif - } return 0; } -static void ab8500_irq_remove(struct ab8500 *ab8500) +static struct irq_domain_ops ab8500_irq_ops = { + .map = ab8500_irq_map, + .xlate = irq_domain_xlate_twocell, +}; + +static int ab8500_irq_init(struct ab8500 *ab8500, struct device_node *np) { - int base = ab8500->irq_base; - int irq; int num_irqs; if (is_ab9540(ab8500)) @@ -551,13 +565,22 @@ static void ab8500_irq_remove(struct ab8500 *ab8500) else num_irqs = AB8500_NR_IRQS; - for (irq = base; irq < base + num_irqs; irq++) { -#ifdef CONFIG_ARM - set_irq_flags(irq, 0); -#endif - irq_set_chip_and_handler(irq, NULL, NULL); - irq_set_chip_data(irq, NULL); + if (ab8500->irq_base) { + ab8500->domain = irq_domain_add_legacy( + NULL, num_irqs, ab8500->irq_base, + 0, &ab8500_irq_ops, ab8500); + } + else { + ab8500->domain = irq_domain_add_linear( + np, num_irqs, &ab8500_irq_ops, ab8500); + } + + if (!ab8500->domain) { + dev_err(ab8500->dev, "Failed to create irqdomain\n"); + return -ENOSYS; } + + return 0; } int ab8500_suspend(struct ab8500 *ab8500) @@ -1233,14 +1256,6 @@ static int __devinit ab8500_probe(struct platform_device *pdev) if (plat) ab8500->irq_base = plat->irq_base; - else if (np) - ret = of_property_read_u32(np, "stericsson,irq-base", &ab8500->irq_base); - - if (!ab8500->irq_base) { - dev_info(&pdev->dev, "couldn't find irq-base\n"); - ret = -EINVAL; - goto out_free_ab8500; - } ab8500->dev = &pdev->dev; @@ -1323,7 +1338,7 @@ static int __devinit ab8500_probe(struct platform_device *pdev) AB8500_SWITCH_OFF_STATUS, &value); if (ret < 0) return ret; - dev_info(ab8500->dev, "switch off status: %#x", value); + dev_info(ab8500->dev, "switch off status: %#x\n", value); if (plat && plat->init) plat->init(ab8500); @@ -1352,8 +1367,8 @@ static int __devinit ab8500_probe(struct platform_device *pdev) for (i = 0; i < ab8500->mask_size; i++) ab8500->mask[i] = ab8500->oldmask[i] = 0xff; - if (ab8500->irq_base) { - ret = ab8500_irq_init(ab8500); + if (ab8500->irq_base || np) { + ret = ab8500_irq_init(ab8500, np); if (ret) goto out_freeoldmask; @@ -1370,7 +1385,7 @@ static int __devinit ab8500_probe(struct platform_device *pdev) IRQF_ONESHOT | IRQF_NO_SUSPEND, "ab8500", ab8500); if (ret) - goto out_removeirq; + goto out_freeoldmask; } if (!np) { @@ -1417,15 +1432,12 @@ static int __devinit ab8500_probe(struct platform_device *pdev) &ab8500_attr_group); if (ret) dev_err(ab8500->dev, "error creating sysfs entries\n"); - else - return ret; + + return ret; out_freeirq: - if (ab8500->irq_base) + if (ab8500->irq_base || np) free_irq(ab8500->irq, ab8500); -out_removeirq: - if (ab8500->irq_base) - ab8500_irq_remove(ab8500); out_freeoldmask: kfree(ab8500->oldmask); out_freemask: @@ -1439,16 +1451,16 @@ out_free_ab8500: static int __devexit ab8500_remove(struct platform_device *pdev) { struct ab8500 *ab8500 = platform_get_drvdata(pdev); + struct device_node *np = pdev->dev.of_node; if (is_ab9540(ab8500)) sysfs_remove_group(&ab8500->dev->kobj, &ab9540_attr_group); else sysfs_remove_group(&ab8500->dev->kobj, &ab8500_attr_group); mfd_remove_devices(ab8500->dev); - if (ab8500->irq_base) { + if (ab8500->irq_base || np) free_irq(ab8500->irq, ab8500); - ab8500_irq_remove(ab8500); - } + kfree(ab8500->oldmask); kfree(ab8500->mask); kfree(ab8500); diff --git a/include/linux/mfd/abx500/ab8500.h b/include/linux/mfd/abx500/ab8500.h index 91dd3ef..4ae2cd9 100644 --- a/include/linux/mfd/abx500/ab8500.h +++ b/include/linux/mfd/abx500/ab8500.h @@ -9,6 +9,7 @@ #include <linux/atomic.h> #include <linux/mutex.h> +#include <linux/irqdomain.h> struct device; @@ -227,6 +228,7 @@ enum ab8500_version { * @irq_lock: genirq bus lock * @transfer_ongoing: 0 if no transfer ongoing * @irq: irq line + * @irq_domain: irq domain * @version: chip version id (e.g. ab8500 or ab9540) * @chip_id: chip revision id * @write: register write @@ -247,6 +249,7 @@ struct ab8500 { atomic_t transfer_ongoing; int irq_base; int irq; + struct irq_domain *domain; enum ab8500_version version; u8 chip_id; @@ -336,4 +339,6 @@ static inline int is_ab8500_2p0(struct ab8500 *ab) return (is_ab8500(ab) && (ab->chip_id == AB8500_CUT2P0)); } +int ab8500_irq_get_virq(struct ab8500 *ab8500, int irq); + #endif /* MFD_AB8500_H */ -- 1.7.9.5
next prev parent reply other threads:[~2012-06-18 9:02 UTC|newest] Thread overview: 234+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-06-11 15:24 [PATCH 00/14] Final (large) batch of Snowball Device Tree Enablement Lee Jones 2012-06-11 15:24 ` Lee Jones 2012-06-11 15:24 ` [PATCH 01/14] rtc: ab8500-rtc: IRQF_ONESHOT when requesting a threaded IRQ Lee Jones 2012-06-11 15:24 ` Lee Jones 2012-06-11 15:31 ` Arnd Bergmann 2012-06-11 15:31 ` Arnd Bergmann 2012-06-11 15:37 ` Lee Jones 2012-06-11 15:37 ` Lee Jones 2012-06-11 15:51 ` Greg Kroah-Hartman 2012-06-11 15:51 ` Greg Kroah-Hartman 2012-06-11 16:01 ` Lee Jones 2012-06-11 16:01 ` Lee Jones 2012-06-11 20:54 ` [rtc-linux] " Linus Walleij 2012-06-11 20:54 ` Linus Walleij 2012-06-12 8:57 ` Lee Jones 2012-06-12 8:57 ` Lee Jones 2012-06-13 22:25 ` Andrew Morton 2012-06-13 22:25 ` Andrew Morton 2012-06-14 7:14 ` Lee Jones 2012-06-14 7:14 ` Lee Jones 2012-06-14 7:30 ` Andrew Morton 2012-06-14 7:30 ` Andrew Morton 2012-06-14 8:02 ` Lee Jones 2012-06-14 8:02 ` Lee Jones 2012-06-11 15:24 ` [PATCH 02/14] rtc: Ensure correct probing of the AB8500 RTC when Device Tree is enabled Lee Jones 2012-06-11 15:24 ` Lee Jones 2012-06-11 20:56 ` [rtc-linux] " Linus Walleij 2012-06-11 20:56 ` Linus Walleij 2012-07-02 15:23 ` Lee Jones 2012-07-02 15:23 ` Lee Jones 2012-06-11 15:24 ` [PATCH 03/14] mfd: ab8500-gpadc: Enable IRQF_ONESHOT when requesting a threaded IRQ Lee Jones 2012-06-11 15:24 ` Lee Jones 2012-06-11 20:54 ` Linus Walleij 2012-06-11 20:54 ` Linus Walleij 2012-06-12 8:58 ` Lee Jones 2012-06-12 8:58 ` Lee Jones 2012-06-11 15:24 ` [PATCH 04/14] mfd: Remove redundant Kconfig entry Lee Jones 2012-06-11 15:24 ` Lee Jones 2012-06-11 20:57 ` Linus Walleij 2012-06-11 20:57 ` Linus Walleij 2012-06-11 15:24 ` [PATCH 05/14] mfd: Enable DT probing of the DB8500 PRCMU Lee Jones 2012-06-11 15:24 ` Lee Jones 2012-06-11 20:58 ` Linus Walleij 2012-06-11 20:58 ` Linus Walleij 2012-06-29 14:47 ` Samuel Ortiz 2012-06-29 14:47 ` Samuel Ortiz 2012-06-11 15:24 ` [PATCH 06/14] mfd: Initialise the DB8500 PRCMU driver at core_initcall time Lee Jones 2012-06-11 15:24 ` Lee Jones 2012-06-11 21:01 ` Linus Walleij 2012-06-11 21:01 ` Linus Walleij 2012-06-12 8:11 ` Lee Jones 2012-06-12 8:11 ` Lee Jones 2012-06-12 8:35 ` Lee Jones 2012-06-12 8:35 ` Lee Jones 2012-06-12 12:59 ` Arnd Bergmann 2012-06-12 12:59 ` Arnd Bergmann 2012-06-12 13:23 ` Lee Jones 2012-06-12 13:23 ` Lee Jones 2012-06-12 14:49 ` Arnd Bergmann 2012-06-12 14:49 ` Arnd Bergmann 2012-06-12 15:39 ` Lee Jones 2012-06-12 15:39 ` Lee Jones 2012-06-18 8:32 ` Lee Jones 2012-06-18 8:32 ` Lee Jones 2012-06-29 14:48 ` Samuel Ortiz 2012-06-29 14:48 ` Samuel Ortiz 2012-06-11 15:25 ` [PATCH 07/14] mfd: Initialise the AB8500 " Lee Jones 2012-06-11 15:25 ` Lee Jones 2012-06-11 21:03 ` Linus Walleij 2012-06-11 21:03 ` Linus Walleij 2012-06-12 8:13 ` Lee Jones 2012-06-12 8:13 ` Lee Jones 2012-06-12 8:37 ` Lee Jones 2012-06-12 8:37 ` Lee Jones 2012-06-29 14:51 ` Samuel Ortiz 2012-06-29 14:51 ` Samuel Ortiz 2012-06-11 15:25 ` [PATCH 08/14] mfd: Add IRQ domain support for the AB8500 Lee Jones 2012-06-11 15:25 ` Lee Jones 2012-06-11 21:33 ` Linus Walleij 2012-06-11 21:33 ` Linus Walleij 2012-06-12 8:01 ` Lee Jones 2012-06-12 8:01 ` Lee Jones 2012-06-14 18:32 ` Mark Brown 2012-06-14 18:32 ` Mark Brown 2012-06-15 12:49 ` Lee Jones 2012-06-15 12:49 ` Lee Jones 2012-06-18 9:02 ` Lee Jones [this message] 2012-06-18 9:02 ` Lee Jones 2012-06-18 9:32 ` Mark Brown 2012-06-18 9:32 ` Mark Brown 2012-06-18 10:20 ` Russell King - ARM Linux 2012-06-18 10:20 ` Russell King - ARM Linux 2012-06-18 18:56 ` Mark Brown 2012-06-18 18:56 ` Mark Brown 2012-06-20 13:00 ` Lee Jones 2012-06-20 13:00 ` Lee Jones 2012-06-21 7:37 ` Linus Walleij 2012-06-21 7:37 ` Linus Walleij 2012-06-26 9:04 ` Lee Jones 2012-06-26 9:04 ` Lee Jones 2012-06-20 9:12 ` Linus Walleij 2012-06-20 9:12 ` Linus Walleij 2012-06-11 15:25 ` [PATCH 09/14] i2c: Add Device Tree support to the Nomadik I2C driver Lee Jones 2012-06-11 15:25 ` Lee Jones 2012-06-11 19:05 ` Wolfram Sang 2012-06-11 19:05 ` Wolfram Sang 2012-06-12 7:23 ` Lee Jones 2012-06-12 7:23 ` Lee Jones 2012-06-12 8:52 ` Lee Jones 2012-06-12 8:52 ` Lee Jones 2012-06-12 8:52 ` Lee Jones 2012-06-12 8:57 ` Wolfram Sang 2012-06-12 8:57 ` Wolfram Sang 2012-06-12 8:57 ` Wolfram Sang 2012-06-11 20:37 ` Linus Walleij 2012-06-11 20:37 ` Linus Walleij 2012-06-11 20:37 ` Linus Walleij 2012-06-12 7:34 ` Lee Jones 2012-06-12 7:34 ` Lee Jones 2012-06-12 7:34 ` Lee Jones 2012-06-13 5:40 ` Linus Walleij 2012-06-13 5:40 ` Linus Walleij 2012-06-13 5:40 ` Linus Walleij 2012-06-13 7:01 ` Lee Jones 2012-06-13 7:01 ` Lee Jones 2012-06-13 7:01 ` Lee Jones 2012-06-13 8:12 ` Linus Walleij 2012-06-13 8:12 ` Linus Walleij 2012-06-13 12:28 ` Lee Jones 2012-06-13 12:28 ` Lee Jones 2012-06-13 12:28 ` Lee Jones 2012-06-14 18:36 ` Mark Brown 2012-06-14 18:36 ` Mark Brown 2012-06-14 18:36 ` Mark Brown 2012-06-14 18:46 ` Mark Brown 2012-06-14 18:46 ` Mark Brown 2012-06-14 18:46 ` Mark Brown 2012-06-14 18:59 ` Lee Jones 2012-06-14 18:59 ` Lee Jones 2012-06-14 18:57 ` Lee Jones 2012-06-14 18:57 ` Lee Jones 2012-06-14 18:57 ` Lee Jones 2012-06-15 9:32 ` Mark Brown 2012-06-15 9:32 ` Mark Brown 2012-06-15 9:32 ` Mark Brown 2012-06-15 10:00 ` Lee Jones 2012-06-15 10:00 ` Lee Jones 2012-06-15 10:32 ` Russell King - ARM Linux 2012-06-15 10:32 ` Russell King - ARM Linux 2012-06-15 11:43 ` Lee Jones 2012-06-15 11:43 ` Lee Jones 2012-06-15 11:43 ` Lee Jones 2012-06-13 16:07 ` [PATCH 1/3] " Lee Jones 2012-06-13 16:07 ` Lee Jones 2012-06-13 16:07 ` Lee Jones 2012-06-14 17:12 ` Linus Walleij 2012-06-14 17:12 ` Linus Walleij 2012-06-14 17:12 ` Linus Walleij 2012-06-15 9:02 ` Lee Jones 2012-06-15 9:02 ` Lee Jones 2012-06-15 9:02 ` Lee Jones [not found] ` <CAE2-_9rRYxjU9QQgtBv9ReMY5x+oRiJG1cDQahYHanjDrwVUYA@mail.gmail.com> 2012-06-15 11:50 ` Fwd: " Srinidhi Kasagar 2012-06-15 11:50 ` Srinidhi Kasagar 2012-06-15 11:50 ` Srinidhi Kasagar 2012-06-15 12:45 ` Lee Jones 2012-06-15 12:45 ` Lee Jones 2012-06-15 12:45 ` Lee Jones 2012-06-15 13:05 ` Srinidhi Kasagar 2012-06-15 13:05 ` Srinidhi Kasagar 2012-06-15 13:05 ` Srinidhi Kasagar 2012-06-15 13:18 ` Lee Jones 2012-06-15 13:18 ` Lee Jones 2012-06-15 13:18 ` Lee Jones 2012-06-15 13:37 ` Srinidhi Kasagar 2012-06-15 13:37 ` Srinidhi Kasagar 2012-06-15 13:37 ` Srinidhi Kasagar 2012-06-15 13:58 ` Lee Jones 2012-06-15 13:58 ` Lee Jones 2012-06-15 13:58 ` Lee Jones 2012-06-17 17:43 ` Linus Walleij 2012-06-17 17:43 ` Linus Walleij 2012-06-17 17:43 ` Linus Walleij 2012-06-18 7:18 ` Lee Jones 2012-06-18 7:18 ` Lee Jones 2012-06-18 7:18 ` Lee Jones 2012-06-18 7:58 ` Srinidhi Kasagar 2012-06-18 7:58 ` Srinidhi Kasagar 2012-06-18 7:58 ` Srinidhi Kasagar 2012-06-18 8:41 ` Lee Jones 2012-06-18 8:41 ` Lee Jones 2012-06-18 8:41 ` Lee Jones 2012-06-13 16:08 ` [PATCH 2/3] ARM: ux500: Add i2c configurations to the Device Tree for DB8500 based devices Lee Jones 2012-06-13 16:08 ` Lee Jones 2012-06-14 17:13 ` Linus Walleij 2012-06-14 17:13 ` Linus Walleij 2012-06-14 17:13 ` Linus Walleij 2012-06-18 11:29 ` Linus Walleij 2012-06-18 11:29 ` Linus Walleij 2012-06-18 11:29 ` Linus Walleij 2012-06-18 11:37 ` Lee Jones 2012-06-18 11:37 ` Lee Jones 2012-06-18 11:37 ` Lee Jones 2012-06-13 16:08 ` [PATCH 3/3] Documentation: Device Tree binding information for i2c-nomadik driver Lee Jones 2012-06-13 16:08 ` Lee Jones 2012-06-13 16:08 ` Lee Jones 2012-06-14 17:13 ` Linus Walleij 2012-06-14 17:13 ` Linus Walleij 2012-06-14 17:13 ` Linus Walleij 2012-06-11 15:25 ` [PATCH 10/14] Input: Add Device Tree support to the ab8500-ponkey driver Lee Jones 2012-06-11 15:25 ` Lee Jones 2012-06-11 15:25 ` [PATCH 11/14] usb: otg: Enable probing of the ab8500 during a Device Tree boot Lee Jones 2012-06-11 15:25 ` Lee Jones 2012-06-11 21:39 ` Linus Walleij 2012-06-11 21:39 ` Linus Walleij 2012-07-02 15:24 ` Lee Jones 2012-07-02 15:24 ` Lee Jones 2012-06-11 15:25 ` [PATCH 12/14] ARM: ux500: Correctly reference IRQs supplied by the AB8500 from Device Tree Lee Jones 2012-06-11 15:25 ` Lee Jones 2012-06-11 21:41 ` Linus Walleij 2012-06-11 21:41 ` Linus Walleij 2012-06-11 15:25 ` [PATCH 13/14] ARM: ux500: Enable the AB8500 RTC for all DT:ed DB8500 based devices Lee Jones 2012-06-11 15:25 ` Lee Jones 2012-06-11 21:42 ` Linus Walleij 2012-06-11 21:42 ` Linus Walleij 2012-06-11 15:25 ` [PATCH 14/14] ARM: ux500: Move rtc-pl031 registration to Device Tree when enabled Lee Jones 2012-06-11 15:25 ` Lee Jones 2012-06-11 21:43 ` Linus Walleij 2012-06-11 21:43 ` Linus Walleij 2012-06-12 8:03 ` Lee Jones 2012-06-12 8:03 ` Lee Jones 2012-06-12 14:32 ` Linus Walleij 2012-06-12 14:32 ` Linus Walleij 2012-06-12 14:44 ` Lee Jones 2012-06-12 14:44 ` Lee Jones
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=4FDEEEBD.5070108@linaro.org \ --to=lee.jones@linaro.org \ --cc=arnd@arndb.de \ --cc=broonie@opensource.wolfsonmicro.com \ --cc=grant.likely@secretlab.ca \ --cc=linus.walleij@stericsson.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=sameo@linux.intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.