在全志A64平台点亮GC2145
2017/5/25 14:39
小技巧,直接在全志A64的SDK中搜索ov5640(默认是几乎通的),全部替换为gc2145即可。
1、
R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\configs\camera.cfg
;-------------------------------------------------------------------------------
; 用于camera的配置
;
; 采用格式:
; key = key_value
; 注意: 每个key需要顶格写;
; key_value紧跟着key后面的等号后面, 位于同一行中;
; key_value限制大小为256字节以内;
;
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; exif information of "make" and "model"
;-------------------------------------------------------------------------------
key_camera_exif_make = MAKE_A64
key_camera_exif_model = MODEL_A64
;-------------------------------------------------------------------------------
; 1 for single camera, 2 for double camera
;-------------------------------------------------------------------------------
number_of_camera = 1
;-------------------------------------------------------------------------------
; CAMERA_FACING_BACK
; ov5640 gc2145
;-------------------------------------------------------------------------------
camera_id = 0
;-------------------------------------------------------------------------------
; 1 for CAMERA_FACING_FRONT
; 0 for CAMERA_FACING_BACK
;-------------------------------------------------------------------------------
camera_facing = 0
;-------------------------------------------------------------------------------
; 1 for camera without isp(using built-in isp of Axx)
; 0 for camera with isp
;-------------------------------------------------------------------------------
use_builtin_isp = 0
;-------------------------------------------------------------------------------
; camera orientation (0, 90, 180, 270)
;-------------------------------------------------------------------------------
camera_orientation = 180
;-------------------------------------------------------------------------------
; driver device name
;-------------------------------------------------------------------------------
camera_device = /dev/video0
;-------------------------------------------------------------------------------
; device id
; for two camera devices with one CSI
;-------------------------------------------------------------------------------
device_id = 0
used_preview_size = 1
key_support_preview_size = 640x480
key_default_preview_size = 640x480
used_picture_size = 1
key_support_picture_size = 1600x1200, 1280x720, 800x600, 640x480
;key_support_picture_size = 1600x1200, 640x480
key_default_picture_size = 640x480
used_flash_mode = 0
key_support_flash_mode = on,off,auto
key_default_flash_mode = on
used_color_effect = 1
key_support_color_effect = none,mono,negative,sepia,aqua
key_default_color_effect = none
used_frame_rate = 1
key_support_frame_rate = 30
key_default_frame_rate = 30
used_focus_mode = 1
key_support_focus_mode = auto,infinity,macro,fixed,continuous-video,continuous-picture
key_default_focus_mode = auto
used_scene_mode = 0
key_support_scene_mode = auto,portrait,landscape,night,night-portrait,theatre,beach,snow,sunset,steadyphoto,fireworks,sports,party,candlelight,barcode
key_default_scene_mode = auto
used_white_balance = 1
key_support_white_balance = auto,incandescent,fluorescent,warm-fluorescent,daylight,cloudy-daylight
key_default_white_balance = auto
used_exposure_compensation = 1
key_max_exposure_compensation = 3
key_min_exposure_compensation = -3
key_step_exposure_compensation = 1
key_default_exposure_compensation = 0
key_horizonal_view_angle = 48.6
key_vertical_view_angle = 37.0
used_zoom = 1
key_zoom_supported = true
key_smooth_zoom_supported = false
key_zoom_ratios = 100,120,150,200,230,250,300
key_max_zoom = 30
key_default_zoom = 0
2、
R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\init.sun50iw1p1.rc
# csi module
insmod /system/vendor/modules/videobuf2-core.ko
insmod /system/vendor/modules/videobuf2-memops.ko
insmod /system/vendor/modules/videobuf2-dma-contig.ko
insmod /system/vendor/modules/vfe_io.ko
insmod /system/vendor/modules/actuator.ko
insmod /system/vendor/modules/dw9714_act.ko
#insmod /system/vendor/modules/ov5640.ko
insmod /system/vendor/modules/gc2145.ko
insmod /system/vendor/modules/vfe_v4l2.ko
3、(可选操作:)
R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\ueventd.sun50iw1p1.rc
/dev/video0 0770 media media
#/dev/video1 0770 media media
4、
R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\arch\arm64\boot\dts\sun50iw1p1.dtsi
csi0:vfe@0 {
device_type= "csi0";
compatible = "allwinner,sunxi-vfe";
interrupts = ;/*SUNXI_IRQ_CSI0 (SUNXI_GIC_START + 84 ) = 116*/
pinctrl-names = "default","sleep";
pinctrl-0 = ;
pinctrl-1 = ;
cci_sel = ;
csi_sel = ;
mipi_sel = ;
isp_sel = ;
csi0_sensor_list = ;
csi0_mck = ; /*PE1 .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0*/
status = "okay";
csi0_dev0:dev@0{
csi0_dev0_mname = "ov5640";
修改为:
csi0_dev0_mname = "gc2145";
csi0_dev0_twi_addr = ;
csi0_dev0_pos = "rear";
csi0_dev0_isp_used = ;
csi0_dev0_fmt = ;
csi0_dev0_stby_mode = ;
csi0_dev0_vflip = ;
csi0_dev0_hflip = ;
csi0_dev0_iovdd = "iovdd-csi";
csi0_dev0_iovdd_vol = ;
csi0_dev0_avdd = "avdd-csi";
csi0_dev0_avdd_vol = ;
csi0_dev0_dvdd = "dvdd-csi-18";
csi0_dev0_dvdd_vol = ;
csi0_dev0_afvdd = "";
csi0_dev0_afvdd_vol = ;
csi0_dev0_power_en = ;
csi0_dev0_reset = ; /*PE14 .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0*/
csi0_dev0_pwdn = ; /*PE15 .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0*/
csi0_dev0_flash_used = ;
csi0_dev0_flash_type = ;
csi0_dev0_flash_en = ;
csi0_dev0_flash_mode = ;
csi0_dev0_flvdd = "vdd-csi-led";
csi0_dev0_flvdd_vol = ;
csi0_dev0_af_pwdn = ;
csi0_dev0_act_used = ;
csi0_dev0_act_name = "ad5820_act";
csi0_dev0_act_slave = ;
status = "okay";
};
csi0_dev1:dev@1{
csi0_dev1_mname = "";
csi0_dev1_twi_addr = ;
csi0_dev1_pos = "rear";
csi0_dev1_isp_used = ;
csi0_dev1_fmt = ;
csi0_dev1_stby_mode = ;
csi0_dev1_vflip = ;
csi0_dev1_hflip = ;
csi0_dev1_iovdd = "iovdd-csi";
csi0_dev1_iovdd_vol = ;
csi0_dev1_avdd = "avdd-csi";
csi0_dev1_avdd_vol = ;
csi0_dev1_dvdd = "dvdd-csi-18";
csi0_dev1_dvdd_vol = ;
csi0_dev1_afvdd = "";
csi0_dev1_afvdd_vol = ;
csi0_dev1_power_en = ;
csi0_dev1_reset = ;
csi0_dev1_pwdn = ;
csi0_dev1_flash_used = ;
csi0_dev1_flash_type = ;
csi0_dev1_flash_en = ;
csi0_dev1_flash_mode = ;
csi0_dev1_flvdd = "vdd-csi-led";
csi0_dev1_flvdd_vol = ;
csi0_dev1_af_pwdn = ;
csi0_dev1_act_used = ;
csi0_dev1_act_name = "ad5820_act";
csi0_dev1_act_slave = ;
status = "disabled";
};
};
5、
R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\device\Makefile
obj-m += ov5640.o
obj-m += ov2640.o
#obj-m += ov7736.o
#obj-m += s5k4ec.o
#obj-m += s5k4ec_mipi.o
#obj-m += gc2035.o
#obj-m += gt2005.o
#obj-m += gc0307.o
obj-m += gc0308.o
#obj-m += gc0328.o
#obj-m += gc0328c.o
obj-m += gc2145.o
#obj-m += gc0329.o
#obj-m += gc0311.o
#obj-m += hi253.o
#obj-m += sp2518.o
#obj-m += sp2519.o
#obj-m += sp0718.o
#obj-m += sp0838.o
#obj-m += ov16825.o
#obj-m += ov5650.o
#obj-m += ov5647.o
#obj-m += ov5647_mipi.o
#obj-m += t8et5.o
#obj-m += s5k4e1.o
#obj-m += s5k4e1_mipi.o
#obj-m += sp2518.o
#obj-m += sp0718.o
#obj-m += gc5004.o
#obj-m += gc5004_mipi.o
#obj-m += ov5648.o
#obj-m += ar0330.o
#obj-m += ov5648.o
#obj-m += sp5408.o
#obj-m += ov12830.o
#obj-m += ov8825.o
#obj-m += ov8850.o
#obj-m += gc2155.o
#obj-m += ov8858.o
#obj-m += ov13850.o
#obj-m += imx214.o
#obj-m += ov8858_4lane.o
#obj-m += sp5409.o
#obj-m += s5k5e2yx.o
#obj-m += ov2710_mipi.o
#obj-m += ov2686.o
6、
R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\utility\sensor_info.c
struct sensor_item sensor_list_t[] =
{
// name i2c_addr sensor type sensor size sensor max pclk
{ "ov2640" , 0x60, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "ov5640" , 0x78, SENSOR_YUV , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "ov5647" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "ov5647_mipi" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "ov5650" , 0x50, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "ov5648" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "ov8825" , 0x6c, SENSOR_RAW , PIXEL_NUM_8M , CORE_CLK_RATE_FOR_8M},
{ "ov8850" , 0x20, SENSOR_RAW , PIXEL_NUM_8M , CORE_CLK_RATE_FOR_8M},
{ "ov12830" , 0x6c, SENSOR_RAW , PIXEL_NUM_12M , CORE_CLK_RATE_FOR_16M},
{ "ov16825" , 0x6c, SENSOR_RAW , PIXEL_NUM_16M , CORE_CLK_RATE_FOR_16M},
{ "gc0329" , 0x62, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "gc0309" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "gc0307" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "gc0308" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "gc2035" , 0x78, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "gt2005" , 0x78, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "gc2015" , 0x60, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "gc2235" , 0x78, SENSOR_RAW , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "sp0838" , 0x30, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "sp0718" , 0x6c, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "sp2518" , 0x6c, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "hi253" , 0x40, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "hi257" , 0x40, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "s5k4ec" , 0x5a, SENSOR_YUV , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "s5k4ec_mipi" , 0x5a, SENSOR_YUV , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "s5k4e1" , 0x20, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "s5k4e1_mipi" , 0x20, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "t4k05" , 0x6c, SENSOR_RAW , PIXEL_NUM_8M , CORE_CLK_RATE_FOR_8M},
{ "t8et5" , 0x78, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "ar0330" , 0x20, SENSOR_RAW , PIXEL_NUM_3M , CORE_CLK_RATE_FOR_3M},
{ "bf3a03" , 0xDC, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "gc0311" , 0x66, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "gc0311" , 0x66, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "gc5004" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "gc5004_mipi" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},
{ "nt99252" , 0x6c, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "ov7736" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "gc2145" , 0x78, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "gc2155" , 0x78, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},
{ "gc0328c" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
{ "gc0328" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},
};
7、
R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\config.c
struct ccm_config ccm0_def_cfg[] = {
{
.ccm = "ov5640",
修改为:
.ccm = "gc2145",
.twi_id = 1,
.i2c_addr = 0x78,
.is_isp_used = 0,
.is_bayer_raw = 0,
.vflip = 0,
.hflip = 0,
.iovdd_str = "",
.avdd_str = "",
.dvdd_str = "",
.afvdd_str = "",
.flvdd_str = "",
.power = {
.stby_mode = 1,
.iovdd_vol =2800000, /* voltage of sensor module for interface */
.avdd_vol =2800000, /* voltage of sensor module for analog */
.dvdd_vol =1500000, /* voltage of sensor module for core */
.afvdd_vol =2800000, /* voltage of sensor module for vcm sink */
.flvdd_vol = 3300000,/* voltage of sensor module for flash led */
},
.gpio = {
[MCLK_PIN] = {.gpio = GPIOE(1)/*129*/, .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0,},
[RESET] = {GPIOE(14)/*142*/, 1, 0, 1, 0,},
[PWDN] = {GPIOE(15)/*143*/, 1, 0, 1, 0,},
[POWER_EN] = {GPIO_INDEX_INVALID, 0, 0, 0, 0,},
[FLASH_EN] = {GPIO_INDEX_INVALID, 0, 0, 0, 0,},
[FLASH_MODE] = {GPIO_INDEX_INVALID, 0, 0, 0, 0,},
[AF_PWDN] = {GPIO_INDEX_INVALID, 0, 0, 0, 0,},
},
.flash_used = 0,
.flash_type = 0,
.act_used = 0,
.act_name = "ad5820_act",
.act_slave = 0x18,
},
};
R:\wyb\gc2145_bpi_a64_android\lichee\tools\pack\chips\sun50iw1p1\configs\bpi-m64-lcd\sys_config.fex
;--------------------------------------------------------------------------------
;csi (COMS Sensor Interface) configuration
;csi(x)_dev(x)_used: 0:disable 1:enable
;csi(x)_dev(x)_isp_used 0:not use isp 1:use isp
;csi(x)_dev(x)_fmt: 0:yuv 1:bayer raw rgb
;csi(x)_dev(x)_stby_mode: 0:not shut down power at standby 1:shut down power at standby
;csi(x)_dev(x)_vflip: flip in vertical direction 0:disable 1:enable
;csi(x)_dev(x)_hflip: flip in horizontal direction 0:disable 1:enable
;csi(x)_dev(x)_iovdd: camera module io power handle string, pmu power supply
;csi(x)_dev(x)_iovdd_vol: camera module io power voltage, pmu power supply
;csi(x)_dev(x)_avdd: camera module analog power handle string, pmu power supply
;csi(x)_dev(x)_avdd_vol: camera module analog power voltage, pmu power supply
;csi(x)_dev(x)_dvdd: camera module core power handle string, pmu power supply
;csi(x)_dev(x)_dvdd_vol: camera module core power voltage, pmu power supply
;csi(x)_dev(x)_afvdd: camera module vcm power handle string, pmu power supply
;csi(x)_dev(x)_afvdd_vol: camera module vcm power voltage, pmu power supply
;fill voltage in uV, e.g. iovdd = 2.8V, csix_iovdd_vol = 2800000
;fill handle string as below:
;axp22_eldo3
;axp22_dldo4
;axp22_eldo2
;fill handle string "" when not using any pmu power supply
;--------------------------------------------------------------------------------
[csi0]
csi0_used = 1
csi0_sensor_list = 1
修改为:
csi0_sensor_list = 0
csi0_pck = port:PE00
csi0_mck = port:PE01
修改为:
csi0_mck = port:PE01
csi0_hsync = port:PE02
csi0_vsync = port:PE03
csi0_d0 = port:PE04
csi0_d1 = port:PE05
csi0_d2 = port:PE06
csi0_d3 = port:PE07
csi0_d4 = port:PE08
csi0_d5 = port:PE09
csi0_d6 = port:PE10
csi0_d7 = port:PE11
csi0_sck = port:PE12
csi0_sda = port:PE13
[csi0/csi0_dev0]
csi0_dev0_used = 1
csi0_dev0_mname = "ov5640"
修改为:
csi0_dev0_mname = "gc2145"
csi0_dev0_twi_addr = 0x78
csi0_dev0_pos = "rear"
csi0_dev0_isp_used = 1
csi0_dev0_fmt = 0
csi0_dev0_stby_mode = 0
csi0_dev0_vflip = 1
csi0_dev0_hflip = 1
csi0_dev0_iovdd = "avdd-csi"
csi0_dev0_iovdd_vol = 2800000
csi0_dev0_avdd = "avdd-csi"
csi0_dev0_avdd_vol = 2800000
csi0_dev0_dvdd = "dvdd-csi-18"
csi0_dev0_dvdd_vol = 1500000
csi0_dev0_afvdd = "avdd-csi"
csi0_dev0_afvdd_vol = 2800000
csi0_dev0_power_en =
csi0_dev0_reset = port:PE16
csi0_dev0_pwdn = port:PE17
csi0_dev0_flash_used = 0
csi0_dev0_flash_type = 2
csi0_dev0_flash_en =
csi0_dev0_flash_mode =
csi0_dev0_flvdd = ""
csi0_dev0_flvdd_vol =
csi0_dev0_af_pwdn =
csi0_dev0_act_used = 1
csi0_dev0_act_name = "dw9714_act"
csi0_dev0_act_slave = 0x18