static int bma250_config(struct driver_data *dd, int bw, int range) { int rc = 0; char bypass = 0; struct bma250_platform_data *pdata = dd->ic_dev->dev.platform_data; if (slave_hw) pdata->bypass_state(READ_BYPASS_STATE, &bypass); if (!slave_hw || !bypass) { FIFO_ACCESS_MUTEX_LOCK(); if (bw) { rc = bma250_bw_handler(dd); if (rc) goto config_error; } if (range) { rc = bma250_range_handler(dd); if (rc) goto config_error; } FIFO_ACCESS_MUTEX_UNLOCK(); } return rc; config_error: FIFO_ACCESS_MUTEX_UNLOCK(); printk(KERN_ERR "%s: Configuration error.\n", __func__); return rc; }
static int bma250_config(struct driver_data *dd) { int rc; rc = bma250_bw_handler(dd); if (rc) goto config_error; rc = bma250_range_handler(dd); if (rc) goto config_error; schedule_delayed_work(&dd->work_data, dd->delay_jiffies); return rc; config_error: bma250_power_down(dd); return rc; }