[corrected Jassi's email address]

On 08/09/2011 03:57 PM, Padmavathi Venna wrote:
> Create a clkdev alias for spi bus clock and modify the spi
> driver to lookup the clock using the alias name instead of
> passing clock name and clock number from SPI platform data.
> 
> Signed-off-by: Padmavathi Venna <[email protected]>
> ---
> This patch is tested for S5PV210 platform and similar
> changes can be adopted for rest of the Samsung's s3c
> and s5p platforms, if this approach is accepted.

It is a bit surprising to me how you do intend to use the clock aliases.
Are we seriously going to be creating clock con_id aliases for most
of the available devices ? It doesn't sound sane to me..

Wouldn't it be possible to avoid the aliases by correcting the clock
registration process ?

>  arch/arm/mach-s5pv210/dev-spi.c                  |   31 ++++++++++++++++++---
>  arch/arm/plat-samsung/include/plat/s3c64xx-spi.h |    7 +----
>  2 files changed, 27 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/arm/mach-s5pv210/dev-spi.c b/arch/arm/mach-s5pv210/dev-spi.c
...
> -void __init s5pv210_spi_set_info(int cntrlr, int src_clk_nr, int num_cs)
> +void __init s5pv210_spi_set_info(int cntrlr, int num_cs)
>  {
>       struct s3c64xx_spi_info *pd;
> +     struct device *dev;
> +     char devname[16], clk_alias_name[16];
> +     int ret, i;
>  
>       /* Reject invalid configuration */
> -     if (!num_cs || src_clk_nr < 0
> -                     || src_clk_nr > S5PV210_SPI_SRCCLK_SCLK) {
> +     if (!num_cs) {
>               printk(KERN_ERR "%s: Invalid SPI configuration\n", __func__);
>               return;
>       }
> @@ -159,9 +162,11 @@ void __init s5pv210_spi_set_info(int cntrlr, int 
> src_clk_nr, int num_cs)
>       switch (cntrlr) {
>       case 0:
>               pd = &s5pv210_spi0_pdata;
> +             dev = &s5pv210_device_spi0.dev;
>               break;
>       case 1:
>               pd = &s5pv210_spi1_pdata;
> +             dev = &s5pv210_device_spi1.dev;
>               break;
>       default:
>               printk(KERN_ERR "%s: Invalid SPI controller(%d)\n",
> @@ -169,7 +174,23 @@ void __init s5pv210_spi_set_info(int cntrlr, int 
> src_clk_nr, int num_cs)
>               return;
>       }
>  
> +     sprintf(devname, "s3c64xx-spi.%d", cntrlr);
> +
> +     for (i = 0; i < ARRAY_SIZE(spi_src_clks); i++) {
> +             sprintf(clk_alias_name, "clk_spi_bus%d", i);
> +
> +             if (!strcmp(spi_src_clks[i], "pclk"))
> +                     ret = clk_add_alias(clk_alias_name, devname,
> +                                             spi_src_clks[i], NULL);
> +             else
> +                     ret = clk_add_alias(clk_alias_name, devname,
> +                                             spi_src_clks[i], dev);
> +             if (ret) {
> +                     printk(KERN_ERR "failed to create alias for"
> +                             " SPI%d source clock%d\n", cntrlr, i);
> +                     continue;
> +             }
> +     }
> +
>       pd->num_cs = num_cs;
> -     pd->src_clk_nr = src_clk_nr;
> -     pd->src_clk_name = spi_src_clks[src_clk_nr];
>  }
...

--
Thanks,
Sylwester
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to