static int mcs6000_ts_ioctl(struct inode *inode, struct file *flip, unsigned int cmd, unsigned long arg) { int err = -1; /* int size; */ switch (_IOC_TYPE(cmd)) { case MCS6000_TS_DOWN_IOCTL_MAGIC: err = mcs6000_ts_ioctl_down(inode, flip, cmd, arg); break; case MCS6000_TS_IOCTL_MAGIC : switch(cmd){ case MCS6000_TS_IOCTL_FW_VER: { unsigned char fw_ver, hw_ver; mcs6000_firmware_info(&fw_ver, &hw_ver); err = fw_ver; break; } case MCS6000_TS_IOCTL_MAIN_ON: case MCS6000_TS_IOCTL_MAIN_OFF: break; } break; default: printk(KERN_ERR "%s unknow ioctl\n", __FUNCTION__); err = -EINVAL; break; } return err; }
static int mcs6000_ts_ioctl(struct inode *inode, struct file *flip, unsigned int cmd, unsigned long arg) { int err = -1; /* int size; */ switch (_IOC_TYPE(cmd)) { case MCS6000_TS_DOWN_IOCTL_MAGIC: err = mcs6000_ts_ioctl_down(inode, flip, cmd, arg); break; case MCS6000_TS_IOCTL_MAGIC : switch(cmd){ case MCS6000_TS_IOCTL_FW_VER: mcs6000_firmware_info(); err = mcs6000_ts_dev.input_dev->id.version; break; /* LGE_CHANGE [[email protected]] 2010-06-21, * add HW_VER */ case MCS6000_TS_IOCTL_HW_VER: mcs6000_firmware_info(); err = mcs6000_ts_dev.input_dev->id.product; break; case MCS6000_TS_IOCTL_MAIN_ON: case MCS6000_TS_IOCTL_MAIN_OFF: case MCS6000_TS_IOCTL_SUB_ON: case MCS6000_TS_IOCTL_SUB_OFF: break; } break; default: printk(KERN_ERR "[sub]%s unknow ioctl\n", __FUNCTION__); err = -EINVAL; break; } return err; }