firmware/br-ext-chip-xiongmai/package/xiongmai-osdrv-xm530/files/sensor/snsX20/sp2305_cmos.c

673 lines
35 KiB
C

#include "xm_type.h"
#include "xm_comm_isp.h"
#include "xm_comm_sns.h"
#include "xm_sns_ctrl.h"
#include "mpi_isp.h"
#include "mpi_ae.h"
#include "mpi_awb.h"
#include "xm_awb_comm.h"
#include "mpi_phyvi.h"
#include "xm_print.h"
#include "XAx_cmos.h"
#define STATIC static
extern GAIN_MODE_DT gstGainModeDt;
volatile static XM_U8 u8BusyFlg = 0; // 0:free 1:busy 2:stop
static XM_S32 busyFlg_set()
{
XM_U8 u8i;
for(u8i =0; u8i <50; u8i ++)
{
if(u8BusyFlg)
SysDelay_ms(40);
else
{
u8BusyFlg= 2;
return XM_SUCCESS;
}
}
return XM_FAILURE;
}
STATIC XM_S32 cmos_set_mirror_flip(XM_U8 u8Mirror,XM_U8 u8Flip)
{
XM_U16 u16OfstH = 0;
XM_U16 u16OfstV = 0;
if(busyFlg_set() != XM_SUCCESS)
{
return XM_FAILURE;
}
sensor_write_register(0xfd,0x01);//RegPage 1
if((u8Mirror)&&(!u8Flip))//Mirror_On_Flip_Off
{
sensor_write_register(0x3f, 0x01);
sensor_write_register(0xf8, 0x00);
sensor_write_register(0x01, 0x01);
sensor_write_register(0xfd, 0x02);
sensor_write_register(0x62, 0x01);
sensor_write_register(0x63, 0x00);
u16OfstH = 1;
}
else if((u8Mirror)&&(u8Flip))//Mirror_On_Flip_On
{
sensor_write_register(0x3f, 0x03);
sensor_write_register(0xf8, 0x02);
sensor_write_register(0x01, 0x01);
sensor_write_register(0xfd, 0x02);
sensor_write_register(0x62, 0x48);
sensor_write_register(0x63, 0x04);
u16OfstH = 1;
u16OfstV = 1;
}
else if((!u8Mirror)&&(u8Flip))//Mirror_Off_Flip_On
{
sensor_write_register(0x3f, 0x02);
sensor_write_register(0xf8, 0x02);
sensor_write_register(0x01, 0x01);
sensor_write_register(0xfd, 0x02);
sensor_write_register(0x62, 0x48);
sensor_write_register(0x63, 0x04);
u16OfstV = 1;
}
else//Mirror_Off_Flip_Off
{
sensor_write_register(0x3f, 0x00);
sensor_write_register(0xf8, 0x02);
sensor_write_register(0x01, 0x01);
sensor_write_register(0xfd, 0x02);
sensor_write_register(0x62, 0x01);
sensor_write_register(0x63, 0x00);
}
sensor_write_register(0xfd, 0x01); // RegPage 1
VI_WinSet(1, u8Mirror, u8Flip, u16OfstH, u16OfstV);
u8BusyFlg = 0;
return XM_SUCCESS;
}
static XM_S32 cmos_get_ae_default(AE_SENSOR_DEFAULT_S *pstAeSnsDft)
{
if (XM_NULL == pstAeSnsDft)
{
ERR("null pointer when get ae default value!\n");
return -1;
}
pstAeSnsDft->u8UpdateMode = 1;
pstAeSnsDft->u32FullLinesStd = HD1080P_LINES;
pstAeSnsDft->u8AeCompensation = 0x39;
pstAeSnsDft->u32LinesPer500ms = pstAeSnsDft->u32FullLinesStd*25/2;
pstAeSnsDft->u32FlickerFreq = 0;
pstAeSnsDft->u32MaxIntTime = pstAeSnsDft->u32FullLinesStd-2;
pstAeSnsDft->u32MinIntTime = 1;
pstAeSnsDft->u32MaxAgain = 496;//15.5X
pstAeSnsDft->u32MinAgain = 16;
pstAeSnsDft->u32MaxDgain = 64;
pstAeSnsDft->u32MinDgain = 64;
pstAeSnsDft->u32ISPDgainShift = 8;
pstAeSnsDft->u32MaxISPDgain= 8 << pstAeSnsDft->u32ISPDgainShift;
pstAeSnsDft->u32MinISPDgain= 1 << pstAeSnsDft->u32ISPDgainShift;
pstAeSnsDft->bDelayCfg = XM_FALSE;
return 0;
}
static XM_VOID cmos_again_calc_table(XM_U32 u32InTimes,AE_SENSOR_GAININFO_S *pstAeSnsGainInfo)
{
if(XM_NULL == pstAeSnsGainInfo)
{
return;
}
pstAeSnsGainInfo->u32GainDb = u32InTimes;
pstAeSnsGainInfo->u32SnsTimes = u32InTimes;
return;
}
static XM_VOID cmos_dgain_calc_table(XM_U32 u32InTimes,AE_SENSOR_GAININFO_S *pstAeSnsGainInfo)
{
if(XM_NULL == pstAeSnsGainInfo)
{
ERR("cmos_dgain_calc_table failed!\n");
return;
}
pstAeSnsGainInfo->u32GainDb = u32InTimes;
pstAeSnsGainInfo->u32SnsTimes = u32InTimes;
return;
}
STATIC XM_VOID cmos_inttime_update(XM_U32 u32IntTime)
{
static XM_U32 su32IntTime = 0xFFFFFFFF;
if(su32IntTime == u32IntTime)
return ;
gu32ShutNow = u32IntTime;
su32IntTime = u32IntTime;
if(u8BusyFlg)
return;
u8BusyFlg = 1;
sensor_write_register(0xfd,0x01);//RegPage 1
sensor_write_register(0x03,(u32IntTime>>8)&0xff);
sensor_write_register(0x04,u32IntTime&0xff);
sensor_write_register(0x01,0x01);
if(u8BusyFlg != 2)
u8BusyFlg = 0;
return;
}
STATIC XM_VOID cmos_gains_update(XM_U32 u32Again, XM_U32 u32Dgain)
{
static XM_U32 su32Again = 0;
static XM_U32 su32Dgain = 0;
if(u8BusyFlg)
return;
u8BusyFlg = 1;
if(su32Again != u32Again)
{
su32Again = u32Again;
sensor_write_register(0xfd, 0x01); // RegPage 1
sensor_write_register(0x24, u32Again&0xFF);
sensor_write_register(0x38,(u32Again>>8)&0x01);
sensor_write_register(0x01, 1);
}
if(su32Dgain != u32Dgain)
{
su32Dgain = u32Dgain;
//sensor_write_register(0xfd, 0x01);
//sensor_write_register(0x39, u32Dgain&0xFF);
}
if(u8BusyFlg != 2)
u8BusyFlg = 0;
return;
}
/* the function of sensor set fps */
STATIC XM_VOID cmos_fps_set(XM_U8 u8Fps, AE_SENSOR_DEFAULT_S *pstAeSnsDft)
{
XM_U32 u32TotalSizeV;
u32TotalSizeV = HD1080P_LINES;
switch(u8Fps)
{
case 30:
sensor_write_register(0xfd,0x01);//RegPage
sensor_write_register(0x09,0x00);
sensor_write_register(0x0a,0x4f);
DEBUG("cmos_fps_set SP2305 2M 30fps\n");
break;
case 25:
sensor_write_register(0xfd,0x01);//RegPage
sensor_write_register(0x09,0x01);
sensor_write_register(0x0a,0x2b);
DEBUG("cmos_fps_set SP2305 2M 25fps\n");
break;
default:
DEBUG("cmos_fps_set SP2305 2M 25fps\n");
break;
}
if(pstAeSnsDft != NULL)
{
pstAeSnsDft->u32FullLinesStd = u32TotalSizeV;
pstAeSnsDft->u32MaxIntTime = pstAeSnsDft->u32FullLinesStd - gu8MaxShutterOfst;
pstAeSnsDft->u32LinesPer500ms = pstAeSnsDft->u32FullLinesStd * u8Fps / 2;
gu16FullLines = u32TotalSizeV;
}
return;
}
STATIC XM_VOID cmos_slow_framerate_set(XM_U16 u16FullLines, AE_SENSOR_DEFAULT_S *pstAeSnsDft)
{
static XM_U16 preU16FullLine = 0xffff;
XM_U16 u16Vb;
if(preU16FullLine == u16FullLines)
return;
preU16FullLine = u16FullLines;
u16FullLines = (u16FullLines>=4096)?4000:u16FullLines;
pstAeSnsDft->u32MaxIntTime = u16FullLines - 2;
SysDelay_ms(100);
if(gu32ShutNow>pstAeSnsDft->u32MaxIntTime)
{
cmos_inttime_update(pstAeSnsDft->u32MaxIntTime);
}
if(u8BusyFlg)
return;
u8BusyFlg = 1;
u16Vb = (u16FullLines<1125)?0x14:u16FullLines-1105;
sensor_write_register(0xfd,0x01);//RegPage
sensor_write_register(0x05,(u16Vb>>8)&0xFF);
sensor_write_register(0x06,u16Vb&0xFF);
sensor_write_register(0x01, 0x01);
u8BusyFlg = 0;
XM_MPI_MIPI_RefreshFV(0, (XM_U32)u16FullLines);
}
XM_S32 cmos_init_sensor_exp_function_SP2305(ISP_SENSOR_EXP_FUNC_S *pstSensorExpFunc)
{
pstSensorExpFunc->pfn_cmos_set_mirror_flip = cmos_set_mirror_flip;
return 0;
}
XM_S32 cmos_init_ae_exp_function_SP2305(AE_SENSOR_EXP_FUNC_S *pstExpFuncs)
{
pstExpFuncs->pfn_cmos_get_ae_default = cmos_get_ae_default;
pstExpFuncs->pfn_cmos_fps_set = cmos_fps_set;
pstExpFuncs->pfn_cmos_slow_framerate_set= cmos_slow_framerate_set;
pstExpFuncs->pfn_cmos_inttime_update = cmos_inttime_update;
pstExpFuncs->pfn_cmos_gains_update = cmos_gains_update;
pstExpFuncs->pfn_cmos_again_calc_table = cmos_again_calc_table;
pstExpFuncs->pfn_cmos_dgain_calc_table = cmos_dgain_calc_table;
pstExpFuncs->pfn_cmos_shut_calc_table = NULL;
return 0;
}
#if(defined SOC_SYSTEM) || (defined SOC_ALIOS)
const ISP_CMOS_AGC_TABLE_S g_stIspAgcTable_SP2305 =
{
/* bvalid */
1,
/* 100, 200, 400, 800, 1600, 3200, 6400, 12800; 100, 200, 400, 800, 1600, 3200, 6400, 12800 */
//[0~7]:Normal
/* sharpen_D H */
{0x3C,0x3C,0x38,0x36,0x30,0x28,0x20,0x18,0x10,0x04,0x04,0x04,0x04,0x04,0x04,0x04},
/* (2) sharpen_Ud M */
{0x30,0x30,0x30,0x30,0x2A,0x24,0x1A,0x12,0x08,0x04,0x04,0x04,0x04,0x04,0x04,0x04},
/* (3) sharpen_Kd */
{0x3C,0x3C,0x3A,0x38,0x34,0x30,0x28,0x18,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x08},
/* (4) snr_thresh 2DNr */
{0x00,0x01,0x02,0x03,0x04,0x06,0x0E,0x12,0x1C,0x40,0x40,0x40,0x40,0x40,0x40,0x40},
/* (5) snr_thresh 3DNr Tf */
{0x02,0x04,0x06,0x08,0x0C,0x10,0x14,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b},
/* (6) snr_thresh 3DNr Sf */
{0x00,0x00,0x01,0x02,0x03,0x04,0x08,0x0A,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},
/* DyDpc_thresh */
{0x97,0xA8,0xD0,0xD4,0xD8,0xDC,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0},
/* saturation_strength */
{0xC8,0xC8,0xC8,0xBC,0xB4,0xa2,0x96,0x78,0x50,0x30,0x30,0x30,0x30,0x30,0x30,0x30},
/* Blc */
{0x107,0x107,0x107,0x107,0x107,0x107,0x107,0x107,0x107,0x107,0x107,0x107,0x107,0x107,0x107,0x107},
/*Y_Tran gamma*/
{0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x30,0x30,0x30,0x28,0x28,0x28,0x28,0x28}
};
const ISP_COLORMATRIX_AUTO_S g_stAwbCcm_SP2305 =
{
5000,//0.1
{
0x0000, 287, -80, 49,
0x0000, -21, 278, -1,
0x0000, 42, -99, 313,
},
4000,//0.1
{
0x0000, 282, -98, 72,
0x0000, -37, 264, 29,
0x0000, 33, -146, 369,
},
2800,//0.1
{
0x0000, 224, -21, 53,
0x0000, -97, 323, 30,
0x0000, -64, -263, 583
}
};
const ISP_AWB_CALIBRATION_V2_S gstAwbCal_SP2305 ={
{0, 0, 4096, 3063, 4096, 2254, 1026, 4096},
{4096, 3984, 0, 0, 3644, 2638, 4096, 931},
{-499, -4096, -1145, -4096, -2945, -4096, -1526, -1850},
213,
0, 1444, 0, 2572,
{0, 749, 932, 1201, 1275, 1389, 1584, 1602, 2572, 0, 0, 0, 0, 0, 0, 0},
{2000, 2150, 2800, 4000, 4150, 5000, 6500, 7500, 12000, 0, 0, 0, 0, 0, 0, 0},
{1680, 1024, 1841, 0}
};
// ExtClk:27M
// 1080P30fps,12Bit,SPI,LVDS 2CH,ADC12Bit
// Nomal Mode register setting
static const XM_U8 gau8SnsInit_SP2305[][2] = {
#if 1
{0xfd, 0x00},
{0x20, 0x00},
{0xF5, 0xA5}, // SleepMask1
{0x5A, 0x5F}, // SleepMask2
{0x00, 0x20}, // 100ms
//;dela,y 3},ms
{0xfd, 0x00},
{0x2f, 0x21},//;10
{0x34, 0x00},
{0x30, 0x15},
{0x33, 0x01},
{0x35, 0x20},
//;78 1b 00
//;78 1d a5
{0xfd, 0x01},
{0x0d, 0x00},
{0x30, 0x00},
{0x03, 0x01},
{0x04, 0x8f},
{0x01, 0x01},
{0x09, 0x00},
{0x0a, 0x4f},//;20
{0x06, 0x0a},
{0x24, 0x10},
{0x01, 0x01},
{0xfb, 0x73},
{0x01, 0x01},
{0xfd, 0x01},
{0x1a, 0x6b},
{0x1c, 0xea},
{0x16, 0x0c},
{0x21, 0x00},
{0x11, 0xe8}, //;63
{0x19, 0xc3},
{0x26, 0xda},
{0x29, 0x01},
{0x33, 0x6f},
{0x2a, 0xd2},
{0x2c, 0x40},
{0xd0, 0x02},
{0xd1, 0x01},
{0xd2, 0x20},
{0xd3, 0x03}, //;04
{0xd4, 0xa4}, //;2a
{0x50, 0x00},
{0x51, 0x2c},
{0x52, 0x29},
{0x53, 0x00},
{0x55, 0x44},
{0x58, 0x29},
{0x5a, 0x00},
{0x5b, 0x00},
{0x5d, 0x00},
{0x64, 0x2f},
{0x66, 0x62},
{0x68, 0x5b},
{0x75, 0x46},
{0x76, 0xf0},
{0x77, 0x4f},
{0x78, 0xef},
{0x72, 0xcf},
{0x73, 0x36},
{0x7d, 0x0d},
{0x7e, 0x0d},
{0x8a, 0x77},
{0x8b, 0x77},
{0xfd, 0x01},
{0xb1, 0x83}, //;82;DPHY enable 8b
{0xb3, 0x09}, //;0d ;09;0b;09;1d
{0xb4, 0x15}, //;11;MIPI PLL enable;14;35;36
{0x9d, 0x40},//;mipi hs dc level 40/03/55
{0xa1, 0x05},//;speed/03
{0x94, 0x44},//;dphy time
{0x95, 0x33},//;dphy time
{0x96, 0x1f},//;dphy time
{0x98, 0x45},//;dphy time
{0x9c, 0x10},//;dphy time
{0xb5, 0x70},//;30
{0xa0, 0x00},//;mipi enable
{0x25, 0xe0},
{0x20, 0x7b},
{0x8f, 0x88},
{0x91, 0x40},
{0xfd, 0x01},
//;78 fd 02
//;78 36 08 ;invert Vsync polarity
//;78 5e 03
{0xfd, 0x02},
{0xa1, 0x04},
{0xa3, 0x40},
{0xa5, 0x02},
{0xa7, 0xc4},
{0xfd, 0x01},
{0x86, 0x77},
{0x89, 0x77},
{0x87, 0x74},
{0x88, 0x74},
{0xfc, 0xe0},
{0xfe, 0xe0},
{0xf0, 0x40},
{0xf1, 0x40},
{0xf2, 0x40},
{0xf3, 0x40},
//;crop, to}, 1928x1088
{0xfd, 0x02},
//;78 36 08 ;invert Vsync polarity for Gaia
{0xa0, 0x00}, //;Image vertical start MSB3bits
{0xa1, 0x04}, //;Image vertical start LSB8bits
{0xa2, 0x04}, //;image vertical size MSB8bits
{0xa3, 0x40}, //;image vertical size LSB8bits
{0xa4, 0x00},
{0xa5, 0x02}, //;H start 8Lsb
{0xa6, 0x03},
{0xa7, 0xc4}, //;Half H size Lsb8bits
{0xfd, 0x01},
{0x8e, 0x07},
{0x8f, 0x88},
{0x90, 0x04},
{0x91, 0x40},
{0xfd, 0x03},
{0xc0, 0x01}, //;enable transfer OTP BP information
{0xfd, 0x04},
{0x21, 0x14},
{0x22, 0x14},
{0x23, 0x14}, //;enhance normal and dummy BPC
{0xfd, 0x01},
{0x06, 0x14}, //;e0 insert dummy line , the frame rate is 30.01.
{0x01, 0x01},
//;78 fd 00
//;78 1b 00 ;enable output
{0xfd, 0x01},
{0xa0, 0x01},
#else
{0xfd, 0x00},
{0x20, 0x00},
{0xF5, 0xA5}, // SleepMask1
{0x5A, 0x5F}, // SleepMask2
{0x00, 0x05}, // 100ms
//delay 3ms
{0xfd, 0x00},
{0x2f, 0x21},//10
{0x34, 0x00},
{0x30, 0x15},
{0x33, 0x01},
{0x35, 0x20},
//78 1b 00
{0x1d, 0xa5},
{0xfd, 0x01},
{0x0d, 0x00},
{0x30, 0x00},
{0x03, 0x01},
{0x04, 0x8f},
{0x01, 0x01},
{0x09, 0x01},//00
{0x0a, 0x2b},//20
{0x06, 0x0a},
{0x24, 0x10},
{0x01, 0x01},
{0xfb, 0x73},
{0x01, 0x01},
{0xfd, 0x01},
{0x1a, 0x6b},
{0x1c, 0xea},
{0x16, 0x0c},
{0x21, 0x00},
{0x11, 0xe8}, //63
{0x19, 0xc3},
{0x26, 0xda},
{0x29, 0x01},
{0x33, 0x6f},
{0x2a, 0xd2},
{0x2c, 0x40},
{0xd0, 0x02},
{0xd1, 0x01},
{0xd2, 0x20},
{0xd3, 0x03}, //04
{0xd4, 0xa4}, //2a
{0x50, 0x00},
{0x51, 0x2c},
{0x52, 0x29},
{0x53, 0x00},
{0x55, 0x44},
{0x58, 0x29},
{0x5a, 0x00},
{0x5b, 0x00},
{0x5d, 0x00},
{0x64, 0x2f},
{0x66, 0x62},
{0x68, 0x5b},
{0x75, 0x46},
{0x76, 0xf0},
{0x77, 0x4f},
{0x78, 0xef},
{0x72, 0xcf},
{0x73, 0x36},
{0x7d, 0x0d},
{0x7e, 0x0d},
{0x8a, 0x77},
{0x8b, 0x77},
{0xfd, 0x01},
{0xb1, 0x83}, //82//DPHY enable 8b
{0xb3, 0x09},//0b//09//1d
{0xb4, 0x15},//MIPI PLL enable//14//35//36
{0x9d, 0x40},//mipi hs dc level 40/03/55
{0xa1, 0x05},//speed/03
{0x94, 0x44},//dphy time
{0x95, 0x33},//dphy time
{0x96, 0x1f},//dphy time
{0x98, 0x45},//dphy time
{0x9c, 0x10},//dphy time
{0xb5, 0x70},//30
{0xa0, 0x00},//mipi enable
{0x25, 0xe0},
{0x20, 0x7b},
{0x8f, 0x88},
{0x91, 0x40},
{0xfd, 0x01},
{0xfd, 0x02},
{0x36, 0x08}, //invert Vsync polarity
{0x5e, 0x03},
{0xfd, 0x02},
{0xa1, 0x04},
{0xa3, 0x40},
{0xa5, 0x02},
{0xa7, 0xc4},
{0xfd, 0x01},
{0x86, 0x77},
{0x89, 0x77},
{0x87, 0x74},
{0x88, 0x74},
{0xfc, 0xe0},
{0xfe, 0xe0},
{0xf0, 0x40},
{0xf1, 0x40},
{0xf2, 0x40},
{0xf3, 0x40},
//crop to 1928x1088
{0xfd, 0x02},
{0x36, 0x08}, //invert Vsync polarity for Gaia
{0xa0, 0x00}, //Image vertical start MSB3bits
{0xa1, 0x04}, //Image vertical start LSB8bits
{0xa2, 0x04}, //image vertical size MSB8bits
{0xa3, 0x40}, //image vertical size LSB8bits
{0xa4, 0x00},
{0xa5, 0x02}, //H start 8Lsb
{0xa6, 0x03},
{0xa7, 0xc4}, //Half H size Lsb8bits
{0xfd, 0x01},
{0x8e, 0x07},
{0x8f, 0x88}, //MIPI column number
{0x90, 0x04}, //MIPI row number
{0x91, 0x40},
{0xfd, 0x03},
{0xc0, 0x01}, //enable transfer OTP BP information
{0xfd, 0x04},
{0x21, 0x14},
{0x22, 0x14},
{0x23, 0x14}, //enhance normal and dummy BPC
{0xfd, 0x01},
{0x06, 0x14}, //e0 insert dummy line , the frame rate is 30.01.
{0x01, 0x01}, //
//78 fd 00
//78 1b 00 //enable output
{0xfd, 0x01}, //
{0xa0, 0x01},
#if 1
//@@ 3 31 Mirror_On_Flip_Off
{0xfd, 0x01},
{0x3f, 0x01}, //03
{0xf8, 0x00}, //02
{0x01, 0x01},
{0xfd, 0x02},
{0x62, 0x01}, //full size mode flip off row start for OTP BPC
{0x63, 0x00},
{0xfd, 0x01},
//@@ 3 32 Mirror_On_Flip_On
{0xfd, 0x01},
{0x3f, 0x03}, //03
{0xf8, 0x02}, //02
{0x01, 0x01},
{0xfd, 0x02},
{0x62, 0x48},
{0x63, 0x04}, //full size flip, row start:1096(0x448)
{0xfd, 0x01},
//@@ 3 33 Mirror_Off_Flip_Off
{0xfd, 0x01},
{0x3f, 0x00}, //03
{0xf8, 0x00}, //02
{0x01, 0x01},
{0xfd, 0x02},
{0x62, 0x01}, //full size mode flip off row start for OTP BPC
{0x63, 0x00},
{0xfd, 0x01},
//@@ 3 34 Mirror_Off_Flip_On
{0xfd, 0x01},
{0x3f, 0x02}, //03
{0xf8, 0x02}, //02
{0x01, 0x01},
{0xfd, 0x02},
{0x62, 0x48},
{0x63, 0x04}, //full size flip, row start:1096(0x448)
{0xfd, 0x01},
#endif
#endif
};
XM_U32 sensor_getlist_SP2305(XM_U16 *pu16Num)
{
DEBUG("------------- SP2305 2M 25fps init ok! (@20190909)----------------\n");
*pu16Num = sizeof(gau8SnsInit_SP2305)/sizeof(gau8SnsInit_SP2305[0]);
return (XM_U32)gau8SnsInit_SP2305;
}
#endif