[PATCH v2 0/4] Add Tegra238 BPMP support and fix stale EMC clock rate
From: Johnny Liu
Date: Wed Oct 28 2026 - 11:51:11 EST
EMC clock scaling is handled by the BPMP firmware without kernel
involvement, so clk_get_rate() on the EMC clock can return a stale value
cached by the common clock framework. This series makes the EMC clock
rate uncached on Tegra234, Tegra238 and Tegra264, and adds the pieces
needed to identify the EMC clock on each of these chips.
The EMC clock ID differs per chip (TEGRA234_CLK_EMC=31,
TEGRA238_CLK_EMC=43, TEGRA264_CLK_EMC=290), while the
"nvidia,tegra186-bpmp" fallback compatible and the tegra186_soc data are
shared across several chips. To avoid detecting the chip at runtime, the
EMC clock ID is carried in per-SoC BPMP data selected by the device tree
compatible.
Patch 1 adds the "nvidia,tegra238-bpmp" compatible to the binding,
together with the Tegra238 clock ID header. Patch 2 adds dedicated SoC
data for Tegra234, Tegra238 and Tegra264, selected by their specific
compatibles, and builds the BPMP driver for CONFIG_ARCH_TEGRA_238_SOC.
Patch 3 adds an emc_clk_id field to struct tegra_bpmp_soc and sets it
using the TEGRA*_CLK_EMC clock ID macros. Patch 4 then sets
CLK_GET_RATE_NOCACHE on the clock matching that ID.
The series touches both the clock and the firmware code. Patch 4 depends
on patch 3, which in turn depends on patch 1, so I would suggest taking
the whole series through the Tegra tree with an Acked-by from the clock
maintainers.
Changes in v2:
- Squash "dt-bindings: clock: Add Tegra238 BPMP clock IDs" into
"dt-bindings: firmware: tegra186-bpmp: Add Tegra238 compatible".
- Reword the binding commit message to state that the Tegra238 SoC is
fully compatible with the Tegra186 BPMP.
v1: https://lore.kernel.org/all/20261028084900.1047287-1-johnliu@xxxxxxxxxx/
Johnny Liu (4):
dt-bindings: firmware: tegra186-bpmp: Add Tegra238 BPMP
firmware: tegra: bpmp: Add Tegra238 support
firmware: tegra: bpmp: Add per-SoC EMC clock ID
clk: tegra: bpmp: Do not cache the EMC clock rate
.../firmware/nvidia,tegra186-bpmp.yaml | 1 +
drivers/clk/tegra/clk-bpmp.c | 3 +
drivers/firmware/tegra/Makefile | 1 +
drivers/firmware/tegra/bpmp.c | 61 ++--
include/dt-bindings/clock/nvidia,tegra238.h | 279 ++++++++++++++++++
include/soc/tegra/bpmp.h | 1 +
6 files changed, 329 insertions(+), 17 deletions(-)
create mode 100644 include/dt-bindings/clock/nvidia,tegra238.h
--
2.43.0