---
drivers/iio/adc/ad9467.c | 22 +++++++++++++++++++++-
drivers/iio/adc/cf_axi_adc.h | 7 +++++++
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ad9467.c b/drivers/iio/adc/ad9467.c
index dde27cb..ca67b74 100644
--- a/drivers/iio/adc/ad9467.c
+++ b/drivers/iio/adc/ad9467.c
@@ -370,6 +370,7 @@ static int ad9467_dco_calibrate(struct iio_dev *indio_dev, unsigned chan)
case CHIPID_AD9680:
case CHIPID_AD9625:
case CHIPID_AD9434:
+ case CHIPID_AD9649:
return 0;
case CHIPID_AD9265:
case CHIPID_AD9652:
@@ -417,6 +418,10 @@ static const int ad9652_scale_table[][2] = {
{1250, 0}, {1125, 1}, {1200, 2}, {1250, 3}, {1000, 5},
};
+static const int ad9649_scale_table[][2] = {
+ {2000, 0},
+};
+
static int ad9467_scale(struct axiadc_converter *conv, int index)
{
if (index > conv->chip_info->num_scales)
@@ -848,7 +853,15 @@ static const struct axiadc_chip_info axiadc_chip_info_tbl[] = {
.channel[0] = AIM_CHAN_NOCALIB(0, 0, 12, 'S', 0, NULL, 0),
.channel[1] = AIM_CHAN_NOCALIB(1, 1, 12, 'S', 0, NULL, 0),
},
-
+ [ID_AD9649] = {
+ .name = "AD9649",
+ .max_rate = 80000000UL,
+ .scale_table = ad9649_scale_table,
+ .num_scales = ARRAY_SIZE(ad9649_scale_table),
+ .max_testmode = TESTMODE_ONE_ZERO_TOGGLE,
+ .num_channels = 1,
+ .channel[0] = AIM_CHAN_NOCALIB(0, 0, 14, 'S', 0, NULL, 0),
+ },
};
static int ad9250_setup(struct spi_device *spi, unsigned m, unsigned l)
@@ -1351,6 +1364,12 @@ static int ad9467_probe(struct spi_device *spi)
AD9643_DEF_OUTPUT_MODE | OUTPUT_MODE_TWOS_COMPLEMENT;
ret = ad9467_outputmode_set(spi, conv->adc_output_mode);
break;
+ case CHIPID_AD9649:
+ conv->chip_info = &axiadc_chip_info_tbl[ID_AD9649];
+ conv->adc_output_mode =
+ AD9643_DEF_OUTPUT_MODE | OUTPUT_MODE_TWOS_COMPLEMENT;
+ ret = ad9467_outputmode_set(spi, conv->adc_output_mode);
+ break;
default:
dev_err(&spi->dev, "Unrecognized CHIP_ID 0x%X\n", conv->id);
ret = -ENODEV;
@@ -1424,6 +1443,7 @@ static const struct spi_device_id ad9467_id[] = {
{"ad9680", CHIPID_AD9680},
{"ad9652", CHIPID_AD9652},
{"ad9234", CHIPID_AD9234},
+ {"ad9649", CHIPID_AD9649},
{}
};
diff --git a/drivers/iio/adc/cf_axi_adc.h b/drivers/iio/adc/cf_axi_adc.h
index 0ad524e..8c36b9c 100644
--- a/drivers/iio/adc/cf_axi_adc.h
+++ b/drivers/iio/adc/cf_axi_adc.h
@@ -316,6 +316,12 @@ enum adc_data_sel {
#define CHIPID_AD9234 0xCE
+/*
+ * Analog Devices AD9649
+ */