Example #1
0
static int bma020_accelerometer_suspend( struct platform_device* pdev, pm_message_t state )
{
	printk(" %s \n",__func__); 
	bma020_set_mode( BMA020_MODE_SLEEP );

	if (bma020.state & ACC_ENABLED) 
		bma_acc_disable();
	return 0;
}
Example #2
0
void bma020_set_delay(short delay)
{
	int64_t new_delay;
	int err;

	// ms to ns
	new_delay = delay * 1000000;

//	printk("------> BMA020 from AKM : new delay = %lldns, old delay = %lldns\n",
//		    new_delay, ktime_to_ns(bma020.acc_poll_delay));
	mutex_lock(&bma020.power_lock);
	if (new_delay != ktime_to_ns(bma020.acc_poll_delay)) {
		bma_acc_disable();
		bma020.acc_poll_delay = ns_to_ktime(new_delay);
                bma020.state |= ACC_ENABLED;
		bma_acc_enable();
	}
	mutex_unlock(&bma020.power_lock);
	return;
}
Example #3
0
static ssize_t poll_delay_store(struct device *dev,struct device_attribute *attr, const char *buf, size_t size)
{
	int64_t new_delay;
	int err;

	err = strict_strtoll(buf, 10, &new_delay);
	if (err < 0)
		return err;

	printk("new delay = %lldns, old delay = %lldns\n",
		    new_delay, ktime_to_ns(bma020.acc_poll_delay));
	mutex_lock(&bma020.power_lock);
	if (new_delay != ktime_to_ns(bma020.acc_poll_delay)) {
		bma_acc_disable();
		bma020.acc_poll_delay = ns_to_ktime(new_delay);
		if (bma020.state & ACC_ENABLED) {
			bma_acc_enable();
		}
	}
	mutex_unlock(&bma020.power_lock);

	return size;
}