static void kr3dm_early_suspend(struct early_suspend *handler) { #ifdef SECURITY_HOLE_SUPPORT printk(" %s \n",__func__); kr3dm_set_mode(KR3DM_MODE_SLEEP); if (kr3dm.state & ACC_ENABLED) kr3dm_acc_disable(); #else is_kr3dm_sleep=true; kr3dm_set_mode( KR3DM_MODE_SLEEP ); #endif }
static void kr3dm_late_resume(struct early_suspend *handler) { #ifdef SECURITY_HOLE_SUPPORT printk(" %s \n",__func__); if (kr3dm.state & ACC_ENABLED) kr3dm_acc_enable(); kr3dm_set_mode(KR3DM_MODE_NORMAL); #else kr3dm_set_mode( KR3DM_MODE_NORMAL ); msleep(3); is_kr3dm_sleep=false; #endif }
static int kr3dm_accelerometer_resume( struct platform_device* pdev ) { #ifdef SECURITY_HOLE_SUPPORT printk(" %s \n",__func__); if (kr3dm.state & ACC_ENABLED) kr3dm_acc_enable(); kr3dm_set_mode(KR3DM_MODE_NORMAL); return 0; #else return 0; #endif }
static int kr3dm_accelerometer_suspend( struct platform_device* pdev, pm_message_t state ) { #ifdef SECURITY_HOLE_SUPPORT printk(" %s \n",__func__); kr3dm_set_mode(KR3DM_MODE_SLEEP); if (kr3dm.state & ACC_ENABLED) kr3dm_acc_disable(); return 0; #else return 0; #endif }
int kr3dm_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) { int err = 0; unsigned char data[3]; kr3dmacc_t accels; unsigned char val1 = 0x27; /* check cmd */ if(_IOC_TYPE(cmd) != KR3DM_IOC_MAGIC) { printk("cmd magic type error\n"); return -ENOTTY; } if(_IOC_NR(cmd) > KR3DM_IOC_MAXNR) { printk("cmd number error\n"); return -ENOTTY; } if(_IOC_DIR(cmd) & _IOC_READ) err = !access_ok(VERIFY_WRITE,(void __user*)arg, _IOC_SIZE(cmd)); else if(_IOC_DIR(cmd) & _IOC_WRITE) err = !access_ok(VERIFY_READ, (void __user*)arg, _IOC_SIZE(cmd)); if(err) { printk("cmd access_ok error\n"); return -EFAULT; } switch(cmd) { case KR3DM_READ_ACCEL_XYZ: err = kr3dm_read_accel_xyz(&accels); if(copy_to_user((kr3dmacc_t*)arg, &accels, sizeof(kr3dmacc_t))!=0) { printk("copy_to error\n"); return -EFAULT; } return err; case KR3DM_SET_RANGE: if(copy_from_user(data,(unsigned char*)arg,1)!=0) { printk("[KR3DM] copy_from_user error\n"); return -EFAULT; } err = kr3dm_set_range(*data); return err; case KR3DM_SET_MODE: if(copy_from_user(data,(unsigned char*)arg,1)!=0) { printk("[KR3DM] copy_from_user error\n"); return -EFAULT; } err = kr3dm_set_mode(*data); return err; case KR3DM_SET_BANDWIDTH: if(copy_from_user(data,(unsigned char*)arg,1)!=0) { printk("[KR3DM] copy_from_user error\n"); return -EFAULT; } err = kr3dm_set_bandwidth(*data); return err; default: return 0; } return 0; }
static void kr3dm_late_resume(struct early_suspend *handler) { kr3dm_set_mode( KR3DM_MODE_NORMAL ); }
static void kr3dm_early_suspend(struct early_suspend *handler) { kr3dm_set_mode( KR3DM_MODE_SLEEP ); }
static void kr3dm_late_resume(struct early_suspend *handler) { kr3dm_set_mode( KR3DM_MODE_NORMAL ); msleep(3); is_kr3dm_sleep=false; }