diff --git a/general/package/hisilicon-osdrv-hi3516av100/files/script/load_hisilicon b/general/package/hisilicon-osdrv-hi3516av100/files/script/load_hisilicon index 57c5177d..e11aee22 100755 --- a/general/package/hisilicon-osdrv-hi3516av100/files/script/load_hisilicon +++ b/general/package/hisilicon-osdrv-hi3516av100/files/script/load_hisilicon @@ -1,8 +1,7 @@ #!/bin/sh # -# This is part of OpenIPC.org project | 2020.08.01 +# This is part of OpenIPC.org project | 2022.01.01 # -# ar0237 imx290 imx307 imx323 imx385 jxf22 ov2718 ov2718_2a sc2235 # SoC detect chipid=$(ipctool --chip_id) @@ -73,67 +72,135 @@ remove_sns() { rmmod sensor_i2c &>/dev/null } +sys_config() { + # pinmux configuration + devmem 0x200f0000 32 0x1 # 0: GPIO0_5, 1: SENSOR_CLK + devmem 0x200f0004 32 0x1 # 1: FLASH_TRIG, 0: GPIO0_6, 2: SPI1_CSN1 + devmem 0x200f0008 32 0x1 # 1: SHUTTER_TRIG, 0: GPIO0_7, 2: SPI1_CSN2 + + # clock configuration + devmem 0x20030030 32 0x00004005 # AVC-300M VGS-300M VPSS-250M VEDU-300M mda1axi 250M mda0axi 300M DDR-250 + devmem 0x20030104 32 0x3 # VICAP-198M VPSS-198M + devmem 0x2003002c 32 0x90007 # VICAP-250M, ISP unreset & clk en, Sensor clk en-37.125M, clk reverse + #devmem 0x20030034 32 0xffc # VDP-1080p@60fps unreset & clk en + #devmem 0x20030034 32 0xef74 # VDP-PAL/NTSC + devmem 0x20030040 32 0x2002 # VEDU0 AVC unreset & clk en + devmem 0x20030048 32 0x2 # VPSS0 unreset & clk en + + devmem 0x20030058 32 0x2 # TDE unreset & clk en + devmem 0x2003005c 32 0x2 # VGS unreset & clk en + devmem 0x20030060 32 0x2 # JPGE unreset & clk en + + devmem 0x20030068 32 0x2 # MDU unreset & clk en + devmem 0x2003006c 32 0x2 # IVE-300MHz unreset & clk en + #devmem 0x20030070 32 0x2 # VOIE unreset & clk en + + devmem 0x2003007c 32 0x2 # cipher unreset & clk en + devmem 0x2003008c 32 0xe # aio MCLK PLL 1188M, unreset & clk en + #devmem 0x200300d8 32 0xa; # ddrt + + # system configuration + devmem 0x201200E0 32 0xd # internal codec:AIO MCLK out, CODEC AIO TX MCLK + # -------------vi vpss online open + if [ $b_arg_online -eq 1 ]; then + devmem 0x20120004 32 0x40000000 # online, SPI1 CS0 + + #pri config + devmem 0x20120058 32 0x26666400 # each module 4bit:vedu ddrt_md ive aio jpge tde vicap vdp + devmem 0x2012005c 32 0x66666103 # each module 4bit:sfc_nand sfc_nor nfc sdio1 sdio0 a7 vpss vgs + devmem 0x20120060 32 0x66266666 # each module 4bit:reserve reserve avc usb cipher dma2 dma1 gsf + + #timeout config + devmem 0x20120064 32 0x00000011 # each module 4bit:vedu ddrt_md ive aio jpge tde vicap vdp + devmem 0x20120068 32 0x00000020 # each module 4bit:sfc_nand sfc_nor nfc sdio1 sdio0 a7 vpss vgs + devmem 0x2012006c 32 0x00000000 # each module 4bit:reserve reserve avc usb cipher dma2 dma1 gsf + else + devmem 0x20120004 32 0x0 # offline, mipi SPI1 CS0; + # pri config + devmem 0x20120058 32 0x26666401 # each module 4bit:vedu ddrt_md ive aio jpge tde vicap vdp + devmem 0x2012005c 32 0x66666112 # each module 4bit:sfc_nand sfc_nor nfc sdio1 sdio0 a7 vpss vgs + devmem 0x20120060 32 0x66266666 # each module 4bit:reserve reserve avc usb cipher dma2 dma1 gsf + # timeout config + devmem 0x20120064 32 0x00000011 # each module 4bit:vedu ddrt_md ive aio jpge tde vicap vdp + devmem 0x20120068 32 0x00000000 # each module 4bit:sfc_nand sfc_nor nfc sdio1 sdio0 a7 vpss vgs + devmem 0x2012006c 32 0x00000000 # each module 4bit:reserve reserve avc usb cipher dma2 dma1 gsf + fi +} + insert_isp() { case $SENSOR in - ov9750) - insmod hi3516a_isp.ko update_pos=1 - ;; *) - insmod hi3516a_isp.ko update_pos=0 proc_param=1 + insmod hi3516a_isp.ko ;; esac } insert_sns() { case $SENSOR in + ar0130 | 9m034) + devmem 0x200f0050 32 0x2 # i2c0_scl + devmem 0x200f0054 32 0x2 # i2c0_sda + ;; + mt9p006) + devmem 0x200f0050 32 0x2 # i2c0_scl + devmem 0x200f0054 32 0x2 # i2c0_sda + + devmem 0x2003002c 32 0xE0007 # sensor unreset, clk 24MHz, VI 250MHz + ;; + imx136) + devmem 0x200f0050 32 0x1 # spi0_sclk + devmem 0x200f0054 32 0x1 # spi0_sdo + devmem 0x200f0058 32 0x1 # spi0_sdi + devmem 0x200f005c 32 0x1 # spi0_csn + ;; imx123) devmem 0x200f0050 32 0x1 # spi0_sclk devmem 0x200f0054 32 0x1 # spi0_sdo devmem 0x200f0058 32 0x1 # spi0_sdi devmem 0x200f005c 32 0x1 # spi0_csn + #devmem 0x2003002c 32 0xb0007 # sensor unreset, clk 27MHz, VI 250MHz devmem 0x2003002c 32 0x90007 # sensor unreset, clk 37.125MHz, VI 250MHz devmem 0x20030104 32 0x0 # VI 250MHz - insmod sensor_i2c.ko + insmod sensor_spi.ko ;; imx178) - devmem 0x200f0050 32 0x2; # i2c0_scl - devmem 0x200f0054 32 0x2; # i2c0_sda - devmem 0x2003002c 32 0xF0007 # sensor unreset, clk 25MHz, VI 250MHz - #himm 0x2003002c 0x90007 # sensor unreset, clk 37.125MHz, VI 250MHz + devmem 0x200f0050 32 0x2 # i2c0_scl + devmem 0x200f0054 32 0x2 # i2c0_sda + devmem 0x2003002c 32 0xF0007 # sensor unreset, clk 25MHz, VI 250MHz + #devmem 0x2003002c 32 0x90007 # sensor unreset, clk 37.125MHz, VI 250MHz ;; - imx185) - devmem 0x200f0050 0x1 # spi0_sclk - devmem 0x200f0054 0x1 # spi0_sdo - devmem 0x200f0058 0x1 # spi0_sdi - devmem 0x200f005c 0x1 # spi0_csn + devmem 0x200f0050 32 0x1 # spi0_sclk + devmem 0x200f0054 32 0x1 # spi0_sdo + devmem 0x200f0058 32 0x1 # spi0_sdi + devmem 0x200f005c 32 0x1 # spi0_csn - devmem 0x2003002c 0x90007 # sensor unreset, clk 37.125MHz, VI 250MHz + devmem 0x2003002c 32 0x90007 # sensor unreset, clk 37.125MHz, VI 250MHz - insmod extdrv/sensor_spi.ko + insmod sensor_spi.ko ;; imx117) - devmem 0x200f0050 0x1 # spi0_sclk - devmem 0x200f0054 0x1 # spi0_sdo - devmem 0x200f0058 0x1 # spi0_sdi - devmem 0x200f005c 0x1 # spi0_csn + devmem 0x200f0050 32 0x1 # spi0_sclk + devmem 0x200f0054 32 0x1 # spi0_sdo + devmem 0x200f0058 32 0x1 # spi0_sdi + devmem 0x200f005c 32 0x1 # spi0_csn - devmem 0x200f00dc 0x1 - devmem 0x200f00e0 0x1 - devmem 0x20030038 0x6 + devmem 0x200f00dc 32 0x1 + devmem 0x200f00e0 32 0x1 + devmem 0x20030038 32 0x6 - devmem 0x20131020 0x30de8 - devmem 0x20131024 0x30de5 - devmem 0x2013102c 0x5 + devmem 0x20131020 32 0x30de8 + devmem 0x20131024 32 0x30de5 + devmem 0x2013102c 32 0x5 - devmem 0x20131060 0xbf - devmem 0x20131064 0xbc - devmem 0x2013106c 0x5 + devmem 0x20131060 32 0xbf + devmem 0x20131064 32 0xbc + devmem 0x2013106c 32 0x5 - devmem 0x2003002c 0x90007 # sensor unreset, clk 37.125MHz, VI 250MHz + devmem 0x2003002c 32 0x90007 # sensor unreset, clk 37.125MHz, VI 250MHz - insmod extdrv/sensor_spi.ko sensor=imx117 + insmod sensor_spi.ko sensor=imx117 ;; mn34220) devmem 0x200f0050 32 0x2 # i2c0_scl @@ -145,12 +212,18 @@ insert_sns() { devmem 0x200f0050 32 0x2 # i2c0_scl devmem 0x200f0054 32 0x2 # i2c0_sda + devmem 0x2003002c 32 0xB0007 # sensor unreset, clk 27MHz, VI 250MHz + ;; + ov5658) + devmem 0x200f0050 32 0x2 # i2c0_scl + devmem 0x200f0054 32 0x2 # i2c0_sda devmem 0x2003002c 32 0xE0007 # sensor unreset, clk 24MHz, VI 250MHz + devmem 0x20030104 32 0x0 # VI 250MHz ;; ov4689) devmem 0x200f0050 32 0x2 # i2c0_scl devmem 0x200f0054 32 0x2 # i2c0_sda - devmem 0x2003002c 32 0xB0007 # sensor unreset, clk 27MHz, VI 250MHz + devmem 0x2003002c 32 0xE0007 # sensor unreset, clk 24MHz, VI 250MHz devmem 0x20030104 32 0x0 ;; ar0230 | ar0237 | sc4236) @@ -158,23 +231,25 @@ insert_sns() { devmem 0x200f0054 32 0x2 # i2c0_sda devmem 0x2003002c 32 0xB0007 # sensor unreset, clk 27MHz, VI 250MHz - devmem 0x20030104 32 0x0 ;; bt1120) ;; + \ + imx122) ;; + \ *) echo "xxxx Invalid sensor type $SNS_TYPE xxxx" report_error ;; esac + } insert_ko() { - # sys config + sys_config - # driver load insert_mmz - #insmod mmz.ko mmz=anonymous,0,$mmz_start,$mmz_size anony=1 || report_error + insmod hi_media.ko insmod hi3516a_base.ko @@ -188,6 +263,7 @@ insert_ko() { insmod hi3516a_vgs.ko insert_isp + insmod hi3516a_viu.ko detect_err_frame=10 insmod hi3516a_vpss.ko rfr_frame_comp=1 #insmod hi3516a_vou.ko @@ -196,30 +272,33 @@ insert_ko() { insmod hi3516a_rc.ko insmod hi3516a_venc.ko - insmod hi3516a_chnl.ko ChnlLowPower=1 + insmod hi3516a_chnl.ko #ChnlLowPower=1 insmod hi3516a_h264e.ko H264eMiniBufMode=1 insmod hi3516a_h265e.ko H265eMiniBufMode=1 insmod hi3516a_jpege.ko - insmod hi3516a_ive.ko save_power=0 + #insmod hi3516a_ive.ko save_power=0 #insmod hi3516a_ive.ko + insmod sensor_i2c.ko - #insmod pwm.ko + insmod pwm.ko #insmod piris.ko + insert_sns insert_audio insmod hi_mipi.ko + insmod wdt.ko echo "==== Your input Sensor type is $SENSOR ====" } remove_ko() { - rmmod sys_config.ko + rmmod wdt remove_audio remove_sns - #rmmod pwm - - rmmod hi3516a_ive + rmmod pwm + rmmod piris + #rmmod hi3516a_ive rmmod hi3516a_rc rmmod hi3516a_jpege @@ -228,8 +307,8 @@ remove_ko() { rmmod hi3516a_chnl rmmod hi3516a_venc - rmmod hifb - rmmod hi3516a_vou + #rmmod hifb + #rmmod hi3516a_vou rmmod hi3516a_vpss rmmod hi3516a_viu rmmod hi_mipi @@ -238,7 +317,6 @@ remove_ko() { rmmod hi3516a_region rmmod hi3516a_tde - #rmmod piris rmmod hi3516a_isp rmmod hi3516a_sys rmmod hi3516a_base diff --git a/general/package/hisilicon-osdrv-hi3516av100/files/sensor/config/ar0237_i2c_dc_1080p.ini b/general/package/hisilicon-osdrv-hi3516av100/files/sensor/config/ar0237_i2c_dc_1080p.ini index 8dbbe455..984bd2e0 100644 --- a/general/package/hisilicon-osdrv-hi3516av100/files/sensor/config/ar0237_i2c_dc_1080p.ini +++ b/general/package/hisilicon-osdrv-hi3516av100/files/sensor/config/ar0237_i2c_dc_1080p.ini @@ -1,75 +1,21 @@ [sensor] -Sensor_type =ar0237 ;sensor name -Mode =0 ;WDR_MODE_NONE = 0 - ;WDR_MODE_BUILT_IN = 1 - ;WDR_MODE_2To1_LINE = 2 - ;WDR_MODE_2To1_FRAME = 3 - ;WDR_MODE_2To1_FRAME_FULL_RATE =4 ...etc -DllFile =libsns_ar0237.so ;sensor lib path +Sensor_type=ar0237 +Mode=WDR_MODE_NONE +DllFile=libsns_ar0237_dc.so +[mode] +input_mode=INPUT_MODE_CMOS_33V +dev_attr=0 -[mode] -input_mode =4 ;INPUT_MODE_MIPI = 0 - ;INPUT_MODE_SUBLVDS = 1 - ;INPUT_MODE_LVDS = 2 ...etc +[lvds] +lane_id = 0|1|2|3|-1|-1|-1|-1| -dev_attr = 0 ;mipi_dev_attr_t = 0 - ;lvds_dev_attr_t = 1 - ;NULL =2 - -[mipi] -;----------only for mipi_dev--------- -data_type =-1 ;raw data type: 8/10/12/14 bit - ;RAW_DATA_8BIT = 0 - ;RAW_DATA_10BIT = 1 - ;RAW_DATA_12BIT = 2 - ;RAW_DATA_14BIT = 3 -lane_id = -1|-1|-1|-1|-1|-1|-1|-1| ;lane_id: -1 - disable - -[lvds] -;----------only for lvds_dev--------- -;img_size_w = 1920 ;oringnal sensor input image size W -;img_size_h = 1080 ;oringnal sensor input image size H -;wdr_mode = 0 ;HI_WDR_MODE_NONE =0 - ;HI_WDR_MODE_2F = 1;HI_WDR_MODE_3F = 2;HI_WDR_MODE_4F =3 - ;HI_WDR_MODE_DOL_2F = 4;HI_WDR_MODE_DOL_3F = 5;HI_WDR_MODE_DOL_4F = 6 -;sync_mode = 1 ;LVDS_SYNC_MODE_SOL = 0 - ;LVDS_SYNC_MODE_SAV = 1 -;raw_data_type = 2 ;RAW_DATA_8BIT = 0 - ;RAW_DATA_10BIT = 1 - ;RAW_DATA_12BIT = 2 - ;RAW_DATA_14BIT = 3 -;data_endian = 1 ;LVDS_ENDIAN_LITTLE = 0 - ;LVDS_ENDIAN_BIG = 1 -;sync_code_endian =1 ;LVDS_ENDIAN_LITTLE = 0 - ;LVDS_ENDIAN_BIG = 1 -lane_id = 0|1|2|3|-1|-1|-1|-1| ;lane_id: -1 - disable -;lvds_lane_num = -1 ;LVDS_LANE_NUM -;wdr_vc_num = -1 ;WDR_VC_NUM -;sync_code_num = -1 ;SYNC_CODE_NUM -;sync_code_0 = 0x003|0x007|0x001|0x005|0x043|0x047|0x041|0x045|0x023|0x027|0x021|0x025|0x083|0x087|0x081|0x085| -;sync_code_1 = 0x003|0x007|0x001|0x005|0x043|0x047|0x041|0x045|0x023|0x027|0x021|0x025|0x083|0x087|0x081|0x085| -;sync_code_2 = 0x003|0x007|0x001|0x005|0x043|0x047|0x041|0x045|0x023|0x027|0x021|0x025|0x083|0x087|0x081|0x085| -;sync_code_3 = 0x003|0x007|0x001|0x005|0x043|0x047|0x041|0x045|0x023|0x027|0x021|0x025|0x083|0x087|0x081|0x085| -;sync_code_4 = 0x003|0x007|0x001|0x005|0x043|0x047|0x041|0x045|0x023|0x027|0x021|0x025|0x083|0x087|0x081|0x085| -;sync_code_5 = 0x003|0x007|0x001|0x005|0x043|0x047|0x041|0x045|0x023|0x027|0x021|0x025|0x083|0x087|0x081|0x085| -;sync_code_6 = 0x003|0x007|0x001|0x005|0x043|0x047|0x041|0x045|0x023|0x027|0x021|0x025|0x083|0x087|0x081|0x085| -;sync_code_7 = 0x003|0x007|0x001|0x005|0x043|0x047|0x041|0x045|0x023|0x027|0x021|0x025|0x083|0x087|0x081|0x085| - -[isp_image] - -Isp_x =0 -Isp_y =0 -Isp_W =1920 -Isp_H =1080 +[isp_image] Isp_FrameRate=25 -Isp_Bayer =1 ;BAYER_RGGB=0, BAYER_GRBG=1, BAYER_GBRG=2, BAYER_BGGR=3 - +Isp_Bayer=BAYER_GRBG [vi_dev] -Input_mod =2 ;VI_INPUT_MODE_BT656 = 0 - ;VI_INPUT_MODE_BT601, - ;VI_INPUT_MODE_DIGITAL_CAMERA +Input_mod=VI_MODE_DIGITAL_CAMERA Work_mod =0 ;VI_WORK_MODE_1Multiplex = 0 ;VI_WORK_MODE_2Multiplex, ;VI_WORK_MODE_4Multiplex @@ -83,7 +29,7 @@ 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 =0xFFF00000 +Mask_0 =0xFFC0000 Mask_1 =0x0 Scan_mode = 1;VI_SCAN_INTERLACED = 0 ;VI_SCAN_PROGRESSIVE, @@ -96,25 +42,25 @@ Data_seq =2 ;data sequence (ONLY for YUV format) ; VI_INPUT_DATA_VYUY, ; VI_INPUT_DATA_YUYV, ; VI_INPUT_DATA_YVYU - + Vsync =1 ; vertical synchronization signal - ;VI_VSYNC_FIELD = 0, + ;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 + ;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_HIGH = 0, ;VI_HSYNC_NEG_LOW -VsyncValid =0 ;Attribute of the valid vertical synchronization signal +VsyncValid =1 ;Attribute of the valid vertical synchronization signal ;VI_VSYNC_NORM_PULSE = 0, - ;VI_VSYNC_VALID_SINGAL, + ;VI_VSYNC_VALID_SINGAL, VsyncValidNeg =0;Polarity of the valid vertical synchronization signal ;VI_VSYNC_VALID_NEG_HIGH = 0, - ;VI_VSYNC_VALID_NEG_LOW + ;VI_VSYNC_VALID_NEG_LOW Timingblank_HsyncHfb =0 ;Horizontal front blanking width Timingblank_HsyncAct =1920 ;Horizontal effetive width Timingblank_HsyncHbb =0 ;Horizontal back blanking width @@ -124,40 +70,10 @@ 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) - -;----- only for bt656 ---------- -;FixCode =0 ;BT656_FIXCODE_1 = 0, - ;BT656_FIXCODE_0 -;FieldPolar=0 ;BT656_FIELD_POLAR_STD = 0 - ;BT656_FIELD_POLAR_NSTD -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 */ +DataPath=1 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=1920 ; -DevRect_h=1080 ; - -[vi_chn] -CapRect_X =0 -CapRect_Y =0 -CapRect_Width=1920 -CapRect_Height=1080 -DestSize_Width=1920 -DestSize_Height=1080 -;CapSel =2 ;Frame/field select. ONLY used in interlaced mode - ;VI_CAPSEL_TOP = 0, /* top field */ - ;VI_CAPSEL_BOTTOM, /* bottom field */ - ;VI_CAPSEL_BOTH, /* top and bottom field */ - -PixFormat =23;PIXEL_FORMAT_YUV_SEMIPLANAR_422 = 22 - ;PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 23 ...etc -CompressMode =0 ;COMPRESS_MODE_NONE = 0 - ;COMPRESS_MODE_SEG =1 ...etc - -SrcFrameRate=-1 ;Source frame rate. -1: not controll -FrameRate =-1 ;Target frame rate. -1: not controll - +DevRect_x=0 +DevRect_y=0 +DevRect_w=1920 +DevRect_h=1080 diff --git a/general/package/hisilicon-osdrv-hi3516av100/files/sensor/libsns_ar0237.so b/general/package/hisilicon-osdrv-hi3516av100/files/sensor/libsns_ar0237.so index 99b9b158..99efe7fd 100755 Binary files a/general/package/hisilicon-osdrv-hi3516av100/files/sensor/libsns_ar0237.so and b/general/package/hisilicon-osdrv-hi3516av100/files/sensor/libsns_ar0237.so differ diff --git a/general/package/hisilicon-osdrv-hi3516av100/files/sensor/libsns_ar0237_dc.so b/general/package/hisilicon-osdrv-hi3516av100/files/sensor/libsns_ar0237_dc.so new file mode 100755 index 00000000..924df620 Binary files /dev/null and b/general/package/hisilicon-osdrv-hi3516av100/files/sensor/libsns_ar0237_dc.so differ