iio: ak8975: minor fixes
Fixes code duplication, return of function. Check client->irq properly when setting up optional irq handler. Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-by: Hartmut Knaack <knaack.h@gmx.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
56ae98a205
commit
71222bf541
1 changed files with 14 additions and 21 deletions
|
@ -64,10 +64,10 @@
|
||||||
#define AK8975_REG_CNTL 0x0A
|
#define AK8975_REG_CNTL 0x0A
|
||||||
#define AK8975_REG_CNTL_MODE_SHIFT 0
|
#define AK8975_REG_CNTL_MODE_SHIFT 0
|
||||||
#define AK8975_REG_CNTL_MODE_MASK (0xF << AK8975_REG_CNTL_MODE_SHIFT)
|
#define AK8975_REG_CNTL_MODE_MASK (0xF << AK8975_REG_CNTL_MODE_SHIFT)
|
||||||
#define AK8975_REG_CNTL_MODE_POWER_DOWN 0
|
#define AK8975_REG_CNTL_MODE_POWER_DOWN 0x00
|
||||||
#define AK8975_REG_CNTL_MODE_ONCE 1
|
#define AK8975_REG_CNTL_MODE_ONCE 0x01
|
||||||
#define AK8975_REG_CNTL_MODE_SELF_TEST 8
|
#define AK8975_REG_CNTL_MODE_SELF_TEST 0x08
|
||||||
#define AK8975_REG_CNTL_MODE_FUSE_ROM 0xF
|
#define AK8975_REG_CNTL_MODE_FUSE_ROM 0x0F
|
||||||
|
|
||||||
#define AK8975_REG_RSVC 0x0B
|
#define AK8975_REG_RSVC 0x0B
|
||||||
#define AK8975_REG_ASTC 0x0C
|
#define AK8975_REG_ASTC 0x0C
|
||||||
|
@ -166,8 +166,8 @@ static int ak8975_setup_irq(struct ak8975_data *data)
|
||||||
irq = gpio_to_irq(data->eoc_gpio);
|
irq = gpio_to_irq(data->eoc_gpio);
|
||||||
|
|
||||||
rc = devm_request_irq(&client->dev, irq, ak8975_irq_handler,
|
rc = devm_request_irq(&client->dev, irq, ak8975_irq_handler,
|
||||||
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
|
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
|
||||||
dev_name(&client->dev), data);
|
dev_name(&client->dev), data);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
dev_err(&client->dev,
|
dev_err(&client->dev,
|
||||||
"irq %d request failed, (gpio %d): %d\n",
|
"irq %d request failed, (gpio %d): %d\n",
|
||||||
|
@ -231,8 +231,12 @@ static int ak8975_setup(struct i2c_client *client)
|
||||||
AK8975_REG_CNTL_MODE_POWER_DOWN,
|
AK8975_REG_CNTL_MODE_POWER_DOWN,
|
||||||
AK8975_REG_CNTL_MODE_MASK,
|
AK8975_REG_CNTL_MODE_MASK,
|
||||||
AK8975_REG_CNTL_MODE_SHIFT);
|
AK8975_REG_CNTL_MODE_SHIFT);
|
||||||
|
if (ret < 0) {
|
||||||
|
dev_err(&client->dev, "Error in setting power-down mode\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
if (data->eoc_gpio > 0 || client->irq) {
|
if (data->eoc_gpio > 0 || client->irq > 0) {
|
||||||
ret = ak8975_setup_irq(data);
|
ret = ak8975_setup_irq(data);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&client->dev,
|
dev_err(&client->dev,
|
||||||
|
@ -241,11 +245,6 @@ static int ak8975_setup(struct i2c_client *client)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret < 0) {
|
|
||||||
dev_err(&client->dev, "Error in setting power-down mode\n");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Precalculate scale factor (in Gauss units) for each axis and
|
* Precalculate scale factor (in Gauss units) for each axis and
|
||||||
* store in the device data.
|
* store in the device data.
|
||||||
|
@ -550,24 +549,18 @@ static int ak8975_probe(struct i2c_client *client,
|
||||||
/* Perform some basic start-of-day setup of the device. */
|
/* Perform some basic start-of-day setup of the device. */
|
||||||
err = ak8975_setup(client);
|
err = ak8975_setup(client);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
dev_err(&client->dev, "AK8975 initialization fails\n");
|
dev_err(&client->dev, "%s initialization fails\n", name);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
data->client = client;
|
|
||||||
mutex_init(&data->lock);
|
mutex_init(&data->lock);
|
||||||
data->eoc_gpio = eoc_gpio;
|
|
||||||
indio_dev->dev.parent = &client->dev;
|
indio_dev->dev.parent = &client->dev;
|
||||||
indio_dev->channels = ak8975_channels;
|
indio_dev->channels = ak8975_channels;
|
||||||
indio_dev->num_channels = ARRAY_SIZE(ak8975_channels);
|
indio_dev->num_channels = ARRAY_SIZE(ak8975_channels);
|
||||||
indio_dev->info = &ak8975_info;
|
indio_dev->info = &ak8975_info;
|
||||||
indio_dev->modes = INDIO_DIRECT_MODE;
|
indio_dev->modes = INDIO_DIRECT_MODE;
|
||||||
indio_dev->name = name;
|
indio_dev->name = name;
|
||||||
err = devm_iio_device_register(&client->dev, indio_dev);
|
return devm_iio_device_register(&client->dev, indio_dev);
|
||||||
if (err < 0)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct i2c_device_id ak8975_id[] = {
|
static const struct i2c_device_id ak8975_id[] = {
|
||||||
|
@ -588,7 +581,7 @@ MODULE_DEVICE_TABLE(of, ak8975_of_match);
|
||||||
static struct i2c_driver ak8975_driver = {
|
static struct i2c_driver ak8975_driver = {
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "ak8975",
|
.name = "ak8975",
|
||||||
.of_match_table = ak8975_of_match,
|
.of_match_table = of_match_ptr(ak8975_of_match),
|
||||||
.acpi_match_table = ACPI_PTR(ak_acpi_match),
|
.acpi_match_table = ACPI_PTR(ak_acpi_match),
|
||||||
},
|
},
|
||||||
.probe = ak8975_probe,
|
.probe = ak8975_probe,
|
||||||
|
|
Loading…
Add table
Reference in a new issue