kernel-brax3-ubuntu-touch/drivers/misc/mediatek/apusys/mvpu/mvpu_cmd_data.h
erascape f319b992b1 kernel-5.15: Initial import brax3 UT kernel
* halium configs enabled

Signed-off-by: erascape <erascape@proton.me>
2025-09-23 15:17:10 +00:00

138 lines
2.7 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2020 MediaTek Inc.
*/
#ifndef __MVPU_CMD_DATA_H__
#define __MVPU_CMD_DATA_H__
#define MVPU_PE_NUM 64
#define MVPU_DUP_BUF_SIZE (2 * MVPU_PE_NUM)
#define MVPU_REQUEST_NAME_SIZE 32
#define MVPU_MPU_SEGMENT_NUMS 39
#define MVPU_MIN_CMDBUF_NUM 2
#define MVPU_CMD_INFO_IDX 0
#define MVPU_CMD_KREG_BASE_IDX 1
#define MVPU_CMD_LITE_SIZE_0 0x12E
#define MVPU_CMD_LITE_SIZE_1 0x14A
#ifndef MVPU_SECURITY
#define MVPU_SECURITY
#endif
#ifdef MVPU_SECURITY
#define BUF_NUM_MASK 0x0000FFFF
#define KERARG_NUM_MASK 0x3FFF0000
#define KERARG_NUM_SHIFT 16
#define SEC_LEVEL_MASK 0xC0000000
#define SEC_LEVEL_SHIFT 30
enum MVPU_SEC_LEVEL {
SEC_LVL_CHECK = 0,
SEC_LVL_CHECK_ALL = 1,
SEC_LVL_PROTECT = 2,
SEC_LVL_END,
};
#endif
struct BundleHeader {
union {
unsigned int dwValue;
struct {
unsigned int kreg_bundle_thread_mode_cfg : 8;
unsigned int kreg_bundle_high_priority : 1;
unsigned int kreg_bundle_interrupt_en : 1;
unsigned int kreg_0x0000_rsv0 : 2;
unsigned int kreg_kernel_thread_mode : 2;
unsigned int kreg_0x0000_rsv1 : 2;
unsigned int kreg_kernel_num : 16;
} s;
} reg_bundle_setting_0;
union {
unsigned int dwValue;
struct {
unsigned int kreg_bundle_cfg_base : 32;
} s;
} reg_bundle_setting_1;
union {
unsigned int dwValue;
struct {
unsigned int kreg_bundle_event_id : 32;
} s;
} reg_bundle_setting_2;
union {
unsigned int dwValue;
struct {
unsigned int kreg_kernel_start_cnt : 16;
unsigned int kreg_bundle_skip_dma_num : 4;
} s;
} reg_bundle_setting_3;
};
/* MVPU command structure*/
struct mvpu_request {
struct BundleHeader header;
uint32_t algo_id;
char name[MVPU_REQUEST_NAME_SIZE];
/* driver info, exception etc */
uint32_t drv_info;
uint32_t drv_ret;
/* mpu setting */
uint16_t mpu_num;
uint32_t mpu_seg[MVPU_MPU_SEGMENT_NUMS];
/* debug mode */
/* 0x0 : debugger */
/* 0x1 : rv break debug */
/* 0x2 : safe mode for memory in-order */
uint16_t debug_mode;
/* debugger id when rv debug */
uint16_t debug_id;
/* PMU setting */
uint16_t pmu_mode;
uint16_t pmc_mode;
uint32_t pmu_buff;
uint32_t buff_size;
#ifdef MVPU_SECURITY
uint32_t batch_name_hash;
uint32_t buf_num;
uint32_t rp_num;
uint64_t sec_chk_addr;
uint64_t sec_buf_size;
uint64_t sec_buf_attr;
uint64_t target_buf_old_base;
uint64_t target_buf_old_offset;
uint64_t target_buf_new_base;
uint64_t target_buf_new_offset;
uint32_t kerarg_num;
uint64_t kerarg_buf_id;
uint64_t kerarg_offset;
uint64_t kerarg_size;
uint32_t primem_num;
uint64_t primem_src_buf_id;
uint64_t primem_dst_buf_id;
uint64_t primem_src_offset;
uint64_t primem_dst_offset;
uint64_t primem_size;
#endif
} __packed;
#endif