1c984b9cbSAkinobu Mita /* 2c984b9cbSAkinobu Mita * Freescale MPL115A2 pressure/temperature sensor 3c984b9cbSAkinobu Mita * 4c984b9cbSAkinobu Mita * Copyright (c) 2014 Peter Meerwald <pmeerw@pmeerw.net> 5c984b9cbSAkinobu Mita * 6c984b9cbSAkinobu Mita * This file is subject to the terms and conditions of version 2 of 7c984b9cbSAkinobu Mita * the GNU General Public License. See the file COPYING in the main 8c984b9cbSAkinobu Mita * directory of this archive for more details. 9c984b9cbSAkinobu Mita * 10c984b9cbSAkinobu Mita * (7-bit I2C slave address 0x60) 11c984b9cbSAkinobu Mita * 12c984b9cbSAkinobu Mita * Datasheet: http://www.nxp.com/files/sensors/doc/data_sheet/MPL115A2.pdf 13c984b9cbSAkinobu Mita */ 14c984b9cbSAkinobu Mita 15c984b9cbSAkinobu Mita #include <linux/module.h> 16c984b9cbSAkinobu Mita #include <linux/i2c.h> 17c984b9cbSAkinobu Mita 18c984b9cbSAkinobu Mita #include "mpl115.h" 19c984b9cbSAkinobu Mita 20c984b9cbSAkinobu Mita static int mpl115_i2c_init(struct device *dev) 21c984b9cbSAkinobu Mita { 22c984b9cbSAkinobu Mita return 0; 23c984b9cbSAkinobu Mita } 24c984b9cbSAkinobu Mita 25c984b9cbSAkinobu Mita static int mpl115_i2c_read(struct device *dev, u8 address) 26c984b9cbSAkinobu Mita { 27c984b9cbSAkinobu Mita return i2c_smbus_read_word_swapped(to_i2c_client(dev), address); 28c984b9cbSAkinobu Mita } 29c984b9cbSAkinobu Mita 30c984b9cbSAkinobu Mita static int mpl115_i2c_write(struct device *dev, u8 address, u8 value) 31c984b9cbSAkinobu Mita { 32c984b9cbSAkinobu Mita return i2c_smbus_write_byte_data(to_i2c_client(dev), address, value); 33c984b9cbSAkinobu Mita } 34c984b9cbSAkinobu Mita 35c984b9cbSAkinobu Mita static const struct mpl115_ops mpl115_i2c_ops = { 36c984b9cbSAkinobu Mita .init = mpl115_i2c_init, 37c984b9cbSAkinobu Mita .read = mpl115_i2c_read, 38c984b9cbSAkinobu Mita .write = mpl115_i2c_write, 39c984b9cbSAkinobu Mita }; 40c984b9cbSAkinobu Mita 41c984b9cbSAkinobu Mita static int mpl115_i2c_probe(struct i2c_client *client, 42c984b9cbSAkinobu Mita const struct i2c_device_id *id) 43c984b9cbSAkinobu Mita { 44c984b9cbSAkinobu Mita if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_WORD_DATA)) 45c984b9cbSAkinobu Mita return -ENODEV; 46c984b9cbSAkinobu Mita 47c984b9cbSAkinobu Mita return mpl115_probe(&client->dev, id->name, &mpl115_i2c_ops); 48c984b9cbSAkinobu Mita } 49c984b9cbSAkinobu Mita 50c984b9cbSAkinobu Mita static const struct i2c_device_id mpl115_i2c_id[] = { 51c984b9cbSAkinobu Mita { "mpl115", 0 }, 52c984b9cbSAkinobu Mita { } 53c984b9cbSAkinobu Mita }; 54c984b9cbSAkinobu Mita MODULE_DEVICE_TABLE(i2c, mpl115_i2c_id); 55c984b9cbSAkinobu Mita 56c984b9cbSAkinobu Mita static struct i2c_driver mpl115_i2c_driver = { 57c984b9cbSAkinobu Mita .driver = { 58c984b9cbSAkinobu Mita .name = "mpl115", 59c984b9cbSAkinobu Mita }, 60c984b9cbSAkinobu Mita .probe = mpl115_i2c_probe, 61c984b9cbSAkinobu Mita .id_table = mpl115_i2c_id, 62c984b9cbSAkinobu Mita }; 63c984b9cbSAkinobu Mita module_i2c_driver(mpl115_i2c_driver); 64c984b9cbSAkinobu Mita 65c984b9cbSAkinobu Mita MODULE_AUTHOR("Peter Meerwald <pmeerw@pmeerw.net>"); 66c984b9cbSAkinobu Mita MODULE_DESCRIPTION("Freescale MPL115A2 pressure/temperature driver"); 67c984b9cbSAkinobu Mita MODULE_LICENSE("GPL"); 68