From: Adrian Hunter <adrian.hunter@nokia.com>
To: Nicolas Pitre <nico@fluxnic.net>
Cc: "Quadros Roger (Nokia-MS/Helsinki)" <roger.quadros@nokia.com>,
Ohad Ben-Cohen <ohad@wizery.com>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
Chikkature Rajashekar Madhusudhan <madhu.cr@ti.com>,
"Coelho Luciano (Nokia-MS/Helsinki)" <Luciano.Coelho@nokia.com>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
San Mehat <san@google.com>
Subject: Re: [PATCH 11/15] wireless: wl1271: introduce platform device support
Date: Tue, 06 Jul 2010 22:51:03 +0300 [thread overview]
Message-ID: <4C338927.5020400@nokia.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1007061316010.6020@xanadu.home>
Nicolas Pitre wrote:
> On Tue, 6 Jul 2010, Roger Quadros wrote:
>
>> On 07/06/2010 03:53 PM, ext Ohad Ben-Cohen wrote:
>>> Hi Roger,
>>>
>>> On Tue, Jul 6, 2010 at 1:35 PM, Roger Quadros<roger.quadros@nokia.com>
>>> wrote:
>>>> My point is that shouldn't this be handled by SDIO core?
>>> Care to explain what you mean / give a code example ?
>> If the Power enable GPIO can be treated as SDIO slot supply (i.e. vmmc), then
>> the SDIO/MMC core should tackle it, just like it deals with supply for slots
>> with removable cards.
>
> Exact.
>
>>> You need card detect events in order to trigger card& sdio function
>>> initialization and removals.
>
> Why would you trigger function initialization and removal? Just to turn
> off power? That's a bit like pulling off the battery from your laptop
> when you want to suspend it. There is a better way to go about things.
>
>>> Please share any alternative approach you may be thinking on.
>> OK, this is how I see it.
>>
>> - Treat the non-removable card as non-removable. So no need to do card detect
>> emulation.
>>
>> - Treat the GPIO power enable on wl1271 as VMMC supply. Use fixed regulator
>> framework to define this regulator & supply. Even though you mention that it
>> is not actually a supply, it fits well in the fixed supply framework.
>>
>> - When the host controller is enumerated, the mmc core will power up the slot,
>> find the sdio card, and probe the function driver (i.e. wl1271_sdio).
>>
>> - if interface is not in use, the function driver must release the sdio host,
>> and this should eventually disable the vmmc supply.
>>
>> - Whenever the wlan interface must be brought up, wl1271_sdio, can claim the
>> sdio host. this will cause the vmmc supply to be enabled, for as long as the
>> interface is up.
>>
>> Does this address all issues?
>
> This is mostly all good, except that claiming/releasing the SDIO host is
> about access to the bus. It must be claimed right before doing any IO,
> and released right after that, even when the card is expected to remain
> powered. This is not the proper place to hook power control.
>
> Another function pair would be needed instead, which would do almost
> like the suspend/resume code is already doing. Something like:
>
> /*
> * Indicate to the core SDIO layer that we're not requiring that the
> * function remain powered. If all functions for the card are in the
> * same "no power" state, then the host controller can remove power from
> * the card. Note: the function driver must preserve hardware states if
> * necessary.
> */
> int sdio_release_power(struct sdio_func *func);
>
> /*
> * Indicate to the core SDIO layer that we want power back for this
> * SDIO function. The power may or may not actually have been removed
> * since last call to sdio_release_power(), so the function driver must
> * not assume any preserved state at the hardware level and re-perform
> * all the necessary hardware config. This function returns 0 when
> * power is actually restored, or some error code if this cannot be
> * achieved. One error reason might be that the card is no longer
> * available on the bus (was removed while powered down and card
> * detection didn't trigger yet).
> */
> int sdio_claim_power(struct sdio_func *func);
>
> That's it. When the network interface is down and the hardware is not
> needed, you call sdio_release_power(). When the request to activate the
> network interface is received, you call sdio_claim_power() and configure
> the hardware appropriately. If sdio_claim_power() returns an error,
> then you just return an error to the network request, and eventually the
> driver's remove method will be called if this is indeed because the card
> was removed.
>
> In the core SDIO code, this is almost identical to a suspend/resume
> request, except that the request comes from the function driver instead
> of the core MMC code.
For eMMC in omap_hsmmc, this is all done via claim_host / release_host
which call ->enable() / ->disable() methods. omap_hsmmc makes use of
mmc_power_restore_host() which calls host->bus_ops->power_restore()
which is not implemented for SDIO, but for MMC and SD it reinitializes
the card.
Set omap2_hsmmc_info mmc[x] {.nonremovable=true, .power_saving=true} and
implement host->bus_ops->power_restore() for SDIO, then the power will
go off 9 seconds after sdio_release_host() is called. Then tweak omap_hsmmc
so that it doesn't wait 9 seconds for the SDIO case
>
>
> Nicolas
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
WARNING: multiple messages have this Message-ID (diff)
From: adrian.hunter@nokia.com (Adrian Hunter)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 11/15] wireless: wl1271: introduce platform device support
Date: Tue, 06 Jul 2010 22:51:03 +0300 [thread overview]
Message-ID: <4C338927.5020400@nokia.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1007061316010.6020@xanadu.home>
Nicolas Pitre wrote:
> On Tue, 6 Jul 2010, Roger Quadros wrote:
>
>> On 07/06/2010 03:53 PM, ext Ohad Ben-Cohen wrote:
>>> Hi Roger,
>>>
>>> On Tue, Jul 6, 2010 at 1:35 PM, Roger Quadros<roger.quadros@nokia.com>
>>> wrote:
>>>> My point is that shouldn't this be handled by SDIO core?
>>> Care to explain what you mean / give a code example ?
>> If the Power enable GPIO can be treated as SDIO slot supply (i.e. vmmc), then
>> the SDIO/MMC core should tackle it, just like it deals with supply for slots
>> with removable cards.
>
> Exact.
>
>>> You need card detect events in order to trigger card& sdio function
>>> initialization and removals.
>
> Why would you trigger function initialization and removal? Just to turn
> off power? That's a bit like pulling off the battery from your laptop
> when you want to suspend it. There is a better way to go about things.
>
>>> Please share any alternative approach you may be thinking on.
>> OK, this is how I see it.
>>
>> - Treat the non-removable card as non-removable. So no need to do card detect
>> emulation.
>>
>> - Treat the GPIO power enable on wl1271 as VMMC supply. Use fixed regulator
>> framework to define this regulator & supply. Even though you mention that it
>> is not actually a supply, it fits well in the fixed supply framework.
>>
>> - When the host controller is enumerated, the mmc core will power up the slot,
>> find the sdio card, and probe the function driver (i.e. wl1271_sdio).
>>
>> - if interface is not in use, the function driver must release the sdio host,
>> and this should eventually disable the vmmc supply.
>>
>> - Whenever the wlan interface must be brought up, wl1271_sdio, can claim the
>> sdio host. this will cause the vmmc supply to be enabled, for as long as the
>> interface is up.
>>
>> Does this address all issues?
>
> This is mostly all good, except that claiming/releasing the SDIO host is
> about access to the bus. It must be claimed right before doing any IO,
> and released right after that, even when the card is expected to remain
> powered. This is not the proper place to hook power control.
>
> Another function pair would be needed instead, which would do almost
> like the suspend/resume code is already doing. Something like:
>
> /*
> * Indicate to the core SDIO layer that we're not requiring that the
> * function remain powered. If all functions for the card are in the
> * same "no power" state, then the host controller can remove power from
> * the card. Note: the function driver must preserve hardware states if
> * necessary.
> */
> int sdio_release_power(struct sdio_func *func);
>
> /*
> * Indicate to the core SDIO layer that we want power back for this
> * SDIO function. The power may or may not actually have been removed
> * since last call to sdio_release_power(), so the function driver must
> * not assume any preserved state at the hardware level and re-perform
> * all the necessary hardware config. This function returns 0 when
> * power is actually restored, or some error code if this cannot be
> * achieved. One error reason might be that the card is no longer
> * available on the bus (was removed while powered down and card
> * detection didn't trigger yet).
> */
> int sdio_claim_power(struct sdio_func *func);
>
> That's it. When the network interface is down and the hardware is not
> needed, you call sdio_release_power(). When the request to activate the
> network interface is received, you call sdio_claim_power() and configure
> the hardware appropriately. If sdio_claim_power() returns an error,
> then you just return an error to the network request, and eventually the
> driver's remove method will be called if this is indeed because the card
> was removed.
>
> In the core SDIO code, this is almost identical to a suspend/resume
> request, except that the request comes from the function driver instead
> of the core MMC code.
For eMMC in omap_hsmmc, this is all done via claim_host / release_host
which call ->enable() / ->disable() methods. omap_hsmmc makes use of
mmc_power_restore_host() which calls host->bus_ops->power_restore()
which is not implemented for SDIO, but for MMC and SD it reinitializes
the card.
Set omap2_hsmmc_info mmc[x] {.nonremovable=true, .power_saving=true} and
implement host->bus_ops->power_restore() for SDIO, then the power will
go off 9 seconds after sdio_release_host() is called. Then tweak omap_hsmmc
so that it doesn't wait 9 seconds for the SDIO case
>
>
> Nicolas
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2010-07-06 19:51 UTC|newest]
Thread overview: 161+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-06 0:37 [PATCH 00/15] wlan+omap+mmc: out-of-the-box WLAN support for ZOOM2/3 Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` [PATCH 02/15] wireless: wl1271: remove SDIO IDs from driver Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 7:04 ` Luciano Coelho
2010-07-06 7:04 ` Luciano Coelho
2010-07-06 0:37 ` [PATCH 03/15] omap: mmc: prepare for software card detect support Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` [PATCH 04/15] mmc: support embedded data field in mmc_host Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 15:49 ` Grazvydas Ignotas
2010-07-06 15:49 ` Grazvydas Ignotas
2010-07-06 15:49 ` Grazvydas Ignotas
2010-07-06 15:54 ` Ohad Ben-Cohen
2010-07-06 15:54 ` Ohad Ben-Cohen
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-06 0:37 ` [PATCH 05/15] omap: hsmmc: add virtual card detect support Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 1:45 ` Nicolas Pitre
2010-07-06 1:45 ` Nicolas Pitre
[not found] ` <alpine.LFD.2.00.1007052134460.6020-QuJgVwGFrdf/9pzu0YdTqQ@public.gmane.org>
2010-07-06 10:22 ` Ohad Ben-Cohen
2010-07-06 10:22 ` Ohad Ben-Cohen
2010-07-06 10:22 ` Ohad Ben-Cohen
2010-07-06 11:02 ` Roger Quadros
2010-07-06 11:02 ` Roger Quadros
2010-07-06 12:02 ` Ohad Ben-Cohen
2010-07-06 12:02 ` Ohad Ben-Cohen
2010-07-06 11:48 ` Ohad Ben-Cohen
2010-07-06 11:48 ` Ohad Ben-Cohen
2010-07-06 12:39 ` Roger Quadros
2010-07-06 12:39 ` Roger Quadros
2010-07-06 13:44 ` Ohad Ben-Cohen
2010-07-06 13:44 ` Ohad Ben-Cohen
2010-07-06 15:34 ` Madhusudhan
2010-07-06 15:34 ` Madhusudhan
2010-07-06 15:34 ` Madhusudhan
2010-07-06 17:00 ` Nicolas Pitre
2010-07-06 17:00 ` Nicolas Pitre
2010-07-06 0:37 ` [PATCH 06/15] omap zoom2: wlan board muxing Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 11:43 ` Tony Lindgren
2010-07-06 11:43 ` Tony Lindgren
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 9:45 ` Tony Lindgren
2010-07-08 9:45 ` Tony Lindgren
2010-07-08 20:12 ` Ohad Ben-Cohen
2010-07-08 20:12 ` Ohad Ben-Cohen
2010-07-08 20:12 ` Ohad Ben-Cohen
2010-07-08 3:39 ` Ghorai, Sukumar
[not found] ` <1278376666-3509-1-git-send-email-ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>
2010-07-06 0:37 ` [PATCH 01/15] sdio: add TI + wl1271 ids Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` [PATCH 07/15] omap zoom3: wlan board muxing Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` [PATCH 09/15] wireless: wl12xx: support pdata SDIO handlers Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` [PATCH 14/15] omap: zoom: add WLAN device Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 12:33 ` Roger Quadros
2010-07-06 12:33 ` Roger Quadros
[not found] ` <4C33228D.8000908-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-07-06 13:47 ` Ohad Ben-Cohen
2010-07-06 13:47 ` Ohad Ben-Cohen
2010-07-06 13:47 ` Ohad Ben-Cohen
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-06 0:37 ` [PATCH 08/15] wireless: wl1271: make wl12xx.h common to both spi and sdio Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
[not found] ` <1278376666-3509-9-git-send-email-ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>
2010-07-06 7:08 ` Luciano Coelho
2010-07-06 7:08 ` Luciano Coelho
2010-07-06 7:08 ` Luciano Coelho
2010-07-06 0:37 ` [PATCH 10/15] wireless: wl1271: support return value for the set power func Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 7:11 ` Luciano Coelho
2010-07-06 7:11 ` Luciano Coelho
2010-07-06 0:37 ` [PATCH 11/15] wireless: wl1271: introduce platform device support Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
[not found] ` <1278376666-3509-12-git-send-email-ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>
2010-07-06 8:53 ` Roger Quadros
2010-07-06 8:53 ` Roger Quadros
2010-07-06 8:53 ` Roger Quadros
[not found] ` <4C32EF19.1000604-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-07-06 9:30 ` Ohad Ben-Cohen
2010-07-06 9:30 ` Ohad Ben-Cohen
2010-07-06 9:30 ` Ohad Ben-Cohen
2010-07-06 10:35 ` Roger Quadros
2010-07-06 10:35 ` Roger Quadros
2010-07-06 12:53 ` Ohad Ben-Cohen
2010-07-06 12:53 ` Ohad Ben-Cohen
2010-07-06 14:30 ` Roger Quadros
2010-07-06 14:30 ` Roger Quadros
[not found] ` <4C333E0D.2070601-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-07-06 17:42 ` Nicolas Pitre
2010-07-06 17:42 ` Nicolas Pitre
2010-07-06 17:42 ` Nicolas Pitre
2010-07-06 19:51 ` Adrian Hunter [this message]
2010-07-06 19:51 ` Adrian Hunter
[not found] ` <4C338927.5020400-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-07-07 8:02 ` Roger Quadros
2010-07-07 8:02 ` Roger Quadros
2010-07-07 8:02 ` Roger Quadros
2010-07-07 14:02 ` Nicolas Pitre
2010-07-07 14:02 ` Nicolas Pitre
2010-07-07 14:54 ` Madhusudhan
2010-07-07 14:54 ` Madhusudhan
2010-07-07 14:54 ` Madhusudhan
2010-07-07 15:46 ` Nicolas Pitre
2010-07-07 15:46 ` Nicolas Pitre
2010-07-07 19:59 ` Adrian Hunter
2010-07-07 19:59 ` Adrian Hunter
[not found] ` <4C34DC92.80908-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-07-08 4:34 ` Nicolas Pitre
2010-07-08 4:34 ` Nicolas Pitre
2010-07-08 4:34 ` Nicolas Pitre
2010-07-07 7:48 ` Roger Quadros
2010-07-07 7:48 ` Roger Quadros
2010-07-07 13:52 ` Nicolas Pitre
2010-07-07 13:52 ` Nicolas Pitre
2010-07-08 8:54 ` Roger Quadros
2010-07-08 8:54 ` Roger Quadros
2010-07-08 20:10 ` Ohad Ben-Cohen
2010-07-08 20:10 ` Ohad Ben-Cohen
2010-07-09 8:12 ` Roger Quadros
2010-07-09 8:12 ` Roger Quadros
2010-07-09 8:32 ` Ohad Ben-Cohen
2010-07-09 8:32 ` Ohad Ben-Cohen
2010-07-09 9:24 ` Grazvydas Ignotas
2010-07-09 9:24 ` Grazvydas Ignotas
2010-08-10 21:21 ` Ohad Ben-Cohen
2010-08-10 21:21 ` Ohad Ben-Cohen
2010-07-06 0:37 ` [PATCH 12/15] wireless: wl1271: take irq info from platform data Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` [PATCH 13/15] wireless: wl1271: make ref_clock configurable by board Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` [PATCH 15/15] omap: zoom: enable WLAN device Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
2010-07-06 0:37 ` Ohad Ben-Cohen
[not found] ` <1278376666-3509-16-git-send-email-ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 20:13 ` Ohad Ben-Cohen
2010-07-08 20:13 ` Ohad Ben-Cohen
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` [PATCH 00/15] wlan+omap+mmc: out-of-the-box WLAN support for ZOOM2/3 Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
2010-07-08 3:39 ` Ghorai, Sukumar
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=4C338927.5020400@nokia.com \
--to=adrian.hunter@nokia.com \
--cc=Luciano.Coelho@nokia.com \
--cc=akpm@linux-foundation.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=madhu.cr@ti.com \
--cc=nico@fluxnic.net \
--cc=ohad@wizery.com \
--cc=roger.quadros@nokia.com \
--cc=san@google.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.