[PATCH 2/2] twl: usb: Add the resume() and suspend() methods to twl4030-usb.c

2009-02-25 Thread Kim Kyuwon
From: Minkyu Kang mk7.k...@samsung.com

The MPU module can be waked up by the unexpected USB
interrupt(HSUSB_MC_NINT). For instance, if the MUSB is working as
peripheral mode and connected to a host PC, it can never enter the low
power mode due to interrupts from the host PC. This patch added the
feature that a board specific file can determines that TWL4030
supplies the USB power or not in the low power mode. Disabling the USB
power may save the power consumption.

Signed-off-by: Minkyu Kang mk7.k...@samsung.com
Signed-off-by: Kim Kyuwon chamm...@gmail.com
---
 drivers/usb/otg/twl4030-usb.c |   25 +
 include/linux/i2c/twl4030.h   |1 +
 2 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c
index 416e441..0d65a8d 100644
--- a/drivers/usb/otg/twl4030-usb.c
+++ b/drivers/usb/otg/twl4030-usb.c
@@ -256,6 +256,7 @@ struct twl4030_usb {
u8  linkstat;
u8  asleep;
boolirq_enabled;
+   boolsuspend_enabled;
 };

 /* internal define on top of container_of */
@@ -618,6 +619,7 @@ static int __init twl4030_usb_probe(struct
platform_device *pdev)
twl-otg.set_suspend= twl4030_set_suspend;
twl-usb_mode   = pdata-usb_mode;
twl-asleep = 1;
+   twl-suspend_enabled= pdata-suspend_enabled;

/* init spinlock for workqueue */
spin_lock_init(twl-lock);
@@ -694,9 +696,32 @@ static int __exit twl4030_usb_remove(struct
platform_device *pdev)
return 0;
 }

+int twl4030_usb_suspend(struct platform_device *pdev, pm_message_t state)
+{
+   struct twl4030_usb *twl = platform_get_drvdata(pdev);
+
+   if (!twl-suspend_enabled)
+   return 0;
+
+   twl-otg.set_suspend(twl-otg, 1);
+
+   return 0;
+}
+
+int twl4030_usb_resume(struct platform_device *pdev)
+{
+   struct twl4030_usb *twl = platform_get_drvdata(pdev);
+
+   twl-otg.set_suspend(twl-otg, 0);
+
+   return 0;
+}
+
 static struct platform_driver twl4030_usb_driver = {
.probe  = twl4030_usb_probe,
.remove = __exit_p(twl4030_usb_remove),
+   .suspend= twl4030_usb_suspend,
+   .resume = twl4030_usb_resume,
.driver = {
.name   = twl4030_usb,
.owner  = THIS_MODULE,
diff --git a/include/linux/i2c/twl4030.h b/include/linux/i2c/twl4030.h
index c89d33b..0b12509 100644
--- a/include/linux/i2c/twl4030.h
+++ b/include/linux/i2c/twl4030.h
@@ -325,6 +325,7 @@ enum twl4030_usb_mode {

 struct twl4030_usb_data {
enum twl4030_usb_mode   usb_mode;
+   bool suspend_enabled;
 };

 struct twl4030_ins {
-- 
1.5.2.5


-- 
Kyuwon
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/2] twl: usb: Add the resume() and suspend() methods to twl4030-usb.c

2009-02-25 Thread Felipe Balbi
On Wed, Feb 25, 2009 at 12:55:41PM +0100, ext Kim Kyuwon wrote:
 +int twl4030_usb_suspend(struct platform_device *pdev, pm_message_t state)
 +{
 +   struct twl4030_usb *twl = platform_get_drvdata(pdev);
 +
 +   if (!twl-suspend_enabled)
 +   return 0;
 +
 +   twl-otg.set_suspend(twl-otg, 1);

otg_set_suspend(otg, 1);

 +
 +   return 0;
 +}
 +
 +int twl4030_usb_resume(struct platform_device *pdev)
 +{
 +   struct twl4030_usb *twl = platform_get_drvdata(pdev);
 +
 +   twl-otg.set_suspend(twl-otg, 0);

otg_set_suspend(otg, 0);

-- 
balbi
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/2] twl: usb: Add the resume() and suspend() methods to twl4030-usb.c (re)

2009-02-25 Thread Minkyu Kang
The MPU module can be waked up by the unexpected USB
interrupt(HSUSB_MC_NINT). For instance, if the MUSB is working as
peripheral mode and connected to a host PC, it can never enter the low
power mode due to interrupts from the host PC. This patch added the
feature that a board specific file can determines that TWL4030
supplies the USB power or not in the low power mode. Disabling the USB
power may save the power consumption.

Signed-off-by: Minkyu Kang mk7.k...@samsung.com
Signed-off-by: Kim Kyuwon chamm...@gmail.com
---
 drivers/usb/otg/twl4030-usb.c |   25 +
 include/linux/i2c/twl4030.h   |1 +
 2 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c
index 416e441..b725be2 100644
--- a/drivers/usb/otg/twl4030-usb.c
+++ b/drivers/usb/otg/twl4030-usb.c
@@ -256,6 +256,7 @@ struct twl4030_usb {
u8  linkstat;
u8  asleep;
boolirq_enabled;
+   boolsuspend_enabled;
 };
 
 /* internal define on top of container_of */
@@ -618,6 +619,7 @@ static int __init twl4030_usb_probe(struct platform_device 
*pdev)
twl-otg.set_suspend= twl4030_set_suspend;
twl-usb_mode   = pdata-usb_mode;
twl-asleep = 1;
+   twl-suspend_enabled= pdata-suspend_enabled;
 
/* init spinlock for workqueue */
spin_lock_init(twl-lock);
@@ -694,9 +696,32 @@ static int __exit twl4030_usb_remove(struct 
platform_device *pdev)
return 0;
 }
 
+int twl4030_usb_suspend(struct platform_device *pdev, pm_message_t state)
+{
+   struct twl4030_usb *twl = platform_get_drvdata(pdev);
+
+   if (!twl-suspend_enabled)
+   return 0;
+
+   otg_set_suspend(twl-otg, 1);
+
+   return 0;
+}
+
+int twl4030_usb_resume(struct platform_device *pdev)
+{
+   struct twl4030_usb *twl = platform_get_drvdata(pdev);
+
+   otg_set_suspend(twl-otg, 0);
+
+   return 0;
+}
+
 static struct platform_driver twl4030_usb_driver = {
.probe  = twl4030_usb_probe,
.remove = __exit_p(twl4030_usb_remove),
+   .suspend= twl4030_usb_suspend,
+   .resume = twl4030_usb_resume,
.driver = {
.name   = twl4030_usb,
.owner  = THIS_MODULE,
diff --git a/include/linux/i2c/twl4030.h b/include/linux/i2c/twl4030.h
index c89d33b..0b12509 100644
--- a/include/linux/i2c/twl4030.h
+++ b/include/linux/i2c/twl4030.h
@@ -325,6 +325,7 @@ enum twl4030_usb_mode {
 
 struct twl4030_usb_data {
enum twl4030_usb_mode   usb_mode;
+   bool suspend_enabled;
 };
 
 struct twl4030_ins {
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/2] twl: usb: Add the resume() and suspend() methods to twl4030-usb.c (re)

2009-02-25 Thread Felipe Balbi
On Thu, Feb 26, 2009 at 08:54:38AM +0900, Minkyu Kang wrote:
 The MPU module can be waked up by the unexpected USB
 interrupt(HSUSB_MC_NINT). For instance, if the MUSB is working as
 peripheral mode and connected to a host PC, it can never enter the low
 power mode due to interrupts from the host PC. This patch added the
 feature that a board specific file can determines that TWL4030
 supplies the USB power or not in the low power mode. Disabling the USB
 power may save the power consumption.
 
 Signed-off-by: Minkyu Kang mk7.k...@samsung.com
 Signed-off-by: Kim Kyuwon chamm...@gmail.com
 ---
  drivers/usb/otg/twl4030-usb.c |   25 +
  include/linux/i2c/twl4030.h   |1 +
  2 files changed, 26 insertions(+), 0 deletions(-)
 
 diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c
 index 416e441..b725be2 100644
 --- a/drivers/usb/otg/twl4030-usb.c
 +++ b/drivers/usb/otg/twl4030-usb.c
 @@ -256,6 +256,7 @@ struct twl4030_usb {
   u8  linkstat;
   u8  asleep;
   boolirq_enabled;
 + boolsuspend_enabled;

before we ack it and let it go through, could you please explain a bit
more the necessity of this ?

I mean, what you're doing here is that you would allow twl4030 to enter
low power mode even though we're connected to host side, meaning we
would never get awaken by the host side, right ?

Is that really wanted ? I mean, how would you then wake the device ?

-- 
balbi
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 2/2] twl: usb: Add the resume() and suspend() methods to twl4030-usb.c (re)

2009-02-25 Thread Kang, Minkyu
 I mean, what you're doing here is that you would allow twl4030 to enter
 low power mode even though we're connected to host side, meaning we
 would never get awaken by the host side, right ?

Yes, right.
If usb is connected to host side, our system never sleep because of usb
interrupts by host.
We don't want this.
We want to enter sleep mode quietly without any disturbance even if usb is
connected to host side.(And we need to reduce power consumption)
This patch gives option for these reasons.
If you don't want this option, please set suspend_enabled = false in the
board specific configuration.

 Is that really wanted ? I mean, how would you then wake the device ?

Our system is waked when get wake-up interrupts such as IO pad wake-up
events and other wake-up events from peripheral devices.
When it wakes up devices, usb device will be waked too.

---
Minkyu Kang.

-Original Message-
From: Felipe Balbi [mailto:m...@felipebalbi.com] 
Sent: Thursday, February 26, 2009 9:12 AM
To: Minkyu Kang
Cc: Kim Kyuwon; m...@felipebalbi.com; linux-...@vger.kernel.org; OMAP; David
Brownell; q1@samsung.com
Subject: Re: [PATCH 2/2] twl: usb: Add the resume() and suspend() methods to
twl4030-usb.c (re)

On Thu, Feb 26, 2009 at 08:54:38AM +0900, Minkyu Kang wrote:
 The MPU module can be waked up by the unexpected USB
 interrupt(HSUSB_MC_NINT). For instance, if the MUSB is working as
 peripheral mode and connected to a host PC, it can never enter the low
 power mode due to interrupts from the host PC. This patch added the
 feature that a board specific file can determines that TWL4030
 supplies the USB power or not in the low power mode. Disabling the USB
 power may save the power consumption.
 
 Signed-off-by: Minkyu Kang mk7.k...@samsung.com
 Signed-off-by: Kim Kyuwon chamm...@gmail.com
 ---
  drivers/usb/otg/twl4030-usb.c |   25 +
  include/linux/i2c/twl4030.h   |1 +
  2 files changed, 26 insertions(+), 0 deletions(-)
 
 diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c
 index 416e441..b725be2 100644
 --- a/drivers/usb/otg/twl4030-usb.c
 +++ b/drivers/usb/otg/twl4030-usb.c
 @@ -256,6 +256,7 @@ struct twl4030_usb {
   u8  linkstat;
   u8  asleep;
   boolirq_enabled;
 + boolsuspend_enabled;

before we ack it and let it go through, could you please explain a bit
more the necessity of this ?

I mean, what you're doing here is that you would allow twl4030 to enter
low power mode even though we're connected to host side, meaning we
would never get awaken by the host side, right ?

Is that really wanted ? I mean, how would you then wake the device ?

-- 
balbi

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html