On 12/05/2012 10:31 PM, Amar wrote:
> This patch defines the call back required by dw mmc driver to get the
> clock value. It also adds function to set the dw mmc clock divider ratio.
> 
> Signed-off-by: Amarendra Reddy <amarendra...@samsung.com>
> ---
>  drivers/mmc/exynos_dw_mmc.c |   14 +++++++++++++-
>  1 files changed, 13 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/mmc/exynos_dw_mmc.c b/drivers/mmc/exynos_dw_mmc.c
> index 72a31b7..7cc8aba 100644
> --- a/drivers/mmc/exynos_dw_mmc.c
> +++ b/drivers/mmc/exynos_dw_mmc.c
> @@ -30,25 +30,37 @@ static void exynos_dwmci_clksel(struct dwmci_host *host)
>  {
>       u32 val;
>       val = DWMCI_SET_SAMPLE_CLK(DWMCI_SHIFT_0) |
> -             DWMCI_SET_DRV_CLK(DWMCI_SHIFT_0) | DWMCI_SET_DIV_RATIO(0);
> +             DWMCI_SET_DRV_CLK(DWMCI_SHIFT_0) |
> +             DWMCI_SET_DIV_RATIO(DWMCI_SHIFT_0);
>  
>       dwmci_writel(host, DWMCI_CLKSEL, val);
>  }
>  
> +unsigned int exynos_dwmci_get_clk(int dev_index)
> +{
> +     return get_mmc_clk(dev_index);
> +}
> +
>  int exynos_dwmci_init(u32 regbase, int bus_width, int index)
>  {
>       struct dwmci_host *host = NULL;
> +     int div = 0;
Why didn't initialize to 1? div is assigned to 1 at the below.
>       host = malloc(sizeof(struct dwmci_host));
>       if (!host) {
>               printf("dwmci_host malloc fail!\n");
>               return 1;
>       }
>  
> +     div = 1;
> +     /* Set the mmc clock divider ratio & pre-ratio */
> +     set_mmc_clk(index, div);
Then if div set to 1, what value is set?
Can this code adjust to every board?
> +
>       host->name = EXYNOS_NAME;
>       host->ioaddr = (void *)regbase;
>       host->buswidth = bus_width;
>       host->clksel = exynos_dwmci_clksel;
>       host->dev_index = index;
> +     host->mmc_clk = exynos_dwmci_get_clk;
>  
>       add_dwmci(host, 52000000, 400000);
>  
> 

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to