adis16260.c (75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37) adis16260.c (160b37f49ec3b3adc6916f411ee3ceebea8dd13d)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * ADIS16260/ADIS16265 Programmable Digital Gyroscope Sensor Driver
4 *
5 * Copyright 2010 Analog Devices Inc.
6 */
7
8#include <linux/interrupt.h>

--- 279 unchanged lines hidden (view full) ---

288 return adis_write_reg_16(adis, addr, val);
289 case IIO_CHAN_INFO_CALIBSCALE:
290 if (val < 0 || val >= 4096)
291 return -EINVAL;
292
293 addr = adis16260_addresses[chan->scan_index][1];
294 return adis_write_reg_16(adis, addr, val);
295 case IIO_CHAN_INFO_SAMP_FREQ:
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * ADIS16260/ADIS16265 Programmable Digital Gyroscope Sensor Driver
4 *
5 * Copyright 2010 Analog Devices Inc.
6 */
7
8#include <linux/interrupt.h>

--- 279 unchanged lines hidden (view full) ---

288 return adis_write_reg_16(adis, addr, val);
289 case IIO_CHAN_INFO_CALIBSCALE:
290 if (val < 0 || val >= 4096)
291 return -EINVAL;
292
293 addr = adis16260_addresses[chan->scan_index][1];
294 return adis_write_reg_16(adis, addr, val);
295 case IIO_CHAN_INFO_SAMP_FREQ:
296 mutex_lock(&indio_dev->mlock);
296 mutex_lock(&adis->state_lock);
297 if (spi_get_device_id(adis->spi)->driver_data)
298 t = 256 / val;
299 else
300 t = 2048 / val;
301
302 if (t > ADIS16260_SMPL_PRD_DIV_MASK)
303 t = ADIS16260_SMPL_PRD_DIV_MASK;
304 else if (t > 0)
305 t--;
306
307 if (t >= 0x0A)
308 adis->spi->max_speed_hz = ADIS16260_SPI_SLOW;
309 else
310 adis->spi->max_speed_hz = ADIS16260_SPI_FAST;
297 if (spi_get_device_id(adis->spi)->driver_data)
298 t = 256 / val;
299 else
300 t = 2048 / val;
301
302 if (t > ADIS16260_SMPL_PRD_DIV_MASK)
303 t = ADIS16260_SMPL_PRD_DIV_MASK;
304 else if (t > 0)
305 t--;
306
307 if (t >= 0x0A)
308 adis->spi->max_speed_hz = ADIS16260_SPI_SLOW;
309 else
310 adis->spi->max_speed_hz = ADIS16260_SPI_FAST;
311 ret = adis_write_reg_8(adis, ADIS16260_SMPL_PRD, t);
311 ret = __adis_write_reg_8(adis, ADIS16260_SMPL_PRD, t);
312
312
313 mutex_unlock(&indio_dev->mlock);
313 mutex_unlock(&adis->state_lock);
314 return ret;
315 }
316 return -EINVAL;
317}
318
319static const struct iio_info adis16260_info = {
320 .read_raw = &adis16260_read_raw,
321 .write_raw = &adis16260_write_raw,

--- 124 unchanged lines hidden ---
314 return ret;
315 }
316 return -EINVAL;
317}
318
319static const struct iio_info adis16260_info = {
320 .read_raw = &adis16260_read_raw,
321 .write_raw = &adis16260_write_raw,

--- 124 unchanged lines hidden ---