static long proximity_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct gp2a_data *gp2a = dev_get_drvdata(switch_cmd_dev); int ret=0; switch(cmd) { case SHARP_GP2AP_OPEN: { printk(KERN_INFO "[PROXIMITY] %s : case OPEN\n", __FUNCTION__); gp2a_on(gp2a,PROXIMITY); proximity_enable =1; } break; case SHARP_GP2AP_CLOSE: { printk(KERN_INFO "[PROXIMITY] %s : case CLOSE\n", __FUNCTION__); gp2a_off(gp2a,PROXIMITY); proximity_enable=0; } break; default: printk(KERN_INFO "[PROXIMITY] unknown ioctl %d\n", cmd); ret = -1; break; } return ret; }
static ssize_t lightsensor_file_cmd_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { struct gp2a_data *gp2a = dev_get_drvdata(dev); int value; sscanf(buf, "%d", &value); printk(KERN_INFO "[LIGHT_SENSOR] in lightsensor_file_cmd_store, input value = %d \n",value); if(value==1 && light_enable == OFF) { light_init_period = 4; gp2a_on(gp2a,LIGHT); value = ON; } else if(value==0 && light_enable ==ON) { gp2a_off(gp2a,LIGHT); value = OFF; } /* temporary test code for proximity sensor */ else if(value==3 && proximity_enable == OFF) { gp2a_on(gp2a,PROXIMITY); printk("[PROXIMITY] Temporary : Power ON\n"); } else if(value==2 && proximity_enable == ON) { gp2a_off(gp2a,PROXIMITY); printk("[PROXIMITY] Temporary : Power OFF\n"); } /* for factory simple test mode */ if(value==7 && light_enable == OFF) { light_init_period = 2; gp2a_on(gp2a,LIGHT); value = 7; } return size; }
static int light_open(struct inode *ip, struct file *fp) { struct gp2a_data *gp2a = dev_get_drvdata(switch_cmd_dev); gprintk("[%s] \n",__func__); gp2a_on(gp2a,LIGHT); return 0; }
static ssize_t gp2a_onoff_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { unsigned long value = simple_strtoul(buf, NULL, 10); struct gp2a_data *gp2a = dev_get_drvdata(dev); value?gp2a_on(gp2a):gp2a_off(gp2a); return size; }
static long proximity_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct gp2a_data *gp2a = dev_get_drvdata(switch_cmd_dev); int ret=0; switch(cmd) { case SHARP_GP2AP_OPEN: { if(!proximity_enable) { printk(KERN_INFO "[PROXIMITY] %s : case OPEN\n", __FUNCTION__); gp2a_on(gp2a,PROXIMITY); } else printk(KERN_INFO "[PROXIMITY] Warning!! Proximity is already power on\n"); } break; case SHARP_GP2AP_CLOSE: { if(proximity_enable) { printk(KERN_INFO "[PROXIMITY] %s : case CLOSE\n", __FUNCTION__); gp2a_off(gp2a,PROXIMITY); wake_lock_timeout(&prx_wake_lock,3 * HZ); } else printk(KERN_INFO "[PROXIMITY] Warning!! Proximity is already power off\n"); } break; default: printk(KERN_INFO "[PROXIMITY] unknown ioctl %d\n", cmd); ret = -1; break; } return ret; }
static ssize_t proxsensor_onoff_ctrl_store(struct device *dev, struct device_attribute *attr, char *buf, size_t size) { struct gp2a_data *gp2a = dev_get_drvdata(switch_cmd_dev); unsigned int onoff; int ret = 0; sscanf(buf,"%d\n",&onoff); printk("Set Proximity Sensor OnOff : %d\n",onoff); if(onoff == 1) { ret = gp2a_on(gp2a,PROXIMITY); if(ret == 0) proximity_enable =1; } else { ret = gp2a_off(gp2a,PROXIMITY); if(ret == 0) proximity_enable =0; } return size; }
static ssize_t lightsensor_file_cmd_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { struct gp2a_data *gp2a = dev_get_drvdata(dev); int value; sscanf(buf, "%d", &value); int ret; printk(KERN_INFO "[LIGHT_SENSOR] in lightsensor_file_cmd_store, input value = %d, light_enable = %d \n",value, light_enable); switch(value){ // iamaj add case 8, 9 for enable light sensor without autobrightness #ifdef LIGHT_SENSOR_ENABLED case 0 : { if(light_enable == ON) { gp2a_off(gp2a,LIGHT); //Light sensor is always on } lightsensor_test = 0; value = OFF; printk(KERN_INFO "[LIGHT_SENSOR] *#0589# test end, input value = %d \n",value); break; } case 1 : { if(light_enable == OFF) { gp2a_on(gp2a,LIGHT); //Light sensor is always on } lightsensor_test = 1; value = ON; printk(KERN_INFO "[LIGHT_SENSOR] *#0589# test start, input value = %d \n",value); break; } #endif /* temporary test code for proximity sensor */ case 2 : { if(proximity_enable == ON) { ret = gp2a_off(gp2a,PROXIMITY); if(ret==0) proximity_enable =0; printk("[PROXIMITY] Temporary : Power OFF\n"); } break; } case 3 : { if(proximity_enable == OFF){ ret = gp2a_on(gp2a,PROXIMITY); if(ret==0) proximity_enable =1; printk("[PROXIMITY] Temporary : Power ON\n"); } break; } #ifdef LIGHT_SENSOR_ENABLED case 7 : { if(light_enable == OFF) { light_init_period = 2; gp2a_on(gp2a,LIGHT); value = 7; } break; } #endif default : break; } return size; }