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
db062ea1
Commit
db062ea1
authored
May 15, 2013
by
Juan David González Cobas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
svec: change to new fmc-bus allocation schema
parent
5febaac4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
14 additions
and
15 deletions
+14
-15
fmc-bus
fmc-bus
+1
-1
svec-drv.c
kernel/svec-drv.c
+1
-12
svec-fmc.c
kernel/svec-fmc.c
+9
-1
svec.h
kernel/svec.h
+3
-1
No files found.
fmc-bus
@
af52f48a
Subproject commit
143199350dc53bed3aeea2a5fe2a3270e6594caf
Subproject commit
af52f48a588cec3db2a6adbd9f6b015b5b8c341e
kernel/svec-drv.c
View file @
db062ea1
...
...
@@ -397,7 +397,7 @@ static int __devinit svec_probe(struct device *pdev, unsigned int ndev)
svec
->
vmebase
=
vmebase
[
ndev
];
svec
->
vector
=
vector
[
ndev
];
svec
->
level
=
SVEC_IRQ_LEVEL
;
/* Default value */
svec
->
fmcs_n
=
2
;
/* FIXME: Two mezzanines */
svec
->
fmcs_n
=
SVEC_N_SLOTS
;
/* FIXME: Two mezzanines */
svec
->
dev
=
pdev
;
/* Get firmware name */
...
...
@@ -409,14 +409,6 @@ static int __devinit svec_probe(struct device *pdev, unsigned int ndev)
" using %s as default
\n
"
,
svec
->
fw_name
);
}
/* Alloc fmc structs memory */
svec
->
fmcs
=
kzalloc
(
svec
->
fmcs_n
*
sizeof
(
struct
fmc_device
),
GFP_KERNEL
);
if
(
!
svec
->
fmcs
)
{
error
=
-
ENOMEM
;
goto
failed_mem
;
}
/* Map CR/CSR space */
error
=
svec_map_window
(
svec
,
MAP_CR_CSR
);
if
(
error
)
...
...
@@ -476,9 +468,6 @@ failed_unmap_crcsr:
svec_unmap_window
(
svec
,
MAP_CR_CSR
);
failed:
kfree
(
svec
->
fmcs
);
svec
->
fmcs
=
NULL
;
failed_mem:
kfree
(
svec
);
return
error
;
...
...
kernel/svec-fmc.c
View file @
db062ea1
...
...
@@ -180,9 +180,16 @@ static int check_golden(struct fmc_device *fmc)
int
svec_fmc_prepare
(
struct
svec_dev
*
svec
,
unsigned
int
fmc_slot
)
{
struct
fmc_device
*
fmc
=
svec
->
fmcs
+
fmc_slot
;
struct
fmc_device
*
fmc
;
int
ret
=
0
;
fmc
=
kzalloc
(
sizeof
(
*
fmc
),
GFP_KERNEL
);
if
(
!
fmc
)
{
dev_err
(
svec
->
dev
,
"cannot allocate fmc slot %d
\n
"
,
fmc_slot
);
return
-
ENOMEM
;
}
/* FIXME: For now, only two mezzanines carrier */
if
(
fmc_slot
<
0
||
fmc_slot
>
1
)
return
-
EINVAL
;
...
...
@@ -202,6 +209,7 @@ int svec_fmc_prepare(struct svec_dev *svec, unsigned int fmc_slot)
fmc
->
device_id
=
(
svec
->
slot
<<
6
)
|
fmc_slot
;
fmc
->
eeprom_addr
=
0x50
+
2
*
(
1
-
fmc_slot
);
fmc
->
memlen
=
0x100000
;
svec
->
fmcs
[
fmc_slot
]
=
fmc
;
#if 0
/* check golden integrity */
...
...
kernel/svec.h
View file @
db062ea1
...
...
@@ -18,6 +18,7 @@
#define SVEC_MAX_DEVICES 32
#define SVEC_DEFAULT_IDX { [0 ... (SVEC_MAX_DEVICES-1)] = -1 }
#define SVEC_IRQ_LEVEL 2
#define SVEC_N_SLOTS 2
#define SVEC_BASE_LOADER 0x70000
#define SVEC_VENDOR_ID 0x80030
...
...
@@ -56,7 +57,8 @@ struct svec_dev {
struct
list_head
list
;
unsigned
long
irqcount
;
void
*
sub_priv
;
struct
fmc_device
*
fmcs
;
/* FMC devices */
struct
fmc_device
*
fmcs
[
SVEC_N_SLOTS
];
/* FMC devices */
int
fmcs_n
;
/* Number of FMC devices */
int
irq_count
;
/* for mezzanine use too */
struct
completion
compl
;
...
...
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