Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
FMC ADC 100M 14b 4cha - Software
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
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 ADC 100M 14b 4cha - Software
Commits
f6f91391
Commit
f6f91391
authored
Aug 14, 2019
by
Federico Vaga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drv: add a full register dump
Signed-off-by:
Federico Vaga
<
federico.vaga@cern.ch
>
parent
8e2f84ca
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
143 additions
and
6 deletions
+143
-6
fa-debug.c
kernel/fa-debug.c
+139
-5
fmc-adc-100m14b4cha.h
kernel/fmc-adc-100m14b4cha.h
+4
-1
No files found.
kernel/fa-debug.c
View file @
f6f91391
...
...
@@ -6,6 +6,116 @@
#include "fmc-adc-100m14b4cha.h"
#define FA_DBG_REG32_CH(_n) \
{.name = "ADC-CSR:ch"#_n"_ctl", .offset = ADC_CSR_OFF + 0x080 + ((_n - 1) * 0x40)}, \
{.name = "ADC-CSR:ch"#_n"_sta", .offset = ADC_CSR_OFF + 0x084 + ((_n - 1) * 0x40)}, \
{.name = "ADC-CSR:ch"#_n"_cal_nb", .offset = ADC_CSR_OFF + 0x088 + ((_n - 1) * 0x40)}, \
{.name = "ADC-CSR:ch"#_n"_sat", .offset = ADC_CSR_OFF + 0x08C + ((_n - 1) * 0x40)}, \
{.name = "ADC-CSR:ch"#_n"_trig_thres", .offset = ADC_CSR_OFF + 0x090 + ((_n - 1) * 0x40)}, \
{.name = "ADC-CSR:ch"#_n"_trig_dly", .offset = ADC_CSR_OFF + 0x094 + ((_n - 1) * 0x40)}
#define FA_DBG_REG32_TIM(_name, _off) \
{ \
.name = "TIME-TAG:"#_name"_seconds_upper", \
.offset = ADC_UTC_OFF + _off \
}, { \
.name = "TIME-TAG:"#_name"_seconds_lower", \
.offset = ADC_UTC_OFF + _off + 0x4, \
}, { \
.name = "TIME-TAG:"#_name"_coarse", \
.offset = ADC_UTC_OFF + _off + 0x8, \
}
static
const
struct
debugfs_reg32
fa_debugfs_reg32
[]
=
{
{
.
name
=
"ADC-CSR:ctl"
,
.
offset
=
ADC_CSR_OFF
+
0x000
,
},
{
.
name
=
"ADC-CSR:sta"
,
.
offset
=
ADC_CSR_OFF
+
0x004
,
},
{
.
name
=
"ADC-CSR:trig_stat"
,
.
offset
=
ADC_CSR_OFF
+
0x008
,
},
{
.
name
=
"ADC-CSR:trig_en"
,
.
offset
=
ADC_CSR_OFF
+
0x00C
,
},
{
.
name
=
"ADC-CSR:trig_pol"
,
.
offset
=
ADC_CSR_OFF
+
0x010
,
},
{
.
name
=
"ADC-CSR:ext_trig_dly"
,
.
offset
=
ADC_CSR_OFF
+
0x014
,
},
{
.
name
=
"ADC-CSR:sw_trig"
,
.
offset
=
ADC_CSR_OFF
+
0x018
,
},
{
.
name
=
"ADC-CSR:shots"
,
.
offset
=
ADC_CSR_OFF
+
0x01C
,
},
{
.
name
=
"ADC-CSR:multi_depth"
,
.
offset
=
ADC_CSR_OFF
+
0x020
,
},
{
.
name
=
"ADC-CSR:trig_pos"
,
.
offset
=
ADC_CSR_OFF
+
0x024
,
},
{
.
name
=
"ADC-CSR:fs_freq"
,
.
offset
=
ADC_CSR_OFF
+
0x028
,
},
{
.
name
=
"ADC-CSR:downsample"
,
.
offset
=
ADC_CSR_OFF
+
0x02C
,
},
{
.
name
=
"ADC-CSR:pre_samples"
,
.
offset
=
ADC_CSR_OFF
+
0x030
,
},
{
.
name
=
"ADC-CSR:post_samples"
,
.
offset
=
ADC_CSR_OFF
+
0x034
,
},
{
.
name
=
"ADC-CSR:samples_cnt"
,
.
offset
=
ADC_CSR_OFF
+
0x038
,
},
FA_DBG_REG32_CH
(
1
),
FA_DBG_REG32_CH
(
2
),
FA_DBG_REG32_CH
(
3
),
FA_DBG_REG32_CH
(
4
),
{
.
name
=
"ADC-EIC:disable_mask"
,
.
offset
=
ADC_EIC_OFF
+
0x0
,
},
{
.
name
=
"ADC-EIC:enable_mask"
,
.
offset
=
ADC_EIC_OFF
+
0x4
,
},
{
.
name
=
"ADC-EIC:status_mask"
,
.
offset
=
ADC_EIC_OFF
+
0x8
,
},
{
.
name
=
"ADC-EIC:source"
,
.
offset
=
ADC_EIC_OFF
+
0xC
,
},
FA_DBG_REG32_TIM
(
base_time
,
0x00
),
FA_DBG_REG32_TIM
(
time_trig
,
0x0C
),
FA_DBG_REG32_TIM
(
trig_tag
,
0x18
),
FA_DBG_REG32_TIM
(
acq_start_tag
,
0x24
),
FA_DBG_REG32_TIM
(
acq_stop_tag
,
0x30
),
FA_DBG_REG32_TIM
(
acq_end_tag
,
0x3C
),
};
static
void
fa_regdump_seq_read_spi
(
struct
fa_dev
*
fa
,
struct
seq_file
*
s
)
{
...
...
@@ -55,10 +165,34 @@ static const struct file_operations fa_regdump_ops = {
int
fa_debug_init
(
struct
fa_dev
*
fa
)
{
fa
->
reg_dump
=
debugfs_create_file
(
dev_name
(
&
fa
->
zdev
->
head
.
dev
),
0444
,
NULL
,
fa
,
&
fa_regdump_ops
);
if
(
IS_ERR_OR_NULL
(
fa
->
reg_dump
))
{
dev_err
(
fa
->
msgdev
,
int
err
;
fa
->
dbg_dir
=
debugfs_create_dir
(
dev_name
(
&
fa
->
zdev
->
head
.
dev
),
NULL
);
if
(
IS_ERR_OR_NULL
(
fa
->
dbg_dir
))
{
err
=
PTR_ERR
(
fa
->
dbg_dir
);
dev_err
(
&
fa
->
zdev
->
head
.
dev
,
"Cannot create debugfs directory
\"
%s
\"
(%d)
\n
"
,
dev_name
(
&
fa
->
zdev
->
head
.
dev
),
err
);
return
err
;
}
fa
->
dbg_reg32
.
regs
=
fa_debugfs_reg32
;
fa
->
dbg_reg32
.
nregs
=
ARRAY_SIZE
(
fa_debugfs_reg32
);
fa
->
dbg_reg32
.
base
=
fa
->
fa_top_level
;
fa
->
dbg_reg
=
debugfs_create_regset32
(
"regs"
,
0200
,
fa
->
dbg_dir
,
&
fa
->
dbg_reg32
);
if
(
IS_ERR_OR_NULL
(
fa
->
dbg_reg
))
{
err
=
PTR_ERR
(
fa
->
dbg_reg
);
dev_warn
(
fa
->
msgdev
,
"Cannot create debugfs file
\"
regs
\"
(%d)
\n
"
,
err
);
}
fa
->
dbg_reg_spi
=
debugfs_create_file
(
"spi-regs"
,
0444
,
fa
->
dbg_dir
,
fa
,
&
fa_regdump_ops
);
if
(
IS_ERR_OR_NULL
(
fa
->
dbg_reg_spi
))
{
dev_warn
(
fa
->
msgdev
,
"Cannot create regdump debugfs file
\n
"
);
}
...
...
@@ -68,5 +202,5 @@ int fa_debug_init(struct fa_dev *fa)
void
fa_debug_exit
(
struct
fa_dev
*
fa
)
{
debugfs_remove_recursive
(
fa
->
reg_dump
);
debugfs_remove_recursive
(
fa
->
dbg_dir
);
}
kernel/fmc-adc-100m14b4cha.h
View file @
f6f91391
...
...
@@ -452,7 +452,10 @@ struct fa_dev {
/* flag */
int
enable_auto_start
;
struct
dentry
*
reg_dump
;
struct
dentry
*
dbg_dir
;
struct
debugfs_regset32
dbg_reg32
;
struct
dentry
*
dbg_reg
;
struct
dentry
*
dbg_reg_spi
;
/* Operations */
int
(
*
sg_alloc_table_from_pages
)(
struct
sg_table
*
sgt
,
...
...
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