mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-23 17:55:05 +03:00
MODS Online IST SMC support
Summary: This change adds support in mods kernel driver to send messages to ATF using SMC interface in order to fetch the Online IST test results. JIRA TM-206 Change-Id: Iafa397287d7af63d77c51308345a9dc93d3a922f Signed-off-by: Anshul Goel <ansgoel@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2630148 Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com> Reviewed-by: Bibek Basu <bbasu@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: Gerrit_Virtual_Submit
This commit is contained in:
committed by
Laxman Dewangan
parent
c9052a874f
commit
aa915e1412
@@ -10,6 +10,7 @@ mods-$(CONFIG_PCI) += mods_pci.o
|
||||
mods-$(CONFIG_ACPI) += mods_acpi.o
|
||||
mods-$(CONFIG_DMA_SHARED_BUFFER) += mods_dmabuf.o
|
||||
mods-$(CONFIG_ARCH_TEGRA) += mods_smmu_drv.o
|
||||
mods-$(CONFIG_ARCH_TEGRA) += mods_oist.o
|
||||
mods-$(CONFIG_DMA_ENGINE) += mods_dma.o
|
||||
mods-$(CONFIG_DEBUG_FS) += mods_debugfs.o
|
||||
mods-$(CONFIG_TEGRA_DC) += mods_tegradc.o
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
* mods_internal.h - This file is part of NVIDIA MODS kernel driver.
|
||||
*
|
||||
* Copyright (c) 2008-2021, NVIDIA CORPORATION. All rights reserved.
|
||||
* Copyright (c) 2008-2022, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* NVIDIA MODS kernel driver is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License,
|
||||
@@ -637,6 +637,10 @@ int esc_mods_dma_free_coherent(struct mods_client *client,
|
||||
int esc_mods_dma_copy_to_user(struct mods_client *client,
|
||||
struct MODS_DMA_COPY_TO_USER *p);
|
||||
|
||||
/* oist */
|
||||
int esc_mods_oist_status(struct mods_client *client,
|
||||
struct MODS_TEGRA_OIST_STATUS *p);
|
||||
|
||||
#ifdef CONFIG_DMA_ENGINE
|
||||
int esc_mods_dma_request_channel(struct mods_client *client,
|
||||
struct MODS_DMA_HANDLE *p);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
* mods_krnl.c - This file is part of NVIDIA MODS kernel driver.
|
||||
*
|
||||
* Copyright (c) 2008-2021, NVIDIA CORPORATION. All rights reserved.
|
||||
* Copyright (c) 2008-2022, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* NVIDIA MODS kernel driver is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License,
|
||||
@@ -2546,6 +2546,11 @@ static long mods_krnl_ioctl(struct file *fp,
|
||||
MODS_IOCTL(MODS_ESC_SEND_TZ_MSG,
|
||||
esc_mods_send_trustzone_msg, MODS_TZ_PARAMS);
|
||||
break;
|
||||
|
||||
case MODS_ESC_OIST_STATUS:
|
||||
MODS_IOCTL(MODS_ESC_OIST_STATUS,
|
||||
esc_mods_oist_status, MODS_TEGRA_OIST_STATUS);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case MODS_ESC_ACQUIRE_ACCESS_TOKEN:
|
||||
|
||||
36
drivers/misc/mods/mods_oist.c
Normal file
36
drivers/misc/mods/mods_oist.c
Normal file
@@ -0,0 +1,36 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*/
|
||||
|
||||
#include "mods_internal.h"
|
||||
#include <linux/arm-smccc.h>
|
||||
|
||||
#define SMCCC_VERSION 0x80000000
|
||||
|
||||
int esc_mods_oist_status(struct mods_client *client,
|
||||
struct MODS_TEGRA_OIST_STATUS *p)
|
||||
{
|
||||
int ret = 0;
|
||||
struct arm_smccc_res res = { 0 };
|
||||
|
||||
if (p->smc_func_id == SMCCC_VERSION) {
|
||||
// For SMC version, We are only reading res.a0 value, not a1,a2,a3
|
||||
arm_smccc_1_1_smc(p->smc_func_id, res.a0, &res);
|
||||
p->smc_status = res.a0;
|
||||
} else {
|
||||
arm_smccc_1_1_smc(p->smc_func_id, p->a1, p->a2, &res);
|
||||
p->smc_status = res.a1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
* mods.h - This file is part of NVIDIA MODS kernel driver.
|
||||
*
|
||||
* Copyright (c) 2008-2021, NVIDIA CORPORATION. All rights reserved.
|
||||
* Copyright (c) 2008-2022, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* NVIDIA MODS kernel driver is free software: you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License,
|
||||
@@ -1795,6 +1795,21 @@ struct MODS_TZ_PARAMS {
|
||||
int status;
|
||||
};
|
||||
|
||||
/* Used by MODS_ESC_OIST_STATUS ioctl.
|
||||
*
|
||||
* Available only on Tegra.
|
||||
*/
|
||||
struct MODS_TEGRA_OIST_STATUS {
|
||||
/* IN */
|
||||
__u64 smc_func_id;
|
||||
/* IN */
|
||||
__u64 a1;
|
||||
/* IN */
|
||||
__u64 a2;
|
||||
/* OUT */
|
||||
__u64 smc_status;
|
||||
};
|
||||
|
||||
#define MODS_IOMMU_MAP_CONTIGUOUS 1
|
||||
|
||||
#pragma pack(pop)
|
||||
@@ -1995,5 +2010,6 @@ struct MODS_TZ_PARAMS {
|
||||
#define MODS_ESC_BPMP_SET_PCIE_STATE MODSIO(W, 136, MODS_SET_PCIE_STATE)
|
||||
#define MODS_ESC_BPMP_INIT_PCIE_EP_PLL MODSIO(W, 137, MODS_INIT_PCIE_EP_PLL)
|
||||
#define MODS_ESC_SEND_TZ_MSG MODSIO(WR, 139, MODS_TZ_PARAMS)
|
||||
#define MODS_ESC_OIST_STATUS MODSIO(WR, 140, MODS_TEGRA_OIST_STATUS)
|
||||
|
||||
#endif /* _UAPI_MODS_H_ */
|
||||
|
||||
Reference in New Issue
Block a user