memory: tegra186-emc: Handle errors in BPMP response
authorMikko Perttunen <mperttunen@nvidia.com>
Wed, 15 Sep 2021 08:55:15 +0000 (11:55 +0300)
committerKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Mon, 20 Sep 2021 08:33:28 +0000 (10:33 +0200)
The return value from tegra_bpmp_transfer indicates the success or
failure of the IPC transaction with BPMP. If the transaction
succeeded, we also need to check the actual command's result code.
Add code to do this.

Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
Link: https://lore.kernel.org/r/20210915085517.1669675-3-mperttunen@nvidia.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
drivers/memory/tegra/tegra186-emc.c

index d65e7c2a580b6066f9019273bd0fa71ca4aa7b59..abc0c2eeaab700d9cab38fa098f797ec044f13d2 100644 (file)
@@ -197,6 +197,10 @@ static int tegra186_emc_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "failed to EMC DVFS pairs: %d\n", err);
                goto put_bpmp;
        }
+       if (msg.rx.ret < 0) {
+               dev_err(&pdev->dev, "EMC DVFS MRQ failed: %d (BPMP error code)\n", msg.rx.ret);
+               goto put_bpmp;
+       }
 
        emc->debugfs.min_rate = ULONG_MAX;
        emc->debugfs.max_rate = 0;