多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 基于全志a31s的camrea驅動調試(gc2145型號)

基于全志a31s的camrea驅動調試(gc2145型號)

來源:程序員人生   發布時間:2015-02-06 09:00:45 閱讀次數:7630次

運行命令make ARCH = menuconfig進入device drivers--->Multimedia support--->配置以下

 

 

GC2145的驅動文件gc2145.c放在licheelinux⑶.3driversmediavideosunxi-vfedevice下并在其目錄下的Makefike文件添加

obj-$(CONFIG_CSI_VFE) += cci.o

......

obj-m += gc2145.o

修改lichee oolspackchipssun6iconfigsandroidmars-ml220sys_config.fex文件中內容以下

[vip1_para]

vip_used = 1

 

vip_dev0_mname = "gc2145"

vip_dev0_twi_id = 0

vip_dev0_twi_addr = 0x78

vip_dev0_isp_used = 0

vip_dev0_fmt = 0

vip_dev0_stby_mode = 0

vip_dev0_vflip = 0

vip_dev0_hflip = 0

vip_dev0_iovdd = "axp22_dldo2"

vip_dev0_iovdd_vol = 2800000

vip_dev0_avdd = "axp22_ldoio0"

vip_dev0_avdd_vol = 2800000

vip_dev0_dvdd = "axp22_eldo2"

vip_dev0_dvdd_vol = 1800000

vip_dev0_afvdd = "axp22_dldo2"

vip_dev0_afvdd_vol = 2800000

vip_dev0_power_en = 

vip_dev0_reset = port:PH26<1><default><default><0>

vip_dev0_pwdn = port:PH27<1><default><default><1>

vip_dev0_flash_en =

vip_dev0_flash_mode =

vip_dev0_af_pwdn =

 

vip_dev0_act_used = 0

vip_dev0_act_name = "ad5820_act"

vip_dev0_act_slave = 0x18

 

[camera_list_para]

camera_list_para_used = 1

......

gc2145 = 1

 

修改androiddevicesoftwinnermars-ml220init.sun6i.rc文件中以下內容

#csi module

    insmod /system/vendor/modules/videobuf-core.ko

    insmod /system/vendor/modules/videobuf-dma-contig.ko

    #insmod /system/vendor/modules/uvcvideo.ko

    

    insmod /system/vendor/modules/cam_detect.ko

    #insmod /system/vendor/modules/actuator.ko

    #insmod /system/vendor/modules/ad5820_act.ko

    insmod /system/vendor/modules/cci.ko

    insmod /system/vendor/modules/vfe_os.ko

    insmod /system/vendor/modules/vfe_subdev.ko

    #insmod /system/vendor/modules/ov5647.ko

    insmod /system/vendor/modules/gc2145.ko #注意:gc2145.ko1定要在vfe_v4l2.ko前注冊,不然會提示連接不到相機

    insmod /system/vendor/modules/vfe_v4l2.ko 

 

修改androiddevicesoftwinnermars-ml220configs文件中內容以下

number_of_camera = 1

camera_id = 0

camera_facing = 0

use_builtin_isp = 0

camera_orientation = 0

device_id = 0

 

licheelinux⑶.3driversmediavideosunxi-vfeconfig.c文件中添加

struct camera_info camera_info_list[] =

{

 {"gc2145",0,0,0,0},

 {"gc2235",0,0,1,1},

 {"ov5647",0,0,1,1},

 {"gc2035",0,0,0,0},

 {"gc0308",0,0,0,0},

 {"gc0307",0,0,0,0},

 {"hi257",0,0,0,0},

};

licheelinux⑶.3driversmediavideosunxi-vfecamera_detectorcamera_list.c文件中添加

#define __GC2145__

static void camera_pwr_on_gc2145(__u32 list_index, __camera_info_t *camera_info)

{

 camera_gpio_set_status(camera_info->stby_pin, 1);

 camera_gpio_set_status(camera_info->reset_pin, 1);

 //power supply

 camera_gpio_write(camera_info->stby_pin, camera_list[list_index].CSI_STBY_ON);

 camera_gpio_write(camera_info->reset_pin, camera_list[list_index].CSI_RST_ON);

 msleep(1);

 clk_enable(camera_info->module_clk);

 msleep(10);

 camera_gpio_write(camera_info->pwr_pin, camera_list[list_index].CSI_PWR_ON);

 msleep(10);

 if(camera_info->dvdd)

 {

  if(camera_info->dvdd_vol > 0)

  {

   regulator_set_voltage(camera_info->dvdd,camera_info->dvdd_vol,camera_info->dvdd_vol);

  }

  else

  {

   list_print("dvdd_vol is NULL!!  ");

  }

  regulator_enable(camera_info->dvdd);

  msleep(10);

 }

 if(camera_info->avdd)

 {

  if(camera_info->dvdd_vol > 0)

  {

   regulator_set_voltage(camera_info->avdd,camera_info->avdd_vol,camera_info->avdd_vol);

  }

  else

  {

   list_print("dvdd_vol is NULL!!  ");

  }

  regulator_enable(camera_info->avdd);

  msleep(10);

 }

 if(camera_info->iovdd)

 {

  if(camera_info->dvdd_vol > 0)

  {

   regulator_set_voltage(camera_info->iovdd,camera_info->iovdd_vol,camera_info->iovdd_vol);

  }

  else

  {

   list_print("dvdd_vol is NULL!!  ");

  }

  regulator_enable(camera_info->iovdd);

  msleep(10);

 }

 //standby off io

 camera_gpio_write(camera_info->stby_pin, camera_list[list_index].CSI_STBY_OFF);

 msleep(10);

 camera_gpio_write(camera_info->reset_pin, camera_list[list_index].CSI_RST_OFF);

 msleep(10);

 camera_gpio_write(camera_info->reset_pin, camera_list[list_index].CSI_RST_ON);

 msleep(10);

 camera_gpio_write(camera_info->reset_pin, camera_list[list_index].CSI_RST_OFF);

 msleep(10);

}

static void camera_pwr_off_gc2145(__u32 list_index, __camera_info_t *camera_info)

{

 camera_gpio_write(camera_info->stby_pin, camera_list[list_index].CSI_STBY_ON);

    msleep(10);

 //reset on io

    camera_gpio_write(camera_info->reset_pin, camera_list[list_index].CSI_RST_ON);

    msleep(10);

    //inactive mclk after power off

    //power supply off

    if(camera_info->iovdd) {

     regulator_disable(camera_info->iovdd);

    }

    if(camera_info->avdd) {

     regulator_disable(camera_info->avdd);

    }

    if(camera_info->dvdd) {

     regulator_disable(camera_info->dvdd);

    }

    camera_gpio_write(camera_info->pwr_pin, camera_list[list_index].CSI_PWR_OFF);

    msleep(10);

    //standby of io

 clk_disable(camera_info->module_clk);

    //set the io to hi-z

    camera_gpio_set_status(camera_info->reset_pin, 0);//set the gpio to input

   // camera_gpio_set_status(camera_info->stby_pin, 0);//set the gpio to input

}

static __s32 camera_detect_gc2145(__u32 list_index, struct i2c_adapter *i2c_adap)

{

    char reg_num[1], value[1];

    __s32 ret = 0;

    __u32 i2c_addr = camera_list[list_index].i2c_addr;

    __u32 addr_step = camera_list[list_index].REG_ADDR_STEP;

    __u32 data_step = camera_list[list_index].REG_DATA_STEP;

    list_print("try to detect gc2145 ...  ");

    reg_num[0] = 0xf0;

 ret = camera_i2c_read(i2c_adap, reg_num, value, i2c_addr, addr_step, data_step);

 if (ret < 0) {

  return ret;

 }

 if(value[0] !=0x21)

  return -ENODEV;

 reg_num[0] = 0xf1;

 ret = camera_i2c_read(i2c_adap, reg_num, value, i2c_addr, addr_step, data_step);

 if (ret < 0) {

  return ret;

 }

     if(value[0] !=0x55)

  return -ENODEV;

 

 list_print("detect gc2145 success!! ");

   

    return 0;

}

__camera_list_t camera_list[MAX_CAMERA_LIST_ITEM] = {

   ... ...

    CAMERA_LIST_ITEM_INIT(gc2145, 1, 1, 0x78, 1, 0, 0, 1, 1, 0),

};

修改licheelinux⑶.3driversmediavideosunxi-vfecamera_detectorcamera_list.h文件中內容以下

#define MAX_CAMERA_LIST_ITEM 26    //在原來的基礎上加1

 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品在线一区二区三区 | 玖玖精品在线观看 | 免费视频在线观看网站 | 免费一级欧美大片久久网 | 黑人日批 | 日本v视频 | 青青草原国产在线观看 | 一区二区三区 日韩 | 久久天天躁狠狠躁夜夜2020一 | 日韩欧美精品中文字幕 | 国产护士资源总站 | 亚洲视频免费在线看 | 日本最猛黑人xxxx猛交 | 久久久久久久久久久96av | 中文字幕乱码一二三四区 | 亚洲人成在线播放网站 | 一级毛片一级毛片a毛片欧美 | 2018一级毛片免费观看 | 欧美日韩国产一区二区三区 | 亚洲综合网站 | 亚洲 欧美 手机 在线观看 | 一级特黄aa大片免费 | 亚洲无砖砖区免费 | 日本欧美久久久久免费播放网 | 老司机午夜精品视频在线观看免费 | 日本一级毛片视频无遮挡免费 | 麻豆国产免费看片在线播放 | 一区二区高清视频在线观看 | 老司机成人午夜精品福利视频 | 亚洲乱搞| 日本a在线播放 | 亚洲黄色在线视频 | 在线欧美一级毛片免费观看 | free性欧美hd另类精品 | 欧美一二区 | 一二三四高清在线手机视频 | 日本成在线人视频免费视频 | 国内精品久久久久影院网站 | 成人精品 | 久久久久久免费播放一级毛片 | 婷婷在线视频国产综合 |