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
3c3cf2f4
Commit
3c3cf2f4
authored
Aug 11, 2020
by
Federico Vaga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drv: move sw trigger from ZIO to debugfs
Signed-off-by:
Federico Vaga
<
federico.vaga@cern.ch
>
parent
e3d91fe0
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
60 additions
and
25 deletions
+60
-25
fa-core.c
kernel/fa-core.c
+28
-0
fa-debug.c
kernel/fa-debug.c
+26
-0
fa-zio-drv.c
kernel/fa-zio-drv.c
+4
-1
fa-zio-trg.c
kernel/fa-zio-trg.c
+0
-23
fmc-adc-100m14b4cha.h
kernel/fmc-adc-100m14b4cha.h
+2
-1
No files found.
kernel/fa-core.c
View file @
3c3cf2f4
...
...
@@ -54,6 +54,34 @@ int32_t fa_temperature_read(struct fa_dev *fa)
return
(
raw_temp
*
1000
+
8
)
/
16
;
}
/**
* Do a software trigger
* @fa: the adc descriptor
*
* Return: 0 on success, otherwise a negative error number
*/
int
fa_trigger_software
(
struct
fa_dev
*
fa
)
{
struct
zio_ti
*
ti
=
fa
->
zdev
->
cset
->
ti
;
/* Fire if software trigger is enabled (index 5) */
if
(
!
(
ti
->
zattr_set
.
ext_zattr
[
FA100M14B4C_TATTR_SRC
].
value
&
FA100M14B4C_TRG_SRC_SW
))
{
dev_info
(
&
fa
->
pdev
->
dev
,
"sw trigger is not enabled
\n
"
);
return
-
EPERM
;
}
/* Fire if nsamples!=0 */
if
(
!
ti
->
nsamples
)
{
dev_info
(
&
fa
->
pdev
->
dev
,
"pre + post = 0: cannot acquire
\n
"
);
return
-
EINVAL
;
}
fa_writel
(
fa
,
fa
->
fa_adc_csr_base
,
&
zfad_regs
[
ZFAT_SW
],
1
);
return
0
;
}
/**
* Description:
* The version from the Linux kernel automatically squash contiguous pages.
...
...
kernel/fa-debug.c
View file @
3c3cf2f4
...
...
@@ -163,6 +163,24 @@ static const struct file_operations fa_regdump_ops = {
};
static
ssize_t
fa_trg_sw_write
(
struct
file
*
file
,
const
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
)
{
struct
fa_dev
*
fa
=
file
->
private_data
;
int
err
;
err
=
fa_trigger_software
(
fa
);
return
err
?
err
:
count
;
}
static
const
struct
file_operations
fa_trg_sw_ops
=
{
.
owner
=
THIS_MODULE
,
.
open
=
simple_open
,
.
write
=
fa_trg_sw_write
,
};
int
fa_debug_init
(
struct
fa_dev
*
fa
)
{
int
err
;
...
...
@@ -196,6 +214,14 @@ int fa_debug_init(struct fa_dev *fa)
"Cannot create regdump debugfs file
\n
"
);
}
fa
->
dbg_trg_sw
=
debugfs_create_file
(
"trigger_software"
,
0200
,
fa
->
dbg_dir
,
fa
,
&
fa_trg_sw_ops
);
if
(
IS_ERR_OR_NULL
(
fa
->
dbg_trg_sw
))
{
dev_warn
(
&
fa
->
pdev
->
dev
,
"Cannot create software trigger file
\n
"
);
}
return
0
;
}
...
...
kernel/fa-zio-drv.c
View file @
3c3cf2f4
...
...
@@ -474,6 +474,7 @@ static inline int zfat_overflow_detection(struct zio_ti *ti)
static
int
zfad_input_cset_software
(
struct
fa_dev
*
fa
,
struct
zio_cset
*
cset
)
{
struct
zfad_block
*
tmp
;
int
err
;
tmp
=
kzalloc
(
sizeof
(
struct
zfad_block
),
GFP_ATOMIC
);
if
(
!
tmp
)
...
...
@@ -489,7 +490,9 @@ static int zfad_input_cset_software(struct fa_dev *fa, struct zio_cset *cset)
fa
->
n_shots
=
1
;
/* Fire software trigger */
fa_writel
(
fa
,
fa
->
fa_adc_csr_base
,
&
zfad_regs
[
ZFAT_SW
],
1
);
err
=
fa_trigger_software
(
fa
);
if
(
err
)
return
err
;
return
-
EAGAIN
;
}
...
...
kernel/fa-zio-trg.c
View file @
3c3cf2f4
...
...
@@ -98,10 +98,6 @@ static struct zio_attribute zfat_ext_zattr[] = {
[
FA100M14B4C_TATTR_EXT_DLY
]
=
ZIO_ATTR_EXT
(
"ext-delay"
,
ZIO_RW_PERM
,
ZFAT_EXT_DLY
,
0
),
/* Software Trigger */
[
FA100M14B4C_TATTR_SW_FIRE
]
=
ZIO_PARAM_EXT
(
"sw-trg-fire"
,
ZIO_WO_PERM
,
ZFAT_SW
,
0
),
/* last trigger time stamp */
[
FA100M14B4C_TATTR_TRG_SU
]
=
ZIO_PARAM_EXT
(
"tstamp-trg-lst-su"
,
ZIO_RO_PERM
,
...
...
@@ -133,7 +129,6 @@ static int zfat_conf_set(struct device *dev, struct zio_attribute *zattr,
uint32_t
usr_val
)
{
struct
fa_dev
*
fa
=
get_zfadc
(
dev
);
struct
zio_ti
*
ti
=
to_zio_ti
(
dev
);
void
*
baseoff
=
fa
->
fa_adc_csr_base
;
uint32_t
tmp_val
=
usr_val
;
...
...
@@ -155,24 +150,6 @@ static int zfat_conf_set(struct device *dev, struct zio_attribute *zattr,
}
tmp_val
--
;
/* Remove one sample for the trigger */
break
;
case
ZFAT_SW
:
/* Fire if software trigger is enabled (index 5) */
if
(
!
(
ti
->
zattr_set
.
ext_zattr
[
FA100M14B4C_TATTR_SRC
].
value
&
FA100M14B4C_TRG_SRC_SW
))
{
dev_info
(
fa
->
msgdev
,
"sw trigger is not enabled
\n
"
);
return
-
EPERM
;
}
/* Fire if nsamples!=0 */
if
(
!
ti
->
nsamples
)
{
dev_info
(
fa
->
msgdev
,
"pre + post = 0: cannot acquire
\n
"
);
return
-
EINVAL
;
}
/*
* The software trigger will be fired to force
* acquisition, so we don't care about current
* acquisition or other problems:
*/
break
;
case
ZFAT_CFG_SRC
:
/*
* Do not copy to hardware when globally disabled
...
...
kernel/fmc-adc-100m14b4cha.h
View file @
3c3cf2f4
...
...
@@ -72,7 +72,6 @@ enum fa100m14b4c_trg_ext_attr {
FA100M14B4C_TATTR_TRG_TIM_C
,
#ifdef __KERNEL__
FA100M14B4C_TATTR_SW_FIRE
,
FA100M14B4C_TATTR_TRG_SU
,
FA100M14B4C_TATTR_TRG_SL
,
FA100M14B4C_TATTR_TRG_C
,
...
...
@@ -462,6 +461,7 @@ struct fa_dev {
struct
debugfs_regset32
dbg_reg32
;
struct
dentry
*
dbg_reg
;
struct
dentry
*
dbg_reg_spi
;
struct
dentry
*
dbg_trg_sw
;
/* Operations */
int
(
*
sg_alloc_table_from_pages
)(
struct
sg_table
*
sgt
,
...
...
@@ -606,6 +606,7 @@ extern int zfad_fsm_command(struct fa_dev *fa, uint32_t command);
extern
void
zfad_reset_offset
(
struct
fa_dev
*
fa
);
extern
int
zfad_convert_hw_range
(
uint32_t
bitmask
);
extern
int32_t
fa_temperature_read
(
struct
fa_dev
*
fa
);
extern
int
fa_trigger_software
(
struct
fa_dev
*
fa
);
/* Temporarily, user values are the same as hardware values */
extern
int
zfad_convert_user_range
(
uint32_t
user_val
);
...
...
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