[PATCH] AT91: SAM9G45 - add a separate clock entry for every single TC block

Nicolas Ferre nicolas.ferre at atmel.com
Fri Sep 3 09:05:43 EDT 2010


Le 03/09/2010 14:31, Fabian Godehardt :
> Without this patch you will not be able to register the first block
> because of the second association call on at91_add_device_tc().

Yes, I noticed that.

> Signed-off-by: Fabian Godehardt <fg at emlix.com>

Tell me if my little modification is ok for you. I will then sign it and
send it to Russell patch tracking system: what do you think about it?

> ---
>  arch/arm/mach-at91/at91sam9g45.c         |   12 +++++++++---
>  arch/arm/mach-at91/at91sam9g45_devices.c |    4 ++--
>  2 files changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c
> index 753c0d3..52ef2d6 100644
> --- a/arch/arm/mach-at91/at91sam9g45.c
> +++ b/arch/arm/mach-at91/at91sam9g45.c
> @@ -121,8 +121,13 @@ static struct clk ssc1_clk = {
>  	.pmc_mask	= 1 << AT91SAM9G45_ID_SSC1,
>  	.type		= CLK_TYPE_PERIPHERAL,
>  };
> -static struct clk tcb_clk = {
> -	.name		= "tcb_clk",
> +static struct clk tcb0_clk = {
> +	.name		= "tcb0_clk",
> +	.pmc_mask	= 1 << AT91SAM9G45_ID_TCB,
> +	.type		= CLK_TYPE_PERIPHERAL,
> +};
> +static struct clk tcb1_clk = {
> +	.name		= "tcb1_clk",
>  	.pmc_mask	= 1 << AT91SAM9G45_ID_TCB,
>  	.type		= CLK_TYPE_PERIPHERAL,

I prefer to add a "fake" clock that depend on the first one instead of
doubling the definition: like this:

/* One additional fake clock for second TC block */
static struct clk tcb1_clk = {
        .name           = "tcb1_clk",
        .pmc_mask       = 0,
        .type           = CLK_TYPE_PERIPHERAL,
        .parent         = &tcb0_clk,
};

This way we keep the single clock entry but we provide a fake entry for
registering the second TC block.


>  };
> @@ -208,7 +213,8 @@ static struct clk *periph_clocks[] __initdata = {
>  	&spi1_clk,
>  	&ssc0_clk,
>  	&ssc1_clk,
> -	&tcb_clk,
> +	&tcb0_clk,
> +	&tcb1_clk,
>  	&pwm_clk,
>  	&tsc_clk,
>  	&dma_clk,
> diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
> index 809114d..4822019 100644
> --- a/arch/arm/mach-at91/at91sam9g45_devices.c
> +++ b/arch/arm/mach-at91/at91sam9g45_devices.c
> @@ -835,9 +835,9 @@ static struct platform_device at91sam9g45_tcb1_device = {
>  static void __init at91_add_device_tc(void)
>  {
>  	/* this chip has one clock and irq for all six TC channels */
> -	at91_clock_associate("tcb_clk", &at91sam9g45_tcb0_device.dev, "t0_clk");
> +	at91_clock_associate("tcb0_clk", &at91sam9g45_tcb0_device.dev, "t0_clk");
>  	platform_device_register(&at91sam9g45_tcb0_device);
> -	at91_clock_associate("tcb_clk", &at91sam9g45_tcb1_device.dev, "t0_clk");
> +	at91_clock_associate("tcb1_clk", &at91sam9g45_tcb1_device.dev, "t0_clk");
>  	platform_device_register(&at91sam9g45_tcb1_device);
>  }
>  #else

Ok for other modifications,

Best regards,
-- 
Nicolas Ferre




More information about the linux-arm-kernel mailing list