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

Jon Hunter jonathanh at nvidia.com
Fri Jun 9 07:49:56 PDT 2023


On 09/06/2023 15:42, Thierry Reding wrote:
> From: Thierry Reding <treding at 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 at nvidia.com>
> Signed-off-by: Thierry Reding <treding at 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 at nvidia.com>

Thanks
Jon

-- 
nvpublic



More information about the linux-arm-kernel mailing list