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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 09/06/2023 15:42, Thierry Reding wrote:
From: Thierry Reding <treding@xxxxxxxxxx>

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@xxxxxxxxxx>
Signed-off-by: Thierry Reding <treding@xxxxxxxxxx>
---
  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@xxxxxxxxxx>

Thanks
Jon

--
nvpublic



[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux