Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}