From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
To: unlisted-recipients:; (no To-header on input)
Cc: jianlong <jianlong.gao@cn.bosch.com>,
jic23@kernel.org, linux-iio@vger.kernel.org,
linux-kernel@vger.kernel.org, ji.chen@cn.bosch.com,
yunfei.ma2@cn.bosch.com
Subject: iio: add Bosch BMG160 gyroscope sensor driver
Date: Thu, 17 Apr 2014 14:13:59 -0700 [thread overview]
Message-ID: <53504417.9070504@linux.intel.com> (raw)
In-Reply-To: <1379960878.3575.43.camel@joe-AO722>
Hi jianlong,
Are you planning to update this driver, so that it can be accepted?
I will appreciate if you reply ASAP.
Thanks,
Srinivas
On Mon, 2013-09-23 at 13:35 +0800, jianlong wrote:
>> This patch adds IIO driver for Bosch BMG160 triaxial gyroscope sensor.
>> Thanks a lot.
> Maybe some trivial, mostly whitespace, corrections before
> modifying the bmg160_api.c and bmg_iio.h files...
> ---
> drivers/iio/gyro/bmg160_core.c | 286 +++++++++++++++++++-------------------
> drivers/iio/gyro/bmg160_ring.c | 19 +--
> drivers/iio/gyro/bmg160_trigger.c | 75 +++++-----
> 3 files changed, 187 insertions(+), 193 deletions(-)
>
> diff --git a/drivers/iio/gyro/bmg160_core.c b/drivers/iio/gyro/bmg160_core.c
> index 0234348..73fd3b2 100644
> --- a/drivers/iio/gyro/bmg160_core.c
> +++ b/drivers/iio/gyro/bmg160_core.c
> @@ -38,7 +38,7 @@
> #define BUFF_SIZE 256
>
> struct op_mode_map {
> - char *op_mode_name;
> + const char *op_mode_name;
> long op_mode;
> };
>
> @@ -59,7 +59,7 @@ static struct i2c_client *bmg_client;
> * @gyro_fs_dps: sensor's full scale, the unit is degree pre second.
> * @gyro_fs_rslt: sensor's resolution.
> * example: 0(Reg val)----2000dps(full scale)----61000(resolution)
> -*/
> + */
> static struct bmg_fullscale_avl bmg_fs_avl_array[] = {
> [0] = {
> .gyro_fs_value = BMG_FSR_2000DPS_VAL,
> @@ -106,42 +106,42 @@ static const struct bmg_hw bmg_hw_info[NUM_DEVICE_PARTS] = {
> #define BMG_SENSORS_16_BITS 16
> #define BMG_TEMP_SCALE 5000
> #define BMG_TEMP_OFFSET 12000
> -#define WATER_MARK_LEVEL 40
> -
> -#define BMG_GYRO_CHANNELS_CONFIG(device_type, si, mod, \
> - endian, bits, addr) \
> - { \
> - .type = device_type, \
> - .modified = 1, \
> - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \
> - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \
> - .scan_index = si, \
> - .channel2 = mod, \
> - .address = addr, \
> - .scan_type = { \
> - .sign = 's', \
> - .realbits = bits, \
> - .shift = 16 - bits, \
> - .storagebits = 16, \
> - .endianness = endian, \
> - }, \
> +#define WATER_MARK_LEVEL 40
> +
> +#define BMG_GYRO_CHANNELS_CONFIG(device_type, si, mod, \
> + endian, bits, addr) \
> + { \
> + .type = device_type, \
> + .modified = 1, \
> + .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \
> + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \
> + .scan_index = si, \
> + .channel2 = mod, \
> + .address = addr, \
> + .scan_type = { \
> + .sign = 's', \
> + .realbits = bits, \
> + .shift = 16 - bits, \
> + .storagebits = 16, \
> + .endianness = endian, \
> + }, \
> }
> -#define BMG_DEV_ATTR_SAMP_FREQ() \
> - IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR | S_IRUGO, \
> - bmg_read_frequency, \
> - bmg_write_frequency)
> -
> -#define BMG_DEV_ATTR_R_W(name) \
> - IIO_DEVICE_ATTR(name, S_IRUGO | S_IWUSR , \
> - bmg_show_##name, \
> - bmg_store_##name, 0);
> -
> -#define BMG_DEV_ATTR_R(name) \
> - IIO_DEVICE_ATTR(name, S_IRUGO, \
> +#define BMG_DEV_ATTR_SAMP_FREQ() \
> + IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR | S_IRUGO, \
> + bmg_read_frequency, \
> + bmg_write_frequency)
> +
> +#define BMG_DEV_ATTR_R_W(name) \
> + IIO_DEVICE_ATTR(name, S_IRUGO | S_IWUSR , \
> + bmg_show_##name, \
> + bmg_store_##name, 0);
> +
> +#define BMG_DEV_ATTR_R(name) \
> + IIO_DEVICE_ATTR(name, S_IRUGO, \
> bmg_show_##name, NULL , 0);
>
> -#define BMG_DEV_ATTR_W(name) \
> - IIO_DEVICE_ATTR(name, S_IWUSR, \
> +#define BMG_DEV_ATTR_W(name) \
> + IIO_DEVICE_ATTR(name, S_IWUSR, \
> NULL, bmg_store_##name, 0);
>
> #define BMG_BYTE_FOR_PER_AXIS_CHANNEL 2
> @@ -150,20 +150,28 @@ static const struct bmg_hw bmg_hw_info[NUM_DEVICE_PARTS] = {
> static const struct iio_chan_spec bmg_12bit_raw_channels[] = {
> { .type = IIO_TEMP,
> .channel = IIO_NO_MOD,
> - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW)
> - | BIT(IIO_CHAN_INFO_OFFSET)
> - | BIT(IIO_CHAN_INFO_SCALE),
> + .info_mask_separate = (BIT(IIO_CHAN_INFO_RAW) |
> + BIT(IIO_CHAN_INFO_OFFSET) |
> + BIT(IIO_CHAN_INFO_SCALE)),
> .address = BMG160_TEMP_ADDR,
> .scan_index = -1,
> - .scan_type = { .sign = 'u', .realbits = 8,
> - .storagebits = 8, .shift = 0, .endianness = IIO_LE },
> + .scan_type = {
> + .sign = 'u',
> + .realbits = 8,
> + .storagebits = 8,
> + .shift = 0,
> + .endianness = IIO_LE
> + },
> },
> BMG_GYRO_CHANNELS_CONFIG(IIO_ANGL_VEL, BMG_SCAN_GYRO_X,
> - IIO_MOD_X, IIO_LE, BMG_SENSORS_12_BITS, BMG160_RATE_X_LSB_VALUEX__REG),
> + IIO_MOD_X, IIO_LE, BMG_SENSORS_12_BITS,
> + BMG160_RATE_X_LSB_VALUEX__REG),
> BMG_GYRO_CHANNELS_CONFIG(IIO_ANGL_VEL, BMG_SCAN_GYRO_Y,
> - IIO_MOD_Y, IIO_LE, BMG_SENSORS_12_BITS, BMG160_RATE_Y_LSB_VALUEY__REG),
> + IIO_MOD_Y, IIO_LE, BMG_SENSORS_12_BITS,
> + BMG160_RATE_Y_LSB_VALUEY__REG),
> BMG_GYRO_CHANNELS_CONFIG(IIO_ANGL_VEL, BMG_SCAN_GYRO_Z,
> - IIO_MOD_Z, IIO_LE, BMG_SENSORS_12_BITS, BMG160_RATE_Z_LSB_VALUEZ__REG),
> + IIO_MOD_Z, IIO_LE, BMG_SENSORS_12_BITS,
> + BMG160_RATE_Z_LSB_VALUEZ__REG),
> IIO_CHAN_SOFT_TIMESTAMP(BMG_SCAN_TIMESTAMP),
>
> };
> @@ -172,26 +180,34 @@ static const struct iio_chan_spec bmg_12bit_raw_channels[] = {
> static const struct iio_chan_spec bmg_16bit_raw_channels[] = {
> { .type = IIO_TEMP,
> .channel = IIO_NO_MOD,
> - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW)
> - | BIT(IIO_CHAN_INFO_OFFSET)
> - | BIT(IIO_CHAN_INFO_SCALE),
> + .info_mask_separate = (BIT(IIO_CHAN_INFO_RAW) |
> + BIT(IIO_CHAN_INFO_OFFSET) |
> + BIT(IIO_CHAN_INFO_SCALE)),
> .address = BMG160_TEMP_ADDR,
> .scan_index = -1,
> - .scan_type = { .sign = 'u', .realbits = 8,
> - .storagebits = 8, .shift = 0, .endianness = IIO_LE },
> + .scan_type = {
> + .sign = 'u',
> + .realbits = 8,
> + .storagebits = 8,
> + .shift = 0,
> + .endianness = IIO_LE
> + },
> },
> BMG_GYRO_CHANNELS_CONFIG(IIO_ANGL_VEL, BMG_SCAN_GYRO_X,
> - IIO_MOD_X, IIO_LE, BMG_SENSORS_16_BITS, BMG160_RATE_X_LSB_VALUEX__REG),
> + IIO_MOD_X, IIO_LE, BMG_SENSORS_16_BITS,
> + BMG160_RATE_X_LSB_VALUEX__REG),
> BMG_GYRO_CHANNELS_CONFIG(IIO_ANGL_VEL, BMG_SCAN_GYRO_Y,
> - IIO_MOD_Y, IIO_LE, BMG_SENSORS_16_BITS, BMG160_RATE_Y_LSB_VALUEY__REG),
> + IIO_MOD_Y, IIO_LE, BMG_SENSORS_16_BITS,
> + BMG160_RATE_Y_LSB_VALUEY__REG),
> BMG_GYRO_CHANNELS_CONFIG(IIO_ANGL_VEL, BMG_SCAN_GYRO_Z,
> - IIO_MOD_Z, IIO_LE, BMG_SENSORS_16_BITS, BMG160_RATE_Z_LSB_VALUEZ__REG),
> + IIO_MOD_Z, IIO_LE, BMG_SENSORS_16_BITS,
> + BMG160_RATE_Z_LSB_VALUEZ__REG),
> IIO_CHAN_SOFT_TIMESTAMP(BMG_SCAN_TIMESTAMP),
> };
>
> /* bmg i2c routine read */
> static char bmg_i2c_read(struct i2c_client *client, u8 reg_addr,
> - u8 *data, u8 len)
> + u8 *data, u8 len)
> {
> #if !defined BMG_USE_BASIC_I2C_FUNC
> s32 dummy;
> @@ -202,7 +218,7 @@ static char bmg_i2c_read(struct i2c_client *client, u8 reg_addr,
> #ifdef BMG_SMBUS
> dummy = i2c_smbus_read_byte_data(client, reg_addr);
> if (dummy < 0) {
> - dev_err(&client->dev, "i2c bus read error");
> + dev_err(&client->dev, "i2c bus read error\n");
> return -1;
> }
> *data = (u8)(dummy & 0xff);
> @@ -224,18 +240,18 @@ static char bmg_i2c_read(struct i2c_client *client, u8 reg_addr,
>
> struct i2c_msg msg[] = {
> {
> - .addr = client->addr,
> - .flags = 0,
> - .len = 1,
> - .buf = ®_addr,
> + .addr = client->addr,
> + .flags = 0,
> + .len = 1,
> + .buf = ®_addr,
> },
>
> {
> - .addr = client->addr,
> - .flags = I2C_M_RD,
> - .len = len,
> - .buf = data,
> - },
> + .addr = client->addr,
> + .flags = I2C_M_RD,
> + .len = len,
> + .buf = data,
> + },
> };
>
> for (retry = 0; retry < BMG_MAX_RETRY_I2C_XFER; retry++) {
> @@ -246,7 +262,7 @@ static char bmg_i2c_read(struct i2c_client *client, u8 reg_addr,
> }
>
> if (BMG_MAX_RETRY_I2C_XFER <= retry) {
> - dev_err(&client->dev, "I2C xfer error");
> + dev_err(&client->dev, "I2C xfer error\n");
> return -EIO;
> }
>
> @@ -268,21 +284,20 @@ static void bmg_dump_reg(struct i2c_client *client)
> for (i = 0; i < BYTES_PER_LINE; i++) {
> dbg_buf[i] = i;
> sprintf(dbg_buf_str + i * 3, "%02x%c",
> - dbg_buf[i],
> - (((i + 1) % BYTES_PER_LINE == 0) ? '\n' : ' '));
> + dbg_buf[i],
> + (((i + 1) % BYTES_PER_LINE == 0) ? '\n' : ' '));
> }
> dev_dbg(&client->dev, "%s\n", dbg_buf_str);
>
> bmg_i2c_read(client, BMG_REG_NAME(CHIP_ID_ADDR), dbg_buf, 64);
> for (i = 0; i < 64; i++) {
> sprintf(dbg_buf_str + i * 3, "%02x%c",
> - dbg_buf[i],
> - (((i + 1) % BYTES_PER_LINE == 0) ? '\n' : ' '));
> + dbg_buf[i],
> + (((i + 1) % BYTES_PER_LINE == 0) ? '\n' : ' '));
> }
> dev_dbg(&client->dev, "%s\n", dbg_buf_str);
> }
>
> -
> /* i2c operation for API */
> static int bmg_check_chip_id(struct i2c_client *client)
> {
> @@ -290,7 +305,7 @@ static int bmg_check_chip_id(struct i2c_client *client)
> u8 chip_id = 0;
>
> bmg_i2c_read(client, BMG_REG_NAME(CHIP_ID_ADDR), &chip_id, 1);
> - dev_info(&client->dev, "read chip id result: %#x", chip_id);
> + dev_info(&client->dev, "read chip id result: %#x\n", chip_id);
>
> if ((chip_id & 0xff) != SENSOR_CHIP_ID_BMG)
> err = -1;
> @@ -300,11 +315,10 @@ static int bmg_check_chip_id(struct i2c_client *client)
>
> /* i2c write routine*/
> static char bmg_i2c_write(struct i2c_client *client, u8 reg_addr,
> - u8 *data, u8 len)
> + u8 *data, u8 len)
> {
> #if !defined BMG_USE_BASIC_I2C_FUNC
> s32 dummy;
> -
> #ifndef BMG_SMBUS
> u8 buffer[2];
> #endif
> @@ -323,22 +337,22 @@ static char bmg_i2c_write(struct i2c_client *client, u8 reg_addr,
> reg_addr++;
> data++;
> if (dummy < 0) {
> - dev_err(&client->dev, "error writing i2c bus");
> + dev_err(&client->dev, "error writing i2c bus\n");
> return -EPERM;
> }
> -
> }
> +
> return 0;
> #else
> u8 buffer[2];
> int retry;
> struct i2c_msg msg[] = {
> {
> - .addr = client->addr,
> - .flags = 0,
> - .len = 2,
> - .buf = buffer,
> - },
> + .addr = client->addr,
> + .flags = 0,
> + .len = 2,
> + .buf = buffer,
> + },
> };
>
> while (0 != len--) {
> @@ -346,14 +360,14 @@ static char bmg_i2c_write(struct i2c_client *client, u8 reg_addr,
> buffer[1] = *data;
> for (retry = 0; retry < BMG_MAX_RETRY_I2C_XFER; retry++) {
> if (i2c_transfer(client->adapter, msg,
> - ARRAY_SIZE(msg)) > 0) {
> + ARRAY_SIZE(msg)) > 0) {
> break;
> } else {
> mdelay(BMG_I2C_WRITE_DELAY_TIME);
> }
> }
> if (BMG_MAX_RETRY_I2C_XFER <= retry) {
> - dev_err(&client->dev, "I2C xfer error");
> + dev_err(&client->dev, "I2C xfer error\n");
> return -EIO;
> }
> reg_addr++;
> @@ -378,16 +392,15 @@ static char bmg_i2c_write_wrapper(u8 dev_addr, u8 reg_addr, u8 *data, u8 len)
> return err;
> }
>
> -
> static int bmg_read_axis_data(struct iio_dev *indio_dev, u8 reg_address,
> - int *data)
> + int *data)
> {
> int ret;
> unsigned char axis_outdata[BMG_BYTE_FOR_PER_AXIS_CHANNEL];
> struct bmg_client_data *client_data = iio_priv(indio_dev);
>
> ret = bmg_i2c_read(client_data->client, reg_address,
> - axis_outdata, BMG_BYTE_FOR_PER_AXIS_CHANNEL);
> + axis_outdata, BMG_BYTE_FOR_PER_AXIS_CHANNEL);
> if (ret < 0)
> return ret;
>
> @@ -396,7 +409,7 @@ static int bmg_read_axis_data(struct iio_dev *indio_dev, u8 reg_address,
> }
>
> static int bmg_read_temp_data(struct iio_dev *indio_dev, u8 reg_address,
> - int *data)
> + int *data)
> {
> int ret;
> signed char temp_outdata;
> @@ -410,7 +423,7 @@ static int bmg_read_temp_data(struct iio_dev *indio_dev, u8 reg_address,
> }
>
> static ssize_t bmg_read_frequency(struct device *dev,
> - struct device_attribute *attr, char *buf)
> + struct device_attribute *attr, char *buf)
> {
> struct iio_dev *indio_dev = dev_get_drvdata(dev);
> int ret;
> @@ -425,8 +438,8 @@ static ssize_t bmg_read_frequency(struct device *dev,
> }
>
> static ssize_t bmg_write_frequency(struct device *dev,
> - struct device_attribute *attr,
> - const char *buf, size_t count)
> + struct device_attribute *attr,
> + const char *buf, size_t count)
> {
> struct iio_dev *indio_dev = dev_get_drvdata(dev);
> int err;
> @@ -443,7 +456,7 @@ static ssize_t bmg_write_frequency(struct device *dev,
> }
>
> static ssize_t bmg_show_op_mode(struct device *dev,
> - struct device_attribute *attr, char *buf)
> + struct device_attribute *attr, char *buf)
> {
> int ret;
> struct iio_dev *indio_dev = dev_get_drvdata(dev);
> @@ -459,8 +472,8 @@ static ssize_t bmg_show_op_mode(struct device *dev,
> }
>
> static ssize_t bmg_store_op_mode(struct device *dev,
> - struct device_attribute *attr,
> - const char *buf, size_t count)
> + struct device_attribute *attr,
> + const char *buf, size_t count)
> {
> int err;
> struct iio_dev *indio_dev = dev_get_drvdata(dev);
> @@ -470,8 +483,8 @@ static ssize_t bmg_store_op_mode(struct device *dev,
> if (err)
> return err;
>
> - dev_notice(indio_dev->dev.parent, "%s:set op-mode[%ld]",
> - __func__, op_mode);
> + dev_notice(indio_dev->dev.parent, "%s:set op-mode[%ld]\n",
> + __func__, op_mode);
>
> mutex_lock(&indio_dev->mlock);
> err = BMG_CALL_API(set_mode)(op_mode);
> @@ -479,12 +492,12 @@ static ssize_t bmg_store_op_mode(struct device *dev,
>
> if (err)
> return err;
> - else
> - return count;
> +
> + return count;
> }
>
> static ssize_t bmg_show_bandwidth(struct device *dev,
> - struct device_attribute *attr, char *buf)
> + struct device_attribute *attr, char *buf)
> {
> int err;
> unsigned char bandwidth = 0;
> @@ -499,8 +512,8 @@ static ssize_t bmg_show_bandwidth(struct device *dev,
> }
>
> static ssize_t bmg_store_bandwidth(struct device *dev,
> - struct device_attribute *attr,
> - const char *buf, size_t count)
> + struct device_attribute *attr,
> + const char *buf, size_t count)
> {
> int err;
> unsigned long bandwidth;
> @@ -517,7 +530,7 @@ static ssize_t bmg_store_bandwidth(struct device *dev,
> }
>
> static ssize_t bmg_show_selftest(struct device *dev,
> - struct device_attribute *attr, char *buf)
> + struct device_attribute *attr, char *buf)
> {
> int err;
> unsigned char selftest;
> @@ -539,10 +552,10 @@ static ssize_t bmg_show_selftest(struct device *dev,
> datay_check = abs(1000 * client_data->value.datay / 16384);
> dataz_check = abs(1000 * client_data->value.dataz / 16384);
> mutex_unlock(&indio_dev->mlock);
> - if ((datax_check <= 5) && (datay_check <= 5) && (dataz_check <= 5))
> + if ((datax_check <= 5) && (datay_check <= 5) && (dataz_check <= 5)) {
> dev_notice(&indio_dev->dev, "Self test successfully!\n");
> - else {
> - dev_err(&indio_dev->dev, "Self test checking value failed!");
> + } else {
> + dev_err(&indio_dev->dev, "Self test checking value failed!\n");
> dev_err(&indio_dev->dev, "x y z axis values:%d,%d,%d\n",
> datax_check, datay_check, dataz_check);
> selftest |= C_BMG160_FAILURE;
> @@ -559,51 +572,49 @@ static int bmg_set_fullscale(struct bmg_client_data *client_data, int val)
> for (i = 0; i < NUM_BMG_FSR_VAL; i++) {
> if (val == bmg_fs_avl_array[i].gyro_fs_value) {
> BMG_CALL_API(set_range_reg)(val);
> - client_data->current_fullscale =
> - (struct bmg_fullscale_avl *)&bmg_fs_avl_array[i];
> + client_data->current_fullscale = &bmg_fs_avl_array[i];
> return 0;
> - } else if (i == NUM_BMG_FSR_VAL)
> + } else if (i == NUM_BMG_FSR_VAL) {
> return -EINVAL;
> + }
> }
> return -EINVAL;
> }
>
> static int bmg_read_raw(struct iio_dev *indio_dev,
> struct iio_chan_spec const *ch, int *val,
> - int *val2, long mask)
> + int *val2, long mask)
> {
> int ret, result;
> struct bmg_client_data *client_data = iio_priv(indio_dev);
>
> switch (mask) {
> - case IIO_CHAN_INFO_RAW:
> - {
> + case IIO_CHAN_INFO_RAW: {
> result = 0;
> ret = IIO_VAL_INT;
> mutex_lock(&indio_dev->mlock);
> switch (ch->type) {
> case IIO_ANGL_VEL:
> result = bmg_read_axis_data(indio_dev,
> - ch->address, val);
> + ch->address, val);
> *val = *val >> ch->scan_type.shift;
> break;
> case IIO_TEMP:
> result = bmg_read_temp_data(indio_dev,
> - ch->address, val);
> + ch->address, val);
> *val = *val >> ch->scan_type.shift;
> break;
> default:
> ret = -EINVAL;
> break;
> }
> - mutex_unlock(&indio_dev->mlock);
> - if (result < 0)
> - return result;
> - return ret;
> + mutex_unlock(&indio_dev->mlock);
> + if (result < 0)
> + return result;
> + return ret;
> }
>
> - case IIO_CHAN_INFO_SCALE:
> - {
> + case IIO_CHAN_INFO_SCALE: {
> switch (ch->type) {
> case IIO_ANGL_VEL:
> *val = 0;
> @@ -618,8 +629,7 @@ static int bmg_read_raw(struct iio_dev *indio_dev,
> }
> }
>
> - case IIO_CHAN_INFO_OFFSET:
> - {
> + case IIO_CHAN_INFO_OFFSET: {
> switch (ch->type) {
> case IIO_TEMP:
> *val = BMG_TEMP_OFFSET;
> @@ -632,12 +642,11 @@ static int bmg_read_raw(struct iio_dev *indio_dev,
> default:
> return -EINVAL;
> }
> -
> }
>
> static int bmg_wirte_raw(struct iio_dev *indio_dev,
> - struct iio_chan_spec const *ch, int val,
> - int val2, long mask)
> + struct iio_chan_spec const *ch, int val,
> + int val2, long mask)
> {
> int ret;
> struct bmg_client_data *client_data = iio_priv(indio_dev);
> @@ -689,19 +698,16 @@ static const struct iio_info bmg_iio_info = {
> .write_raw = &bmg_wirte_raw,
> };
>
> -
> -
> -
> static int bmg_probe(struct i2c_client *client, const struct i2c_device_id *id)
> {
> int err = 0;
> struct iio_dev *indio_dev;
> struct bmg_client_data *client_data = NULL;
> struct device_node *np = client->dev.of_node;
> - dev_info(&client->dev, "function entrance");
> + dev_info(&client->dev, "function entrance\n");
>
> if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
> - dev_err(&client->dev, "i2c_check_functionality error!");
> + dev_err(&client->dev, "i2c_check_functionality error!\n");
> err = -EIO;
> goto exit_err_clean;
> }
> @@ -710,7 +716,7 @@ static int bmg_probe(struct i2c_client *client, const struct i2c_device_id *id)
> bmg_client = client;
> } else {
> dev_err(&client->dev,
> - "this driver does not support multiple clients");
> + "this driver does not support multiple clients\n");
> err = -EINVAL;
> goto exit_err_clean;
> }
> @@ -718,10 +724,10 @@ static int bmg_probe(struct i2c_client *client, const struct i2c_device_id *id)
> err = bmg_check_chip_id(client);
> if (!err) {
> dev_notice(&client->dev,
> - "Bosch Sensortec Device %s detected", SENSOR_NAME);
> + "Bosch Sensortec Device %s detected\n", SENSOR_NAME);
> } else {
> dev_err(&client_data->client->dev,
> - "Bosch Sensortec Device not found, chip id mismatch");
> + "Bosch Sensortec Device not found, chip id mismatch\n");
> err = -ENXIO;
> goto exit_err_clean;
> }
> @@ -729,7 +735,7 @@ static int bmg_probe(struct i2c_client *client, const struct i2c_device_id *id)
> indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*client_data));
> if (indio_dev == NULL) {
> dev_err(indio_dev->dev.parent,
> - "IIO device alloc err %d\n", err);
> + "IIO device alloc err %d\n", err);
> return -ENOMEM;
> }
>
> @@ -740,7 +746,7 @@ static int bmg_probe(struct i2c_client *client, const struct i2c_device_id *id)
> * need to set in the dts file by using "gpio_int" key word.
> */
> err = of_property_read_u32(np, "gpio_int",
> - &client_data->gpio_interrupt_pin);
> + &client_data->gpio_interrupt_pin);
> if (err) {
> dev_err(&client_data->client->dev,
> "Not found usable gpio interrupt pin!\n");
> @@ -751,8 +757,7 @@ static int bmg_probe(struct i2c_client *client, const struct i2c_device_id *id)
> indio_dev->channels = bmg_16bit_raw_channels;
> indio_dev->num_channels = ARRAY_SIZE(bmg_16bit_raw_channels);
> indio_dev->info = &bmg_iio_info;
> - client_data->current_fullscale = (struct bmg_fullscale_avl *)
> - &bmg_fs_avl_array[0];
> + client_data->current_fullscale = bmg_fs_avl_array;
> indio_dev->modes = INDIO_DIRECT_MODE;
> /* h/w init */
> client_data->device.bus_read = bmg_i2c_read_wrapper;
> @@ -777,38 +782,37 @@ static int bmg_probe(struct i2c_client *client, const struct i2c_device_id *id)
> #endif
>
> memcpy(&client_data->chip_config,
> - bmg_hw_info[client_data->chip_type].config,
> - sizeof(struct bmg_chip_config));
> + bmg_hw_info[client_data->chip_type].config,
> + sizeof(struct bmg_chip_config));
> client_data->IRQ = client->irq;
>
> err = bmg_allocate_ring(indio_dev);
> if (err < 0) {
> dev_err(indio_dev->dev.parent,
> - "bmg configure buffer fail %d\n", err);
> + "bmg configure buffer fail %d\n", err);
> return err;
> }
> err = bmg_probe_trigger(indio_dev);
> if (err) {
> dev_err(indio_dev->dev.parent,
> - "bmg trigger probe fail %d\n", err);
> + "bmg trigger probe fail %d\n", err);
> goto bmg_probe_trigger_error;
> }
> BMG_CALL_API(set_bw)(3); /*set bandwidth to 47Hz*/
> err = iio_device_register(indio_dev);
> if (err) {
> dev_err(indio_dev->dev.parent,
> - "bmg IIO device register failed %d\n", err);
> + "bmg IIO device register failed %d\n", err);
> goto bmg_probe_error;
> }
>
>
> BMG_CALL_API(set_data_enable)(INT_ENABLE);
> /* now it's power on which is considered as resuming from suspend */
> - err = BMG_CALL_API(set_mode)(
> - BMG_VAL_NAME(MODE_SUSPEND));
> + err = BMG_CALL_API(set_mode)(BMG_VAL_NAME(MODE_SUSPEND));
>
> dev_notice(indio_dev->dev.parent,
> - "IIO device sensor %s probed successfully", SENSOR_NAME);
> + "IIO device sensor %s probed successfully\n", SENSOR_NAME);
>
> return 0;
>
> @@ -819,10 +823,8 @@ bmg_probe_trigger_error:
> exit_err_clean:
> bmg_client = NULL;
> return err;
> -
> }
>
> -
> static int bmg_remove(struct i2c_client *client)
> {
> struct iio_dev *indio_dev = i2c_get_clientdata(client);
> diff --git a/drivers/iio/gyro/bmg160_ring.c b/drivers/iio/gyro/bmg160_ring.c
> index ffc51d1..0dadd97 100644
> --- a/drivers/iio/gyro/bmg160_ring.c
> +++ b/drivers/iio/gyro/bmg160_ring.c
> @@ -10,7 +10,7 @@
> #include "bmg_iio.h"
>
> extern char bmg_i2c_burst_read(struct i2c_client *client, u8 reg_addr,
> - u8 *data, u16 len);
> + u8 *data, u16 len);
>
> static irqreturn_t bmg_buffer_handler(int irq, void *p)
> {
> @@ -30,9 +30,9 @@ static irqreturn_t bmg_buffer_handler(int irq, void *p)
> if (client_data->chip_config.gyro_fifo_enable)
> bytes_per_datum = BMG160_BYTES_PER_3AXIS_SENSOR;
> /*
> -* There is new data to push to IIO ring buffer
> -* please give attentions to the data format
> -*/
> + * There is new data to push to IIO ring buffer
> + * please give attentions to the data format
> + */
> BMG_CALL_API(get_dataxyz)(&client_data->value);
>
> buffer_data_out[0] = client_data->value.datax & 0xff;
> @@ -42,28 +42,23 @@ static irqreturn_t bmg_buffer_handler(int irq, void *p)
> buffer_data_out[4] = client_data->value.dataz & 0xff;
> buffer_data_out[5] = (client_data->value.dataz >> 8) & 0xff;
> /*for every frame, need 8 bytes to axis data storage*/
> - iio_push_to_buffers_with_timestamp(indio_dev, buffer_data_out, timestamp);
> -
> + iio_push_to_buffers_with_timestamp(indio_dev, buffer_data_out,
> + timestamp);
>
> bmg_buffer_handler_error:
> mutex_unlock(&indio_dev->mlock);
> iio_trigger_notify_done(indio_dev->trig);
>
> return IRQ_HANDLED;
> -
> }
>
> -
> int bmg_allocate_ring(struct iio_dev *indio_dev)
> {
> return iio_triggered_buffer_setup(indio_dev, &iio_pollfunc_store_time,
> - &bmg_buffer_handler, NULL);
> + &bmg_buffer_handler, NULL);
> }
>
> void bmg_deallocate_ring(struct iio_dev *indio_dev)
> {
> iio_triggered_buffer_cleanup(indio_dev);
> }
> -
> -
> -
> diff --git a/drivers/iio/gyro/bmg160_trigger.c b/drivers/iio/gyro/bmg160_trigger.c
> index a374c72..b749c94 100644
> --- a/drivers/iio/gyro/bmg160_trigger.c
> +++ b/drivers/iio/gyro/bmg160_trigger.c
> @@ -13,58 +13,56 @@
> #include <linux/gpio.h>
> #include <linux/of_irq.h>
>
> -
> static void bmg_scan_query(struct iio_dev *indio_dev)
> {
> - struct bmg_client_data *client_data = iio_priv(indio_dev);
> + struct bmg_client_data *client_data = iio_priv(indio_dev);
>
> - client_data->chip_config.gyro_fifo_enable =
> + client_data->chip_config.gyro_fifo_enable =
> test_bit(BMG_SCAN_GYRO_X, indio_dev->active_scan_mask) ||
> test_bit(BMG_SCAN_GYRO_Y, indio_dev->active_scan_mask) ||
> test_bit(BMG_SCAN_GYRO_Z, indio_dev->active_scan_mask);
> }
>
> - /**
> - * bmg_set_trig_ready_enable() - enable related functions such as new data mode.
> - * @indio_dev: Device driver instance.
> - * @enable: enable/disable
> - */
> +/**
> + * bmg_set_trig_ready_enable() - enable related functions such as new data mode.
> + * @indio_dev: Device driver instance.
> + * @enable: enable/disable
> + */
> static int bmg_set_trig_ready_enable(struct iio_dev *indio_dev, bool enable)
> {
> - struct bmg_client_data *client_data = iio_priv(indio_dev);
> + struct bmg_client_data *client_data = iio_priv(indio_dev);
>
> if (enable) {
> bmg_scan_query(indio_dev);
> if (client_data->chip_config.gyro_fifo_enable)
> - dev_notice(indio_dev->dev.parent, "bmg scan query active enable.\n");
> + dev_notice(indio_dev->dev.parent, "bmg scan query active enable\n");
> #if defined(BMG160_ENABLE_INT1) || defined(BMG160_ENABLE_INT2)
> - BMG_CALL_API(set_data_enable)(INT_ENABLE);
> - dev_notice(indio_dev->dev.parent, "bmg new data ready enable.\n");
> + BMG_CALL_API(set_data_enable)(INT_ENABLE);
> + dev_notice(indio_dev->dev.parent, "bmg new data ready enable\n");
> #endif
> } else {
> - BMG_CALL_API(set_reset_int)(1);
> + BMG_CALL_API(set_reset_int)(1);
> #if defined(BMG160_ENABLE_INT1) || defined(BMG160_ENABLE_INT2)
> - BMG_CALL_API(set_data_enable)(INT_DISABLE);
> - dev_notice(indio_dev->dev.parent, "bmg new data ready disabled.\n");
> + BMG_CALL_API(set_data_enable)(INT_DISABLE);
> + dev_notice(indio_dev->dev.parent, "bmg new data ready disabled\n");
> #endif
> }
> - return 0;
> + return 0;
> }
>
> - /**
> - * bmg_data_rdy_trigger_set_state() - set data ready state
> - * @trig: Trigger instance
> - * @state: Desired trigger state
> - */
> -static int bmg_data_rdy_trigger_set_state(struct iio_trigger *trig,
> - bool state)
> +/**
> + * bmg_data_rdy_trigger_set_state() - set data ready state
> + * @trig: Trigger instance
> + * @state: Desired trigger state
> + */
> +static int bmg_data_rdy_trigger_set_state(struct iio_trigger *trig, bool state)
> {
> return bmg_set_trig_ready_enable(iio_trigger_get_drvdata(trig), state);
> }
>
> static const struct iio_trigger_ops bmg_trigger_ops = {
> - .owner = THIS_MODULE,
> - .set_trigger_state = &bmg_data_rdy_trigger_set_state,
> + .owner = THIS_MODULE,
> + .set_trigger_state = &bmg_data_rdy_trigger_set_state,
> };
>
> int bmg_probe_trigger(struct iio_dev *indio_dev)
> @@ -73,8 +71,8 @@ int bmg_probe_trigger(struct iio_dev *indio_dev)
> struct bmg_client_data *client_data = iio_priv(indio_dev);
> int irq_num = 0;
> client_data->trig = iio_trigger_alloc("%s-dev%d",
> - indio_dev->name,
> - indio_dev->id);
> + indio_dev->name,
> + indio_dev->id);
> if (client_data->trig == NULL) {
> ret = -ENOMEM;
> dev_err(&indio_dev->dev, "bmg failed to allocate iio trigger.\n");
> @@ -84,10 +82,10 @@ int bmg_probe_trigger(struct iio_dev *indio_dev)
> gpio_direction_input(client_data->gpio_interrupt_pin);
> irq_num = gpio_to_irq(client_data->gpio_interrupt_pin);
> ret = devm_request_irq(irq_num, &iio_trigger_generic_data_rdy_poll, 0,
> - "bmg_iio_int", client_data->trig);
> + "bmg_iio_int", client_data->trig);
> if (ret) {
> dev_err(&client_data->client->dev,
> - "bmg could not request irq! err = %d\n", ret);
> + "bmg could not request irq! err = %d\n", ret);
> goto error_irq_request;
> }
> /*gpio interrupt trig type*/
> @@ -96,20 +94,20 @@ int bmg_probe_trigger(struct iio_dev *indio_dev)
> client_data->trig->dev.parent = &client_data->client->dev;
> client_data->trig->ops = &bmg_trigger_ops;
> ret = iio_trigger_register(client_data->trig);
> - if (ret < 0) {
> - dev_err(&indio_dev->dev, "bmg iio trigger failed to register.\n");
> + if (ret < 0) {
> + dev_err(&indio_dev->dev, "bmg iio trigger failed to register\n");
> goto erro_iio_trigger_register;
> - }
> - indio_dev->trig = client_data->trig;
> + }
> + indio_dev->trig = client_data->trig;
>
> - return 0;
> + return 0;
>
> erro_iio_trigger_register:
> free_irq(gpio_to_irq(client_data->client->irq), client_data->trig);
> - error_irq_request:
> - iio_trigger_free(client_data->trig);
> - error_alloc_trigger:
> - return ret;
> +error_irq_request:
> + iio_trigger_free(client_data->trig);
> +error_alloc_trigger:
> + return ret;
> }
>
> void bmg_remove_trigger(struct iio_dev *indio_dev)
> @@ -119,4 +117,3 @@ void bmg_remove_trigger(struct iio_dev *indio_dev)
> free_irq(client_data->client->irq, client_data->trig);
> iio_trigger_free(client_data->trig);
> }
> -
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2014-04-17 21:10 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-23 5:35 [PATCH] iio: add Bosch BMG160 gyroscope sensor driver jianlong
2013-09-23 8:10 ` Joe Perches
2013-09-23 18:27 ` Joe Perches
2014-04-17 21:13 ` Srinivas Pandruvada [this message]
2013-09-28 12:38 ` Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53504417.9070504@linux.intel.com \
--to=srinivas.pandruvada@linux.intel.com \
--cc=ji.chen@cn.bosch.com \
--cc=jianlong.gao@cn.bosch.com \
--cc=jic23@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=yunfei.ma2@cn.bosch.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.