]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
memory: tegra: Set BPMP msg flags to reset IPC channels
authorThierry Reding <treding@nvidia.com>
Mon, 9 Oct 2023 10:05:57 +0000 (15:35 +0530)
committerThierry Reding <treding@nvidia.com>
Fri, 13 Oct 2023 12:23:41 +0000 (14:23 +0200)
Set the 'TEGRA_BPMP_MESSAGE_RESET' bit in newly added 'flags' field
of 'struct tegra_bpmp_message' to request for the reset of BPMP IPC
channels. This is used along with the 'suspended' check in BPMP driver
for handling early bandwidth requests due to the hotplug of CPU's
during system resume before the driver gets resumed.

Fixes: f41e1442ac5b ("cpufreq: tegra194: add OPP support and set bandwidth")
Co-developed-by: Sumit Gupta <sumitg@nvidia.com>
Signed-off-by: Sumit Gupta <sumitg@nvidia.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/memory/tegra/tegra234.c

index 9e5b5dbd9c8dfb64ef1002323dc6cb39d3ab98cb..2845041f32d69f88e041746d70a2b7e5e0396ea7 100644 (file)
@@ -986,6 +986,10 @@ static int tegra234_mc_icc_set(struct icc_node *src, struct icc_node *dst)
        msg.rx.data = &bwmgr_resp;
        msg.rx.size = sizeof(bwmgr_resp);
 
+       if (pclient->bpmp_id >= TEGRA_ICC_BPMP_CPU_CLUSTER0 &&
+           pclient->bpmp_id <= TEGRA_ICC_BPMP_CPU_CLUSTER2)
+               msg.flags = TEGRA_BPMP_MESSAGE_RESET;
+
        ret = tegra_bpmp_transfer(mc->bpmp, &msg);
        if (ret < 0) {
                dev_err(mc->dev, "BPMP transfer failed: %d\n", ret);