static int yas_acc_resume(struct i2c_client *client)
{
    struct yas_acc_private_data *data = i2c_get_clientdata(client);
    struct yas_acc_driver *driver = data->driver;
    int delay;

    mutex_lock(&data->data_mutex);

#ifdef WILLOW_SENSOR_REGULATOR_CONTROL
    regulator_enable(data->regulator);
#endif

    if (data->suspend == 1) {
        if (data->suspend_enable) {
            delay = yas_acc_get_delay(driver);
            schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1);
            yas_acc_set_enable(driver, 1);
        }
    }
    data->suspend = 0;

    mutex_unlock(&data->data_mutex);

    return 0;
}
void yas_acc_shutdown(struct i2c_client *client)
{
    struct yas_acc_private_data *data = i2c_get_clientdata(client);
    struct yas_acc_driver *driver = data->driver;

    yas_acc_set_enable(driver, 0);
}
Example #3
0
static int yas_acc_resume(struct i2c_client *client)
{
    struct yas_acc_private_data *data = i2c_get_clientdata(client);
    struct yas_acc_driver *driver = data->driver;
    int delay;

	dbg_func_in();
#ifdef POWER_ON_OFF
	geomagnetic_set_power(1);
#endif

#ifndef PANTECH_AVOID_DEADLOCK
    mutex_lock(&data->data_mutex);
#endif

	dbg("%s : data->suspend = %d / data->suspend_enable = %d / delay = %d\n", __func__, data->suspend, yas_acc_get_enable(driver), yas_acc_get_delay(driver));

    if (data->suspend == 1) {
        if (data->suspend_enable) {
            delay = yas_acc_get_delay(driver);
#ifndef PANTECH_AVOID_DEADLOCK
            schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1);
#endif
            yas_acc_set_enable(driver, 1);
        }
    }
    data->suspend = 0;

#ifndef PANTECH_AVOID_DEADLOCK
    mutex_unlock(&data->data_mutex);
#endif
	dbg_func_out();

    return 0;
}
Example #4
0
static int yas_acc_suspend(struct i2c_client *client, pm_message_t mesg)
{
    struct yas_acc_private_data *data = i2c_get_clientdata(client);
    struct yas_acc_driver *driver = data->driver;

	dbg_func_in();

	dbg("%s : data->suspend = %d / data->suspend_enable = %d\n", __func__, data->suspend, yas_acc_get_enable(driver));

#ifndef PANTECH_AVOID_DEADLOCK
    mutex_lock(&data->data_mutex);
#endif

    if (data->suspend == 0) {
        data->suspend_enable = yas_acc_get_enable(driver);
        if (data->suspend_enable) {
#ifndef PANTECH_AVOID_DEADLOCK
            cancel_delayed_work_sync(&data->work);
#endif
            yas_acc_set_enable(driver, 0);
        }
    }
    data->suspend = 1;
	
#ifndef PANTECH_AVOID_DEADLOCK
    mutex_unlock(&data->data_mutex);
#endif

#ifdef POWER_ON_OFF
	geomagnetic_set_power(0);
#endif
	dbg_func_out();

    return 0;
}
Example #5
0
static int yas_acc_close(struct inode *inode, struct file *file)
{
	int err= 0 ;
	printk("yac_acc_close\n");
	struct yas_acc_private_data* data = gyas_acc;
	err = yas_acc_set_enable(data->driver, 0);

	return err;
}
static ssize_t yas_acc_enable_store(struct device *dev,
                                    struct device_attribute *attr,
                                    const char *buf,
                                    size_t count)
{
    struct input_dev *input = to_input_dev(dev);
    struct yas_acc_private_data *data = input_get_drvdata(input);
    unsigned long enable = simple_strtoul(buf, NULL, 10);
    yas_acc_set_enable(data->driver, enable);

    return count;
}
Example #7
0
static int yas_acc_open(struct inode *inode, struct file *file)
{
	int err= 0 ;
	//struct yas_acc_private_data* data = container_of(file -> private_data,
	//											struct yas_acc_private_data,
	//											yas_acc_device);
	printk("yac_acc_open\n");
	struct yas_acc_private_data* data = gyas_acc;
	err = yas_acc_set_enable(data->driver, 1);
	file -> private_data = data;
	return err;
}
static int yas_acc_remove(struct i2c_client *client)
{
    struct yas_acc_private_data *data = i2c_get_clientdata(client);
    struct yas_acc_driver *driver = data->driver;

    yas_acc_set_enable(driver, 0);
    sysfs_remove_group(&data->input->dev.kobj, &yas_acc_attribute_group);
    yas_acc_input_fini(data);
    yas_acc_core_driver_fini(data);
    kfree(data);

    return 0;
}
Example #9
0
static int bma222_exit_proc()
{

  struct yas_acc_private_data *data = yas_acc_get_data();
  struct yas_acc_driver *driver = data->driver;
	
#if defined(CONFIG_HAS_EARLYSUSPEND)
		unregister_early_suspend(&data->early_suspend);
#endif

    yas_acc_set_enable(driver, 0);
    sysfs_remove_group(&data->input->dev.kobj, &yas_acc_attribute_group);
    yas_acc_input_fini(data);
    yas_acc_core_driver_fini(data);
    kfree(data);	

    return 0;
}
static int yas_acc_remove(struct i2c_client *client)
{
    struct yas_acc_private_data *data = i2c_get_clientdata(client);
    struct yas_acc_driver *driver = data->driver;

#ifdef CONIFG_HAS_EARLYSUSPEND
    unregister_early_suspend(&data->early_suspend);
#endif
    yas_acc_set_enable(driver, 0);
    sysfs_remove_group(&data->input->dev.kobj, &yas_acc_attribute_group);
    yas_acc_input_fini(data);
    yas_acc_core_driver_fini(data);
#ifdef WILLOW_SENSOR_REGULATOR_CONTROL
    regulator_disable(data->regulator);
#endif
    kfree(data);

    return 0;
}
static int yas_acc_suspend(struct i2c_client *client, pm_message_t mesg)
{
    struct yas_acc_private_data *data = i2c_get_clientdata(client);
    struct yas_acc_driver *driver = data->driver;

    mutex_lock(&data->data_mutex);

    if (data->suspend == 0) {
        data->suspend_enable = yas_acc_get_enable(driver);
        if (data->suspend_enable) {
            cancel_delayed_work_sync(&data->work);
            yas_acc_set_enable(driver, 0);
        }
    }
    data->suspend = 1;

    mutex_unlock(&data->data_mutex);

    return 0;
}
static int yas_acc_resume(struct i2c_client *client)
{
    struct yas_acc_private_data *data = i2c_get_clientdata(client);
    struct yas_acc_driver *driver = data->driver;
    int delay;

    mutex_lock(&data->data_mutex);

    if (data->suspend == 1) {
        if (data->suspend_enable) {
            delay = yas_acc_get_delay(driver);
            schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1);
            yas_acc_set_enable(driver, 1);
        }
    }
    data->suspend = 0;

    mutex_unlock(&data->data_mutex);

    return 0;
}
void yas_acc_late_resume(struct early_suspend *h)
{
    struct yas_acc_private_data *data =
        container_of(h, struct yas_acc_private_data, early_suspend);
    struct yas_acc_driver *driver = data->driver;
    int delay;

#ifdef WILLOW_SENSOR_REGULATOR_CONTROL
    regulator_enable(data->regulator);
#endif

    mutex_lock(&data->data_mutex);

    if (data->suspend == 1) {
        if (data->suspend_enable) {
            delay = yas_acc_get_delay(driver);
            schedule_delayed_work(&data->work, delay_to_jiffies(delay) + 1);
            yas_acc_set_enable(driver,1);
        }
    }
    data->suspend = 0;
    mutex_unlock(&data->data_mutex);
}
void yas_acc_early_suspend(struct early_suspend *h)
{
    struct yas_acc_private_data *data =
        container_of(h, struct yas_acc_private_data, early_suspend);
    struct yas_acc_driver *driver = data->driver;

    mutex_lock(&data->data_mutex);

    if (data->suspend == 0) {
        data->suspend_enable = yas_acc_get_enable(driver);
        if (data->suspend_enable) {
            cancel_delayed_work_sync(&data->work);
            yas_acc_set_enable(driver, 0);
        }
    }
    data->suspend = 1;
    mutex_unlock(&data->data_mutex);

#ifdef WILLOW_SENSOR_REGULATOR_CONTROL
    regulator_disable(data->regulator);
#endif

}
static int yas_acc_suspend(struct i2c_client *client, pm_message_t mesg)
{
    struct yas_acc_private_data *data = i2c_get_clientdata(client);
    struct yas_acc_driver *driver = data->driver;

    mutex_lock(&data->data_mutex);

#ifdef WILLOW_SENSOR_REGULATOR_CONTROL
    regulator_disable(data->regulator);
#endif

    if (data->suspend == 0) {
        data->suspend_enable = yas_acc_get_enable(driver);
        if (data->suspend_enable) {
            cancel_delayed_work_sync(&data->work);
            yas_acc_set_enable(driver, 0);
        }
    }
    data->suspend = 1;

    mutex_unlock(&data->data_mutex);

    return 0;
}