tdc: reorder the functions a little bit

Signed-off-by: Samuel Iglesias Gonsálvez's avatarSamuel Iglesias Gonsálvez <siglesias@igalia.com>
parent 016cedbf
......@@ -58,17 +58,17 @@
#define TDC_ACAM_RDBACK_REG_14 0x2007C
/* TDC core registers */
#define TDC_START_UTC 0x20080
#define TDC_INPUT_ENABLE 0x20084
#define TDC_DELAY_START 0x20088
#define TDC_DELAY_1HZ_PULSE 0x2008C
#define TDC_IRQ_TSTAMP_THRESH 0x20090
#define TDC_IRQ_TIME_THRESH 0x20094
#define TDC_DAC_WORD 0x20098
#define TDC_CURRENT_UTC 0x200A0
#define TDC_IRQ_CODE 0x200A4
#define TDC_CIRCULAR_BUF_PTR 0x200A8
#define TDC_STATUS 0x200AC
#define TDC_START_UTC_R 0x20080
#define TDC_INPUT_ENABLE_R 0x20084
#define TDC_DELAY_START_R 0x20088
#define TDC_DELAY_1HZ_PULSE_R 0x2008C
#define TDC_IRQ_TSTAMP_THRESH_R 0x20090
#define TDC_IRQ_TIME_THRESH_R 0x20094
#define TDC_DAC_WORD_R 0x20098
#define TDC_CURRENT_UTC_R 0x200A0
#define TDC_IRQ_CODE_R 0x200A4
#define TDC_CIRCULAR_BUF_PTR_R 0x200A8
#define TDC_STATUS_R 0x200AC
#define TDC_CTRL_REG 0x200FC
#define TDC_CTRL_EN_ACQ BIT(0)
......
......@@ -21,48 +21,47 @@
/* XXX: Check that the value is properly written? */
int tdc_set_utc_time(struct spec_tdc *tdc)
void tdc_set_utc_time(struct spec_tdc *tdc)
{
struct timeval utc_time;
do_gettimeofday(&utc_time);
writel(utc_time.tv_sec, tdc->base + TDC_START_UTC);
writel(utc_time.tv_sec, tdc->base + TDC_START_UTC_R);
writel(TDC_CTRL_LOAD_UTC, tdc->base + TDC_CTRL_REG);
return 0;
}
u32 tdc_get_utc_time(struct spec_tdc *tdc)
u32 tdc_get_current_utc_time(struct spec_tdc *tdc)
{
return readl(tdc->base + TDC_CURRENT_UTC);
return readl(tdc->base + TDC_CURRENT_UTC_R);
}
/* XXX: void-function or I should check that the value is properly written? */
void tdc_set_irq_tstamp_thresh(struct spec_tdc *tdc, u32 val)
{
writel(val, tdc->base + TDC_IRQ_TSTAMP_THRESH);
writel(val, tdc->base + TDC_IRQ_TSTAMP_THRESH_R);
}
u32 tdc_get_irq_tstamp_thresh(struct spec_tdc *tdc)
{
return readl(tdc->base + TDC_IRQ_TSTAMP_THRESH);
return readl(tdc->base + TDC_IRQ_TSTAMP_THRESH_R);
}
/* XXX: void-function or I should check that the value is properly written? */
void tdc_set_irq_time_thresh(struct spec_tdc *tdc, u32 val)
{
writel(val, tdc->base + TDC_IRQ_TIME_THRESH);
writel(val, tdc->base + TDC_IRQ_TIME_THRESH_R);
}
u32 tdc_get_irq_time_thresh(struct spec_tdc *tdc)
{
return readl(tdc->base + TDC_IRQ_TIME_THRESH);
return readl(tdc->base + TDC_IRQ_TIME_THRESH_R);
}
/* XXX: void-function or I should check that the value is properly written? */
void tdc_set_dac_word(struct spec_tdc *tdc, u32 val)
{
writel(val, tdc->base + TDC_DAC_WORD);
writel(val, tdc->base + TDC_DAC_WORD_R);
writel(TDC_CTRL_CONFIG_DAC, tdc->base + TDC_CTRL_REG);
}
......@@ -83,6 +82,21 @@ void tdc_deactivate_adquisition(struct spec_tdc *tdc)
writel(TDC_CTRL_DIS_ACQ, tdc->base + TDC_CTRL_REG);
}
void tdc_set_input_enable(struct spec_tdc *tdc, u32 value)
{
writel(value, tdc->base + TDC_INPUT_ENABLE_R);
}
u32 tdc_get_input_enable(struct spec_tdc *tdc)
{
return readl(tdc->base + TDC_INPUT_ENABLE_R);
}
/* FIXME: This functions is likely to be inline! */
u32 tdc_get_circular_buffer_wr_pointer(struct spec_tdc *tdc)
{
return readl(tdc->base + TDC_CIRCULAR_BUF_PTR_R);
}
static int tdc_init(void)
{
......
......@@ -68,6 +68,7 @@ int tdc_fmc_probe(struct fmc_device *dev)
tdc->base = spec->remap[0]; // XXX: or fmc->base ?? /* BAR 0 */
tdc->regs = tdc->base; /* BAR 0 */
tdc->gn412x_regs = spec->remap[2]; /* BAR 4 */
tdc->wr_pointer = 0;
/* Setup the Gennum 412x local clock frequency */
tdc_fmc_gennum_setup_local_clock(tdc, 160);
......
......@@ -12,6 +12,9 @@ struct spec_tdc {
unsigned char __iomem *base; /* regs files are byte-oriented */
unsigned char __iomem *regs;
unsigned char __iomem *gn412x_regs;
u32 wr_pointer; /* XXX: Used to save the previous value of the wr_pointer
* XXX: Watch out the Da Capo Flag! It may confuse us!
*/
};
struct tdc_acam_cfg {
......@@ -42,44 +45,49 @@ enum tdc_zattr_chan_idx {
TDC_ATTR_CHAN__LAST,
};
/* ZIO helper functions */
extern int tdc_zio_register_device(struct spec_tdc *tdc);
extern void tdc_zio_remove(struct spec_tdc *tdc);
extern int tdc_zio_init(void);
extern void tdc_zio_exit(void);
/* FMC helper functions */
int tdc_fmc_init(void);
void tdc_fmc_exit(void);
extern int tdc_fmc_init(void);
extern void tdc_fmc_exit(void);
/* ACAM helper functions */
void tdc_acam_reset(struct spec_tdc *tdc);
int tdc_acam_load_config(struct spec_tdc *tdc, struct tdc_acam_cfg *cfg);
int tdc_acam_get_config(struct spec_tdc *tdc, struct tdc_acam_cfg *cfg);
int tdc_acam_set_default_config(struct spec_tdc *tdc);
u32 tdc_acam_status(struct spec_tdc *tdc);
u32 tdc_acam_read_ififo1(struct spec_tdc *tdc);
u32 tdc_acam_read_ififo2(struct spec_tdc *tdc);
u32 tdc_acam_read_start01(struct spec_tdc *tdc);
extern void tdc_acam_reset(struct spec_tdc *tdc);
extern int tdc_acam_load_config(struct spec_tdc *tdc, struct tdc_acam_cfg *cfg);
extern int tdc_acam_set_default_config(struct spec_tdc *tdc);
/* DMA helper functions */
int tdc_dma_setup(struct spec_tdc *tdc, unsigned long src, unsigned long dst, int size);
int tdc_dma_start(struct spec_tdc *tdc);
extern int tdc_acam_get_config(struct spec_tdc *tdc, struct tdc_acam_cfg *cfg);
extern u32 tdc_acam_status(struct spec_tdc *tdc);
extern u32 tdc_acam_read_ififo1(struct spec_tdc *tdc);
extern u32 tdc_acam_read_ififo2(struct spec_tdc *tdc);
extern u32 tdc_acam_read_start01(struct spec_tdc *tdc);
/* DMA helper functions */
extern int tdc_dma_setup(struct spec_tdc *tdc, unsigned long src, unsigned long dst, int size);
extern int tdc_dma_start(struct spec_tdc *tdc);
/* Core functions */
int tdc_fmc_probe(struct fmc_device *dev);
int tdc_fmc_remove(struct fmc_device *dev);
int tdc_set_utc_time(struct spec_tdc *tdc);
u32 tdc_get_utc_time(struct spec_tdc *tdc);
void tdc_set_irq_tstamp_thresh(struct spec_tdc *tdc, u32 val);
void tdc_set_irq_time_thresh(struct spec_tdc *tdc, u32 val);
u32 tdc_get_irq_time_thresh(struct spec_tdc *tdc);
void tdc_set_dac_word(struct spec_tdc *tdc, u32 val);
void tdc_clear_da_capo_flag(struct spec_tdc *tdc);
void tdc_activate_adquisition(struct spec_tdc *tdc);
void tdc_deactivate_adquisition(struct spec_tdc *tdc);
extern int tdc_fmc_probe(struct fmc_device *dev);
extern int tdc_fmc_remove(struct fmc_device *dev);
extern void tdc_set_utc_time(struct spec_tdc *tdc);
extern void tdc_set_input_enable(struct spec_tdc *tdc, u32 value);
extern void tdc_set_irq_tstamp_thresh(struct spec_tdc *tdc, u32 val);
extern void tdc_set_irq_time_thresh(struct spec_tdc *tdc, u32 val);
extern void tdc_set_dac_word(struct spec_tdc *tdc, u32 val);
extern u32 tdc_get_input_enable(struct spec_tdc *tdc);
extern u32 tdc_get_irq_tstamp_thresh(struct spec_tdc *tdc);
extern u32 tdc_get_irq_time_thresh(struct spec_tdc *tdc);
extern u32 tdc_get_current_utc_time(struct spec_tdc *tdc);
extern u32 tdc_get_circular_buffer_wr_pointer(struct spec_tdc *tdc);
extern void tdc_clear_da_capo_flag(struct spec_tdc *tdc);
extern void tdc_activate_adquisition(struct spec_tdc *tdc);
extern void tdc_deactivate_adquisition(struct spec_tdc *tdc);
#endif
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