// SPDX-License-Identifier: GPL-2.0 /* * AD8366 and similar Gain Amplifiers * This driver supports the following gain amplifiers: * AD8366 Dual-Digital Variable Gain Amplifier (VGA) * ADA4961 BiCMOS RF Digital Gain Amplifier (DGA) * ADL5240 Digitally controlled variable gain amplifier (VGA) * HMC792A 0.25 dB LSB GaAs MMIC 6-Bit Digital Attenuator * HMC1119 0.25 dB LSB, 7-Bit, Silicon Digital Attenuator * * Copyright 2012-2019 Analog Devices Inc.
*/
st->data[0] = ch_b >> 4;
st->data[1] = (ch_b << 4) | (ch_a >> 2); break; case ID_ADA4961:
st->data[0] = ch_a & 0x1F; break; case ID_ADL5240:
st->data[0] = (ch_a & 0x3F); break; case ID_HMC792: case ID_HMC1119:
st->data[0] = ch_a; break;
}
ret = spi_write(st->spi, st->data, indio_dev->num_channels); if (ret < 0)
dev_err(&indio_dev->dev, "write failed (%d)", ret);
return ret;
}
staticint ad8366_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, int *val2, long m)
{ struct ad8366_state *st = iio_priv(indio_dev); int ret; int code, gain = 0;
mutex_lock(&st->lock); switch (m) { case IIO_CHAN_INFO_HARDWAREGAIN:
code = st->ch[chan->channel];
switch (st->type) { case ID_AD8366:
gain = code * 253 + 4500; break; case ID_ADA4961:
gain = 15000 - code * 1000; break; case ID_ADL5240:
gain = 20000 - 31500 + code * 500; break; case ID_HMC792:
gain = -1 * code * 500; break; case ID_HMC1119:
gain = -1 * code * 250; break;
}
/* Values in dB */
*val = gain / 1000;
*val2 = (gain % 1000) * 1000;
ret = IIO_VAL_INT_PLUS_MICRO_DB; break; default:
ret = -EINVAL;
}
mutex_unlock(&st->lock);
return ret;
};
staticint ad8366_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long mask)
{ struct ad8366_state *st = iio_priv(indio_dev); conststruct ad8366_info *inf = st->info; int code = 0, gain; int ret;
/* Values in dB */ if (val < 0)
gain = (val * 1000) - (val2 / 1000); else
gain = (val * 1000) + (val2 / 1000);
if (gain > inf->gain_max || gain < inf->gain_min) return -EINVAL;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.