static int ade7758_spi_write_reg_16(struct device *dev, u8 reg_address, u16 value) { int ret; struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ade7758_state *st = iio_priv(indio_dev); struct spi_transfer xfers[] = { { .tx_buf = st->tx, .bits_per_word = 8, .len = 3, } };
static ssize_t show_zone(struct device *dev, struct device_attribute *attr, char *buf) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); u8 zone; int ret; ret = lm3533_als_get_zone(indio_dev, &zone); if (ret) return ret; return scnprintf(buf, PAGE_SIZE, "%u\n", zone); }
/* proximity scheme */ static ssize_t show_prox_infrared_suppression(struct device *dev, struct device_attribute *attr, char *buf) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct isl29018_chip *chip = iio_priv(indio_dev); /* * return the "proximity scheme" i.e. if the chip does on chip * infrared suppression (1 means perform on chip suppression) */ return sprintf(buf, "%d\n", chip->prox_scheme); }
static int ms5611_i2c_read_prom_word(struct device *dev, int index, u16 *word) { int ret; struct ms5611_state *st = iio_priv(dev_to_iio_dev(dev)); ret = i2c_smbus_read_word_swapped(st->client, MS5611_READ_PROM_WORD + (index << 1)); if (ret < 0) return ret; *word = ret; return 0; }
static ssize_t adis16136_read_frequency(struct device *dev, struct device_attribute *attr, char *buf) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct adis16136 *adis16136 = iio_priv(indio_dev); unsigned int freq; int ret; ret = adis16136_get_freq(adis16136, &freq); if (ret < 0) return ret; return sprintf(buf, "%d\n", freq); }
static ssize_t nau7802_show_scales(struct device *dev, struct device_attribute *attr, char *buf) { struct nau7802_state *st = iio_priv(dev_to_iio_dev(dev)); int i, len = 0; for (i = 0; i < ARRAY_SIZE(st->scale_avail); i++) len += scnprintf(buf + len, PAGE_SIZE - len, "0.%09d ", st->scale_avail[i]); buf[len-1] = '\n'; return len; }
static ssize_t as3935_sensor_sensitivity_show(struct device *dev, struct device_attribute *attr, char *buf) { struct as3935_state *st = iio_priv(dev_to_iio_dev(dev)); int val, ret; ret = as3935_read(st, AS3935_AFE_GAIN, &val); if (ret) return ret; val = (val & AS3935_AFE_MASK) >> 1; return sprintf(buf, "%d\n", val); }
static int ade7753_spi_read_reg_24(struct device *dev, u8 reg_address, u32 *val) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ade7753_state *st = iio_priv(indio_dev); int ret; struct spi_transfer xfers[] = { { .tx_buf = st->tx, .bits_per_word = 8, .len = 1, }, { .rx_buf = st->tx,
static int ms5611_spi_read_adc(struct device *dev, s32 *val) { int ret; u8 buf[3] = { MS5611_READ_ADC }; struct ms5611_state *st = iio_priv(dev_to_iio_dev(dev)); ret = spi_write_then_read(st->client, buf, 1, buf, 3); if (ret < 0) return ret; *val = (buf[0] << 16) | (buf[1] << 8) | buf[2]; return 0; }
static ssize_t adis16400_read_frequency(struct device *dev, struct device_attribute *attr, char *buf) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct adis16400_state *st = iio_priv(indio_dev); int ret; ret = st->variant->get_freq(st); if (ret < 0) return ret; return sprintf(buf, "%d.%.3d\n", ret / 1000, ret % 1000); }
static ssize_t kxcjk1013_get_samp_freq_avail(struct device *dev, struct device_attribute *attr, char *buf) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct kxcjk1013_data *data = iio_priv(indio_dev); const char *str; if (data->chipset == KXTF9) str = kxtf9_samp_freq_avail; else str = kxcjk1013_samp_freq_avail; return sprintf(buf, "%s\n", str); }
static ssize_t show_int_time_available(struct device *dev, struct device_attribute *attr, char *buf) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct isl29018_chip *chip = iio_priv(indio_dev); int i, len = 0; for (i = 0; i < ARRAY_SIZE(isl29018_int_utimes[chip->type]); ++i) len += sprintf(buf + len, "0.%06d ", isl29018_int_utimes[chip->type][i]); buf[len - 1] = '\n'; return len; }
static ssize_t hmc5843_show_sampling_frequency(struct device *dev, struct device_attribute *attr, char *buf) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct i2c_client *client = to_i2c_client(indio_dev->dev.parent); struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); struct hmc5843_data *data = iio_priv(indio_dev); s32 rate; rate = i2c_smbus_read_byte_data(client, this_attr->address); if (rate < 0) return rate; rate = (rate & HMC5843_RATE_BITMASK) >> HMC5843_RATE_OFFSET; return sprintf(buf, "%s\n", data->variant->regval_to_sample_freq[rate]); }
static ssize_t temp_show(struct device *dev, struct device_attribute *attr, char *buf) { struct mxc4005_data *data = iio_priv(dev_to_iio_dev(dev)); unsigned int val; int ret; ret = regmap_read(data->regmap, MXC4005_REG_TEMP, &val); if (ret) dev_err(data->dev, "unable to read temp\n"); return sprintf(buf, "temp=%d\n", val); }
int ade7758_spi_write_reg_8(struct device *dev, u8 reg_address, u8 val) { int ret; struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ade7758_state *st = iio_priv(indio_dev); mutex_lock(&st->buf_lock); st->tx[0] = ADE7758_WRITE_REG(reg_address); st->tx[1] = val; ret = spi_write(st->us, st->tx, 2); mutex_unlock(&st->buf_lock); return ret; }
static ssize_t hmc5843_show_measurement_configuration(struct device *dev, struct device_attribute *attr, char *buf) { struct hmc5843_data *data = iio_priv(dev_to_iio_dev(dev)); unsigned int val; int ret; ret = regmap_read(data->regmap, HMC5843_CONFIG_REG_A, &val); if (ret) return ret; val &= HMC5843_MEAS_CONF_MASK; return sprintf(buf, "%d\n", val); }
static ssize_t ad9834_show_out1_wavetype_available(struct device *dev, struct device_attribute *attr, char *buf) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ad9834_state *st = iio_priv(indio_dev); char *str; if (st->control & AD9834_MODE) str = ""; else str = "square"; return sprintf(buf, "%s\n", str); }
static ssize_t ade7854_read_32bit(struct device *dev, struct device_attribute *attr, char *buf) { int ret; u32 val = 0; struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ade7854_state *st = iio_priv(indio_dev); ret = st->read_reg_32(dev, this_attr->address, &val); if (ret) return ret; return sprintf(buf, "%u\n", val); }
static int palmas_gpadc_remove(struct platform_device *pdev) { struct iio_dev *iodev = dev_to_iio_dev(&pdev->dev); struct palmas_gpadc *adc = iio_priv(iodev); struct palmas_platform_data *pdata = dev_get_platdata(pdev->dev.parent); if (pdata->gpadc_pdata->iio_maps) iio_map_array_unregister(iodev); iio_device_unregister(iodev); free_irq(adc->irq, adc); if (adc->wakeup1_enable) free_irq(adc->irq_auto_0, adc); if (adc->wakeup2_enable) free_irq(adc->irq_auto_1, adc); iio_device_free(iodev); return 0; }
static int ade7753_spi_write_reg_16(struct device *dev, u8 reg_address, u16 value) { int ret; struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ade7753_state *st = iio_priv(indio_dev); mutex_lock(&st->buf_lock); st->tx[0] = ADE7753_WRITE_REG(reg_address); st->tx[1] = (value >> 8) & 0xFF; st->tx[2] = value & 0xFF; ret = spi_write(st->us, st->tx, 3); mutex_unlock(&st->buf_lock); return ret; }
static ssize_t vf610_show_samp_freq_avail(struct device *dev, struct device_attribute *attr, char *buf) { struct vf610_adc *info = iio_priv(dev_to_iio_dev(dev)); size_t len = 0; int i; for (i = 0; i < ARRAY_SIZE(info->sample_freq_avail); i++) len += scnprintf(buf + len, PAGE_SIZE - len, "%u ", info->sample_freq_avail[i]); /* replace trailing space by newline */ buf[len - 1] = '\n'; return len; }
static ssize_t hmc5843_show_samp_freq_avail(struct device *dev, struct device_attribute *attr, char *buf) { struct hmc5843_data *data = iio_priv(dev_to_iio_dev(dev)); size_t len = 0; int i; for (i = 0; i < data->variant->n_regval_to_samp_freq; i++) len += scnprintf(buf + len, PAGE_SIZE - len, "%d.%d ", data->variant->regval_to_samp_freq[i][0], data->variant->regval_to_samp_freq[i][1]); /* replace trailing space by newline */ buf[len - 1] = '\n'; return len; }
static ssize_t hmc5843_show_scale_avail(struct device *dev, struct device_attribute *attr, char *buf) { struct hmc5843_data *data = iio_priv(dev_to_iio_dev(dev)); size_t len = 0; int i; for (i = 0; i < HMC5843_RANGE_GAINS; i++) len += scnprintf(buf + len, PAGE_SIZE - len, "0.%09d ", data->variant->regval_to_nanoscale[i]); /* replace trailing space by newline */ buf[len - 1] = '\n'; return len; }
static int ade7754_spi_read_reg_8(struct device *dev, u8 reg_address, u8 *val) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ade7754_state *st = iio_priv(indio_dev); int ret; ret = spi_w8r8(st->us, ADE7754_READ_REG(reg_address)); if (ret < 0) { dev_err(&st->us->dev, "problem when reading 8 bit register 0x%02X", reg_address); return ret; } *val = ret; return 0; }
static ssize_t ad7816_store_mode(struct device *dev, struct device_attribute *attr, const char *buf, size_t len) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ad7816_chip_info *chip = iio_priv(indio_dev); if (strcmp(buf, "full")) { gpio_set_value(chip->rdwr_pin, 1); chip->mode = AD7816_FULL; } else { gpio_set_value(chip->rdwr_pin, 0); chip->mode = AD7816_PD; } return len; }
static int ade7854_i2c_write_reg_8(struct device *dev, u16 reg_address, u8 value) { int ret; struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ade7854_state *st = iio_priv(indio_dev); mutex_lock(&st->buf_lock); st->tx[0] = (reg_address >> 8) & 0xFF; st->tx[1] = reg_address & 0xFF; st->tx[2] = value; ret = i2c_master_send(st->i2c, st->tx, 3); mutex_unlock(&st->buf_lock); return ret; }
static ssize_t ad9834_show_out0_wavetype_available(struct device *dev, struct device_attribute *attr, char *buf) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct ad9834_state *st = iio_priv(indio_dev); char *str; if ((st->devid == ID_AD9833) || (st->devid == ID_AD9837)) str = "sine triangle square"; else if (st->control & AD9834_OPBITEN) str = "sine"; else str = "sine triangle"; return sprintf(buf, "%s\n", str); }
static ssize_t ad9951_set_parameter(struct device *dev, struct device_attribute *attr, const char *buf, size_t len) { struct spi_transfer xfer; int ret; struct ad9951_config *config = (struct ad9951_config *)buf; struct iio_dev *idev = dev_to_iio_dev(dev); struct ad9951_state *st = iio_priv(idev); xfer.len = 3; xfer.tx_buf = &config->asf[0]; mutex_lock(&st->lock); ret = spi_sync_transfer(st->sdev, &xfer, 1); if (ret) goto error_ret; xfer.len = 2; xfer.tx_buf = &config->arr[0]; ret = spi_sync_transfer(st->sdev, &xfer, 1); if (ret) goto error_ret; xfer.len = 5; xfer.tx_buf = &config->ftw0[0]; ret = spi_sync_transfer(st->sdev, &xfer, 1); if (ret) goto error_ret; xfer.len = 3; xfer.tx_buf = &config->ftw1[0]; ret = spi_sync_transfer(st->sdev, &xfer, 1); if (ret) goto error_ret; error_ret: mutex_unlock(&st->lock); return ret ? ret : len; }
static ssize_t srf08_store_sensitivity(struct device *dev, struct device_attribute *attr, const char *buf, size_t len) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct srf08_data *data = iio_priv(indio_dev); int ret; unsigned int val; ret = kstrtouint(buf, 10, &val); if (ret) return ret; ret = srf08_write_sensitivity(data, val); if (ret < 0) return ret; return len; }
static ssize_t srf08_store_range_mm(struct device *dev, struct device_attribute *attr, const char *buf, size_t len) { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct srf08_data *data = iio_priv(indio_dev); int ret; int integer, fract; ret = iio_str_to_fixpoint(buf, 100, &integer, &fract); if (ret) return ret; ret = srf08_write_range_mm(data, integer * 1000 + fract); if (ret < 0) return ret; return len; }