mirror of
git://nv-tegra.nvidia.com/linux-hwpm.git
synced 2025-12-24 10:13:00 +03:00
Compare commits
9 Commits
rel-38
...
jetson_36.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d47dc62f40 | ||
|
|
1e751f52f0 | ||
|
|
ee08de6166 | ||
|
|
c7c63cd0fe | ||
|
|
4f84731a0a | ||
|
|
4b2fd8250d | ||
|
|
971645b49c | ||
|
|
d69752c349 | ||
|
|
6b78463b8a |
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
|
||||
# Copyright (c) 2022-2023, NVIDIA CORPORATION. All rights reserved.
|
||||
#
|
||||
# Tegra SOC HWPM
|
||||
#
|
||||
@@ -25,6 +25,7 @@ ccflags-y += -DCONFIG_TEGRA_HWPM_OOT
|
||||
CONFIG_TEGRA_FUSE_UPSTREAM := y
|
||||
ccflags-y += -DCONFIG_TEGRA_FUSE_UPSTREAM
|
||||
|
||||
LINUXINCLUDE += -I$(srctree.nvconftest)
|
||||
LINUXINCLUDE += -I$(srctree.hwpm)/include
|
||||
LINUXINCLUDE += -I$(srctree.hwpm)/drivers/tegra/hwpm/include
|
||||
LINUXINCLUDE += -I$(srctree.hwpm)/drivers/tegra/hwpm
|
||||
|
||||
@@ -52,79 +52,55 @@ CONFIG_TEGRA_HWPM_MINIMAL_IP_ENABLE=y
|
||||
ccflags-y += -DCONFIG_TEGRA_HWPM_MINIMAL_IP_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_TEGRA_GRHOST_NVDLA),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_NVDLA
|
||||
nvhwpm-t234-objs += hal/t234/ip/nvdla/t234_nvdla.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_TEGRA_GRHOST_PVA),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_PVA
|
||||
nvhwpm-t234-objs += hal/t234/ip/pva/t234_pva.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_NV_TEGRA_MC),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_MSS_CHANNEL
|
||||
nvhwpm-t234-objs += hal/t234/ip/mss_channel/t234_mss_channel.o
|
||||
endif
|
||||
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_NVENC
|
||||
nvhwpm-t234-objs += hal/t234/ip/nvenc/t234_nvenc.o
|
||||
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_OFA
|
||||
nvhwpm-t234-objs += hal/t234/ip/ofa/t234_ofa.o
|
||||
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_VIC
|
||||
nvhwpm-t234-objs += hal/t234/ip/vic/t234_vic.o
|
||||
|
||||
# Include other IPs if minimal build is not enabled.
|
||||
ifneq ($(CONFIG_TEGRA_HWPM_MINIMAL_IP_ENABLE),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_DISPLAY
|
||||
nvhwpm-t234-objs += hal/t234/ip/display/t234_display.o
|
||||
|
||||
ifeq ($(CONFIG_TEGRA_GRHOST_ISP),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_ISP
|
||||
nvhwpm-t234-objs += hal/t234/ip/isp/t234_isp.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_NVETHERNET),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_MGBE
|
||||
nvhwpm-t234-objs += hal/t234/ip/mgbe/t234_mgbe.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_NV_TEGRA_MC),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_MSS_ISO_NISO_HUBS
|
||||
nvhwpm-t234-objs += hal/t234/ip/mss_iso_niso_hubs/t234_mss_iso_niso_hubs.o
|
||||
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_MSS_MCF
|
||||
nvhwpm-t234-objs += hal/t234/ip/mss_mcf/t234_mss_mcf.o
|
||||
endif
|
||||
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_MSS_GPU_HUB
|
||||
nvhwpm-t234-objs += hal/t234/ip/mss_gpu_hub/t234_mss_gpu_hub.o
|
||||
|
||||
ifeq ($(CONFIG_TEGRA_GRHOST_NVDEC),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_NVDEC
|
||||
nvhwpm-t234-objs += hal/t234/ip/nvdec/t234_nvdec.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_TEGRA_GRHOST_NVENC),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_NVENC
|
||||
nvhwpm-t234-objs += hal/t234/ip/nvenc/t234_nvenc.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_TEGRA_GRHOST_OFA),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_OFA
|
||||
nvhwpm-t234-objs += hal/t234/ip/ofa/t234_ofa.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_PCIE_TEGRA194),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_PCIE
|
||||
nvhwpm-t234-objs += hal/t234/ip/pcie/t234_pcie.o
|
||||
endif
|
||||
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_SCF
|
||||
nvhwpm-t234-objs += hal/t234/ip/scf/t234_scf.o
|
||||
|
||||
ifeq ($(CONFIG_VIDEO_TEGRA_VI),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_VI
|
||||
nvhwpm-t234-objs += hal/t234/ip/vi/t234_vi.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_TEGRA_GRHOST_VIC),y)
|
||||
ccflags-y += -DCONFIG_T234_HWPM_IP_VIC
|
||||
nvhwpm-t234-objs += hal/t234/ip/vic/t234_vic.o
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2021-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. 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,
|
||||
@@ -14,6 +14,8 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <nvidia/conftest.h>
|
||||
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/module.h>
|
||||
@@ -21,7 +23,6 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/dma-buf.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/version.h>
|
||||
|
||||
#include <tegra_hwpm.h>
|
||||
#include <tegra_hwpm_ip.h>
|
||||
@@ -50,10 +51,10 @@ static const struct of_device_id tegra_soc_hwpm_of_match[] = {
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, tegra_soc_hwpm_of_match);
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0))
|
||||
static char *tegra_hwpm_get_devnode(struct device *dev, umode_t *mode)
|
||||
#else
|
||||
#if defined(NV_CLASS_STRUCT_DEVNODE_HAS_CONST_DEV_ARG)
|
||||
static char *tegra_hwpm_get_devnode(const struct device *dev, umode_t *mode)
|
||||
#else
|
||||
static char *tegra_hwpm_get_devnode(struct device *dev, umode_t *mode)
|
||||
#endif
|
||||
{
|
||||
if (!mode) {
|
||||
@@ -110,7 +111,6 @@ static int tegra_hwpm_probe(struct platform_device *pdev)
|
||||
hwpm_linux->pdev = pdev;
|
||||
hwpm_linux->dev = &pdev->dev;
|
||||
hwpm_linux->np = pdev->dev.of_node;
|
||||
hwpm_linux->class.owner = THIS_MODULE;
|
||||
hwpm_linux->class.name = TEGRA_SOC_HWPM_MODULE_NAME;
|
||||
|
||||
hwpm = &hwpm_linux->hwpm;
|
||||
@@ -251,9 +251,21 @@ static int tegra_hwpm_remove(struct platform_device *pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(NV_PLATFORM_DRIVER_STRUCT_REMOVE_RETURNS_VOID) /* Linux v6.11 */
|
||||
static inline void tegra_hwpm_remove_wrapper(struct platform_device *pdev)
|
||||
{
|
||||
tegra_hwpm_remove(pdev);
|
||||
}
|
||||
#else
|
||||
static inline int tegra_hwpm_remove_wrapper(struct platform_device *pdev)
|
||||
{
|
||||
return tegra_hwpm_remove(pdev);
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct platform_driver tegra_soc_hwpm_pdrv = {
|
||||
.probe = tegra_hwpm_probe,
|
||||
.remove = tegra_hwpm_remove,
|
||||
.remove = tegra_hwpm_remove_wrapper,
|
||||
.driver = {
|
||||
.name = TEGRA_SOC_HWPM_MODULE_NAME,
|
||||
.of_match_table = of_match_ptr(tegra_soc_hwpm_of_match),
|
||||
|
||||
@@ -457,8 +457,13 @@ int tegra_hwpm_map_update_allowlist(struct tegra_soc_hwpm *hwpm,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#if defined(NV_GET_USER_PAGES_HAS_ARGS_FLAGS) /* Linux v6.5 */
|
||||
pinned_pages = get_user_pages(user_va & PAGE_MASK,
|
||||
hwpm->alist_map->num_pages, 0, hwpm->alist_map->pages);
|
||||
#else
|
||||
pinned_pages = get_user_pages(user_va & PAGE_MASK,
|
||||
hwpm->alist_map->num_pages, 0, hwpm->alist_map->pages, NULL);
|
||||
#endif
|
||||
if (pinned_pages != hwpm->alist_map->num_pages) {
|
||||
tegra_hwpm_err(hwpm, "Requested %llu pages / Got %ld pages",
|
||||
hwpm->alist_map->num_pages, pinned_pages);
|
||||
|
||||
@@ -17,9 +17,11 @@
|
||||
#ifndef TEGRA_HWPM_OS_LINUX_MEM_MGMT_UTILS_H
|
||||
#define TEGRA_HWPM_OS_LINUX_MEM_MGMT_UTILS_H
|
||||
|
||||
#include <nvidia/conftest.h>
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/version.h>
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
|
||||
#if defined(NV_LINUX_IOSYS_MAP_H_PRESENT)
|
||||
#include <linux/iosys-map.h>
|
||||
#else
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)
|
||||
@@ -49,7 +51,7 @@ struct tegra_hwpm_mem_mgmt {
|
||||
struct dma_buf *mem_bytes_dma_buf;
|
||||
struct dma_buf_attachment *mem_bytes_attach;
|
||||
void *mem_bytes_kernel;
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)
|
||||
#if defined(NV_LINUX_IOSYS_MAP_H_PRESENT)
|
||||
struct iosys_map mem_bytes_map;
|
||||
#else
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
#include <os/linux/driver.h>
|
||||
|
||||
#if defined(CONFIG_TEGRA_HWPM_OOT)
|
||||
#ifdef CONFIG_SOC_TEGRA_PLATFORM_HELPER
|
||||
#include <soc/tegra/tegra-platform-helper.h>
|
||||
#endif
|
||||
#if defined(CONFIG_TEGRA_NEXT1_HWPM)
|
||||
#include <os/linux/next1_soc_utils.h>
|
||||
#endif
|
||||
@@ -139,7 +142,11 @@ bool tegra_hwpm_is_platform_vsp_impl(void)
|
||||
|
||||
bool tegra_hwpm_is_hypervisor_mode_impl(void)
|
||||
{
|
||||
#ifdef CONFIG_SOC_TEGRA_PLATFORM_HELPER
|
||||
return tegra_is_hypervisor_mode();
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
#else /* !CONFIG_TEGRA_HWPM_OOT */
|
||||
|
||||
Reference in New Issue
Block a user