xref: /rk3399_ARM-atf/plat/nvidia/tegra/soc/t194/drivers/include/t194_nvg.h (revision 4bd8c929b4bc6e1731c2892b38d4a8c43e8e89dc)
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