iio: light: ltr501: Added ltr303 driver support
authorMaslov Dmitry <maslovdmitry@seeed.cc>
Sat, 6 Nov 2021 17:41:37 +0000 (18:41 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 17 Nov 2021 17:51:45 +0000 (17:51 +0000)
Previously ltr501 driver supported a number of light and,
proximity sensors including ltr501, ltr559 and ltr301.
This adds support for another light sensor ltr303
used in Seeed Studio reTerminal, a carrier board
for Raspberry Pi 4 CM.

Signed-off-by: Maslov Dmitry <maslovdmitry@seeed.cc>
Link: https://lore.kernel.org/r/20211106174137.6783-1-maslovdmitry@seeed.cc
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/light/ltr501.c

index 7e51aaa..bab5b78 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * ltr501.c - Support for Lite-On LTR501 ambient light and proximity sensor
+ * Support for Lite-On LTR501 and similar ambient light and proximity sensors.
  *
  * Copyright 2014 Peter Meerwald <pmeerw@pmeerw.net>
  *
@@ -98,6 +98,7 @@ enum {
        ltr501 = 0,
        ltr559,
        ltr301,
+       ltr303,
 };
 
 struct ltr501_gain {
@@ -1231,6 +1232,18 @@ static const struct ltr501_chip_info ltr501_chip_info_tbl[] = {
                .channels = ltr301_channels,
                .no_channels = ARRAY_SIZE(ltr301_channels),
        },
+       [ltr303] = {
+               .partid = 0x0A,
+               .als_gain = ltr559_als_gain_tbl,
+               .als_gain_tbl_size = ARRAY_SIZE(ltr559_als_gain_tbl),
+               .als_mode_active = BIT(0),
+               .als_gain_mask = BIT(2) | BIT(3) | BIT(4),
+               .als_gain_shift = 2,
+               .info = &ltr301_info,
+               .info_no_irq = &ltr301_info_no_irq,
+               .channels = ltr301_channels,
+               .no_channels = ARRAY_SIZE(ltr301_channels),
+       },
 };
 
 static int ltr501_write_contr(struct ltr501_data *data, u8 als_val, u8 ps_val)
@@ -1605,6 +1618,7 @@ static const struct i2c_device_id ltr501_id[] = {
        { "ltr501", ltr501},
        { "ltr559", ltr559},
        { "ltr301", ltr301},
+       { "ltr303", ltr303},
        { }
 };
 MODULE_DEVICE_TABLE(i2c, ltr501_id);
@@ -1613,6 +1627,7 @@ static const struct of_device_id ltr501_of_match[] = {
        { .compatible = "liteon,ltr501", },
        { .compatible = "liteon,ltr559", },
        { .compatible = "liteon,ltr301", },
+       { .compatible = "liteon,ltr303", },
        {}
 };
 MODULE_DEVICE_TABLE(of, ltr501_of_match);