本文整理汇总了C++中cam_debug函数的典型用法代码示例。如果您正苦于以下问题:C++ cam_debug函数的具体用法?C++ cam_debug怎么用?C++ cam_debug使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cam_debug函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ov13850_config
int
ov13850_config(
hwsensor_intf_t* si,
void *argp)
{
struct sensor_cfg_data *data;
int ret =0;
static bool ov13850_power_on = false;
static bool csi_enable = false;
data = (struct sensor_cfg_data *)argp;
cam_debug("ov13850 cfgtype = %d",data->cfgtype);
switch(data->cfgtype){
case SEN_CONFIG_POWER_ON:
if (!ov13850_power_on) {
ret = si->vtbl->power_up(si);
ov13850_power_on = true;
}
break;
case SEN_CONFIG_POWER_OFF:
if (ov13850_power_on) {
ret = si->vtbl->power_down(si);
ov13850_power_on = false;
}
break;
case SEN_CONFIG_WRITE_REG:
break;
case SEN_CONFIG_READ_REG:
break;
case SEN_CONFIG_WRITE_REG_SETTINGS:
break;
case SEN_CONFIG_READ_REG_SETTINGS:
break;
case SEN_CONFIG_ENABLE_CSI:
if(ov13850_power_on && !csi_enable)
{
ret = si->vtbl->csi_enable(si);
csi_enable = true;
}
break;
case SEN_CONFIG_DISABLE_CSI:
if(ov13850_power_on && csi_enable)
{
ret = si->vtbl->csi_disable(si);
csi_enable = false;
}
break;
case SEN_CONFIG_MATCH_ID:
ret = si->vtbl->match_id(si,argp);
break;
default:
break;
}
cam_debug("%s exit",__func__);
return ret;
}
开发者ID:CM13-HI6210SFT,项目名称:hisi_kernel_3.10.86_hi6210sft,代码行数:60,代码来源:ov13850.c
示例2: hw_flash_i2c_read
int hw_flash_i2c_read(struct hw_flash_i2c_client *client,
u8 reg, u8 *data)
{
int rc = 0;
struct i2c_msg msgs[2];
cam_debug("%s enter.\n", __func__);
msgs[0].addr = client->client->addr;
msgs[0].flags = 0;
msgs[0].len = 1;
msgs[0].buf = ®
msgs[1].addr = client->client->addr;
msgs[1].flags = I2C_M_RD;
msgs[1].len = 1;
msgs[1].buf = data;
rc = i2c_transfer(client->client->adapter, msgs, 2);
if (rc < 0) {
cam_err("%s transfer error, reg=0x%x, data=0x%x.",
__func__, reg, *data);
} else {
cam_debug("%s reg=0x%x, data=0x%x.\n", __func__, reg, *data);
}
return rc;
}
开发者ID:HuaweiHonor4C,项目名称:kernel_hi6210sft_mm,代码行数:28,代码来源:hw_flash_i2c.c
示例3: hisi_sensor_get_pos
static int hisi_sensor_get_pos(int index)
{
mm_segment_t fs;
struct file *filp = NULL;
char file_name[FILE_NAME_LEN]={0};
int pos=-1;
snprintf(file_name, FILE_NAME_LEN, "/data/camera/hisi_sensor%d", index);
cam_debug("%s index=%d.sensor name:%s\n", __func__, index, file_name);
filp = filp_open(file_name, O_RDONLY, 0444);
if (IS_ERR_OR_NULL(filp)) {
cam_err("%s, fail to open file.\n", __func__);
return pos;
}
fs = get_fs();
set_fs(KERNEL_DS);
if (sizeof(pos) != vfs_read(filp, (char*)&pos, sizeof(pos), &filp->f_pos)) {
cam_err("%s, fail to read file.\n", __func__);
pos=-EFAULT;
} else {
cam_debug("%s pos=%d.\n", __func__, pos);
}
set_fs(fs);
filp_close(filp, NULL);
return pos;
}
开发者ID:CM13-HI6210SFT,项目名称:hisi_kernel_3.10.86_hi6210sft,代码行数:30,代码来源:hisi_sensor.c
示例4: hw_vcm_config
int hw_vcm_config(hw_vcm_t *hw_vcm, void *arg)
{
int rc = 0;
struct hw_vcm_cfg_data *cdata = (struct hw_vcm_cfg_data *)arg;
if (NULL == cdata) {
cam_debug("%s, arg is NULL.\n", __func__);
return -EINVAL;
}
cam_debug("%s enter cfgtype=%d.\n", __func__, cdata->cfgtype);
mutex_lock(&hw_vcm->lock);
switch (cdata->cfgtype) {
case CFG_VCM_I2C_READ:
rc = hw_vcm->intf->vtbl->vcm_i2c_read(hw_vcm->intf, arg);
break;
case CFG_VCM_I2C_WRITE:
rc = hw_vcm->intf->vtbl->vcm_i2c_write(hw_vcm->intf, arg);
break;
case CFG_VCM_GET_VCM_NAME:
strncpy(cdata->cfg.name, hw_vcm->vcm_info->vcm_name,
sizeof(cdata->cfg.name) - 1);
break;
default:
rc = hw_vcm->intf->vtbl->vcm_ioctl(hw_vcm->intf, arg);
break;
}
mutex_unlock(&hw_vcm->lock);
return rc;
}
开发者ID:magnusjjj,项目名称:android_kernel_huawei_rle,代码行数:34,代码来源:hwvcm.c
示例5: hw_scharger_get_dt_data
static int hw_scharger_get_dt_data(struct hw_flash_ctrl_t *flash_ctrl)
{
struct hw_scharger_private_data_t *pdata;
struct device_node *of_node;
int i;
int rc = -1;
cam_debug("%s enter.\n", __func__);
if (NULL == flash_ctrl) {
cam_err("%s flash_ctrl is NULL.", __func__);
return rc;
}
pdata = (struct hw_scharger_private_data_t *)flash_ctrl->pdata;
of_node = flash_ctrl->dev->of_node;
rc = of_property_read_u32(of_node, "huawei,flash_led_num", &pdata->flash_led_num);
cam_debug("%s hisi,flash_led_num %d, rc %d\n", __func__, pdata->flash_led_num, rc);
if (rc < 0) {
cam_err("%s failed %d\n", __func__, __LINE__);
return rc;
}
rc = of_property_read_u32(of_node, "huawei,torch_led_num",
&pdata->torch_led_num);
cam_debug("%s hisi,torch_led_num %d, rc %d\n", __func__,
pdata->torch_led_num, rc);
if (rc < 0) {
cam_err("%s failed %d\n", __func__, __LINE__);
return rc;
}
rc = of_property_read_u32_array(of_node, "huawei,flash_led",
pdata->flash_led, pdata->flash_led_num);
if (rc < 0) {
cam_err("%s failed line %d\n", __func__, __LINE__);
return rc;
} else {
for (i=0; i< pdata->flash_led_num; i++) {
cam_debug("%s flash_led[%d]=0x%x.\n", __func__, i,
pdata->flash_led[i]);
}
}
rc = of_property_read_u32_array(of_node, "huawei,torch_led",
pdata->torch_led, pdata->torch_led_num);
if (rc < 0) {
cam_err("%s failed line %d\n", __func__, __LINE__);
return rc;
} else {
for (i = 0; i < pdata->torch_led_num; i++) {
cam_debug("%s torch_led[%d]=0x%x.\n", __func__, i,
pdata->torch_led[i]);
}
}
return rc;
}
开发者ID:XePeleato,项目名称:android_kernel_huawei_venus,代码行数:59,代码来源:scharger_flash.c
示例6: imx278_config
int
imx278_config(
hwsensor_intf_t* si,
void *argp)
{
if (NULL == si || NULL == argp){
cam_err("%s si or argp is null.\n", __func__);
return -1;
}
struct sensor_cfg_data *data;
int ret =0;
static bool imx278_power_on = false;
data = (struct sensor_cfg_data *)argp;
cam_debug("imx278 cfgtype = %d",data->cfgtype);
switch(data->cfgtype){
case SEN_CONFIG_POWER_ON:
if (!imx278_power_on) {
ret = si->vtbl->power_up(si);
imx278_power_on = true;
}
break;
case SEN_CONFIG_POWER_OFF:
if (imx278_power_on) {
ret = si->vtbl->power_down(si);
imx278_power_on = false;
}
break;
case SEN_CONFIG_WRITE_REG:
break;
case SEN_CONFIG_READ_REG:
break;
case SEN_CONFIG_WRITE_REG_SETTINGS:
break;
case SEN_CONFIG_READ_REG_SETTINGS:
break;
case SEN_CONFIG_ENABLE_CSI:
break;
case SEN_CONFIG_DISABLE_CSI:
break;
case SEN_CONFIG_MATCH_ID:
ret = si->vtbl->match_id(si,argp);
break;
default:
cam_err("%s cfgtype(%d) is error", __func__, data->cfgtype);
break;
}
cam_debug("%s exit",__func__);
return ret;
}
开发者ID:XePeleato,项目名称:android_kernel_huawei_venus,代码行数:50,代码来源:imx278.c
示例7: hisi_sensor_i2c_read_seq
int hisi_sensor_i2c_read_seq(struct hisi_sensor_ctrl_t *s_ctrl, void *data)
{
struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data;
struct sensor_i2c_setting setting;
int size = sizeof(struct sensor_i2c_reg)*cdata->cfg.setting.size;
long rc = 0;
cam_debug("%s: enter.\n", __func__);
if (cdata->cfg.setting.size > MAX_WRITE_READ_SEQ_SIZE) {
cam_err("%s, the size of read req(%d) exceeds the maximum range.", __func__, cdata->cfg.setting.size);
return -EFAULT;
}
setting.setting = (struct sensor_i2c_reg*)kzalloc(size, GFP_KERNEL);
if (NULL == setting.setting) {
cam_err("%s kmalloc error.\n", __func__);
return -ENOMEM;
}
if (copy_from_user(setting.setting,
(void __user *)cdata->cfg.setting.setting, size)) {
cam_err("%s copy_from_user error.\n", __func__);
rc = -EFAULT;
goto fail;
}
/* test */
{
int i=0;
for(i=0; i<cdata->cfg.setting.size; i++) {
cam_debug("%s subaddr=0x%x.\n",
__func__,
setting.setting[i].subaddr);
setting.setting[i].value = i;
}
}
if (copy_to_user((void __user *)cdata->cfg.setting.setting,
setting.setting, size)) {
cam_err("%s copy_to_user error.\n", __func__);
rc = -EFAULT;
goto fail;
}
fail:
kfree(setting.setting);
return rc;
}
开发者ID:CM13-HI6210SFT,项目名称:hisi_kernel_3.10.86_hi6210sft,代码行数:49,代码来源:sensor_common.c
示例8: tps61310_match
static int tps61310_match(struct hisi_flash_ctrl_t *flash_ctrl)
{
struct hisi_flash_i2c_client *i2c_client;
struct hisi_flash_i2c_fn_t *i2c_func;
struct tps61310_private_data_t *pdata;
unsigned char id;
cam_debug("%s ernter.\n", __func__);
if (NULL == flash_ctrl) {
cam_err("%s flash_ctrl is NULL.", __func__);
return -1;
}
i2c_client = flash_ctrl->flash_i2c_client;
i2c_func = flash_ctrl->flash_i2c_client->i2c_func_tbl;
pdata = (struct tps61310_private_data_t *)flash_ctrl->pdata;
tps61310_set_reset(flash_ctrl, HIGH);
i2c_func->i2c_read(i2c_client, REGISTER7, &id);
cam_info("%s id=0x%x.\n", __func__, id);
if ((id&0x7) != pdata->chipid) {
cam_err("%s match error, id&0x7(0x%x) != 0x%x.",
__func__, (id&0x7), pdata->chipid);
return -1;
}
tps61310_set_reset(flash_ctrl, LOW);
return 0;
}
开发者ID:CM13-HI6210SFT,项目名称:huawei_kernel_3.10.71_hi6210sft,代码行数:32,代码来源:tps61310.c
示例9: tps61310_on
static int tps61310_on(struct hisi_flash_ctrl_t *flash_ctrl, void *data)
{
struct flash_cfg_data *cdata = (struct flash_cfg_data *)data;
int rc=-1;
if ((NULL == flash_ctrl) || (NULL == cdata)) {
cam_err("%s flash_ctrl or cdata is NULL.", __func__);
return -1;
}
cam_debug("%s mode=%d, level=%d.\n", __func__, cdata->mode, cdata->data);
mutex_lock(flash_ctrl->hisi_flash_mutex);
rc = tps61310_led_enable(flash_ctrl, cdata);
if (rc < 0) {
cam_err("%s failed to enable tps61310 led.", __func__);
mutex_unlock(flash_ctrl->hisi_flash_mutex);
return rc;
}
if (FLASH_MODE == cdata->mode) {
rc = tps61310_flash_mode(flash_ctrl, cdata->data);
} else {
rc = tps61310_torch_mode(flash_ctrl, cdata->data);
}
flash_ctrl->state.mode = cdata->mode;
flash_ctrl->state.data = cdata->data;
mutex_unlock(flash_ctrl->hisi_flash_mutex);
return rc;
}
开发者ID:CM13-HI6210SFT,项目名称:huawei_kernel_3.10.71_hi6210sft,代码行数:31,代码来源:tps61310.c
示例10: dw9714_get_otp_af
int dw9714_get_otp_af(struct hisi_vcm_ctrl_t *vcm_ctrl, void *data)
{
struct vcm_cfg_data *cdata = (struct vcm_cfg_data *)data;
struct hisi_sd_req_sd vcm_req_sd = {0};
char sd_name[DEV_NAME_SIZE]={0};
struct hisi_sensor_ctrl_t *s_ctrl;
int rc = 0;
cam_debug("%s enter.", __func__);
snprintf(sd_name, sizeof(sd_name), "hisi_sensor_%d", vcm_ctrl->index);
vcm_req_sd.name = sd_name;
v4l2_subdev_notify(&vcm_ctrl->hisi_sd.sd, HISI_SD_NOTIFY_GET_SD, &vcm_req_sd);
s_ctrl = container_of(container_of(vcm_req_sd.subdev, struct hisi_sd_subdev, sd),
struct hisi_sensor_ctrl_t, hisi_sd);
if (s_ctrl->sensor->sensor_otp.af_otp.af_otp_succeed) {
cam_info("%s succeed to get otp af.", __func__);
memcpy(&cdata->cfg.af_otp, &s_ctrl->sensor->sensor_otp.af_otp,
sizeof(struct hisi_sensor_af_otp));
rc = 0;
} else {
cam_err("%s failed to get otp af.", __func__);
memset(&cdata->cfg.af_otp, 0, sizeof(struct hisi_sensor_af_otp));
rc = -1;
}
return rc;
}
开发者ID:Machiry,项目名称:android_kernel_huawei_hi6210sft,代码行数:29,代码来源:dw9714.c
示例11: hw_lm3646_front_init
static int hw_lm3646_front_init(struct hw_flash_ctrl_t *flash_ctrl)
{
struct hw_lm3646_front_private_data_t *pdata;
int rc = 0;
cam_debug("%s enter.\n", __func__);
if (NULL == flash_ctrl) {
cam_err("%s flash_ctrl is NULL.", __func__);
return -1;
}
pdata = (struct hw_lm3646_front_private_data_t *)flash_ctrl->pdata;
flash_ctrl->pctrl = devm_pinctrl_get_select(flash_ctrl->dev,
PINCTRL_STATE_DEFAULT);
if (NULL == flash_ctrl->pctrl) {
cam_err("%s failed to set pin.", __func__);
return -EIO;
}
rc = gpio_request(pdata->pin[RESET], "flash-reset");
if (rc < 0) {
cam_err("%s failed to request reset pin.", __func__);
return -EIO;
}
hw_lm3646_front_set_pin_reset(flash_ctrl,LOW);
msleep(LM3646_RESET_HOLD_TIME);
return rc;
}
开发者ID:HuaweiHonor4C,项目名称:kernel_hi6210sft_mm,代码行数:31,代码来源:lm3646_front.c
示例12: imx214_ioctl
int imx214_ioctl(struct hisi_sensor_ctrl_t *s_ctrl, void *data)
{
struct sensor_cfg_data *cdata = (struct sensor_cfg_data*)data;
int rc = 0;
cam_debug("%s enter.\n", __func__);
switch (cdata->cfgtype) {
case CFG_SENSOR_SET_VTS:
cam_info("%s set vts.\n", __func__);
break;
case CFG_SENSOR_GET_OTP_AWB:
//TODO...
break;
case CFG_SENSOR_GET_OTP_VCM:
#ifdef IMX214_OTP_FEATURE
rc = imx214_get_otp_af(s_ctrl, data);
#endif
break;
default:
rc = -EFAULT;
break;
}
return rc;
}
开发者ID:Machiry,项目名称:android_kernel_huawei_hi6210sft,代码行数:26,代码来源:imx214.c
示例13: hw_lm3642_off
static int hw_lm3642_off(struct hw_flash_ctrl_t *flash_ctrl)
{
struct hw_flash_i2c_client *i2c_client;
struct hw_flash_i2c_fn_t *i2c_func;
unsigned char val;
cam_debug("%s ernter.\n", __func__);
cam_info("%s 220250 ernter.\n", __func__);
if (NULL == flash_ctrl) {
cam_err("%s flash_ctrl is NULL.", __func__);
return -1;
}
mutex_lock(flash_ctrl->hw_flash_mutex);
flash_ctrl->state.mode = STANDBY_MODE;
flash_ctrl->state.data = 0;
i2c_client = flash_ctrl->flash_i2c_client;
i2c_func = flash_ctrl->flash_i2c_client->i2c_func_tbl;
i2c_func->i2c_read(i2c_client, REG_FLAGS, &val);
i2c_func->i2c_write(i2c_client, REG_ENABLE, MODE_STANDBY);
mutex_unlock(flash_ctrl->hw_flash_mutex);
return 0;
}
开发者ID:herryfan,项目名称:kernel-huawei-h60,代码行数:25,代码来源:lm3642.c
示例14: hw_mclk_config
int hw_mclk_config(sensor_t *s_ctrl,
struct sensor_power_setting *power_setting, int state)
{
int sensor_index;
cam_debug("%s enter.state:%d", __func__, state);
if (!is_ovisp23_poweron()) {
cam_notice("%s the ovisp has powered down.", __func__);
return 0;
}
if (SENSOR_INDEX_INVALID != power_setting->sensor_index) {
sensor_index = power_setting->sensor_index;
} else {
sensor_index = s_ctrl->board_info->sensor_index;
}
if (hw_is_fpga_board())
return 0;
hwcam_mclk_enable(sensor_index, state);
if (0 != power_setting->delay) {
hw_camdrv_msleep(power_setting->delay);
}
return 0;
}
开发者ID:CM13-HI6210SFT,项目名称:huawei_kernel_3.10.71_hi6210sft,代码行数:28,代码来源:sensor_common.c
示例15: hisi_mclk_config
void hisi_mclk_config(struct hisi_sensor_ctrl_t *s_ctrl,
struct sensor_power_setting *power_setting, int state)
{
int sensor_index;
cam_debug("%s enter.state:%d", __func__, state);
if (SENSOR_INDEX_INVALID != power_setting->sensor_index) {
sensor_index = power_setting->sensor_index;
} else {
sensor_index = s_ctrl->sensor->sensor_info->sensor_index;
}
if (is_fpga_board())
return;
if (POWER_ON == state) {
/* mclk */
if (CAMERA_SENSOR_PRIMARY == sensor_index) {
SETREG8(REG_ISP_CLK_DIVIDER, 0x44);
} else {
SETREG8(REG_ISP_CLK_DIVIDER, 0x44);
}
} else {
//SETREG8(REG_ISP_CLK_DIVIDER, 0);
}
if (0 != power_setting->delay) {
camdrv_msleep(power_setting->delay);
}
return;
}
开发者ID:CM13-HI6210SFT,项目名称:hisi_kernel_3.10.86_hi6210sft,代码行数:32,代码来源:sensor_common.c
示例16: hw_vcm_subdev_ioctl
static long
hw_vcm_subdev_ioctl(
struct v4l2_subdev *sd,
unsigned int cmd,
void *arg)
{
long rc = -EINVAL;
hw_vcm_t* s = NULL;
if (arg == NULL) {
cam_err("%s, the parameters is a null pointer!", __func__);
}
s = SD2Vcm(sd);
cam_debug("hw vcm cmd = %x",cmd);
switch (cmd)
{
case VIDIOC_HISI_VCM_CFG:
rc = s->intf->vtbl->vcm_config(s, arg);
break;
default:
cam_err("%s, invalid IOCTL CMD(%d)! \n", __func__, cmd);
break;
}
return rc;
}
开发者ID:magnusjjj,项目名称:android_kernel_huawei_rle,代码行数:27,代码来源:hwvcm.c
示例17: hw_lm3642_init
static int hw_lm3642_init(struct hw_flash_ctrl_t *flash_ctrl)
{
struct hw_lm3642_private_data_t *pdata;
int rc = 0;
cam_debug("%s ernter.\n", __func__);
if (NULL == flash_ctrl) {
cam_err("%s flash_ctrl is NULL.", __func__);
return -1;
}
pdata = (struct hw_lm3642_private_data_t *)flash_ctrl->pdata;
#if 1
flash_ctrl->pctrl = devm_pinctrl_get_select(flash_ctrl->dev,
PINCTRL_STATE_DEFAULT);
rc = gpio_request(pdata->strobe, "flash-strobe");
if (rc < 0) {
cam_err("%s failed to request strobe pin.", __func__);
return -EIO;
}
#endif
return rc;
}
开发者ID:herryfan,项目名称:kernel-huawei-h60,代码行数:25,代码来源:lm3642.c
示例18: altel6045_get_dt_data
int altel6045_get_dt_data(const hwextisp_intf_t *i, struct device_node *of_node)
{
int ret = 0;
int index = 0;
altek6045_private_data_t* pdata = NULL;
altek6045_t* mini_isp = NULL;
mini_isp = I2A(i);
pdata = (altek6045_private_data_t *)mini_isp->pdata;
ret = of_property_read_u32_array(of_node, "hisi,isp-pin",
pdata->pin, ISP_MAX);
if (ret < 0) {
cam_err("%s failed line %d\n", __func__, __LINE__);
return ret;
} else {
for (index = 0; index < ISP_MAX; index++) {
cam_debug("%s pin[%d]=%d.\n", __func__, index,
pdata->pin[index]);
}
}
#if 0
ret = gpio_request(pdata->pin[ISP_DVDD], "isp-dcdc");
if (ret < 0) {
cam_err("%s failed to request isp-dvdd pin.", __func__);
return ret;
}
#endif
return ret;
}
开发者ID:herryfan,项目名称:kernel-huawei-h60,代码行数:30,代码来源:altek6045.c
示例19: hw_lm3642_match
static int hw_lm3642_match(struct hw_flash_ctrl_t *flash_ctrl)
{
struct hw_flash_i2c_client *i2c_client;
struct hw_flash_i2c_fn_t *i2c_func;
struct hw_lm3642_private_data_t *pdata;
unsigned char id;
cam_debug("%s ernter.\n", __func__);
if (NULL == flash_ctrl) {
cam_err("%s flash_ctrl is NULL.", __func__);
return -1;
}
i2c_client = flash_ctrl->flash_i2c_client;
i2c_func = flash_ctrl->flash_i2c_client->i2c_func_tbl;
pdata = (struct hw_lm3642_private_data_t *)flash_ctrl->pdata;
i2c_func->i2c_read(i2c_client, REG_FLASH_FEATURES, &id);
cam_info("%s id=0x%x.\n", __func__, id);
if (id != pdata->chipid) {
cam_err("%s match error, id(0x%x) != 0x%x.",
__func__, (id&0x7), pdata->chipid);
return -1;
}
i2c_func->i2c_write(i2c_client, REG_IVFM, 0x00);
return 0;
}
开发者ID:herryfan,项目名称:kernel-huawei-h60,代码行数:29,代码来源:lm3642.c
示例20: hw_lm3646_front_off
static int hw_lm3646_front_off(struct hw_flash_ctrl_t *flash_ctrl)
{
struct hw_flash_i2c_client *i2c_client;
struct hw_flash_i2c_fn_t *i2c_func;
unsigned char val;
cam_debug("%s enter.\n", __func__);
if (NULL == flash_ctrl) {
cam_err("%s flash_ctrl is NULL.", __func__);
return -1;
}
mutex_lock(flash_ctrl->hw_flash_mutex);
if(flash_ctrl->state.mode == STANDBY_MODE){
mutex_unlock(flash_ctrl->hw_flash_mutex);
return 0;
}
flash_ctrl->state.mode = STANDBY_MODE;
flash_ctrl->state.data = 0;
i2c_client = flash_ctrl->flash_i2c_client;
i2c_func = flash_ctrl->flash_i2c_client->i2c_func_tbl;
i2c_func->i2c_read(i2c_client, REG_FLAGS1, &val);
i2c_func->i2c_read(i2c_client, REG_FLAGS2, &val);
i2c_func->i2c_write(i2c_client, REG_ENABLE, MODE_STANDBY);
//Enable lm3646_front switch to shutdown current is 1.3ua
hw_lm3646_front_set_pin_reset(flash_ctrl,LOW);
cam_info("%s end", __func__);
mutex_unlock(flash_ctrl->hw_flash_mutex);
return 0;
}
开发者ID:HuaweiHonor4C,项目名称:kernel_hi6210sft_mm,代码行数:33,代码来源:lm3646_front.c
注:本文中的cam_debug函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论