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
3d1f99de
Commit
3d1f99de
authored
Aug 13, 2020
by
Federico Vaga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drv: do not auto-change calibration when changing range
Signed-off-by:
Federico Vaga
<
federico.vaga@cern.ch
>
parent
c209ebc8
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
20 additions
and
11 deletions
+20
-11
fa-calibration.c
kernel/fa-calibration.c
+2
-1
fa-core.c
kernel/fa-core.c
+5
-5
fa-zio-drv.c
kernel/fa-zio-drv.c
+11
-3
fmc-adc-100m14b4cha.h
kernel/fmc-adc-100m14b4cha.h
+2
-2
No files found.
kernel/fa-calibration.c
View file @
3d1f99de
...
...
@@ -389,7 +389,8 @@ static void fa_apply_calib(struct fa_dev *fa)
int
reg
=
zfad_get_chx_index
(
ZFA_CHx_CTL_RANGE
,
chan
->
index
);
int
range
=
fa_readl
(
fa
,
fa
->
fa_adc_csr_base
,
&
zfad_regs
[
reg
]);
zfad_set_range
(
fa
,
chan
,
zfad_convert_hw_range
(
range
));
fa_adc_range_set
(
fa
,
chan
,
zfad_convert_hw_range
(
range
));
fa_calib_config
(
fa
);
}
}
...
...
kernel/fa-core.c
View file @
3d1f99de
...
...
@@ -184,7 +184,7 @@ void zfad_init_saturation(struct fa_dev *fa)
}
/*
*
zfad_set_range
*
fa_adc_range_set
* @fa: the fmc-adc descriptor
* @chan: the channel to calibrate
* @usr_val: the volt range to set and calibrate
...
...
@@ -193,8 +193,7 @@ void zfad_init_saturation(struct fa_dev *fa)
* Gain ad offsets must be corrected with offset and gain calibration value.
* An open input and test data do not need any correction.
*/
int
zfad_set_range
(
struct
fa_dev
*
fa
,
struct
zio_channel
*
chan
,
int
range
)
int
fa_adc_range_set
(
struct
fa_dev
*
fa
,
struct
zio_channel
*
chan
,
int
range
)
{
int
i
;
...
...
@@ -218,7 +217,6 @@ int zfad_set_range(struct fa_dev *fa, struct zio_channel *chan,
fa
->
range
[
chan
->
index
]
=
range
;
spin_unlock
(
&
fa
->
zdev
->
cset
->
lock
);
fa_calib_config
(
fa
);
return
0
;
}
...
...
@@ -418,7 +416,9 @@ static int __fa_init(struct fa_dev *fa)
zdev
->
cset
->
chan
[
i
].
index
);
fa_writel
(
fa
,
fa
->
fa_adc_csr_base
,
&
zfad_regs
[
addr
],
FA100M14B4C_RANGE_1V
);
zfad_set_range
(
fa
,
&
zdev
->
cset
->
chan
[
i
],
FA100M14B4C_RANGE_1V
);
fa_adc_range_set
(
fa
,
&
zdev
->
cset
->
chan
[
i
],
FA100M14B4C_RANGE_1V
);
fa_calib_config
(
fa
);
}
zfad_reset_offset
(
fa
);
...
...
kernel/fa-zio-drv.c
View file @
3d1f99de
...
...
@@ -176,7 +176,7 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
struct
fa_dev
*
fa
=
get_zfadc
(
dev
);
void
*
baseoff
=
fa
->
fa_adc_csr_base
;
struct
zio_channel
*
chan
;
int
i
,
range
,
reg_index
;
int
i
,
range
,
reg_index
,
err
;
reg_index
=
zattr
->
id
;
i
=
FA100M14B4C_NCHAN
;
...
...
@@ -294,13 +294,21 @@ static int zfad_conf_set(struct device *dev, struct zio_attribute *zattr,
range
=
zfad_convert_user_range
(
usr_val
);
if
(
range
<
0
)
return
range
;
return
zfad_set_range
(
fa
,
&
to_zio_cset
(
dev
)
->
chan
[
i
],
range
);
err
=
fa_adc_range_set
(
fa
,
&
to_zio_cset
(
dev
)
->
chan
[
i
],
range
);
if
(
err
)
return
err
;
fa_calib_config
(
fa
);
return
0
;
case
ZFA_CHx_CTL_RANGE
:
range
=
zfad_convert_user_range
(
usr_val
);
if
(
range
<
0
)
return
range
;
return
zfad_set_range
(
fa
,
to_zio_chan
(
dev
),
range
);
err
=
fa_adc_range_set
(
fa
,
&
to_zio_cset
(
dev
)
->
chan
[
i
],
range
);
if
(
err
)
return
err
;
fa_calib_config
(
fa
);
return
0
;
case
ZFA_UTC_COARSE
:
if
(
usr_val
>=
FA100M14B4C_UTC_CLOCK_FREQ
)
{
...
...
kernel/fmc-adc-100m14b4cha.h
View file @
3d1f99de
...
...
@@ -618,8 +618,8 @@ extern int fa_adc_data_pattern_set(struct fa_dev *fa, uint16_t pattern,
/* Temporarily, user values are the same as hardware values */
extern
int
zfad_convert_user_range
(
uint32_t
user_val
);
extern
int
zfad_set_range
(
struct
fa_dev
*
fa
,
struct
zio_channel
*
chan
,
int
range
);
extern
int
fa_adc_range_set
(
struct
fa_dev
*
fa
,
struct
zio_channel
*
chan
,
int
range
);
extern
int
zfad_get_chx_index
(
unsigned
long
addr
,
unsigned
int
chan
);
/* Function exported by fa-dma.c */
...
...
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