[PATCH v2 1/2] mtd: nand: orion: fix clk handling

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Mon Mar 27 11:19:49 PDT 2017


Hello,

> @@ -145,15 +151,13 @@ static int __init orion_nand_probe(struct platform_device *pdev)
>  	if (board->dev_ready)
>  		nc->dev_ready = board->dev_ready;
>  
> -	platform_set_drvdata(pdev, mtd);
> +	platform_set_drvdata(pdev, info);
>  
>  	/* Not all platforms can gate the clock, so it is not
>  	   an error if the clock does not exists. */
> -	clk = clk_get(&pdev->dev, NULL);
> -	if (!IS_ERR(clk)) {
> -		clk_prepare_enable(clk);
> -		clk_put(clk);
> -	}
> +	info->clk = devm_clk_get(&pdev->dev, NULL);
> +	if (!IS_ERR(info->clk))
> +		clk_prepare_enable(info->clk);

you could to the following here instead:

	info->clk = devm_clk_get(&pdev->dev, NULL);
	if (IS_ERR(info->clk))
		/*
		 * We ignore all errors here, that's wrong but only for
		 * one commit.
		 */
		info->clk = NULL;

	ret = clk_prepare_enable(info->clk);
	if (ret) ...

>  	ret = nand_scan(mtd, 1);
>  	if (ret)
> @@ -169,26 +173,22 @@ static int __init orion_nand_probe(struct platform_device *pdev)
>  	return 0;
>  
>  no_dev:
> -	if (!IS_ERR(clk)) {
> -		clk_disable_unprepare(clk);
> -		clk_put(clk);
> -	}
> +	if (!IS_ERR(info->clk))
> +		clk_disable_unprepare(info->clk);

this simplifies to

	clk_disable_unprepare(info->clk);

then.

>  
>  	return ret;
>  }
>  
>  static int orion_nand_remove(struct platform_device *pdev)
>  {
> -	struct mtd_info *mtd = platform_get_drvdata(pdev);
> -	struct clk *clk;
> +	struct orion_nand_info *info = platform_get_drvdata(pdev);
> +	struct nand_chip *chip = &info->chip;
> +	struct mtd_info *mtd = nand_to_mtd(chip);
>  
>  	nand_release(mtd);
>  
> -	clk = clk_get(&pdev->dev, NULL);
> -	if (!IS_ERR(clk)) {
> -		clk_disable_unprepare(clk);
> -		clk_put(clk);
> -	}
> +	if (!IS_ERR(info->clk))
> +		clk_disable_unprepare(info->clk);

ditto.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |



More information about the linux-arm-kernel mailing list