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
a4eaad15
Commit
a4eaad15
authored
Aug 15, 2016
by
Federico Vaga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kernel: remove vic and trtl detection
Signed-off-by:
Federico Vaga
<
federico.vaga@cern.ch
>
parent
a3b51673
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
138 deletions
+0
-138
svec-fmc.c
kernel/svec-fmc.c
+0
-138
No files found.
kernel/svec-fmc.c
View file @
a4eaad15
...
...
@@ -84,144 +84,6 @@ static int svec_reprogram_raw(struct fmc_device *fmc, struct fmc_driver *drv,
fmc
->
flags
|=
FMC_DEVICE_HAS_CUSTOM
;
svec_scan_cores
(
svec
);
return
0
;
}
static
struct
resource
htvic_resource
[]
=
{
DEFINE_RES_MEM_NAMED
(
0x0
,
0x100
,
"htvic-base"
),
DEFINE_RES_IRQ_NAMED
(
0
,
"htvic-carrier"
),
};
static
int
svec_create_vic
(
struct
svec_dev
*
svec
)
{
struct
vme_dev
*
vme_dev
=
to_vme_dev
(
svec
->
dev
);
struct
platform_device
*
pdev
;
struct
platform_device_info
pdevinfo
=
{
.
parent
=
&
vme_dev
->
dev
,
.
name
=
"htvic-svec"
,
.
id
=
vic_id
++
,
.
res
=
htvic_resource
,
.
num_res
=
ARRAY_SIZE
(
htvic_resource
),
};
int
ret
,
i
;
if
(
svec
->
pdev_vic
)
return
-
EBUSY
;
for
(
i
=
0
;
i
<
SVEC_N_SLOTS
;
++
i
)
{
ret
=
fmc_scan_sdb_tree
(
svec
->
fmcs
[
i
],
0x0
);
if
(
ret
>=
0
||
ret
==
-
EBUSY
)
break
;
}
ret
=
fmc_find_sdb_device
(
svec
->
fmcs
[
0
]
->
sdb
,
0xCE42
,
0x0013
,
NULL
);
if
(
ret
<
0
)
return
ret
;
htvic_resource
[
0
].
parent
=
&
svec
->
res_mem
[
MAP_REG
];
htvic_resource
[
0
].
start
=
svec
->
res_mem
[
MAP_REG
].
start
+
ret
;
htvic_resource
[
0
].
end
=
htvic_resource
[
0
].
start
+
0x100
-
1
;
htvic_resource
[
0
].
child
=
NULL
;
htvic_resource
[
0
].
sibling
=
NULL
;
htvic_resource
[
0
].
flags
=
IORESOURCE_MEM
;
htvic_resource
[
1
].
start
=
vme_dev
->
irq
;
htvic_resource
[
1
].
flags
|=
IORESOURCE_IRQ_HIGHEDGE
;
pdev
=
platform_device_register_full
(
&
pdevinfo
);
if
(
IS_ERR_OR_NULL
(
pdev
))
{
dev_err
(
svec
->
dev
,
"cannot register VIC device
\n
"
);
return
-
ENOMEM
;
}
svec
->
pdev_vic
=
pdev
;
return
0
;
}
static
struct
resource
trtl_resource
[]
=
{
DEFINE_RES_MEM_NAMED
(
0x0
,
0x20000
,
"trtl-base"
),
DEFINE_RES_IRQ_NAMED
(
0
,
"trtl-hmq"
),
DEFINE_RES_IRQ_NAMED
(
1
,
"trtl-dbg"
),
};
static
int
svec_create_trtl
(
struct
svec_dev
*
svec
)
{
struct
vme_dev
*
vme_dev
=
to_vme_dev
(
svec
->
dev
);
struct
platform_device
*
pdev
;
struct
platform_device_info
pdevinfo
=
{
.
parent
=
&
vme_dev
->
dev
,
.
name
=
"mock-turtle-svec"
,
.
id
=
trtl_id
++
,
.
res
=
trtl_resource
,
.
num_res
=
ARRAY_SIZE
(
trtl_resource
),
};
struct
irq_domain
*
irqd
;
int
ret
,
i
;
if
(
svec
->
pdev_trtl
)
{
dev_err
(
svec
->
dev
,
"Mock Turtle aldready exists
\n
"
);
return
-
EBUSY
;
}
if
(
!
svec
->
pdev_vic
)
{
dev_err
(
svec
->
dev
,
"Mock Turtle needs the HTVIC device
\n
"
);
return
-
ENODEV
;
}
irqd
=
irq_find_host
(
svec
->
pdev_vic
);
if
(
!
irqd
)
{
dev_err
(
svec
->
dev
,
"Cannot find HT-VIC irq domain
\n
"
);
return
-
ENODEV
;
}
for
(
i
=
0
;
i
<
SVEC_N_SLOTS
;
++
i
)
{
ret
=
fmc_scan_sdb_tree
(
svec
->
fmcs
[
i
],
0x0
);
if
(
ret
>=
0
||
ret
==
-
EBUSY
)
break
;
}
/* Look for the WhiteRabbit NodeCore component and create a device
based of FMC device on virtual slot 2 */
ret
=
fmc_find_sdb_device
(
svec
->
fmcs
[
i
]
->
sdb
,
0xCE42
,
0x90DE
,
NULL
);
if
(
ret
<
0
)
return
ret
;
/* Set the FPGA base address and mockturtle base address */
trtl_resource
[
0
].
parent
=
&
svec
->
res_mem
[
MAP_REG
];
trtl_resource
[
0
].
start
=
svec
->
res_mem
[
MAP_REG
].
start
+
ret
;
trtl_resource
[
0
].
end
=
trtl_resource
[
0
].
start
+
0x10000
-
1
;
trtl_resource
[
0
].
child
=
NULL
;
trtl_resource
[
0
].
sibling
=
NULL
;
trtl_resource
[
0
].
flags
=
IORESOURCE_MEM
;
/* Set mockturtle IRQ addresses */
trtl_resource
[
1
].
start
=
irq_find_mapping
(
irqd
,
2
);
trtl_resource
[
1
].
flags
|=
IORESOURCE_IRQ_HIGHEDGE
;
trtl_resource
[
2
].
start
=
irq_find_mapping
(
irqd
,
3
);
trtl_resource
[
2
].
flags
|=
IORESOURCE_IRQ_HIGHEDGE
;
pdev
=
platform_device_register_full
(
&
pdevinfo
);
if
(
IS_ERR_OR_NULL
(
pdev
))
{
dev_err
(
svec
->
dev
,
"cannot allocate Mock Turtle device
\n
"
);
return
-
ENOMEM
;
}
svec
->
pdev_trtl
=
pdev
;
return
0
;
}
static
int
svec_scan_cores
(
struct
svec_dev
*
svec
)
{
/* svec_create_vic(svec); */
/* svec_create_trtl(svec); */
return
0
;
}
...
...
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