From: Tony Lindgren <tony@atomide.com>
To: linux-arm-kernel@lists.infradead.org
Cc: Grygorii Strashko <grygorii.strashko@ti.com>,
Linus Walleij <linus.walleij@linaro.org>,
linux-kernel@vger.kernel.org,
Peter Ujfalusi <peter.ujfalusi@ti.com>,
Prakash Manjunathappa <prakash.pm@ti.com>,
Haojian Zhuang <haojian.zhuang@linaro.org>,
linux-omap@vger.kernel.org, Roger Quadros <rogerq@ti.com>
Subject: [PATCH 5/6] pinctrl: single: Add support for auxdata
Date: Wed, 02 Oct 2013 22:42:26 -0700 [thread overview]
Message-ID: <20131003054226.8941.80570.stgit@localhost> (raw)
In-Reply-To: <20131003054104.8941.88857.stgit@localhost>
For omaps, we still have dependencies to the legacy code
for handling the PRM (Power Reset Management) interrupts,
and also for reconfiguring the io wake-up chain after
changes.
Let's pass the PRM interrupt and the rearm functions via
auxdata. Then when at some point we have a proper PRM
driver, we can get the interrupt via device tree and
set up the rearm function as exported function in the
PRM driver.
By using auxdata we can remove a dependency to the
wake-up events for converting omap3 to be device
tree only.
Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: Prakash Manjunathappa <prakash.pm@ti.com>
Cc: Roger Quadros <rogerq@ti.com>
Cc: Haojian Zhuang <haojian.zhuang@linaro.org>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
drivers/pinctrl/pinctrl-single.c | 23 +++++++++++++++++++++++
include/linux/platform_data/pinctrl-single.h | 12 ++++++++++++
2 files changed, 35 insertions(+)
create mode 100644 include/linux/platform_data/pinctrl-single.h
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index b4ff055..e7092e8 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -28,6 +28,8 @@
#include <linux/pinctrl/pinmux.h>
#include <linux/pinctrl/pinconf-generic.h>
+#include <linux/platform_data/pinctrl-single.h>
+
#include "core.h"
#include "pinconf.h"
@@ -159,12 +161,14 @@ struct pcs_name {
* @irq: optional interrupt for the controller
* @irq_enable_mask: optional SoC specific interrupt enable mask
* @irq_status_mask: optional SoC specific interrupt status mask
+ * @rearm: optional SoC specific wake-up rearm function
*/
struct pcs_soc_data {
unsigned flags;
int irq;
unsigned irq_enable_mask;
unsigned irq_status_mask;
+ void (*rearm)(void);
};
/**
@@ -1622,6 +1626,8 @@ static void pcs_irq_unmask(struct irq_data *d)
struct pcs_soc_data *pcs_soc = irq_data_get_irq_chip_data(d);
pcs_irq_set(pcs_soc, d->irq, true);
+ if (pcs_soc->rearm)
+ pcs_soc->rearm();
}
/**
@@ -1672,6 +1678,11 @@ static int pcs_irq_handle(struct pcs_soc_data *pcs_soc)
}
}
+ /*
+ * For debugging on omaps, you may want to call pcs_soc->rearm()
+ * here to see wake-up interrupts during runtime also.
+ */
+
return count;
}
@@ -1838,6 +1849,7 @@ static int pcs_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
const struct of_device_id *match;
+ struct pcs_pdata *pdata;
struct resource *res;
struct pcs_device *pcs;
const struct pcs_soc_data *soc;
@@ -1952,6 +1964,17 @@ static int pcs_probe(struct platform_device *pdev)
if (pcs->socdata.irq)
pcs->flags |= PCS_FEAT_IRQ;
+ /* We still need auxdata for some omaps for PRM interrupts */
+ pdata = dev_get_platdata(&pdev->dev);
+ if (pdata) {
+ if (pdata->rearm)
+ pcs->socdata.rearm = pdata->rearm;
+ if (pdata->irq) {
+ pcs->socdata.irq = pdata->irq;
+ pcs->flags |= PCS_FEAT_IRQ;
+ }
+ }
+
if (PCS_HAS_IRQ) {
ret = pcs_irq_init_chained_handler(pcs, np);
if (ret < 0)
diff --git a/include/linux/platform_data/pinctrl-single.h b/include/linux/platform_data/pinctrl-single.h
new file mode 100644
index 0000000..72eacda
--- /dev/null
+++ b/include/linux/platform_data/pinctrl-single.h
@@ -0,0 +1,12 @@
+/**
+ * irq: optional wake-up interrupt
+ * rearm: optional soc specific rearm function
+ *
+ * Note that the irq and rearm setup should come from device
+ * tree except for omap where there are still some dependencies
+ * to the legacy PRM code.
+ */
+struct pcs_pdata {
+ int irq;
+ void (*rearm)(void);
+};
WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/6] pinctrl: single: Add support for auxdata
Date: Wed, 02 Oct 2013 22:42:26 -0700 [thread overview]
Message-ID: <20131003054226.8941.80570.stgit@localhost> (raw)
In-Reply-To: <20131003054104.8941.88857.stgit@localhost>
For omaps, we still have dependencies to the legacy code
for handling the PRM (Power Reset Management) interrupts,
and also for reconfiguring the io wake-up chain after
changes.
Let's pass the PRM interrupt and the rearm functions via
auxdata. Then when at some point we have a proper PRM
driver, we can get the interrupt via device tree and
set up the rearm function as exported function in the
PRM driver.
By using auxdata we can remove a dependency to the
wake-up events for converting omap3 to be device
tree only.
Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: Prakash Manjunathappa <prakash.pm@ti.com>
Cc: Roger Quadros <rogerq@ti.com>
Cc: Haojian Zhuang <haojian.zhuang@linaro.org>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-kernel at vger.kernel.org
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
drivers/pinctrl/pinctrl-single.c | 23 +++++++++++++++++++++++
include/linux/platform_data/pinctrl-single.h | 12 ++++++++++++
2 files changed, 35 insertions(+)
create mode 100644 include/linux/platform_data/pinctrl-single.h
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index b4ff055..e7092e8 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -28,6 +28,8 @@
#include <linux/pinctrl/pinmux.h>
#include <linux/pinctrl/pinconf-generic.h>
+#include <linux/platform_data/pinctrl-single.h>
+
#include "core.h"
#include "pinconf.h"
@@ -159,12 +161,14 @@ struct pcs_name {
* @irq: optional interrupt for the controller
* @irq_enable_mask: optional SoC specific interrupt enable mask
* @irq_status_mask: optional SoC specific interrupt status mask
+ * @rearm: optional SoC specific wake-up rearm function
*/
struct pcs_soc_data {
unsigned flags;
int irq;
unsigned irq_enable_mask;
unsigned irq_status_mask;
+ void (*rearm)(void);
};
/**
@@ -1622,6 +1626,8 @@ static void pcs_irq_unmask(struct irq_data *d)
struct pcs_soc_data *pcs_soc = irq_data_get_irq_chip_data(d);
pcs_irq_set(pcs_soc, d->irq, true);
+ if (pcs_soc->rearm)
+ pcs_soc->rearm();
}
/**
@@ -1672,6 +1678,11 @@ static int pcs_irq_handle(struct pcs_soc_data *pcs_soc)
}
}
+ /*
+ * For debugging on omaps, you may want to call pcs_soc->rearm()
+ * here to see wake-up interrupts during runtime also.
+ */
+
return count;
}
@@ -1838,6 +1849,7 @@ static int pcs_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
const struct of_device_id *match;
+ struct pcs_pdata *pdata;
struct resource *res;
struct pcs_device *pcs;
const struct pcs_soc_data *soc;
@@ -1952,6 +1964,17 @@ static int pcs_probe(struct platform_device *pdev)
if (pcs->socdata.irq)
pcs->flags |= PCS_FEAT_IRQ;
+ /* We still need auxdata for some omaps for PRM interrupts */
+ pdata = dev_get_platdata(&pdev->dev);
+ if (pdata) {
+ if (pdata->rearm)
+ pcs->socdata.rearm = pdata->rearm;
+ if (pdata->irq) {
+ pcs->socdata.irq = pdata->irq;
+ pcs->flags |= PCS_FEAT_IRQ;
+ }
+ }
+
if (PCS_HAS_IRQ) {
ret = pcs_irq_init_chained_handler(pcs, np);
if (ret < 0)
diff --git a/include/linux/platform_data/pinctrl-single.h b/include/linux/platform_data/pinctrl-single.h
new file mode 100644
index 0000000..72eacda
--- /dev/null
+++ b/include/linux/platform_data/pinctrl-single.h
@@ -0,0 +1,12 @@
+/**
+ * irq: optional wake-up interrupt
+ * rearm: optional soc specific rearm function
+ *
+ * Note that the irq and rearm setup should come from device
+ * tree except for omap where there are still some dependencies
+ * to the legacy PRM code.
+ */
+struct pcs_pdata {
+ int irq;
+ void (*rearm)(void);
+};
next prev parent reply other threads:[~2013-10-03 5:42 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-03 5:42 [PATCH 0/6] add support for omap wake-up interrupts via pinctrl-single, take2 Tony Lindgren
2013-10-03 5:42 ` Tony Lindgren
2013-10-03 5:42 ` [PATCH 1/6] ARM: dts: Fix pinctrl mask for omap3 Tony Lindgren
2013-10-03 5:42 ` Tony Lindgren
2013-10-03 5:42 ` [PATCH 2/6] ARM: OMAP2+: Add support for auxdata Tony Lindgren
2013-10-03 5:42 ` Tony Lindgren
2013-10-03 5:42 ` [PATCH 3/6] pinctrl: single: Prepare for supporting SoC specific features Tony Lindgren
2013-10-03 5:42 ` Tony Lindgren
2013-10-07 17:35 ` Tony Lindgren
2013-10-07 17:35 ` Tony Lindgren
2013-10-08 11:55 ` Linus Walleij
2013-10-08 11:55 ` Linus Walleij
2013-10-08 16:21 ` Tony Lindgren
2013-10-08 16:21 ` Tony Lindgren
2013-10-09 5:03 ` Haojian Zhuang
2013-10-09 5:03 ` Haojian Zhuang
2013-10-09 13:43 ` Linus Walleij
2013-10-09 13:43 ` Linus Walleij
2013-10-09 15:10 ` Tony Lindgren
2013-10-09 15:10 ` Tony Lindgren
2013-10-10 15:35 ` Linus Walleij
2013-10-10 15:35 ` Linus Walleij
2013-10-10 22:41 ` Tony Lindgren
2013-10-10 22:41 ` Tony Lindgren
2013-10-03 5:42 ` [PATCH 4/6] pinctrl: single: Add support for wake-up interrupts Tony Lindgren
2013-10-03 5:42 ` Tony Lindgren
2013-10-03 5:42 ` Tony Lindgren
2013-10-03 17:50 ` Tony Lindgren
2013-10-03 17:50 ` Tony Lindgren
2013-10-03 17:50 ` Tony Lindgren
2013-10-08 12:10 ` Linus Walleij
2013-10-08 12:10 ` Linus Walleij
2013-10-08 16:05 ` Tony Lindgren
2013-10-08 16:05 ` Tony Lindgren
2013-10-10 13:24 ` Roger Quadros
2013-10-10 13:24 ` Roger Quadros
2013-10-10 13:24 ` Roger Quadros
[not found] ` <5256AA7F.8030005-l0cyMroinI0@public.gmane.org>
2013-10-10 14:04 ` Linus Walleij
2013-10-10 14:04 ` Linus Walleij
2013-10-10 14:04 ` Linus Walleij
[not found] ` <CACRpkdZx5+OCcQytkpjd7_nz4hw6VXoXOS0LByKgJ8_cQjbA4g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-10-10 14:35 ` Roger Quadros
2013-10-10 14:35 ` Roger Quadros
2013-10-10 14:35 ` Roger Quadros
2013-10-10 15:32 ` Linus Walleij
2013-10-10 15:32 ` Linus Walleij
[not found] ` <CACRpkdY6NSR7gSc6=_nEr_BdTiEM0Mt9t4GoBSoP26ceVphDhA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-10-10 16:15 ` Tony Lindgren
2013-10-10 16:15 ` Tony Lindgren
2013-10-10 16:15 ` Tony Lindgren
2013-10-10 16:00 ` Tony Lindgren
2013-10-10 16:00 ` Tony Lindgren
2013-10-10 16:11 ` Linus Walleij
2013-10-10 16:11 ` Linus Walleij
2013-10-10 16:20 ` Tony Lindgren
2013-10-10 16:20 ` Tony Lindgren
2013-10-11 8:00 ` Linus Walleij
2013-10-11 8:00 ` Linus Walleij
2013-10-11 8:56 ` Roger Quadros
2013-10-11 8:56 ` Roger Quadros
2013-10-11 8:56 ` Roger Quadros
2013-10-11 10:32 ` Linus Walleij
2013-10-11 10:32 ` Linus Walleij
2013-10-11 15:43 ` Tony Lindgren
2013-10-11 15:43 ` Tony Lindgren
2013-10-11 15:56 ` Linus Walleij
2013-10-11 15:56 ` Linus Walleij
2013-10-11 16:01 ` Tony Lindgren
2013-10-11 16:01 ` Tony Lindgren
2013-10-18 7:40 ` Balaji T K
2013-10-18 7:40 ` Balaji T K
2013-10-18 15:35 ` Tony Lindgren
2013-10-18 15:35 ` Tony Lindgren
2013-10-18 15:59 ` Balaji T K
2013-10-18 15:59 ` Balaji T K
2013-10-18 15:59 ` Balaji T K
[not found] ` <52615AD4.7040306-l0cyMroinI0@public.gmane.org>
2013-10-18 16:06 ` Tony Lindgren
2013-10-18 16:06 ` Tony Lindgren
2013-10-18 16:06 ` Tony Lindgren
2013-10-11 15:36 ` Tony Lindgren
2013-10-11 15:36 ` Tony Lindgren
2013-10-11 15:43 ` Balaji T K
2013-10-11 15:43 ` Balaji T K
2013-10-11 15:43 ` Balaji T K
2013-10-11 15:48 ` Tony Lindgren
2013-10-11 15:48 ` Tony Lindgren
2013-10-10 16:23 ` Tony Lindgren
2013-10-10 16:23 ` Tony Lindgren
2013-10-11 8:45 ` Roger Quadros
2013-10-11 8:45 ` Roger Quadros
2013-10-11 8:49 ` Roger Quadros
2013-10-11 8:49 ` Roger Quadros
2013-10-11 8:49 ` Roger Quadros
[not found] ` <5257BB8C.5080001-l0cyMroinI0@public.gmane.org>
2013-10-11 13:59 ` Roger Quadros
2013-10-11 13:59 ` Roger Quadros
2013-10-11 13:59 ` Roger Quadros
[not found] ` <52580438.4040002-l0cyMroinI0@public.gmane.org>
2013-10-11 15:18 ` Tony Lindgren
2013-10-11 15:18 ` Tony Lindgren
2013-10-11 15:18 ` Tony Lindgren
2013-10-03 5:42 ` Tony Lindgren [this message]
2013-10-03 5:42 ` [PATCH 5/6] pinctrl: single: Add support for auxdata Tony Lindgren
2013-10-03 5:42 ` [PATCH 6/6] ARM: OMAP: Move DT wake-up event handling over to use pinctrl-single-omap Tony Lindgren
2013-10-03 5:42 ` Tony Lindgren
2013-10-10 21:47 ` [PATCH 0/6] add support for omap wake-up interrupts via pinctrl-single, take2 Kevin Hilman
2013-10-10 21:47 ` Kevin Hilman
2013-10-10 22:47 ` Tony Lindgren
2013-10-10 22:47 ` Tony Lindgren
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=20131003054226.8941.80570.stgit@localhost \
--to=tony@atomide.com \
--cc=grygorii.strashko@ti.com \
--cc=haojian.zhuang@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=peter.ujfalusi@ti.com \
--cc=prakash.pm@ti.com \
--cc=rogerq@ti.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: link
Be 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.