public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] MFD: MAX8997 Driver Update
@ 2011-08-18  7:37 MyungJoo Ham
  2011-08-18  7:37 ` [PATCH v2 1/2] MFD: MAX8997: IRQ Handling Bugfix MyungJoo Ham
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: MyungJoo Ham @ 2011-08-18  7:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: Samuel Ortiz, kyungmin.park, myungjoo.ham

This patchset does:

1. Bugfix on IRQ handling
	The current version does not initialize IRQ handling part properly.
	This patch adds max8997-irq init and allows to handle interrupts
	correctly.

2. Suspend-to-RAM Wakeup Source
	The current version is missing wakeup-source feature.

Changes from v1:
- Removed a patch from the patchset.
(v2 is basically a "resubmit" without the undesired part)

MyungJoo Ham (2):
  MFD: MAX8997: IRQ Handling Bugfix
  MFD: MAX8997: Support Wake-up from Suspend

 drivers/mfd/max8997.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

-- 
1.7.4.1


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

* [PATCH v2 1/2] MFD: MAX8997: IRQ Handling Bugfix
  2011-08-18  7:37 [PATCH v2 0/2] MFD: MAX8997 Driver Update MyungJoo Ham
@ 2011-08-18  7:37 ` MyungJoo Ham
  2011-08-18  7:37 ` [PATCH v2 2/2] MFD: MAX8997: Support Wake-up from Suspend MyungJoo Ham
  2011-08-22 14:41 ` [PATCH v2 0/2] MFD: MAX8997 Driver Update Samuel Ortiz
  2 siblings, 0 replies; 7+ messages in thread
From: MyungJoo Ham @ 2011-08-18  7:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: Samuel Ortiz, kyungmin.park, myungjoo.ham

Required platform information is not handed to max8997-irq.c properly.
This patch enables to hand over such information to max8997-irq.c so
that max8997-irq functions properly.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 drivers/mfd/max8997.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/mfd/max8997.c b/drivers/mfd/max8997.c
index 5d1fca0..f83103b 100644
--- a/drivers/mfd/max8997.c
+++ b/drivers/mfd/max8997.c
@@ -135,10 +135,13 @@ static int max8997_i2c_probe(struct i2c_client *i2c,
 	max8997->dev = &i2c->dev;
 	max8997->i2c = i2c;
 	max8997->type = id->driver_data;
+	max8997->irq = i2c->irq;
 
 	if (!pdata)
 		goto err;
 
+	max8997->irq_base = pdata->irq_base;
+	max8997->ono = pdata->ono;
 	max8997->wakeup = pdata->wakeup;
 
 	mutex_init(&max8997->iolock);
@@ -152,6 +155,8 @@ static int max8997_i2c_probe(struct i2c_client *i2c,
 
 	pm_runtime_set_active(max8997->dev);
 
+	max8997_irq_init(max8997);
+
 	mfd_add_devices(max8997->dev, -1, max8997_devs,
 			ARRAY_SIZE(max8997_devs),
 			NULL, 0);
-- 
1.7.4.1


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

* [PATCH v2 2/2] MFD: MAX8997: Support Wake-up from Suspend
  2011-08-18  7:37 [PATCH v2 0/2] MFD: MAX8997 Driver Update MyungJoo Ham
  2011-08-18  7:37 ` [PATCH v2 1/2] MFD: MAX8997: IRQ Handling Bugfix MyungJoo Ham
@ 2011-08-18  7:37 ` MyungJoo Ham
  2011-08-19  0:59   ` Mark Brown
  2011-08-22 14:41 ` [PATCH v2 0/2] MFD: MAX8997 Driver Update Samuel Ortiz
  2 siblings, 1 reply; 7+ messages in thread
From: MyungJoo Ham @ 2011-08-18  7:37 UTC (permalink / raw)
  To: linux-kernel; +Cc: Samuel Ortiz, kyungmin.park, myungjoo.ham

- Support wake-up from suspend-to-ram.
- Handle pending interrupt after a resume.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 drivers/mfd/max8997.c |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/drivers/mfd/max8997.c b/drivers/mfd/max8997.c
index f83103b..4ae42c6 100644
--- a/drivers/mfd/max8997.c
+++ b/drivers/mfd/max8997.c
@@ -23,6 +23,7 @@
 
 #include <linux/slab.h>
 #include <linux/i2c.h>
+#include <linux/interrupt.h>
 #include <linux/pm_runtime.h>
 #include <linux/mutex.h>
 #include <linux/mfd/core.h>
@@ -398,7 +399,29 @@ static int max8997_restore(struct device *dev)
 	return 0;
 }
 
+static int max8997_suspend(struct device *dev)
+{
+	struct i2c_client *i2c = container_of(dev, struct i2c_client, dev);
+	struct max8997_dev *max8997 = i2c_get_clientdata(i2c);
+
+	if (max8997->wakeup && max8997->irq)
+		irq_set_irq_wake(max8997->irq, 1);
+	return 0;
+}
+
+static int max8997_resume(struct device *dev)
+{
+	struct i2c_client *i2c = container_of(dev, struct i2c_client, dev);
+	struct max8997_dev *max8997 = i2c_get_clientdata(i2c);
+
+	if (max8997->wakeup && max8997->irq)
+		irq_set_irq_wake(max8997->irq, 0);
+	return max8997_irq_resume(max8997);
+}
+
 const struct dev_pm_ops max8997_pm = {
+	.suspend = max8997_suspend,
+	.resume = max8997_resume,
 	.freeze = max8997_freeze,
 	.restore = max8997_restore,
 };
-- 
1.7.4.1


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

* Re: [PATCH v2 2/2] MFD: MAX8997: Support Wake-up from Suspend
  2011-08-18  7:37 ` [PATCH v2 2/2] MFD: MAX8997: Support Wake-up from Suspend MyungJoo Ham
@ 2011-08-19  0:59   ` Mark Brown
  2011-08-19  5:38     ` MyungJoo Ham
  2011-08-19  5:39     ` [PATCH v2 2/2-resubmit] " MyungJoo Ham
  0 siblings, 2 replies; 7+ messages in thread
From: Mark Brown @ 2011-08-19  0:59 UTC (permalink / raw)
  To: MyungJoo Ham; +Cc: linux-kernel, Samuel Ortiz, kyungmin.park, myungjoo.ham

On Thu, Aug 18, 2011 at 04:37:36PM +0900, MyungJoo Ham wrote:

> +	if (max8997->wakeup && max8997->irq)
> +		irq_set_irq_wake(max8997->irq, 1);

There's supposed to be userspace control of this stuff (see
device_may_wake_up() and friends) though that can always be added in a
second pass).

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

* Re: [PATCH v2 2/2] MFD: MAX8997: Support Wake-up from Suspend
  2011-08-19  0:59   ` Mark Brown
@ 2011-08-19  5:38     ` MyungJoo Ham
  2011-08-19  5:39     ` [PATCH v2 2/2-resubmit] " MyungJoo Ham
  1 sibling, 0 replies; 7+ messages in thread
From: MyungJoo Ham @ 2011-08-19  5:38 UTC (permalink / raw)
  To: Mark Brown; +Cc: linux-kernel, Samuel Ortiz, kyungmin.park

On Fri, Aug 19, 2011 at 9:59 AM, Mark Brown
<broonie@opensource.wolfsonmicro.com> wrote:
> On Thu, Aug 18, 2011 at 04:37:36PM +0900, MyungJoo Ham wrote:
>
>> +     if (max8997->wakeup && max8997->irq)
>> +             irq_set_irq_wake(max8997->irq, 1);
>
> There's supposed to be userspace control of this stuff (see
> device_may_wake_up() and friends) though that can always be added in a
> second pass).
>

Ok, I'm resubmitting this part of the patchset. Thanks.



Cheers.

MyungJoo

-- 
MyungJoo Ham (함명주), Ph.D.
Mobile Software Platform Lab,
Digital Media and Communications (DMC) Business
Samsung Electronics
cell: 82-10-6714-2858

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

* [PATCH v2 2/2-resubmit] MFD: MAX8997: Support Wake-up from Suspend
  2011-08-19  0:59   ` Mark Brown
  2011-08-19  5:38     ` MyungJoo Ham
@ 2011-08-19  5:39     ` MyungJoo Ham
  1 sibling, 0 replies; 7+ messages in thread
From: MyungJoo Ham @ 2011-08-19  5:39 UTC (permalink / raw)
  To: linux-kernel; +Cc: Samuel Ortiz, kyungmin.park, myungjoo.ham

- Support wake-up from suspend-to-ram.
- Handle pending interrupt after a resume.
- If pdata->wakeup is enabled, by default, the device is assumed to be
capable of wakeup (the interrupt pin is connected to a wakeup-source GPIO)
and may wakeup the system (MAX8997 has a power button input pin).

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
Resubmitted to use wakeup interfaces as commented by Mark Brown.

---
 drivers/mfd/max8997.c               |   27 ++++++++++++++++++++++++++-
 include/linux/mfd/max8997-private.h |    1 -
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/drivers/mfd/max8997.c b/drivers/mfd/max8997.c
index f83103b..dc58750 100644
--- a/drivers/mfd/max8997.c
+++ b/drivers/mfd/max8997.c
@@ -23,6 +23,7 @@
 
 #include <linux/slab.h>
 #include <linux/i2c.h>
+#include <linux/interrupt.h>
 #include <linux/pm_runtime.h>
 #include <linux/mutex.h>
 #include <linux/mfd/core.h>
@@ -142,7 +143,6 @@ static int max8997_i2c_probe(struct i2c_client *i2c,
 
 	max8997->irq_base = pdata->irq_base;
 	max8997->ono = pdata->ono;
-	max8997->wakeup = pdata->wakeup;
 
 	mutex_init(&max8997->iolock);
 
@@ -169,6 +169,9 @@ static int max8997_i2c_probe(struct i2c_client *i2c,
 	if (ret < 0)
 		goto err_mfd;
 
+	/* MAX8997 has a power button input. */
+	device_init_wakeup(max8997->dev, pdata->wakeup);
+
 	return ret;
 
 err_mfd:
@@ -398,7 +401,29 @@ static int max8997_restore(struct device *dev)
 	return 0;
 }
 
+static int max8997_suspend(struct device *dev)
+{
+	struct i2c_client *i2c = container_of(dev, struct i2c_client, dev);
+	struct max8997_dev *max8997 = i2c_get_clientdata(i2c);
+
+	if (device_may_wakeup(dev))
+		irq_set_irq_wake(max8997->irq, 1);
+	return 0;
+}
+
+static int max8997_resume(struct device *dev)
+{
+	struct i2c_client *i2c = container_of(dev, struct i2c_client, dev);
+	struct max8997_dev *max8997 = i2c_get_clientdata(i2c);
+
+	if (device_may_wakeup(dev))
+		irq_set_irq_wake(max8997->irq, 0);
+	return max8997_irq_resume(max8997);
+}
+
 const struct dev_pm_ops max8997_pm = {
+	.suspend = max8997_suspend,
+	.resume = max8997_resume,
 	.freeze = max8997_freeze,
 	.restore = max8997_restore,
 };
diff --git a/include/linux/mfd/max8997-private.h b/include/linux/mfd/max8997-private.h
index 5ff2400..3f4deb6 100644
--- a/include/linux/mfd/max8997-private.h
+++ b/include/linux/mfd/max8997-private.h
@@ -326,7 +326,6 @@ struct max8997_dev {
 	int irq;
 	int ono;
 	int irq_base;
-	bool wakeup;
 	struct mutex irqlock;
 	int irq_masks_cur[MAX8997_IRQ_GROUP_NR];
 	int irq_masks_cache[MAX8997_IRQ_GROUP_NR];
-- 
1.7.4.1


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

* Re: [PATCH v2 0/2] MFD: MAX8997 Driver Update
  2011-08-18  7:37 [PATCH v2 0/2] MFD: MAX8997 Driver Update MyungJoo Ham
  2011-08-18  7:37 ` [PATCH v2 1/2] MFD: MAX8997: IRQ Handling Bugfix MyungJoo Ham
  2011-08-18  7:37 ` [PATCH v2 2/2] MFD: MAX8997: Support Wake-up from Suspend MyungJoo Ham
@ 2011-08-22 14:41 ` Samuel Ortiz
  2 siblings, 0 replies; 7+ messages in thread
From: Samuel Ortiz @ 2011-08-22 14:41 UTC (permalink / raw)
  To: MyungJoo Ham; +Cc: linux-kernel, kyungmin.park, myungjoo.ham

Hi,

On Thu, Aug 18, 2011 at 04:37:34PM +0900, MyungJoo Ham wrote:
> This patchset does:
> 
> 1. Bugfix on IRQ handling
> 	The current version does not initialize IRQ handling part properly.
> 	This patch adds max8997-irq init and allows to handle interrupts
> 	correctly.
> 
> 2. Suspend-to-RAM Wakeup Source
> 	The current version is missing wakeup-source feature.
> 
> Changes from v1:
> - Removed a patch from the patchset.
> (v2 is basically a "resubmit" without the undesired part)
> 
> MyungJoo Ham (2):
>   MFD: MAX8997: IRQ Handling Bugfix
>   MFD: MAX8997: Support Wake-up from Suspend
Thanks, both patches (I took patch #2 second version) applied.

Cheers,
Samuel.

-- 
Intel Open Source Technology Centre
http://oss.intel.com/

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

end of thread, other threads:[~2011-08-22 14:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-18  7:37 [PATCH v2 0/2] MFD: MAX8997 Driver Update MyungJoo Ham
2011-08-18  7:37 ` [PATCH v2 1/2] MFD: MAX8997: IRQ Handling Bugfix MyungJoo Ham
2011-08-18  7:37 ` [PATCH v2 2/2] MFD: MAX8997: Support Wake-up from Suspend MyungJoo Ham
2011-08-19  0:59   ` Mark Brown
2011-08-19  5:38     ` MyungJoo Ham
2011-08-19  5:39     ` [PATCH v2 2/2-resubmit] " MyungJoo Ham
2011-08-22 14:41 ` [PATCH v2 0/2] MFD: MAX8997 Driver Update Samuel Ortiz

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