* [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors
@ 2015-04-14 13:37 Daniel Baluta
2015-04-14 13:37 ` [PATCH v7 1/2] iio: ltr501: Add support for ltr559 chip Daniel Baluta
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Daniel Baluta @ 2015-04-14 13:37 UTC (permalink / raw)
To: jic23
Cc: sathyanarayanan.kuppuswamy, pmeerw, linux-iio,
srinivas.pandruvada, daniel.baluta
This patchset adds support for LiteOn LTR301 ambient light sensor
and LTR559 ambient light and proximity sensor.
v7:
1. Rebase LTR-301 on top of LTR-559 and merged the patches into a single patchset
2. Moved ltr501_chip_info_tbl below ltr501_info in patch 1 in order
to make patch 2 changes look natural. :)
3. Moved "else" branch of id check from patch 2 to patch 1. Now it is no
longer possible to have a NULL name after this check. If id is not NULL
than id->name is one of ltr501_id already defined strings.
v6:
1. Changed the title in commit log
v5:
1. Rebased this patch on top of Daniel's LTR559 patchset
(http://marc.info/?l=linux-kernel&m=142779827617036&w=2)
2. Added info and channel members to chip_info struture.
v4:
1. Addressed minor comments from Peter Meerwald
2. Changed invalid chip id errno from ENOSYS to ENODEV
3. Fixed channel id index number
4. Removed unused variable.
v3:
1. Sent v2 before by mistake. So sending the final version of v2 as v3.
v2:
1. Handled device id NULL case in probe
2. Changed pr_warn to dev_warn
v1:
Extended LTR501 driver to support both LTR301 and LTR501 device.
Daniel Baluta (1):
iio: ltr501: Add support for ltr559 chip
Kuppuswamy Sathyanarayanan (1):
iio: ltr501: Add support for ltr301
drivers/iio/light/Kconfig | 3 +-
drivers/iio/light/ltr501.c | 240 ++++++++++++++++++++++++++++++++++++++-------
2 files changed, 209 insertions(+), 34 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v7 1/2] iio: ltr501: Add support for ltr559 chip
2015-04-14 13:37 [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors Daniel Baluta
@ 2015-04-14 13:37 ` Daniel Baluta
2015-04-14 13:37 ` [PATCH v7 2/2] iio: ltr501: Add support for ltr301 Daniel Baluta
2015-04-19 13:04 ` [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors Jonathan Cameron
2 siblings, 0 replies; 6+ messages in thread
From: Daniel Baluta @ 2015-04-14 13:37 UTC (permalink / raw)
To: jic23
Cc: sathyanarayanan.kuppuswamy, pmeerw, linux-iio,
srinivas.pandruvada, daniel.baluta
This device is register compatible with LTR501, with a minor difference for
ALS control register as showed below:
ALS Control register for LTR501:
7 6 5 4 3 2 1 0
+------+------+------+------+------+------+------+------+
| | | | |
| Reserved | Gain | SW | ALS Mode |
| | | Reset| |
+------+------+------+------+------+------+------+------+
ALS Control register for LTR559:
7 6 5 4 3 2 1 0
+------+------+------+------+------+------+------+------+
| | | | |
| Reserved | Gain | SW | ALS |
| | | Reset| Mode |
+------+------+------+------+------+------+------+------+
We handle this difference by introducing ltr501_chip_info.
Datasheet for LTR559 is at:
http://optoelectronics.liteon.com/upload/download/DS86-2013-0003/S_110_LTR-559ALS-01_DS_V1.pdf
Signed-off-by: Daniel Baluta <daniel.baluta@intel.com>
---
drivers/iio/light/Kconfig | 3 +-
drivers/iio/light/ltr501.c | 199 +++++++++++++++++++++++++++++++++++++--------
2 files changed, 168 insertions(+), 34 deletions(-)
diff --git a/drivers/iio/light/Kconfig b/drivers/iio/light/Kconfig
index 01a1a16..16a0ba1 100644
--- a/drivers/iio/light/Kconfig
+++ b/drivers/iio/light/Kconfig
@@ -169,7 +169,8 @@ config LTR501
select IIO_TRIGGERED_BUFFER
help
If you say yes here you get support for the Lite-On LTR-501ALS-01
- ambient light and proximity sensor.
+ ambient light and proximity sensor. This driver also supports LTR-559
+ ALS/PS sensor.
This driver can also be built as a module. If so, the module
will be called ltr501.
diff --git a/drivers/iio/light/ltr501.c b/drivers/iio/light/ltr501.c
index f208c98..55ccd5c 100644
--- a/drivers/iio/light/ltr501.c
+++ b/drivers/iio/light/ltr501.c
@@ -45,9 +45,63 @@
#define LTR501_PS_DATA_MASK 0x7ff
+#define LTR501_RESERVED_GAIN -1
+
+enum {
+ ltr501 = 0,
+ ltr559,
+};
+
+struct ltr501_gain {
+ int scale;
+ int uscale;
+};
+
+static struct ltr501_gain ltr501_als_gain_tbl[] = {
+ {1, 0},
+ {0, 5000},
+};
+
+static struct ltr501_gain ltr559_als_gain_tbl[] = {
+ {1, 0},
+ {0, 500000},
+ {0, 250000},
+ {0, 125000},
+ {LTR501_RESERVED_GAIN, LTR501_RESERVED_GAIN},
+ {LTR501_RESERVED_GAIN, LTR501_RESERVED_GAIN},
+ {0, 20000},
+ {0, 10000},
+};
+
+static struct ltr501_gain ltr501_ps_gain_tbl[] = {
+ {1, 0},
+ {0, 250000},
+ {0, 125000},
+ {0, 62500},
+};
+
+static struct ltr501_gain ltr559_ps_gain_tbl[] = {
+ {0, 62500}, /* x16 gain */
+ {0, 31250}, /* x32 gain */
+ {0, 15625}, /* bits X1 are for x64 gain */
+ {0, 15624},
+};
+
+struct ltr501_chip_info {
+ u8 chip_id;
+ struct ltr501_gain *als_gain;
+ int als_gain_tbl_size;
+ struct ltr501_gain *ps_gain;
+ int ps_gain_tbl_size;
+ u8 als_mode_active;
+ u8 als_gain_mask;
+ u8 als_gain_shift;
+};
+
struct ltr501_data {
struct i2c_client *client;
struct mutex lock_als, lock_ps;
+ struct ltr501_chip_info *chip_info;
u8 als_contr, ps_contr;
};
@@ -125,10 +179,6 @@ static const struct iio_chan_spec ltr501_channels[] = {
IIO_CHAN_SOFT_TIMESTAMP(3),
};
-static const int ltr501_ps_gain[4][2] = {
- {1, 0}, {0, 250000}, {0, 125000}, {0, 62500}
-};
-
static int ltr501_read_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int *val, int *val2, long mask)
@@ -166,20 +216,16 @@ static int ltr501_read_raw(struct iio_dev *indio_dev,
case IIO_CHAN_INFO_SCALE:
switch (chan->type) {
case IIO_INTENSITY:
- if (data->als_contr & LTR501_CONTR_ALS_GAIN_MASK) {
- *val = 0;
- *val2 = 5000;
- return IIO_VAL_INT_PLUS_MICRO;
- } else {
- *val = 1;
- *val2 = 0;
- return IIO_VAL_INT;
- }
+ i = (data->als_contr & data->chip_info->als_gain_mask)
+ >> data->chip_info->als_gain_shift;
+ *val = data->chip_info->als_gain[i].scale;
+ *val2 = data->chip_info->als_gain[i].uscale;
+ return IIO_VAL_INT_PLUS_MICRO;
case IIO_PROXIMITY:
i = (data->ps_contr & LTR501_CONTR_PS_GAIN_MASK) >>
LTR501_CONTR_PS_GAIN_SHIFT;
- *val = ltr501_ps_gain[i][0];
- *val2 = ltr501_ps_gain[i][1];
+ *val = data->chip_info->ps_gain[i].scale;
+ *val2 = data->chip_info->ps_gain[i].uscale;
return IIO_VAL_INT_PLUS_MICRO;
default:
return -EINVAL;
@@ -188,12 +234,13 @@ static int ltr501_read_raw(struct iio_dev *indio_dev,
return -EINVAL;
}
-static int ltr501_get_ps_gain_index(int val, int val2)
+static int ltr501_get_gain_index(struct ltr501_gain *gain, int size,
+ int val, int val2)
{
int i;
- for (i = 0; i < ARRAY_SIZE(ltr501_ps_gain); i++)
- if (val == ltr501_ps_gain[i][0] && val2 == ltr501_ps_gain[i][1])
+ for (i = 0; i < size; i++)
+ if (val == gain[i].scale && val2 == gain[i].uscale)
return i;
return -1;
@@ -204,6 +251,7 @@ static int ltr501_write_raw(struct iio_dev *indio_dev,
int val, int val2, long mask)
{
struct ltr501_data *data = iio_priv(indio_dev);
+ struct ltr501_chip_info *info = data->chip_info;
int i;
if (iio_buffer_enabled(indio_dev))
@@ -213,17 +261,20 @@ static int ltr501_write_raw(struct iio_dev *indio_dev,
case IIO_CHAN_INFO_SCALE:
switch (chan->type) {
case IIO_INTENSITY:
- if (val == 0 && val2 == 5000)
- data->als_contr |= LTR501_CONTR_ALS_GAIN_MASK;
- else if (val == 1 && val2 == 0)
- data->als_contr &= ~LTR501_CONTR_ALS_GAIN_MASK;
- else
+ i = ltr501_get_gain_index(info->als_gain,
+ info->als_gain_tbl_size,
+ val, val2);
+ if (i < 0)
return -EINVAL;
+ data->als_contr &= ~info->als_gain_mask;
+ data->als_contr |= i << info->als_gain_shift;
return i2c_smbus_write_byte_data(data->client,
LTR501_ALS_CONTR,
data->als_contr);
case IIO_PROXIMITY:
- i = ltr501_get_ps_gain_index(val, val2);
+ i = ltr501_get_gain_index(info->ps_gain,
+ info->ps_gain_tbl_size,
+ val, val2);
if (i < 0)
return -EINVAL;
data->ps_contr &= ~LTR501_CONTR_PS_GAIN_MASK;
@@ -238,12 +289,58 @@ static int ltr501_write_raw(struct iio_dev *indio_dev,
return -EINVAL;
}
-static IIO_CONST_ATTR(in_proximity_scale_available, "1 0.25 0.125 0.0625");
-static IIO_CONST_ATTR(in_intensity_scale_available, "1 0.005");
+static ssize_t ltr501_show_proximity_scale_avail(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ struct ltr501_data *data = iio_priv(dev_to_iio_dev(dev));
+ struct ltr501_chip_info *info = data->chip_info;
+ ssize_t len = 0;
+ int i;
+
+ for (i = 0; i < info->ps_gain_tbl_size; i++) {
+ if (info->ps_gain[i].scale == LTR501_RESERVED_GAIN)
+ continue;
+ len += scnprintf(buf + len, PAGE_SIZE - len, "%d.%06d ",
+ info->ps_gain[i].scale,
+ info->ps_gain[i].uscale);
+ }
+
+ buf[len - 1] = '\n';
+
+ return len;
+}
+
+static ssize_t ltr501_show_intensity_scale_avail(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ struct ltr501_data *data = iio_priv(dev_to_iio_dev(dev));
+ struct ltr501_chip_info *info = data->chip_info;
+ ssize_t len = 0;
+ int i;
+
+ for (i = 0; i < info->als_gain_tbl_size; i++) {
+ if (info->als_gain[i].scale == LTR501_RESERVED_GAIN)
+ continue;
+ len += scnprintf(buf + len, PAGE_SIZE - len, "%d.%06d ",
+ info->als_gain[i].scale,
+ info->als_gain[i].uscale);
+ }
+
+ buf[len - 1] = '\n';
+
+ return len;
+}
+
+static IIO_DEVICE_ATTR(in_proximity_scale_available, S_IRUGO,
+ ltr501_show_proximity_scale_avail, NULL, 0);
+static IIO_DEVICE_ATTR(in_intensity_scale_available, S_IRUGO,
+ ltr501_show_intensity_scale_avail, NULL, 0);
static struct attribute *ltr501_attributes[] = {
- &iio_const_attr_in_proximity_scale_available.dev_attr.attr,
- &iio_const_attr_in_intensity_scale_available.dev_attr.attr,
+ &iio_dev_attr_in_proximity_scale_available.dev_attr.attr,
+ &iio_dev_attr_in_intensity_scale_available.dev_attr.attr,
NULL
};
@@ -258,6 +355,29 @@ static const struct iio_info ltr501_info = {
.driver_module = THIS_MODULE,
};
+static struct ltr501_chip_info ltr501_chip_info_tbl[] = {
+ [ltr501] = {
+ .chip_id = 0x08,
+ .als_gain = ltr501_als_gain_tbl,
+ .als_gain_tbl_size = ARRAY_SIZE(ltr501_als_gain_tbl),
+ .ps_gain = ltr501_ps_gain_tbl,
+ .ps_gain_tbl_size = ARRAY_SIZE(ltr501_ps_gain_tbl),
+ .als_mode_active = BIT(0) | BIT(1),
+ .als_gain_mask = BIT(3),
+ .als_gain_shift = 3,
+ },
+ [ltr559] = {
+ .chip_id = 0x09,
+ .als_gain = ltr559_als_gain_tbl,
+ .als_gain_tbl_size = ARRAY_SIZE(ltr559_als_gain_tbl),
+ .ps_gain = ltr559_ps_gain_tbl,
+ .ps_gain_tbl_size = ARRAY_SIZE(ltr559_ps_gain_tbl),
+ .als_mode_active = BIT(1),
+ .als_gain_mask = BIT(2) | BIT(3) | BIT(4),
+ .als_gain_shift = 2,
+ },
+};
+
static int ltr501_write_contr(struct i2c_client *client, u8 als_val, u8 ps_val)
{
int ret = i2c_smbus_write_byte_data(client, LTR501_ALS_CONTR, als_val);
@@ -326,7 +446,7 @@ static int ltr501_init(struct ltr501_data *data)
ret = i2c_smbus_read_byte_data(data->client, LTR501_ALS_CONTR);
if (ret < 0)
return ret;
- data->als_contr = ret | LTR501_CONTR_ACTIVE;
+ data->als_contr = ret | data->chip_info->als_mode_active;
ret = i2c_smbus_read_byte_data(data->client, LTR501_PS_CONTR);
if (ret < 0)
@@ -340,7 +460,7 @@ static int ltr501_init(struct ltr501_data *data)
static int ltr501_powerdown(struct ltr501_data *data)
{
return ltr501_write_contr(data->client,
- data->als_contr & ~LTR501_CONTR_ACTIVE,
+ data->als_contr & ~data->chip_info->als_mode_active,
data->ps_contr & ~LTR501_CONTR_ACTIVE);
}
@@ -349,6 +469,8 @@ static int ltr501_probe(struct i2c_client *client,
{
struct ltr501_data *data;
struct iio_dev *indio_dev;
+ const char *name = NULL;
+ int chip_id;
int ret;
indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
@@ -361,17 +483,27 @@ static int ltr501_probe(struct i2c_client *client,
mutex_init(&data->lock_als);
mutex_init(&data->lock_ps);
+ /* TODO: Add condition for ACPI */
+ if (id) {
+ name = id->name;
+ chip_id = id->driver_data;
+ } else {
+ return -ENODEV;
+ }
+
+ data->chip_info = <r501_chip_info_tbl[chip_id];
+
ret = i2c_smbus_read_byte_data(data->client, LTR501_PART_ID);
if (ret < 0)
return ret;
- if ((ret >> 4) != 0x8)
+ if ((ret >> 4) != data->chip_info->chip_id)
return -ENODEV;
indio_dev->dev.parent = &client->dev;
indio_dev->info = <r501_info;
indio_dev->channels = ltr501_channels;
indio_dev->num_channels = ARRAY_SIZE(ltr501_channels);
- indio_dev->name = LTR501_DRV_NAME;
+ indio_dev->name = name;
indio_dev->modes = INDIO_DIRECT_MODE;
ret = ltr501_init(data);
@@ -428,7 +560,8 @@ static int ltr501_resume(struct device *dev)
static SIMPLE_DEV_PM_OPS(ltr501_pm_ops, ltr501_suspend, ltr501_resume);
static const struct i2c_device_id ltr501_id[] = {
- { "ltr501", 0 },
+ { "ltr501", ltr501},
+ { "ltr559", ltr559},
{ }
};
MODULE_DEVICE_TABLE(i2c, ltr501_id);
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v7 2/2] iio: ltr501: Add support for ltr301
2015-04-14 13:37 [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors Daniel Baluta
2015-04-14 13:37 ` [PATCH v7 1/2] iio: ltr501: Add support for ltr559 chip Daniel Baluta
@ 2015-04-14 13:37 ` Daniel Baluta
2015-04-19 13:04 ` [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors Jonathan Cameron
2 siblings, 0 replies; 6+ messages in thread
From: Daniel Baluta @ 2015-04-14 13:37 UTC (permalink / raw)
To: jic23
Cc: sathyanarayanan.kuppuswamy, pmeerw, linux-iio,
srinivas.pandruvada, daniel.baluta
From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Added support for Liteon 301 Ambient light sensor. Since
LTR-301 and LTR-501 are register compatible(and even have same
part id), LTR-501 driver has been extended to support both
devices. LTR-501 is similar to LTR-301 in ALS sensing, But the
only difference is, LTR-501 also supports proximity sensing.
LTR-501 - ALS + Proximity combo
LTR-301 - ALS sensor.
Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
---
drivers/iio/light/Kconfig | 2 +-
drivers/iio/light/ltr501.c | 45 +++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/drivers/iio/light/Kconfig b/drivers/iio/light/Kconfig
index 16a0ba1..a437bad 100644
--- a/drivers/iio/light/Kconfig
+++ b/drivers/iio/light/Kconfig
@@ -170,7 +170,7 @@ config LTR501
help
If you say yes here you get support for the Lite-On LTR-501ALS-01
ambient light and proximity sensor. This driver also supports LTR-559
- ALS/PS sensor.
+ ALS/PS or LTR-301 ALS sensors.
This driver can also be built as a module. If so, the module
will be called ltr501.
diff --git a/drivers/iio/light/ltr501.c b/drivers/iio/light/ltr501.c
index 55ccd5c..2cb6fa7 100644
--- a/drivers/iio/light/ltr501.c
+++ b/drivers/iio/light/ltr501.c
@@ -50,6 +50,7 @@
enum {
ltr501 = 0,
ltr559,
+ ltr301,
};
struct ltr501_gain {
@@ -96,6 +97,8 @@ struct ltr501_chip_info {
u8 als_mode_active;
u8 als_gain_mask;
u8 als_gain_shift;
+ struct iio_chan_spec const *channels;
+ const struct iio_info *info;
};
struct ltr501_data {
@@ -179,6 +182,13 @@ static const struct iio_chan_spec ltr501_channels[] = {
IIO_CHAN_SOFT_TIMESTAMP(3),
};
+static const struct iio_chan_spec ltr301_channels[] = {
+ LTR501_INTENSITY_CHANNEL(0, LTR501_ALS_DATA0, IIO_MOD_LIGHT_BOTH, 0),
+ LTR501_INTENSITY_CHANNEL(1, LTR501_ALS_DATA1, IIO_MOD_LIGHT_IR,
+ BIT(IIO_CHAN_INFO_SCALE)),
+ IIO_CHAN_SOFT_TIMESTAMP(2),
+};
+
static int ltr501_read_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int *val, int *val2, long mask)
@@ -344,10 +354,19 @@ static struct attribute *ltr501_attributes[] = {
NULL
};
+static struct attribute *ltr301_attributes[] = {
+ &iio_dev_attr_in_intensity_scale_available.dev_attr.attr,
+ NULL
+};
+
static const struct attribute_group ltr501_attribute_group = {
.attrs = ltr501_attributes,
};
+static const struct attribute_group ltr301_attribute_group = {
+ .attrs = ltr301_attributes,
+};
+
static const struct iio_info ltr501_info = {
.read_raw = ltr501_read_raw,
.write_raw = ltr501_write_raw,
@@ -355,6 +374,13 @@ static const struct iio_info ltr501_info = {
.driver_module = THIS_MODULE,
};
+static const struct iio_info ltr301_info = {
+ .read_raw = ltr501_read_raw,
+ .write_raw = ltr501_write_raw,
+ .attrs = <r301_attribute_group,
+ .driver_module = THIS_MODULE,
+};
+
static struct ltr501_chip_info ltr501_chip_info_tbl[] = {
[ltr501] = {
.chip_id = 0x08,
@@ -365,6 +391,8 @@ static struct ltr501_chip_info ltr501_chip_info_tbl[] = {
.als_mode_active = BIT(0) | BIT(1),
.als_gain_mask = BIT(3),
.als_gain_shift = 3,
+ .info = <r501_info,
+ .channels = ltr501_channels,
},
[ltr559] = {
.chip_id = 0x09,
@@ -375,6 +403,18 @@ static struct ltr501_chip_info ltr501_chip_info_tbl[] = {
.als_mode_active = BIT(1),
.als_gain_mask = BIT(2) | BIT(3) | BIT(4),
.als_gain_shift = 2,
+ .info = <r501_info,
+ .channels = ltr501_channels,
+ },
+ [ltr301] = {
+ .chip_id = 0x08,
+ .als_gain = ltr501_als_gain_tbl,
+ .als_gain_tbl_size = ARRAY_SIZE(ltr501_als_gain_tbl),
+ .als_mode_active = BIT(0) | BIT(1),
+ .als_gain_mask = BIT(3),
+ .als_gain_shift = 3,
+ .info = <r301_info,
+ .channels = ltr301_channels,
},
};
@@ -500,8 +540,8 @@ static int ltr501_probe(struct i2c_client *client,
return -ENODEV;
indio_dev->dev.parent = &client->dev;
- indio_dev->info = <r501_info;
- indio_dev->channels = ltr501_channels;
+ indio_dev->info = data->chip_info->info;
+ indio_dev->channels = data->chip_info->channels;
indio_dev->num_channels = ARRAY_SIZE(ltr501_channels);
indio_dev->name = name;
indio_dev->modes = INDIO_DIRECT_MODE;
@@ -562,6 +602,7 @@ static SIMPLE_DEV_PM_OPS(ltr501_pm_ops, ltr501_suspend, ltr501_resume);
static const struct i2c_device_id ltr501_id[] = {
{ "ltr501", ltr501},
{ "ltr559", ltr559},
+ { "ltr301", ltr301 },
{ }
};
MODULE_DEVICE_TABLE(i2c, ltr501_id);
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors
2015-04-14 13:37 [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors Daniel Baluta
2015-04-14 13:37 ` [PATCH v7 1/2] iio: ltr501: Add support for ltr559 chip Daniel Baluta
2015-04-14 13:37 ` [PATCH v7 2/2] iio: ltr501: Add support for ltr301 Daniel Baluta
@ 2015-04-19 13:04 ` Jonathan Cameron
2015-04-19 13:06 ` Jonathan Cameron
2 siblings, 1 reply; 6+ messages in thread
From: Jonathan Cameron @ 2015-04-19 13:04 UTC (permalink / raw)
To: Daniel Baluta
Cc: sathyanarayanan.kuppuswamy, pmeerw, linux-iio,
srinivas.pandruvada, daniel.baluta
On 14/04/15 14:37, Daniel Baluta wrote:
> This patchset adds support for LiteOn LTR301 ambient light sensor
> and LTR559 ambient light and proximity sensor.
>
> v7:
> 1. Rebase LTR-301 on top of LTR-559 and merged the patches into a single patchset
> 2. Moved ltr501_chip_info_tbl below ltr501_info in patch 1 in order
> to make patch 2 changes look natural. :)
> 3. Moved "else" branch of id check from patch 2 to patch 1. Now it is no
> longer possible to have a NULL name after this check. If id is not NULL
> than id->name is one of ltr501_id already defined strings.
>
> v6:
> 1. Changed the title in commit log
>
> v5:
> 1. Rebased this patch on top of Daniel's LTR559 patchset
> (http://marc.info/?l=linux-kernel&m=142779827617036&w=2)
> 2. Added info and channel members to chip_info struture.
>
> v4:
> 1. Addressed minor comments from Peter Meerwald
> 2. Changed invalid chip id errno from ENOSYS to ENODEV
> 3. Fixed channel id index number
> 4. Removed unused variable.
>
> v3:
> 1. Sent v2 before by mistake. So sending the final version of v2 as v3.
>
> v2:
> 1. Handled device id NULL case in probe
> 2. Changed pr_warn to dev_warn
>
> v1:
> Extended LTR501 driver to support both LTR301 and LTR501 device.
>
> Daniel Baluta (1):
> iio: ltr501: Add support for ltr559 chip
>
> Kuppuswamy Sathyanarayanan (1):
> iio: ltr501: Add support for ltr301
>
> drivers/iio/light/Kconfig | 3 +-
> drivers/iio/light/ltr501.c | 240 ++++++++++++++++++++++++++++++++++++++-------
> 2 files changed, 209 insertions(+), 34 deletions(-)
>
Sorry Daniel, I've confused this further by first taking the set that added
interrupt support to this driver. Hence this series doesn't apply at all.
Don't suppose you could rebase on my testing branch to deal with that.
Sorry again, I was obviously half asleep and hadn't registered just how
much pain these two sets were going to cause.
Jonathan
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors
2015-04-19 13:04 ` [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors Jonathan Cameron
@ 2015-04-19 13:06 ` Jonathan Cameron
2015-04-19 13:19 ` Daniel Baluta
0 siblings, 1 reply; 6+ messages in thread
From: Jonathan Cameron @ 2015-04-19 13:06 UTC (permalink / raw)
To: Daniel Baluta
Cc: sathyanarayanan.kuppuswamy, pmeerw, linux-iio,
srinivas.pandruvada, daniel.baluta
On 19/04/15 14:04, Jonathan Cameron wrote:
> On 14/04/15 14:37, Daniel Baluta wrote:
>> This patchset adds support for LiteOn LTR301 ambient light sensor
>> and LTR559 ambient light and proximity sensor.
>>
>> v7:
>> 1. Rebase LTR-301 on top of LTR-559 and merged the patches into a single patchset
>> 2. Moved ltr501_chip_info_tbl below ltr501_info in patch 1 in order
>> to make patch 2 changes look natural. :)
>> 3. Moved "else" branch of id check from patch 2 to patch 1. Now it is no
>> longer possible to have a NULL name after this check. If id is not NULL
>> than id->name is one of ltr501_id already defined strings.
>>
>> v6:
>> 1. Changed the title in commit log
>>
>> v5:
>> 1. Rebased this patch on top of Daniel's LTR559 patchset
>> (http://marc.info/?l=linux-kernel&m=142779827617036&w=2)
>> 2. Added info and channel members to chip_info struture.
>>
>> v4:
>> 1. Addressed minor comments from Peter Meerwald
>> 2. Changed invalid chip id errno from ENOSYS to ENODEV
>> 3. Fixed channel id index number
>> 4. Removed unused variable.
>>
>> v3:
>> 1. Sent v2 before by mistake. So sending the final version of v2 as v3.
>>
>> v2:
>> 1. Handled device id NULL case in probe
>> 2. Changed pr_warn to dev_warn
>>
>> v1:
>> Extended LTR501 driver to support both LTR301 and LTR501 device.
>>
>> Daniel Baluta (1):
>> iio: ltr501: Add support for ltr559 chip
>>
>> Kuppuswamy Sathyanarayanan (1):
>> iio: ltr501: Add support for ltr301
>>
>> drivers/iio/light/Kconfig | 3 +-
>> drivers/iio/light/ltr501.c | 240 ++++++++++++++++++++++++++++++++++++++-------
>> 2 files changed, 209 insertions(+), 34 deletions(-)
>>
>
> Sorry Daniel, I've confused this further by first taking the set that added
> interrupt support to this driver. Hence this series doesn't apply at all.
>
> Don't suppose you could rebase on my testing branch to deal with that.
>
> Sorry again, I was obviously half asleep and hadn't registered just how
> much pain these two sets were going to cause.
I think this is all just fuzz, but I'm more likely to mess it up that you!
>
> Jonathan
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors
2015-04-19 13:06 ` Jonathan Cameron
@ 2015-04-19 13:19 ` Daniel Baluta
0 siblings, 0 replies; 6+ messages in thread
From: Daniel Baluta @ 2015-04-19 13:19 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Daniel Baluta, Kuppuswamy Sathyanarayanan, Peter Meerwald,
linux-iio@vger.kernel.org, Srinivas Pandruvada
On Sun, Apr 19, 2015 at 4:06 PM, Jonathan Cameron <jic23@kernel.org> wrote:
> On 19/04/15 14:04, Jonathan Cameron wrote:
>> On 14/04/15 14:37, Daniel Baluta wrote:
>>> This patchset adds support for LiteOn LTR301 ambient light sensor
>>> and LTR559 ambient light and proximity sensor.
>>>
>>> v7:
>>> 1. Rebase LTR-301 on top of LTR-559 and merged the patches into a single patchset
>>> 2. Moved ltr501_chip_info_tbl below ltr501_info in patch 1 in order
>>> to make patch 2 changes look natural. :)
>>> 3. Moved "else" branch of id check from patch 2 to patch 1. Now it is no
>>> longer possible to have a NULL name after this check. If id is not NULL
>>> than id->name is one of ltr501_id already defined strings.
>>>
>>> v6:
>>> 1. Changed the title in commit log
>>>
>>> v5:
>>> 1. Rebased this patch on top of Daniel's LTR559 patchset
>>> (http://marc.info/?l=linux-kernel&m=142779827617036&w=2)
>>> 2. Added info and channel members to chip_info struture.
>>>
>>> v4:
>>> 1. Addressed minor comments from Peter Meerwald
>>> 2. Changed invalid chip id errno from ENOSYS to ENODEV
>>> 3. Fixed channel id index number
>>> 4. Removed unused variable.
>>>
>>> v3:
>>> 1. Sent v2 before by mistake. So sending the final version of v2 as v3.
>>>
>>> v2:
>>> 1. Handled device id NULL case in probe
>>> 2. Changed pr_warn to dev_warn
>>>
>>> v1:
>>> Extended LTR501 driver to support both LTR301 and LTR501 device.
>>>
>>> Daniel Baluta (1):
>>> iio: ltr501: Add support for ltr559 chip
>>>
>>> Kuppuswamy Sathyanarayanan (1):
>>> iio: ltr501: Add support for ltr301
>>>
>>> drivers/iio/light/Kconfig | 3 +-
>>> drivers/iio/light/ltr501.c | 240 ++++++++++++++++++++++++++++++++++++++-------
>>> 2 files changed, 209 insertions(+), 34 deletions(-)
>>>
>>
>> Sorry Daniel, I've confused this further by first taking the set that added
>> interrupt support to this driver. Hence this series doesn't apply at all.
>>
>> Don't suppose you could rebase on my testing branch to deal with that.
>>
>> Sorry again, I was obviously half asleep and hadn't registered just how
>> much pain these two sets were going to cause.
> I think this is all just fuzz, but I'm more likely to mess it up that you!
No problem Jonathan. I will rebase and resend :).
thanks,
Daniel.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-04-19 13:19 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-14 13:37 [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors Daniel Baluta
2015-04-14 13:37 ` [PATCH v7 1/2] iio: ltr501: Add support for ltr559 chip Daniel Baluta
2015-04-14 13:37 ` [PATCH v7 2/2] iio: ltr501: Add support for ltr301 Daniel Baluta
2015-04-19 13:04 ` [PATCH v7 0/2] Add support for LTR-301 and LTR-559 sensors Jonathan Cameron
2015-04-19 13:06 ` Jonathan Cameron
2015-04-19 13:19 ` Daniel Baluta
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.