All of lore.kernel.org
 help / color / mirror / Atom feed
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
> 

  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.