Skip to content

Commit

Permalink
iio: frequency: cf_axi_dds: Add support for frequency interpolation
Browse files Browse the repository at this point in the history
This patch adds support for interpolation factor using an external gpio to
enable axi-interpolation-core.

Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
  • Loading branch information
Mircea Caprioru authored and dbogdan committed Aug 20, 2019
1 parent 725143d commit 0163a51
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion drivers/iio/frequency/cf_axi_dds.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* Licensed under the GPL-2.
*/

#include <linux/gpio/consumer.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/errno.h>
Expand Down Expand Up @@ -44,6 +45,7 @@ struct cf_axi_dds_state {
struct clk *clk;
struct cf_axi_dds_chip_info *chip_info;
struct gpio_desc *plddrbypass_gpio;
struct gpio_desc *interpolation_gpio;

bool standalone;
bool dp_disable;
Expand Down Expand Up @@ -398,7 +400,11 @@ static int cf_axi_interpolation_set(struct cf_axi_dds_state *st,
else
reg &= ~BIT(0);

dds_write(st, ADI_REG_DAC_GP_CONTROL, reg);
if (st->interpolation_gpio)
gpiod_set_value(st->interpolation_gpio,
reg & BIT(0));
else
dds_write(st, ADI_REG_DAC_GP_CONTROL, reg);
break;
default:
ret = -EINVAL;
Expand Down Expand Up @@ -1667,6 +1673,12 @@ static int cf_axi_dds_probe(struct platform_device *pdev)
st->interpolation_factor = 1;
WARN_ON(st->iio_info.attrs != NULL);
st->iio_info.attrs = &cf_axi_int_attribute_group;

st->interpolation_gpio = devm_gpiod_get_optional(&pdev->dev,
"interpolation",
GPIOD_OUT_LOW);
if (IS_ERR(st->interpolation_gpio))
dev_err(&pdev->dev, "interpolation gpio error\n");
}

}
Expand Down

0 comments on commit 0163a51

Please sign in to comment.