19808032cSSteven Kao /* 20789758aSVignesh Radhakrishnan * Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. 39808032cSSteven Kao * 49808032cSSteven Kao * SPDX-License-Identifier: BSD-3-Clause 59808032cSSteven Kao */ 69808032cSSteven Kao 79808032cSSteven Kao #ifndef T194_NVG_H 89808032cSSteven Kao #define T194_NVG_H 99808032cSSteven Kao 100be136d2SKalyani Chidambaram #include <lib/utils_def.h> 110be136d2SKalyani Chidambaram 129808032cSSteven Kao /** 139808032cSSteven Kao * t194_nvg.h - Header for the NVIDIA Generic interface (NVG). 149808032cSSteven Kao * Official documentation for this interface is included as part 159808032cSSteven Kao * of the T194 TRM. 169808032cSSteven Kao */ 179808032cSSteven Kao 189808032cSSteven Kao /** 199808032cSSteven Kao * Current version - Major version increments may break backwards 20*1b491eeaSElyes Haouas * compatibility and binary compatibility. Minor version increments 219808032cSSteven Kao * occur when there is only new functionality. 229808032cSSteven Kao */ 239808032cSSteven Kao enum { 244a232d5bSVarun Wadekar TEGRA_NVG_VERSION_MAJOR = U(6), 250be136d2SKalyani Chidambaram TEGRA_NVG_VERSION_MINOR = U(7) 269808032cSSteven Kao }; 279808032cSSteven Kao 289808032cSSteven Kao typedef enum { 294a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_VERSION = U(0), 304a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_POWER_PERF = U(1), 314a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_POWER_MODES = U(2), 324a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_WAKE_TIME = U(3), 334a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_CSTATE_INFO = U(4), 344a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_CROSSOVER_C6_LOWER_BOUND = U(5), 354a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_CROSSOVER_CC6_LOWER_BOUND = U(6), 364a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_CROSSOVER_CG7_LOWER_BOUND = U(8), 374a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_CSTATE_STAT_QUERY_REQUEST = U(10), 384a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_CSTATE_STAT_QUERY_VALUE = U(11), 394a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_NUM_CORES = U(20), 404a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UNIQUE_LOGICAL_ID = U(21), 414a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_LOGICAL_TO_PHYSICAL_MAPPING = U(22), 424a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_LOGICAL_TO_MPIDR = U(23), 434a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_SHUTDOWN = U(42), 444a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_IS_SC7_ALLOWED = U(43), 454a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_ONLINE_CORE = U(44), 464a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_CC3_CTRL = U(45), 474a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_CCPLEX_CACHE_CONTROL = U(49), 484a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_CCPLEX_GSC = U(50), 494a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_HSM_ERROR_CTRL = U(53), 504a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_SECURITY_CONFIG = U(54), 514a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DEBUG_CONFIG = U(55), 524a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_SNOC_MCF = U(56), 534a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_MCF_ORD1 = U(57), 544a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_MCF_ORD2 = U(58), 554a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_MCF_ORD3 = U(59), 564a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_MCF_ISO = U(60), 574a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_MCF_SISO = U(61), 584a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_MCF_NISO = U(62), 594a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_MCF_NISO_REMOTE = U(63), 604a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_ISO = U(64), 614a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_SISO = U(65), 624a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_NISO = U(66), 634a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_NISO_REMOTE = U(67), 644a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_L3FILL = U(68), 654a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_L3WR = U(69), 664a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_RSP_L3RD_DMA = U(70), 674a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_RSP_MCFRD_DMA = U(71), 684a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_GLOBAL = U(72), 694a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_LL = U(73), 704a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_L3D = U(74), 714a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_FCM_RD = U(75), 724a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_L3CTRL_FCM_WR = U(76), 734a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_SNOC_GLOBAL_CTRL = U(77), 744a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_SNOC_CLIENT_REQ_CTRL = U(78), 754a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_DDA_SNOC_CLIENT_REPLENTISH_CTRL = U(79), 760be136d2SKalyani Chidambaram TEGRA_NVG_CHANNEL_RT_SAFE_MASK = U(80), 770be136d2SKalyani Chidambaram TEGRA_NVG_CHANNEL_RT_WINDOW_US = U(81), 780be136d2SKalyani Chidambaram TEGRA_NVG_CHANNEL_RT_FWD_PROGRESS_US = U(82), 7902b3e311SSteven Kao 802bda9202SSteven Kao TEGRA_NVG_CHANNEL_LAST_INDEX 819808032cSSteven Kao } tegra_nvg_channel_id_t; 829808032cSSteven Kao 839808032cSSteven Kao typedef enum { 844a232d5bSVarun Wadekar NVG_STAT_QUERY_SC7_ENTRIES = U(1), 854a232d5bSVarun Wadekar NVG_STAT_QUERY_CC6_ENTRIES = U(6), 864a232d5bSVarun Wadekar NVG_STAT_QUERY_CG7_ENTRIES = U(7), 874a232d5bSVarun Wadekar NVG_STAT_QUERY_C6_ENTRIES = U(10), 884a232d5bSVarun Wadekar NVG_STAT_QUERY_C7_ENTRIES = U(14), 894a232d5bSVarun Wadekar NVG_STAT_QUERY_SC7_RESIDENCY_SUM = U(32), 904a232d5bSVarun Wadekar NVG_STAT_QUERY_CC6_RESIDENCY_SUM = U(41), 914a232d5bSVarun Wadekar NVG_STAT_QUERY_CG7_RESIDENCY_SUM = U(46), 924a232d5bSVarun Wadekar NVG_STAT_QUERY_C6_RESIDENCY_SUM = U(51), 934a232d5bSVarun Wadekar NVG_STAT_QUERY_C7_RESIDENCY_SUM = U(56), 944a232d5bSVarun Wadekar NVG_STAT_QUERY_SC7_ENTRY_TIME_SUM = U(60), 954a232d5bSVarun Wadekar NVG_STAT_QUERY_CC6_ENTRY_TIME_SUM = U(61), 964a232d5bSVarun Wadekar NVG_STAT_QUERY_CG7_ENTRY_TIME_SUM = U(62), 974a232d5bSVarun Wadekar NVG_STAT_QUERY_C6_ENTRY_TIME_SUM = U(63), 984a232d5bSVarun Wadekar NVG_STAT_QUERY_C7_ENTRY_TIME_SUM = U(64), 994a232d5bSVarun Wadekar NVG_STAT_QUERY_SC7_EXIT_TIME_SUM = U(70), 1004a232d5bSVarun Wadekar NVG_STAT_QUERY_CC6_EXIT_TIME_SUM = U(71), 1014a232d5bSVarun Wadekar NVG_STAT_QUERY_CG7_EXIT_TIME_SUM = U(72), 1024a232d5bSVarun Wadekar NVG_STAT_QUERY_C6_EXIT_TIME_SUM = U(73), 1034a232d5bSVarun Wadekar NVG_STAT_QUERY_C7_EXIT_TIME_SUM = U(74), 1044a232d5bSVarun Wadekar NVG_STAT_QUERY_SC7_ENTRY_LAST = U(80), 1054a232d5bSVarun Wadekar NVG_STAT_QUERY_CC6_ENTRY_LAST = U(81), 1064a232d5bSVarun Wadekar NVG_STAT_QUERY_CG7_ENTRY_LAST = U(82), 1074a232d5bSVarun Wadekar NVG_STAT_QUERY_C6_ENTRY_LAST = U(83), 1084a232d5bSVarun Wadekar NVG_STAT_QUERY_C7_ENTRY_LAST = U(84), 1094a232d5bSVarun Wadekar NVG_STAT_QUERY_SC7_EXIT_LAST = U(90), 1104a232d5bSVarun Wadekar NVG_STAT_QUERY_CC6_EXIT_LAST = U(91), 1114a232d5bSVarun Wadekar NVG_STAT_QUERY_CG7_EXIT_LAST = U(92), 1124a232d5bSVarun Wadekar NVG_STAT_QUERY_C6_EXIT_LAST = U(93), 1134a232d5bSVarun Wadekar NVG_STAT_QUERY_C7_EXIT_LAST = U(94) 1144a232d5bSVarun Wadekar 1159808032cSSteven Kao } tegra_nvg_stat_query_t; 1169808032cSSteven Kao 1179808032cSSteven Kao typedef enum { 1184a232d5bSVarun Wadekar TEGRA_NVG_CORE_C0 = U(0), 1194a232d5bSVarun Wadekar TEGRA_NVG_CORE_C1 = U(1), 1204a232d5bSVarun Wadekar TEGRA_NVG_CORE_C6 = U(6), 1214a232d5bSVarun Wadekar TEGRA_NVG_CORE_C7 = U(7), 1224a232d5bSVarun Wadekar TEGRA_NVG_CORE_WARMRSTREQ = U(8) 1239808032cSSteven Kao } tegra_nvg_core_sleep_state_t; 1249808032cSSteven Kao 1259808032cSSteven Kao typedef enum { 1264a232d5bSVarun Wadekar TEGRA_NVG_SHUTDOWN = U(0), 1274a232d5bSVarun Wadekar TEGRA_NVG_REBOOT = U(1) 12854990e37SVarun Wadekar } tegra_nvg_shutdown_reboot_state_t; 12954990e37SVarun Wadekar 13054990e37SVarun Wadekar typedef enum { 1314a232d5bSVarun Wadekar TEGRA_NVG_CLUSTER_CC0 = U(0), 1324a232d5bSVarun Wadekar TEGRA_NVG_CLUSTER_AUTO_CC1 = U(1), 1334a232d5bSVarun Wadekar TEGRA_NVG_CLUSTER_CC6 = U(6) 1349808032cSSteven Kao } tegra_nvg_cluster_sleep_state_t; 1359808032cSSteven Kao 1369808032cSSteven Kao typedef enum { 1374a232d5bSVarun Wadekar TEGRA_NVG_CG_CG0 = U(0), 1384a232d5bSVarun Wadekar TEGRA_NVG_CG_CG7 = U(7) 1399808032cSSteven Kao } tegra_nvg_cluster_group_sleep_state_t; 1409808032cSSteven Kao 1419808032cSSteven Kao typedef enum { 1424a232d5bSVarun Wadekar TEGRA_NVG_SYSTEM_SC0 = U(0), 1434a232d5bSVarun Wadekar TEGRA_NVG_SYSTEM_SC7 = U(7), 1444a232d5bSVarun Wadekar TEGRA_NVG_SYSTEM_SC8 = U(8) 1459808032cSSteven Kao } tegra_nvg_system_sleep_state_t; 1469808032cSSteven Kao 1479808032cSSteven Kao // --------------------------------------------------------------------------- 1489808032cSSteven Kao // NVG Data subformats 1499808032cSSteven Kao // --------------------------------------------------------------------------- 1509808032cSSteven Kao 15102b3e311SSteven Kao typedef union { 1529808032cSSteven Kao uint64_t flat; 1539808032cSSteven Kao struct nvg_version_channel_t { 1544a232d5bSVarun Wadekar uint32_t minor_version : U(32); 1554a232d5bSVarun Wadekar uint32_t major_version : U(32); 1569808032cSSteven Kao } bits; 1579808032cSSteven Kao } nvg_version_data_t; 1589808032cSSteven Kao 15902b3e311SSteven Kao typedef union { 1609808032cSSteven Kao uint64_t flat; 1610be136d2SKalyani Chidambaram struct { 1624a232d5bSVarun Wadekar uint32_t perf_per_watt : U(1); 1634a232d5bSVarun Wadekar uint32_t reserved_31_1 : U(31); 1644a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 16502b3e311SSteven Kao } bits; 16602b3e311SSteven Kao } nvg_power_perf_channel_t; 16702b3e311SSteven Kao 16802b3e311SSteven Kao typedef union { 16902b3e311SSteven Kao uint64_t flat; 1700be136d2SKalyani Chidambaram struct { 1714a232d5bSVarun Wadekar uint32_t low_battery : U(1); 1724a232d5bSVarun Wadekar uint32_t reserved_1_1 : U(1); 1734a232d5bSVarun Wadekar uint32_t battery_save : U(1); 1744a232d5bSVarun Wadekar uint32_t reserved_31_3 : U(29); 1754a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 17602b3e311SSteven Kao } bits; 17702b3e311SSteven Kao } nvg_power_modes_channel_t; 17802b3e311SSteven Kao 17902b3e311SSteven Kao typedef union nvg_channel_1_data_u { 18002b3e311SSteven Kao uint64_t flat; 18102b3e311SSteven Kao struct nvg_channel_1_data_s { 1824a232d5bSVarun Wadekar uint32_t perf_per_watt_mode : U(1); 1834a232d5bSVarun Wadekar uint32_t reserved_31_1 : U(31); 1844a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 1859808032cSSteven Kao } bits; 1869808032cSSteven Kao } nvg_channel_1_data_t; 1879808032cSSteven Kao 18802b3e311SSteven Kao typedef union { 1892bda9202SSteven Kao uint64_t flat; 1900be136d2SKalyani Chidambaram struct { 1914a232d5bSVarun Wadekar uint32_t gpu_ways : U(5); 1924a232d5bSVarun Wadekar uint32_t reserved_7_5 : U(3); 1934a232d5bSVarun Wadekar uint32_t gpu_only_ways : U(5); 1944a232d5bSVarun Wadekar uint32_t reserved_31_13 : U(19); 1954a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 1962bda9202SSteven Kao } bits; 1972bda9202SSteven Kao } nvg_ccplex_cache_control_channel_t; 1982bda9202SSteven Kao 19902b3e311SSteven Kao typedef union nvg_channel_2_data_u { 2009808032cSSteven Kao uint64_t flat; 20102b3e311SSteven Kao struct nvg_channel_2_data_s { 2024a232d5bSVarun Wadekar uint32_t reserved_1_0 : U(2); 2034a232d5bSVarun Wadekar uint32_t battery_saver_mode : U(1); 2044a232d5bSVarun Wadekar uint32_t reserved_31_3 : U(29); 2054a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 2069808032cSSteven Kao } bits; 2079808032cSSteven Kao } nvg_channel_2_data_t; 2089808032cSSteven Kao 20902b3e311SSteven Kao typedef union { 2109808032cSSteven Kao uint64_t flat; 2110be136d2SKalyani Chidambaram struct { 2124a232d5bSVarun Wadekar uint32_t wake_time : U(32); 2134a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 2149808032cSSteven Kao } bits; 2159808032cSSteven Kao } nvg_wake_time_channel_t; 2169808032cSSteven Kao 21702b3e311SSteven Kao typedef union { 2189808032cSSteven Kao uint64_t flat; 2190be136d2SKalyani Chidambaram struct { 2204a232d5bSVarun Wadekar uint32_t cluster_state : U(3); 2214a232d5bSVarun Wadekar uint32_t reserved_6_3 : U(4); 2224a232d5bSVarun Wadekar uint32_t update_cluster : U(1); 2234a232d5bSVarun Wadekar uint32_t cg_cstate : U(3); 2244a232d5bSVarun Wadekar uint32_t reserved_14_11 : U(4); 2254a232d5bSVarun Wadekar uint32_t update_cg : U(1); 2264a232d5bSVarun Wadekar uint32_t system_cstate : U(4); 2274a232d5bSVarun Wadekar uint32_t reserved_22_20 : U(3); 2284a232d5bSVarun Wadekar uint32_t update_system : U(1); 2294a232d5bSVarun Wadekar uint32_t reserved_30_24 : U(7); 2304a232d5bSVarun Wadekar uint32_t update_wake_mask : U(1); 23154990e37SVarun Wadekar union { 2324a232d5bSVarun Wadekar uint32_t flat : U(32); 23354990e37SVarun Wadekar struct { 2344a232d5bSVarun Wadekar uint32_t vfiq : U(1); 2354a232d5bSVarun Wadekar uint32_t virq : U(1); 2364a232d5bSVarun Wadekar uint32_t fiq : U(1); 2374a232d5bSVarun Wadekar uint32_t irq : U(1); 2384a232d5bSVarun Wadekar uint32_t serror : U(1); 2394a232d5bSVarun Wadekar uint32_t reserved_10_5 : U(6); 2404a232d5bSVarun Wadekar uint32_t fiqout : U(1); 2414a232d5bSVarun Wadekar uint32_t irqout : U(1); 2424a232d5bSVarun Wadekar uint32_t reserved_31_13 : U(19); 24354990e37SVarun Wadekar } carmel; 24454990e37SVarun Wadekar } wake_mask; 2459808032cSSteven Kao } bits; 2469808032cSSteven Kao } nvg_cstate_info_channel_t; 2479808032cSSteven Kao 24802b3e311SSteven Kao typedef union { 2499808032cSSteven Kao uint64_t flat; 2500be136d2SKalyani Chidambaram struct { 2514a232d5bSVarun Wadekar uint32_t crossover_value : U(32); 2524a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 2539808032cSSteven Kao } bits; 2549808032cSSteven Kao } nvg_lower_bound_channel_t; 2559808032cSSteven Kao 25602b3e311SSteven Kao typedef union { 2579808032cSSteven Kao uint64_t flat; 2580be136d2SKalyani Chidambaram struct { 2594a232d5bSVarun Wadekar uint32_t unit_id : U(4); 2604a232d5bSVarun Wadekar uint32_t reserved_15_4 : U(12); 2614a232d5bSVarun Wadekar uint32_t stat_id : U(16); 2624a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 2639808032cSSteven Kao } bits; 2649808032cSSteven Kao } nvg_cstate_stat_query_channel_t; 2659808032cSSteven Kao 26602b3e311SSteven Kao typedef union { 2679808032cSSteven Kao uint64_t flat; 2680be136d2SKalyani Chidambaram struct { 2694a232d5bSVarun Wadekar uint32_t num_cores : U(4); 2704a232d5bSVarun Wadekar uint32_t reserved_31_4 : U(28); 2714a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 27254990e37SVarun Wadekar } bits; 27354990e37SVarun Wadekar } nvg_num_cores_channel_t; 27454990e37SVarun Wadekar 27554990e37SVarun Wadekar typedef union { 27654990e37SVarun Wadekar uint64_t flat; 2770be136d2SKalyani Chidambaram struct { 2784a232d5bSVarun Wadekar uint32_t unique_core_id : U(3); 2794a232d5bSVarun Wadekar uint32_t reserved_31_3 : U(29); 2804a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 28154990e37SVarun Wadekar } bits; 28254990e37SVarun Wadekar } nvg_unique_logical_id_channel_t; 28354990e37SVarun Wadekar 28454990e37SVarun Wadekar typedef union { 28554990e37SVarun Wadekar uint64_t flat; 2860be136d2SKalyani Chidambaram struct { 2874a232d5bSVarun Wadekar uint32_t lcore0_pcore_id : U(4); 2884a232d5bSVarun Wadekar uint32_t lcore1_pcore_id : U(4); 2894a232d5bSVarun Wadekar uint32_t lcore2_pcore_id : U(4); 2904a232d5bSVarun Wadekar uint32_t lcore3_pcore_id : U(4); 2914a232d5bSVarun Wadekar uint32_t lcore4_pcore_id : U(4); 2924a232d5bSVarun Wadekar uint32_t lcore5_pcore_id : U(4); 2934a232d5bSVarun Wadekar uint32_t lcore6_pcore_id : U(4); 2944a232d5bSVarun Wadekar uint32_t lcore7_pcore_id : U(4); 2954a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 29654990e37SVarun Wadekar } bits; 29754990e37SVarun Wadekar } nvg_logical_to_physical_mappings_channel_t; 29854990e37SVarun Wadekar 29954990e37SVarun Wadekar typedef union { 30054990e37SVarun Wadekar uint64_t flat; 30154990e37SVarun Wadekar struct nvg_logical_to_mpidr_channel_write_t { 3024a232d5bSVarun Wadekar uint32_t lcore_id : U(3); 3034a232d5bSVarun Wadekar uint32_t reserved_31_3 : U(29); 3044a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 30554990e37SVarun Wadekar } write; 30654990e37SVarun Wadekar struct nvg_logical_to_mpidr_channel_read_t { 3074a232d5bSVarun Wadekar uint32_t mpidr : U(32); 3084a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 30954990e37SVarun Wadekar } read; 31054990e37SVarun Wadekar } nvg_logical_to_mpidr_channel_t; 31154990e37SVarun Wadekar 31254990e37SVarun Wadekar typedef union { 31354990e37SVarun Wadekar uint64_t flat; 3140be136d2SKalyani Chidambaram struct { 3154a232d5bSVarun Wadekar uint32_t is_sc7_allowed : U(1); 3164a232d5bSVarun Wadekar uint32_t reserved_31_1 : U(31); 3174a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 3189808032cSSteven Kao } bits; 3199808032cSSteven Kao } nvg_is_sc7_allowed_channel_t; 3209808032cSSteven Kao 32102b3e311SSteven Kao typedef union { 3229808032cSSteven Kao uint64_t flat; 3230be136d2SKalyani Chidambaram struct { 3244a232d5bSVarun Wadekar uint32_t core_id : U(4); 3254a232d5bSVarun Wadekar uint32_t reserved_31_4 : U(28); 3264a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 3279808032cSSteven Kao } bits; 3289808032cSSteven Kao } nvg_core_online_channel_t; 3299808032cSSteven Kao 33002b3e311SSteven Kao typedef union { 3319808032cSSteven Kao uint64_t flat; 3320be136d2SKalyani Chidambaram struct { 3334a232d5bSVarun Wadekar uint32_t freq_req : U(9); 3344a232d5bSVarun Wadekar uint32_t reserved_30_9 : U(22); 3354a232d5bSVarun Wadekar uint32_t enable : U(1); 3364a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 3379808032cSSteven Kao } bits; 3389808032cSSteven Kao } nvg_cc3_control_channel_t; 3399808032cSSteven Kao 3402bda9202SSteven Kao typedef enum { 3414a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_ALL = U(0), 3424a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_NVDEC = U(1), 3434a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_WPR1 = U(2), 3444a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_WPR2 = U(3), 3454a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_TSECA = U(4), 3464a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_TSECB = U(5), 3474a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_BPMP = U(6), 3484a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_APE = U(7), 3494a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_SPE = U(8), 3504a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_SCE = U(9), 3514a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_APR = U(10), 3524a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_TZRAM = U(11), 3534a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_IPC_SE_TSEC = U(12), 3544a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_BPMP_TO_RCE = U(13), 3554a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_BPMP_TO_MCE = U(14), 3564a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_SE_SC7 = U(15), 3574a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_BPMP_TO_SPE = U(16), 3584a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_RCE = U(17), 3594a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_CPU_TZ_TO_BPMP = U(18), 3604a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_VM_ENCR1 = U(19), 3614a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_CPU_NS_TO_BPMP = U(20), 3624a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_OEM_SC7 = U(21), 3634a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_IPC_SE_SPE_SCE_BPMP = U(22), 3644a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_SC7_RESUME_FW = U(23), 3654a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_CAMERA_TASKLIST = U(24), 3664a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_XUSB = U(25), 3674a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_CV = U(26), 3684a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_VM_ENCR2 = U(27), 3694a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_HYPERVISOR_SW = U(28), 3704a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_SMMU_PAGETABLES = U(29), 3714a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_30 = U(30), 3724a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_31 = U(31), 3734a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_TZ_DRAM = U(32), 3744a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_NVLINK = U(33), 3754a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_SBS = U(34), 3764a232d5bSVarun Wadekar TEGRA_NVG_CHANNEL_UPDATE_GSC_VPR = U(35), 3772bda9202SSteven Kao TEGRA_NVG_CHANNEL_UPDATE_GSC_LAST_INDEX 3782bda9202SSteven Kao } tegra_nvg_channel_update_gsc_gsc_enum_t; 3799808032cSSteven Kao 38002b3e311SSteven Kao typedef union { 3819808032cSSteven Kao uint64_t flat; 3820be136d2SKalyani Chidambaram struct { 3834a232d5bSVarun Wadekar uint32_t gsc_enum : U(16); 3844a232d5bSVarun Wadekar uint32_t reserved_31_16 : U(16); 3854a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 3869808032cSSteven Kao } bits; 3872bda9202SSteven Kao } nvg_update_ccplex_gsc_channel_t; 3889808032cSSteven Kao 38902b3e311SSteven Kao typedef union { 3909808032cSSteven Kao uint64_t flat; 3912bda9202SSteven Kao struct nvg_security_config_channel_t { 3924a232d5bSVarun Wadekar uint32_t strict_checking_enabled : U(1); 3934a232d5bSVarun Wadekar uint32_t strict_checking_locked : U(1); 3944a232d5bSVarun Wadekar uint32_t reserved_31_2 : U(30); 3954a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 3969808032cSSteven Kao } bits; 3972bda9202SSteven Kao } nvg_security_config_t; 3989808032cSSteven Kao 39902b3e311SSteven Kao typedef union { 4002bda9202SSteven Kao uint64_t flat; 4012bda9202SSteven Kao struct nvg_shutdown_channel_t { 4024a232d5bSVarun Wadekar uint32_t reboot : U(1); 4034a232d5bSVarun Wadekar uint32_t reserved_31_1 : U(31); 4044a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 4052bda9202SSteven Kao } bits; 4062bda9202SSteven Kao } nvg_shutdown_t; 4079808032cSSteven Kao 40854990e37SVarun Wadekar typedef union { 40954990e37SVarun Wadekar uint64_t flat; 41054990e37SVarun Wadekar struct nvg_debug_config_channel_t { 4114a232d5bSVarun Wadekar uint32_t enter_debug_state_on_mca : U(1); 4124a232d5bSVarun Wadekar uint32_t reserved_31_1 : U(31); 4134a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 41454990e37SVarun Wadekar } bits; 41554990e37SVarun Wadekar } nvg_debug_config_t; 41654990e37SVarun Wadekar 41754990e37SVarun Wadekar typedef union { 41854990e37SVarun Wadekar uint64_t flat; 4190be136d2SKalyani Chidambaram struct { 4204a232d5bSVarun Wadekar uint32_t uncorr : U(1); 4214a232d5bSVarun Wadekar uint32_t corr : U(1); 4224a232d5bSVarun Wadekar uint32_t reserved_31_2 : U(30); 4234a232d5bSVarun Wadekar uint32_t reserved_63_32 : U(32); 42454990e37SVarun Wadekar } bits; 42554990e37SVarun Wadekar } nvg_hsm_error_ctrl_channel_t; 42654990e37SVarun Wadekar 42754990e37SVarun Wadekar extern nvg_debug_config_t nvg_debug_config; 42854990e37SVarun Wadekar 4294a232d5bSVarun Wadekar #endif /* T194_NVG_H */ 430