max30102.c (29583dfcd2dd72c766422bd05c16f06c6b1fb356) | max30102.c (6b701cda3632c9cffaea6f79c5fe638800c8f7f1) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * max30102.c - Support for MAX30102 heart rate and pulse oximeter sensor 4 * 5 * Copyright (C) 2017 Matt Ranostay <matt.ranostay@konsulko.com> 6 * 7 * Support for MAX30105 optical particle sensor 8 * Copyright (C) 2017 Peter Meerwald-Stadler <pmeerw@pmeerw.net> --- 463 unchanged lines hidden (view full) --- 472 int ret = -EINVAL; 473 474 switch (mask) { 475 case IIO_CHAN_INFO_RAW: 476 /* 477 * Temperature reading can only be acquired when not in 478 * shutdown; leave shutdown briefly when buffer not running 479 */ | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * max30102.c - Support for MAX30102 heart rate and pulse oximeter sensor 4 * 5 * Copyright (C) 2017 Matt Ranostay <matt.ranostay@konsulko.com> 6 * 7 * Support for MAX30105 optical particle sensor 8 * Copyright (C) 2017 Peter Meerwald-Stadler <pmeerw@pmeerw.net> --- 463 unchanged lines hidden (view full) --- 472 int ret = -EINVAL; 473 474 switch (mask) { 475 case IIO_CHAN_INFO_RAW: 476 /* 477 * Temperature reading can only be acquired when not in 478 * shutdown; leave shutdown briefly when buffer not running 479 */ |
480 mutex_lock(&indio_dev->mlock); 481 if (!iio_buffer_enabled(indio_dev)) | 480any_mode_retry: 481 if (iio_device_claim_buffer_mode(indio_dev)) { 482 /* 483 * This one is a *bit* hacky. If we cannot claim buffer 484 * mode, then try direct mode so that we make sure 485 * things cannot concurrently change. And we just keep 486 * trying until we get one of the modes... 487 */ 488 if (iio_device_claim_direct_mode(indio_dev)) 489 goto any_mode_retry; 490 |
482 ret = max30102_get_temp(data, val, true); | 491 ret = max30102_get_temp(data, val, true); |
483 else | 492 iio_device_release_direct_mode(indio_dev); 493 } else { |
484 ret = max30102_get_temp(data, val, false); | 494 ret = max30102_get_temp(data, val, false); |
485 mutex_unlock(&indio_dev->mlock); | 495 iio_device_release_buffer_mode(indio_dev); 496 } |
486 if (ret) 487 return ret; 488 489 ret = IIO_VAL_INT; 490 break; 491 case IIO_CHAN_INFO_SCALE: 492 *val = 1000; /* 62.5 */ 493 *val2 = 16; --- 138 unchanged lines hidden --- | 497 if (ret) 498 return ret; 499 500 ret = IIO_VAL_INT; 501 break; 502 case IIO_CHAN_INFO_SCALE: 503 *val = 1000; /* 62.5 */ 504 *val2 = 16; --- 138 unchanged lines hidden --- |