regmap and i2c_smbus_write_byte question
I am investigating converting the tsl2583 staging driver over to use the regmap API. I ran into an issue converting the following call to i2c_smbus_write_byte() over to the regmap API:
struct tsl2583_chip {
struct i2c_client *client;
...
}/*
* clear status, really interrupt status (interrupts are off), but
* we use the bit anyway - don't forget 0x80 - this is a command */
ret = i2c_smbus_write_byte(chip->client,
(TSL258X_CMD_REG | TSL258X_CMD_SPL_FN |
TSL258X_CMD_ALS_INT_CLR));I don't see a way to do this in the regmap API. drivers/input/touchscreen/tsc2004.c has this same issue and that code directly calls i2c_smbus_write_byte() along with the regmap API. Am I missing something? This doesn't feel right to me to bypass the regmap API and directly access the i2c client.
The data sheet for the tsl2583 sensor is available here:
http://media.digikey.com/PDF/Data%20Sheets/Austriamicrosystems%20PDFs/TSL2581,83.pdf
Page 10 has the table that describes clearing the interrupt bit. The sensor will not take additional readings until that bit is cleared (even though interrupts are off).
Thanks,
Brian
Jonathan Cameron
maintainerQuoted 23 lines · Brian Masney
I am investigating converting the tsl2583 staging driver over to use the regmap API. I ran into an issue converting the following call to
i2c_smbus_write_byte()over to the regmap API:struct tsl2583_chip { struct i2c_client *client; ... }/*
* clear status, really interrupt status (interrupts are off), but
* we use the bit anyway - don't forget0x80- this is a command */
ret = i2c_smbus_write_byte(chip->client,(TSL258X_CMD_REG | TSL258X_CMD_SPL_FN | TSL258X_CMD_ALS_INT_CLR));I don't see a way to do this in the regmap API.
drivers/input/touchscreen/tsc2004.chas this same issue and that code directly callsi2c_smbus_write_byte()along with the regmap API. Am I missing something? This doesn't feel right to me to bypass the regmap API and directly access the i2c client.
Quoted 5 lines
The data sheet for the tsl2583 sensor is available here:
http://media.digikey.com/PDF/Data%20Sheets/Austriamicrosystems%20PDFs/TSL2581,83.pdf
Page 10 has the table that describes clearing the interrupt bit. The sensor will not take additional readings until that bit is cleared (even though interrupts are off).
Bit of a tangential question but why do a regmap conversion for this device? It's i2c only so we don't gain from easy support for multiple bus types. There aren't all that many registers and we don't have reason to often read/write the ones that aren't volatile.
Hence I'd argue there is little point in doing a regmap conversion in the first place.
If there is a good reason to do it then there isn't an easy way around these 'odd' diversions from what is otherwise a nice register based interface.
Hence another reason to not do a regmap conversion.
J
Quoted 10 lines
Thanks,
Brian
--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 34 lines · Jonathan Cameron
Quoted 23 lines · Brian Masney
I am investigating converting the tsl2583 staging driver over to use the regmap API. I ran into an issue converting the following call to
i2c_smbus_write_byte()over to the regmap API:struct tsl2583_chip { struct i2c_client *client; ... }/*
* clear status, really interrupt status (interrupts are off), but
* we use the bit anyway - don't forget0x80- this is a command */
ret = i2c_smbus_write_byte(chip->client,(TSL258X_CMD_REG | TSL258X_CMD_SPL_FN | TSL258X_CMD_ALS_INT_CLR));I don't see a way to do this in the regmap API.
drivers/input/touchscreen/tsc2004.chas this same issue and that code directly callsi2c_smbus_write_byte()along with the regmap API. Am I missing something? This doesn't feel right to me to bypass the regmap API and directly access the i2c client.Quoted 5 lines
The data sheet for the tsl2583 sensor is available here:
http://media.digikey.com/PDF/Data%20Sheets/Austriamicrosystems%20PDFs/TSL2581,83.pdf
Page 10 has the table that describes clearing the interrupt bit. The sensor will not take additional readings until that bit is cleared (even though interrupts are off).Bit of a tangential question but why do a regmap conversion for this device? It's i2c only so we don't gain from easy support for multiple bus types. There aren't all that many registers and we don't have reason to often read/write the ones that aren't volatile.
Quoted 8 lines
Hence I'd argue there is little point in doing a regmap conversion in the first place.
If there is a good reason to do it then there isn't an easy way around these 'odd' diversions from what is otherwise a nice register based interface.
Hence another reason to not do a regmap conversion.
I totally agree that it does not make sense to do the regmap conversion for this driver. The only reason that I initially looked into doing it was that there are other light drivers in mainline (with few registers) that use the regmap API.
My tsl2583 patch set that I sent out a few days ago is still valid even though the cover sheet says it lays the ground work for the regmap conversion.
Thanks,
Brian