From 8036a9525f65908082f5e112b71a5c1a746fd16c Mon Sep 17 00:00:00 2001 From: Viswanath L Date: Mon, 8 Nov 2021 06:52:38 +0000 Subject: [PATCH] nvadsp: Pass platform info to ADSP Provision is made to pass the Tegra platform information to ADSP ("nvidia,tegra_platform" DT property, as per enum tegra_platform); this will be useful to convey whether the platform is CMODEL, in which case the ADSP may take CMODEL specific paths, like using HSP shared interrupts. Upper 16 bits of nvadsp_os_args.chip_id is used to convey the platform information; this may be improved in future as a separate structure member. Bug 200745795 Bug 200746669 Change-Id: Ibd9423eebb06fc4d243c132ab1cb7c6dc558ba5e Signed-off-by: Viswanath L Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2622156 Reviewed-by: svcacv Reviewed-by: svc_kernel_abi Reviewed-by: Mohan Kumar D Reviewed-by: Asha Talambedu Reviewed-by: Sharad Gupta Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit Tested-by: mobile promotions --- drivers/platform/tegra/nvadsp/dev.c | 3 +++ drivers/platform/tegra/nvadsp/dev.h | 3 +++ drivers/platform/tegra/nvadsp/os.c | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/drivers/platform/tegra/nvadsp/dev.c b/drivers/platform/tegra/nvadsp/dev.c index 5e8c07c4..a9f505b0 100644 --- a/drivers/platform/tegra/nvadsp/dev.c +++ b/drivers/platform/tegra/nvadsp/dev.c @@ -293,6 +293,9 @@ static int __init nvadsp_parse_dt(struct platform_device *pdev) drv_data->adsp_os_secload = of_property_read_bool(dev->of_node, "nvidia,adsp_os_secload"); + of_property_read_u32(dev->of_node, "nvidia,tegra_platform", + &drv_data->tegra_platform); + if (drv_data->adsp_unit_fpga) { for (iter = 0; iter < ADSP_UNIT_FPGA_RESET_END; iter++) { if (of_property_read_u32_index(dev->of_node, diff --git a/drivers/platform/tegra/nvadsp/dev.h b/drivers/platform/tegra/nvadsp/dev.h index ab0e1b67..f05cd10d 100644 --- a/drivers/platform/tegra/nvadsp/dev.h +++ b/drivers/platform/tegra/nvadsp/dev.h @@ -238,6 +238,9 @@ struct nvadsp_drv_data { /* CO mem in backdoor boot */ struct resource co_mem; + + /* enum tegra_platform */ + u32 tegra_platform; }; #define ADSP_CONFIG 0x04 diff --git a/drivers/platform/tegra/nvadsp/os.c b/drivers/platform/tegra/nvadsp/os.c index ab465b8d..da1356ba 100644 --- a/drivers/platform/tegra/nvadsp/os.c +++ b/drivers/platform/tegra/nvadsp/os.c @@ -797,6 +797,13 @@ static void nvadsp_set_shared_mem(struct platform_device *pdev, */ os_args->chip_id = chip_id; + /* + * Tegra platform is encoded in the upper 16 bits + * of chip_id; can be improved to make this a + * separate member in nvadsp_os_args + */ + os_args->chip_id |= (drv_data->tegra_platform << 16); + drv_data->shared_adsp_os_data = shared_mem; }