• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ cam_debug函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ cam_err函数代码示例发布时间:2022-05-30
下一篇:
C++ cam_dbg函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap