mirror of
git://nv-tegra.nvidia.com/linux-hwpm.git
synced 2025-12-25 02:34:23 +03:00
- Update tegra_soc_hwpm_ip enum to hold only IPs which can be floorswept. - Update floorsweep_info IOCTL to return floorsweepable component details of tegra_soc_hwpm_ip IPs. Bug 3573882 Change-Id: Ia62222ba8afdf60b25d0f3701bfd2be215bb6071 Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2713363 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com> Reviewed-by: Vasuki Shankar <vasukis@nvidia.com> Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com> Reviewed-by: Seema Khowala <seemaj@nvidia.com> GVS: Gerrit_Virtual_Submit
171 lines
4.4 KiB
C
171 lines
4.4 KiB
C
/*
|
|
* Copyright (c) 2021-2022, 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,
|
|
* 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 "t234_hwpm_ip_isp.h"
|
|
|
|
#include <tegra_hwpm.h>
|
|
#include <hal/t234/t234_hwpm_regops_allowlist.h>
|
|
#include <hal/t234/hw/t234_addr_map_soc_hwpm.h>
|
|
|
|
struct hwpm_ip_aperture t234_isp_inst0_perfmon_element_static_array[
|
|
T234_HWPM_IP_ISP_NUM_PERFMON_PER_INST] = {
|
|
{
|
|
.element_type = HWPM_ELEMENT_PERFMON,
|
|
.element_index_mask = BIT(0),
|
|
.dt_index = 0U,
|
|
.dt_mmio = NULL,
|
|
.name = "perfmon_isp0",
|
|
.start_abs_pa = addr_map_rpg_pm_isp0_base_r(),
|
|
.end_abs_pa = addr_map_rpg_pm_isp0_limit_r(),
|
|
.start_pa = 0,
|
|
.end_pa = 0,
|
|
.base_pa = addr_map_rpg_pm_base_r(),
|
|
.alist = t234_perfmon_alist,
|
|
.alist_size = ARRAY_SIZE(t234_perfmon_alist),
|
|
.fake_registers = NULL,
|
|
},
|
|
};
|
|
|
|
struct hwpm_ip_aperture t234_isp_inst0_perfmux_element_static_array[
|
|
T234_HWPM_IP_ISP_NUM_PERFMUX_PER_INST] = {
|
|
{
|
|
.element_type = IP_ELEMENT_PERFMUX,
|
|
.element_index_mask = BIT(0),
|
|
.dt_index = 0U,
|
|
.dt_mmio = NULL,
|
|
.name = {'\0'},
|
|
.start_abs_pa = addr_map_isp_thi_base_r(),
|
|
.end_abs_pa = addr_map_isp_thi_limit_r(),
|
|
.start_pa = 0,
|
|
.end_pa = 0,
|
|
.base_pa = 0ULL,
|
|
.alist = t234_isp_thi_alist,
|
|
.alist_size = ARRAY_SIZE(t234_isp_thi_alist),
|
|
.fake_registers = NULL,
|
|
},
|
|
};
|
|
|
|
/* IP instance array */
|
|
struct hwpm_ip_inst t234_isp_inst_static_array[
|
|
T234_HWPM_IP_ISP_NUM_INSTANCES] = {
|
|
{
|
|
.hw_inst_mask = BIT(0),
|
|
.num_core_elements_per_inst =
|
|
T234_HWPM_IP_ISP_NUM_CORE_ELEMENT_PER_INST,
|
|
.element_info = {
|
|
/*
|
|
* Instance info corresponding to
|
|
* TEGRA_HWPM_APERTURE_TYPE_PERFMUX
|
|
*/
|
|
{
|
|
.num_element_per_inst =
|
|
T234_HWPM_IP_ISP_NUM_PERFMUX_PER_INST,
|
|
.element_static_array =
|
|
t234_isp_inst0_perfmux_element_static_array,
|
|
.range_start = addr_map_isp_thi_base_r(),
|
|
.range_end = addr_map_isp_thi_limit_r(),
|
|
.element_stride = addr_map_isp_thi_limit_r() -
|
|
addr_map_isp_thi_base_r() + 1ULL,
|
|
.element_slots = 0U,
|
|
.element_arr = NULL,
|
|
},
|
|
/*
|
|
* Instance info corresponding to
|
|
* TEGRA_HWPM_APERTURE_TYPE_BROADCAST
|
|
*/
|
|
{
|
|
.num_element_per_inst =
|
|
T234_HWPM_IP_ISP_NUM_BROADCAST_PER_INST,
|
|
.element_static_array = NULL,
|
|
.range_start = 0ULL,
|
|
.range_end = 0ULL,
|
|
.element_stride = 0ULL,
|
|
.element_slots = 0U,
|
|
.element_arr = NULL,
|
|
},
|
|
/*
|
|
* Instance info corresponding to
|
|
* TEGRA_HWPM_APERTURE_TYPE_PERFMON
|
|
*/
|
|
{
|
|
.num_element_per_inst =
|
|
T234_HWPM_IP_ISP_NUM_PERFMON_PER_INST,
|
|
.element_static_array =
|
|
t234_isp_inst0_perfmon_element_static_array,
|
|
.range_start = addr_map_rpg_pm_isp0_base_r(),
|
|
.range_end = addr_map_rpg_pm_isp0_limit_r(),
|
|
.element_stride = addr_map_rpg_pm_isp0_limit_r() -
|
|
addr_map_rpg_pm_isp0_base_r() + 1ULL,
|
|
.element_slots = 0U,
|
|
.element_arr = NULL,
|
|
},
|
|
},
|
|
|
|
.ip_ops = {
|
|
.ip_dev = NULL,
|
|
.hwpm_ip_pm = NULL,
|
|
.hwpm_ip_reg_op = NULL,
|
|
},
|
|
|
|
.element_fs_mask = 0U,
|
|
},
|
|
};
|
|
|
|
struct hwpm_ip t234_hwpm_ip_isp = {
|
|
.num_instances = T234_HWPM_IP_ISP_NUM_INSTANCES,
|
|
.ip_inst_static_array = t234_isp_inst_static_array,
|
|
|
|
.inst_aperture_info = {
|
|
/*
|
|
* Instance info corresponding to
|
|
* TEGRA_HWPM_APERTURE_TYPE_PERFMUX
|
|
*/
|
|
{
|
|
.range_start = addr_map_isp_thi_base_r(),
|
|
.range_end = addr_map_isp_thi_limit_r(),
|
|
.inst_stride = addr_map_isp_thi_limit_r() -
|
|
addr_map_isp_thi_base_r() + 1ULL,
|
|
.inst_slots = 0U,
|
|
.inst_arr = NULL,
|
|
},
|
|
/*
|
|
* Instance info corresponding to
|
|
* TEGRA_HWPM_APERTURE_TYPE_BROADCAST
|
|
*/
|
|
{
|
|
.range_start = 0ULL,
|
|
.range_end = 0ULL,
|
|
.inst_stride = 0ULL,
|
|
.inst_slots = 0U,
|
|
.inst_arr = NULL,
|
|
},
|
|
/*
|
|
* Instance info corresponding to
|
|
* TEGRA_HWPM_APERTURE_TYPE_PERFMON
|
|
*/
|
|
{
|
|
.range_start = addr_map_rpg_pm_isp0_base_r(),
|
|
.range_end = addr_map_rpg_pm_isp0_limit_r(),
|
|
.inst_stride = addr_map_rpg_pm_isp0_limit_r() -
|
|
addr_map_rpg_pm_isp0_base_r() + 1ULL,
|
|
.inst_slots = 0U,
|
|
.inst_arr = NULL,
|
|
},
|
|
},
|
|
|
|
.override_enable = false,
|
|
.inst_fs_mask = 0U,
|
|
.resource_status = TEGRA_HWPM_RESOURCE_STATUS_INVALID,
|
|
.reserved = false,
|
|
};
|