drivers/soc/tegra/fuse/fuse-tegra.c | 5 +++++ 1 file changed, 5 insertions(+)
Avoid using the default fuse instance in suspend/resume callbacks, as it
always runs the suspend/resume callbacks for the default instance rather
than the device’s own.
Get the correct fuse instance by using `dev_get_drvdata()`.
Signed-off-by: Kartik Rajput <kkartik@nvidia.com>
---
drivers/soc/tegra/fuse/fuse-tegra.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/soc/tegra/fuse/fuse-tegra.c b/drivers/soc/tegra/fuse/fuse-tegra.c
index 291484595dcf..f38107d04ed6 100644
--- a/drivers/soc/tegra/fuse/fuse-tegra.c
+++ b/drivers/soc/tegra/fuse/fuse-tegra.c
@@ -259,6 +259,7 @@ static int tegra_fuse_probe(struct platform_device *pdev)
static int __maybe_unused tegra_fuse_runtime_resume(struct device *dev)
{
+ struct tegra_fuse *fuse = dev_get_drvdata(dev);
int err;
err = clk_prepare_enable(fuse->clk);
@@ -272,6 +273,8 @@ static int __maybe_unused tegra_fuse_runtime_resume(struct device *dev)
static int __maybe_unused tegra_fuse_runtime_suspend(struct device *dev)
{
+ struct tegra_fuse *fuse = dev_get_drvdata(dev);
+
clk_disable_unprepare(fuse->clk);
return 0;
@@ -279,6 +282,7 @@ static int __maybe_unused tegra_fuse_runtime_suspend(struct device *dev)
static int __maybe_unused tegra_fuse_suspend(struct device *dev)
{
+ struct tegra_fuse *fuse = dev_get_drvdata(dev);
int ret;
/*
@@ -295,6 +299,7 @@ static int __maybe_unused tegra_fuse_suspend(struct device *dev)
static int __maybe_unused tegra_fuse_resume(struct device *dev)
{
+ struct tegra_fuse *fuse = dev_get_drvdata(dev);
int ret = 0;
if (fuse->soc->clk_suspend_on)
--
2.43.0
On 14/05/2026 06:35, Kartik Rajput wrote:
> Avoid using the default fuse instance in suspend/resume callbacks, as it
> always runs the suspend/resume callbacks for the default instance rather
> than the device’s own.
>
> Get the correct fuse instance by using `dev_get_drvdata()`.
>
> Signed-off-by: Kartik Rajput <kkartik@nvidia.com>
> ---
> drivers/soc/tegra/fuse/fuse-tegra.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/soc/tegra/fuse/fuse-tegra.c b/drivers/soc/tegra/fuse/fuse-tegra.c
> index 291484595dcf..f38107d04ed6 100644
> --- a/drivers/soc/tegra/fuse/fuse-tegra.c
> +++ b/drivers/soc/tegra/fuse/fuse-tegra.c
> @@ -259,6 +259,7 @@ static int tegra_fuse_probe(struct platform_device *pdev)
>
> static int __maybe_unused tegra_fuse_runtime_resume(struct device *dev)
> {
> + struct tegra_fuse *fuse = dev_get_drvdata(dev);
> int err;
>
> err = clk_prepare_enable(fuse->clk);
> @@ -272,6 +273,8 @@ static int __maybe_unused tegra_fuse_runtime_resume(struct device *dev)
>
> static int __maybe_unused tegra_fuse_runtime_suspend(struct device *dev)
> {
> + struct tegra_fuse *fuse = dev_get_drvdata(dev);
> +
> clk_disable_unprepare(fuse->clk);
>
> return 0;
> @@ -279,6 +282,7 @@ static int __maybe_unused tegra_fuse_runtime_suspend(struct device *dev)
>
> static int __maybe_unused tegra_fuse_suspend(struct device *dev)
> {
> + struct tegra_fuse *fuse = dev_get_drvdata(dev);
> int ret;
>
> /*
> @@ -295,6 +299,7 @@ static int __maybe_unused tegra_fuse_suspend(struct device *dev)
>
> static int __maybe_unused tegra_fuse_resume(struct device *dev)
> {
> + struct tegra_fuse *fuse = dev_get_drvdata(dev);
> int ret = 0;
>
> if (fuse->soc->clk_suspend_on)
So now we have both local and global variables called 'fuse'. It would
be better to have a different name to distinguish between these.
Jon
--
nvpublic
© 2016 - 2026 Red Hat, Inc.