[PATCH 8/9] firmware: tegra: Enable BPMP support on Tegra234

Jon Hunter jonathanh at nvidia.com
Mon Sep 7 15:43:31 EDT 2020


On 16/07/2020 15:18, Thierry Reding wrote:
> From: Thierry Reding <treding at nvidia.com>
> 
> Enable support for the BPMP on Tegra234 to avoid relying on Tegra194
> being enabled to pull in the needed OF device ID table entry.
> 
> On simulation platforms the BPMP hasn't booted up yet by the time we
> probe the BPMP driver and the BPMP hasn't had a chance to mark the
> doorbell as ringable by the CCPLEX. This corresponding check in the
> BPMP driver will therefore fail. Work around this by disabling the
> check on simulation platforms.
> 
> Signed-off-by: Thierry Reding <treding at nvidia.com>
> ---
>  drivers/firmware/tegra/bpmp.c | 3 ++-
>  drivers/mailbox/tegra-hsp.c   | 9 ++++++++-
>  2 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/firmware/tegra/bpmp.c b/drivers/firmware/tegra/bpmp.c
> index 4d93d8925e14..0742a90cb844 100644
> --- a/drivers/firmware/tegra/bpmp.c
> +++ b/drivers/firmware/tegra/bpmp.c
> @@ -856,7 +856,8 @@ static const struct tegra_bpmp_soc tegra210_soc = {
>  
>  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_194_SOC) || \
> +    IS_ENABLED(CONFIG_ARCH_TEGRA_234_SOC)
>  	{ .compatible = "nvidia,tegra186-bpmp", .data = &tegra186_soc },
>  #endif
>  #if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC)
> diff --git a/drivers/mailbox/tegra-hsp.c b/drivers/mailbox/tegra-hsp.c
> index 834b35dc3b13..e07091d71986 100644
> --- a/drivers/mailbox/tegra-hsp.c
> +++ b/drivers/mailbox/tegra-hsp.c
> @@ -13,6 +13,8 @@
>  #include <linux/pm.h>
>  #include <linux/slab.h>
>  
> +#include <soc/tegra/fuse.h>
> +
>  #include <dt-bindings/mailbox/tegra186-hsp.h>
>  
>  #include "mailbox.h"
> @@ -322,7 +324,12 @@ static int tegra_hsp_doorbell_startup(struct mbox_chan *chan)
>  	if (!ccplex)
>  		return -ENODEV;
>  
> -	if (!tegra_hsp_doorbell_can_ring(db))
> +	/*
> +	 * On simulation platforms the BPMP hasn't had a chance yet to mark
> +	 * the doorbell as ringable by the CCPLEX, so we want to skip extra
> +	 * checks here.
> +	 */
> +	if (tegra_is_silicon() && !tegra_hsp_doorbell_can_ring(db))
>  		return -ENODEV;
>  
>  	spin_lock_irqsave(&hsp->lock, flags);
> 


Reviewed-by: Jon Hunter <jonathanh at nvidia.com>

Cheers
Jon

-- 
nvpublic



More information about the linux-arm-kernel mailing list