122851890Sopenharmony_ci/****************************************************************************
222851890Sopenharmony_ci ****************************************************************************
322851890Sopenharmony_ci ***
422851890Sopenharmony_ci ***   This header was automatically generated from a Linux kernel header
522851890Sopenharmony_ci ***   of the same name, to make information necessary for userspace to
622851890Sopenharmony_ci ***   call into the kernel available to libc.  It contains only constants,
722851890Sopenharmony_ci ***   structures, and macros generated from the original header, and thus,
822851890Sopenharmony_ci ***   contains no copyrightable information.
922851890Sopenharmony_ci ***
1022851890Sopenharmony_ci ***   To edit the content of this header, modify the corresponding
1122851890Sopenharmony_ci ***   source file (e.g. under external/kernel-headers/original/) then
1222851890Sopenharmony_ci ***   run bionic/libc/kernel/tools/update_all.py
1322851890Sopenharmony_ci ***
1422851890Sopenharmony_ci ***   Any manual change here will be lost the next time this script will
1522851890Sopenharmony_ci ***   be run. You've been warned!
1622851890Sopenharmony_ci ***
1722851890Sopenharmony_ci ****************************************************************************
1822851890Sopenharmony_ci ****************************************************************************/
1922851890Sopenharmony_ci#ifndef HABANALABS_H_
2022851890Sopenharmony_ci#define HABANALABS_H_
2122851890Sopenharmony_ci#include <linux/types.h>
2222851890Sopenharmony_ci#include <linux/ioctl.h>
2322851890Sopenharmony_ci#define GOYA_KMD_SRAM_RESERVED_SIZE_FROM_START 0x8000
2422851890Sopenharmony_ci#define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
2522851890Sopenharmony_ci#define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 48
2622851890Sopenharmony_ci#define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 24
2722851890Sopenharmony_cienum goya_queue_id {
2822851890Sopenharmony_ci  GOYA_QUEUE_ID_DMA_0 = 0,
2922851890Sopenharmony_ci  GOYA_QUEUE_ID_DMA_1 = 1,
3022851890Sopenharmony_ci  GOYA_QUEUE_ID_DMA_2 = 2,
3122851890Sopenharmony_ci  GOYA_QUEUE_ID_DMA_3 = 3,
3222851890Sopenharmony_ci  GOYA_QUEUE_ID_DMA_4 = 4,
3322851890Sopenharmony_ci  GOYA_QUEUE_ID_CPU_PQ = 5,
3422851890Sopenharmony_ci  GOYA_QUEUE_ID_MME = 6,
3522851890Sopenharmony_ci  GOYA_QUEUE_ID_TPC0 = 7,
3622851890Sopenharmony_ci  GOYA_QUEUE_ID_TPC1 = 8,
3722851890Sopenharmony_ci  GOYA_QUEUE_ID_TPC2 = 9,
3822851890Sopenharmony_ci  GOYA_QUEUE_ID_TPC3 = 10,
3922851890Sopenharmony_ci  GOYA_QUEUE_ID_TPC4 = 11,
4022851890Sopenharmony_ci  GOYA_QUEUE_ID_TPC5 = 12,
4122851890Sopenharmony_ci  GOYA_QUEUE_ID_TPC6 = 13,
4222851890Sopenharmony_ci  GOYA_QUEUE_ID_TPC7 = 14,
4322851890Sopenharmony_ci  GOYA_QUEUE_ID_SIZE
4422851890Sopenharmony_ci};
4522851890Sopenharmony_cienum gaudi_queue_id {
4622851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_0_0 = 0,
4722851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_0_1 = 1,
4822851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_0_2 = 2,
4922851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_0_3 = 3,
5022851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_1_0 = 4,
5122851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_1_1 = 5,
5222851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_1_2 = 6,
5322851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_1_3 = 7,
5422851890Sopenharmony_ci  GAUDI_QUEUE_ID_CPU_PQ = 8,
5522851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_2_0 = 9,
5622851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_2_1 = 10,
5722851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_2_2 = 11,
5822851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_2_3 = 12,
5922851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_3_0 = 13,
6022851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_3_1 = 14,
6122851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_3_2 = 15,
6222851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_3_3 = 16,
6322851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_4_0 = 17,
6422851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_4_1 = 18,
6522851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_4_2 = 19,
6622851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_4_3 = 20,
6722851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_5_0 = 21,
6822851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_5_1 = 22,
6922851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_5_2 = 23,
7022851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_5_3 = 24,
7122851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_6_0 = 25,
7222851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_6_1 = 26,
7322851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_6_2 = 27,
7422851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_6_3 = 28,
7522851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_7_0 = 29,
7622851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_7_1 = 30,
7722851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_7_2 = 31,
7822851890Sopenharmony_ci  GAUDI_QUEUE_ID_DMA_7_3 = 32,
7922851890Sopenharmony_ci  GAUDI_QUEUE_ID_MME_0_0 = 33,
8022851890Sopenharmony_ci  GAUDI_QUEUE_ID_MME_0_1 = 34,
8122851890Sopenharmony_ci  GAUDI_QUEUE_ID_MME_0_2 = 35,
8222851890Sopenharmony_ci  GAUDI_QUEUE_ID_MME_0_3 = 36,
8322851890Sopenharmony_ci  GAUDI_QUEUE_ID_MME_1_0 = 37,
8422851890Sopenharmony_ci  GAUDI_QUEUE_ID_MME_1_1 = 38,
8522851890Sopenharmony_ci  GAUDI_QUEUE_ID_MME_1_2 = 39,
8622851890Sopenharmony_ci  GAUDI_QUEUE_ID_MME_1_3 = 40,
8722851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_0_0 = 41,
8822851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_0_1 = 42,
8922851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_0_2 = 43,
9022851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_0_3 = 44,
9122851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_1_0 = 45,
9222851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_1_1 = 46,
9322851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_1_2 = 47,
9422851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_1_3 = 48,
9522851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_2_0 = 49,
9622851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_2_1 = 50,
9722851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_2_2 = 51,
9822851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_2_3 = 52,
9922851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_3_0 = 53,
10022851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_3_1 = 54,
10122851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_3_2 = 55,
10222851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_3_3 = 56,
10322851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_4_0 = 57,
10422851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_4_1 = 58,
10522851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_4_2 = 59,
10622851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_4_3 = 60,
10722851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_5_0 = 61,
10822851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_5_1 = 62,
10922851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_5_2 = 63,
11022851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_5_3 = 64,
11122851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_6_0 = 65,
11222851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_6_1 = 66,
11322851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_6_2 = 67,
11422851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_6_3 = 68,
11522851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_7_0 = 69,
11622851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_7_1 = 70,
11722851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_7_2 = 71,
11822851890Sopenharmony_ci  GAUDI_QUEUE_ID_TPC_7_3 = 72,
11922851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_0_0 = 73,
12022851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_0_1 = 74,
12122851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_0_2 = 75,
12222851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_0_3 = 76,
12322851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_1_0 = 77,
12422851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_1_1 = 78,
12522851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_1_2 = 79,
12622851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_1_3 = 80,
12722851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_2_0 = 81,
12822851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_2_1 = 82,
12922851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_2_2 = 83,
13022851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_2_3 = 84,
13122851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_3_0 = 85,
13222851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_3_1 = 86,
13322851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_3_2 = 87,
13422851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_3_3 = 88,
13522851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_4_0 = 89,
13622851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_4_1 = 90,
13722851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_4_2 = 91,
13822851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_4_3 = 92,
13922851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_5_0 = 93,
14022851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_5_1 = 94,
14122851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_5_2 = 95,
14222851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_5_3 = 96,
14322851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_6_0 = 97,
14422851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_6_1 = 98,
14522851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_6_2 = 99,
14622851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_6_3 = 100,
14722851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_7_0 = 101,
14822851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_7_1 = 102,
14922851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_7_2 = 103,
15022851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_7_3 = 104,
15122851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_8_0 = 105,
15222851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_8_1 = 106,
15322851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_8_2 = 107,
15422851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_8_3 = 108,
15522851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_9_0 = 109,
15622851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_9_1 = 110,
15722851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_9_2 = 111,
15822851890Sopenharmony_ci  GAUDI_QUEUE_ID_NIC_9_3 = 112,
15922851890Sopenharmony_ci  GAUDI_QUEUE_ID_SIZE
16022851890Sopenharmony_ci};
16122851890Sopenharmony_cienum goya_engine_id {
16222851890Sopenharmony_ci  GOYA_ENGINE_ID_DMA_0 = 0,
16322851890Sopenharmony_ci  GOYA_ENGINE_ID_DMA_1,
16422851890Sopenharmony_ci  GOYA_ENGINE_ID_DMA_2,
16522851890Sopenharmony_ci  GOYA_ENGINE_ID_DMA_3,
16622851890Sopenharmony_ci  GOYA_ENGINE_ID_DMA_4,
16722851890Sopenharmony_ci  GOYA_ENGINE_ID_MME_0,
16822851890Sopenharmony_ci  GOYA_ENGINE_ID_TPC_0,
16922851890Sopenharmony_ci  GOYA_ENGINE_ID_TPC_1,
17022851890Sopenharmony_ci  GOYA_ENGINE_ID_TPC_2,
17122851890Sopenharmony_ci  GOYA_ENGINE_ID_TPC_3,
17222851890Sopenharmony_ci  GOYA_ENGINE_ID_TPC_4,
17322851890Sopenharmony_ci  GOYA_ENGINE_ID_TPC_5,
17422851890Sopenharmony_ci  GOYA_ENGINE_ID_TPC_6,
17522851890Sopenharmony_ci  GOYA_ENGINE_ID_TPC_7,
17622851890Sopenharmony_ci  GOYA_ENGINE_ID_SIZE
17722851890Sopenharmony_ci};
17822851890Sopenharmony_cienum gaudi_engine_id {
17922851890Sopenharmony_ci  GAUDI_ENGINE_ID_DMA_0 = 0,
18022851890Sopenharmony_ci  GAUDI_ENGINE_ID_DMA_1,
18122851890Sopenharmony_ci  GAUDI_ENGINE_ID_DMA_2,
18222851890Sopenharmony_ci  GAUDI_ENGINE_ID_DMA_3,
18322851890Sopenharmony_ci  GAUDI_ENGINE_ID_DMA_4,
18422851890Sopenharmony_ci  GAUDI_ENGINE_ID_DMA_5,
18522851890Sopenharmony_ci  GAUDI_ENGINE_ID_DMA_6,
18622851890Sopenharmony_ci  GAUDI_ENGINE_ID_DMA_7,
18722851890Sopenharmony_ci  GAUDI_ENGINE_ID_MME_0,
18822851890Sopenharmony_ci  GAUDI_ENGINE_ID_MME_1,
18922851890Sopenharmony_ci  GAUDI_ENGINE_ID_MME_2,
19022851890Sopenharmony_ci  GAUDI_ENGINE_ID_MME_3,
19122851890Sopenharmony_ci  GAUDI_ENGINE_ID_TPC_0,
19222851890Sopenharmony_ci  GAUDI_ENGINE_ID_TPC_1,
19322851890Sopenharmony_ci  GAUDI_ENGINE_ID_TPC_2,
19422851890Sopenharmony_ci  GAUDI_ENGINE_ID_TPC_3,
19522851890Sopenharmony_ci  GAUDI_ENGINE_ID_TPC_4,
19622851890Sopenharmony_ci  GAUDI_ENGINE_ID_TPC_5,
19722851890Sopenharmony_ci  GAUDI_ENGINE_ID_TPC_6,
19822851890Sopenharmony_ci  GAUDI_ENGINE_ID_TPC_7,
19922851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_0,
20022851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_1,
20122851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_2,
20222851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_3,
20322851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_4,
20422851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_5,
20522851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_6,
20622851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_7,
20722851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_8,
20822851890Sopenharmony_ci  GAUDI_ENGINE_ID_NIC_9,
20922851890Sopenharmony_ci  GAUDI_ENGINE_ID_SIZE
21022851890Sopenharmony_ci};
21122851890Sopenharmony_cienum hl_device_status {
21222851890Sopenharmony_ci  HL_DEVICE_STATUS_OPERATIONAL,
21322851890Sopenharmony_ci  HL_DEVICE_STATUS_IN_RESET,
21422851890Sopenharmony_ci  HL_DEVICE_STATUS_MALFUNCTION
21522851890Sopenharmony_ci};
21622851890Sopenharmony_ci#define HL_INFO_HW_IP_INFO 0
21722851890Sopenharmony_ci#define HL_INFO_HW_EVENTS 1
21822851890Sopenharmony_ci#define HL_INFO_DRAM_USAGE 2
21922851890Sopenharmony_ci#define HL_INFO_HW_IDLE 3
22022851890Sopenharmony_ci#define HL_INFO_DEVICE_STATUS 4
22122851890Sopenharmony_ci#define HL_INFO_DEVICE_UTILIZATION 6
22222851890Sopenharmony_ci#define HL_INFO_HW_EVENTS_AGGREGATE 7
22322851890Sopenharmony_ci#define HL_INFO_CLK_RATE 8
22422851890Sopenharmony_ci#define HL_INFO_RESET_COUNT 9
22522851890Sopenharmony_ci#define HL_INFO_TIME_SYNC 10
22622851890Sopenharmony_ci#define HL_INFO_CS_COUNTERS 11
22722851890Sopenharmony_ci#define HL_INFO_PCI_COUNTERS 12
22822851890Sopenharmony_ci#define HL_INFO_CLK_THROTTLE_REASON 13
22922851890Sopenharmony_ci#define HL_INFO_SYNC_MANAGER 14
23022851890Sopenharmony_ci#define HL_INFO_TOTAL_ENERGY 15
23122851890Sopenharmony_ci#define HL_INFO_VERSION_MAX_LEN 128
23222851890Sopenharmony_ci#define HL_INFO_CARD_NAME_MAX_LEN 16
23322851890Sopenharmony_cistruct hl_info_hw_ip_info {
23422851890Sopenharmony_ci  __u64 sram_base_address;
23522851890Sopenharmony_ci  __u64 dram_base_address;
23622851890Sopenharmony_ci  __u64 dram_size;
23722851890Sopenharmony_ci  __u32 sram_size;
23822851890Sopenharmony_ci  __u32 num_of_events;
23922851890Sopenharmony_ci  __u32 device_id;
24022851890Sopenharmony_ci  __u32 module_id;
24122851890Sopenharmony_ci  __u32 reserved[2];
24222851890Sopenharmony_ci  __u32 cpld_version;
24322851890Sopenharmony_ci  __u32 psoc_pci_pll_nr;
24422851890Sopenharmony_ci  __u32 psoc_pci_pll_nf;
24522851890Sopenharmony_ci  __u32 psoc_pci_pll_od;
24622851890Sopenharmony_ci  __u32 psoc_pci_pll_div_factor;
24722851890Sopenharmony_ci  __u8 tpc_enabled_mask;
24822851890Sopenharmony_ci  __u8 dram_enabled;
24922851890Sopenharmony_ci  __u8 pad[2];
25022851890Sopenharmony_ci  __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
25122851890Sopenharmony_ci  __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
25222851890Sopenharmony_ci};
25322851890Sopenharmony_cistruct hl_info_dram_usage {
25422851890Sopenharmony_ci  __u64 dram_free_mem;
25522851890Sopenharmony_ci  __u64 ctx_dram_mem;
25622851890Sopenharmony_ci};
25722851890Sopenharmony_cistruct hl_info_hw_idle {
25822851890Sopenharmony_ci  __u32 is_idle;
25922851890Sopenharmony_ci  __u32 busy_engines_mask;
26022851890Sopenharmony_ci  __u64 busy_engines_mask_ext;
26122851890Sopenharmony_ci};
26222851890Sopenharmony_cistruct hl_info_device_status {
26322851890Sopenharmony_ci  __u32 status;
26422851890Sopenharmony_ci  __u32 pad;
26522851890Sopenharmony_ci};
26622851890Sopenharmony_cistruct hl_info_device_utilization {
26722851890Sopenharmony_ci  __u32 utilization;
26822851890Sopenharmony_ci  __u32 pad;
26922851890Sopenharmony_ci};
27022851890Sopenharmony_cistruct hl_info_clk_rate {
27122851890Sopenharmony_ci  __u32 cur_clk_rate_mhz;
27222851890Sopenharmony_ci  __u32 max_clk_rate_mhz;
27322851890Sopenharmony_ci};
27422851890Sopenharmony_cistruct hl_info_reset_count {
27522851890Sopenharmony_ci  __u32 hard_reset_cnt;
27622851890Sopenharmony_ci  __u32 soft_reset_cnt;
27722851890Sopenharmony_ci};
27822851890Sopenharmony_cistruct hl_info_time_sync {
27922851890Sopenharmony_ci  __u64 device_time;
28022851890Sopenharmony_ci  __u64 host_time;
28122851890Sopenharmony_ci};
28222851890Sopenharmony_cistruct hl_info_pci_counters {
28322851890Sopenharmony_ci  __u64 rx_throughput;
28422851890Sopenharmony_ci  __u64 tx_throughput;
28522851890Sopenharmony_ci  __u64 replay_cnt;
28622851890Sopenharmony_ci};
28722851890Sopenharmony_ci#define HL_CLK_THROTTLE_POWER 0x1
28822851890Sopenharmony_ci#define HL_CLK_THROTTLE_THERMAL 0x2
28922851890Sopenharmony_cistruct hl_info_clk_throttle {
29022851890Sopenharmony_ci  __u32 clk_throttling_reason;
29122851890Sopenharmony_ci};
29222851890Sopenharmony_cistruct hl_info_energy {
29322851890Sopenharmony_ci  __u64 total_energy_consumption;
29422851890Sopenharmony_ci};
29522851890Sopenharmony_cistruct hl_info_sync_manager {
29622851890Sopenharmony_ci  __u32 first_available_sync_object;
29722851890Sopenharmony_ci  __u32 first_available_monitor;
29822851890Sopenharmony_ci};
29922851890Sopenharmony_cistruct hl_cs_counters {
30022851890Sopenharmony_ci  __u64 out_of_mem_drop_cnt;
30122851890Sopenharmony_ci  __u64 parsing_drop_cnt;
30222851890Sopenharmony_ci  __u64 queue_full_drop_cnt;
30322851890Sopenharmony_ci  __u64 device_in_reset_drop_cnt;
30422851890Sopenharmony_ci  __u64 max_cs_in_flight_drop_cnt;
30522851890Sopenharmony_ci};
30622851890Sopenharmony_cistruct hl_info_cs_counters {
30722851890Sopenharmony_ci  struct hl_cs_counters cs_counters;
30822851890Sopenharmony_ci  struct hl_cs_counters ctx_cs_counters;
30922851890Sopenharmony_ci};
31022851890Sopenharmony_cienum gaudi_dcores {
31122851890Sopenharmony_ci  HL_GAUDI_WS_DCORE,
31222851890Sopenharmony_ci  HL_GAUDI_WN_DCORE,
31322851890Sopenharmony_ci  HL_GAUDI_EN_DCORE,
31422851890Sopenharmony_ci  HL_GAUDI_ES_DCORE
31522851890Sopenharmony_ci};
31622851890Sopenharmony_cistruct hl_info_args {
31722851890Sopenharmony_ci  __u64 return_pointer;
31822851890Sopenharmony_ci  __u32 return_size;
31922851890Sopenharmony_ci  __u32 op;
32022851890Sopenharmony_ci  union {
32122851890Sopenharmony_ci    __u32 dcore_id;
32222851890Sopenharmony_ci    __u32 ctx_id;
32322851890Sopenharmony_ci    __u32 period_ms;
32422851890Sopenharmony_ci  };
32522851890Sopenharmony_ci  __u32 pad;
32622851890Sopenharmony_ci};
32722851890Sopenharmony_ci#define HL_CB_OP_CREATE 0
32822851890Sopenharmony_ci#define HL_CB_OP_DESTROY 1
32922851890Sopenharmony_ci#define HL_MAX_CB_SIZE (0x200000 - 32)
33022851890Sopenharmony_ci#define HL_CB_FLAGS_MAP 0x1
33122851890Sopenharmony_cistruct hl_cb_in {
33222851890Sopenharmony_ci  __u64 cb_handle;
33322851890Sopenharmony_ci  __u32 op;
33422851890Sopenharmony_ci  __u32 cb_size;
33522851890Sopenharmony_ci  __u32 ctx_id;
33622851890Sopenharmony_ci  __u32 flags;
33722851890Sopenharmony_ci};
33822851890Sopenharmony_cistruct hl_cb_out {
33922851890Sopenharmony_ci  __u64 cb_handle;
34022851890Sopenharmony_ci};
34122851890Sopenharmony_ciunion hl_cb_args {
34222851890Sopenharmony_ci  struct hl_cb_in in;
34322851890Sopenharmony_ci  struct hl_cb_out out;
34422851890Sopenharmony_ci};
34522851890Sopenharmony_cistruct hl_cs_chunk {
34622851890Sopenharmony_ci  union {
34722851890Sopenharmony_ci    __u64 cb_handle;
34822851890Sopenharmony_ci    __u64 signal_seq_arr;
34922851890Sopenharmony_ci  };
35022851890Sopenharmony_ci  __u32 queue_index;
35122851890Sopenharmony_ci  union {
35222851890Sopenharmony_ci    __u32 cb_size;
35322851890Sopenharmony_ci    __u32 num_signal_seq_arr;
35422851890Sopenharmony_ci  };
35522851890Sopenharmony_ci  __u32 cs_chunk_flags;
35622851890Sopenharmony_ci  __u32 pad[11];
35722851890Sopenharmony_ci};
35822851890Sopenharmony_ci#define HL_CS_FLAGS_FORCE_RESTORE 0x1
35922851890Sopenharmony_ci#define HL_CS_FLAGS_SIGNAL 0x2
36022851890Sopenharmony_ci#define HL_CS_FLAGS_WAIT 0x4
36122851890Sopenharmony_ci#define HL_CS_STATUS_SUCCESS 0
36222851890Sopenharmony_ci#define HL_MAX_JOBS_PER_CS 512
36322851890Sopenharmony_cistruct hl_cs_in {
36422851890Sopenharmony_ci  __u64 chunks_restore;
36522851890Sopenharmony_ci  __u64 chunks_execute;
36622851890Sopenharmony_ci  __u64 chunks_store;
36722851890Sopenharmony_ci  __u32 num_chunks_restore;
36822851890Sopenharmony_ci  __u32 num_chunks_execute;
36922851890Sopenharmony_ci  __u32 num_chunks_store;
37022851890Sopenharmony_ci  __u32 cs_flags;
37122851890Sopenharmony_ci  __u32 ctx_id;
37222851890Sopenharmony_ci};
37322851890Sopenharmony_cistruct hl_cs_out {
37422851890Sopenharmony_ci  __u64 seq;
37522851890Sopenharmony_ci  __u32 status;
37622851890Sopenharmony_ci  __u32 pad;
37722851890Sopenharmony_ci};
37822851890Sopenharmony_ciunion hl_cs_args {
37922851890Sopenharmony_ci  struct hl_cs_in in;
38022851890Sopenharmony_ci  struct hl_cs_out out;
38122851890Sopenharmony_ci};
38222851890Sopenharmony_cistruct hl_wait_cs_in {
38322851890Sopenharmony_ci  __u64 seq;
38422851890Sopenharmony_ci  __u64 timeout_us;
38522851890Sopenharmony_ci  __u32 ctx_id;
38622851890Sopenharmony_ci  __u32 pad;
38722851890Sopenharmony_ci};
38822851890Sopenharmony_ci#define HL_WAIT_CS_STATUS_COMPLETED 0
38922851890Sopenharmony_ci#define HL_WAIT_CS_STATUS_BUSY 1
39022851890Sopenharmony_ci#define HL_WAIT_CS_STATUS_TIMEDOUT 2
39122851890Sopenharmony_ci#define HL_WAIT_CS_STATUS_ABORTED 3
39222851890Sopenharmony_ci#define HL_WAIT_CS_STATUS_INTERRUPTED 4
39322851890Sopenharmony_cistruct hl_wait_cs_out {
39422851890Sopenharmony_ci  __u32 status;
39522851890Sopenharmony_ci  __u32 pad;
39622851890Sopenharmony_ci};
39722851890Sopenharmony_ciunion hl_wait_cs_args {
39822851890Sopenharmony_ci  struct hl_wait_cs_in in;
39922851890Sopenharmony_ci  struct hl_wait_cs_out out;
40022851890Sopenharmony_ci};
40122851890Sopenharmony_ci#define HL_MEM_OP_ALLOC 0
40222851890Sopenharmony_ci#define HL_MEM_OP_FREE 1
40322851890Sopenharmony_ci#define HL_MEM_OP_MAP 2
40422851890Sopenharmony_ci#define HL_MEM_OP_UNMAP 3
40522851890Sopenharmony_ci#define HL_MEM_CONTIGUOUS 0x1
40622851890Sopenharmony_ci#define HL_MEM_SHARED 0x2
40722851890Sopenharmony_ci#define HL_MEM_USERPTR 0x4
40822851890Sopenharmony_cistruct hl_mem_in {
40922851890Sopenharmony_ci  union {
41022851890Sopenharmony_ci    struct {
41122851890Sopenharmony_ci      __u64 mem_size;
41222851890Sopenharmony_ci    } alloc;
41322851890Sopenharmony_ci    struct {
41422851890Sopenharmony_ci      __u64 handle;
41522851890Sopenharmony_ci    } free;
41622851890Sopenharmony_ci    struct {
41722851890Sopenharmony_ci      __u64 hint_addr;
41822851890Sopenharmony_ci      __u64 handle;
41922851890Sopenharmony_ci    } map_device;
42022851890Sopenharmony_ci    struct {
42122851890Sopenharmony_ci      __u64 host_virt_addr;
42222851890Sopenharmony_ci      __u64 hint_addr;
42322851890Sopenharmony_ci      __u64 mem_size;
42422851890Sopenharmony_ci    } map_host;
42522851890Sopenharmony_ci    struct {
42622851890Sopenharmony_ci      __u64 device_virt_addr;
42722851890Sopenharmony_ci    } unmap;
42822851890Sopenharmony_ci  };
42922851890Sopenharmony_ci  __u32 op;
43022851890Sopenharmony_ci  __u32 flags;
43122851890Sopenharmony_ci  __u32 ctx_id;
43222851890Sopenharmony_ci  __u32 pad;
43322851890Sopenharmony_ci};
43422851890Sopenharmony_cistruct hl_mem_out {
43522851890Sopenharmony_ci  union {
43622851890Sopenharmony_ci    __u64 device_virt_addr;
43722851890Sopenharmony_ci    __u64 handle;
43822851890Sopenharmony_ci  };
43922851890Sopenharmony_ci};
44022851890Sopenharmony_ciunion hl_mem_args {
44122851890Sopenharmony_ci  struct hl_mem_in in;
44222851890Sopenharmony_ci  struct hl_mem_out out;
44322851890Sopenharmony_ci};
44422851890Sopenharmony_ci#define HL_DEBUG_MAX_AUX_VALUES 10
44522851890Sopenharmony_cistruct hl_debug_params_etr {
44622851890Sopenharmony_ci  __u64 buffer_address;
44722851890Sopenharmony_ci  __u64 buffer_size;
44822851890Sopenharmony_ci  __u32 sink_mode;
44922851890Sopenharmony_ci  __u32 pad;
45022851890Sopenharmony_ci};
45122851890Sopenharmony_cistruct hl_debug_params_etf {
45222851890Sopenharmony_ci  __u64 buffer_address;
45322851890Sopenharmony_ci  __u64 buffer_size;
45422851890Sopenharmony_ci  __u32 sink_mode;
45522851890Sopenharmony_ci  __u32 pad;
45622851890Sopenharmony_ci};
45722851890Sopenharmony_cistruct hl_debug_params_stm {
45822851890Sopenharmony_ci  __u64 he_mask;
45922851890Sopenharmony_ci  __u64 sp_mask;
46022851890Sopenharmony_ci  __u32 id;
46122851890Sopenharmony_ci  __u32 frequency;
46222851890Sopenharmony_ci};
46322851890Sopenharmony_cistruct hl_debug_params_bmon {
46422851890Sopenharmony_ci  __u64 start_addr0;
46522851890Sopenharmony_ci  __u64 addr_mask0;
46622851890Sopenharmony_ci  __u64 start_addr1;
46722851890Sopenharmony_ci  __u64 addr_mask1;
46822851890Sopenharmony_ci  __u32 bw_win;
46922851890Sopenharmony_ci  __u32 win_capture;
47022851890Sopenharmony_ci  __u32 id;
47122851890Sopenharmony_ci  __u32 pad;
47222851890Sopenharmony_ci};
47322851890Sopenharmony_cistruct hl_debug_params_spmu {
47422851890Sopenharmony_ci  __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
47522851890Sopenharmony_ci  __u32 event_types_num;
47622851890Sopenharmony_ci  __u32 pad;
47722851890Sopenharmony_ci};
47822851890Sopenharmony_ci#define HL_DEBUG_OP_ETR 0
47922851890Sopenharmony_ci#define HL_DEBUG_OP_ETF 1
48022851890Sopenharmony_ci#define HL_DEBUG_OP_STM 2
48122851890Sopenharmony_ci#define HL_DEBUG_OP_FUNNEL 3
48222851890Sopenharmony_ci#define HL_DEBUG_OP_BMON 4
48322851890Sopenharmony_ci#define HL_DEBUG_OP_SPMU 5
48422851890Sopenharmony_ci#define HL_DEBUG_OP_TIMESTAMP 6
48522851890Sopenharmony_ci#define HL_DEBUG_OP_SET_MODE 7
48622851890Sopenharmony_cistruct hl_debug_args {
48722851890Sopenharmony_ci  __u64 input_ptr;
48822851890Sopenharmony_ci  __u64 output_ptr;
48922851890Sopenharmony_ci  __u32 input_size;
49022851890Sopenharmony_ci  __u32 output_size;
49122851890Sopenharmony_ci  __u32 op;
49222851890Sopenharmony_ci  __u32 reg_idx;
49322851890Sopenharmony_ci  __u32 enable;
49422851890Sopenharmony_ci  __u32 ctx_id;
49522851890Sopenharmony_ci};
49622851890Sopenharmony_ci#define HL_IOCTL_INFO _IOWR('H', 0x01, struct hl_info_args)
49722851890Sopenharmony_ci#define HL_IOCTL_CB _IOWR('H', 0x02, union hl_cb_args)
49822851890Sopenharmony_ci#define HL_IOCTL_CS _IOWR('H', 0x03, union hl_cs_args)
49922851890Sopenharmony_ci#define HL_IOCTL_WAIT_CS _IOWR('H', 0x04, union hl_wait_cs_args)
50022851890Sopenharmony_ci#define HL_IOCTL_MEMORY _IOWR('H', 0x05, union hl_mem_args)
50122851890Sopenharmony_ci#define HL_IOCTL_DEBUG _IOWR('H', 0x06, struct hl_debug_args)
50222851890Sopenharmony_ci#define HL_COMMAND_START 0x01
50322851890Sopenharmony_ci#define HL_COMMAND_END 0x07
50422851890Sopenharmony_ci#endif
505