Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d26dde63 authored by Anomalchik's avatar Anomalchik
Browse files

markw: camera_v2: add markw changes

parent d377f067
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@
#define CYCLES_PER_MICRO_SEC_DEFAULT 4915
#define CCI_MAX_DELAY 1000000

#ifdef CONFIG_MACH_XIAOMI_MIDO
#if defined CONFIG_MACH_XIAOMI_MIDO || CONFIG_MACH_XIAOMI_MARKW
#define CCI_TIMEOUT msecs_to_jiffies(800)
#else
#define CCI_TIMEOUT msecs_to_jiffies(500)
@@ -823,6 +823,9 @@ static int32_t msm_cci_i2c_read(struct v4l2_subdev *sd,
	int32_t read_words = 0, exp_words = 0;
	int32_t index = 0, first_byte = 0;
	uint32_t i = 0;
#ifdef CONFIG_MACH_XIAOMI_MARKW
	uint32_t retry = 0;
#endif
	enum cci_i2c_master_t master;
	enum cci_i2c_queue_t queue = QUEUE_1;
	struct cci_device *cci_dev = NULL;
@@ -950,9 +953,20 @@ static int32_t msm_cci_i2c_read(struct v4l2_subdev *sd,
	} else {
		rc = 0;
	}
#ifdef CONFIG_MACH_XIAOMI_MARKW
	for (retry = 0; retry < 3; retry++) {
		read_words = msm_camera_io_r_mb(cci_dev->base +
 			CCI_I2C_M0_READ_BUF_LEVEL_ADDR + master * 0x100);
		pr_err("test s5k5e8 add %s:%d read_words = %d, exp words = %d\n", __func__,
			__LINE__, read_words, exp_words);
  		  
		if (read_words > 0)
			break;
	}
#else
	read_words = msm_camera_io_r_mb(cci_dev->base +
		CCI_I2C_M0_READ_BUF_LEVEL_ADDR + master * 0x100);
#endif
	exp_words = ((read_cfg->num_byte / 4) + 1);
	if (read_words != exp_words) {
		pr_err("%s:%d read_words = %d, exp words = %d\n", __func__,
+1 −1
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@
#define FALSE  0

#define MAX_LANE_COUNT 4
#ifdef CONFIG_MACH_XIAOMI_MIDO
#if defined CONFIG_MACH_XIAOMI_MIDO || CONFIG_MACH_XIAOMI_MARKW
#define CSID_TIMEOUT msecs_to_jiffies(500)
#else
#define CSID_TIMEOUT msecs_to_jiffies(100)
+58 −0
Original line number Diff line number Diff line
@@ -457,6 +457,10 @@ static int32_t msm_flash_i2c_write_setting_array(
	return rc;
}

#ifdef CONFIG_MACH_XIAOMI_MARKW
struct msm_flash_ctrl_t *flash_ctrl_wt = NULL;
#endif

static int32_t msm_flash_init(
	struct msm_flash_ctrl_t *flash_ctrl,
	struct msm_flash_cfg_data_t *flash_data)
@@ -600,7 +604,11 @@ static int32_t msm_flash_low(
			led_trigger_event(flash_ctrl->flash_trigger[i], 0);

	/* Turn on flash triggers */
#ifdef CONFIG_MACH_XIAOMI_MARKW
	for (i = 0; i < flash_ctrl->torch_num_sources - 1; i++) {
#else
	for (i = 0; i < flash_ctrl->torch_num_sources; i++) {
#endif
		if (flash_ctrl->torch_trigger[i]) {
			max_current = flash_ctrl->torch_max_current[i];
			if (flash_data->flash_current[i] >= 0 &&
@@ -623,6 +631,37 @@ static int32_t msm_flash_low(
	return 0;
}

#ifdef CONFIG_MACH_XIAOMI_MARKW
int32_t wt_flash_flashlight(bool boolean)
{
	uint32_t curr = 0;
	int32_t i = 0;

	if (boolean)
		curr = 100;
	else
		curr = 0;

	if (flash_ctrl_wt) {
	CDBG("WT Enter\n");

	/* Turn on flash triggers */
	CDBG("WT_XJB  flash_ctrl_wt->torch_num_sources = %d", flash_ctrl_wt->torch_num_sources);
	for (i = 0; i < flash_ctrl_wt->torch_num_sources - 1; i++) {
		CDBG("WT low_flash_current[%d] = %d\n", i, curr);
		if (flash_ctrl_wt->torch_trigger[i]) {
			led_trigger_event(flash_ctrl_wt->torch_trigger[i],
				curr);
		}
	}
	if (flash_ctrl_wt->switch_trigger)
		led_trigger_event(flash_ctrl_wt->switch_trigger, 1);
		CDBG("WT Exit\n");
	}
	return 0;
}
#endif

static int32_t msm_flash_high(
	struct msm_flash_ctrl_t *flash_ctrl,
	struct msm_flash_cfg_data_t *flash_data)
@@ -632,7 +671,11 @@ static int32_t msm_flash_high(
	int32_t i = 0;

	/* Turn off torch triggers */
#ifdef CONFIG_MACH_XIAOMI_MARKW
	for (i = 0; i < flash_ctrl->torch_num_sources - 1; i++)
#else
	for (i = 0; i < flash_ctrl->torch_num_sources; i++)
#endif
		if (flash_ctrl->torch_trigger[i])
			led_trigger_event(flash_ctrl->torch_trigger[i], 0);

@@ -1007,6 +1050,16 @@ static int32_t msm_flash_get_dt_data(struct device_node *of_node,

	fctrl->flash_driver_type = FLASH_DRIVER_DEFAULT;

#ifdef CONFIG_MACH_XIAOMI_MARKW
	rc = msm_flash_get_pmic_source_info(of_node, fctrl);
	if (rc < 0) {
		pr_err("%s:%d msm_flash_get_pmic_source_info failed rc %d\n", __func__, __LINE__, rc);
		return rc;
	}
	if (fctrl->flash_driver_type == FLASH_DRIVER_PMIC)
		return 0;
#endif

	/* Read the CCI master. Use M0 if not available in the node */
	rc = of_property_read_u32(of_node, "qcom,cci-master",
		&fctrl->cci_i2c_master);
@@ -1020,6 +1073,7 @@ static int32_t msm_flash_get_dt_data(struct device_node *of_node,
		fctrl->flash_driver_type = FLASH_DRIVER_I2C;
	}

#ifndef CONFIG_MACH_XIAOMI_MARKW
	/* Read the flash and torch source info from device tree node */
	rc = msm_flash_get_pmic_source_info(of_node, fctrl);
	if (rc < 0) {
@@ -1027,6 +1081,7 @@ static int32_t msm_flash_get_dt_data(struct device_node *of_node,
			__func__, __LINE__, rc);
		return rc;
	}
#endif

	/* Read the gpio information from device tree */
	rc = msm_sensor_driver_get_gpio_data(
@@ -1196,6 +1251,9 @@ static int msm_camera_flash_i2c_probe(struct i2c_client *client,
#endif
	flash_ctrl->msm_sd.sd.devnode->fops = &msm_flash_v4l2_subdev_fops;

#ifdef CONFIG_MACH_XIAOMI_MARKW
	flash_ctrl_wt = flash_ctrl;
#endif
	CDBG("probe success\n");
	return rc;
}