mtk camera架构_c语言源代码网站

mtk camera架构_c语言源代码网站Kd_camera_hw.c(custom\viroyal73\kernel\camera\camera)#include<linux/videodev2.h>#include<linux/i2c.h>#include<linux/platform_device.h>#include<linux/delay.h>#i…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Kd_camera_hw.c (custom\viroyal73\kernel\camera\camera)

#include <linux/videodev2.h>
#include <linux/i2c.h>
#include <linux/platform_device.h>
#include <linux/delay.h>
#include <linux/cdev.h>
#include <linux/uaccess.h>
#include <linux/fs.h>
#include <asm/atomic.h>

#include “kd_camera_hw.h”

//#include “kd_cust_image_sensor.h”
#include “kd_imgsensor.h”
#include “kd_imgsensor_define.h”
#include “kd_camera_feature.h”

/******************************************************************************
* Debug configuration
******************************************************************************/
#define PFX “[kd_camera_hw]”
#define PK_DBG_NONE(fmt, arg…) do {} while (0)
#define PK_DBG_FUNC(fmt, arg…) printk(KERN_INFO PFX “%s: ” fmt, __FUNCTION__ ,##arg)

#define DEBUG_CAMERA_HW_K
#ifdef DEBUG_CAMERA_HW_K
#define PK_DBG PK_DBG_FUNC
#define PK_ERR(fmt, arg…) printk(KERN_ERR PFX “%s: ” fmt, __FUNCTION__ ,##arg)
#else
#define PK_DBG(a,…)
#define PK_ERR(a,…)
#endif

int kdCISModulePowerOn(CAMERA_DUAL_CAMERA_SENSOR_ENUM SensorIdx, char *currSensorName, BOOL On, char* mode_name)
{

u32 pinSetIdx = 0;//default main sensor

#define IDX_PS_CMRST 0
#define IDX_PS_CMPDN 4

#define IDX_PS_MODE 1
#define IDX_PS_ON 2
#define IDX_PS_OFF 3
u32 pinSet[2][8] = {

//for main sensor
{GPIO_CAMERA_CMRST_PIN,
GPIO_CAMERA_CMRST_PIN_M_GPIO, /* mode */
GPIO_OUT_ONE, /* ON state */
GPIO_OUT_ZERO, /* OFF state */
GPIO_CAMERA_CMPDN_PIN,
GPIO_CAMERA_CMPDN_PIN_M_GPIO,
/*modified for OV5642, by tyd-lg, 2011-08-05*/
#if !defined(SID130B_YUV)
GPIO_OUT_ZERO,
GPIO_OUT_ONE,
#else
GPIO_OUT_ONE,
GPIO_OUT_ZERO,
#endif
},
//for sub sensor
{GPIO_CAMERA_CMRST1_PIN,
GPIO_CAMERA_CMRST1_PIN_M_GPIO,
GPIO_OUT_ONE,
GPIO_OUT_ZERO,
GPIO_CAMERA_CMPDN1_PIN,
GPIO_CAMERA_CMPDN1_PIN_M_GPIO,
GPIO_OUT_ZERO,
GPIO_OUT_ONE,
}
};

if (DUAL_CAMERA_MAIN_SENSOR == SensorIdx){

pinSetIdx = 0;
}
else if (DUAL_CAMERA_SUB_SENSOR == SensorIdx) {

pinSetIdx = 1;
}

//power ON
if (On) {

//in case
printk(“Set CAMERA_POWER_PULL_PIN for power \n”);
if (mt_set_gpio_pull_enable(GPIO_CAMERA_LDO_EN_PIN, GPIO_PULL_DISABLE)) {PK_DBG(“[[CAMERA SENSOR] Set CAMERA_POWER_PULL_PIN DISABLE ! \n”); }
if(mt_set_gpio_mode(GPIO_CAMERA_LDO_EN_PIN, GPIO_CAMERA_LDO_EN_PIN_M_GPIO)){PK_DBG(“[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN mode failed!! \n”);}
if(mt_set_gpio_dir(GPIO_CAMERA_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG(“[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN dir failed!! \n”);}
if(mt_set_gpio_out(GPIO_CAMERA_LDO_EN_PIN,GPIO_OUT_ONE)){PK_DBG(“[[CAMERA SENSOR] set CAMERA_POWER_PULL_PIN failed!! \n”);}

if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV3640_YUV,currSensorName)))
{

PK_DBG(“[ON_OV3640YUV case 1.5V]sensorIdx:%d \n”,SensorIdx);
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
}
else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_OV5642_RAW, currSensorName))) {

PK_DBG(“[OV5642Raw Workaround,!!!!!!!!!!!!!!!!\n”);
PK_DBG(“[ON_OV5642Raw case 2.8V IO_Temperal Workaround]sensorIdx:%d \n”,SensorIdx);
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_2800,mode_name)) {

PK_DBG(“[CAMERA SENSOR] Fail to enable digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
}
else //general case on
{

PK_DBG(“[ON_general 1.8V]sensorIdx:%d \n”,SensorIdx);
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D2, VOL_1800,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
}

if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A, VOL_2800,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable analog power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}

if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_IMX073_MIPI_RAW,currSensorName))){

PK_DBG(“[ON_general 1.3V]sensorIdx:%d \n”,SensorIdx);
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1300,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
}
else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_SIV121D_YUV,currSensorName))){

PK_DBG(“[ON_general 1.8V]sensorIdx:%d \n”,SensorIdx);
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
}
else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_SID130B_YUV,currSensorName))){

PK_DBG(“[ON_general 1.8V]sensorIdx:%d \n”,SensorIdx);
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
}
else if (currSensorName && (0 == strcmp(SENSOR_DRVNAME_GC0329_YUV,currSensorName))){

PK_DBG(“[ON_general 1.8V]sensorIdx:%d \n”,SensorIdx);
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
}
else
{ // general case on
PK_DBG(“[ON_general 1.5V]sensorIdx:%d \n”,SensorIdx);
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1500,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
}

if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_A2, VOL_2800,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable analog power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}

// wait power to be stable
mdelay(5);
//disable inactive sensor
if (GPIO_CAMERA_INVALID != pinSet[1-pinSetIdx][IDX_PS_CMRST]) {

printk(“A6-camera: disable inactive sensor, pinSetIdx = %d\n”, pinSetIdx);
printk(“A6-camera: operate CMRST = GPIO_%d, PS_OFF = %d\n”, pinSet[1-pinSetIdx][IDX_PS_CMRST], pinSet[1-pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF]);
printk(“A6-camera: operate CMPDN = GPIO_%d, PS_OFF = %d\n”, pinSet[1-pinSetIdx][IDX_PS_CMPDN], pinSet[1-pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF]);

if(mt_set_gpio_mode(pinSet[1-pinSetIdx][IDX_PS_CMRST],pinSet[1-pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG(“[CAMERA SENSOR] set gpio mode failed!! \n”);}
if(mt_set_gpio_mode(pinSet[1-pinSetIdx][IDX_PS_CMPDN],pinSet[1-pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG(“[CAMERA LENS] set gpio mode failed!! \n”);}
if(mt_set_gpio_dir(pinSet[1-pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG(“[CAMERA SENSOR] set gpio dir failed!! \n”);}
if(mt_set_gpio_dir(pinSet[1-pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG(“[CAMERA LENS] set gpio dir failed!! \n”);}
if(mt_set_gpio_out(pinSet[1-pinSetIdx][IDX_PS_CMRST],pinSet[1-pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG(“[CAMERA SENSOR] set gpio failed!! \n”);} //low == reset sensor
if(mt_set_gpio_out(pinSet[1-pinSetIdx][IDX_PS_CMPDN],pinSet[1-pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG(“[CAMERA LENS] set gpio failed!! \n”);} //high == power down lens module
}

//enable active sensor
//RST pin
if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) {

//PDN pin
printk(“A6-camera: enable inactive sensor, pinSetIdx = %d\n”, pinSetIdx);
printk(“A6-camera: operate CMRST = GPIO_%d, PS_OFF = %d\n”, pinSet[pinSetIdx][IDX_PS_CMRST], pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF]);
printk(“A6-camera: operate CMPDN = GPIO_%d, PS_OFF = %d\n”, pinSet[pinSetIdx][IDX_PS_CMPDN], pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF]);
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG(“[CAMERA LENS] set gpio mode failed!! \n”);}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG(“[CAMERA LENS] set gpio dir failed!! \n”);}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_ON])){PK_DBG(“[CAMERA LENS] set gpio failed!! \n”);}

if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG(“[CAMERA SENSOR] set gpio mode failed!! \n”);}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG(“[CAMERA SENSOR] set gpio dir failed!! \n”);}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG(“[CAMERA SENSOR] set gpio failed!! \n”);}
mdelay(5);
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_ON])){PK_DBG(“[CAMERA SENSOR] set gpio failed!! \n”);}
mdelay(5);

}
#ifdef GPIO_CAMERA_AF_EN_PIN
//@ for main to enable AF
if (pinSetIdx == 0) {

if(mt_set_gpio_mode(GPIO_CAMERA_AF_EN_PIN, GPIO_MODE_00)){PK_DBG(“[CAMERA SENSOR AF ] set gpio mode failed!! \n”);}
if(mt_set_gpio_dir(GPIO_CAMERA_AF_EN_PIN,GPIO_DIR_OUT)){PK_DBG(“[CAMERA SENSOR] set gpio dir failed!! \n”);}
if(mt_set_gpio_out(GPIO_CAMERA_AF_EN_PIN,GPIO_OUT_ONE)){PK_DBG(“[CAMERA SENSOR] set gpio failed!! \n”);} //low == reset sensor
}
#endif
}
else {//power OFF
printk(“Set GPIO 94 for power OFF\n”);
if (mt_set_gpio_pull_enable(GPIO_CAMERA_LDO_EN_PIN, GPIO_PULL_DISABLE)) {PK_DBG(“[CAMERA SENSOR] Set GPIO94 PULL DISABLE ! \n”); }
if(mt_set_gpio_mode(GPIO_CAMERA_LDO_EN_PIN, GPIO_CAMERA_LDO_EN_PIN_M_GPIO)){PK_DBG(“[CAMERA SENSOR] set gpio mode failed!! \n”);}
if(mt_set_gpio_dir(GPIO_CAMERA_LDO_EN_PIN,GPIO_DIR_OUT)){PK_DBG(“[CAMERA SENSOR] set gpio dir failed!! \n”);}
if(mt_set_gpio_out(GPIO_CAMERA_LDO_EN_PIN,GPIO_OUT_ZERO)){PK_DBG(“[CAMERA SENSOR] set gpio failed!! \n”);}

//PK_DBG(“[OFF]sensorIdx:%d \n”,SensorIdx);
if (GPIO_CAMERA_INVALID != pinSet[pinSetIdx][IDX_PS_CMRST]) {

printk(“A6-camera: off sensor, pinSetIdx = %d\n”, pinSetIdx);
printk(“A6-camera: operate CMRST = GPIO_%d, PS_OFF = %d\n”, pinSet[pinSetIdx][IDX_PS_CMRST], pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF]);
printk(“A6-camera: operate CMPDN = GPIO_%d, PS_OFF = %d\n”, pinSet[pinSetIdx][IDX_PS_CMPDN], pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF]);
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_MODE])){PK_DBG(“[CAMERA SENSOR] set gpio mode failed!! \n”);}
if(mt_set_gpio_mode(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_MODE])){PK_DBG(“[CAMERA LENS] set gpio mode failed!! \n”);}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMRST],GPIO_DIR_OUT)){PK_DBG(“[CAMERA SENSOR] set gpio dir failed!! \n”);}
if(mt_set_gpio_dir(pinSet[pinSetIdx][IDX_PS_CMPDN],GPIO_DIR_OUT)){PK_DBG(“[CAMERA LENS] set gpio dir failed!! \n”);}
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMRST],pinSet[pinSetIdx][IDX_PS_CMRST+IDX_PS_OFF])){PK_DBG(“[CAMERA SENSOR] set gpio failed!! \n”);} //low == reset sensor
if(mt_set_gpio_out(pinSet[pinSetIdx][IDX_PS_CMPDN],pinSet[pinSetIdx][IDX_PS_CMPDN+IDX_PS_OFF])){PK_DBG(“[CAMERA LENS] set gpio failed!! \n”);} //high == power down lens module
}

#ifdef GPIO_CAMERA_AF_EN_PIN
//@ for main to disable AF
if (pinSetIdx == 0) {

if(mt_set_gpio_mode(GPIO_CAMERA_AF_EN_PIN, GPIO_MODE_00)){PK_DBG(“[CAMERA SENSOR AF ] set gpio mode failed!! \n”);}
if(mt_set_gpio_dir(GPIO_CAMERA_AF_EN_PIN,GPIO_DIR_OUT)){PK_DBG(“[CAMERA SENSOR] set gpio dir failed!! \n”);}
if(mt_set_gpio_out(GPIO_CAMERA_AF_EN_PIN,GPIO_OUT_ZERO)){PK_DBG(“[CAMERA SENSOR] set gpio failed!! \n”);} //low == reset sensor
}
#endif

if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A,mode_name)) {

PK_DBG(“[CAMERA SENSOR] Fail to OFF analog power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_A2,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable analog power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D, mode_name)) {

PK_DBG(“[CAMERA SENSOR] Fail to OFF digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
if(TRUE != hwPowerDown(CAMERA_POWER_VCAM_D2,mode_name))
{

PK_DBG(“[CAMERA SENSOR] Fail to enable digital power\n”);
//return -EIO;
goto _kdCISModulePowerOn_exit_;
}
}//

return 0;

_kdCISModulePowerOn_exit_:
return -EIO;
}

EXPORT_SYMBOL(kdCISModulePowerOn);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226763.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java 集合详解

    Java 集合详解Java集合详解1.集合了解集合类存放于java.util包中。集合类存放的都是对象的引用,而非对象本身。集合的长度可变。2.集合层次关系观看上图需要注意一下实线边框的是实现类折线边框的是抽象类点线边框的是接口2.1Collection接口Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产…

    2022年5月18日
    32
  • linux命令行怎么结束进程,linux结束进程命令「建议收藏」

    linux命令行怎么结束进程,linux结束进程命令「建议收藏」linux下进程的开启与结束都可以通过命令来控制,下面由学习啦小编为大家整理了linux下结束进程命令的相关知识,希望对大家有所帮助。linux结束进程命令1.killkill[信号代码]根据PID向进程发送信号,常用来结束进程,默认信号为-9信号代码,可取值如下:-l[信号数字]显示、翻译信号代码-9,-KILL发送kill信号退出-6,-ABRT发送abort信号…

    2025年6月22日
    0
  • 新零售技术和意义

    新零售技术和意义

    2021年6月13日
    91
  • mac phpstrom激活码2021(JetBrains全家桶)

    (mac phpstrom激活码2021)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月21日
    57
  • PyCharm P2021.3.2 激活码 注册码【2021最新】

    (PyCharm P2021.3.2 激活码 注册码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日
    1.4K
  • ubuntu安装pycharm快捷图标_pycharm快捷方式找不到了

    ubuntu安装pycharm快捷图标_pycharm快捷方式找不到了1、首先下载pycharm安装包,从官网下载,选择专业版。2、解压到一个文件夹,打开bin文件夹,命令行下运行pycharm.sh文件。sh./pycharm.sh3、然后出现安装过程,一步一步走下去就行,如果中间问是否需要加载以前的设置(如果以前安装过),可以加也可以不加。4、激活码选择企业版,可以输入:http://idea.imsxm.com/5、完成安装。但是这样每次打开pycharm,需

    2022年8月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号