Skip to content

Commit

Permalink
iio: gyro: bmg160: use regmap to retrieve struct device
Browse files Browse the repository at this point in the history
Driver includes struct regmap and struct device in its global data.
Remove the struct device and use regmap API to retrieve device info.

Patch created using Coccinelle plus manual edits.

Signed-off-by: Alison Schofield <amsfield22@gmail.com>
Reviewed-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
  • Loading branch information
Alison Schofield authored and Jonathan Cameron committed Apr 19, 2016
1 parent 0ef4c31 commit dc2c571
Showing 1 changed file with 44 additions and 42 deletions.
86 changes: 44 additions & 42 deletions drivers/iio/gyro/bmg160_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,6 @@
#define BMG160_AUTO_SUSPEND_DELAY_MS 2000

struct bmg160_data {
struct device *dev;
struct regmap *regmap;
struct iio_trigger *dready_trig;
struct iio_trigger *motion_trig;
Expand Down Expand Up @@ -137,11 +136,12 @@ static const struct {

static int bmg160_set_mode(struct bmg160_data *data, u8 mode)
{
struct device *dev = regmap_get_device(data->regmap);
int ret;

ret = regmap_write(data->regmap, BMG160_REG_PMU_LPW, mode);
if (ret < 0) {
dev_err(data->dev, "Error writing reg_pmu_lpw\n");
dev_err(dev, "Error writing reg_pmu_lpw\n");
return ret;
}

Expand All @@ -162,6 +162,7 @@ static int bmg160_convert_freq_to_bit(int val)

static int bmg160_set_bw(struct bmg160_data *data, int val)
{
struct device *dev = regmap_get_device(data->regmap);
int ret;
int bw_bits;

Expand All @@ -171,7 +172,7 @@ static int bmg160_set_bw(struct bmg160_data *data, int val)

ret = regmap_write(data->regmap, BMG160_REG_PMU_BW, bw_bits);
if (ret < 0) {
dev_err(data->dev, "Error writing reg_pmu_bw\n");
dev_err(dev, "Error writing reg_pmu_bw\n");
return ret;
}

Expand All @@ -182,18 +183,19 @@ static int bmg160_set_bw(struct bmg160_data *data, int val)

static int bmg160_chip_init(struct bmg160_data *data)
{
struct device *dev = regmap_get_device(data->regmap);
int ret;
unsigned int val;

ret = regmap_read(data->regmap, BMG160_REG_CHIP_ID, &val);
if (ret < 0) {
dev_err(data->dev, "Error reading reg_chip_id\n");
dev_err(dev, "Error reading reg_chip_id\n");
return ret;
}

dev_dbg(data->dev, "Chip Id %x\n", val);
dev_dbg(dev, "Chip Id %x\n", val);
if (val != BMG160_CHIP_ID_VAL) {
dev_err(data->dev, "invalid chip %x\n", val);
dev_err(dev, "invalid chip %x\n", val);
return -ENODEV;
}

Expand All @@ -212,14 +214,14 @@ static int bmg160_chip_init(struct bmg160_data *data)
/* Set Default Range */
ret = regmap_write(data->regmap, BMG160_REG_RANGE, BMG160_RANGE_500DPS);
if (ret < 0) {
dev_err(data->dev, "Error writing reg_range\n");
dev_err(dev, "Error writing reg_range\n");
return ret;
}
data->dps_range = BMG160_RANGE_500DPS;

ret = regmap_read(data->regmap, BMG160_REG_SLOPE_THRES, &val);
if (ret < 0) {
dev_err(data->dev, "Error reading reg_slope_thres\n");
dev_err(dev, "Error reading reg_slope_thres\n");
return ret;
}
data->slope_thres = val;
Expand All @@ -228,15 +230,15 @@ static int bmg160_chip_init(struct bmg160_data *data)
ret = regmap_update_bits(data->regmap, BMG160_REG_INT_EN_1,
BMG160_INT1_BIT_OD, 0);
if (ret < 0) {
dev_err(data->dev, "Error updating bits in reg_int_en_1\n");
dev_err(dev, "Error updating bits in reg_int_en_1\n");
return ret;
}

ret = regmap_write(data->regmap, BMG160_REG_INT_RST_LATCH,
BMG160_INT_MODE_LATCH_INT |
BMG160_INT_MODE_LATCH_RESET);
if (ret < 0) {
dev_err(data->dev,
dev_err(dev,
"Error writing reg_motion_intr\n");
return ret;
}
Expand All @@ -247,20 +249,21 @@ static int bmg160_chip_init(struct bmg160_data *data)
static int bmg160_set_power_state(struct bmg160_data *data, bool on)
{
#ifdef CONFIG_PM
struct device *dev = regmap_get_device(data->regmap);
int ret;

if (on)
ret = pm_runtime_get_sync(data->dev);
ret = pm_runtime_get_sync(dev);
else {
pm_runtime_mark_last_busy(data->dev);
ret = pm_runtime_put_autosuspend(data->dev);
pm_runtime_mark_last_busy(dev);
ret = pm_runtime_put_autosuspend(dev);
}

if (ret < 0) {
dev_err(data->dev,
"Failed: bmg160_set_power_state for %d\n", on);
dev_err(dev, "Failed: bmg160_set_power_state for %d\n", on);

if (on)
pm_runtime_put_noidle(data->dev);
pm_runtime_put_noidle(dev);

return ret;
}
Expand All @@ -272,14 +275,15 @@ static int bmg160_set_power_state(struct bmg160_data *data, bool on)
static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
bool status)
{
struct device *dev = regmap_get_device(data->regmap);
int ret;

/* Enable/Disable INT_MAP0 mapping */
ret = regmap_update_bits(data->regmap, BMG160_REG_INT_MAP_0,
BMG160_INT_MAP_0_BIT_ANY,
(status ? BMG160_INT_MAP_0_BIT_ANY : 0));
if (ret < 0) {
dev_err(data->dev, "Error updating bits reg_int_map0\n");
dev_err(dev, "Error updating bits reg_int_map0\n");
return ret;
}

Expand All @@ -289,17 +293,15 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
ret = regmap_write(data->regmap, BMG160_REG_SLOPE_THRES,
data->slope_thres);
if (ret < 0) {
dev_err(data->dev,
"Error writing reg_slope_thres\n");
dev_err(dev, "Error writing reg_slope_thres\n");
return ret;
}

ret = regmap_write(data->regmap, BMG160_REG_MOTION_INTR,
BMG160_INT_MOTION_X | BMG160_INT_MOTION_Y |
BMG160_INT_MOTION_Z);
if (ret < 0) {
dev_err(data->dev,
"Error writing reg_motion_intr\n");
dev_err(dev, "Error writing reg_motion_intr\n");
return ret;
}

Expand All @@ -314,8 +316,7 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
BMG160_INT_MODE_LATCH_INT |
BMG160_INT_MODE_LATCH_RESET);
if (ret < 0) {
dev_err(data->dev,
"Error writing reg_rst_latch\n");
dev_err(dev, "Error writing reg_rst_latch\n");
return ret;
}
}
Expand All @@ -328,7 +329,7 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
}

if (ret < 0) {
dev_err(data->dev, "Error writing reg_int_en0\n");
dev_err(dev, "Error writing reg_int_en0\n");
return ret;
}

Expand All @@ -338,14 +339,15 @@ static int bmg160_setup_any_motion_interrupt(struct bmg160_data *data,
static int bmg160_setup_new_data_interrupt(struct bmg160_data *data,
bool status)
{
struct device *dev = regmap_get_device(data->regmap);
int ret;

/* Enable/Disable INT_MAP1 mapping */
ret = regmap_update_bits(data->regmap, BMG160_REG_INT_MAP_1,
BMG160_INT_MAP_1_BIT_NEW_DATA,
(status ? BMG160_INT_MAP_1_BIT_NEW_DATA : 0));
if (ret < 0) {
dev_err(data->dev, "Error updating bits in reg_int_map1\n");
dev_err(dev, "Error updating bits in reg_int_map1\n");
return ret;
}

Expand All @@ -354,9 +356,8 @@ static int bmg160_setup_new_data_interrupt(struct bmg160_data *data,
BMG160_INT_MODE_NON_LATCH_INT |
BMG160_INT_MODE_LATCH_RESET);
if (ret < 0) {
dev_err(data->dev,
"Error writing reg_rst_latch\n");
return ret;
dev_err(dev, "Error writing reg_rst_latch\n");
return ret;
}

ret = regmap_write(data->regmap, BMG160_REG_INT_EN_0,
Expand All @@ -368,16 +369,15 @@ static int bmg160_setup_new_data_interrupt(struct bmg160_data *data,
BMG160_INT_MODE_LATCH_INT |
BMG160_INT_MODE_LATCH_RESET);
if (ret < 0) {
dev_err(data->dev,
"Error writing reg_rst_latch\n");
return ret;
dev_err(dev, "Error writing reg_rst_latch\n");
return ret;
}

ret = regmap_write(data->regmap, BMG160_REG_INT_EN_0, 0);
}

if (ret < 0) {
dev_err(data->dev, "Error writing reg_int_en0\n");
dev_err(dev, "Error writing reg_int_en0\n");
return ret;
}

Expand All @@ -400,15 +400,15 @@ static int bmg160_get_bw(struct bmg160_data *data, int *val)

static int bmg160_set_scale(struct bmg160_data *data, int val)
{
struct device *dev = regmap_get_device(data->regmap);
int ret, i;

for (i = 0; i < ARRAY_SIZE(bmg160_scale_table); ++i) {
if (bmg160_scale_table[i].scale == val) {
ret = regmap_write(data->regmap, BMG160_REG_RANGE,
bmg160_scale_table[i].dps_range);
if (ret < 0) {
dev_err(data->dev,
"Error writing reg_range\n");
dev_err(dev, "Error writing reg_range\n");
return ret;
}
data->dps_range = bmg160_scale_table[i].dps_range;
Expand All @@ -421,6 +421,7 @@ static int bmg160_set_scale(struct bmg160_data *data, int val)

static int bmg160_get_temp(struct bmg160_data *data, int *val)
{
struct device *dev = regmap_get_device(data->regmap);
int ret;
unsigned int raw_val;

Expand All @@ -433,7 +434,7 @@ static int bmg160_get_temp(struct bmg160_data *data, int *val)

ret = regmap_read(data->regmap, BMG160_REG_TEMP, &raw_val);
if (ret < 0) {
dev_err(data->dev, "Error reading reg_temp\n");
dev_err(dev, "Error reading reg_temp\n");
bmg160_set_power_state(data, false);
mutex_unlock(&data->mutex);
return ret;
Expand All @@ -450,6 +451,7 @@ static int bmg160_get_temp(struct bmg160_data *data, int *val)

static int bmg160_get_axis(struct bmg160_data *data, int axis, int *val)
{
struct device *dev = regmap_get_device(data->regmap);
int ret;
unsigned int raw_val;

Expand All @@ -463,7 +465,7 @@ static int bmg160_get_axis(struct bmg160_data *data, int axis, int *val)
ret = regmap_bulk_read(data->regmap, BMG160_AXIS_TO_REG(axis), &raw_val,
2);
if (ret < 0) {
dev_err(data->dev, "Error reading axis %d\n", axis);
dev_err(dev, "Error reading axis %d\n", axis);
bmg160_set_power_state(data, false);
mutex_unlock(&data->mutex);
return ret;
Expand Down Expand Up @@ -793,6 +795,7 @@ static int bmg160_trig_try_reen(struct iio_trigger *trig)
{
struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
struct bmg160_data *data = iio_priv(indio_dev);
struct device *dev = regmap_get_device(data->regmap);
int ret;

/* new data interrupts don't need ack */
Expand All @@ -804,7 +807,7 @@ static int bmg160_trig_try_reen(struct iio_trigger *trig)
BMG160_INT_MODE_LATCH_INT |
BMG160_INT_MODE_LATCH_RESET);
if (ret < 0) {
dev_err(data->dev, "Error writing reg_rst_latch\n");
dev_err(dev, "Error writing reg_rst_latch\n");
return ret;
}

Expand Down Expand Up @@ -864,13 +867,14 @@ static irqreturn_t bmg160_event_handler(int irq, void *private)
{
struct iio_dev *indio_dev = private;
struct bmg160_data *data = iio_priv(indio_dev);
struct device *dev = regmap_get_device(data->regmap);
int ret;
int dir;
unsigned int val;

ret = regmap_read(data->regmap, BMG160_REG_INT_STATUS_2, &val);
if (ret < 0) {
dev_err(data->dev, "Error reading reg_int_status2\n");
dev_err(dev, "Error reading reg_int_status2\n");
goto ack_intr_status;
}

Expand Down Expand Up @@ -907,8 +911,7 @@ static irqreturn_t bmg160_event_handler(int irq, void *private)
BMG160_INT_MODE_LATCH_INT |
BMG160_INT_MODE_LATCH_RESET);
if (ret < 0)
dev_err(data->dev,
"Error writing reg_rst_latch\n");
dev_err(dev, "Error writing reg_rst_latch\n");
}

return IRQ_HANDLED;
Expand Down Expand Up @@ -976,7 +979,6 @@ int bmg160_core_probe(struct device *dev, struct regmap *regmap, int irq,

data = iio_priv(indio_dev);
dev_set_drvdata(dev, indio_dev);
data->dev = dev;
data->irq = irq;
data->regmap = regmap;

Expand Down Expand Up @@ -1139,7 +1141,7 @@ static int bmg160_runtime_suspend(struct device *dev)

ret = bmg160_set_mode(data, BMG160_MODE_SUSPEND);
if (ret < 0) {
dev_err(data->dev, "set mode failed\n");
dev_err(dev, "set mode failed\n");
return -EAGAIN;
}

Expand Down

0 comments on commit dc2c571

Please sign in to comment.