Exemplo n.º 1
0
static ssize_t store_3D_mode(struct device *dev,
		struct device_attribute *attr, const char *buf, size_t count)
{
	enum MODE_3D val = buf[0] - '0';

	if (val < 0 || val >= BARRIER_END) {
		pr_err("%s: unsupport value %c\n", __func__, val);
		return -EINVAL;
	}

	if (val == atomic_read(&g_3D_mode)) {
		printk(KERN_NOTICE "%s: status is same(%d)\n", __func__, val);
		return count;
	}

	atomic_set(&g_3D_mode, val);
	PR_DISP_INFO("%s mode = %d\n", __func__, val);
	switch (val) {
	case BARRIER_OFF:
		shooter_u_3Dpanel_off();
		break;
	case BARRIER_LANDSCAPE:
		shooter_u_3Dpanel_on(true);
		break;
	case BARRIER_PORTRAIT:
		shooter_u_3Dpanel_on(false);
		break;
	default:
		break;
	}

	return count;
}
static ssize_t store_3D_mode(struct device *dev,
                             struct device_attribute *attr, const char *buf, size_t count)
{
    int val;
    if ((buf[0] == '0' || buf[0] == '1' || buf[0] == '2')
            && buf[1] == '\n') {
        val = buf[0] - 0x30;
        if (val == atomic_read(&g_3D_mode)) {
            printk(KERN_NOTICE "%s: status is same(%d)\n", __func__, atomic_read(&g_3D_mode));
            return count;
        }

        atomic_set(&g_3D_mode, val);
        PR_DISP_INFO("%s mode = %d\n", __func__, val);
        switch (val) {
        case LANDSCAPE_3D:
            shooter_u_3Dpanel_on(true);
            break;
        case PORTRAIT_3D:
            shooter_u_3Dpanel_on(false);
            break;
        case OFF_3D:
            shooter_u_3Dpanel_off();
            break;
        default:
            break;
        }
    }
    return count;
}