From: Arnd Hannemann <arnd@arndnet.de>
To: Magnus Damm <magnus.damm@gmail.com>
Cc: linux-mmc@vger.kernel.org, linux-sh@vger.kernel.org,
g.liakhovetski@gmx.de, Ian Molton <ian@mnementh.co.uk>,
Samuel Ortiz <sameo@linux.intel.com>
Subject: Re: [PATCH 1/4] mmc: tmio: Implement SDIO IRQ
Date: Tue, 07 Dec 2010 10:08:03 -0500 [thread overview]
Message-ID: <4CFE4DD3.8050302@arndnet.de> (raw)
In-Reply-To: <AANLkTinzGuZjyqLqKJEz6t_CShBUfusobAs-8Md=ix4E@mail.gmail.com>
Hi Magnus,
Am 07.12.2010 09:37, schrieb Magnus Damm:
> On Tue, Dec 7, 2010 at 9:22 PM, Arnd Hannemann <arnd@arndnet.de> wrote:
>> Am 07.12.2010 00:39, schrieb Magnus Damm:
>>> On Tue, Dec 7, 2010 at 2:35 AM, Arnd Hannemann <arnd@arndnet.de> wrote:
>>>> This patch implements SDIO IRQ support for mfds which
>>>> announce the MMC_CAP_SDIO_IRQ capability for tmio_mmc.
>>>> Tested with a b43-based wireless SDIO card and sh_mobile_sdhi.
>>>>
>>>> This patch applies on top of:
>>>> mmc: tmio_mmc: allow multi-element scatter-gather lists
>>>> mmc: tmio_mmc: fix PIO fallback on DMA descriptor allocation failure
>>>> mmc: tmio: merge the private header into the driver
>>>> mmc: tmio: implement a bounce buffer for unaligned DMA
>>>>
>>>> Signed-off-by: Arnd Hannemann <arnd@arndnet.de>
>>>> CC: Ian Molton <ian@mnementh.co.uk>
>>>> CC: Samuel Ortiz <sameo@linux.intel.com>
>>>> CC: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
>>>> ---
>>>> drivers/mmc/host/tmio_mmc.c | 54 ++++++++++++++++++++++++++++++++++++++++++-
>>>> 1 files changed, 53 insertions(+), 1 deletions(-)
>>>
>>> Thanks for your work on this!
>>>
>>> Just curious, did you test this change in 4-bit mode and/or 1-bit
>>> mode? I believe that 1-bit mode support is rather simple, but 4-bit
>>> mode requires toggling between the IRQ and DATA function which happen
>>> to be using the same pin. It looks like the current code only deals
>>> with 1-bit mode - perhaps 4-bit mode isn't supported by the b43
>>> driver?
>>
>> Yes, I tested this in 1-bit and 4-bit mode. At least the card claims it is using it,
>> it says "width=2". I also read about the toggling, and expected to do
>> something fancy, but when tests where successful I came to the conclusion
>> that the controller does the toggling for us. Do you believe otherwise?
>
> Yes, I believe something more advanced is needed for 4-bit mode. But I
> don't really have any proof. I just know that I spent quite some time
> trying to get it to work and ended up staying in polling mode because
> enabling real IRQs seemed to require too much time. This was before
> some interrupt ack fixes so things may have improved since then. I
> also remember both testing on b43 hardware and AR6002.
There was also this nasty DMA issue Guennadi fixed recently...
>
> There are a couple of things against us at this point:
>
> a) b43 hardware may not be enough to test this
Ok, do you still have that AR6002 and could test with that by any chance?
> are you really sure 4-bit mode is enabled? =)
> is the b43 driver doing multi-block data transfers? i believe IRQs
> work differently for multi-block data transfers and single-block.
I'm pretty sure its using 4-bit mode, from the probe of the card:
mmc1: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 25000000Hz busmode 2 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 25000000Hz busmode 2 powermode 2 cs 0 Vdd 21 width 2 timing 0
Its doing probably not doing any multi-block data transfers, but I'll
recheck. Actually most data transfers are very small.
> b) we don't have any public data sheet for the SDHI hardware block
>
> how good is that?
>
> c) the simplified SDIO spec is not exactly full of details:
>
> 8.1.3
> Interrupt Period Definition
> This section is not included in the Simplified Specification.
> 8.1.4
> Interrupt Period at the Data Block Gap in 4-bit SD Mode (Optional)
> This section is not included in the Simplified Specification.
> 8.1.5
> Inhibited Interrupts (Removed Section)
> This section is not included in the Simplified Specification.
> 8.1.6
> End of Interrupt Cycles
> This section is not included in the Simplified Specification.
Yes I read this too, but this is of course only interface
between host and card, so we may be just lucky that the controller
hides these details from us.
>>> Not sure how the Linux MMC stack supports 4-bit IRQs, but the S4MI bit
>>> in the CCCR should specify if it's allowed to enable interrupts in
>>> between data transfers or not. Perhaps that is something we need to
>>> deal with in the driver? Or maybe the framework needs to be extended?
>>
>> I quick grep shows that nobody seems to care about this bit until now...
>
> Yeah, that seems to be the case. I guess it's a non-issue then. =)
>
> I'll try to find my AR6002 card, maybe that will shed some light...
Yeah, that would be really cool.
Thanks,
Arnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Hannemann <arnd@arndnet.de>
To: Magnus Damm <magnus.damm@gmail.com>
Cc: linux-mmc@vger.kernel.org, linux-sh@vger.kernel.org,
g.liakhovetski@gmx.de, Ian Molton <ian@mnementh.co.uk>,
Samuel Ortiz <sameo@linux.intel.com>
Subject: Re: [PATCH 1/4] mmc: tmio: Implement SDIO IRQ
Date: Tue, 07 Dec 2010 15:08:03 +0000 [thread overview]
Message-ID: <4CFE4DD3.8050302@arndnet.de> (raw)
In-Reply-To: <AANLkTinzGuZjyqLqKJEz6t_CShBUfusobAs-8Md=ix4E@mail.gmail.com>
Hi Magnus,
Am 07.12.2010 09:37, schrieb Magnus Damm:
> On Tue, Dec 7, 2010 at 9:22 PM, Arnd Hannemann <arnd@arndnet.de> wrote:
>> Am 07.12.2010 00:39, schrieb Magnus Damm:
>>> On Tue, Dec 7, 2010 at 2:35 AM, Arnd Hannemann <arnd@arndnet.de> wrote:
>>>> This patch implements SDIO IRQ support for mfds which
>>>> announce the MMC_CAP_SDIO_IRQ capability for tmio_mmc.
>>>> Tested with a b43-based wireless SDIO card and sh_mobile_sdhi.
>>>>
>>>> This patch applies on top of:
>>>> mmc: tmio_mmc: allow multi-element scatter-gather lists
>>>> mmc: tmio_mmc: fix PIO fallback on DMA descriptor allocation failure
>>>> mmc: tmio: merge the private header into the driver
>>>> mmc: tmio: implement a bounce buffer for unaligned DMA
>>>>
>>>> Signed-off-by: Arnd Hannemann <arnd@arndnet.de>
>>>> CC: Ian Molton <ian@mnementh.co.uk>
>>>> CC: Samuel Ortiz <sameo@linux.intel.com>
>>>> CC: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
>>>> ---
>>>> drivers/mmc/host/tmio_mmc.c | 54 ++++++++++++++++++++++++++++++++++++++++++-
>>>> 1 files changed, 53 insertions(+), 1 deletions(-)
>>>
>>> Thanks for your work on this!
>>>
>>> Just curious, did you test this change in 4-bit mode and/or 1-bit
>>> mode? I believe that 1-bit mode support is rather simple, but 4-bit
>>> mode requires toggling between the IRQ and DATA function which happen
>>> to be using the same pin. It looks like the current code only deals
>>> with 1-bit mode - perhaps 4-bit mode isn't supported by the b43
>>> driver?
>>
>> Yes, I tested this in 1-bit and 4-bit mode. At least the card claims it is using it,
>> it says "width=2". I also read about the toggling, and expected to do
>> something fancy, but when tests where successful I came to the conclusion
>> that the controller does the toggling for us. Do you believe otherwise?
>
> Yes, I believe something more advanced is needed for 4-bit mode. But I
> don't really have any proof. I just know that I spent quite some time
> trying to get it to work and ended up staying in polling mode because
> enabling real IRQs seemed to require too much time. This was before
> some interrupt ack fixes so things may have improved since then. I
> also remember both testing on b43 hardware and AR6002.
There was also this nasty DMA issue Guennadi fixed recently...
>
> There are a couple of things against us at this point:
>
> a) b43 hardware may not be enough to test this
Ok, do you still have that AR6002 and could test with that by any chance?
> are you really sure 4-bit mode is enabled? =)
> is the b43 driver doing multi-block data transfers? i believe IRQs
> work differently for multi-block data transfers and single-block.
I'm pretty sure its using 4-bit mode, from the probe of the card:
mmc1: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 25000000Hz busmode 2 powermode 2 cs 0 Vdd 21 width 0 timing 0
mmc1: clock 25000000Hz busmode 2 powermode 2 cs 0 Vdd 21 width 2 timing 0
Its doing probably not doing any multi-block data transfers, but I'll
recheck. Actually most data transfers are very small.
> b) we don't have any public data sheet for the SDHI hardware block
>
> how good is that?
>
> c) the simplified SDIO spec is not exactly full of details:
>
> 8.1.3
> Interrupt Period Definition
> This section is not included in the Simplified Specification.
> 8.1.4
> Interrupt Period at the Data Block Gap in 4-bit SD Mode (Optional)
> This section is not included in the Simplified Specification.
> 8.1.5
> Inhibited Interrupts (Removed Section)
> This section is not included in the Simplified Specification.
> 8.1.6
> End of Interrupt Cycles
> This section is not included in the Simplified Specification.
Yes I read this too, but this is of course only interface
between host and card, so we may be just lucky that the controller
hides these details from us.
>>> Not sure how the Linux MMC stack supports 4-bit IRQs, but the S4MI bit
>>> in the CCCR should specify if it's allowed to enable interrupts in
>>> between data transfers or not. Perhaps that is something we need to
>>> deal with in the driver? Or maybe the framework needs to be extended?
>>
>> I quick grep shows that nobody seems to care about this bit until now...
>
> Yeah, that seems to be the case. I guess it's a non-issue then. =)
>
> I'll try to find my AR6002 card, maybe that will shed some light...
Yeah, that would be really cool.
Thanks,
Arnd
next prev parent reply other threads:[~2010-12-07 15:08 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-06 17:35 [PATCH 1/4] mmc: tmio: Implement SDIO IRQ Arnd Hannemann
2010-12-06 17:35 ` Arnd Hannemann
2010-12-06 17:35 ` [PATCH 2/4] ARM: mach-shmobile: sh7372 Enable SDIO IRQs Arnd Hannemann
2010-12-06 17:35 ` Arnd Hannemann
2010-12-06 17:35 ` [PATCH 3/4] sh: sh7724 " Arnd Hannemann
2010-12-06 17:35 ` Arnd Hannemann
2010-12-06 17:35 ` [PATCH 4/4] [RFC] sh: sh7722 " Arnd Hannemann
2010-12-06 17:35 ` Arnd Hannemann
2010-12-07 5:39 ` [PATCH 1/4] mmc: tmio: Implement SDIO IRQ Magnus Damm
2010-12-07 5:39 ` Magnus Damm
2010-12-07 12:22 ` Arnd Hannemann
2010-12-07 12:22 ` Arnd Hannemann
2010-12-07 14:37 ` Magnus Damm
2010-12-07 14:37 ` Magnus Damm
2010-12-07 15:08 ` Arnd Hannemann [this message]
2010-12-07 15:08 ` Arnd Hannemann
2010-12-14 15:44 ` Magnus Damm
2010-12-14 15:44 ` Magnus Damm
2010-12-20 3:58 ` Magnus Damm
2010-12-20 3:58 ` Magnus Damm
2010-12-20 15:51 ` Arnd Hannemann
2010-12-20 15:51 ` Arnd Hannemann
2010-12-20 15:53 ` [PATCH 0/6 v2] mmc: tmio: Add SDIO IRQ support Arnd Hannemann
2010-12-22 13:54 ` Magnus Damm
2010-12-22 13:54 ` Magnus Damm
2010-12-23 10:45 ` [PATCH] [RFC] sh: sh7723 / ap325rxa enable SDIO IRQs Arnd Hannemann
2010-12-28 10:01 ` Magnus Damm
2010-12-28 10:01 ` Magnus Damm
2010-12-20 15:53 ` [PATCH 1/6 v2] mmc: tmio: implement SDIO IRQ Arnd Hannemann
2010-12-20 15:53 ` [PATCH 2/6 v2] mfd: sh_mobile_sdhi: activate SDIO IRQ for tmio_mmc Arnd Hannemann
2010-12-24 11:03 ` Samuel Ortiz
2010-12-24 11:03 ` [PATCH 2/6 v2] mfd: sh_mobile_sdhi: activate SDIO IRQ for Samuel Ortiz
2010-12-20 15:53 ` [PATCH 3/6 v2] mmc: tmio: disable IRQs early in remove Arnd Hannemann
2010-12-20 15:53 ` [PATCH 4/6 v2] ARM: mach-shmobile: sh7372 Enable SDIO IRQs Arnd Hannemann
2010-12-20 15:53 ` [PATCH 5/6 v2] sh: sh7724 " Arnd Hannemann
2010-12-20 15:53 ` [PATCH 6/6 v2] [RFC] sh: sh7722 " Arnd Hannemann
2010-12-23 10:42 ` [PATCH 6/6 v3] " Arnd Hannemann
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=4CFE4DD3.8050302@arndnet.de \
--to=arnd@arndnet.de \
--cc=g.liakhovetski@gmx.de \
--cc=ian@mnementh.co.uk \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=sameo@linux.intel.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.