mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
iio: tsl2772: Add support for Avago APDS9900/9901 ALS/Proximity sensor
The Avago APDS9900/9901 has a similar register layout to the TAOS/AMS TSL2772 but features a unique set of configurations. Add support for the APDS9900/9901 into the TSL2772 driver by adding the required device-specific configurations. Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
1a5fc4b5dd
commit
2f640a4d0f
|
|
@ -127,6 +127,7 @@ enum {
|
|||
tmd2672,
|
||||
tsl2772,
|
||||
tmd2772,
|
||||
apds9900,
|
||||
apds9930,
|
||||
};
|
||||
|
||||
|
|
@ -221,6 +222,12 @@ static const struct tsl2772_lux tmd2x72_lux_table[TSL2772_DEF_LUX_TABLE_SZ] = {
|
|||
{ 0, 0 },
|
||||
};
|
||||
|
||||
static const struct tsl2772_lux apds9900_lux_table[TSL2772_DEF_LUX_TABLE_SZ] = {
|
||||
{ 52000, 115960 },
|
||||
{ 36400, 73840 },
|
||||
{ 0, 0 },
|
||||
};
|
||||
|
||||
static const struct tsl2772_lux apds9930_lux_table[TSL2772_DEF_LUX_TABLE_SZ] = {
|
||||
{ 52000, 96824 },
|
||||
{ 38792, 67132 },
|
||||
|
|
@ -238,6 +245,7 @@ static const struct tsl2772_lux *tsl2772_default_lux_table_group[] = {
|
|||
[tmd2672] = tmd2x72_lux_table,
|
||||
[tsl2772] = tsl2x72_lux_table,
|
||||
[tmd2772] = tmd2x72_lux_table,
|
||||
[apds9900] = apds9900_lux_table,
|
||||
[apds9930] = apds9930_lux_table,
|
||||
};
|
||||
|
||||
|
|
@ -289,6 +297,7 @@ static const int tsl2772_int_time_avail[][6] = {
|
|||
[tmd2672] = { 0, 2730, 0, 2730, 0, 699000 },
|
||||
[tsl2772] = { 0, 2730, 0, 2730, 0, 699000 },
|
||||
[tmd2772] = { 0, 2730, 0, 2730, 0, 699000 },
|
||||
[apds9900] = { 0, 2720, 0, 2720, 0, 696000 },
|
||||
[apds9930] = { 0, 2730, 0, 2730, 0, 699000 },
|
||||
};
|
||||
|
||||
|
|
@ -316,6 +325,7 @@ static const u8 device_channel_config[] = {
|
|||
[tmd2672] = PRX2,
|
||||
[tsl2772] = ALSPRX2,
|
||||
[tmd2772] = ALSPRX2,
|
||||
[apds9900] = ALSPRX,
|
||||
[apds9930] = ALSPRX2,
|
||||
};
|
||||
|
||||
|
|
@ -530,6 +540,7 @@ static int tsl2772_get_prox(struct iio_dev *indio_dev)
|
|||
case tmd2672:
|
||||
case tsl2772:
|
||||
case tmd2772:
|
||||
case apds9900:
|
||||
case apds9930:
|
||||
if (!(ret & TSL2772_STA_PRX_VALID)) {
|
||||
ret = -EINVAL;
|
||||
|
|
@ -1367,6 +1378,7 @@ static int tsl2772_device_id_verif(int id, int target)
|
|||
return (id & 0xf0) == TRITON_ID;
|
||||
case tmd2671:
|
||||
case tmd2771:
|
||||
case apds9900:
|
||||
return (id & 0xf0) == HALIBUT_ID;
|
||||
case tsl2572:
|
||||
case tsl2672:
|
||||
|
|
@ -1898,6 +1910,8 @@ static const struct i2c_device_id tsl2772_idtable[] = {
|
|||
{ "tmd2672", tmd2672 },
|
||||
{ "tsl2772", tsl2772 },
|
||||
{ "tmd2772", tmd2772 },
|
||||
{ "apds9900", apds9900 },
|
||||
{ "apds9901", apds9900 },
|
||||
{ "apds9930", apds9930 },
|
||||
{ }
|
||||
};
|
||||
|
|
@ -1915,6 +1929,8 @@ static const struct of_device_id tsl2772_of_match[] = {
|
|||
{ .compatible = "amstaos,tmd2672" },
|
||||
{ .compatible = "amstaos,tsl2772" },
|
||||
{ .compatible = "amstaos,tmd2772" },
|
||||
{ .compatible = "avago,apds9900" },
|
||||
{ .compatible = "avago,apds9901" },
|
||||
{ .compatible = "avago,apds9930" },
|
||||
{ }
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user