static int bma250_suspend(struct i2c_client *ic_dev, pm_message_t mesg) { struct driver_data *dd = bma250_ic_get_data(ic_dev); if (dd->ip_dev->users) bma250_power_down(dd); return 0; }
static int bma250_resume(struct i2c_client *ic_dev) { struct driver_data *dd = bma250_ic_get_data(ic_dev); int rc = 0; if (dd->ip_dev->users) { rc = bma250_power_up(dd); if (rc) return rc; rc = bma250_config(dd); } return rc; }
static int bma250_resume(struct i2c_client *ic_dev) { struct driver_data *dd = bma250_ic_get_data(ic_dev); int rc = 0; if (dd->ip_dev->users) { rc = bma250_power_up(dd); if (rc) return rc; rc = bma250_config(dd, TRUE, TRUE); schedule_delayed_work(&dd->work_data, dd->delay_jiffies); } return rc; }
static int __devexit bma250_remove(struct i2c_client *ic_dev) { struct driver_data *dd = bma250_ic_get_data(ic_dev); int rc; rc = bma250_power_down(dd); if (rc) dev_err(&dd->ip_dev->dev, "%s: power down failed with error %d\n", __func__, rc); remove_sysfs_interfaces(&dd->ip_dev->dev); input_unregister_device(dd->ip_dev); bma250_remove_dbfs_entry(dd); bma250_ic_set_data(ic_dev, NULL); mutex_lock(&bma250_dd_lock); list_del(&dd->next_dd); mutex_unlock(&bma250_dd_lock); kfree(dd); return 0; }