Commit ac1dccfa authored by Federico Vaga's avatar Federico Vaga

move transfer-mode parameter to top level

Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
parent a2adf871
..
SPDX-License-Identifier: CC-0.0
SPDX-FileCopyrightText: 2019 CERN
=========
Changelog
=========
Unreleased
==========
Changed
-------
- drv,lib: API change fmctdc_buffer_mode() -> fmctdc_transfer_mode()
......@@ -41,6 +41,8 @@ static struct zio_attribute ft_zattr_dev[] = {
ZIO_PARAM_EXT("temperature", ZIO_RO_PERM, FT_ATTR_PARAM_TEMP, 0),
ZIO_PARAM_EXT("test_dma_sg", ZIO_WO_PERM, FT_ATTR_PARAM_DMA_SG, 0),
ZIO_PARAM_EXT("test_dma", ZIO_WO_PERM, FT_ATTR_PARAM_DMA, 0),
ZIO_PARAM_EXT("transfer-mode", ZIO_RO_PERM,
FT_ATTR_TDC_TRANSFER_MODE, 0),
};
/* Extended attributes for the TDC (== input) cset */
......@@ -49,7 +51,6 @@ static struct zio_attribute ft_zattr_input[] = {
ZIO_ATTR_EXT("zero-offset", ZIO_RO_PERM, FT_ATTR_TDC_ZERO_OFFSET, 0),
ZIO_ATTR_EXT("user-offset", ZIO_RW_PERM, FT_ATTR_TDC_USER_OFFSET, 0),
ZIO_ATTR_EXT("diff-reference", ZIO_RW_PERM, FT_ATTR_TDC_DELAY_REF, 0),
ZIO_ATTR_EXT("transfer-mode", ZIO_RO_PERM, FT_ATTR_TDC_TRANSFER_MODE, 0),
ZIO_ATTR_EXT("irq_coalescing_time", ZIO_RW_PERM,
FT_ATTR_TDC_COALESCING_TIME, 10),
ZIO_ATTR_EXT("raw_readout_mode", ZIO_RW_PERM,
......@@ -226,9 +227,6 @@ static int ft_zio_info_channel(struct device *dev, struct zio_attribute *zattr,
break;
case FT_ATTR_TDC_DELAY_REF:
return ft_delta_reference_get(ft, cset->index, usr_val);
case FT_ATTR_TDC_TRANSFER_MODE:
*usr_val = ft->mode;
break;
case FT_ATTR_TDC_COALESCING_TIME:
*usr_val = ft_irq_coalescing_timeout_get(ft, cset->index);
break;
......@@ -263,6 +261,9 @@ static int ft_zio_info_get(struct device *dev, struct zio_attribute *zattr,
ft = zdev->priv_d;
switch (zattr->id) {
case FT_ATTR_TDC_TRANSFER_MODE:
*usr_val = ft->mode;
break;
case FT_ATTR_PARAM_TEMP:
ret = ft_temperature_get(ft, &ft->temp);
if (ret < 0)
......
......@@ -928,7 +928,7 @@ int fmctdc_reference_set(struct fmctdc_board *userb,
return -1;
}
err = fmctdc_buffer_mode(userb, ch_target, &mode);
err = fmctdc_transfer_mode(userb, &mode);
if (err)
return err;
......@@ -1085,26 +1085,19 @@ int fmctdc_get_offset_user(struct fmctdc_board *userb,
}
/**
* It gets the current buffer mode
* It gets the current transfer mode
* @param[in] userb TDC board instance token
* @param[in] channel target channel [0, 4]
* @param[out] mode transfer mode
* @return 0 on success, otherwise -1 and errno is set appropriately
*/
int fmctdc_buffer_mode(struct fmctdc_board *userb,
unsigned int channel, enum ft_transfer_mode *mode)
int fmctdc_transfer_mode(struct fmctdc_board *userb,
enum ft_transfer_mode *mode)
{
struct __fmctdc_board *b = (void *)(userb);
uint32_t val;
char path[64];
int err;
if (channel >= FMCTDC_NUM_CHANNELS) {
errno = EINVAL;
return -1;
}
snprintf(path, sizeof(path), "ft-ch%u/transfer-mode", channel + 1);
err = fmctdc_sysfs_get(b, path, &val);
err = fmctdc_sysfs_get(b, "transfer-mode", &val);
if (err)
return -1;
......
......@@ -185,9 +185,8 @@ extern int fmctdc_set_offset_user(struct fmctdc_board *userb,
unsigned int channel, int32_t offset);
extern int fmctdc_get_offset_user(struct fmctdc_board *userb,
unsigned int channel, int32_t *offset);
extern int fmctdc_buffer_mode(struct fmctdc_board *userb,
unsigned int channel,
enum ft_transfer_mode *mode);
extern int fmctdc_transfer_mode(struct fmctdc_board *userb,
enum ft_transfer_mode *mode);
extern int fmctdc_coalescing_timeout_set(struct fmctdc_board *userb,
unsigned int channel,
unsigned int timeout_ms);
......
......@@ -126,17 +126,15 @@ static void fmctdc_param_test2(struct m_test *m_test)
struct fmctdc_test_desc *d = m_test->suite->private;
struct fmctdc_board *tdc = d->tdc;
unsigned int timeout, timeout_rb;
enum ft_transfer_mode mode;
int i, err;
for (i = 0; i < FMCTDC_NUM_CHANNELS_TEST; ++i) {
enum ft_transfer_mode mode;
err = fmctdc_buffer_mode(tdc, i, &mode);
m_assert_int_eq(0, err);
if (mode == FT_ACQ_TYPE_FIFO)
continue; /* not supported in FIFO mode */
err = fmctdc_transfer_mode(tdc, &mode);
m_assert_int_eq(0, err);
if (mode == FT_ACQ_TYPE_FIFO)
return;
for (i = 0; i < FMCTDC_NUM_CHANNELS_TEST; ++i) {
for (timeout = 1; timeout < 1000; timeout *= 10) {
err = fmctdc_coalescing_timeout_set(tdc, i,
timeout);
......@@ -233,20 +231,18 @@ static void fmctdc_param_test6(struct m_test *m_test)
struct fmctdc_board *tdc = d->tdc;
unsigned int len;
int i, err, ret;
enum ft_transfer_mode mode;
for (i = 0; i < FMCTDC_NUM_CHANNELS_TEST; ++i) {
enum ft_transfer_mode mode;
err = fmctdc_buffer_mode(tdc, i, &mode);
m_assert_int_eq(0, err);
err = fmctdc_transfer_mode(tdc, &mode);
m_assert_int_eq(0, err);
if (mode == FT_ACQ_TYPE_FIFO)
continue; /* not supported in FIFO mode */
if (mode == FT_ACQ_TYPE_FIFO)
return;
for (i = 0; i < FMCTDC_NUM_CHANNELS_TEST; ++i) {
for (len = 1; len < 64; len <<= 1) {
err = fmctdc_set_buffer_len(tdc, i, len);
m_assert_int_eq(-1, err);
}
for (len = 64; len < (64 << 20); len <<= 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