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; }