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
f530852e
Commit
f530852e
authored
Oct 15, 2012
by
Federico Vaga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fa-zio-trg.c: minor fix in the interrupt management
Signed-off-by:
Federico Vaga
<
federico.vaga@gmail.com
>
parent
f88114a4
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
14 deletions
+24
-14
fa-zio-trg.c
fa-zio-trg.c
+24
-14
No files found.
fa-zio-trg.c
View file @
f530852e
...
...
@@ -200,6 +200,8 @@ static void zfat_start_next_dma(struct zio_ti *ti)
if
(
enable_auto_start
)
{
dev_dbg
(
&
ti
->
head
.
dev
,
"Automatic start
\n
"
);
zfad_fsm_command
(
fa
,
ZFA_START
);
zfa_common_conf_set
(
fa
,
&
zfad_regs
[
ZFA_CTL_FMS_CMD
],
ZFA_START
);
}
return
;
}
...
...
@@ -229,24 +231,21 @@ static void zfat_start_next_dma(struct zio_ti *ti)
/* Get irq and clear the register. To clear an interrupt we have to write 1
* on the handled interrupt. We handle all interrupt so we clear all interrupts
*/
static
uint32_t
zfat_get_irq_status
(
struct
zfat_instance
*
zfat
)
static
void
zfat_get_irq_status
(
struct
zfat_instance
*
zfat
,
uint32_t
*
irq_status
,
uint32_t
*
irq_multi
)
{
struct
fa_dev
*
fa
=
zfat
->
ti
.
cset
->
zdev
->
priv_d
;
uint32_t
irq_status
,
irq_multi
;
dev_dbg
(
&
zfat
->
ti
.
head
.
dev
,
"Get interrupts
\n
"
);
/* Get current interrupts status */
zfa_common_info_get
(
fa
,
&
zfad_regs
[
ZFA_IRQ_SRC
],
&
irq_status
);
zfa_common_info_get
(
fa
,
&
zfad_regs
[
ZFA_IRQ_MULTI
],
&
irq_multi
);
zfa_common_info_get
(
fa
,
&
zfad_regs
[
ZFA_IRQ_SRC
],
irq_status
);
zfa_common_info_get
(
fa
,
&
zfad_regs
[
ZFA_IRQ_MULTI
],
irq_multi
);
dev_dbg
(
&
zfat
->
ti
.
head
.
dev
,
"irq status = 0x%x multi = 0x%x
\n
"
,
irq_status
,
irq_multi
);
*
irq_status
,
*
irq_multi
);
/* Clear current interrupts status */
zfa_common_conf_set
(
fa
,
&
zfad_regs
[
ZFA_IRQ_SRC
],
irq_status
);
zfa_common_conf_set
(
fa
,
&
zfad_regs
[
ZFA_IRQ_MULTI
],
irq_multi
);
zfa_common_conf_set
(
fa
,
&
zfad_regs
[
ZFA_IRQ_SRC
],
*
irq_status
);
zfa_common_conf_set
(
fa
,
&
zfad_regs
[
ZFA_IRQ_MULTI
],
*
irq_multi
);
/* ack the irq */
zfat
->
fa
->
fmc
->
op
->
irq_ack
(
zfat
->
fa
->
fmc
);
return
irq_status
|
irq_multi
;
}
/*
...
...
@@ -366,6 +365,7 @@ static void zfat_irq_acq_end(struct zfat_instance *zfat)
struct
fa_dev
*
fa
=
zfat
->
ti
.
cset
->
zdev
->
priv_d
;
uint32_t
val
;
dev_dbg
(
zfat
->
fa
->
fmc
->
hwdev
,
"Acquisition done
\n
"
);
/*
* All programmed triggers fire, so the acquisition is ended.
* If the state machine is _idle_ we can start the DMA transfer.
...
...
@@ -402,17 +402,27 @@ static irqreturn_t zfadc_irq(int irq, void *ptr)
struct
fmc_device
*
fmc
=
ptr
;
struct
fa_dev
*
fa
=
fmc_get_drvdata
(
fmc
);
struct
zfat_instance
*
zfat
=
to_zfat_instance
(
fa
->
zdev
->
cset
->
ti
);
uint32_t
status
;
uint32_t
status
,
multi
;
/* irq to handle */
status
=
zfat_get_irq_status
(
zfat
);
zfat_get_irq_status
(
zfat
,
&
status
,
&
multi
);
/*
* It cannot happen that DMA_DONE is in the multi register.
* It should not happen ...
*/
if
(
status
&
(
ZFAT_DMA_DONE
|
ZFAT_DMA_ERR
))
zfat_irq_dma_done
(
fmc
,
zfat
,
status
);
/* Fire the trigger for each interrupt */
if
(
status
&
ZFAT_TRG_FIRE
)
zfat_irq_trg_fire
(
zfat
);
if
(
status
&
ZFAT_ACQ_END
)
if
(
multi
&
ZFAT_TRG_FIRE
)
zfat_irq_trg_fire
(
zfat
);
/*
* If it is too fast the ACQ_END interrupt can be in the
* multi register
*/
if
((
status
|
multi
)
&
ZFAT_ACQ_END
)
zfat_irq_acq_end
(
zfat
);
return
IRQ_HANDLED
;
}
...
...
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