* [PATCH 1/3] ARM: OMAP2+: gpmc: Modify interrupt handling
2012-05-15 14:38 [PATCH 0/3] GPMC NAND isr using standard API Afzal Mohammed
@ 2012-05-15 14:38 ` Afzal Mohammed
2012-05-15 15:06 ` Mohammed, Afzal
2012-05-15 14:38 ` [PATCH 2/3] ARM: OMAP2+: gpmc-nand: Modify Interrupt handling Afzal Mohammed
` (2 subsequent siblings)
3 siblings, 1 reply; 10+ messages in thread
From: Afzal Mohammed @ 2012-05-15 14:38 UTC (permalink / raw)
To: tony, dwmw2, artem.bityutskiy, dedekind1, linux-omap, linux-mtd
Cc: ivan.djelic, Afzal Mohammed
Modify interrupt handling such that interrupts can be handled by GPMC
client drivers using standard interrupt APIs rather than requiring
the drivers to have knowledge about GPMC interrupt handling. Currently
only NAND related interrupts has been considered (which is the case
even without this change) as the only user of GPMC interrupt is NAND.
This helps in smooth migration of GPMC to driver.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
arch/arm/mach-omap2/gpmc.c | 137 ++++++++++++++++++++++++++++----
arch/arm/plat-omap/include/plat/gpmc.h | 1 +
2 files changed, 121 insertions(+), 17 deletions(-)
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index a409a3e..2b9aad1 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -78,6 +78,20 @@
#define ENABLE_PREFETCH (0x1 << 7)
#define DMA_MPU_MODE 2
+/* TODO: Handle waitpin interrupts also. Present boards make use of only NAND
+ * interrupts, hence only NAND interrupts has been considered
+ */
+#define GPMC_NR_IRQ 2
+
+struct gpmc_client_irq {
+ unsigned irq;
+ u32 bitmask;
+};
+
+static struct gpmc_client_irq gpmc_client_irq[GPMC_NR_IRQ];
+static struct irq_chip gpmc_irq_chip;
+static unsigned gpmc_irq_start;
+
/* Structure to save gpmc cs context */
struct gpmc_cs_config {
u32 config1;
@@ -702,6 +716,97 @@ void gpmc_update_nand_reg(struct gpmc_nand_regs *reg, int cs)
reg->gpmc_bch_result0 = gpmc_base + GPMC_ECC_BCH_RESULT_0;
}
+int gpmc_get_client_irq(unsigned irq_config)
+{
+ int i;
+
+ if (hweight32(irq_config) > 1)
+ return 0;
+
+ for (i = 0; i < GPMC_NR_IRQ; i++)
+ if (gpmc_client_irq[i].bitmask & irq_config)
+ return gpmc_client_irq[i].irq;
+
+ return 0;
+}
+
+static int gpmc_irq_endis(unsigned irq, bool endis)
+{
+ int i;
+ u32 regval;
+
+ for (i = 0; i < GPMC_NR_IRQ; i++)
+ if (irq == gpmc_client_irq[i].irq) {
+ regval = gpmc_read_reg(GPMC_IRQENABLE);
+ if (endis)
+ regval |= gpmc_client_irq[i].bitmask;
+ else
+ regval &= ~gpmc_client_irq[i].bitmask;
+ gpmc_write_reg(GPMC_IRQENABLE, regval);
+ break;
+ }
+
+ return 0;
+}
+
+static void gpmc_irq_disable(struct irq_data *p)
+{
+ gpmc_irq_endis(p->irq, false);
+}
+
+static void gpmc_irq_enable(struct irq_data *p)
+{
+ gpmc_irq_endis(p->irq, true);
+}
+
+static void gpmc_irq_noop(struct irq_data *data) { }
+
+static unsigned int gpmc_irq_noop_ret(struct irq_data *data) { return 0; }
+
+static int gpmc_setup_irq(int gpmc_irq)
+{
+ int i;
+ u32 regval;
+
+ if (!gpmc_irq)
+ return -EINVAL;
+
+ gpmc_irq_start = irq_alloc_descs(-1, 0, GPMC_NR_IRQ, 0);
+ if (IS_ERR_VALUE(gpmc_irq_start)) {
+ pr_err("irq_alloc_descs failed\n");
+ return gpmc_irq_start;
+ }
+
+ gpmc_irq_chip.name = "gpmc";
+ gpmc_irq_chip.irq_startup = gpmc_irq_noop_ret;
+ gpmc_irq_chip.irq_enable = gpmc_irq_enable;
+ gpmc_irq_chip.irq_disable = gpmc_irq_disable;
+ gpmc_irq_chip.irq_shutdown = gpmc_irq_noop;
+ gpmc_irq_chip.irq_ack = gpmc_irq_noop;
+ gpmc_irq_chip.irq_mask = gpmc_irq_noop;
+ gpmc_irq_chip.irq_unmask = gpmc_irq_noop;
+
+ gpmc_client_irq[0].bitmask = GPMC_IRQ_FIFOEVENTENABLE;
+ gpmc_client_irq[1].bitmask = GPMC_IRQ_COUNT_EVENT;
+
+ for (i = 0; i < GPMC_NR_IRQ; i++) {
+ gpmc_client_irq[i].irq = gpmc_irq_start + i;
+ irq_set_chip_and_handler(gpmc_client_irq[i].irq,
+ &gpmc_irq_chip, handle_simple_irq);
+ set_irq_flags(gpmc_client_irq[i].irq,
+ IRQF_VALID | IRQF_NOAUTOEN);
+ }
+
+ /* Disable interrupts */
+ gpmc_write_reg(GPMC_IRQENABLE, 0);
+
+ /* clear interrupts */
+ regval = gpmc_read_reg(GPMC_IRQSTATUS);
+ gpmc_write_reg(GPMC_IRQSTATUS, regval);
+
+ return request_irq(gpmc_irq, gpmc_handle_irq, 0, "gpmc", NULL);
+}
+
static void __init gpmc_mem_init(void)
{
int cs;
@@ -731,8 +836,8 @@ static void __init gpmc_mem_init(void)
static int __init gpmc_init(void)
{
- u32 l, irq;
- int cs, ret = -EINVAL;
+ u32 l;
+ int ret = -EINVAL;
int gpmc_irq;
char *ck = NULL;
@@ -780,16 +885,7 @@ static int __init gpmc_init(void)
gpmc_write_reg(GPMC_SYSCONFIG, l);
gpmc_mem_init();
- /* initalize the irq_chained */
- irq = OMAP_GPMC_IRQ_BASE;
- for (cs = 0; cs < GPMC_CS_NUM; cs++) {
- irq_set_chip_and_handler(irq, &dummy_irq_chip,
- handle_simple_irq);
- set_irq_flags(irq, IRQF_VALID);
- irq++;
- }
-
- ret = request_irq(gpmc_irq, gpmc_handle_irq, IRQF_SHARED, "gpmc", NULL);
+ ret = gpmc_setup_irq(gpmc_irq);
if (ret)
pr_err("gpmc: irq-%d could not claim: err %d\n",
gpmc_irq, ret);
@@ -799,12 +895,19 @@ postcore_initcall(gpmc_init);
static irqreturn_t gpmc_handle_irq(int irq, void *dev)
{
- u8 cs;
+ int i;
+ u32 regval;
+
+ regval = gpmc_read_reg(GPMC_IRQSTATUS);
+
+ if (!regval)
+ return IRQ_NONE;
+
+ for (i = 0; i < GPMC_NR_IRQ; i++)
+ if (regval & gpmc_client_irq[i].bitmask)
+ generic_handle_irq(gpmc_client_irq[i].irq);
- /* check cs to invoke the irq */
- cs = ((gpmc_read_reg(GPMC_PREFETCH_CONFIG1)) >> CS_NUM_SHIFT) & 0x7;
- if (OMAP_GPMC_IRQ_BASE+cs <= OMAP_GPMC_IRQ_END)
- generic_handle_irq(OMAP_GPMC_IRQ_BASE+cs);
+ gpmc_write_reg(GPMC_IRQSTATUS, regval);
return IRQ_HANDLED;
}
diff --git a/arch/arm/plat-omap/include/plat/gpmc.h b/arch/arm/plat-omap/include/plat/gpmc.h
index 6a8078e..e6fa0cf 100644
--- a/arch/arm/plat-omap/include/plat/gpmc.h
+++ b/arch/arm/plat-omap/include/plat/gpmc.h
@@ -148,6 +148,7 @@ struct gpmc_nand_regs {
};
extern void gpmc_update_nand_reg(struct gpmc_nand_regs *reg, int cs);
+extern int gpmc_get_client_irq(unsigned irq_config);
extern unsigned int gpmc_ns_to_ticks(unsigned int time_ns);
extern unsigned int gpmc_ps_to_ticks(unsigned int time_ps);
--
1.7.10
^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [PATCH 1/3] ARM: OMAP2+: gpmc: Modify interrupt handling
2012-05-15 14:38 ` [PATCH 1/3] ARM: OMAP2+: gpmc: Modify interrupt handling Afzal Mohammed
@ 2012-05-15 15:06 ` Mohammed, Afzal
0 siblings, 0 replies; 10+ messages in thread
From: Mohammed, Afzal @ 2012-05-15 15:06 UTC (permalink / raw)
To: tony@atomide.com, dwmw2@infradead.org,
artem.bityutskiy@linux.intel.com, dedekind1@gmail.com,
linux-omap@vger.kernel.org, linux-mtd@lists.infradead.org
Cc: ivan.djelic@parrot.com
Hi Tony,
On Tue, May 15, 2012 at 20:08:34, Mohammed, Afzal wrote:
> Modify interrupt handling such that interrupts can be handled by GPMC
> client drivers using standard interrupt APIs rather than requiring
> the drivers to have knowledge about GPMC interrupt handling. Currently
> only NAND related interrupts has been considered (which is the case
> even without this change) as the only user of GPMC interrupt is NAND.
:
> - ret = request_irq(gpmc_irq, gpmc_handle_irq, IRQF_SHARED, "gpmc", NULL);
If this series could not be considered for 3.5, to prevent failure of
request_irq, either,
355f8ee ARM: OMAP2+: GPMC: resolve type-conversion warning from sparse,
should be avoided, or diff [1] would be required, as shared irq needs dev-id.
Regards
Afzal
[1]
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index 46b09da..9e1b726 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -768,7 +768,7 @@ static int __init gpmc_init(void)
irq++;
}
- ret = request_irq(gpmc_irq, gpmc_handle_irq, IRQF_SHARED, "gpmc", NULL);
+ ret = request_irq(gpmc_irq, gpmc_handle_irq, 0, "gpmc", NULL);
if (ret)
pr_err("gpmc: irq-%d could not claim: err %d\n",
gpmc_irq, ret);
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/3] ARM: OMAP2+: gpmc-nand: Modify Interrupt handling
2012-05-15 14:38 [PATCH 0/3] GPMC NAND isr using standard API Afzal Mohammed
2012-05-15 14:38 ` [PATCH 1/3] ARM: OMAP2+: gpmc: Modify interrupt handling Afzal Mohammed
@ 2012-05-15 14:38 ` Afzal Mohammed
2012-05-15 14:38 ` [PATCH 3/3] mtd: nand: omap2: use gpmc provided irqs Afzal Mohammed
2012-05-19 12:50 ` [PATCH 0/3] GPMC NAND isr using standard API Ivan Djelic
3 siblings, 0 replies; 10+ messages in thread
From: Afzal Mohammed @ 2012-05-15 14:38 UTC (permalink / raw)
To: tony, dwmw2, artem.bityutskiy, dedekind1, linux-omap, linux-mtd
Cc: ivan.djelic, Afzal Mohammed
Now GPMC provides its client with interrupts that can be handled
using the standard interrupt API. Modify GPMC NAND setup to work
with it.
Also disable write protect in GPMC code, so that NAND driver can
be ignorant of GPMC configuration.
This helps in smooth migration of GPMC to driver.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
arch/arm/mach-omap2/gpmc-nand.c | 28 ++++++++++++++++++++++------
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c
index c0320d2..e58f450 100644
--- a/arch/arm/mach-omap2/gpmc-nand.c
+++ b/arch/arm/mach-omap2/gpmc-nand.c
@@ -21,15 +21,25 @@
#include <plat/board.h>
#include <plat/gpmc.h>
-static struct resource gpmc_nand_resource = {
- .flags = IORESOURCE_MEM,
+static struct resource gpmc_nand_resource[] = {
+ {
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .name = "fifoevent",
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .name = "terminalcount",
+ .flags = IORESOURCE_IRQ,
+ },
};
static struct platform_device gpmc_nand_device = {
.name = "omap2-nand",
.id = 0,
- .num_resources = 1,
- .resource = &gpmc_nand_resource,
+ .num_resources = ARRAY_SIZE(gpmc_nand_resource),
+ .resource = gpmc_nand_resource,
};
static int omap2_nand_gpmc_retime(struct omap_nand_platform_data *gpmc_nand_data)
@@ -75,6 +85,7 @@ static int omap2_nand_gpmc_retime(struct omap_nand_platform_data *gpmc_nand_data
gpmc_cs_configure(gpmc_nand_data->cs, GPMC_CONFIG_DEV_SIZE, 0);
gpmc_cs_configure(gpmc_nand_data->cs,
GPMC_CONFIG_DEV_TYPE, GPMC_DEVICETYPE_NAND);
+ gpmc_cs_configure(gpmc_nand_data->cs, GPMC_CONFIG_WP, 0);
err = gpmc_cs_set_timings(gpmc_nand_data->cs, &t);
if (err)
return err;
@@ -90,14 +101,19 @@ int __init gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data)
gpmc_nand_device.dev.platform_data = gpmc_nand_data;
err = gpmc_cs_request(gpmc_nand_data->cs, NAND_IO_SIZE,
- (unsigned long *)&gpmc_nand_resource.start);
+ (unsigned long *)&gpmc_nand_resource[0].start);
if (err < 0) {
dev_err(dev, "Cannot request GPMC CS\n");
return err;
}
- gpmc_nand_resource.end = gpmc_nand_resource.start + NAND_IO_SIZE - 1;
+ gpmc_nand_resource[0].end = gpmc_nand_resource[0].start +
+ NAND_IO_SIZE - 1;
+ gpmc_nand_resource[1].start =
+ gpmc_get_client_irq(GPMC_IRQ_FIFOEVENTENABLE);
+ gpmc_nand_resource[2].start =
+ gpmc_get_client_irq(GPMC_IRQ_COUNT_EVENT);
/* Set timings in GPMC */
err = omap2_nand_gpmc_retime(gpmc_nand_data);
if (err < 0) {
--
1.7.10
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] mtd: nand: omap2: use gpmc provided irqs
2012-05-15 14:38 [PATCH 0/3] GPMC NAND isr using standard API Afzal Mohammed
2012-05-15 14:38 ` [PATCH 1/3] ARM: OMAP2+: gpmc: Modify interrupt handling Afzal Mohammed
2012-05-15 14:38 ` [PATCH 2/3] ARM: OMAP2+: gpmc-nand: Modify Interrupt handling Afzal Mohammed
@ 2012-05-15 14:38 ` Afzal Mohammed
2012-05-19 12:50 ` [PATCH 0/3] GPMC NAND isr using standard API Ivan Djelic
3 siblings, 0 replies; 10+ messages in thread
From: Afzal Mohammed @ 2012-05-15 14:38 UTC (permalink / raw)
To: tony, dwmw2, artem.bityutskiy, dedekind1, linux-omap, linux-mtd
Cc: ivan.djelic, Afzal Mohammed
GPMC driver provides it's clients with interrupts that can be used
through struct resource. Make use of it for irq mode functionality.
Also now write protect disable is done by GPMC code, hence remove it.
Signed-off-by: Afzal Mohammed <afzal@ti.com>
---
drivers/mtd/nand/omap2.c | 70 +++++++++++++++++++++++++++-------------------
1 file changed, 42 insertions(+), 28 deletions(-)
diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
index f69ecc1..2eac7d9 100644
--- a/drivers/mtd/nand/omap2.c
+++ b/drivers/mtd/nand/omap2.c
@@ -131,7 +131,8 @@ struct omap_nand_info {
unsigned long mem_size;
struct completion comp;
int dma_ch;
- int gpmc_irq;
+ int gpmc_irq_fifo;
+ int gpmc_irq_count;
enum {
OMAP_NAND_IO_READ = 0, /* read */
OMAP_NAND_IO_WRITE, /* write */
@@ -556,14 +557,12 @@ static irqreturn_t omap_nand_irq(int this_irq, void *dev)
{
struct omap_nand_info *info = (struct omap_nand_info *) dev;
u32 bytes;
- u32 irq_stat;
- irq_stat = gpmc_read_status(GPMC_GET_IRQ_STATUS);
bytes = readl(info->reg.gpmc_prefetch_status);
bytes = GPMC_PREFETCH_STATUS_FIFO_CNT(bytes);
bytes = bytes & 0xFFFC; /* io in multiple of 4 bytes */
if (info->iomode == OMAP_NAND_IO_WRITE) { /* checks for write io */
- if (irq_stat & 0x2)
+ if (this_irq == info->gpmc_irq_count)
goto done;
if (info->buf_len && (info->buf_len < bytes))
@@ -580,20 +579,17 @@ static irqreturn_t omap_nand_irq(int this_irq, void *dev)
(u32 *)info->buf, bytes >> 2);
info->buf = info->buf + bytes;
- if (irq_stat & 0x2)
+ if (this_irq == info->gpmc_irq_count)
goto done;
}
- gpmc_cs_configure(info->gpmc_cs, GPMC_SET_IRQ_STATUS, irq_stat);
return IRQ_HANDLED;
done:
complete(&info->comp);
- /* disable irq */
- gpmc_cs_configure(info->gpmc_cs, GPMC_ENABLE_IRQ, 0);
- /* clear status */
- gpmc_cs_configure(info->gpmc_cs, GPMC_SET_IRQ_STATUS, irq_stat);
+ disable_irq_nosync(info->gpmc_irq_fifo);
+ disable_irq_nosync(info->gpmc_irq_count);
return IRQ_HANDLED;
}
@@ -627,9 +623,9 @@ static void omap_read_buf_irq_pref(struct mtd_info *mtd, u_char *buf, int len)
goto out_copy;
info->buf_len = len;
- /* enable irq */
- gpmc_cs_configure(info->gpmc_cs, GPMC_ENABLE_IRQ,
- (GPMC_IRQ_FIFOEVENTENABLE | GPMC_IRQ_COUNT_EVENT));
+
+ enable_irq(info->gpmc_irq_count);
+ enable_irq(info->gpmc_irq_fifo);
/* waiting for read to complete */
wait_for_completion(&info->comp);
@@ -677,12 +673,13 @@ static void omap_write_buf_irq_pref(struct mtd_info *mtd,
goto out_copy;
info->buf_len = len;
- /* enable irq */
- gpmc_cs_configure(info->gpmc_cs, GPMC_ENABLE_IRQ,
- (GPMC_IRQ_FIFOEVENTENABLE | GPMC_IRQ_COUNT_EVENT));
+
+ enable_irq(info->gpmc_irq_count);
+ enable_irq(info->gpmc_irq_fifo);
/* waiting for write to complete */
wait_for_completion(&info->comp);
+
/* wait for data to flushed-out before reset the prefetch */
tim = 0;
limit = (loops_per_jiffy * msecs_to_jiffies(OMAP_NAND_TIMEOUT_MS));
@@ -1079,9 +1076,6 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
info->nand.options = pdata->devsize;
info->nand.options |= NAND_SKIP_BBTSCAN;
- /* NAND write protect off */
- gpmc_cs_configure(info->gpmc_cs, GPMC_CONFIG_WP, 0);
-
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (res == NULL) {
err = -EINVAL;
@@ -1104,6 +1098,14 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
goto out_release_mem_region;
}
+ info->gpmc_irq_fifo = platform_get_irq_byname(pdev, "fifoevent");
+ if (info->gpmc_irq_fifo == -ENXIO)
+ dev_warn(&pdev->dev, "error getting FIFO IRQ\n");
+
+ info->gpmc_irq_count = platform_get_irq_byname(pdev, "terminalcount");
+ if (info->gpmc_irq_count == -ENXIO)
+ dev_warn(&pdev->dev, "error getting TERMINALCOUNT IRQ\n");
+
info->nand.controller = &info->controller;
info->nand.IO_ADDR_W = info->nand.IO_ADDR_R;
@@ -1159,17 +1161,24 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
break;
case NAND_OMAP_PREFETCH_IRQ:
- err = request_irq(pdata->gpmc_irq,
- omap_nand_irq, IRQF_SHARED, "gpmc-nand", info);
+ err = request_irq(info->gpmc_irq_fifo, omap_nand_irq,
+ IRQF_SHARED, "gpmc-nand-fifo", info);
if (err) {
dev_err(&pdev->dev, "requesting irq(%d) error:%d",
- pdata->gpmc_irq, err);
+ info->gpmc_irq_fifo, err);
goto out_release_mem_region;
- } else {
- info->gpmc_irq = pdata->gpmc_irq;
- info->nand.read_buf = omap_read_buf_irq_pref;
- info->nand.write_buf = omap_write_buf_irq_pref;
}
+ err = request_irq(info->gpmc_irq_count, omap_nand_irq,
+ IRQF_SHARED, "gpmc-nand-count", info);
+ if (err) {
+ dev_err(&pdev->dev, "requesting irq(%d) error:%d",
+ info->gpmc_irq_count, err);
+ goto out_free_irq_gpmc_fifo;
+ }
+
+ info->nand.read_buf = omap_read_buf_irq_pref;
+ info->nand.write_buf = omap_write_buf_irq_pref;
+
break;
default:
@@ -1239,6 +1248,8 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
return 0;
+out_free_irq_gpmc_fifo:
+ free_irq(info->gpmc_irq_fifo, info);
out_release_mem_region:
release_mem_region(info->phys_base, info->mem_size);
out_free_info:
@@ -1257,8 +1268,11 @@ static int omap_nand_remove(struct platform_device *pdev)
if (info->dma_ch != -1)
omap_free_dma(info->dma_ch);
- if (info->gpmc_irq)
- free_irq(info->gpmc_irq, info);
+ if (info->gpmc_irq_fifo > 0)
+ free_irq(info->gpmc_irq_fifo, info);
+
+ if (info->gpmc_irq_count > 0)
+ free_irq(info->gpmc_irq_count, info);
/* Release NAND device, its internal structures and partitions */
nand_release(&info->mtd);
--
1.7.10
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] GPMC NAND isr using standard API
2012-05-15 14:38 [PATCH 0/3] GPMC NAND isr using standard API Afzal Mohammed
` (2 preceding siblings ...)
2012-05-15 14:38 ` [PATCH 3/3] mtd: nand: omap2: use gpmc provided irqs Afzal Mohammed
@ 2012-05-19 12:50 ` Ivan Djelic
2012-05-22 4:26 ` Mohammed, Afzal
3 siblings, 1 reply; 10+ messages in thread
From: Ivan Djelic @ 2012-05-19 12:50 UTC (permalink / raw)
To: Afzal Mohammed
Cc: tony@atomide.com, dwmw2@infradead.org,
artem.bityutskiy@linux.intel.com, dedekind1@gmail.com,
linux-omap@vger.kernel.org, linux-mtd@lists.infradead.org
On Tue, May 15, 2012 at 03:38:09PM +0100, Afzal Mohammed wrote:
> Hi Tony, Artem,
>
> This series creates a fictitious GPMC interrupt chip and provide the
> clients with interrupts that could be handled using standard APIs.
> This helps in removing the requirement of driver of peripheral
> connected to GPMC having the knowledge about GPMC. The only user is
> OMAP NAND driver, it has also been modified to use interrupts provided
> by imaginary GPMC chip.
>
> This series has a dependency on [2], while [2] has a trivial
> dependency on [1].
>
> With this series plus [1,2], GPMC driver conversion which is going to
> happen shortly will not create noticable effect outside of
> arch/arm/*omap*/.
>
> If this series along with [1,2] can be taken in for 3.5, ripples felt
> by MTD drivers upon GPMC driver conversion would be minimal.
Hi Afzal,
I tried to take your series of patches, but I had issues with the
first [1] (I did not try the others): it depends on the following patch,
which is not in the l2-mtd-2.6 tree:
http://www.mail-archive.com/linux-omap@vger.kernel.org/msg68258.html
and it does not apply anyway to l2-mtd-2.6 because of (at least) the
following patches:
http://lists.infradead.org/pipermail/linux-mtd/2012-April/040631.html
http://lists.infradead.org/pipermail/linux-mtd/2012-April/040724.html
So, do you think you could rebase your series on l2-mtd-2.6 ?
And maybe merge the 3 series into a single one, if they have circular
dependencies ?
Thanks,
--
Ivan
[1] http://www.mail-archive.com/linux-omap@vger.kernel.org/msg68581.html
[2] http://www.mail-archive.com/linux-omap@vger.kernel.org/msg68652.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH 0/3] GPMC NAND isr using standard API
2012-05-19 12:50 ` [PATCH 0/3] GPMC NAND isr using standard API Ivan Djelic
@ 2012-05-22 4:26 ` Mohammed, Afzal
2012-05-22 6:14 ` Artem Bityutskiy
0 siblings, 1 reply; 10+ messages in thread
From: Mohammed, Afzal @ 2012-05-22 4:26 UTC (permalink / raw)
To: Ivan Djelic
Cc: tony@atomide.com, dwmw2@infradead.org,
artem.bityutskiy@linux.intel.com, dedekind1@gmail.com,
linux-omap@vger.kernel.org, linux-mtd@lists.infradead.org
Hi Ivan,
On Sat, May 19, 2012 at 18:20:18, Ivan Djelic wrote:
> Hi Afzal,
>
> I tried to take your series of patches, but I had issues with the
> first [1] (I did not try the others): it depends on the following patch,
> which is not in the l2-mtd-2.6 tree:
>
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg68258.html
>
> and it does not apply anyway to l2-mtd-2.6 because of (at least) the
> following patches:
>
> http://lists.infradead.org/pipermail/linux-mtd/2012-April/040631.html
> http://lists.infradead.org/pipermail/linux-mtd/2012-April/040724.html
>
> So, do you think you could rebase your series on l2-mtd-2.6 ?
> And maybe merge the 3 series into a single one, if they have circular
> dependencies ?
I am not sure what the workflow should be here, all patch series were
made over omap tree, if it is generated over mtd tree, similar issue
would happen for omap platform patches.
In any case, for your reference, the 3 series of patches of had been
rebased over mtd tree, and is available,
git@gitorious.org:x0148406-public/linux-kernel.git gpmc-mtd.
To prevent confusion the 3 patch series has not been posted.
Tony, Artem, how should the conflict between omap & mtd trees be handled
for patch series ?
I believe it is better to send the 3 patch series into one as mentioned
by Ivan, and planning to do so, but in that case over which tree should
it be based ?
Regards
Afzal
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH 0/3] GPMC NAND isr using standard API
2012-05-22 4:26 ` Mohammed, Afzal
@ 2012-05-22 6:14 ` Artem Bityutskiy
2012-05-22 7:01 ` Mohammed, Afzal
0 siblings, 1 reply; 10+ messages in thread
From: Artem Bityutskiy @ 2012-05-22 6:14 UTC (permalink / raw)
To: Mohammed, Afzal
Cc: Ivan Djelic, tony@atomide.com, dwmw2@infradead.org,
linux-omap@vger.kernel.org, linux-mtd@lists.infradead.org
[-- Attachment #1: Type: text/plain, Size: 322 bytes --]
On Tue, 2012-05-22 at 04:26 +0000, Mohammed, Afzal wrote:
> Tony, Artem, how should the conflict between omap & mtd trees be handled
> for patch series ?
You merge the 2 trees and work on top of that? Or you wait for 3.5-r1
when everything is merged and work on top of that?
--
Best Regards,
Artem Bityutskiy
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH 0/3] GPMC NAND isr using standard API
2012-05-22 6:14 ` Artem Bityutskiy
@ 2012-05-22 7:01 ` Mohammed, Afzal
2012-05-22 16:44 ` Tony Lindgren
0 siblings, 1 reply; 10+ messages in thread
From: Mohammed, Afzal @ 2012-05-22 7:01 UTC (permalink / raw)
To: artem.bityutskiy@linux.intel.com
Cc: Ivan Djelic, tony@atomide.com, dwmw2@infradead.org,
linux-omap@vger.kernel.org, linux-mtd@lists.infradead.org
Hi Artem,
On Tue, May 22, 2012 at 11:44:43, Artem Bityutskiy wrote:
> You merge the 2 trees and work on top of that? Or you wait for 3.5-r1
> when everything is merged and work on top of that?
I will merge 2 trees & do
Tony, are you ok with that ?
Regards
Afzal
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/3] GPMC NAND isr using standard API
2012-05-22 7:01 ` Mohammed, Afzal
@ 2012-05-22 16:44 ` Tony Lindgren
0 siblings, 0 replies; 10+ messages in thread
From: Tony Lindgren @ 2012-05-22 16:44 UTC (permalink / raw)
To: Mohammed, Afzal
Cc: artem.bityutskiy@linux.intel.com, Ivan Djelic,
dwmw2@infradead.org, linux-omap@vger.kernel.org,
linux-mtd@lists.infradead.org
* Mohammed, Afzal <afzal@ti.com> [120522 00:05]:
> Hi Artem,
>
> On Tue, May 22, 2012 at 11:44:43, Artem Bityutskiy wrote:
> > You merge the 2 trees and work on top of that? Or you wait for 3.5-r1
> > when everything is merged and work on top of that?
>
> I will merge 2 trees & do
>
> Tony, are you ok with that ?
I suggest you guys do your own merge of the two trees until -rc1
is out, then start using -rc1 as the base like Artem suggested.
Regards,
Tony
^ permalink raw reply [flat|nested] 10+ messages in thread