Lines Matching defs:iqs621_als

53 static int iqs621_als_init(struct iqs621_als_private *iqs621_als)
55 struct iqs62x_core *iqs62x = iqs621_als->iqs62x;
59 switch (iqs621_als->ir_flags_mask) {
62 iqs621_als->thresh_prox);
67 iqs621_als->thresh_prox);
72 iqs621_als->thresh_light);
77 iqs621_als->thresh_dark);
83 if (iqs621_als->light_en || iqs621_als->range_en)
86 if (iqs621_als->prox_en)
97 struct iqs621_als_private *iqs621_als;
105 iqs621_als = container_of(notifier, struct iqs621_als_private,
107 indio_dev = iqs621_als->indio_dev;
110 mutex_lock(&iqs621_als->lock);
113 ret = iqs621_als_init(iqs621_als);
125 if (!iqs621_als->light_en && !iqs621_als->range_en &&
126 !iqs621_als->prox_en) {
133 light_old = iqs621_als->als_flags & IQS621_ALS_FLAGS_LIGHT;
135 if (iqs621_als->light_en && light_new && !light_old)
141 else if (iqs621_als->light_en && !light_new && light_old)
150 range_old = iqs621_als->als_flags & IQS621_ALS_FLAGS_RANGE;
152 if (iqs621_als->range_en && (range_new > range_old))
158 else if (iqs621_als->range_en && (range_new < range_old))
166 prox_new = event_data->ir_flags & iqs621_als->ir_flags_mask;
167 prox_old = iqs621_als->ir_flags & iqs621_als->ir_flags_mask;
169 if (iqs621_als->prox_en && prox_new && !prox_old)
175 else if (iqs621_als->prox_en && !prox_new && prox_old)
182 iqs621_als->als_flags = event_data->als_flags;
183 iqs621_als->ir_flags = event_data->ir_flags;
187 mutex_unlock(&iqs621_als->lock);
194 struct iqs621_als_private *iqs621_als = context;
195 struct iio_dev *indio_dev = iqs621_als->indio_dev;
198 ret = blocking_notifier_chain_unregister(&iqs621_als->iqs62x->nh,
199 &iqs621_als->notifier);
209 struct iqs621_als_private *iqs621_als = iio_priv(indio_dev);
210 struct iqs62x_core *iqs62x = iqs621_als->iqs62x;
243 struct iqs621_als_private *iqs621_als = iio_priv(indio_dev);
246 mutex_lock(&iqs621_als->lock);
250 ret = iqs621_als->light_en;
254 ret = iqs621_als->range_en;
258 ret = iqs621_als->prox_en;
265 mutex_unlock(&iqs621_als->lock);
276 struct iqs621_als_private *iqs621_als = iio_priv(indio_dev);
277 struct iqs62x_core *iqs62x = iqs621_als->iqs62x;
281 mutex_lock(&iqs621_als->lock);
286 iqs621_als->als_flags = val;
292 iqs621_als->range_en || state ? 0 :
295 iqs621_als->light_en = state;
301 iqs621_als->light_en || state ? 0 :
304 iqs621_als->range_en = state;
311 iqs621_als->ir_flags = val;
317 iqs621_als->prox_en = state;
325 mutex_unlock(&iqs621_als->lock);
337 struct iqs621_als_private *iqs621_als = iio_priv(indio_dev);
340 mutex_lock(&iqs621_als->lock);
344 *val = iqs621_als->thresh_light * 16;
348 *val = iqs621_als->thresh_dark * 4;
352 if (iqs621_als->ir_flags_mask == IQS622_IR_FLAGS_TOUCH)
353 *val = iqs621_als->thresh_prox * 4;
355 *val = iqs621_als->thresh_prox;
362 mutex_unlock(&iqs621_als->lock);
374 struct iqs621_als_private *iqs621_als = iio_priv(indio_dev);
375 struct iqs62x_core *iqs62x = iqs621_als->iqs62x;
380 mutex_lock(&iqs621_als->lock);
387 thresh_cache = &iqs621_als->thresh_light;
395 thresh_cache = &iqs621_als->thresh_dark;
432 thresh_cache = &iqs621_als->thresh_prox;
447 iqs621_als->ir_flags_mask = ir_flags_mask;
450 mutex_unlock(&iqs621_als->lock);
544 struct iqs621_als_private *iqs621_als;
549 indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*iqs621_als));
553 iqs621_als = iio_priv(indio_dev);
554 iqs621_als->iqs62x = iqs62x;
555 iqs621_als->indio_dev = indio_dev;
562 iqs621_als->thresh_prox = val;
563 iqs621_als->ir_flags_mask = IQS622_IR_FLAGS_TOUCH;
572 iqs621_als->thresh_light = val;
578 iqs621_als->thresh_dark = val;
588 mutex_init(&iqs621_als->lock);
590 iqs621_als->notifier.notifier_call = iqs621_als_notifier;
591 ret = blocking_notifier_chain_register(&iqs621_als->iqs62x->nh,
592 &iqs621_als->notifier);
600 iqs621_als);