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
next prev parent reply other threads:[~2016-01-30 22:15 UTC|newest]
Thread overview: 59+ 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-25 16:33 ` Tony Lindgren
2016-01-25 22:23 ` Pavel Machek
2016-01-25 22:50 ` Tony Lindgren
2016-01-26 14:00 ` Pavel Machek
2016-01-26 17:25 ` Tony Lindgren
2016-01-26 22:51 ` Tony Lindgren
2016-01-30 20:02 ` Pavel Machek
2016-01-30 20:14 ` Pavel Machek
2016-01-30 22:15 ` Pavel Machek [this message]
2016-02-01 18:13 ` Tony Lindgren
2016-02-01 21:17 ` Pavel Machek
2016-02-01 22:11 ` Tony Lindgren
2016-02-04 5:35 ` Tony Lindgren
2016-02-07 21:37 ` Pavel Machek
2016-02-08 8:51 ` Pali Rohár
2016-02-07 21:23 ` Pavel Machek
2016-02-09 17:24 ` Tony Lindgren
2016-02-09 17:38 ` Tony Lindgren
2016-03-20 8:38 ` Pavel Machek
2016-02-11 1:08 ` Tony Lindgren
2016-03-23 14:37 ` Pavel Machek
2016-03-20 8:33 ` Pavel Machek
2016-03-23 12:38 ` Pavel Machek
2016-03-30 19:12 ` Tony Lindgren
2016-04-04 11:09 ` Pali Rohár
2016-04-04 22:31 ` Tony Lindgren
2016-04-04 21:30 ` Pavel Machek
2016-04-04 22:07 ` Tony Lindgren
2016-04-05 10:09 ` 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 15:29 ` Tony Lindgren
2016-04-05 20:51 ` Pavel Machek
2016-04-07 17:40 ` Tony Lindgren
2016-04-07 19:48 ` 4.4, 4.6: " Pavel Machek
2016-04-07 21:32 ` Tony Lindgren
2016-04-07 23:01 ` Pavel Machek
2016-04-07 23:41 ` Tony Lindgren
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 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:41 ` Pavel Machek
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 16:30 ` Tony Lindgren
2016-04-13 5:52 ` Tomi Valkeinen
2016-04-13 15:15 ` Tony Lindgren
2016-04-17 17:55 ` Pavel Machek
2016-04-18 23:47 ` Tony Lindgren
2016-04-21 13:04 ` Pali Rohár
2016-04-21 21:28 ` Pavel Machek
2016-04-22 7:05 ` Pali Rohár
2016-04-29 20:06 ` Sebastian Reichel
2016-05-01 8:52 ` Pavel Machek
2016-05-01 15:48 ` Sebastian Reichel
2016-05-02 20:12 ` Sebastian Reichel
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).