Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
remoteproc
remoteproc_internal.h
Go to the documentation of this file.
1
/*
2
* Remote processor framework
3
*
4
* Copyright (C) 2011 Texas Instruments, Inc.
5
* Copyright (C) 2011 Google, Inc.
6
*
7
* Ohad Ben-Cohen <
[email protected]
>
8
* Brian Swetland <
[email protected]
>
9
*
10
* This software is licensed under the terms of the GNU General Public
11
* License version 2, as published by the Free Software Foundation, and
12
* may be copied, distributed, and modified under those terms.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*/
19
20
#ifndef REMOTEPROC_INTERNAL_H
21
#define REMOTEPROC_INTERNAL_H
22
23
#include <
linux/irqreturn.h
>
24
#include <
linux/firmware.h
>
25
26
struct
rproc
;
27
36
struct
rproc_fw_ops
{
37
struct
resource_table
*(*find_rsc_table) (
struct
rproc
*
rproc
,
38
const
struct
firmware
*
fw
,
39
int
*tablesz);
40
int
(*
load
)(
struct
rproc
*
rproc
,
const
struct
firmware
*
fw
);
41
int
(*
sanity_check
)(
struct
rproc
*
rproc
,
const
struct
firmware
*
fw
);
42
u32
(*
get_boot_addr
)(
struct
rproc
*
rproc
,
const
struct
firmware
*
fw
);
43
};
44
45
/* from remoteproc_core.c */
46
void
rproc_release
(
struct
kref
*
kref
);
47
irqreturn_t
rproc_vq_interrupt
(
struct
rproc
*
rproc
,
int
vq_id);
48
49
/* from remoteproc_virtio.c */
50
int
rproc_add_virtio_dev
(
struct
rproc_vdev
*rvdev,
int
id
);
51
void
rproc_remove_virtio_dev
(
struct
rproc_vdev
*rvdev);
52
53
/* from remoteproc_debugfs.c */
54
void
rproc_remove_trace_file
(
struct
dentry
*tfile);
55
struct
dentry
*
rproc_create_trace_file
(
const
char
*
name
,
struct
rproc
*
rproc
,
56
struct
rproc_mem_entry
*
trace
);
57
void
rproc_delete_debug_dir
(
struct
rproc
*
rproc
);
58
void
rproc_create_debug_dir
(
struct
rproc
*
rproc
);
59
void
rproc_init_debugfs
(
void
);
60
void
rproc_exit_debugfs
(
void
);
61
62
void
rproc_free_vring
(
struct
rproc_vring
*rvring);
63
int
rproc_alloc_vring
(
struct
rproc_vdev
*rvdev,
int
i
);
64
65
void
*
rproc_da_to_va
(
struct
rproc
*
rproc
,
u64
da
,
int
len);
66
int
rproc_trigger_recovery
(
struct
rproc
*
rproc
);
67
68
static
inline
69
int
rproc_fw_sanity_check(
struct
rproc
*
rproc
,
const
struct
firmware
*
fw
)
70
{
71
if
(rproc->
fw_ops
->sanity_check)
72
return
rproc->
fw_ops
->sanity_check(rproc, fw);
73
74
return
0;
75
}
76
77
static
inline
78
u32
rproc_get_boot_addr(
struct
rproc *rproc,
const
struct
firmware
*fw)
79
{
80
if
(rproc->
fw_ops
->get_boot_addr)
81
return
rproc->
fw_ops
->get_boot_addr(rproc, fw);
82
83
return
0;
84
}
85
86
static
inline
87
int
rproc_load_segments(
struct
rproc *rproc,
const
struct
firmware
*fw)
88
{
89
if
(rproc->
fw_ops
->load)
90
return
rproc->
fw_ops
->load(rproc, fw);
91
92
return
-
EINVAL
;
93
}
94
95
static
inline
96
struct
resource_table
*rproc_find_rsc_table(
struct
rproc *rproc,
97
const
struct
firmware
*fw,
int
*tablesz)
98
{
99
if
(rproc->
fw_ops
->find_rsc_table)
100
return
rproc->
fw_ops
->find_rsc_table(rproc, fw, tablesz);
101
102
return
NULL
;
103
}
104
105
extern
const
struct
rproc_fw_ops
rproc_elf_fw_ops
;
106
107
#endif
/* REMOTEPROC_INTERNAL_H */
Generated on Thu Jan 10 2013 14:16:40 for Linux Kernel by
1.8.2