Commit 176ebcd8 authored by Tristan Gingold's avatar Tristan Gingold

libwrtd: add adcin device configuration.

parent 9729516c
...@@ -14,7 +14,7 @@ LIB = libwrtd.a ...@@ -14,7 +14,7 @@ LIB = libwrtd.a
OBJS := libwrtd-base.o libwrtd-devices.o libwrtd-attributes.o libwrtd-rules.o OBJS := libwrtd-base.o libwrtd-devices.o libwrtd-attributes.o libwrtd-rules.o
INCFLAGS=-I. -I../include -I$(TRTL)/include -I$(TRTL)/lib \ INCFLAGS=-I. -I../include -I$(TRTL)/include -I$(TRTL)/lib \
-I../firmware/tdc -I../firmware/tdc -I../../dependencies/fmc-adc-100m14b4cha-gw/hdl/rtl/wb_gen/
CFLAGS += -fno-strict-aliasing $(INCFLAGS) CFLAGS += -fno-strict-aliasing $(INCFLAGS)
CFLAGS += -Wall -Werror CFLAGS += -Wall -Werror
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "libwrtd.h" #include "libwrtd.h"
#include "libwrtd-private.h" #include "libwrtd-private.h"
#include "hw/fmctdc-direct.h" #include "hw/fmctdc-direct.h"
#include "fmc_adc_alt_trigout.h"
/* FIXME: duplicated macro. */ /* FIXME: duplicated macro. */
#define BASE_DP_TDC_DIRECT 0x8000 #define BASE_DP_TDC_DIRECT 0x8000
...@@ -33,7 +34,26 @@ static enum wrtd_status wrtd_tdc_configure(struct wrtd_dev *wrtd, ...@@ -33,7 +34,26 @@ static enum wrtd_status wrtd_tdc_configure(struct wrtd_dev *wrtd,
addr = wrtd->roots[cpu].devices_io_addr[dev] addr = wrtd->roots[cpu].devices_io_addr[dev]
+ BASE_DP_TDC_DIRECT + DR_REG_CHAN_ENABLE; + BASE_DP_TDC_DIRECT + DR_REG_CHAN_ENABLE;
printf("wrtd: write 0x%08x at 0x%08x on cpu#%u\n", val, addr, cpu); printf("wrtd: tdc write 0x%08x at 0x%08x on cpu#%u\n", val, addr, cpu);
status = wrtd_msg_writew(wrtd, cpu, addr, 1, &val);
return status;
}
static enum wrtd_status wrtd_adcin_configure(struct wrtd_dev *wrtd,
unsigned cpu, unsigned dev,
unsigned int ch_mask)
{
enum wrtd_status status;
uint32_t val;
uint32_t addr;
assert((ch_mask & 0x1f) == ch_mask);
/* Just set the enable bits. */
val = (ch_mask & 0x0f) | ((ch_mask & 0x10) << 4);
addr = wrtd->roots[cpu].devices_io_addr[dev] + ALT_TRIGOUT_ENABLE;
printf("wrtd: adcin write 0x%08x at 0x%08x on cpu#%u\n", val, addr, cpu);
status = wrtd_msg_writew(wrtd, cpu, addr, 1, &val); status = wrtd_msg_writew(wrtd, cpu, addr, 1, &val);
return status; return status;
} }
...@@ -83,7 +103,7 @@ static const struct wrtd_mt_device adcin_device = ...@@ -83,7 +103,7 @@ static const struct wrtd_mt_device adcin_device =
.dir = wrtd_input, .dir = wrtd_input,
.nbr_chs = 5, .nbr_chs = 5,
.channels = adcin_channels, .channels = adcin_channels,
.configure = wrtd_none_configure .configure = wrtd_adcin_configure
}; };
static const struct wrtd_mt_device adcout_device = static const struct wrtd_mt_device adcout_device =
...@@ -98,6 +118,7 @@ static const struct wrtd_mt_device adcout_device = ...@@ -98,6 +118,7 @@ static const struct wrtd_mt_device adcout_device =
static const struct wrtd_mt_config configs[] = static const struct wrtd_mt_config configs[] =
{ {
/* TDC + FD board. */
{ {
.mt_app_id = 0x115790de, .mt_app_id = 0x115790de,
.nbr_cpus = 2, .nbr_cpus = 2,
...@@ -121,6 +142,7 @@ static const struct wrtd_mt_config configs[] = ...@@ -121,6 +142,7 @@ static const struct wrtd_mt_config configs[] =
} }
} }
}, },
/* ADC board. */
{ {
.mt_app_id = 0x115790d1, .mt_app_id = 0x115790d1,
.nbr_cpus = 1, .nbr_cpus = 1,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment