From ae837934439fb7ebd5a156fb5c9d74a34bb70eba Mon Sep 17 00:00:00 2001 From: Dmitry Ermakov Date: Sun, 26 Dec 2021 12:30:41 +0300 Subject: [PATCH] Add SmartSens SC1235 --- .../sensor/config/sc1235_i2c_dc_960p.ini | 79 ++++++++++++++++++ .../files/sensor/libsns_sc1235.so | Bin 0 -> 42992 bytes 2 files changed, 79 insertions(+) create mode 100644 general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/sc1235_i2c_dc_960p.ini create mode 100755 general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_sc1235.so diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/sc1235_i2c_dc_960p.ini b/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/sc1235_i2c_dc_960p.ini new file mode 100644 index 00000000..8114f687 --- /dev/null +++ b/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/config/sc1235_i2c_dc_960p.ini @@ -0,0 +1,79 @@ +[sensor] +Mode=WDR_MODE_NONE +DllFile=libsns_sc1235.so + +[mode] +input_mode=INPUT_MODE_CMOS_18V + +[isp_image] +Isp_FrameRate=30 +Isp_Bayer=BAYER_BGGR + +[vi_dev] +Input_mod=VI_MODE_DIGITAL_CAMERA +Work_mod =0 ;VI_WORK_MODE_1Multiplex = 0 + ;VI_WORK_MODE_2Multiplex, + ;VI_WORK_MODE_4Multiplex +Combine_mode =0 ;Y/C composite or separation mode + ;VI_COMBINE_COMPOSITE = 0 /*Composite mode */ + ;VI_COMBINE_SEPARATE, /*Separate mode */ +Comp_mode =0 ;Component mode (single-component or dual-component) + ;VI_COMP_MODE_SINGLE = 0, /*single component mode */ + ;VI_COMP_MODE_DOUBLE = 1, /*double component mode */ +Clock_edge =1 ;Clock edge mode (sampling on the rising or falling edge) + ;VI_CLK_EDGE_SINGLE_UP=0, /*rising edge */ + ;VI_CLK_EDGE_SINGLE_DOWN, /*falling edge */ +Mask_num =2 ;Component mask +Mask_0 =0xFFF0000 +Mask_1 =0x0 +Scan_mode = 1;VI_SCAN_INTERLACED = 0 + ;VI_SCAN_PROGRESSIVE, +Data_seq =2 ;data sequence (ONLY for YUV format) + ;----2th component U/V sequence in bt1120 + ; VI_INPUT_DATA_VUVU = 0, + ; VI_INPUT_DATA_UVUV, + ;----input sequence for yuv + ; VI_INPUT_DATA_UYVY = 0, + ; VI_INPUT_DATA_VYUY, + ; VI_INPUT_DATA_YUYV, + ; VI_INPUT_DATA_YVYU + +Vsync =1 ; vertical synchronization signal + ;VI_VSYNC_FIELD = 0, + ;VI_VSYNC_PULSE, +VsyncNeg=0 ;Polarity of the vertical synchronization signal + ;VI_VSYNC_NEG_HIGH = 0, + ;VI_VSYNC_NEG_LOW /*if VIU_VSYNC_E +Hsync =0 ;Attribute of the horizontal synchronization signal + ;VI_HSYNC_VALID_SINGNAL = 0, + ;VI_HSYNC_PULSE, +HsyncNeg =0 ;Polarity of the horizontal synchronization signal + ;VI_HSYNC_NEG_HIGH = 0, + ;VI_HSYNC_NEG_LOW +VsyncValid =0 ;Attribute of the valid vertical synchronization signal + ;VI_VSYNC_NORM_PULSE = 0, + ;VI_VSYNC_VALID_SINGAL, +VsyncValidNeg =0;Polarity of the valid vertical synchronization signal + ;VI_VSYNC_VALID_NEG_HIGH = 0, + ;VI_VSYNC_VALID_NEG_LOW +Timingblank_HsyncHfb =0 ;Horizontal front blanking width +Timingblank_HsyncAct =1280 ;Horizontal effetive width +Timingblank_HsyncHbb =0 ;Horizontal back blanking width +Timingblank_VsyncVfb =0 ;Vertical front blanking height +Timingblank_VsyncVact =960 ;Vertical effetive width +Timingblank_VsyncVbb=0 ;Vertical back blanking height +Timingblank_VsyncVbfb =0 ;Even-field vertical front blanking height(interlace, invalid progressive) +Timingblank_VsyncVbact=0 ;Even-field vertical effetive width(interlace, invalid progressive) +Timingblank_VsyncVbbb =0 ;Even-field vertical back blanking height(interlace, invalid progressive) + +DataPath =1 ;ISP enable or bypass + ;VI_PATH_BYPASS = 0,/* ISP bypass */ + ;VI_PATH_ISP = 1,/* ISP enable */ + ;VI_PATH_RAW = 2,/* Capture raw data, for debug */ + +InputDataType=1 ;VI_DATA_TYPE_YUV = 0,VI_DATA_TYPE_RGB = 1, +DataRev =FALSE ;Data reverse. FALSE = 0; TRUE = 1 +DevRect_x=0 +DevRect_y=0 +DevRect_w=1280 +DevRect_h=960 diff --git a/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_sc1235.so b/general/package/hisilicon-osdrv-hi3516cv200/files/sensor/libsns_sc1235.so new file mode 100755 index 0000000000000000000000000000000000000000..a819c347e2e418d055465c1d5fa421be444b9e5a GIT binary patch literal 42992 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

x8zX{-47H9(7-}6lI>9>H zo|T)OGd63KJ*_|9&(kj{%`rsXH)*ltWk zj*Mw`Os|+wQ}T4_aRW8szM}JUGwpTsPqrNQ6I&{nktG@bRg^PXnaScVipf<$Sbc7iq*&&L8E>-9jbfV4HY+z(vXS(PeVQy8${0XPlWaGdn><>{Rn`<` zC!n(_MXYwI>1J3lDI$0Ju5T*!h$|hr@MG<(&FCr-~FDD~8KM#$Ju-TLI(;y=$3zM&o zDlOGX$;mnPDLO@lhz=_QSKpETuT#0|l_MICi^_XKjvLIey7`PomKEpsUaa89JZ-?ve4jQlJT+#GyWX@_ClTL+y~M1znz; z*L8VvPLX)KdgT!!;gj~teYixqOVWcb?;&L9d~#1GQKt#74yOT@+c^;-pC`5GdxM6o z>UQJ;#&JyHlh3)#|AucCc%)vDC-;A0x8VbciV(%d!YB89?ZGGgp*KbJlm3{GsLNCC zS7KE@WGg}VB)*8K^U1y4iCCQPx+7By!XsfRqR5qcPNhOQsfddH)Xzi2hOl literal 0 HcmV?d00001