2019-02-03 00:55:56 +03:00
// SPDX-License-Identifier: GPL-2.0
2016-04-15 18:06:56 +03:00
/*
* BMI160 - Bosch IMU , I2C bits
*
* Copyright ( c ) 2016 , Intel Corporation .
*
* 7 - bit I2C slave address is :
* - 0x68 if SDO is pulled to GND
* - 0x69 if SDO is pulled to VDDIO
*/
2016-12-08 17:22:54 +03:00
# include <linux/acpi.h>
2016-04-15 18:06:56 +03:00
# include <linux/i2c.h>
2016-12-08 17:22:54 +03:00
# include <linux/module.h>
# include <linux/of.h>
2016-04-15 18:06:56 +03:00
# include <linux/regmap.h>
# include "bmi160.h"
static int bmi160_i2c_probe ( struct i2c_client * client ,
const struct i2c_device_id * id )
{
struct regmap * regmap ;
const char * name = NULL ;
regmap = devm_regmap_init_i2c ( client , & bmi160_regmap_config ) ;
if ( IS_ERR ( regmap ) ) {
2020-03-22 20:23:09 +03:00
dev_err ( & client - > dev , " Failed to register i2c regmap: %pe \n " ,
regmap ) ;
2016-04-15 18:06:56 +03:00
return PTR_ERR ( regmap ) ;
}
if ( id )
name = id - > name ;
return bmi160_core_probe ( & client - > dev , regmap , name , false ) ;
}
static const struct i2c_device_id bmi160_i2c_id [ ] = {
{ " bmi160 " , 0 } ,
{ }
} ;
MODULE_DEVICE_TABLE ( i2c , bmi160_i2c_id ) ;
static const struct acpi_device_id bmi160_acpi_match [ ] = {
{ " BMI0160 " , 0 } ,
{ } ,
} ;
MODULE_DEVICE_TABLE ( acpi , bmi160_acpi_match ) ;
2016-12-08 17:22:54 +03:00
# ifdef CONFIG_OF
static const struct of_device_id bmi160_of_match [ ] = {
{ . compatible = " bosch,bmi160 " } ,
{ } ,
} ;
MODULE_DEVICE_TABLE ( of , bmi160_of_match ) ;
# endif
2016-04-15 18:06:56 +03:00
static struct i2c_driver bmi160_i2c_driver = {
. driver = {
. name = " bmi160_i2c " ,
. acpi_match_table = ACPI_PTR ( bmi160_acpi_match ) ,
2016-12-08 17:22:54 +03:00
. of_match_table = of_match_ptr ( bmi160_of_match ) ,
2016-04-15 18:06:56 +03:00
} ,
. probe = bmi160_i2c_probe ,
. id_table = bmi160_i2c_id ,
} ;
module_i2c_driver ( bmi160_i2c_driver ) ;
MODULE_AUTHOR ( " Daniel Baluta <daniel.baluta@intel.com> " ) ;
MODULE_DESCRIPTION ( " BMI160 I2C driver " ) ;
MODULE_LICENSE ( " GPL v2 " ) ;