summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2026-08-04 21:49:55 +0200
committerArnd Bergmann <arnd@arndb.de>2026-08-04 21:49:57 +0200
commit3a83c24d747b2700bd11990e9546a89a95275ea3 (patch)
tree4c2d71809929e80109cd175736935f83130047c3 /drivers/soc
parent484ddb357c6cfa95466c8b019aaec00e006e211b (diff)
parent97ffe9cb67ccafb4644f820ef68662217b76c224 (diff)
Merge tag 'tegra-for-7.3-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/drivers
soc/tegra: Changes for v7.3-rc1 Various small fixes for multi-socket devices, redundant error prints, a Kconfig dependency as well as a patch to remove FUSE data as an entropy source. * tag 'tegra-for-7.3-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux: soc/tegra: Add PM dependency to SOC_TEGRA_PMC Kconfig soc/tegra: fuse: Use device-specific instance in suspend/resume soc/tegra: fuse: Do not use fuse data as entropy source soc/tegra: cbb: Remove redundant dev_err() soc/tegra: pmc: Don't register sys-off handler for multi-socket devices Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/tegra/Kconfig1
-rw-r--r--drivers/soc/tegra/cbb/tegra194-cbb.c9
-rw-r--r--drivers/soc/tegra/fuse/fuse-tegra.c5
-rw-r--r--drivers/soc/tegra/fuse/fuse-tegra30.c24
-rw-r--r--drivers/soc/tegra/pmc.c21
5 files changed, 20 insertions, 40 deletions
diff --git a/drivers/soc/tegra/Kconfig b/drivers/soc/tegra/Kconfig
index 073346c1542b..8b6fdb9ad1ea 100644
--- a/drivers/soc/tegra/Kconfig
+++ b/drivers/soc/tegra/Kconfig
@@ -171,6 +171,7 @@ config SOC_TEGRA_FLOWCTRL
config SOC_TEGRA_PMC
bool
+ depends on PM
select GENERIC_PINCONF
select IRQ_DOMAIN_HIERARCHY
select PM_OPP
diff --git a/drivers/soc/tegra/cbb/tegra194-cbb.c b/drivers/soc/tegra/cbb/tegra194-cbb.c
index 2f69e104c838..69ef929e04f8 100644
--- a/drivers/soc/tegra/cbb/tegra194-cbb.c
+++ b/drivers/soc/tegra/cbb/tegra194-cbb.c
@@ -2072,20 +2072,15 @@ static int tegra194_cbb_interrupt_enable(struct tegra_cbb *cbb)
if (priv->sec_irq) {
err = devm_request_irq(dev, priv->sec_irq, tegra194_cbb_err_isr, 0, dev_name(dev),
priv);
- if (err) {
- dev_err(dev, "failed to register interrupt %u: %d\n", priv->sec_irq, err);
+ if (err)
return err;
- }
}
if (priv->nonsec_irq) {
err = devm_request_irq(dev, priv->nonsec_irq, tegra194_cbb_err_isr, 0,
dev_name(dev), priv);
- if (err) {
- dev_err(dev, "failed to register interrupt %u: %d\n", priv->nonsec_irq,
- err);
+ if (err)
return err;
- }
}
return 0;
diff --git a/drivers/soc/tegra/fuse/fuse-tegra.c b/drivers/soc/tegra/fuse/fuse-tegra.c
index 78b054d43a42..39654964c35c 100644
--- a/drivers/soc/tegra/fuse/fuse-tegra.c
+++ b/drivers/soc/tegra/fuse/fuse-tegra.c
@@ -258,6 +258,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);
@@ -271,6 +272,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;
@@ -278,6 +281,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;
/*
@@ -294,6 +298,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)
diff --git a/drivers/soc/tegra/fuse/fuse-tegra30.c b/drivers/soc/tegra/fuse/fuse-tegra30.c
index 524fa1b0cd3d..2fad8b13a3b9 100644
--- a/drivers/soc/tegra/fuse/fuse-tegra30.c
+++ b/drivers/soc/tegra/fuse/fuse-tegra30.c
@@ -64,28 +64,6 @@ static u32 tegra30_fuse_read(struct tegra_fuse *fuse, unsigned int offset)
return value;
}
-static void __init tegra30_fuse_add_randomness(void)
-{
- u32 randomness[12];
-
- randomness[0] = tegra_sku_info.sku_id;
- randomness[1] = tegra_read_straps();
- randomness[2] = tegra_read_chipid();
- randomness[3] = tegra_sku_info.cpu_process_id << 16;
- randomness[3] |= tegra_sku_info.soc_process_id;
- randomness[4] = tegra_sku_info.cpu_speedo_id << 16;
- randomness[4] |= tegra_sku_info.soc_speedo_id;
- randomness[5] = tegra_fuse_read_early(FUSE_VENDOR_CODE);
- randomness[6] = tegra_fuse_read_early(FUSE_FAB_CODE);
- randomness[7] = tegra_fuse_read_early(FUSE_LOT_CODE_0);
- randomness[8] = tegra_fuse_read_early(FUSE_LOT_CODE_1);
- randomness[9] = tegra_fuse_read_early(FUSE_WAFER_ID);
- randomness[10] = tegra_fuse_read_early(FUSE_X_COORDINATE);
- randomness[11] = tegra_fuse_read_early(FUSE_Y_COORDINATE);
-
- add_device_randomness(randomness, sizeof(randomness));
-}
-
static void __init tegra30_fuse_init(struct tegra_fuse *fuse)
{
fuse->read_early = tegra30_fuse_read_early;
@@ -95,8 +73,6 @@ static void __init tegra30_fuse_init(struct tegra_fuse *fuse)
if (fuse->soc->speedo_init)
fuse->soc->speedo_init(&tegra_sku_info);
-
- tegra30_fuse_add_randomness();
}
#endif
diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
index f419a5395545..41ed716d5857 100644
--- a/drivers/soc/tegra/pmc.c
+++ b/drivers/soc/tegra/pmc.c
@@ -3074,15 +3074,18 @@ static int tegra_pmc_probe(struct platform_device *pdev)
}
}
- err = devm_register_sys_off_handler(&pdev->dev,
- SYS_OFF_MODE_RESTART,
- SYS_OFF_PRIO_LOW,
- tegra_pmc_restart_handler,
- pmc);
- if (err) {
- dev_err(&pdev->dev, "failed to register sys-off handler: %d\n",
- err);
- return err;
+ if (dev_to_node(&pdev->dev) == NUMA_NO_NODE) {
+ err = devm_register_sys_off_handler(&pdev->dev,
+ SYS_OFF_MODE_RESTART,
+ SYS_OFF_PRIO_LOW,
+ tegra_pmc_restart_handler,
+ pmc);
+ if (err) {
+ dev_err(&pdev->dev,
+ "failed to register sys-off handler: %d\n",
+ err);
+ return err;
+ }
}
/*