From: Pavel Machek <pavel@ucw.cz>
To: Tony Lindgren <tony@atomide.com>
Cc: pali.rohar@gmail.com, sre@kernel.org,
kernel list <linux-kernel@vger.kernel.org>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
linux-omap@vger.kernel.org, khilman@kernel.org,
aaro.koskinen@iki.fi, ivo.g.dimitrov.75@gmail.com,
patrikbachan@gmail.com, serge@hallyn.com
Subject: Re: N900 sleep mode (in 4.5-rc0, if that matters)
Date: Sat, 30 Jan 2016 23:15:09 +0100 [thread overview]
Message-ID: <20160130221509.GA28644@amd> (raw)
In-Reply-To: <20160130201452.GC30429@amd>
Hi!
> > > > ffdffe8d 48004a20 (fa004a20) cm_idlest1_core blocking bits: 00200072
> > > > 0000000d 48004a28 (fa004a28) cm_idlest3_core
> > > >
> > > > cm_idlest1_core changes periodicall often, to 00218072. The rest seems
> > > > constant.
> > >
> > > For cm_idlest1_core 42 is the answer.. Here you have bits 4 and 5
> > > blocking which is for OTG and it's PHY. That's a known issue with
> > > musb and setting pm_runtime_irq_safe() on the MUSB parent.
> > >
> > > If you do rmmod omap2430 and phy-twl4030usb chances are the LEDs will
> > > start going off assuming the McSPI bit goes low with WLAN idling.
> >
> > Ok, so I tried to compile kernel without omap2430/phy-twl4030usb
> > . That did not help. So I thought, ok, maybe rmmod is needed to
> > trigger some powersaving? But that is not exactly easy to do:
> >
> > pavel@n900:/my/tui/ofone$ sudo insmod /my/modules/omap2430.ko
> > pavel@n900:/my/tui/ofone$ sudo insmod /my/modules/phy-twl4030-usb.ko
> > pavel@n900:/my/tui/ofone$ sudo rmmod phy-twl4030-usb.ko
> > Error: Module phy_twl4030_usb is in use
> > pavel@n900:/my/tui/ofone$
> >
> > Any ideas what jumps to use the modules? Charger code?
>
> I tried a kernel without charger code, and no luck, rmmod fails the
> same way. dmesg says:
> [ 111.093078] wlan0: authenticated
> [ 111.097442] wlan0: associate with 06:27:22:f9:10:6a (try 1/3)
> [ 111.104553] wlan0: RX AssocResp from 06:27:22:f9:10:6a (capab=0x421
> status=0 aid=2)
> [ 111.104705] wlan0: AP has invalid WMM params (AIFSN=1 for ACI 2),
> will use 2
> [ 111.104736] wlan0: AP has invalid WMM params (AIFSN=1 for ACI 3),
> will use 2
> [ 111.256652] wlan0: associated
> [ 184.681427] HS USB OTG: no transceiver configured
> [ 184.681488] musb-hdrc musb-hdrc.0.auto: musb_init_controller failed
> with status -517
> [ 184.681976] HS USB OTG: no transceiver configured
> [ 184.682006] musb-hdrc musb-hdrc.0.auto: musb_init_controller failed
> with status -517
> [ 187.690338] twl4030_usb 48070000.i2c:twl@48:twl4030-usb:
> Initialized TWL4030 USB module
> [ 187.698303] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk
> combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
> [ 187.698333] musb-hdrc: MHDRC RTL version 1.400
> [ 187.698333] musb-hdrc: setup fifo_mode 4
> [ 187.698394] musb-hdrc: 28/31 max ep, 16384/16384 memory
> pavel@n900:/my/tui/ofone$
I added following hack to phy-twl4030-usb.c so that I could avoid
modules and module unloading problem. But still could not get it to
sleep :-(.
Pavel
diff --git a/drivers/phy/phy-twl4030-usb.c b/drivers/phy/phy-twl4030-usb.c
index 3a707dd..ac3761b 100644
--- a/drivers/phy/phy-twl4030-usb.c
+++ b/drivers/phy/phy-twl4030-usb.c
@@ -532,6 +532,43 @@ static ssize_t twl4030_usb_vbus_show(struct device *dev,
}
static DEVICE_ATTR(vbus, 0444, twl4030_usb_vbus_show, NULL);
+static ssize_t twl4030_test_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct twl4030_usb *twl = dev_get_drvdata(dev);
+ int ret = -EINVAL;
+
+ mutex_lock(&twl->lock);
+ ret = sprintf(buf, "%s\n", "hello, world");
+ mutex_unlock(&twl->lock);
+
+ return ret;
+}
+
+static int twl4030_shutdown(struct twl4030_usb *twl);
+
+static ssize_t twl4030_test_store(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t count)
+{
+ unsigned long tmp;
+
+ struct twl4030_usb *twl = dev_get_drvdata(dev);
+
+ mutex_lock(&twl->lock);
+ sscanf(buf, "%lX", &tmp);
+ printk("TWL HACK: tmp = 0x%lX\n", tmp);
+ mutex_unlock(&twl->lock);
+
+ if (tmp == 0xdead) {
+ printk("TWL HACK: killing hardware\n");
+ printk("TWL HACK: killing hardware = %d\n", twl4030_shutdown(twl));
+ }
+
+ return strnlen(buf, count);
+}
+
+static DEVICE_ATTR(test, 0664, twl4030_test_show, twl4030_test_store);
+
static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
{
struct twl4030_usb *twl = _twl;
@@ -710,6 +747,9 @@ static int twl4030_usb_probe(struct platform_device *pdev)
if (device_create_file(&pdev->dev, &dev_attr_vbus))
dev_warn(&pdev->dev, "could not create sysfs file\n");
+ if (device_create_file(&pdev->dev, &dev_attr_test))
+ dev_warn(&pdev->dev, "could not create sysfs file #2\n");
+
ATOMIC_INIT_NOTIFIER_HEAD(&twl->phy.notifier);
pm_runtime_use_autosuspend(&pdev->dev);
@@ -745,14 +785,12 @@ static int twl4030_usb_probe(struct platform_device *pdev)
return 0;
}
-static int twl4030_usb_remove(struct platform_device *pdev)
+static int twl4030_shutdown(struct twl4030_usb *twl)
{
- struct twl4030_usb *twl = platform_get_drvdata(pdev);
int val;
pm_runtime_get_sync(twl->dev);
cancel_delayed_work(&twl->id_workaround_work);
- device_remove_file(twl->dev, &dev_attr_vbus);
/* set transceiver mode to power on defaults */
twl4030_usb_set_mode(twl, -1);
@@ -779,6 +817,17 @@ static int twl4030_usb_remove(struct platform_device *pdev)
return 0;
}
+
+static int twl4030_usb_remove(struct platform_device *pdev)
+{
+ struct twl4030_usb *twl = platform_get_drvdata(pdev);
+
+ device_remove_file(twl->dev, &dev_attr_vbus);
+ device_remove_file(twl->dev, &dev_attr_test);
+
+ return twl4030_shutdown(twl);
+}
+
#ifdef CONFIG_OF
static const struct of_device_id twl4030_usb_id_table[] = {
{ .compatible = "ti,twl4030-usb" },
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
WARNING: multiple messages have this Message-ID (diff)
From: pavel@ucw.cz (Pavel Machek)
To: linux-arm-kernel@lists.infradead.org
Subject: N900 sleep mode (in 4.5-rc0, if that matters)
Date: Sat, 30 Jan 2016 23:15:09 +0100 [thread overview]
Message-ID: <20160130221509.GA28644@amd> (raw)
In-Reply-To: <20160130201452.GC30429@amd>
Hi!
> > > > ffdffe8d 48004a20 (fa004a20) cm_idlest1_core blocking bits: 00200072
> > > > 0000000d 48004a28 (fa004a28) cm_idlest3_core
> > > >
> > > > cm_idlest1_core changes periodicall often, to 00218072. The rest seems
> > > > constant.
> > >
> > > For cm_idlest1_core 42 is the answer.. Here you have bits 4 and 5
> > > blocking which is for OTG and it's PHY. That's a known issue with
> > > musb and setting pm_runtime_irq_safe() on the MUSB parent.
> > >
> > > If you do rmmod omap2430 and phy-twl4030usb chances are the LEDs will
> > > start going off assuming the McSPI bit goes low with WLAN idling.
> >
> > Ok, so I tried to compile kernel without omap2430/phy-twl4030usb
> > . That did not help. So I thought, ok, maybe rmmod is needed to
> > trigger some powersaving? But that is not exactly easy to do:
> >
> > pavel at n900:/my/tui/ofone$ sudo insmod /my/modules/omap2430.ko
> > pavel at n900:/my/tui/ofone$ sudo insmod /my/modules/phy-twl4030-usb.ko
> > pavel at n900:/my/tui/ofone$ sudo rmmod phy-twl4030-usb.ko
> > Error: Module phy_twl4030_usb is in use
> > pavel at n900:/my/tui/ofone$
> >
> > Any ideas what jumps to use the modules? Charger code?
>
> I tried a kernel without charger code, and no luck, rmmod fails the
> same way. dmesg says:
> [ 111.093078] wlan0: authenticated
> [ 111.097442] wlan0: associate with 06:27:22:f9:10:6a (try 1/3)
> [ 111.104553] wlan0: RX AssocResp from 06:27:22:f9:10:6a (capab=0x421
> status=0 aid=2)
> [ 111.104705] wlan0: AP has invalid WMM params (AIFSN=1 for ACI 2),
> will use 2
> [ 111.104736] wlan0: AP has invalid WMM params (AIFSN=1 for ACI 3),
> will use 2
> [ 111.256652] wlan0: associated
> [ 184.681427] HS USB OTG: no transceiver configured
> [ 184.681488] musb-hdrc musb-hdrc.0.auto: musb_init_controller failed
> with status -517
> [ 184.681976] HS USB OTG: no transceiver configured
> [ 184.682006] musb-hdrc musb-hdrc.0.auto: musb_init_controller failed
> with status -517
> [ 187.690338] twl4030_usb 48070000.i2c:twl at 48:twl4030-usb:
> Initialized TWL4030 USB module
> [ 187.698303] musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk
> combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
> [ 187.698333] musb-hdrc: MHDRC RTL version 1.400
> [ 187.698333] musb-hdrc: setup fifo_mode 4
> [ 187.698394] musb-hdrc: 28/31 max ep, 16384/16384 memory
> pavel at n900:/my/tui/ofone$
I added following hack to phy-twl4030-usb.c so that I could avoid
modules and module unloading problem. But still could not get it to
sleep :-(.
Pavel
diff --git a/drivers/phy/phy-twl4030-usb.c b/drivers/phy/phy-twl4030-usb.c
index 3a707dd..ac3761b 100644
--- a/drivers/phy/phy-twl4030-usb.c
+++ b/drivers/phy/phy-twl4030-usb.c
@@ -532,6 +532,43 @@ static ssize_t twl4030_usb_vbus_show(struct device *dev,
}
static DEVICE_ATTR(vbus, 0444, twl4030_usb_vbus_show, NULL);
+static ssize_t twl4030_test_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct twl4030_usb *twl = dev_get_drvdata(dev);
+ int ret = -EINVAL;
+
+ mutex_lock(&twl->lock);
+ ret = sprintf(buf, "%s\n", "hello, world");
+ mutex_unlock(&twl->lock);
+
+ return ret;
+}
+
+static int twl4030_shutdown(struct twl4030_usb *twl);
+
+static ssize_t twl4030_test_store(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t count)
+{
+ unsigned long tmp;
+
+ struct twl4030_usb *twl = dev_get_drvdata(dev);
+
+ mutex_lock(&twl->lock);
+ sscanf(buf, "%lX", &tmp);
+ printk("TWL HACK: tmp = 0x%lX\n", tmp);
+ mutex_unlock(&twl->lock);
+
+ if (tmp == 0xdead) {
+ printk("TWL HACK: killing hardware\n");
+ printk("TWL HACK: killing hardware = %d\n", twl4030_shutdown(twl));
+ }
+
+ return strnlen(buf, count);
+}
+
+static DEVICE_ATTR(test, 0664, twl4030_test_show, twl4030_test_store);
+
static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
{
struct twl4030_usb *twl = _twl;
@@ -710,6 +747,9 @@ static int twl4030_usb_probe(struct platform_device *pdev)
if (device_create_file(&pdev->dev, &dev_attr_vbus))
dev_warn(&pdev->dev, "could not create sysfs file\n");
+ if (device_create_file(&pdev->dev, &dev_attr_test))
+ dev_warn(&pdev->dev, "could not create sysfs file #2\n");
+
ATOMIC_INIT_NOTIFIER_HEAD(&twl->phy.notifier);
pm_runtime_use_autosuspend(&pdev->dev);
@@ -745,14 +785,12 @@ static int twl4030_usb_probe(struct platform_device *pdev)
return 0;
}
-static int twl4030_usb_remove(struct platform_device *pdev)
+static int twl4030_shutdown(struct twl4030_usb *twl)
{
- struct twl4030_usb *twl = platform_get_drvdata(pdev);
int val;
pm_runtime_get_sync(twl->dev);
cancel_delayed_work(&twl->id_workaround_work);
- device_remove_file(twl->dev, &dev_attr_vbus);
/* set transceiver mode to power on defaults */
twl4030_usb_set_mode(twl, -1);
@@ -779,6 +817,17 @@ static int twl4030_usb_remove(struct platform_device *pdev)
return 0;
}
+
+static int twl4030_usb_remove(struct platform_device *pdev)
+{
+ struct twl4030_usb *twl = platform_get_drvdata(pdev);
+
+ device_remove_file(twl->dev, &dev_attr_vbus);
+ device_remove_file(twl->dev, &dev_attr_test);
+
+ return twl4030_shutdown(twl);
+}
+
#ifdef CONFIG_OF
static const struct of_device_id twl4030_usb_id_table[] = {
{ .compatible = "ti,twl4030-usb" },
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
next prev parent reply other threads:[~2016-01-30 22:15 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-23 12:10 N900 sleep mode (in 4.5-rc0, if that matters) Pavel Machek
2016-01-23 12:10 ` Pavel Machek
2016-01-25 16:33 ` Tony Lindgren
2016-01-25 16:33 ` Tony Lindgren
2016-01-25 22:23 ` Pavel Machek
2016-01-25 22:23 ` Pavel Machek
2016-01-25 22:50 ` Tony Lindgren
2016-01-25 22:50 ` Tony Lindgren
2016-01-26 14:00 ` Pavel Machek
2016-01-26 14:00 ` Pavel Machek
2016-01-26 17:25 ` Tony Lindgren
2016-01-26 17:25 ` Tony Lindgren
2016-01-26 22:51 ` Tony Lindgren
2016-01-26 22:51 ` Tony Lindgren
2016-01-30 20:02 ` Pavel Machek
2016-01-30 20:02 ` Pavel Machek
2016-01-30 20:14 ` Pavel Machek
2016-01-30 20:14 ` Pavel Machek
2016-01-30 22:15 ` Pavel Machek [this message]
2016-01-30 22:15 ` Pavel Machek
2016-02-01 18:13 ` Tony Lindgren
2016-02-01 18:13 ` Tony Lindgren
2016-02-01 21:17 ` Pavel Machek
2016-02-01 21:17 ` Pavel Machek
2016-02-01 22:11 ` Tony Lindgren
2016-02-01 22:11 ` Tony Lindgren
2016-02-04 5:35 ` Tony Lindgren
2016-02-04 5:35 ` Tony Lindgren
2016-02-07 21:37 ` Pavel Machek
2016-02-07 21:37 ` Pavel Machek
2016-02-07 21:37 ` Pavel Machek
2016-02-08 8:51 ` Pali Rohár
2016-02-08 8:51 ` Pali Rohár
2016-02-07 21:23 ` Pavel Machek
2016-02-07 21:23 ` Pavel Machek
2016-02-09 17:24 ` Tony Lindgren
2016-02-09 17:24 ` Tony Lindgren
2016-02-09 17:38 ` Tony Lindgren
2016-02-09 17:38 ` Tony Lindgren
2016-03-20 8:38 ` Pavel Machek
2016-03-20 8:38 ` Pavel Machek
2016-02-11 1:08 ` Tony Lindgren
2016-02-11 1:08 ` Tony Lindgren
2016-02-11 1:08 ` Tony Lindgren
2016-03-23 14:37 ` Pavel Machek
2016-03-23 14:37 ` Pavel Machek
2016-03-20 8:33 ` Pavel Machek
2016-03-20 8:33 ` Pavel Machek
2016-03-23 12:38 ` Pavel Machek
2016-03-23 12:38 ` Pavel Machek
2016-03-30 19:12 ` Tony Lindgren
2016-03-30 19:12 ` Tony Lindgren
2016-04-04 11:09 ` Pali Rohár
2016-04-04 11:09 ` Pali Rohár
2016-04-04 22:31 ` Tony Lindgren
2016-04-04 22:31 ` Tony Lindgren
2016-04-04 21:30 ` Pavel Machek
2016-04-04 21:30 ` Pavel Machek
2016-04-04 22:07 ` Tony Lindgren
2016-04-04 22:07 ` Tony Lindgren
2016-04-05 10:09 ` Pavel Machek
2016-04-05 10:09 ` Pavel Machek
2016-04-05 13:17 ` Pavel Machek
2016-04-05 13:17 ` Pavel Machek
2016-04-05 14:22 ` 4.4: camera and unlock buttons produce tons of interrupts (was Re: N900 sleep mode) Pavel Machek
2016-04-05 14:22 ` Pavel Machek
2016-04-05 15:29 ` Tony Lindgren
2016-04-05 15:29 ` Tony Lindgren
2016-04-05 20:51 ` Pavel Machek
2016-04-05 20:51 ` Pavel Machek
2016-04-07 17:40 ` Tony Lindgren
2016-04-07 17:40 ` Tony Lindgren
2016-04-07 19:48 ` 4.4, 4.6: " Pavel Machek
2016-04-07 19:48 ` Pavel Machek
2016-04-07 21:32 ` Tony Lindgren
2016-04-07 21:32 ` Tony Lindgren
2016-04-07 23:01 ` Pavel Machek
2016-04-07 23:01 ` Pavel Machek
2016-04-07 23:41 ` Tony Lindgren
2016-04-07 23:41 ` Tony Lindgren
2016-04-08 9:19 ` Pavel Machek
2016-04-08 9:19 ` Pavel Machek
2016-04-11 8:27 ` 4.6-rc2: regression with omap video and lockdep (was Re: 4.4, 4.6: camera and unlock buttons produce tons of interrupts (was Re: N900 sleep mode)) Pavel Machek
2016-04-11 8:27 ` Pavel Machek
2016-04-11 9:30 ` 4.4, 4.6: camera and unlock buttons produce tons of interrupts (was Re: N900 sleep mode) Pavel Machek
2016-04-11 9:30 ` Pavel Machek
2016-04-11 9:41 ` Pavel Machek
2016-04-11 9:41 ` Pavel Machek
2016-04-11 21:10 ` Tony Lindgren
2016-04-11 21:10 ` Tony Lindgren
2016-04-12 12:16 ` Nokia N900 retention mode in v4.6, camera buttons fun Pavel Machek
2016-04-12 12:30 ` Pavel Machek
2016-04-12 12:30 ` Pavel Machek
2016-04-12 16:30 ` Tony Lindgren
2016-04-12 16:30 ` Tony Lindgren
2016-04-13 5:52 ` Tomi Valkeinen
2016-04-13 5:52 ` Tomi Valkeinen
2016-04-13 5:52 ` Tomi Valkeinen
2016-04-13 15:15 ` Tony Lindgren
2016-04-13 15:15 ` Tony Lindgren
2016-04-17 17:55 ` Pavel Machek
2016-04-17 17:55 ` Pavel Machek
2016-04-18 23:47 ` Tony Lindgren
2016-04-18 23:47 ` Tony Lindgren
2016-04-21 13:04 ` Pali Rohár
2016-04-21 13:04 ` Pali Rohár
2016-04-21 21:28 ` Pavel Machek
2016-04-21 21:28 ` Pavel Machek
2016-04-22 7:05 ` Pali Rohár
2016-04-22 7:05 ` Pali Rohár
2016-04-29 20:06 ` Sebastian Reichel
2016-04-29 20:06 ` Sebastian Reichel
2016-05-01 8:52 ` Pavel Machek
2016-05-01 8:52 ` Pavel Machek
2016-05-01 15:48 ` Sebastian Reichel
2016-05-01 15:48 ` Sebastian Reichel
2016-05-02 20:12 ` Sebastian Reichel
2016-05-02 20:12 ` Sebastian Reichel
2016-05-28 11:09 ` Pavel Machek
2016-05-28 11:09 ` Pavel Machek
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=20160130221509.GA28644@amd \
--to=pavel@ucw.cz \
--cc=aaro.koskinen@iki.fi \
--cc=ivo.g.dimitrov.75@gmail.com \
--cc=khilman@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=pali.rohar@gmail.com \
--cc=patrikbachan@gmail.com \
--cc=serge@hallyn.com \
--cc=sre@kernel.org \
--cc=tony@atomide.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.