示例#1
0
static int mma8452_change_config(struct mma8452_data *data, u8 reg, u8 val)
{
    int ret;

    mutex_lock(&data->lock);

    /* config can only be changed when in standby */
    ret = mma8452_standby(data);
    if (ret < 0)
        goto fail;

    ret = i2c_smbus_write_byte_data(data->client, reg, val);
    if (ret < 0)
        goto fail;

    ret = mma8452_active(data);
    if (ret < 0)
        goto fail;

    ret = 0;
fail:
    mutex_unlock(&data->lock);

    return ret;
}
示例#2
0
文件: mma8452.c 项目: 168519/linux
static int mma8452_remove(struct i2c_client *client)
{
	struct iio_dev *indio_dev = i2c_get_clientdata(client);

	iio_device_unregister(indio_dev);
	iio_triggered_buffer_cleanup(indio_dev);
	mma8452_standby(iio_priv(indio_dev));

	return 0;
}
示例#3
0
文件: mma8452.c 项目: 513855417/linux
static int mma8452_runtime_suspend(struct device *dev)
{
	struct iio_dev *indio_dev = i2c_get_clientdata(to_i2c_client(dev));
	struct mma8452_data *data = iio_priv(indio_dev);
	int ret;

	mutex_lock(&data->lock);
	ret = mma8452_standby(data);
	mutex_unlock(&data->lock);
	if (ret < 0) {
		dev_err(&data->client->dev, "powering off device failed\n");
		return -EAGAIN;
	}

	return 0;
}
示例#4
0
文件: mma8452.c 项目: 513855417/linux
static int mma8452_remove(struct i2c_client *client)
{
	struct iio_dev *indio_dev = i2c_get_clientdata(client);

	iio_device_unregister(indio_dev);

	pm_runtime_disable(&client->dev);
	pm_runtime_set_suspended(&client->dev);
	pm_runtime_put_noidle(&client->dev);

	iio_triggered_buffer_cleanup(indio_dev);
	mma8452_trigger_cleanup(indio_dev);
	mma8452_standby(iio_priv(indio_dev));

	return 0;
}
示例#5
0
文件: mma8452.c 项目: 168519/linux
static int mma8452_suspend(struct device *dev)
{
	return mma8452_standby(iio_priv(i2c_get_clientdata(
		to_i2c_client(dev))));
}