[PATCH] clk: imx25: Remove osc clock from driver

Lucas Stach l.stach at pengutronix.de
Fri Oct 16 08:40:38 PDT 2015


Am Freitag, den 16.10.2015, 17:25 +0200 schrieb Markus Pargmann:
> The 'osc' clock is already initialized by the fixed clock defined in
> imx25.dtsi. The imx25 clock driver tries to add this clock for a second
> time and fails with -EEXIST:
> 	i.MX clk 1: register failed with -17
> 
> As the clock is already properly setup in DT with a different driver, we
> can completely remove the handling in the imx25 clock driver.
> 
> Signed-off-by: Markus Pargmann <mpa at pengutronix.de>

I was just about to shout something about DT stability, but then noticed
that the "fixed-clock" compatible is present since the first commit of
the i.MX25 DTSI.

No objections from me,
Reviewed-by: Lucas Stach <l.stach at pengutronix.de>

> ---
>  drivers/clk/imx/clk-imx25.c | 19 +++----------------
>  1 file changed, 3 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/clk/imx/clk-imx25.c b/drivers/clk/imx/clk-imx25.c
> index ec1a4c1dacf1..33b5b7b29aa0 100644
> --- a/drivers/clk/imx/clk-imx25.c
> +++ b/drivers/clk/imx/clk-imx25.c
> @@ -86,13 +86,12 @@ enum mx25_clks {
>  
>  static struct clk *clk[clk_max];
>  
> -static int __init __mx25_clocks_init(unsigned long osc_rate,
> -				     void __iomem *ccm_base)
> +static int __init __mx25_clocks_init(void __iomem *ccm_base)
>  {
>  	BUG_ON(!ccm_base);
>  
>  	clk[dummy] = imx_clk_fixed("dummy", 0);
> -	clk[osc] = imx_clk_fixed("osc", osc_rate);
> +	clk[osc] = NULL;

Nit: clk is a static array, so no need to explicitly set this entry to
NULL as it's already initialized that way.

>  	clk[mpll] = imx_clk_pllv1(IMX_PLLV1_IMX25, "mpll", "osc", ccm(CCM_MPCTL));
>  	clk[upll] = imx_clk_pllv1(IMX_PLLV1_IMX25, "upll", "osc", ccm(CCM_UPCTL));
>  	clk[mpll_cpu_3_4] = imx_clk_fixed_factor("mpll_cpu_3_4", "mpll", 3, 4);
> @@ -238,22 +237,10 @@ static int __init __mx25_clocks_init(unsigned long osc_rate,
>  
>  static void __init mx25_clocks_init_dt(struct device_node *np)
>  {
> -	struct device_node *refnp;
> -	unsigned long osc_rate = 24000000;
>  	void __iomem *ccm;
>  
> -	/* retrieve the freqency of fixed clocks from device tree */
> -	for_each_compatible_node(refnp, NULL, "fixed-clock") {
> -		u32 rate;
> -		if (of_property_read_u32(refnp, "clock-frequency", &rate))
> -			continue;
> -
> -		if (of_device_is_compatible(refnp, "fsl,imx-osc"))
> -			osc_rate = rate;
> -	}
> -
>  	ccm = of_iomap(np, 0);
> -	__mx25_clocks_init(osc_rate, ccm);
> +	__mx25_clocks_init(ccm);
>  
>  	clk_data.clks = clk;
>  	clk_data.clk_num = ARRAY_SIZE(clk);

-- 
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |




More information about the linux-arm-kernel mailing list