From: Jaehoon Chung <jh80.chung@samsung.com>
To: Seungwon Jeon <tgih.jun@samsung.com>
Cc: linux-mmc@vger.kernel.org, cjb@laptop.org,
linux-kernel@vger.kernel.org,
Kyungmin Park <kyungmin.park@samsung.com>
Subject: Re: [PATCH] mmc: dw_mmc: Supply clocks for both host and card.
Date: Thu, 30 Jun 2011 15:55:12 +0900 [thread overview]
Message-ID: <4E0C1DD0.2040202@samsung.com> (raw)
In-Reply-To: <1309402497-29191-1-git-send-email-tgih.jun@samsung.com>
Hi Mr.Jeon
What means cclk_name/ cclk enable?
Controlling card clock is possible?
Sorry, i didn't understand...
(My understanding is that if we set host clk, cclk is used with host_clk.)
Plz can you explain to me?
Regards,
Jaehoon Chung
Seungwon Jeon wrote:
> Add enabling clocks for both host controller and card.
>
> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
> ---
> drivers/mmc/host/dw_mmc.c | 33 ++++++++++++++++++++++++++++++++-
> include/linux/mmc/dw_mmc.h | 7 +++++++
> 2 files changed, 39 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 10b6979..a524416 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -1797,6 +1797,24 @@ static int dw_mci_probe(struct platform_device *pdev)
> goto err_freehost;
> }
>
> + host->hclk = clk_get(&pdev->dev, pdata->hclk_name);
> + if (IS_ERR(host->hclk)) {
> + dev_err(&pdev->dev,
> + "Failed to get hclk\n");
> + ret = PTR_ERR(host->hclk);
> + goto err_freehost;
> + }
> + clk_enable(host->hclk);
> +
> + host->cclk = clk_get(&pdev->dev, pdata->cclk_name);
> + if (IS_ERR(host->cclk)) {
> + dev_err(&pdev->dev,
> + "Failed to get cclk\n");
> + ret = PTR_ERR(host->cclk);
> + goto err_free_hclk;
> + }
> + clk_enable(host->cclk);
> +
> host->bus_hz = pdata->bus_hz;
> host->quirks = pdata->quirks;
>
> @@ -1806,7 +1824,7 @@ static int dw_mci_probe(struct platform_device *pdev)
> ret = -ENOMEM;
> host->regs = ioremap(regs->start, regs->end - regs->start + 1);
> if (!host->regs)
> - goto err_freehost;
> + goto err_free_cclk;
>
> host->dma_ops = pdata->dma_ops;
> dw_mci_init_dma(host);
> @@ -1945,6 +1963,13 @@ err_dmaunmap:
> regulator_put(host->vmmc);
> }
>
> +err_free_cclk:
> + clk_disable(host->cclk);
> + clk_put(host->cclk);
> +
> +err_free_hclk:
> + clk_disable(host->hclk);
> + clk_put(host->hclk);
>
> err_freehost:
> kfree(host);
> @@ -1983,6 +2008,12 @@ static int __exit dw_mci_remove(struct platform_device *pdev)
> regulator_put(host->vmmc);
> }
>
> + clk_disable(host->cclk);
> + clk_put(host->cclk);
> +
> + clk_disable(host->hclk);
> + clk_put(host->hclk);
> +
> iounmap(host->regs);
>
> kfree(host);
> diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
> index f3f68ee..56b3f27 100644
> --- a/include/linux/mmc/dw_mmc.h
> +++ b/include/linux/mmc/dw_mmc.h
> @@ -47,6 +47,8 @@ struct mmc_data;
> * @cmd: The command currently being sent to the card, or NULL.
> * @data: The data currently being transferred, or NULL if no data
> * transfer is in progress.
> + * @hclk: Clock for host.
> + * @cclk: Clock for card.
> * @use_dma: Whether DMA channel is initialized or not.
> * @sg_dma: Bus address of DMA buffer.
> * @sg_cpu: Virtual address of DMA buffer.
> @@ -118,6 +120,8 @@ struct dw_mci {
> struct mmc_request *mrq;
> struct mmc_command *cmd;
> struct mmc_data *data;
> + struct clk *hclk;
> + struct clk *cclk;
>
> /* DMA interface members*/
> int use_dma;
> @@ -218,6 +222,9 @@ struct dw_mci_board {
> /* delay in mS before detecting cards after interrupt */
> u32 detect_delay_ms;
>
> + char *hclk_name;
> + char *cclk_name;
> +
> int (*init)(u32 slot_id, irq_handler_t , void *);
> int (*get_ro)(u32 slot_id);
> int (*get_cd)(u32 slot_id);
> --
> 1.7.0.4
>
> --
> 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
>
next prev parent reply other threads:[~2011-06-30 6:55 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-30 2:54 [PATCH] mmc: dw_mmc: Supply clocks for both host and card Seungwon Jeon
2011-06-30 6:55 ` Jaehoon Chung [this message]
2011-07-01 4:05 ` 전승원
2011-07-08 6:52 ` Seungwon Jeon
2011-07-08 8:42 ` Jaehoon Chung
2011-07-12 7:55 ` Seungwon Jeon
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=4E0C1DD0.2040202@samsung.com \
--to=jh80.chung@samsung.com \
--cc=cjb@laptop.org \
--cc=kyungmin.park@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=tgih.jun@samsung.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.