Example #1
0
int mic2873_led_en(int onoff, int mode)
{
	int ret = 0;

	if (flash_torch_en) {
	    if (onoff) { 	/* enable */
		if (mode) { 	/* flash */
			DEBUG_MIC2873("[LED] %s: mic2873_flash_en set 1\n", __func__);
			mic2873_flash_ctrl(MIC2873_OP_SWITCH_ON, MIC2873_FLASH_CURRENT_FEN0_1P200);
		} else { 	/* torch */
			DEBUG_MIC2873("[LED] %s: mic2873_torch_en set 1\n", __func__);
			mic2873_torch_ctrl(MIC2873_OP_SWITCH_ON, MIC2873_TORCH_CURRENT_TEN1_175P0);
		}
	    } else { 		/* disable */
		if (mode) { 	/* flash */
			DEBUG_MIC2873("[LED] %s: mic2873_flash_en set 0\n", __func__);
			mic2873_flash_ctrl(MIC2873_OP_SWITCH_OFF, MIC2873_FLASH_CURRENT_FEN0_1P200);
		} else { 	/* torch */
			DEBUG_MIC2873("[LED] %s: mic2873_torch_en set 0\n", __func__);
			mic2873_torch_ctrl(MIC2873_OP_SWITCH_OFF, MIC2873_TORCH_CURRENT_TEN1_175P0);
		}
	    }
	} else {
	    pr_err("%s : Error!!, find gpio", __func__);
	    ret = -EINVAL;
	}

	return ret;
}
Example #2
0
static ssize_t mic2873_flash(struct device *dev,
		struct device_attribute *attr, const char *buf, size_t size)
{
	ssize_t ret = -EINVAL;
	char *after;
	unsigned long state = simple_strtoul(buf, &after, 10);
	size_t count = after - buf;
        unsigned int cur = 0;

	DEBUG_MIC2873("[LED] %s\n", __func__);

	if (isspace(*after))
		count++;

	if (count == size) {
		ret = count;

                if (flash_torch_en) {
                    if (state != 0) { 	/* enable */
                        cur = (unsigned int)(MIC2873_TORCH_CURRENT_TEN1_175P0 - state + 1);
                        DEBUG_MIC2873("[LED] %s: mic2873_torch_en set 1\n", __func__);
                        mic2873_torch_ctrl(MIC2873_OP_SWITCH_ON, cur);
                    } else { 		/* disable */
                        DEBUG_MIC2873("[LED] %s: mic2873_torch_en set 0\n", __func__);
                        mic2873_torch_ctrl(MIC2873_OP_SWITCH_OFF, cur);
                    }
                } else {
                    pr_err("%s : Error!!, find gpio", __func__);
                    ret = -EINVAL;
                }
	}

	return ret;
}
int mic2873_led_en(int onoff, int mode)
{
	int ret = 0;

        if (sysfs_flash_op) {
            pr_warn("%s : The camera led control is not allowed"
                    " because sysfs led control already used it\n", __FUNCTION__);
            return 0; //no error
        }

	if (flash_torch_en) {
	    if (onoff) { 	/* enable */
		if (mode) { 	/* flash */
			DEBUG_MIC2873("[LED] %s: mic2873_flash_en set 1\n", __func__);
			mic2873_flash_ctrl(MIC2873_OP_SWITCH_ON, MIC2873_FLASH_CURRENT_FEN0_1P200);
		} else { 	/* torch */
			DEBUG_MIC2873("[LED] %s: mic2873_torch_en set 1\n", __func__);
			mic2873_torch_ctrl(MIC2873_OP_SWITCH_ON, MIC2873_TORCH_CURRENT_TEN1_175P0);
		}
	    } else { 		/* disable */
		if (mode) { 	/* flash */
			DEBUG_MIC2873("[LED] %s: mic2873_flash_en set 0\n", __func__);
			mic2873_flash_ctrl(MIC2873_OP_SWITCH_OFF, MIC2873_FLASH_CURRENT_FEN0_1P200);
		} else { 	/* torch */
			DEBUG_MIC2873("[LED] %s: mic2873_torch_en set 0\n", __func__);
			mic2873_torch_ctrl(MIC2873_OP_SWITCH_OFF, MIC2873_TORCH_CURRENT_TEN1_175P0);
		}
	    }
	} else {
	    pr_err("%s : Error!!, find gpio\n", __func__);
	    ret = -EINVAL;
	}

	return ret;
}