static ssize_t bma250_enable_interrupt(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { unsigned long enable; int error; error = strict_strtoul(buf, 10, &enable); if (error) return error; printk(KERN_INFO "[BMA250] bma250_enable_interrupt, power_key_pressed = %d\n", power_key_pressed); if(enable == 1 && !power_key_pressed){ if(gsensor_power_LPM){ I("Non Low Power Mode\n"); gsensor_power_LPM(0); } error = bma250_set_Int_Mode(g_mlsl_handle, g_pdata, 1); error += bma250_set_slope_duration(g_mlsl_handle, g_pdata, 0x01); error += bma250_set_slope_threshold(g_mlsl_handle, g_pdata, 0x07); error += bma250_set_Int_Enable(g_mlsl_handle, g_pdata,5, 1); error += bma250_set_Int_Enable(g_mlsl_handle, g_pdata,6, 1); error += bma250_set_Int_Enable(g_mlsl_handle, g_pdata,7, 0); error += bma250_set_int1_pad_sel(g_mlsl_handle, g_pdata, PAD_SLOP); error += bma250_set_mode(g_mlsl_handle, g_pdata, BMA250_MODE_NORMAL); cir_flag = 1; if (error) return error; printk(KERN_INFO "[BMA250] enable = 1 \n"); } else if(enable == 0){ error += bma250_set_Int_Enable(g_mlsl_handle, g_pdata,5, 0); error += bma250_set_Int_Enable(g_mlsl_handle, g_pdata,6, 0); error += bma250_set_Int_Enable(g_mlsl_handle, g_pdata,7, 0); power_key_pressed = 0; cir_flag = 0; if (error) return error; printk(KERN_INFO "[BMA250] enable = 0 , power_key_pressed = %d\n", power_key_pressed); } return count; }
static ssize_t bma250_enable_interrupt(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { unsigned long enable; int error; error = strict_strtoul(buf, 10, &enable); if (error) return error; I("bma250_enable_interrupt, power_key_pressed = %d\n", power_key_pressed); if(enable == 1 && !power_key_pressed){ cir_flag = 1; error = bma250_set_Int_Mode(this_client, 1); error += bma250_set_slope_duration(this_client, 0x01); error += bma250_set_slope_threshold(this_client, 0x07); error += bma250_set_Int_Enable(this_client, 5, 1); error += bma250_set_Int_Enable(this_client, 6, 1); error += bma250_set_Int_Enable(this_client, 7, 0); error += bma250_set_int1_pad_sel(this_client, PAD_SLOP); BMA_set_mode(bma250_MODE_NORMAL); if (error) return error; I("Always Ready enable = 1 \n"); } else if(enable == 0){ error += bma250_set_Int_Enable(this_client, 5, 0); error += bma250_set_Int_Enable(this_client, 6, 0); error += bma250_set_Int_Enable(this_client, 7, 0); power_key_pressed = 0; cir_flag = 0; if (error) return error; I("Always Ready enable = 0 \n"); } return count; }