Add AR0237_DC for Hi3516Dv100

pull/136/head
Dmitry Ermakov 2022-01-01 15:43:29 +03:00
parent 3c6e153939
commit f5c813faac
4 changed files with 151 additions and 157 deletions

View File

@ -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 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 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

View File

@ -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 =4 ;INPUT_MODE_MIPI = 0
;INPUT_MODE_SUBLVDS = 1
;INPUT_MODE_LVDS = 2 ...etc
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
input_mode=INPUT_MODE_CMOS_33V
dev_attr=0
[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|
lane_id = 0|1|2|3|-1|-1|-1|-1|
[isp_image]
Isp_x =0
Isp_y =0
Isp_W =1920
Isp_H =1080
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,
@ -109,7 +55,7 @@ Hsync =0 ;Attribute of the horizontal synchronization signal
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
VsyncValid =1 ;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
@ -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