* [PATCH 2/2] iio: cm32181: Change cm32181 ambient light sensor driver
@ 2014-02-07 11:13 Beomho Seo
0 siblings, 0 replies; only message in thread
From: Beomho Seo @ 2014-02-07 11:13 UTC (permalink / raw)
To: linux-iio; +Cc: Jonathan Cameron, Kevin Tsai, Myungjoo Ham, Jaehoon Chung
Integration time of cm32181 is guessed about milliseconds.
But cm32181_read_als_it function return IIO_VAL_INT.
IIO_VAL_INT print integer(25000, 50000, 100000 ...).
So fixed to return IIO_VAL_INT_PLUS_MICRO.
Next, change cm32181_write_als_it and add .write_raw_get_fmt callback function
for call iio_str_to_fixpoint.
Cc: Kevin Tsai <ktsai@capellamicro.com>
Signed-off-by: Beomho Seo <beomho.seo@samsung.com>
---
drivers/iio/light/cm32181.c | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/drivers/iio/light/cm32181.c b/drivers/iio/light/cm32181.c
index f17b4e6..78d5620 100644
--- a/drivers/iio/light/cm32181.c
+++ b/drivers/iio/light/cm32181.c
@@ -103,13 +103,13 @@ static int cm32181_reg_init(struct cm32181_chip *cm32181)
/**
* cm32181_read_als_it() - Get sensor integration time (ms)
* @cm32181: pointer of struct cm32181
- * @val: pointer of int to load the als_it value.
+ * @val2: pointer of int to load the als_it value.
*
* Report the current integartion time by millisecond.
*
- * Return: IIO_VAL_INT for success, otherwise -EINVAL.
+ * Return: IIO_VAL_INT_PLUS_MICRO for success, otherwise -EINVAL.
*/
-static int cm32181_read_als_it(struct cm32181_chip *cm32181, int *val)
+static int cm32181_read_als_it(struct cm32181_chip *cm32181, int *val2)
{
u16 als_it;
int i;
@@ -119,8 +119,8 @@ static int cm32181_read_als_it(struct cm32181_chip *cm32181, int *val)
als_it >>= CM32181_CMD_ALS_IT_SHIFT;
for (i = 0; i < ARRAY_SIZE(als_it_bits); i++) {
if (als_it == als_it_bits[i]) {
- *val = als_it_value[i];
- return IIO_VAL_INT;
+ *val2 = als_it_value[i];
+ return IIO_VAL_INT_PLUS_MICRO;
}
}
@@ -136,7 +136,7 @@ static int cm32181_read_als_it(struct cm32181_chip *cm32181, int *val)
*
* Return: i2c_smbus_write_word_data command return value.
*/
-static int cm32181_write_als_it(struct cm32181_chip *cm32181, int val)
+static int cm32181_write_als_it(struct cm32181_chip *cm32181, int val2)
{
struct i2c_client *client = cm32181->client;
u16 als_it;
@@ -144,7 +144,7 @@ static int cm32181_write_als_it(struct cm32181_chip *cm32181, int val)
n = ARRAY_SIZE(als_it_value);
for (i = 0; i < n; i++)
- if (val <= als_it_value[i])
+ if (val2 <= als_it_value[i])
break;
if (i >= n)
i = n - 1;
@@ -221,7 +221,7 @@ static int cm32181_read_raw(struct iio_dev *indio_dev,
*val = cm32181->calibscale;
return IIO_VAL_INT;
case IIO_CHAN_INFO_INT_TIME:
- ret = cm32181_read_als_it(cm32181, val);
+ ret = cm32181_read_als_it(cm32181, val2);
return ret;
}
@@ -240,13 +240,20 @@ static int cm32181_write_raw(struct iio_dev *indio_dev,
cm32181->calibscale = val;
return val;
case IIO_CHAN_INFO_INT_TIME:
- ret = cm32181_write_als_it(cm32181, val);
+ ret = cm32181_write_als_it(cm32181, val2);
return ret;
}
return -EINVAL;
}
+static int cm32181_write_raw_get_fmt(struct iio_dev *indio_dev,
+ struct iio_chan_spec const *chan,
+ long mask)
+{
+ return IIO_VAL_INT_PLUS_MICRO;
+}
+
/**
* cm32181_get_it_available() - Get available ALS IT value
* @dev: pointer of struct device.
@@ -264,7 +271,7 @@ static ssize_t cm32181_get_it_available(struct device *dev,
n = ARRAY_SIZE(als_it_value);
for (i = 0, len = 0; i < n; i++)
- len += sprintf(buf + len, "%d ", als_it_value[i]);
+ len += sprintf(buf + len, "0.%06u ", als_it_value[i]);
return len + sprintf(buf + len, "\n");
}
@@ -294,6 +301,7 @@ static const struct iio_info cm32181_info = {
.driver_module = THIS_MODULE,
.read_raw = &cm32181_read_raw,
.write_raw = &cm32181_write_raw,
+ .write_raw_get_fmt = &cm32181_write_raw_get_fmt,
.attrs = &cm32181_attribute_group,
};
--
1.7.9.5
--
Best Regards,
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2014-02-07 11:13 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-07 11:13 [PATCH 2/2] iio: cm32181: Change cm32181 ambient light sensor driver Beomho Seo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.