|
27 | 27 | #define MXC4005_REG_ZOUT_UPPER 0x07
|
28 | 28 | #define MXC4005_REG_ZOUT_LOWER 0x08
|
29 | 29 |
|
| 30 | +#define MXC4005_REG_INT_MASK0 0x0A |
| 31 | + |
30 | 32 | #define MXC4005_REG_INT_MASK1 0x0B
|
31 | 33 | #define MXC4005_REG_INT_MASK1_BIT_DRDYE 0x01
|
32 | 34 |
|
| 35 | +#define MXC4005_REG_INT_CLR0 0x00 |
| 36 | + |
33 | 37 | #define MXC4005_REG_INT_CLR1 0x01
|
34 | 38 | #define MXC4005_REG_INT_CLR1_BIT_DRDYC 0x01
|
35 | 39 |
|
@@ -113,7 +117,9 @@ static bool mxc4005_is_readable_reg(struct device *dev, unsigned int reg)
|
113 | 117 | static bool mxc4005_is_writeable_reg(struct device *dev, unsigned int reg)
|
114 | 118 | {
|
115 | 119 | switch (reg) {
|
| 120 | + case MXC4005_REG_INT_CLR0: |
116 | 121 | case MXC4005_REG_INT_CLR1:
|
| 122 | + case MXC4005_REG_INT_MASK0: |
117 | 123 | case MXC4005_REG_INT_MASK1:
|
118 | 124 | case MXC4005_REG_CONTROL:
|
119 | 125 | return true;
|
@@ -330,17 +336,13 @@ static int mxc4005_set_trigger_state(struct iio_trigger *trig,
|
330 | 336 | {
|
331 | 337 | struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
|
332 | 338 | struct mxc4005_data *data = iio_priv(indio_dev);
|
| 339 | + unsigned int val; |
333 | 340 | int ret;
|
334 | 341 |
|
335 | 342 | mutex_lock(&data->mutex);
|
336 |
| - if (state) { |
337 |
| - ret = regmap_write(data->regmap, MXC4005_REG_INT_MASK1, |
338 |
| - MXC4005_REG_INT_MASK1_BIT_DRDYE); |
339 |
| - } else { |
340 |
| - ret = regmap_write(data->regmap, MXC4005_REG_INT_MASK1, |
341 |
| - ~MXC4005_REG_INT_MASK1_BIT_DRDYE); |
342 |
| - } |
343 | 343 |
|
| 344 | + val = state ? MXC4005_REG_INT_MASK1_BIT_DRDYE : 0; |
| 345 | + ret = regmap_write(data->regmap, MXC4005_REG_INT_MASK1, val); |
344 | 346 | if (ret < 0) {
|
345 | 347 | mutex_unlock(&data->mutex);
|
346 | 348 | dev_err(data->dev, "failed to update reg_int_mask1");
|
@@ -382,6 +384,14 @@ static int mxc4005_chip_init(struct mxc4005_data *data)
|
382 | 384 |
|
383 | 385 | dev_dbg(data->dev, "MXC4005 chip id %02x\n", reg);
|
384 | 386 |
|
| 387 | + ret = regmap_write(data->regmap, MXC4005_REG_INT_MASK0, 0); |
| 388 | + if (ret < 0) |
| 389 | + return dev_err_probe(data->dev, ret, "writing INT_MASK0\n"); |
| 390 | + |
| 391 | + ret = regmap_write(data->regmap, MXC4005_REG_INT_MASK1, 0); |
| 392 | + if (ret < 0) |
| 393 | + return dev_err_probe(data->dev, ret, "writing INT_MASK1\n"); |
| 394 | + |
385 | 395 | return 0;
|
386 | 396 | }
|
387 | 397 |
|
|
0 commit comments