Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
Simple VME FMC Carrier SVEC - 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
Simple VME FMC Carrier SVEC - Software
Commits
07e6fea7
Commit
07e6fea7
authored
Aug 08, 2016
by
Federico Vaga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kernel:[plat] request svec resource from VMEBUS
Signed-off-by:
Federico Vaga
<
federico.vaga@cern.ch
>
parent
4f2575a9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
0 deletions
+41
-0
svec-drv.c
kernel/svec-drv.c
+39
-0
svec.h
kernel/svec.h
+2
-0
No files found.
kernel/svec-drv.c
View file @
07e6fea7
...
...
@@ -90,6 +90,35 @@ int svec_map_window(struct svec_dev *svec, enum svec_map_win map_type)
return
-
EINVAL
;
}
switch
(
map_type
)
{
case
MAP_REG
:
memset
(
&
svec
->
res_mem
[
map_type
],
0
,
sizeof
(
struct
resource
));
svec
->
res_mem
[
map_type
].
name
=
kmalloc
(
32
,
GFP_KERNEL
);
if
(
svec
->
res_mem
[
map_type
].
name
)
snprintf
((
char
*
)
svec
->
res_mem
[
map_type
].
name
,
32
,
"%s"
,
svec
->
name
);
svec
->
res_mem
[
map_type
].
parent
=
vme_window_resource_get
(
svec
->
map
[
MAP_REG
]
->
window_num
);
svec
->
res_mem
[
map_type
].
start
=
svec
->
res_mem
[
map_type
].
parent
->
start
+
svec
->
cfg_cur
.
vme_base
;
svec
->
res_mem
[
map_type
].
end
=
svec
->
res_mem
[
map_type
].
start
+
svec
->
cfg_cur
.
vme_size
;
svec
->
res_mem
[
map_type
].
child
=
NULL
;
svec
->
res_mem
[
map_type
].
sibling
=
NULL
;
svec
->
res_mem
[
map_type
].
flags
=
IORESOURCE_MEM
;
rval
=
request_resource
(
svec
->
res_mem
[
map_type
].
parent
,
&
svec
->
res_mem
[
map_type
]);
if
(
rval
)
{
dev_err
(
svec
->
dev
,
"Cannot request resource %pr, error %d
\n
"
,
&
svec
->
res_mem
[
map_type
],
rval
);
}
break
;
default:
break
;
}
if
(
svec
->
verbose
)
dev_info
(
dev
,
"%s mapping successful at 0x%p
\n
"
,
map_type
==
MAP_REG
?
"register"
:
"CR/CSR"
,
...
...
@@ -106,6 +135,16 @@ int svec_unmap_window(struct svec_dev *svec, enum svec_map_win map_type)
if
(
svec
->
map
[
map_type
]
==
NULL
)
return
0
;
switch
(
map_type
)
{
case
MAP_REG
:
release_resource
(
&
svec
->
res_mem
[
map_type
]);
if
(
svec
->
res_mem
[
map_type
].
name
)
kfree
(
svec
->
res_mem
[
map_type
].
name
);
break
;
default:
break
;
}
if
(
vme_release_mapping
(
svec
->
map
[
map_type
],
1
))
{
dev_err
(
dev
,
"Unmap for window %d failed
\n
"
,
(
int
)
map_type
);
return
-
EINVAL
;
...
...
kernel/svec.h
View file @
07e6fea7
...
...
@@ -88,6 +88,8 @@ struct svec_dev {
void
*
fw_buffer
;
int
fw_length
;
struct
resource
res_mem
[
__MAX_MAP
];
};
/* Functions and data in svec-vme.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