/**
 * Copyright (c) 2025 Huawei Technologies Co., Ltd.
 * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
 * CANN Open Software License Agreement Version 2.0 (the "License").
 * Please refer to the License for details. You may not use this file except in compliance with the License.
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
 * See LICENSE in the root of the software repository for the full text of the License.
 */
#include "base.hpp"
#include "dev_info_manage.h"
#include "stars_base.hpp"
#include "stars_base_cond_isa_define.hpp"
#include "task_base.hpp"
#include "base_david.hpp"
#include "starsv2_base.hpp"
namespace cce {
namespace runtime {

REGISTER_PLATFORM_LIB_INFO(CHIP_DAVID, "libruntime_v200.so");

const std::unordered_set<RtOptionalFeatureType> CHIP_DAVID_FEATURE{
    RtOptionalFeatureType::RT_FEATURE_DFX_REPORT_RAS,
    RtOptionalFeatureType::RT_FEATURE_OVERFLOW_MODE,
    RtOptionalFeatureType::RT_FEATURE_MODEL_ACL_GRAPH,
    RtOptionalFeatureType::RT_FEATURE_IPC_MEMORY,
    RtOptionalFeatureType::RT_FEATURE_IPC_NOTIFY,
    RtOptionalFeatureType::RT_FEATURE_TASK_FUSION,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_DCACHE_LOCK,
    RtOptionalFeatureType::RT_FEATURE_TASK_ALLOC_FROM_STREAM_POOL,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_TILING_KEY_SINK,
    RtOptionalFeatureType::RT_FEATURE_TASK_MEMORY_BATCH_COPY,
    RtOptionalFeatureType::RT_FEATURE_STREAM_GET_AVILIABLE_NUM,
    RtOptionalFeatureType::RT_FEATURE_NOTIFY_USER_VA_MAPPING,
    RtOptionalFeatureType::RT_FEATURE_DRIVER_NUMA_TS_MEM_CTRL,
    RtOptionalFeatureType::RT_FEATURE_TASK_CMO,
    RtOptionalFeatureType::RT_FEATURE_DFX_ERR_GET_AND_REPAIR,
    RtOptionalFeatureType::RT_FEATURE_TASK_FLIP,
    RtOptionalFeatureType::RT_FEATURE_DFX_ARGS_DOT_ALLOC_ERROR_LOG,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_TS_COMMON_CPU,
    RtOptionalFeatureType::RT_FEATURE_TASK_DVPP,
    RtOptionalFeatureType::RT_FEATURE_STREAM_DVPP_GROUP,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_TILING_TAB_COPY_V2,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_REGISTER_CALLBACK,
    RtOptionalFeatureType::RT_FEATURE_TASK_ALLOC_FROM_STREAM_POOL_DOT_CPUKERNEL,
    RtOptionalFeatureType::RT_FEATURE_MEM_HOST_REGISTER_PCIE_THROUGH,
    RtOptionalFeatureType::RT_FEATURE_TASK_TRY_RECYCLE_DISABLE_HWTS,
    RtOptionalFeatureType::RT_FEATURE_NOTIFY_WAIT_TIMEOUT,
    RtOptionalFeatureType::RT_FEATURE_DFX_FAST_RECOVER,
    RtOptionalFeatureType::RT_FEATURE_DFX_TS_RING_BUFFER,
    RtOptionalFeatureType::RT_FEATURE_MEM_1G_HUGE_PAGE,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_NOTIFY_ONLY,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_VISIBLE,
    RtOptionalFeatureType::RT_FEATURE_TASK_MODEL_EXECUTE_COPY_ONCE,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_SIMT,
    RtOptionalFeatureType::RT_FEATURE_MEM_L2_CACHE_PERSISTANT,
    RtOptionalFeatureType::RT_FEATURE_DRIVER_RESOURCE_SQCQ_ALLOC_EX,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_HAS_TS_DEAMON,
    RtOptionalFeatureType::RT_FEATURE_DFX_HWTS_LOG,
    RtOptionalFeatureType::RT_FEATURE_TASK_DEBUG_REGISTER_WITH_VA_ADDR,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_GET_STARS_VERSION,
    RtOptionalFeatureType::RT_FEATURE_TASK_PCIE_DMA_ASYNC_WITH_USER_VA,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_P2P,
    RtOptionalFeatureType::RT_FEATURE_PROFILING_AICPU,
    RtOptionalFeatureType::RT_FEATURE_TASK_RECYCLE_THREAD,
    RtOptionalFeatureType::RT_FEATURE_TASK_MODEL_EXECUTE_SPLIT_FUNC_CALL,
    RtOptionalFeatureType::RT_FEATURE_MODEL_STREAM_DOT_SYNC,
    RtOptionalFeatureType::RT_FEATURE_DFX_WATCH_DOG,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_FAILURE_MODE_SET,
    RtOptionalFeatureType::RT_FEATURE_TASK_MODEL_MAINTAINCE_WITH_VA,
    RtOptionalFeatureType::RT_FEATURE_DFX_TS_GET_DEVICE_MSG,
    RtOptionalFeatureType::RT_FEATURE_DRIVER_GET_FAULT_EVENT,
    RtOptionalFeatureType::RT_FEATURE_IPC_EVENT,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_DCACHE_LOCK_DOT_ALLOC_STACK,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_MESSAGE_QUEUE,
    RtOptionalFeatureType::RT_FEATURE_TASK_VALUE_WAIT,
    RtOptionalFeatureType::RT_FEATURE_MEM_MBUF_COPY,
    RtOptionalFeatureType::RT_FEATURE_STREAM_MAP_SQ_ADDR_TO_USER_SPACE,
    RtOptionalFeatureType::RT_FEATURE_STREAM_HUGE_DEPTH,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_TASK_RATION,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_SPM_POOL,
    RtOptionalFeatureType::RT_FEATURE_DRIVER_RESOURCE_ALLOC_WITH_VFID,
    RtOptionalFeatureType::RT_FEATURE_MODEL_ABORT,
    RtOptionalFeatureType::RT_FEATURE_MODEL_ABORT_USE_DEFAULT_STREAM,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_MEMORY_POOL,
    RtOptionalFeatureType::RT_FEATURE_MEM_HOST_REGISTER,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_META_TYPE_SU_STACK_SIZE,
    RtOptionalFeatureType::RT_FEATURE_DFX_FLOAT_OVERFLOW_DEBUG,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_GET_RESOURCE_NUM_DYNAMIC,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_SET_RUNTIME_CAPABLITY,
    RtOptionalFeatureType::RT_FEATURE_STREAM_DOT_SET_MODE,
    RtOptionalFeatureType::RT_FEATURE_TASK_MEMORY_COPY_DOT_HOST,
    RtOptionalFeatureType::RT_FEATURE_STREAM_DELETE_FORCE,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_DOT_GET_GROUP_AIC_NUM,
    RtOptionalFeatureType::RT_FEATURE_DFX_STOP_ON_STREAM_ERROR,
    RtOptionalFeatureType::RT_FEATURE_TASK_MEMCPY_D2D_BY_OFFSET,
    RtOptionalFeatureType::RT_FEATURE_MODEL_STREAM_LOAD_COMPLETE_TO_RTSQ,
    RtOptionalFeatureType::RT_FEATURE_MODEL_EXE_DOT_NEED_LOAD_COMPLETE,
    RtOptionalFeatureType::RT_FEATURE_MODEL_UPDATE_SQE_TILING_KEY,
    RtOptionalFeatureType::RT_FEATURE_DFX_FAST_RECOVER_DOT_STREAM,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_LAUNCH_EX_BY_FUNC_HANDLE,
    RtOptionalFeatureType::RT_FEATURE_STREAM_ATTR_FAILURE_MODE,
    RtOptionalFeatureType::RT_FEATURE_STREAM_ATTR_OVERFLOW_CHECK,
    RtOptionalFeatureType::RT_FEATURE_STREAM_ATTR_USER_CUSTOM_TAG,
    RtOptionalFeatureType::RT_FEATURE_STREAM_TAG,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_BINARY_LOAD_DOT_WITHOUT_TILING,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_BINARY_GET_FUNCTION_DOT_BY_NAME,
    RtOptionalFeatureType::RT_FEATURE_DRIVER_ESCHED_QUERY_INFO,
    RtOptionalFeatureType::RT_FEATURE_NOTIFY_WAIT,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_UMA_SUPER_ARGS_ALLOC,
    RtOptionalFeatureType::RT_FEATURE_TASK_CMO_DOT_NO_LOG,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_FLOAT_STATUS,
    RtOptionalFeatureType::RT_FEATURE_MEM_POOL_ALIGN,
    RtOptionalFeatureType::RT_FEATURE_MEM_H2D_MANAGER_POLICY_SYNC_FORCE,
    RtOptionalFeatureType::RT_FEATURE_KERNEL_ARGS_FROM_STREAM_POOL,
    RtOptionalFeatureType::RT_FEATURE_NOTIFY_RESET,
    RtOptionalFeatureType::RT_FEATURE_STREAM_EXTENSION,
    RtOptionalFeatureType::RT_FEATURE_MODEL_ACL_GRAPH_SOFTWARE_ENABLE,
    RtOptionalFeatureType::RT_FEATURE_DEVICE_CTRL_SQ,
    RtOptionalFeatureType::RT_FEATURE_MODEL_PERSISTENT_STREAM_UNLIMITED_DEPTH,
    RtOptionalFeatureType::RT_FEATURE_TASK_EXEC_TIMEOUT_SCALE_MODIFY,
    RtOptionalFeatureType::RT_FEATURE_MEM_WAIT_PROF,
    RtOptionalFeatureType::RT_FEATURE_DFX_PROCESS_SNAPSHOT,
    RtOptionalFeatureType::RT_FEATURE_STARS_MONITOR_AICPU_TIMEOUT};

REGISTER_CHIP_FEATURE_SET(CHIP_DAVID, CHIP_DAVID_FEATURE);

constexpr uint32_t TS_FEATURE_MC2_RTS_SUPPORT_HCCL_PROP = 23;
static constexpr uint32_t RT_STARS_MAX_KERNEL_CREDIT_UINT32 = 254U; // STARS MAX KERNEL_CREDIT = 255.
static constexpr uint32_t RT_STARS_DEFAULT_KERNEL_CREDIT_UINT32 =
    254U;                                                           // The STARS reference time is 1090921693.184 us.
static constexpr int32_t KERNEL_CUSTOM_STACK_SIZE_MAX = 131072U;    // 128KB
static constexpr size_t MEMCPY_DESC_SIZE_V2 = 64U;
static constexpr float64_t RT_STARS_TASK_KERNEL_CREDIT_SCALE_MIN = 0.001F; // 0.001(us) = 1ns

const uint32_t RT_ATOMIC_CAPS_TYPE1 = RT_ATOMIC_CAPABILITY_SIGNED | RT_ATOMIC_CAPABILITY_UNSIGNED |
                                      RT_ATOMIC_CAPABILITY_SCALAR32 | RT_ATOMIC_CAPABILITY_SCALAR64;
const uint32_t RT_ATOMIC_CAPS_TYPE2 =
    RT_ATOMIC_CAPABILITY_UNSIGNED | RT_ATOMIC_CAPABILITY_SCALAR32 | RT_ATOMIC_CAPABILITY_SCALAR64;
const uint32_t RT_ATOMIC_CAPS_TYPE3 = RT_ATOMIC_CAPABILITY_SCALAR16 | RT_ATOMIC_CAPABILITY_SCALAR32;
const uint32_t RT_ATOMIC_CAPS_TYPE4 = RT_ATOMIC_CAPABILITY_SIGNED | RT_ATOMIC_CAPABILITY_SCALAR8 |
                                      RT_ATOMIC_CAPABILITY_SCALAR16 | RT_ATOMIC_CAPABILITY_SCALAR32;

static constexpr std::array<uint32_t, RT_ATOMIC_OPERATION_MAX_VAL> GetDavidAtomicCaps()
{
    std::array<uint32_t, RT_ATOMIC_OPERATION_MAX_VAL> caps{};
    caps[RT_ATOMIC_OPERATION_INTEGER_ADD] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_INTEGER_MIN] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_INTEGER_MAX] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_AND] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_OR] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_XOR] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_EXCHANGE] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_CAS] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_SIMD_SCALAR_ADD] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_SIMD_SCALAR_MIN] = RT_ATOMIC_CAPS_TYPE1;
    caps[RT_ATOMIC_OPERATION_SIMD_SCALAR_MAX] = RT_ATOMIC_CAPS_TYPE1;

    caps[RT_ATOMIC_OPERATION_INTEGER_INCREMENT] = RT_ATOMIC_CAPS_TYPE2;
    caps[RT_ATOMIC_OPERATION_INTEGER_DECREMENT] = RT_ATOMIC_CAPS_TYPE2;
    caps[RT_ATOMIC_OPERATION_SIMD_SCALAR_CAS] = RT_ATOMIC_CAPS_TYPE2;
    caps[RT_ATOMIC_OPERATION_SIMD_SCALAR_EXCH] = RT_ATOMIC_CAPS_TYPE2;

    caps[RT_ATOMIC_OPERATION_FLOAT_ADD] = RT_ATOMIC_CAPS_TYPE3;
    caps[RT_ATOMIC_OPERATION_FLOAT_MIN] = RT_ATOMIC_CAPS_TYPE3;
    caps[RT_ATOMIC_OPERATION_FLOAT_MAX] = RT_ATOMIC_CAPS_TYPE3;

    caps[RT_ATOMIC_OPERATION_DMA_ADD] = RT_ATOMIC_CAPS_TYPE4;
    caps[RT_ATOMIC_OPERATION_DMA_MIN] = RT_ATOMIC_CAPS_TYPE4;
    caps[RT_ATOMIC_OPERATION_DMA_MAX] = RT_ATOMIC_CAPS_TYPE4;

    return caps;
}

static const DevProperties CHIP_DAVID_PROPERTIES = {
    .engineType = "STARS",
    .isStars = true,
    .isStarsV2 = true,
    .pthreadStackSize = 0U,
    .eventWaitTimeout = EventWaitTimeoutType::SET_OP_WAIT_TIMEOUT_CONFIG,
    .tsCount = 1U,
    .sqTailOffset = DAVID_SIMPLE_SQ_TAIL_OFFSET,
    .maxGroupId = MAX_GROUP_ID,
    .reduceOverflow = ReduceOverflowType::REDUCE_NO_OVERFLOW,
    .supportOverflowMode = OVERFLOW_MODE_INFNAN,
    .sdmaReduceKind = 0x7C00U,
    .starsResourceAddrCalculateMethod = StarsResourceAddrCalculateMethod::STARS_RESOURCE_ADDR_CALCULATE_STATIC,
    .eventBase = RT_STARS_BASE_ADDR_520000000 + STARS_EVENT_BASE_ADDR,
    .starsBaseMethod = StarsBaseMethod::STARS_BASE_CALCULATE_BY_DRIVER,
    .fsmSelBase = RT_STARS_BASE_ADDR_520000000 + DAVID_SIMPLE_RTSQ_FSM_SEL_REG,
    .notifyBase = RT_STARS_BASE_ADDR_520000000 + STARS_NOTIFY_BASE_ADDR,
    .starsNotifyTableSize = STARS_NOTIFY_NUM_OF_SINGLE_TABLE_128,
    .ipcNotifyNumMask = 0x7FUL,
    .mc2FeatureFlag = TS_FEATURE_MC2_RTS_SUPPORT_HCCL_PROP,
    .stackPhyBase = RT_SCALAR_BUFFER_SIZE_32K_75,
    .maxCustomerStackSize = KERNEL_CUSTOM_STACK_SIZE_MAX,
    .ioDieNum = 0U,
    .defaultTaskRatio = NORMAL_TASK_RATION,
    .aicNum = RT_DAVID_AICORE_NUM_PER_DIE * RT_DAVID_DIE_MAX_NUM,
    .aivNum = RT_DAVID_AIVECTOR_NUM_PER_DIE * RT_DAVID_DIE_MAX_NUM,
    .aicNumPerDie = RT_DAVID_AICORE_NUM_PER_DIE,
    .aivNumPerDie = RT_DAVID_AIVECTOR_NUM_PER_DIE,
    .ringbufSize = DEVICE_RINGBUFFER_SIZE_ON_95_96,
    .hugeManagedFlag = SVM_HOST_AGENT,
    .memInfoType = RT_MEM_INFO_TYPE_HBM_SIZE,
    .taskPrefetchCount = PREFETCH_CNT_8,
    .maxAllocHugeStreamNum = DEFAULT,
    .reduceAicNum = false,
    .timeoutUpdateMethod = TimeoutUpdateMethod::TIMEOUT_WITHOUT_UPDATE,
    .hugePolicyFlag = DEFAULT,
    .memInfoMapType = DEFAULT,
    .resAllocRange = TSDRV_RES_RANGE_ID,
    .supportSnapshot = SupportSnapshot::SUPPORT,
    .MaxKernelCredit = RT_STARS_MAX_KERNEL_CREDIT_UINT32,
    .eventTimestampFreq = RT_DEFAULT_TIMESTAMP_FREQ,
    .taskEngineType = EngineCreateType::STARS_ENGINE,
    .CmoSqeVersion = SqeVersion::CMO_SQE_VERSION_V3,
    .DefaultKernelCredit = RT_STARS_DEFAULT_KERNEL_CREDIT_UINT32,
    .starsDefaultKernelCredit = RT_STARS_DEFAULT_KERNEL_CREDIT,
    .KernelCreditScale = RT_STARS_TASK_KERNEL_CREDIT_SCALE_MIN,
    .isSupportInitFuncCallPara = true,
    .rtsqVirtualAddr =
        {DAVID_SIMPLE_RTSQ_FSM_SEL_REG, STARS_SIMPLE_SQ_ENABLE_OFFSET, DAVID_SIMPLE_SQ_TAIL_OFFSET,
         STARS_SIMPLE_SQ_HEAD_OFFSET},
    .rtsqFsmStateAddrCalMethod = RtsqFsmStateAddrCalMethod::FSM_ADDR_CALCULATE_STATIC,
    .starsBaseAddrMethod = StarsBaseAddrMethod::STARS_BASE_CALCULATE_BY_DRIVER,
    .rtSqEnableAddrCalMethod = RtSqEnableAddrCalMethod::RT_SQ_ENABLE_ADDR_CAL_STATIC,
    .isSupportDvppAccelerator = true,
    .isSupportDevVA2PA = false,
    .cmoAddrInfoType = CmoAddrInfoType::CMO_ADDR_INFO_TYPE_DAVID,
    .memcpyAsyncTaskD2DQos = UINT32_MAX,
    .isMemcpyAsyncTaskSqeType = true,
    .sqeDepth = UINT32_MAX,
    .cqeSize = RT_DAVID_VIRTUAL_CQE_SIZE,
    .cqeDepth = static_cast<uint32_t>(CqeDepth::CQE_DEPTH_DVPP_GRP),
    .cqeWaitTimeout = RT_REPORT_STARS_TIMEOUT_TIME,
    .getRtsqPosition = UINT16_MAX,
    .creditStartValue = 0U,
    .argsItemSize = MULTI_GRAPH_ARG_ENTRY_SIZE_OTH,
    .argInitCountSize = DEFAULT_INIT_CNT_OTH,
    .argsAllocatorSize = TINY_INIT_CNT_DEFAULT,
    .superArgAllocatorSize = SUPER_ARG_AllOC_SIZE_128,
    .maxArgAllocatorSize = ARG_MAX_ENTRY_INIT_NUM,
    .handleAllocatorSize = HANDLE_ALLOCATOR_SIZE_1024,
    .kernelInfoAllocatorSize = KERNEL_INFO_ALLOC_SIZE,
    .isNeedlogErrorLevel = true,
    .opExecuteTimeout = false,
    .dcacheLockMixType = DcacheLockMixType::DCACHE_LOCK_MIX_TYPE_FROM_STARS_V2,
    .taskPoolSizeFromRtsqDepth = true,
    .taskPoolSize = 0U,
    .getTsMemTypeMethod = GetTsMemTypeMethod::GET_TS_MEM_TYPE_STATIC,
    .enabledTSNum = ENABLED_TS_NUM_1,
    .deviceSatStatus = DeviceSatStatus::DEVICE_SAT_STATUS_OTHER,
    .ringBufferMemCopyCycleTimes = 1U,
    .tsOverflowHandling = TsOverflowHandling::TS_OVER_FLOW_HANDING_DEFAULT,
    .getCapabilityMethod = GetCapabilityMethod::GET_CAPABILITY_BY_BOTH_FEATURE_AND_DRIVER_CHECK,
    .memcpyDescriptorSize = MEMCPY_DESC_SIZE_V2,
    .cmoDDRStructInfoSize = sizeof(rtDavidCmoAddrInfo),
    .streamWaitEventTimeout = StreamWaitEventTimeout::CUSTOM,
    .timelineEventId = TIMELINE_EVENT_ID_DEFAULT,
    .deviceSatStatusImpl = DeviceSatStatusImpl::DEVICE_SAT_STATUS_STREAM_LEVEL,
    .allocManagedFlag = AllocManagedFlag::ALLOC_MANAGED_MEM_HOST_AGENT,
    .sdmaCopyMethod = SdmaCopyMethod::SDMA_COPY_BY_MEM_SYNC_ADAPTER,
    .eventPoolSize = 0U,
    .rtsqShamt = 0x7FFU,
    .supportCreateTaskRes = SupportCreateTaskRes::CREATE_TASK_RES_SUPPORT_WITH_OFFLINE,
    .physicalMemTypePolicy = PhysicalMemTypePolicy::DEFAULT,
    .aicNumForCoreStack = RT_AICORE_NUM_25,
    .engineWaitCompletionTImeout = 0UL,
    .reportWaitTimeout = RT_REPORT_TIMEOUT_TIME,
    .hostAtomicCapabilities = GetDavidAtomicCaps(),
    .p2pAtomicCapabilities = GetDavidAtomicCaps(),
    .maxPersistTaskNum = 60000U,
    .maxSupportTaskNum = 134215680U,
    .stubEventCount = 131072U,
    .maxReportTimeoutCnt = 36,
    .rtcqDepth = 2049U,
    .baseAicpuStreamId = 65536U, /* 64 * 1024 */
    .expandStreamRsvTaskNum = 8U,
    .expandStreamSqDepthAdapt = 7U,
    .expandStreamAdditionalSqeNum = 8U,
    .rsvAicpuStreamNum = 0U,
    .maxPhysicalStreamNum = 2016U,
    .maxAllocStreamNum = 65535U,
    .rtsqDepth = 2049U,
    .maxTaskNumPerStream = 2014U,
    .maxTaskNumPerHugeStream = 0U,
    .rtsqReservedTaskNum = 35U,

    .simtWarpSize = RT_MAX_THREAD_NUM_PER_WARP,
    .simtMaxThreadPerVectorCore = RT_MAX_THREAD_PER_VECTOR_CORE,
    .simtUbufPerVectorCore = RT_SIMT_AVAILBALE_UB_SIZE,
    .simtMaxGridDimX = RT_SIMT_MAX_GRID_DIM_DEFAULT,
    .simtMaxGridDimY = RT_SIMT_MAX_GRID_DIM_DEFAULT,
    .simtMaxGridDimZ = RT_SIMT_MAX_GRID_DIM_DEFAULT,
    .simtMaxBlockPerGrid = RT_SIMT_MAX_BLOCK_PER_GRID_DEFAULT,
    .simtMaxThreadsPerBlock = RT_SIMT_MAX_THREADS_PER_BLOCK_DEFAULT,
    .simtMaxBlockDimX = RT_SIMT_MAX_BLOCK_DIM_DEFAULT,
    .simtMaxBlockDimY = RT_SIMT_MAX_BLOCK_DIM_DEFAULT,
    .simtMaxBlockDimZ = RT_SIMT_MAX_BLOCK_DIM_DEFAULT,
    .cvArchType = DeviceCvArchType::CV_ARCH_SEPARATION,
    .npuArch = 0,
    .sqDisableStatPollingCycleNum = SQ_DISABLE_POLLING_CYCLE_COMMON_CNT,
    .swapBufferBaseAddr = 0UL,
    .swapBufferUpdateRegOffset = DAVID_SWAPBUFF_INFO_UPDATE_REG_OFFSET,
    .sqSwapShift = 6U,
    .swapBufferProfCfgOffset = 32U,
    .taskFailPrintFlushTimeoutMs = TASK_FAIL_PRINT_FLUSH_TIMEOUT_DEFAULT,
    .memsetTaskSupport = MemsetTaskSupportType::MEMSET_TASK_SUPPORT,
};

REGISTER_DEV_PROPERTIES(CHIP_DAVID, CHIP_DAVID_PROPERTIES);
} // namespace runtime
} // namespace cce