All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthias Brugger <matthias.bgg@gmail.com>
To: Christophe JAILLET <christophe.jaillet@wanadoo.fr>,
	broonie@kernel.org, gregkh@linuxfoundation.org, neil@brown.name,
	blogic@openwrt.org
Cc: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
	kernel-janitors@vger.kernel.org
Subject: Re: [PATCH 2/4] spi: mt7621: Use the devm_clk_get_enabled() helper to simplify error handling
Date: Mon, 29 Aug 2022 13:14:52 +0200	[thread overview]
Message-ID: <ae3523f9-6420-9413-30cf-ab6a081c8500@gmail.com> (raw)
In-Reply-To: <05a7fd22719008c8a905d6328aa9548ce40f2a7a.1661599671.git.christophe.jaillet@wanadoo.fr>



On 27/08/2022 13:42, Christophe JAILLET wrote:
> The devm_clk_get_enabled() helper:
>     - calls devm_clk_get()
>     - calls clk_prepare_enable() and registers what is needed in order to
>       call clk_disable_unprepare() when needed, as a managed resource.
> 
> This helper is well suited for cases where the clock would be kept
> prepared or enabled for the whole lifetime of the driver.
> 
> This simplifies the error handling a lot.
> 
> The order between spi_unregister_controller() (in the remove function) and
> the clk_disable_unprepare() (now handle by a  managed resource) is kept
> the same.
> (see commit 46b5c4fb87ce ("spi: mt7621: Don't leak SPI master in probe
> error path") to see why it matters)
> 
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>

> ---
> The order with  devm_spi_release_controller() (which undoes
> devm_spi_alloc_master()) is reversed, but I don't think it is an issue.
> ---
>   drivers/spi/spi-mt7621.c | 14 +-------------
>   1 file changed, 1 insertion(+), 13 deletions(-)
> 
> diff --git a/drivers/spi/spi-mt7621.c b/drivers/spi/spi-mt7621.c
> index 351b0ef52bbc..2580b28042be 100644
> --- a/drivers/spi/spi-mt7621.c
> +++ b/drivers/spi/spi-mt7621.c
> @@ -327,7 +327,6 @@ static int mt7621_spi_probe(struct platform_device *pdev)
>   	struct spi_controller *master;
>   	struct mt7621_spi *rs;
>   	void __iomem *base;
> -	int status = 0;
>   	struct clk *clk;
>   	int ret;
>   
> @@ -339,19 +338,14 @@ static int mt7621_spi_probe(struct platform_device *pdev)
>   	if (IS_ERR(base))
>   		return PTR_ERR(base);
>   
> -	clk = devm_clk_get(&pdev->dev, NULL);
> +	clk = devm_clk_get_enabled(&pdev->dev, NULL);
>   	if (IS_ERR(clk))
>   		return dev_err_probe(&pdev->dev, PTR_ERR(clk),
>   				     "unable to get SYS clock\n");
>   
> -	status = clk_prepare_enable(clk);
> -	if (status)
> -		return status;
> -
>   	master = devm_spi_alloc_master(&pdev->dev, sizeof(*rs));
>   	if (!master) {
>   		dev_info(&pdev->dev, "master allocation failed\n");
> -		clk_disable_unprepare(clk);
>   		return -ENOMEM;
>   	}
>   
> @@ -376,13 +370,10 @@ static int mt7621_spi_probe(struct platform_device *pdev)
>   	ret = device_reset(&pdev->dev);
>   	if (ret) {
>   		dev_err(&pdev->dev, "SPI reset failed!\n");
> -		clk_disable_unprepare(clk);
>   		return ret;
>   	}
>   
>   	ret = spi_register_controller(master);
> -	if (ret)
> -		clk_disable_unprepare(clk);
>   
>   	return ret;
>   }
> @@ -390,13 +381,10 @@ static int mt7621_spi_probe(struct platform_device *pdev)
>   static int mt7621_spi_remove(struct platform_device *pdev)
>   {
>   	struct spi_controller *master;
> -	struct mt7621_spi *rs;
>   
>   	master = dev_get_drvdata(&pdev->dev);
> -	rs = spi_controller_get_devdata(master);
>   
>   	spi_unregister_controller(master);
> -	clk_disable_unprepare(rs->clk);
>   
>   	return 0;
>   }

WARNING: multiple messages have this Message-ID (diff)
From: Matthias Brugger <matthias.bgg@gmail.com>
To: Christophe JAILLET <christophe.jaillet@wanadoo.fr>,
	broonie@kernel.org, gregkh@linuxfoundation.org, neil@brown.name,
	blogic@openwrt.org
Cc: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org,
	kernel-janitors@vger.kernel.org
Subject: Re: [PATCH 2/4] spi: mt7621: Use the devm_clk_get_enabled() helper to simplify error handling
Date: Mon, 29 Aug 2022 13:14:52 +0200	[thread overview]
Message-ID: <ae3523f9-6420-9413-30cf-ab6a081c8500@gmail.com> (raw)
In-Reply-To: <05a7fd22719008c8a905d6328aa9548ce40f2a7a.1661599671.git.christophe.jaillet@wanadoo.fr>



On 27/08/2022 13:42, Christophe JAILLET wrote:
> The devm_clk_get_enabled() helper:
>     - calls devm_clk_get()
>     - calls clk_prepare_enable() and registers what is needed in order to
>       call clk_disable_unprepare() when needed, as a managed resource.
> 
> This helper is well suited for cases where the clock would be kept
> prepared or enabled for the whole lifetime of the driver.
> 
> This simplifies the error handling a lot.
> 
> The order between spi_unregister_controller() (in the remove function) and
> the clk_disable_unprepare() (now handle by a  managed resource) is kept
> the same.
> (see commit 46b5c4fb87ce ("spi: mt7621: Don't leak SPI master in probe
> error path") to see why it matters)
> 
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>

> ---
> The order with  devm_spi_release_controller() (which undoes
> devm_spi_alloc_master()) is reversed, but I don't think it is an issue.
> ---
>   drivers/spi/spi-mt7621.c | 14 +-------------
>   1 file changed, 1 insertion(+), 13 deletions(-)
> 
> diff --git a/drivers/spi/spi-mt7621.c b/drivers/spi/spi-mt7621.c
> index 351b0ef52bbc..2580b28042be 100644
> --- a/drivers/spi/spi-mt7621.c
> +++ b/drivers/spi/spi-mt7621.c
> @@ -327,7 +327,6 @@ static int mt7621_spi_probe(struct platform_device *pdev)
>   	struct spi_controller *master;
>   	struct mt7621_spi *rs;
>   	void __iomem *base;
> -	int status = 0;
>   	struct clk *clk;
>   	int ret;
>   
> @@ -339,19 +338,14 @@ static int mt7621_spi_probe(struct platform_device *pdev)
>   	if (IS_ERR(base))
>   		return PTR_ERR(base);
>   
> -	clk = devm_clk_get(&pdev->dev, NULL);
> +	clk = devm_clk_get_enabled(&pdev->dev, NULL);
>   	if (IS_ERR(clk))
>   		return dev_err_probe(&pdev->dev, PTR_ERR(clk),
>   				     "unable to get SYS clock\n");
>   
> -	status = clk_prepare_enable(clk);
> -	if (status)
> -		return status;
> -
>   	master = devm_spi_alloc_master(&pdev->dev, sizeof(*rs));
>   	if (!master) {
>   		dev_info(&pdev->dev, "master allocation failed\n");
> -		clk_disable_unprepare(clk);
>   		return -ENOMEM;
>   	}
>   
> @@ -376,13 +370,10 @@ static int mt7621_spi_probe(struct platform_device *pdev)
>   	ret = device_reset(&pdev->dev);
>   	if (ret) {
>   		dev_err(&pdev->dev, "SPI reset failed!\n");
> -		clk_disable_unprepare(clk);
>   		return ret;
>   	}
>   
>   	ret = spi_register_controller(master);
> -	if (ret)
> -		clk_disable_unprepare(clk);
>   
>   	return ret;
>   }
> @@ -390,13 +381,10 @@ static int mt7621_spi_probe(struct platform_device *pdev)
>   static int mt7621_spi_remove(struct platform_device *pdev)
>   {
>   	struct spi_controller *master;
> -	struct mt7621_spi *rs;
>   
>   	master = dev_get_drvdata(&pdev->dev);
> -	rs = spi_controller_get_devdata(master);
>   
>   	spi_unregister_controller(master);
> -	clk_disable_unprepare(rs->clk);
>   
>   	return 0;
>   }

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-08-29 11:28 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-27 11:41 [PATCH 0/4] spi: mt7621: Fix an erroneous message + clean-ups Christophe JAILLET
2022-08-27 11:41 ` Christophe JAILLET
2022-08-27 11:42 ` [PATCH 1/4] spi: mt7621: Fix an error message in mt7621_spi_probe() Christophe JAILLET
2022-08-27 11:42   ` Christophe JAILLET
2022-08-29 11:07   ` Matthias Brugger
2022-08-29 11:07     ` Matthias Brugger
2022-08-30  9:46   ` AngeloGioacchino Del Regno
2022-08-30  9:46     ` AngeloGioacchino Del Regno
2022-08-27 11:42 ` [PATCH 2/4] spi: mt7621: Use the devm_clk_get_enabled() helper to simplify error handling Christophe JAILLET
2022-08-27 11:42   ` Christophe JAILLET
2022-08-29 11:14   ` Matthias Brugger [this message]
2022-08-29 11:14     ` Matthias Brugger
2022-08-30  9:46   ` AngeloGioacchino Del Regno
2022-08-30  9:46     ` AngeloGioacchino Del Regno
2022-08-27 11:42 ` [PATCH 3/4] spi: mt7621: Use devm_spi_register_controller() Christophe JAILLET
2022-08-27 11:42   ` Christophe JAILLET
2022-08-29 11:16   ` Matthias Brugger
2022-08-29 11:16     ` Matthias Brugger
2022-08-27 11:42 ` [PATCH 4/4] spi: mt7621: Remove 'clk' from 'struct mt7621_spi' Christophe JAILLET
2022-08-27 11:42   ` Christophe JAILLET
2022-08-29 11:18   ` Matthias Brugger
2022-08-29 11:18     ` Matthias Brugger
2022-08-29 17:23     ` Christophe JAILLET
2022-08-29 17:23       ` Christophe JAILLET
2022-08-29 20:54 ` [PATCH 0/4] spi: mt7621: Fix an erroneous message + clean-ups Mark Brown
2022-08-29 20:54   ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ae3523f9-6420-9413-30cf-ab6a081c8500@gmail.com \
    --to=matthias.bgg@gmail.com \
    --cc=blogic@openwrt.org \
    --cc=broonie@kernel.org \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=gregkh@linuxfoundation.org \
    --cc=kernel-janitors@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=neil@brown.name \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.