1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: MIT
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in
13  * all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21  * DEALINGS IN THE SOFTWARE.
22 */
23 
24 #pragma once
25 
26 #include <nvtypes.h>
27 
28 //
29 // This file was generated with FINN, an NVIDIA coding tool.
30 // Source file:      ctrl/ctrlc86f.finn
31 //
32 
33 
34 
35 #include "nvcfg_sdk.h"
36 
37 
38 
39 /* HOPPER_CHANNEL_GPFIFO_A control commands and parameters */
40 
41 #include "ctrl/ctrlxxxx.h"
42 #include "ctrl/ctrl906f.h"          /* C36F is partially derived from 906F */
43 #include "ctrl/ctrla06f.h"          /* C36F is partially derived from a06F */
44 #include "ctrl/ctrlc36f.h" // This control call interface is an ALIAS of C36F
45 
46 #define NVC86F_CTRL_CMD(cat,idx)  \
47     NVXXXX_CTRL_CMD(0xC36F, NVC86F_CTRL_##cat, idx)
48 
49 /* HOPPER_CHANNEL_GPFIFO_A command categories (6bits) */
50 #define NVC86F_CTRL_RESERVED (0x00)
51 #define NVC86F_CTRL_GPFIFO   (0x01)
52 #define NVC86F_CTRL_EVENT    (0x02)
53 
54 /*
55  * NVC86F_CTRL_CMD_NULL
56  *
57  * This command does nothing.
58  * This command does not take any parameters.
59  *
60  * Possible status values returned is: NV_OK
61 */
62 #define NVC86F_CTRL_CMD_NULL (NVC36F_CTRL_CMD_NULL)
63 
64 
65 
66 
67 
68 
69 /*
70  * NVC86F_CTRL_GET_CLASS_ENGINEID
71  *
72  * Please see description of NV906F_CTRL_GET_CLASS_ENGINEID for more information.
73  *
74  */
75 #define NVC86F_CTRL_GET_CLASS_ENGINEID (NVC36F_CTRL_GET_CLASS_ENGINEID)
76 
77 typedef NV906F_CTRL_GET_CLASS_ENGINEID_PARAMS NVC86F_CTRL_GET_CLASS_ENGINEID_PARAMS;
78 
79 /*
80  * NVC86F_CTRL_RESET_CHANNEL
81  *
82  * Please see description of NV906F_CTRL_CMD_RESET_CHANNEL for more information.
83  *
84  */
85 #define NVC86F_CTRL_CMD_RESET_CHANNEL (NVC36F_CTRL_CMD_RESET_CHANNEL)
86 
87 typedef NV906F_CTRL_CMD_RESET_CHANNEL_PARAMS NVC86F_CTRL_CMD_RESET_CHANNEL_PARAMS;
88 
89 /*
90  * NVC86F_CTRL_CMD_GPFIFO_SCHEDULE
91  *
92  * Please see description of NVA06F_CTRL_CMD_GPFIFO_SCHEDULE for more information.
93  *
94  */
95 #define NVC86F_CTRL_CMD_GPFIFO_SCHEDULE (NVC36F_CTRL_CMD_GPFIFO_SCHEDULE)
96 
97 typedef NVA06F_CTRL_GPFIFO_SCHEDULE_PARAMS NVC86F_CTRL_GPFIFO_SCHEDULE_PARAMS;
98 
99 /*
100  * NVC86F_CTRL_CMD_BIND
101  *
102  * Please see description of NVA06F_CTRL_CMD_BIND for more information.
103  */
104 #define NVC86F_CTRL_CMD_BIND (NVC36F_CTRL_CMD_BIND)
105 
106 typedef NVA06F_CTRL_BIND_PARAMS NVC86F_CTRL_BIND_PARAMS;
107 
108 /*
109  * NVC86F_CTRL_CMD_EVENT_SET_NOTIFICATION
110  *
111  * Please see description of NVA06F_CTRL_CMD_EVENT_SET_NOTIFICATION for more information.
112 */
113 #define NVC86F_CTRL_CMD_EVENT_SET_NOTIFICATION (NVC36F_CTRL_CMD_EVENT_SET_NOTIFICATION)
114 
115 typedef NVA06F_CTRL_EVENT_SET_NOTIFICATION_PARAMS NVC86F_CTRL_EVENT_SET_NOTIFICATION_PARAMS;
116 
117 /* valid action values */
118 #define NVC86F_CTRL_EVENT_SET_NOTIFICATION_ACTION_DISABLE NVA06F_CTRL_EVENT_SET_NOTIFICATION_ACTION_DISABLE
119 #define NVC86F_CTRL_EVENT_SET_NOTIFICATION_ACTION_SINGLE  NVA06F_CTRL_EVENT_SET_NOTIFICATION_ACTION_SINGLE
120 #define NVC86F_CTRL_EVENT_SET_NOTIFICATION_ACTION_REPEAT  NVA06F_CTRL_EVENT_SET_NOTIFICATION_ACTION_REPEAT
121 
122 /*
123  * NVC86F_CTRL_CMD_EVENT_SET_TRIGGER
124  *
125  * Please see description of NVA06F_CTRL_CMD_EVENT_SET_TRIGGER for more information.
126  */
127 #define NVC86F_CTRL_CMD_EVENT_SET_TRIGGER                 (NVC36F_CTRL_CMD_EVENT_SET_TRIGGER)
128 
129 
130 
131 
132 
133 /*
134  * NVC86F_CTRL_CMD_GET_MMU_FAULT_INFO
135  *
136  * Please see description of NV906F_CTRL_CMD_GET_MMU_FAULT_INFO for more information.
137  *
138  */
139 #define NVC86F_CTRL_CMD_GET_MMU_FAULT_INFO (NVC36F_CTRL_CMD_GET_MMU_FAULT_INFO)
140 
141 typedef NV906F_CTRL_GET_MMU_FAULT_INFO_PARAMS NVC86F_CTRL_GET_MMU_FAULT_INFO_PARAMS;
142 
143 /*
144  * NVC86F_CTRL_CMD_GPFIFO_GET_WORK_SUBMIT_TOKEN
145  *
146  *    This command returns an opaque work submit token to the caller which
147  *    can be used to write to doorbell register to finish submitting work.
148  *
149  *    workSubmitToken       The 32-bit work submit token
150  *
151  *    Possible status values returned are:
152  *     NV_OK
153  *     NV_ERR_INVALID_OBJECT_HANDLE
154  *     NV_ERR_INVALID_ARGUMENT
155  *
156  */
157 
158 #define NVC86F_CTRL_CMD_GPFIFO_GET_WORK_SUBMIT_TOKEN (NVC36F_CTRL_CMD_GPFIFO_GET_WORK_SUBMIT_TOKEN)
159 
160 typedef struct NVC86F_CTRL_CMD_GPFIFO_GET_WORK_SUBMIT_TOKEN_PARAMS {
161     NvU32 workSubmitToken;
162 } NVC86F_CTRL_CMD_GPFIFO_GET_WORK_SUBMIT_TOKEN_PARAMS;
163 
164 /* _ctrlC86F.h_ */
165 
166