summaryrefslogtreecommitdiffstats
path: root/drivers/iio/pressure/bmp280.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* iio: pressure: bmp280: fix temp compensationIrina Tirdea2015-04-091-0/+1
| | | | | | | | | | | | | Temperature reads on bmp280 device always return 0, due to a missing step in the compensation formula (data->tfine is never initialized). Initialize data->tfine value so we get correct temperature and pressure values. Signed-off-by: Irina Tirdea <irina.tirdea@intel.com> Reviewed-by: Vlad Dogaru <vlad.dogaru@intel.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:pressure:bmp280: cleanupHartmut Knaack2014-12-261-10/+6
| | | | | | | | | | | | | | | | | | The calculations for temperature and pressure compensation were already slightly optimized in comparison to the datasheet. So, it makes sense to optimize even a bit more, making proper use of C operators: - variable t in bmp280_compensate_temp() can be eliminated by directly returning the result of the relevant equation. - make use of the += operator and eliminate an unnecessary parenthesis level in bmp280_compensate_press(). When the initialization of the ctrl_meas register fails, the error message will now mention the right register name. During probe, i2c_set_clientdata() is called, although it is not necessary. Drop it. Signed-off-by: Hartmut Knaack <knaack.h@gmx.de> Reviewed-by: Vlad Dogaru <vlad.dogaru@intel.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio: bmp280: refactor compensation codeVlad Dogaru2014-12-121-88/+52
| | | | | | | | | This version of the code avoids extra memory copy operations and is somewhat smaller in code size. Signed-off-by: Vlad Dogaru <vlad.dogaru@intel.com> Acked-by: Hartmut Knaack <knaack.h@gmx.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:pressure:bmp280: fix pressure calculationHartmut Knaack2014-11-051-12/+12
| | | | | | | | | | | | | | According to the datasheet and as defined in struct bmp280_comp_press, dig_p1 is of type u16, while dig_p2 to dig_p9 are of type s16. In bmp280_read_compensation_press(), values read from the device were treated as the wrong type. In bmp280_read_press() the fractional part of the measured pressure is calculated wrong. A better way is to use *val for the raw pressure and *val2 for the quotient and let the core do the proper conversion using IIO_VAL_FRACTIONAL. Signed-off-by: Hartmut Knaack <knaack.h@gmx.de> Acked-by: Vlad Dogaru <vlad.dogaru@intel.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* bmp280: use correct routine for divisionVlad Dogaru2014-10-251-1/+1
| | | | | | | | The proper way to divide two signed 64-bit values is to use div64_s64. Signed-off-by: Vlad Dogaru <vlad.dogaru@intel.com> Reported-by: kbuild test robot <fengguang.wu@intel.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio: add bmp280 pressure and temperature driverVlad Dogaru2014-10-221-0/+455
Minimal implementation, can read temperature and data using direct mode. Datasheet available at <http://ae-bst.resource.bosch.com/media/products/dokumente/bmp280/BST-BMP280-DS001-09.pdf> Signed-off-by: Vlad Dogaru <vlad.dogaru@intel.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>