public inbox for linux-mmc@vger.kernel.org
 help / color / mirror / Atom feed
From: Jaehoon Chung <jh80.chung@samsung.com>
To: Chris Ball <cjb@laptop.org>
Cc: Matt Fleming <matt@console-pimps.org>,
	Jaehoon Chung <jh80.chung@samsung.com>,
	linux-mmc@vger.kernel.org,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [RFC RESEND] sdhci-s3c: support clock enable/disable (clock-gating)
Date: Tue, 28 Sep 2010 14:29:39 +0900	[thread overview]
Message-ID: <4CA17D43.1030004@samsung.com> (raw)
In-Reply-To: <AANLkTi=HWUy7Fm7mKPGWT4m0kzKJhEUE8C=Yw2NN1Z5J@mail.gmail.com>

Jae hoon Chung wrote:
> 2010/9/17 Matt Fleming <matt@console-pimps.org>:
>> On Thu, Sep 16, 2010 at 03:46:50PM +0900, Jaehoon Chung wrote:
>>> Hi all,
>>>   This is a RFC patch that support clock-gating for saving power consumption.
>>>   I found mmc_host_enable/mmc_host_disable function in core.c
>>>   (using MMC_CAP_DSIABLE. i think that use when host enable/disable)
>>>   So, i used that functions and implemented some functions in sdhci-s3c.c & sdhci.c
>>>
>>> i want any feedback. how do you think about this patch?
>>> Plz let me know...
>>>
>>> Thank you all
>>>
>>>  Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
>>>  Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
>>>
>>> ---
>>>  drivers/mmc/host/sdhci-s3c.c |   36 ++++++++++++++++++++++++++++++++++++
>>>  drivers/mmc/host/sdhci.c     |   30 ++++++++++++++++++++++++++++++
>>>  drivers/mmc/host/sdhci.h     |    4 ++++
>>>  3 files changed, 70 insertions(+), 0 deletions(-)
>> [...]
>>
>>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>>> index 401527d..fa2e55d 100644
>>> --- a/drivers/mmc/host/sdhci.c
>>> +++ b/drivers/mmc/host/sdhci.c
>>> @@ -1245,7 +1245,37 @@ out:
>>>       spin_unlock_irqrestore(&host->lock, flags);
>>>  }
>>>
>>> +static int sdhci_enable_clk(struct mmc_host *mmc)
>>> +{
>>> +     struct sdhci_host *host = mmc_priv(mmc);
>>> +     int ret = 0;
>>> +
>>> +     if (host->old_clock != 0 && host->clock == 0) {
>>> +             if (host->ops->enable)
>>> +                     ret = host->ops->enable(host);
>>> +             sdhci_set_clock(host, host->old_clock);
>>> +     }
>>> +
>>> +     return ret;
>>> +}
>>> +
>>> +static int sdhci_disable_clk(struct mmc_host *mmc, int lazy)
>>> +{
>>> +     struct sdhci_host *host = mmc_priv(mmc);
>>> +     int ret = 0;
>>> +
>>> +     if (host->clock != 0) {
>>> +             host->old_clock = host->clock;
>>> +             sdhci_set_clock(host, 0);
>>> +             if (host->ops->disable)
>>> +                     ret = host->ops->disable(host, lazy);
>>> +     }
>>> +     return ret;
>>> +}
>>> +
>>>  static const struct mmc_host_ops sdhci_ops = {
>>> +     .enable         = sdhci_enable_clk,
>>> +     .disable        = sdhci_disable_clk,
>>>       .request        = sdhci_request,
>>>       .set_ios        = sdhci_set_ios,
>>>       .get_ro         = sdhci_get_ro,
>>> diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
>>> index d316bc7..0c6f143 100644
>>> --- a/drivers/mmc/host/sdhci.h
>>> +++ b/drivers/mmc/host/sdhci.h
>>> @@ -278,6 +278,8 @@ struct sdhci_host {
>>>       unsigned int            timeout_clk;    /* Timeout freq (KHz) */
>>>
>>>       unsigned int            clock;          /* Current clock (MHz) */
>>> +     unsigned int            old_clock;      /* Old clock (MHz) */
>>> +     unsigned int            clk_cnt;        /* Clock user count */
>>>       u8                      pwr;            /* Current voltage */
>>>
>>>       struct mmc_request      *mrq;           /* Current request */
>>> @@ -323,6 +325,8 @@ struct sdhci_ops {
>>>       unsigned int    (*get_max_clock)(struct sdhci_host *host);
>>>       unsigned int    (*get_min_clock)(struct sdhci_host *host);
>>>       unsigned int    (*get_timeout_clock)(struct sdhci_host *host);
>>> +     int             (*enable)(struct sdhci_host *host);
>>> +     int             (*disable)(struct sdhci_host *host, int lazy);
>>>  };
>>>
>>>  #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
>> I could have misunderstood something, but do you really need this new
>> 'old_clock' member? Is the previous clock value not stored in
>> host->ios.clock?
> 
> Thanks Matt for your comment.
> if host->ios.clock set zero, i think that need previous value (for
> example 52MHz..)
> So i add 'old_clock' member...i will test, after removed 'old_clock'
> 
> anyother doubt? and problem?
> Thanks
> 
Hi Chris.
I want to know how do you think about this patch.
If you have any doubt in this patch, let me know plz.

Thanks
Jaehoon Chung

  reply	other threads:[~2010-09-28  5:29 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-16  6:46 [RFC RESEND] sdhci-s3c: support clock enable/disable (clock-gating) Jaehoon Chung
2010-09-17 13:40 ` Matt Fleming
2010-09-25  8:21   ` Jae hoon Chung
2010-09-28  5:29     ` Jaehoon Chung [this message]
2010-09-29 23:37 ` Chris Ball
2010-09-30  3:42   ` Nicolas Pitre
2010-09-30  4:09     ` Chris Ball
2010-09-30  4:31       ` Kyungmin Park
2010-09-30  7:22         ` Linus Walleij
2010-09-30 13:30           ` Nicolas Pitre
2010-10-05  2:08           ` Chris Ball

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=4CA17D43.1030004@samsung.com \
    --to=jh80.chung@samsung.com \
    --cc=akpm@linux-foundation.org \
    --cc=cjb@laptop.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=matt@console-pimps.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