/*************************************************************************************************
// INTEL CONFIDENTIAL Copyright 2011-2026 Intel Corporation All Rights Reserved.
//
// The source code contained or described herein and all documents related to the source code
// ("Material") are owned by Intel Corporation or its suppliers or licensors. Title to the Material
// remains with Intel Corporation or its suppliers and licensors. The Material contains trade secrets
// and proprietary and confidential information of Intel or its suppliers and licensors. The Material is
// protected by worldwide copyright and trade secret laws and treaty provisions. No part of the
// Material may be used, copied, reproduced, modified, published, uploaded, posted, transmitted,
// distributed, or disclosed in any way without Intel's prior express written permission.
//
// No license under any patent, copyright, trade secret or other intellectual property right is
// granted to or conferred upon you by disclosure or delivery of the Materials, either expressly, by
// implication, inducement, estoppel or otherwise. Any license under such intellectual property
// rights must be express and approved by Intel in writing.
//*************************************************************************************************/
#ifndef _VCM_TYPE_H__
#define _VCM_TYPE_H__

/*! "brief
 *    enum of vcm type
 */
#define NONVCM_NAME         "NoneVCM"
#define DW9714_NAME         "DW9714"
#define AD5823_NAME         "AD5823"
#define DW9718_NAME         "DW9718"
#define AD5816_NAME         "AD5816"
#define DW9719_NAME         "DW9719"
#define DW9806B_NAME        "DW9806B"
#define WV517S_NAME         "WV517S"
#define LC898122XA_NAME     "LC898122XA"
#define LC898212AXB_NAME    "LC898212AXB"
#define LC898217_NAME       "LC898217"
#define AK7371_NAME         "AK7371"
#define BU64297GWZ_NAME     "BU64297GWZ"
#define DW9800_NAME         "DW9800"
#define DW9808_NAME         "DW9808"
#define DW9825A_NAME        "DW9825A"
#define TLEN_NAME           "TLEN"

//#define VCM_ex1           "VCM_ex1_NAME"

#define VCM_DELAY_TAG        0xFF

/*! "brief VCM_TYPE
 *    enum of vcm type: non-contiuesly numbering for VCM type
 */
typedef enum _VCM_YPE__
{
    VCM_NONE,
    VCM_AD5823,                 // 1
    VCM_DW9714,                 // 2
    VCM_AD5816,                 // 3
    VCM_DW9719,                 // 4
    VCM_DW9718,                 // 5
    VCM_DW9806B,                // 6
    VCM_WV517S,                 // 7
    VCM_LC898122XA,             // 8
    VCM_LC898212AXB,            // 9
    VCM_AK7371      = 15,       // 15
    VCM_BU64297GWZ,             // 16
    VCM_DW9800,                 // 17
    VCM_DW9808,                 // 18
    VCM_LC898217,               // 19
    VCM_TLEN        = 30,       // 30: Custom type start from 30
} VCM_TYPE;

// To increase VCM_NUM each time add a new VCM_TYPE
#define VCM_NUM 16

/*! "brief VCM_COMMON_FUNC
 *    type of function for vcm
 */
typedef NTSTATUS (* VCM_COMMON_FUNC)(
    PVOID Context
    );

#endif
