[PATCH v3 3/4] firmware: tegra: bpmp: Add Tegra238 support
From: Johnny Liu
Date: Mon Nov 02 2026 - 07:23:54 EST
Tegra238 has its own BPMP compatible, "nvidia,tegra238-bpmp". Add
dedicated tegra238_soc data for it, including its EMC clock ID
(TEGRA238_CLK_EMC=43), and select it through the new compatible.
Also build bpmp-tegra186.o and the shared match table for
CONFIG_ARCH_TEGRA_238_SOC, so that a Tegra238-only configuration binds
the driver.
Signed-off-by: Johnny Liu <johnliu@xxxxxxxxxx>
---
drivers/firmware/tegra/Makefile | 1 +
drivers/firmware/tegra/bpmp.c | 9 +++++++++
2 files changed, 10 insertions(+)
diff --git a/drivers/firmware/tegra/Makefile b/drivers/firmware/tegra/Makefile
index 97f7a5db9d0a..21e87f3afffe 100644
--- a/drivers/firmware/tegra/Makefile
+++ b/drivers/firmware/tegra/Makefile
@@ -4,6 +4,7 @@ tegra-bpmp-$(CONFIG_ARCH_TEGRA_210_SOC) += bpmp-tegra210.o
tegra-bpmp-$(CONFIG_ARCH_TEGRA_186_SOC) += bpmp-tegra186.o
tegra-bpmp-$(CONFIG_ARCH_TEGRA_194_SOC) += bpmp-tegra186.o
tegra-bpmp-$(CONFIG_ARCH_TEGRA_234_SOC) += bpmp-tegra186.o
+tegra-bpmp-$(CONFIG_ARCH_TEGRA_238_SOC) += bpmp-tegra186.o
tegra-bpmp-$(CONFIG_ARCH_TEGRA_264_SOC) += bpmp-tegra186.o
tegra-bpmp-$(CONFIG_DEBUG_FS) += bpmp-debugfs.o
tegra-bpmp-$(CONFIG_SYSFS) += bpmp-sysfs.o
diff --git a/drivers/firmware/tegra/bpmp.c b/drivers/firmware/tegra/bpmp.c
index 5d97a8600fd1..06da888535dc 100644
--- a/drivers/firmware/tegra/bpmp.c
+++ b/drivers/firmware/tegra/bpmp.c
@@ -21,6 +21,7 @@
#include <soc/tegra/bpmp-abi.h>
#include <soc/tegra/ivc.h>
+#include <dt-bindings/clock/nvidia,tegra238.h>
#include <dt-bindings/clock/nvidia,tegra264.h>
#include <dt-bindings/clock/tegra234-clock.h>
@@ -1134,6 +1135,7 @@ static const struct dev_pm_ops tegra_bpmp_pm_ops = {
#if IS_ENABLED(CONFIG_ARCH_TEGRA_186_SOC) || \
IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) || \
IS_ENABLED(CONFIG_ARCH_TEGRA_234_SOC) || \
+ IS_ENABLED(CONFIG_ARCH_TEGRA_238_SOC) || \
IS_ENABLED(CONFIG_ARCH_TEGRA_264_SOC)
#define TEGRA186_BPMP_SOC_COMMON \
.channels = { \
@@ -1163,6 +1165,11 @@ static const struct tegra_bpmp_soc tegra234_soc = {
.emc_clk_id = TEGRA234_CLK_EMC,
};
+static const struct tegra_bpmp_soc tegra238_soc = {
+ TEGRA186_BPMP_SOC_COMMON,
+ .emc_clk_id = TEGRA238_CLK_EMC,
+};
+
static const struct tegra_bpmp_soc tegra264_soc = {
TEGRA186_BPMP_SOC_COMMON,
.emc_clk_id = TEGRA264_CLK_EMC,
@@ -1196,9 +1203,11 @@ static const struct of_device_id tegra_bpmp_match[] = {
#if IS_ENABLED(CONFIG_ARCH_TEGRA_186_SOC) || \
IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) || \
IS_ENABLED(CONFIG_ARCH_TEGRA_234_SOC) || \
+ IS_ENABLED(CONFIG_ARCH_TEGRA_238_SOC) || \
IS_ENABLED(CONFIG_ARCH_TEGRA_264_SOC)
{ .compatible = "nvidia,tegra186-bpmp", .data = &tegra186_soc },
{ .compatible = "nvidia,tegra234-bpmp", .data = &tegra234_soc },
+ { .compatible = "nvidia,tegra238-bpmp", .data = &tegra238_soc },
{ .compatible = "nvidia,tegra264-bpmp", .data = &tegra264_soc },
#endif
#if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC)
--
2.43.0