Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
FMC ADC 100M 14b 4cha
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 ADC 100M 14b 4cha
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