Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
FMC TDC 1ns 5cha - Software
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
FMC TDC 1ns 5cha - Software
Commits
9efc7b27
Commit
9efc7b27
authored
Aug 30, 2012
by
Samuel Iglesias Gonsálvez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tdc: reorder the functions a little bit
Signed-off-by:
Samuel Iglesias Gonsálvez
<
siglesias@igalia.com
>
parent
016cedbf
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
71 additions
and
48 deletions
+71
-48
tdc_regs.h
hw/tdc_regs.h
+11
-11
tdc-core.c
tdc-core.c
+24
-10
tdc-fmc.c
tdc-fmc.c
+1
-0
tdc.h
tdc.h
+35
-27
No files found.
hw/tdc_regs.h
View file @
9efc7b27
...
...
@@ -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)
...
...
tdc-core.c
View file @
9efc7b27
...
...
@@ -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
)
{
...
...
tdc-fmc.c
View file @
9efc7b27
...
...
@@ -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
);
...
...
tdc.h
View file @
9efc7b27
...
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment