linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Roger Quadros <roger.quadros-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
To: "Hunter Adrian (Nokia-MS/Helsinki)"
	<adrian.hunter-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
Cc: Nicolas Pitre <nico-vtqb6HGKxmzR7s880joybQ@public.gmane.org>,
	Ohad Ben-Cohen <ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>,
	"linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org"
	<linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
	Chikkature Rajashekar Madhusudhan
	<madhu.cr-l0cyMroinI0@public.gmane.org>,
	"Coelho Luciano (Nokia-MS/Helsinki)"
	<Luciano.Coelho-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>,
	"akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org"
	<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
	San Mehat <san-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 11/15] wireless: wl1271: introduce platform device support
Date: Wed, 07 Jul 2010 11:02:07 +0300	[thread overview]
Message-ID: <4C34347F.8030000@nokia.com> (raw)
In-Reply-To: <4C338927.5020400-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>

On 07/06/2010 10:51 PM, Hunter Adrian (Nokia-MS/Helsinki) wrote:
> 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-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
>>>> 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.

Shouldn't the power control intelligence (i.e. when to turn power ON/OFF) lie 
with the bus drivers?

>
> 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
>
is the wl1271 supposed to be used only with omap_hsmmc? We need to have a 
solution that works neatly irrespective of which host controller is being used.

regards,
-roger
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2010-07-07  8:02 UTC|newest]

Thread overview: 62+ 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 ` [PATCH 02/15] wireless: wl1271: remove SDIO IDs from driver Ohad Ben-Cohen
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 ` [PATCH 04/15] mmc: support embedded data field in mmc_host Ohad Ben-Cohen
2010-07-06 15:49   ` Grazvydas Ignotas
2010-07-06 15:54     ` Ohad Ben-Cohen
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  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 11:02         ` Roger Quadros
2010-07-06 12:02           ` Ohad Ben-Cohen
2010-07-06 11:48         ` Ohad Ben-Cohen
2010-07-06 12:39           ` Roger Quadros
2010-07-06 13:44             ` Ohad Ben-Cohen
2010-07-06 15:34           ` Madhusudhan
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 11:43   ` Tony Lindgren
2010-07-08  3:39   ` Ghorai, Sukumar
2010-07-08  9:45     ` Tony Lindgren
2010-07-08 20:12       ` Ohad Ben-Cohen
2010-07-06  0:37 ` [PATCH 08/15] wireless: wl1271: make wl12xx.h common to both spi and sdio 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  0:37 ` [PATCH 10/15] wireless: wl1271: support return value for the set power func Ohad Ben-Cohen
2010-07-06  7:11   ` Luciano Coelho
2010-07-06  0:37 ` [PATCH 11/15] wireless: wl1271: introduce platform device support 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
     [not found]       ` <4C32EF19.1000604-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-07-06  9:30         ` Ohad Ben-Cohen
2010-07-06 10:35           ` Roger Quadros
2010-07-06 12:53             ` Ohad Ben-Cohen
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 19:51                     ` Adrian Hunter
     [not found]                       ` <4C338927.5020400-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-07-07  8:02                         ` Roger Quadros [this message]
2010-07-07 14:02                           ` Nicolas Pitre
2010-07-07 14:54                             ` Madhusudhan
2010-07-07 15:46                               ` Nicolas Pitre
2010-07-07 19:59                             ` Adrian Hunter
     [not found]                               ` <4C34DC92.80908-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-07-08  4:34                                 ` Nicolas Pitre
2010-07-07  7:48                     ` Roger Quadros
2010-07-07 13:52                       ` Nicolas Pitre
2010-07-08  8:54                         ` Roger Quadros
2010-07-08 20:10                     ` Ohad Ben-Cohen
2010-07-09  8:12                       ` Roger Quadros
2010-07-09  8:32                         ` Ohad Ben-Cohen
2010-07-09  9:24                           ` Grazvydas Ignotas
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 ` [PATCH 13/15] wireless: wl1271: make ref_clock configurable by board Ohad Ben-Cohen
     [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   ` [PATCH 07/15] omap zoom3: wlan board muxing 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   ` [PATCH 14/15] omap: zoom: add WLAN device Ohad Ben-Cohen
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-08  3:39     ` Ghorai, Sukumar
2010-07-06  0:37 ` [PATCH 15/15] omap: zoom: enable " 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 20:13       ` Ohad Ben-Cohen
2010-07-08  3:39 ` [PATCH 00/15] wlan+omap+mmc: out-of-the-box WLAN support for ZOOM2/3 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=4C34347F.8030000@nokia.com \
    --to=roger.quadros-xnzwkgviw5gavxtiumwx3w@public.gmane.org \
    --cc=Luciano.Coelho-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org \
    --cc=adrian.hunter-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
    --cc=linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=madhu.cr-l0cyMroinI0@public.gmane.org \
    --cc=nico-vtqb6HGKxmzR7s880joybQ@public.gmane.org \
    --cc=ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org \
    --cc=san-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    /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).