Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
FMC TDC 1ns 5cha - Software
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 TDC 1ns 5cha - Software
Commits
5dc76e3e
Commit
5dc76e3e
authored
Aug 15, 2018
by
Federico Vaga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drv: add helper to configure gennum
Signed-off-by:
Federico Vaga
<
federico.vaga@cern.ch
>
parent
d7bb4319
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
11 deletions
+38
-11
fmc-tdc.h
kernel/fmc-tdc.h
+17
-0
ft-core.c
kernel/ft-core.c
+21
-11
No files found.
kernel/fmc-tdc.h
View file @
5dc76e3e
...
...
@@ -341,6 +341,23 @@ static inline void gn4124_dma_wait_done(struct fmctdc_dev *ft)
cpu_relax
();
}
/**
* It configures the DMA engine for the next transfer
* @ft FmcTdc instance
* @item gennum DMA transfer descriptor
*/
static
inline
void
gn4124_dma_config
(
struct
fmctdc_dev
*
ft
,
struct
gncore_dma_item
*
item
)
{
dma_writel
(
ft
,
item
->
start_addr
,
GENNUM_DMA_ADDR
);
dma_writel
(
ft
,
item
->
dma_addr_h
,
GENNUM_DMA_ADDR_H
);
dma_writel
(
ft
,
item
->
dma_addr_l
,
GENNUM_DMA_ADDR_L
);
dma_writel
(
ft
,
item
->
dma_len
,
GENNUM_DMA_LEN
);
dma_writel
(
ft
,
item
->
next_addr_h
,
GENNUM_DMA_NEXT_H
);
dma_writel
(
ft
,
item
->
next_addr_l
,
GENNUM_DMA_NEXT_L
);
dma_writel
(
ft
,
item
->
attribute
,
GENNUM_DMA_ATTR
);
}
#endif // __KERNEL__
...
...
kernel/ft-core.c
View file @
5dc76e3e
...
...
@@ -259,6 +259,7 @@ static struct ft_modlist init_subsystems[] = {
*/
dma_addr_t
gn4124_dma_map
(
struct
fmctdc_dev
*
ft
,
uint32_t
devmem
,
void
*
hostmem
,
int
len
)
{
struct
gncore_dma_item
item
;
dma_addr_t
dma_handle
;
dma_handle
=
dma_map_single
(
ft
->
fmc
->
hwdev
,
hostmem
,
len
,
DMA_TO_DEVICE
);
...
...
@@ -267,11 +268,15 @@ dma_addr_t gn4124_dma_map(struct fmctdc_dev *ft, uint32_t devmem, void *hostmem,
return
dma_handle
;
}
dma_writel
(
ft
,
devmem
,
GENNUM_DMA_ADDR
);
dma_writel
(
ft
,
dma_handle
>>
32
,
GENNUM_DMA_ADDR_H
);
dma_writel
(
ft
,
dma_handle
&
0xffffffffULL
,
GENNUM_DMA_ADDR_L
);
dma_writel
(
ft
,
len
,
GENNUM_DMA_LEN
);
dma_writel
(
ft
,
0
,
GENNUM_DMA_ATTR
);
item
.
start_addr
=
devmem
;
item
.
dma_addr_h
=
dma_handle
>>
32
;
item
.
dma_addr_l
=
dma_handle
&
0xFFFFFFFFULL
;
item
.
dma_len
=
len
;
item
.
next_addr_h
=
0
;
item
.
next_addr_l
=
0
;
item
.
attribute
=
0
;
gn4124_dma_config
(
ft
,
&
item
);
return
dma_handle
;
}
...
...
@@ -315,6 +320,7 @@ void gn4124_dma_read(struct fmctdc_dev *ft, uint32_t devmem, void *hostmem, int
*/
void
gn4124_dma_write
(
struct
fmctdc_dev
*
ft
,
uint32_t
dst
,
void
*
src
,
int
len
)
{
struct
gncore_dma_item
item
;
dma_addr_t
dma_handle
;
dma_handle
=
dma_map_single
(
ft
->
fmc
->
hwdev
,
src
,
len
,
DMA_TO_DEVICE
);
...
...
@@ -324,12 +330,16 @@ void gn4124_dma_write(struct fmctdc_dev *ft, uint32_t dst, void *src, int len)
}
dev_dbg
(
&
ft
->
fmc
->
dev
,
"0x%llx %d
\n
"
,
dma_handle
,
len
);
dma_writel
(
ft
,
dst
,
GENNUM_DMA_ADDR
);
dma_writel
(
ft
,
dma_handle
>>
32
,
GENNUM_DMA_ADDR_H
);
dma_writel
(
ft
,
dma_handle
&
0xffffffffULL
,
GENNUM_DMA_ADDR_L
);
dma_writel
(
ft
,
len
,
GENNUM_DMA_LEN
);
dma_writel
(
ft
,
GENNUM_DMA_ATTR_DIR
,
GENNUM_DMA_ATTR
);
dma_writel
(
ft
,
GENNUM_DMA_CTL_START
,
GENNUM_DMA_CTL
);
item
.
start_addr
=
dst
;
item
.
dma_addr_h
=
dma_handle
>>
32
;
item
.
dma_addr_l
=
dma_handle
&
0xFFFFFFFFULL
;
item
.
dma_len
=
len
;
item
.
next_addr_h
=
0
;
item
.
next_addr_l
=
0
;
item
.
attribute
=
GENNUM_DMA_ATTR_DIR
;
gn4124_dma_config
(
ft
,
&
item
);
gn4124_dma_start
(
ft
);
gn4124_dma_wait_done
(
ft
);
dma_sync_single_for_device
(
ft
->
fmc
->
hwdev
,
dma_handle
,
len
,
DMA_TO_DEVICE
);
...
...
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