Lines Matching defs:data
221 static void mma9553_init_events(struct mma9553_data *data)
225 data->num_events = MMA9553_EVENTS_INFO_SIZE;
226 for (i = 0; i < data->num_events; i++) {
227 data->events[i].info = &mma9553_events_info[i];
228 data->events[i].enabled = false;
232 static struct mma9553_event *mma9553_get_event(struct mma9553_data *data,
239 for (i = 0; i < data->num_events; i++)
240 if (data->events[i].info->type == type &&
241 data->events[i].info->mod == mod &&
242 data->events[i].info->dir == dir)
243 return &data->events[i];
248 static bool mma9553_is_any_event_enabled(struct mma9553_data *data,
254 for (i = 0; i < data->num_events; i++)
255 if ((check_type && data->events[i].info->type == type &&
256 data->events[i].enabled) ||
257 (!check_type && data->events[i].enabled))
263 static int mma9553_set_config(struct mma9553_data *data, u16 reg,
274 ret = mma9551_write_config_word(data->client, MMA9551_APPID_PEDOMETER,
277 dev_err(&data->client->dev,
285 config = mma9553_set_bits(data->conf.config, 1,
288 ret = mma9551_write_config_word(data->client, MMA9551_APPID_PEDOMETER,
291 dev_err(&data->client->dev,
300 ret = mma9551_read_config_word(data->client,
312 static int mma9553_read_activity_stepcnt(struct mma9553_data *data,
318 ret = mma9551_read_status_words(data->client, MMA9551_APPID_PEDOMETER,
322 dev_err(&data->client->dev,
333 static int mma9553_conf_gpio(struct mma9553_data *data)
340 activity_enabled = mma9553_is_any_event_enabled(data, true,
342 ev_step_detect = mma9553_get_event(data, IIO_STEPS, IIO_NO_MOD,
358 if (data->gpio_bitnum == bitnum)
363 ret = mma9553_read_activity_stepcnt(data, &data->activity,
364 &data->stepcnt);
369 ret = mma9551_gpio_config(data->client, MMA9553_DEFAULT_GPIO_PIN, appid,
373 data->gpio_bitnum = bitnum;
378 static int mma9553_init(struct mma9553_data *data)
382 ret = mma9551_read_version(data->client);
391 ret = mma9551_read_config_words(data->client, MMA9551_APPID_PEDOMETER,
393 sizeof(data->conf) / sizeof(u16),
394 (u16 *)&data->conf);
396 dev_err(&data->client->dev,
402 data->gpio_bitnum = MMA9553_MAX_BITNUM;
403 ret = mma9553_conf_gpio(data);
407 ret = mma9551_app_reset(data->client, MMA9551_RSC_PED);
412 data->conf.sleepmin = MMA9553_DEFAULT_SLEEPMIN;
413 data->conf.sleepmax = MMA9553_DEFAULT_SLEEPMAX;
414 data->conf.sleepthd = MMA9553_DEFAULT_SLEEPTHD;
415 data->conf.config = mma9553_set_bits(data->conf.config, 1,
421 data->conf.config = mma9553_set_bits(data->conf.config, 1,
423 ret = mma9551_write_config_words(data->client, MMA9551_APPID_PEDOMETER,
425 sizeof(data->conf) / sizeof(u16),
426 (u16 *)&data->conf);
428 dev_err(&data->client->dev,
433 return mma9551_set_device_state(data->client, true);
436 static int mma9553_read_status_word(struct mma9553_data *data, u16 reg,
448 powered_on = mma9553_is_any_event_enabled(data, false, 0) ||
449 data->stepcnt_enabled;
451 dev_err(&data->client->dev, "No channels enabled\n");
455 mutex_lock(&data->mutex);
456 ret = mma9551_read_status_word(data->client, MMA9551_APPID_PEDOMETER,
458 mutex_unlock(&data->mutex);
466 struct mma9553_data *data = iio_priv(indio_dev);
475 ret = mma9553_read_status_word(data,
483 ret = mma9553_read_status_word(data,
491 ret = mma9553_read_status_word(data,
518 ret = mma9553_read_status_word(data,
526 ret = mma9553_read_status_word(data,
534 mutex_lock(&data->mutex);
535 ret = mma9551_read_accel_chan(data->client,
537 mutex_unlock(&data->mutex);
559 *val = data->stepcnt_enabled;
562 tmp = mma9553_get_bits(data->conf.height_weight,
568 *val = mma9553_get_bits(data->conf.height_weight,
574 *val = mma9553_get_bits(data->conf.filter,
583 *val = mma9553_get_bits(data->conf.filter,
594 *val = mma9553_get_bits(data->conf.speed_step,
609 struct mma9553_data *data = iio_priv(indio_dev);
614 if (data->stepcnt_enabled == !!val)
616 mutex_lock(&data->mutex);
617 ret = mma9551_set_power_state(data->client, val);
619 mutex_unlock(&data->mutex);
622 data->stepcnt_enabled = val;
623 mutex_unlock(&data->mutex);
630 mutex_lock(&data->mutex);
631 ret = mma9553_set_config(data,
633 &data->conf.height_weight,
635 mutex_unlock(&data->mutex);
640 mutex_lock(&data->mutex);
641 ret = mma9553_set_config(data,
643 &data->conf.height_weight,
645 mutex_unlock(&data->mutex);
658 mutex_lock(&data->mutex);
659 ret = mma9553_set_config(data, MMA9553_REG_CONF_FILTER,
660 &data->conf.filter, val,
662 mutex_unlock(&data->mutex);
672 mutex_lock(&data->mutex);
673 ret = mma9553_set_config(data, MMA9553_REG_CONF_FILTER,
674 &data->conf.filter, val,
676 mutex_unlock(&data->mutex);
695 mutex_lock(&data->mutex);
696 ret = mma9553_set_config(data,
698 &data->conf.speed_step, val,
700 mutex_unlock(&data->mutex);
715 struct mma9553_data *data = iio_priv(indio_dev);
718 event = mma9553_get_event(data, chan->type, chan->channel2, dir);
730 struct mma9553_data *data = iio_priv(indio_dev);
734 event = mma9553_get_event(data, chan->type, chan->channel2, dir);
741 mutex_lock(&data->mutex);
743 ret = mma9551_set_power_state(data->client, state);
748 ret = mma9553_conf_gpio(data);
752 mutex_unlock(&data->mutex);
759 mma9551_set_power_state(data->client, false);
762 mutex_unlock(&data->mutex);
773 struct mma9553_data *data = iio_priv(indio_dev);
780 *val = mma9553_get_bits(data->conf.speed_step,
796 *val = MMA9553_ACTIVITY_THD_TO_SEC(data->conf.actthd);
813 struct mma9553_data *data = iio_priv(indio_dev);
822 mutex_lock(&data->mutex);
823 ret = mma9553_set_config(data,
825 &data->conf.speed_step, val,
827 mutex_unlock(&data->mutex);
838 mutex_lock(&data->mutex);
839 ret = mma9553_set_config(data, MMA9553_REG_CONF_ACTTHD,
840 &data->conf.actthd,
843 mutex_unlock(&data->mutex);
856 struct mma9553_data *data = iio_priv(indio_dev);
859 gender = mma9553_get_bits(data->conf.filter, MMA9553_MASK_CONF_MALE);
871 struct mma9553_data *data = iio_priv(indio_dev);
877 mutex_lock(&data->mutex);
878 ret = mma9553_set_config(data, MMA9553_REG_CONF_FILTER,
879 &data->conf.filter, gender,
881 mutex_unlock(&data->mutex);
993 struct mma9553_data *data = iio_priv(indio_dev);
995 data->timestamp = iio_get_time_ns(indio_dev);
1007 struct mma9553_data *data = iio_priv(indio_dev);
1013 mutex_lock(&data->mutex);
1014 ret = mma9553_read_activity_stepcnt(data, &activity, &stepcnt);
1016 mutex_unlock(&data->mutex);
1020 ev_prev_activity = mma9553_get_event(data, IIO_ACTIVITY,
1022 data->activity),
1024 ev_activity = mma9553_get_event(data, IIO_ACTIVITY,
1027 ev_step_detect = mma9553_get_event(data, IIO_STEPS, IIO_NO_MOD,
1030 if (ev_step_detect->enabled && (stepcnt != data->stepcnt)) {
1031 data->stepcnt = stepcnt;
1036 data->timestamp);
1039 if (activity != data->activity) {
1040 data->activity = activity;
1049 data->timestamp);
1058 data->timestamp);
1060 mutex_unlock(&data->mutex);
1079 struct mma9553_data *data;
1084 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
1088 data = iio_priv(indio_dev);
1090 data->client = client;
1099 mutex_init(&data->mutex);
1100 mma9553_init_events(data);
1102 ret = mma9553_init(data);
1154 struct mma9553_data *data = iio_priv(indio_dev);
1161 mutex_lock(&data->mutex);
1162 mma9551_set_device_state(data->client, false);
1163 mutex_unlock(&data->mutex);
1169 struct mma9553_data *data = iio_priv(indio_dev);
1172 mutex_lock(&data->mutex);
1173 ret = mma9551_set_device_state(data->client, false);
1174 mutex_unlock(&data->mutex);
1176 dev_err(&data->client->dev, "powering off device failed\n");
1186 struct mma9553_data *data = iio_priv(indio_dev);
1189 ret = mma9551_set_device_state(data->client, true);
1201 struct mma9553_data *data = iio_priv(indio_dev);
1204 mutex_lock(&data->mutex);
1205 ret = mma9551_set_device_state(data->client, false);
1206 mutex_unlock(&data->mutex);
1214 struct mma9553_data *data = iio_priv(indio_dev);
1217 mutex_lock(&data->mutex);
1218 ret = mma9551_set_device_state(data->client, true);
1219 mutex_unlock(&data->mutex);