diff mbox series

[1/2] soc/tegra: pmc: Simplify debugfs initialization

Message ID 20230609144225.3898934-1-thierry.reding@gmail.com (mailing list archive)
State New, archived
Headers show
Series [1/2] soc/tegra: pmc: Simplify debugfs initialization | expand

Commit Message

Thierry Reding June 9, 2023, 2:42 p.m. UTC
From: Thierry Reding <treding@nvidia.com>

debugfs calls should generally not be error-checked to simplify the case
where debugfs is disabled. Since this driver is built-in and has the
sysfs bind/unbind attributes disabled, it cannot be unloaded, so there
is no need to hold onto a reference to the debugfs files that are
created.

We can further simplify this by moving the debugfs file creation to a
later stage to avoid any cleanup we might have to do during error unwind
operations. This is also a little cleaner because the debugfs file
relies on data structures that are created at a later point than when
the file was previously created.

Suggested-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
---
 drivers/soc/tegra/pmc.c | 26 ++++----------------------
 1 file changed, 4 insertions(+), 22 deletions(-)

Comments

Jon Hunter June 9, 2023, 2:49 p.m. UTC | #1
On 09/06/2023 15:42, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
> 
> debugfs calls should generally not be error-checked to simplify the case
> where debugfs is disabled. Since this driver is built-in and has the
> sysfs bind/unbind attributes disabled, it cannot be unloaded, so there
> is no need to hold onto a reference to the debugfs files that are
> created.
> 
> We can further simplify this by moving the debugfs file creation to a
> later stage to avoid any cleanup we might have to do during error unwind
> operations. This is also a little cleaner because the debugfs file
> relies on data structures that are created at a later point than when
> the file was previously created.
> 
> Suggested-by: Jon Hunter <jonathanh@nvidia.com>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
>   drivers/soc/tegra/pmc.c | 26 ++++----------------------
>   1 file changed, 4 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
> index b562b005744d..438c30c5d473 100644
> --- a/drivers/soc/tegra/pmc.c
> +++ b/drivers/soc/tegra/pmc.c
> @@ -396,7 +396,6 @@ struct tegra_pmc_soc {
>    * @clk: pointer to pclk clock
>    * @soc: pointer to SoC data structure
>    * @tz_only: flag specifying if the PMC can only be accessed via TrustZone
> - * @debugfs: pointer to debugfs entry
>    * @rate: currently configured rate of pclk
>    * @suspend_mode: lowest suspend mode available
>    * @cpu_good_time: CPU power good time (in microseconds)
> @@ -431,7 +430,6 @@ struct tegra_pmc {
>   	void __iomem *aotag;
>   	void __iomem *scratch;
>   	struct clk *clk;
> -	struct dentry *debugfs;
>   
>   	const struct tegra_pmc_soc *soc;
>   	bool tz_only;
> @@ -1190,16 +1188,6 @@ static int powergate_show(struct seq_file *s, void *data)
>   
>   DEFINE_SHOW_ATTRIBUTE(powergate);
>   
> -static int tegra_powergate_debugfs_init(void)
> -{
> -	pmc->debugfs = debugfs_create_file("powergate", S_IRUGO, NULL, NULL,
> -					   &powergate_fops);
> -	if (!pmc->debugfs)
> -		return -ENOMEM;
> -
> -	return 0;
> -}
> -
>   static int tegra_powergate_of_get_clks(struct tegra_powergate *pg,
>   				       struct device_node *np)
>   {
> @@ -3026,19 +3014,13 @@ static int tegra_pmc_probe(struct platform_device *pdev)
>   
>   	tegra_pmc_reset_sysfs_init(pmc);
>   
> -	if (IS_ENABLED(CONFIG_DEBUG_FS)) {
> -		err = tegra_powergate_debugfs_init();
> -		if (err < 0)
> -			goto cleanup_sysfs;
> -	}
> -
>   	err = tegra_pmc_pinctrl_init(pmc);
>   	if (err)
> -		goto cleanup_debugfs;
> +		goto cleanup_sysfs;
>   
>   	err = tegra_pmc_regmap_init(pmc);
>   	if (err < 0)
> -		goto cleanup_debugfs;
> +		goto cleanup_sysfs;
>   
>   	err = tegra_powergate_init(pmc, pdev->dev.of_node);
>   	if (err < 0)
> @@ -3061,12 +3043,12 @@ static int tegra_pmc_probe(struct platform_device *pdev)
>   	if (pmc->soc->set_wake_filters)
>   		pmc->soc->set_wake_filters(pmc);
>   
> +	debugfs_create_file("powergate", 0444, NULL, NULL, &powergate_fops);
> +
>   	return 0;
>   
>   cleanup_powergates:
>   	tegra_powergate_remove_all(pdev->dev.of_node);
> -cleanup_debugfs:
> -	debugfs_remove(pmc->debugfs);
>   cleanup_sysfs:
>   	device_remove_file(&pdev->dev, &dev_attr_reset_reason);
>   	device_remove_file(&pdev->dev, &dev_attr_reset_level);

Great!

Reviewed-by: Jon Hunter <jonathanh@nvidia.com>

Thanks
Jon
diff mbox series

Patch

diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
index b562b005744d..438c30c5d473 100644
--- a/drivers/soc/tegra/pmc.c
+++ b/drivers/soc/tegra/pmc.c
@@ -396,7 +396,6 @@  struct tegra_pmc_soc {
  * @clk: pointer to pclk clock
  * @soc: pointer to SoC data structure
  * @tz_only: flag specifying if the PMC can only be accessed via TrustZone
- * @debugfs: pointer to debugfs entry
  * @rate: currently configured rate of pclk
  * @suspend_mode: lowest suspend mode available
  * @cpu_good_time: CPU power good time (in microseconds)
@@ -431,7 +430,6 @@  struct tegra_pmc {
 	void __iomem *aotag;
 	void __iomem *scratch;
 	struct clk *clk;
-	struct dentry *debugfs;
 
 	const struct tegra_pmc_soc *soc;
 	bool tz_only;
@@ -1190,16 +1188,6 @@  static int powergate_show(struct seq_file *s, void *data)
 
 DEFINE_SHOW_ATTRIBUTE(powergate);
 
-static int tegra_powergate_debugfs_init(void)
-{
-	pmc->debugfs = debugfs_create_file("powergate", S_IRUGO, NULL, NULL,
-					   &powergate_fops);
-	if (!pmc->debugfs)
-		return -ENOMEM;
-
-	return 0;
-}
-
 static int tegra_powergate_of_get_clks(struct tegra_powergate *pg,
 				       struct device_node *np)
 {
@@ -3026,19 +3014,13 @@  static int tegra_pmc_probe(struct platform_device *pdev)
 
 	tegra_pmc_reset_sysfs_init(pmc);
 
-	if (IS_ENABLED(CONFIG_DEBUG_FS)) {
-		err = tegra_powergate_debugfs_init();
-		if (err < 0)
-			goto cleanup_sysfs;
-	}
-
 	err = tegra_pmc_pinctrl_init(pmc);
 	if (err)
-		goto cleanup_debugfs;
+		goto cleanup_sysfs;
 
 	err = tegra_pmc_regmap_init(pmc);
 	if (err < 0)
-		goto cleanup_debugfs;
+		goto cleanup_sysfs;
 
 	err = tegra_powergate_init(pmc, pdev->dev.of_node);
 	if (err < 0)
@@ -3061,12 +3043,12 @@  static int tegra_pmc_probe(struct platform_device *pdev)
 	if (pmc->soc->set_wake_filters)
 		pmc->soc->set_wake_filters(pmc);
 
+	debugfs_create_file("powergate", 0444, NULL, NULL, &powergate_fops);
+
 	return 0;
 
 cleanup_powergates:
 	tegra_powergate_remove_all(pdev->dev.of_node);
-cleanup_debugfs:
-	debugfs_remove(pmc->debugfs);
 cleanup_sysfs:
 	device_remove_file(&pdev->dev, &dev_attr_reset_reason);
 	device_remove_file(&pdev->dev, &dev_attr_reset_level);