|
33 | 33 | #define AXI_ADC_TRIG_REG_TRIGGERED 0x3c
|
34 | 34 | #define AXI_ADC_TRIG_REG_DELAY 0x40
|
35 | 35 | #define AXI_ADC_TRIG_REG_STREAMING 0x44
|
| 36 | +#define AXI_ADC_TRIG_REG_HOLDOFF 0x48 |
36 | 37 |
|
37 | 38 | /* AXI_ADC_TRIG_REG_CONFIG_TRIGGER */
|
38 | 39 | #define CONF_LOW_LEVEL 0
|
|
49 | 50 | #define TRIGGER_ADC_CHAN 2
|
50 | 51 | #define TRIGGER_MIX_CHAN 2
|
51 | 52 |
|
| 53 | +#define TRIGGER_HOLDOFF_MASK GENMASK(31, 0) |
| 54 | + |
52 | 55 | #define IIO_ENUM_AVAILABLE_SEPARATE(_name, _e) \
|
53 | 56 | { \
|
54 | 57 | .name = (_name "_available"), \
|
@@ -497,6 +500,35 @@ static ssize_t axi_adc_trig_set_streaming(struct iio_dev *indio_dev,
|
497 | 500 | return len;
|
498 | 501 | }
|
499 | 502 |
|
| 503 | +static ssize_t axi_adc_trig_get_holdoff(struct iio_dev *indio_dev, |
| 504 | + uintptr_t priv, const struct iio_chan_spec *chan, char *buf) |
| 505 | +{ |
| 506 | + struct axi_adc_trig *axi_adc_trig = iio_priv(indio_dev); |
| 507 | + unsigned int val; |
| 508 | + |
| 509 | + val = axi_adc_trig_read(axi_adc_trig, AXI_ADC_TRIG_REG_HOLDOFF); |
| 510 | + val &= TRIGGER_HOLDOFF_MASK; |
| 511 | + |
| 512 | + return scnprintf(buf, PAGE_SIZE, "%d\n", val); |
| 513 | +} |
| 514 | + |
| 515 | +static ssize_t axi_adc_trig_set_holdoff(struct iio_dev *indio_dev, |
| 516 | + uintptr_t priv, const struct iio_chan_spec *chan, const char *buf, |
| 517 | + size_t len) |
| 518 | +{ |
| 519 | + struct axi_adc_trig *axi_adc_trig = iio_priv(indio_dev); |
| 520 | + unsigned int val; |
| 521 | + int ret; |
| 522 | + |
| 523 | + ret = kstrtouint(buf, 10, &val); |
| 524 | + if (ret < 0) |
| 525 | + return ret; |
| 526 | + |
| 527 | + axi_adc_trig_write(axi_adc_trig, AXI_ADC_TRIG_REG_HOLDOFF, val); |
| 528 | + |
| 529 | + return len; |
| 530 | +} |
| 531 | + |
500 | 532 | static ssize_t axi_adc_trig_get_embedded_trigger(struct iio_dev *indio_dev,
|
501 | 533 | uintptr_t priv, const struct iio_chan_spec *chan, char *buf)
|
502 | 534 | {
|
@@ -565,6 +597,12 @@ static const struct iio_chan_spec_ext_info axi_adc_trig_analog_info[] = {
|
565 | 597 | .write = axi_adc_trig_set_streaming,
|
566 | 598 | .read = axi_adc_trig_get_streaming,
|
567 | 599 | },
|
| 600 | + { |
| 601 | + .name = "holdoff_raw", |
| 602 | + .shared = IIO_SHARED_BY_ALL, |
| 603 | + .write = axi_adc_trig_set_holdoff, |
| 604 | + .read = axi_adc_trig_get_holdoff, |
| 605 | + }, |
568 | 606 | {}
|
569 | 607 | };
|
570 | 608 |
|
|
0 commit comments