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
c7a235a4
Commit
c7a235a4
authored
Aug 13, 2020
by
Federico Vaga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drv: recalibrate only the channel that changes
Signed-off-by:
Federico Vaga
<
federico.vaga@cern.ch
>
parent
35a54772
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
22 additions
and
18 deletions
+22
-18
fa-calibration.c
kernel/fa-calibration.c
+10
-9
fa-core.c
kernel/fa-core.c
+1
-1
fa-zio-drv.c
kernel/fa-zio-drv.c
+7
-7
fmc-adc-100m14b4cha.h
kernel/fmc-adc-100m14b4cha.h
+4
-1
No files found.
kernel/fa-calibration.c
View file @
c7a235a4
...
@@ -130,7 +130,7 @@ static int fa_calib_dac_gain_fix(int range, uint32_t gain_c,
...
@@ -130,7 +130,7 @@ static int fa_calib_dac_gain_fix(int range, uint32_t gain_c,
return
gain_c
-
error
;
return
gain_c
-
error
;
}
}
static
void
fa_calib_adc_config_chan
(
struct
fa_dev
*
fa
,
unsigned
int
chan
,
void
fa_calib_adc_config_chan
(
struct
fa_dev
*
fa
,
unsigned
int
chan
,
int32_t
temperature
)
int32_t
temperature
)
{
{
int
range
=
fa
->
range
[
chan
];
int
range
=
fa
->
range
[
chan
];
...
@@ -139,6 +139,8 @@ static void fa_calib_adc_config_chan(struct fa_dev *fa, unsigned int chan,
...
@@ -139,6 +139,8 @@ static void fa_calib_adc_config_chan(struct fa_dev *fa, unsigned int chan,
int
offset
=
cal
->
offset
[
chan
];
int
offset
=
cal
->
offset
[
chan
];
int
gain
=
cal
->
gain
[
chan
];
int
gain
=
cal
->
gain
[
chan
];
if
(
temperature
==
0xFFFFFFFF
)
temperature
=
fa_temperature_read
(
fa
);
if
(
unlikely
(
!
(
fa
->
flags
&
FA_DEV_F_PATTERN_DATA
)))
if
(
unlikely
(
!
(
fa
->
flags
&
FA_DEV_F_PATTERN_DATA
)))
gain
=
fa_calib_adc_gain_fix
(
range
,
gain
,
delta_temp
);
gain
=
fa_calib_adc_gain_fix
(
range
,
gain
,
delta_temp
);
...
@@ -206,7 +208,7 @@ static int fa_dac_offset_get(struct fa_dev *fa, unsigned int chan)
...
@@ -206,7 +208,7 @@ static int fa_dac_offset_get(struct fa_dev *fa, unsigned int chan)
return
off_uv
;
return
off_uv
;
}
}
static
int
fa_calib_dac_config_chan
(
struct
fa_dev
*
fa
,
unsigned
int
chan
,
int
fa_calib_dac_config_chan
(
struct
fa_dev
*
fa
,
unsigned
int
chan
,
int32_t
temperature
)
int32_t
temperature
)
{
{
int
range
=
fa
->
range
[
chan
];
int
range
=
fa
->
range
[
chan
];
...
@@ -218,6 +220,9 @@ static int fa_calib_dac_config_chan(struct fa_dev *fa, unsigned int chan,
...
@@ -218,6 +220,9 @@ static int fa_calib_dac_config_chan(struct fa_dev *fa, unsigned int chan,
int
gain
=
cal
->
gain
[
chan
];
int
gain
=
cal
->
gain
[
chan
];
int
hwval
;
int
hwval
;
if
(
temperature
==
0xFFFFFFFF
)
temperature
=
fa_temperature_read
(
fa
);
if
(
unlikely
(
!
(
fa
->
flags
&
FA_DEV_F_PATTERN_DATA
)))
if
(
unlikely
(
!
(
fa
->
flags
&
FA_DEV_F_PATTERN_DATA
)))
gain
=
fa_calib_dac_gain_fix
(
range
,
gain
,
delta_temp
);
gain
=
fa_calib_dac_gain_fix
(
range
,
gain
,
delta_temp
);
...
@@ -228,12 +233,10 @@ static int fa_calib_dac_config_chan(struct fa_dev *fa, unsigned int chan,
...
@@ -228,12 +233,10 @@ static int fa_calib_dac_config_chan(struct fa_dev *fa, unsigned int chan,
return
fa_dac_offset_set
(
fa
,
chan
,
hwval
);
return
fa_dac_offset_set
(
fa
,
chan
,
hwval
);
}
}
void
fa_calib_dac_config
(
struct
fa_dev
*
fa
,
int32_t
temperature
)
static
void
fa_calib_dac_config
(
struct
fa_dev
*
fa
,
int32_t
temperature
)
{
{
int
i
;
int
i
;
if
(
temperature
==
0xFFFFFFFF
)
temperature
=
fa_temperature_read
(
fa
);
dev_dbg
(
&
fa
->
pdev
->
dev
,
"%s: {temperature: %d}
\n
"
,
dev_dbg
(
&
fa
->
pdev
->
dev
,
"%s: {temperature: %d}
\n
"
,
__func__
,
temperature
);
__func__
,
temperature
);
...
@@ -248,8 +251,6 @@ static void fa_calib_adc_config(struct fa_dev *fa, int32_t temperature)
...
@@ -248,8 +251,6 @@ static void fa_calib_adc_config(struct fa_dev *fa, int32_t temperature)
int
err
;
int
err
;
int
i
;
int
i
;
if
(
temperature
==
0xFFFFFFFF
)
temperature
=
fa_temperature_read
(
fa
);
dev_dbg
(
&
fa
->
pdev
->
dev
,
"%s: {temperature: %d}
\n
"
,
dev_dbg
(
&
fa
->
pdev
->
dev
,
"%s: {temperature: %d}
\n
"
,
__func__
,
temperature
);
__func__
,
temperature
);
...
...
kernel/fa-core.c
View file @
c7a235a4
...
@@ -165,8 +165,8 @@ void zfad_reset_offset(struct fa_dev *fa)
...
@@ -165,8 +165,8 @@ void zfad_reset_offset(struct fa_dev *fa)
for
(
i
=
0
;
i
<
FA100M14B4C_NCHAN
;
++
i
)
{
for
(
i
=
0
;
i
<
FA100M14B4C_NCHAN
;
++
i
)
{
fa
->
user_offset
[
i
]
=
0
;
fa
->
user_offset
[
i
]
=
0
;
fa
->
zero_offset
[
i
]
=
0
;
fa
->
zero_offset
[
i
]
=
0
;
fa_calib_dac_config_chan
(
fa
,
i
,
~
0
);
}
}
fa_calib_dac_config
(
fa
,
~
0
);
}
}
/*
/*
...
...
kernel/fa-zio-drv.c
View file @
c7a235a4
...
@@ -214,7 +214,7 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
...
@@ -214,7 +214,7 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
spin_lock
(
&
fa
->
zdev
->
cset
->
lock
);
spin_lock
(
&
fa
->
zdev
->
cset
->
lock
);
fa
->
zero_offset
[
i
]
=
usr_val
;
fa
->
zero_offset
[
i
]
=
usr_val
;
spin_unlock
(
&
fa
->
zdev
->
cset
->
lock
);
spin_unlock
(
&
fa
->
zdev
->
cset
->
lock
);
fa_calib_dac_config
(
fa
,
~
0
);
fa_calib_dac_config
_chan
(
fa
,
i
,
~
0
);
return
0
;
return
0
;
case
ZFA_CHx_SAT
:
case
ZFA_CHx_SAT
:
/* TODO when TLV */
/* TODO when TLV */
...
@@ -249,15 +249,13 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
...
@@ -249,15 +249,13 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
spin_lock
(
&
fa
->
zdev
->
cset
->
lock
);
spin_lock
(
&
fa
->
zdev
->
cset
->
lock
);
fa
->
user_offset
[
chan
->
index
]
=
usr_val
;
fa
->
user_offset
[
chan
->
index
]
=
usr_val
;
spin_unlock
(
&
fa
->
zdev
->
cset
->
lock
);
spin_unlock
(
&
fa
->
zdev
->
cset
->
lock
);
fa_calib_dac_config
(
fa
,
~
0
);
return
fa_calib_dac_config_chan
(
fa
,
i
,
~
0
);
return
0
;
case
ZFA_CHx_OFFSET
:
case
ZFA_CHx_OFFSET
:
chan
=
to_zio_chan
(
dev
);
chan
=
to_zio_chan
(
dev
);
spin_lock
(
&
fa
->
zdev
->
cset
->
lock
);
spin_lock
(
&
fa
->
zdev
->
cset
->
lock
);
fa
->
user_offset
[
chan
->
index
]
=
usr_val
;
fa
->
user_offset
[
chan
->
index
]
=
usr_val
;
spin_unlock
(
&
fa
->
zdev
->
cset
->
lock
);
spin_unlock
(
&
fa
->
zdev
->
cset
->
lock
);
fa_calib_dac_config
(
fa
,
~
0
);
return
fa_calib_dac_config_chan
(
fa
,
chan
->
index
,
~
0
);
return
0
;
case
ZFA_CTL_DAC_CLR_N
:
case
ZFA_CTL_DAC_CLR_N
:
zfad_reset_offset
(
fa
);
zfad_reset_offset
(
fa
);
return
0
;
return
0
;
...
@@ -297,7 +295,8 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
...
@@ -297,7 +295,8 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
err
=
fa_adc_range_set
(
fa
,
&
to_zio_cset
(
dev
)
->
chan
[
i
],
range
);
err
=
fa_adc_range_set
(
fa
,
&
to_zio_cset
(
dev
)
->
chan
[
i
],
range
);
if
(
err
)
if
(
err
)
return
err
;
return
err
;
fa_calib_config
(
fa
);
fa_calib_adc_config_chan
(
fa
,
i
,
~
0
);
fa_calib_dac_config_chan
(
fa
,
i
,
~
0
);
return
0
;
return
0
;
case
ZFA_CHx_CTL_RANGE
:
case
ZFA_CHx_CTL_RANGE
:
...
@@ -307,7 +306,8 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
...
@@ -307,7 +306,8 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
err
=
fa_adc_range_set
(
fa
,
&
to_zio_cset
(
dev
)
->
chan
[
i
],
range
);
err
=
fa_adc_range_set
(
fa
,
&
to_zio_cset
(
dev
)
->
chan
[
i
],
range
);
if
(
err
)
if
(
err
)
return
err
;
return
err
;
fa_calib_config
(
fa
);
fa_calib_adc_config_chan
(
fa
,
i
,
~
0
);
fa_calib_dac_config_chan
(
fa
,
i
,
~
0
);
return
0
;
return
0
;
case
ZFA_UTC_COARSE
:
case
ZFA_UTC_COARSE
:
...
...
kernel/fmc-adc-100m14b4cha.h
View file @
c7a235a4
...
@@ -655,7 +655,10 @@ extern void fa_spi_exit(struct fa_dev *fd);
...
@@ -655,7 +655,10 @@ extern void fa_spi_exit(struct fa_dev *fd);
extern
int
fa_calib_init
(
struct
fa_dev
*
fa
);
extern
int
fa_calib_init
(
struct
fa_dev
*
fa
);
extern
void
fa_calib_exit
(
struct
fa_dev
*
fa
);
extern
void
fa_calib_exit
(
struct
fa_dev
*
fa
);
extern
void
fa_calib_config
(
struct
fa_dev
*
fa
);
extern
void
fa_calib_config
(
struct
fa_dev
*
fa
);
extern
void
fa_calib_dac_config
(
struct
fa_dev
*
fa
,
int32_t
temperature
);
extern
void
fa_calib_adc_config_chan
(
struct
fa_dev
*
fa
,
unsigned
int
chan
,
int32_t
temperature
);
extern
int
fa_calib_dac_config_chan
(
struct
fa_dev
*
fa
,
unsigned
int
chan
,
int32_t
temperature
);
/* functions exported by fa-debug.c */
/* functions exported by fa-debug.c */
extern
int
fa_debug_init
(
struct
fa_dev
*
fa
);
extern
int
fa_debug_init
(
struct
fa_dev
*
fa
);
...
...
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