From: Alberto Panizzo <maramaopercheseimorto@gmail.com>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: "Daniel Mack" <daniel@caiaq.de>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
"Eric Bénard" <eric@eukrea.com>,
"Fabio Estevam" <fabioestevam@yahoo.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-mmc <linux-mmc@vger.kernel.org>,
"Chris Ball" <cjb@laptop.org>
Subject: Re: [PATCH] mxcmmc: Add the ability to bind a regulator to manage the MMC card voltage
Date: Fri, 05 Nov 2010 10:27:55 +0100 [thread overview]
Message-ID: <1288949275.3072.3.camel@realization> (raw)
In-Reply-To: <20101102073932.GB6017@pengutronix.de>
On mar, 2010-11-02 at 08:39 +0100, Sascha Hauer wrote:
> On Tue, Nov 02, 2010 at 01:05:37AM +0100, Alberto Panizzo wrote:
> > This implementation is based on the pxamci.c driver and it will
> > be used to support the mx31_3ds machine.
> >
> > Signed-off-by: Alberto Panizzo <maramaopercheseimorto@gmail.com>
>
> Looks good to me
>
> Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
>
Sascha, must this one go to the Chris Ball mmc tree? or can you pick it
up directly?
Is there any chance to have it on one of .37-rcN?
(Adding Chris to cc.)
Thanks,
Alberto!
> > ---
> >
> > This patch is based on the pengutronix for-rmk branch and apply to the
> > linus tre, version:2.6.37-rc1
> >
> > ..cc the lists, sorry for the double mail.
> >
> > drivers/mmc/host/mxcmmc.c | 48 +++++++++++++++++++++++++++++++++++++++-----
> > 1 files changed, 42 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c
> > index 350f78e..e4637fc 100644
> > --- a/drivers/mmc/host/mxcmmc.c
> > +++ b/drivers/mmc/host/mxcmmc.c
> > @@ -31,6 +31,7 @@
> > #include <linux/clk.h>
> > #include <linux/io.h>
> > #include <linux/gpio.h>
> > +#include <linux/regulator/consumer.h>
> >
> > #include <asm/dma.h>
> > #include <asm/irq.h>
> > @@ -141,10 +142,45 @@ struct mxcmci_host {
> >
> > struct work_struct datawork;
> > spinlock_t lock;
> > +
> > + struct regulator *vcc;
> > };
> >
> > static void mxcmci_set_clk_rate(struct mxcmci_host *host, unsigned int clk_ios);
> >
> > +static inline void mxcmci_init_ocr(struct mxcmci_host *host)
> > +{
> > +#ifdef CONFIG_REGULATOR
> > + host->vcc = regulator_get(mmc_dev(host->mmc), "vmmc");
> > +
> > + if (IS_ERR(host->vcc)) {
> > + host->vcc = NULL;
> > + } else {
> > + host->mmc->ocr_avail = mmc_regulator_get_ocrmask(host->vcc);
> > + if (host->pdata && host->pdata->ocr_avail)
> > + dev_warn(mmc_dev(host->mmc),
> > + "pdata->ocr_avail will not be used\n");
> > + }
> > +#endif
> > + if (host->vcc == NULL) {
> > + /* fall-back to platform data */
> > + if (host->pdata && host->pdata->ocr_avail)
> > + host->mmc->ocr_avail = host->pdata->ocr_avail;
> > + else
> > + host->mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
> > + }
> > +}
> > +
> > +static inline void mxcmci_set_power(struct mxcmci_host *host, unsigned int vdd)
> > +{
> > +#ifdef CONFIG_REGULATOR
> > + if (host->vcc)
> > + mmc_regulator_set_ocr(host->vcc, vdd);
> > +#endif
> > + if (host->pdata && host->pdata->setpower)
> > + host->pdata->setpower(mmc_dev(host->mmc), vdd);
> > +}
> > +
> > static inline int mxcmci_use_dma(struct mxcmci_host *host)
> > {
> > return host->do_dma;
> > @@ -680,9 +716,9 @@ static void mxcmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
> > host->cmdat &= ~CMD_DAT_CONT_BUS_WIDTH_4;
> >
> > if (host->power_mode != ios->power_mode) {
> > - if (host->pdata && host->pdata->setpower)
> > - host->pdata->setpower(mmc_dev(mmc), ios->vdd);
> > + mxcmci_set_power(host, ios->vdd);
> > host->power_mode = ios->power_mode;
> > +
> > if (ios->power_mode == MMC_POWER_ON)
> > host->cmdat |= CMD_DAT_CONT_INIT;
> > }
> > @@ -808,10 +844,7 @@ static int mxcmci_probe(struct platform_device *pdev)
> > host->pdata = pdev->dev.platform_data;
> > spin_lock_init(&host->lock);
> >
> > - if (host->pdata && host->pdata->ocr_avail)
> > - mmc->ocr_avail = host->pdata->ocr_avail;
> > - else
> > - mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
> > + mxcmci_init_ocr(host);
> >
> > if (host->pdata && host->pdata->dat3_card_detect)
> > host->default_irq_mask =
> > @@ -916,6 +949,9 @@ static int mxcmci_remove(struct platform_device *pdev)
> >
> > mmc_remove_host(mmc);
> >
> > + if (host->vcc)
> > + regulator_put(host->vcc);
> > +
> > if (host->pdata && host->pdata->exit)
> > host->pdata->exit(&pdev->dev, mmc);
> >
> > --
> > 1.6.3.3
> >
> >
> >
> >
> >
>
next prev parent reply other threads:[~2010-11-05 9:28 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-02 0:05 [PATCH] mxcmmc: Add the ability to bind a regulator to manage the MMC card voltage Alberto Panizzo
2010-11-02 7:39 ` Sascha Hauer
2010-11-02 10:33 ` Alberto Panizzo
2010-11-05 9:27 ` Alberto Panizzo [this message]
2010-11-05 13:12 ` Sascha Hauer
2010-11-08 10:53 ` Alberto Panizzo
2010-11-08 14:37 ` Chris Ball
2010-11-08 15:25 ` Alberto Panizzo
2010-11-09 10:09 ` [PATCH] mxcmmc: update the regulator support code to the latest API Alberto Panizzo
2010-11-09 10:14 ` Uwe Kleine-König
2010-11-09 10:30 ` Alberto Panizzo
2010-11-09 10:35 ` [PATCH v2] " Alberto Panizzo
2010-11-08 22:12 ` [PATCH] mxcmmc: Add the ability to bind a regulator to manage the MMC card voltage Linus Walleij
2010-11-09 10:03 ` Alberto Panizzo
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=1288949275.3072.3.camel@realization \
--to=maramaopercheseimorto@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cjb@laptop.org \
--cc=daniel@caiaq.de \
--cc=eric@eukrea.com \
--cc=fabioestevam@yahoo.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=u.kleine-koenig@pengutronix.de \
/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.