From: Florian Vaussard <florian.vaussard@epfl.ch>
To: Tony Lindgren <tony@atomide.com>
Cc: Andreas Fenkart <afenkart@gmail.com>,
Chris Ball <chris@printf.net>,
Grant Likely <grant.likely@secretlab.ca>,
Felipe Balbi <balbi@ti.com>, Balaji T K <balajitk@ti.com>,
Andreas Mueller <schnitzeltony@googlemail.com>,
Sebastian Reichel <sre@kernel.org>,
zonque@gmail.com, galak@codeaurora.org,
linux-doc@vger.kernel.org, linux-mmc@vger.kernel.org,
linux-omap@vger.kernel.org
Subject: Re: [PATCH v14 1/6] mmc: omap_hsmmc: Enable SDIO interrupt
Date: Wed, 27 Aug 2014 09:53:19 +0200 [thread overview]
Message-ID: <53FD8E6F.1060003@epfl.ch> (raw)
In-Reply-To: <20140824184102.GF17254@atomide.com>
Hi Tony, Andreas,
On 08/24/2014 08:41 PM, Tony Lindgren wrote:
> * Florian Vaussard <florian.vaussard@epfl.ch> [140824 01:29]:
>> --- a/arch/arm/boot/dts/omap3-overo-base.dtsi
>> +++ b/arch/arm/boot/dts/omap3-overo-base.dtsi
>> @@ -119,7 +119,7 @@
>> OMAP3_CORE1_IOPAD(0x2158, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk.sdmmc2_clk */
>> OMAP3_CORE1_IOPAD(0x215a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd.sdmmc2_cmd */
>> OMAP3_CORE1_IOPAD(0x215c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0.sdmmc2_dat0 */
>> - OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1.sdmmc2_dat1 */
>> + OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | PIN_OFF_WAKEUPENABLE | MUX_MODE0) /* sdmmc2_dat1.sdmmc2_dat1 */
>> OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2.sdmmc2_dat2 */
>> OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3.sdmmc2_dat3 */
>> >;
>
> No need to have PIN_OFF_WAKEUPENABLE any longer here, it gets
> enabled automatically after you do request_irq on it.
>
Good to know.
>> @@ -195,6 +195,9 @@
>> vmmc_aux-supply = <&w3cbw003c_wifi_nreset>;
>> bus-width = <4>;
>> cap-sdio-irq;
>> +
>> + interrupts-extended = <&intc 86>,
>> + <&gpio5 5 GPIO_ACTIVE_HIGH>; /* gpio_133 (mmc2.dat1) */
>> non-removable;
>> };
>
> The second interrupt here just needs to be &omap3_pmx_core
> (or &omap3_pmx_core2 depending where it's located) with the
> offset to the dat1 pin from it's padconf area. For example,
> on mmc3 it should be:
>
> interrupts-extended = <&intc 94 &omap3_pmx_core2 0x46>;
>
> So you need to look it up from the TRM to figure out the right
> offset for mmc2.
>
So now I have:
interrupts-extended = <
&intc 86
&omap3_pmx_core OMAP_IOPAD_OFFSET(0x215e, 0x2030)>;
I checked that I have the right offset in the .dtb for mmc2_dat according
to the TRM (0x12E). But the wake-up path seems to be not working any more.
I get several timeouts and a BUG() inside libertas SDIO driver.
[ 16.286407] libertas_sdio mmc0:0001:1 (unregistered net_device): 00:19:88:15:b7:c0, fw 9.70.3p24, cap 0x00000303
[ 16.292938] libertas_sdio mmc0:0001:1 wlan0: Marvell WLAN 802.11 adapter
[ 16.302703] cfg80211: Calling CRDA to update world regulatory domain
[ 24.758880] libertas_sdio mmc0:0001:1 wlan0: command 0x0006 timed out
[ 24.759582] libertas_sdio mmc0:0001:1 wlan0: Timeout submitting command 0x0006
[ 24.761962] libertas_sdio mmc0:0001:1 wlan0: PREP_CMD: command 0x0006 failed: -110
[ 24.762084] libertas_sdio: Resetting card...
[ 29.768890] libertas_sdio mmc0:0001:1 wlan0: command 0x0006 timed out
[ 29.769378] libertas_sdio mmc0:0001:1 wlan0: Timeout submitting command 0x0006
[ 29.769531] libertas_sdio mmc0:0001:1 wlan0: PREP_CMD: command 0x0006 failed: -110
[ 29.770538] ------------[ cut here ]------------
[ 29.775421] kernel BUG at drivers/net/wireless/libertas/if_sdio.c:226!
[ 29.782287] Internal error: Oops - BUG: 0 [#1] PREEMPT ARM
[ 29.788055] Modules linked in:
[ 29.791290] CPU: 0 PID: 471 Comm: ksdioirqd/mmc0 Not tainted 3.16.1mobovero-00014-g9e1602f-dirty #690
[ 29.800994] task: dd81c480 ti: def48000 task.ti: def48000
[ 29.806671] PC is at if_sdio_interrupt+0x1b4/0x330
[ 29.811737] LR is at if_sdio_interrupt+0x194/0x330
[ 29.816772] pc : [<c0428e68>] lr : [<c0428e48>] psr: 200e0093
[ 29.816772] sp : def49ed0 ip : def49ed0 fp : def49efc
[ 29.828826] r10: 00000000 r9 : 00000000 r8 : dece0024
[ 29.834320] r7 : 0000016e r6 : 00000001 r5 : 800e0013 r4 : decc43c0
[ 29.841186] r3 : 0000051b r2 : 000003b3 r1 : 00000001 r0 : 00000001
[ 29.848052] Flags: nzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
[ 29.855834] Control: 10c5387d Table: 9edd4019 DAC: 00000015
[ 29.861877] Process ksdioirqd/mmc0 (pid: 471, stack limit = 0xdef48240)
[ 29.868835] Stack: (0xdef49ed0 to 0xdef4a000)
[ 29.873413] 9ec0: 00000000 00000000 c04d82b0 00000001
[ 29.882019] 9ee0: df4c9000 dec7f400 00000000 00000001 def49f34 def49f00 c04d010c c0428cc0
[ 29.890624] 9f00: 00100100 00200200 def49f34 dec7f400 def48000 dec7f400 def48000 7fffffff
[ 29.899230] 9f20: 00000000 00000001 def49f64 def49f38 c04d02f8 c04d00d4 c04d024c 00000001
[ 29.907836] 9f40: 00000000 dd9bda40 00000000 dec7f400 c04d024c 00000000 def49fac def49f68
[ 29.916442] 9f60: c005c724 c04d0258 def49f94 00000000 c0066e50 dec7f400 00000000 def49f7c
[ 29.925048] 9f80: def49f7c 00000000 def49f88 def49f88 dd9bda40 c005c644 00000000 00000000
[ 29.933654] 9fa0: 00000000 def49fb0 c000f1a8 c005c650 00000000 00000000 00000000 00000000
[ 29.942260] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 29.950866] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[ 29.959503] [<c0428e68>] (if_sdio_interrupt) from [<c04d010c>] (process_sdio_pending_irqs+0x44/0x184)
[ 29.969207] [<c04d010c>] (process_sdio_pending_irqs) from [<c04d02f8>] (sdio_irq_thread+0xac/0x1d8)
[ 29.978729] [<c04d02f8>] (sdio_irq_thread) from [<c005c724>] (kthread+0xe0/0xf4)
[ 29.986511] [<c005c724>] (kthread) from [<c000f1a8>] (ret_from_fork+0x14/0x20)
[ 29.994140] Code: e283300a e7942103 e3520000 0a000000 (e7f001f2)
[ 30.000549] ---[ end trace 7fc618cf4aa9adbc ]---
[ 30.005401] note: ksdioirqd/mmc0[471] exited with preempt_count 1
[ 30.280792] init: tty1 main process (849) killed by TERM signal
[ 32.778930] libertas_sdio mmc0:0001:1 wlan0: command 0x0010 timed out
[ 32.785827] libertas_sdio mmc0:0001:1 wlan0: Timeout submitting command 0x0010
>> diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi
>> index b2891a9..1347bc9 100644
>> --- a/arch/arm/boot/dts/omap3.dtsi
>> +++ b/arch/arm/boot/dts/omap3.dtsi
>> @@ -417,7 +417,6 @@
>> mmc2: mmc@480b4000 {
>> compatible = "ti,omap3-hsmmc";
>> reg = <0x480b4000 0x200>;
>> - interrupts = <86>;
>> ti,hwmods = "mmc2";
>> dmas = <&sdma 47>, <&sdma 48>;
>> dma-names = "tx", "rx";
>
> I think there's a patch now in mainline tree that by default tries
> to use interrupts-extended first, so this may not need to be
> changed.
>
I based my tests on 3.16.1, this is why I had to do this.
I just tried with 3.17-rc2, same result.
Unfortunately, I do not have a lot of time to debug this issue for
now, but if you have ideas, I would be happy to test.
Regards
Florian
next prev parent reply other threads:[~2014-08-27 7:53 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-29 8:27 [PATCH v14 0/6] mmc: omap_hsmmc: Enable SDIO IRQ Andreas Fenkart
2014-05-29 8:28 ` [PATCH v14 1/6] mmc: omap_hsmmc: Enable SDIO interrupt Andreas Fenkart
2014-08-24 8:26 ` Florian Vaussard
2014-08-24 17:46 ` Andreas Fenkart
2014-08-27 7:57 ` Florian Vaussard
2014-08-24 18:41 ` Tony Lindgren
2014-08-27 7:53 ` Florian Vaussard [this message]
2014-05-29 8:28 ` [PATCH v14 2/6] mmc: omap_hsmmc: Extend debugfs by SDIO IRQ handling, runtime state Andreas Fenkart
2014-05-29 13:38 ` Balaji T K
2014-05-29 8:28 ` [PATCH v14 3/6] mmc: omap_hsmmc: enable wakeup event for sdio OMAP4 Andreas Fenkart
2014-05-29 8:28 ` [PATCH v14 4/6] mmc: omap_hsmmc: abort runtime suspend if pending sdio irq detected Andreas Fenkart
2014-05-29 8:28 ` [PATCH v14 5/6] mmc: omap_hsmmc: switch default/idle pinctrl states in runtime hooks Andreas Fenkart
2014-05-29 8:28 ` [PATCH v14 6/6] mmc: omap_hsmmc: Pin remux workaround to support SDIO interrupt on AM335x Andreas Fenkart
2014-05-29 13:41 ` Balaji T K
2014-06-02 22:38 ` Tony Lindgren
2014-06-16 9:26 ` [PATCH v14 0/6] mmc: omap_hsmmc: Enable SDIO IRQ Ulf Hansson
2014-08-06 6:18 ` Dmitry Lifshitz
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=53FD8E6F.1060003@epfl.ch \
--to=florian.vaussard@epfl.ch \
--cc=afenkart@gmail.com \
--cc=balajitk@ti.com \
--cc=balbi@ti.com \
--cc=chris@printf.net \
--cc=galak@codeaurora.org \
--cc=grant.likely@secretlab.ca \
--cc=linux-doc@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=schnitzeltony@googlemail.com \
--cc=sre@kernel.org \
--cc=tony@atomide.com \
--cc=zonque@gmail.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).