Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
417345d8
L
linux
项目概览
xiphi1978
/
linux
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
417345d8
编写于
10月 29, 2007
作者:
C
Christoph Hellwig
提交者:
Ralf Baechle
1月 29, 2008
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[MIPS] CFE: Make code remotely resemble Linux code.
Signed-off-by:
N
Ralf Baechle
<
ralf@linux-mips.org
>
上级
8b6c2324
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
167 addition
and
309 deletion
+167
-309
arch/mips/fw/cfe/cfe_api.c
arch/mips/fw/cfe/cfe_api.c
+57
-127
arch/mips/fw/cfe/cfe_api_int.h
arch/mips/fw/cfe/cfe_api_int.h
+91
-95
include/asm-mips/fw/cfe/cfe_api.h
include/asm-mips/fw/cfe/cfe_api.h
+12
-75
include/asm-mips/fw/cfe/cfe_error.h
include/asm-mips/fw/cfe/cfe_error.h
+7
-12
未找到文件。
arch/mips/fw/cfe/cfe_api.c
浏览文件 @
417345d8
...
...
@@ -16,19 +16,16 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* *********************************************************************
*
* Broadcom Common Firmware Environment (CFE)
*
* Device Function stubs File: cfe_api.c
*
* This module contains device function stubs (small routines to
* call the standard "iocb" interface entry point to CFE).
* There should be one routine here per iocb function call.
*
* Authors: Mitch Lichtenberg, Chris Demetriou
*
********************************************************************* */
/*
*
* Broadcom Common Firmware Environment (CFE)
*
* This module contains device function stubs (small routines to
* call the standard "iocb" interface entry point to CFE).
* There should be one routine here per iocb function call.
*
* Authors: Mitch Lichtenberg, Chris Demetriou
*/
#include <asm/fw/cfe/cfe_api.h>
#include "cfe_api_int.h"
...
...
@@ -37,12 +34,8 @@
#define XPTR_FROM_NATIVE(n) ((cfe_xptr_t) (intptr_t) (n))
#define NATIVE_FROM_XPTR(x) ((void *) (intptr_t) (x))
#ifdef CFE_API_IMPL_NAMESPACE
#define cfe_iocb_dispatch(a) __cfe_iocb_dispatch(a)
#endif
int
cfe_iocb_dispatch
(
cfe_xiocb_t
*
xiocb
);
int
cfe_iocb_dispatch
(
struct
cfe_xiocb
*
xiocb
);
#if defined(CFE_API_common) || defined(CFE_API_ALL)
/*
* Declare the dispatch function with args of "intptr_t".
* This makes sure whatever model we're compiling in
...
...
@@ -53,27 +46,25 @@ int cfe_iocb_dispatch(cfe_xiocb_t * xiocb);
*/
static
int
(
*
cfe_dispfunc
)
(
intptr_t
handle
,
intptr_t
xiocb
)
=
0
;
static
cfe_xuint_t
cfe_handle
=
0
;
static
u64
cfe_handle
=
0
;
int
cfe_init
(
cfe_xuint_t
handle
,
cfe_xuint_t
ept
)
int
cfe_init
(
u64
handle
,
u64
ept
)
{
cfe_dispfunc
=
NATIVE_FROM_XPTR
(
ept
);
cfe_handle
=
handle
;
return
0
;
}
int
cfe_iocb_dispatch
(
cfe_xiocb_t
*
xiocb
)
int
cfe_iocb_dispatch
(
struct
cfe_xiocb
*
xiocb
)
{
if
(
!
cfe_dispfunc
)
return
-
1
;
return
(
*
cfe_dispfunc
)
((
intptr_t
)
cfe_handle
,
(
intptr_t
)
xiocb
);
}
#endif
/* CFE_API_common || CFE_API_ALL */
#if defined(CFE_API_close) || defined(CFE_API_ALL)
int
cfe_close
(
int
handle
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_DEV_CLOSE
;
xiocb
.
xiocb_status
=
0
;
...
...
@@ -86,18 +77,16 @@ int cfe_close(int handle)
return
xiocb
.
xiocb_status
;
}
#endif
/* CFE_API_close || CFE_API_ALL */
#if defined(CFE_API_cpu_start) || defined(CFE_API_ALL)
int
cfe_cpu_start
(
int
cpu
,
void
(
*
fn
)
(
void
),
long
sp
,
long
gp
,
long
a1
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_FW_CPUCTL
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_cpuctl_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_cpuctl
);
xiocb
.
plist
.
xiocb_cpuctl
.
cpu_number
=
cpu
;
xiocb
.
plist
.
xiocb_cpuctl
.
cpu_command
=
CFE_CPU_CMD_START
;
xiocb
.
plist
.
xiocb_cpuctl
.
gp_val
=
gp
;
...
...
@@ -109,18 +98,16 @@ int cfe_cpu_start(int cpu, void (*fn) (void), long sp, long gp, long a1)
return
xiocb
.
xiocb_status
;
}
#endif
/* CFE_API_cpu_start || CFE_API_ALL */
#if defined(CFE_API_cpu_stop) || defined(CFE_API_ALL)
int
cfe_cpu_stop
(
int
cpu
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_FW_CPUCTL
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_cpuctl_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_cpuctl
);
xiocb
.
plist
.
xiocb_cpuctl
.
cpu_number
=
cpu
;
xiocb
.
plist
.
xiocb_cpuctl
.
cpu_command
=
CFE_CPU_CMD_STOP
;
...
...
@@ -128,18 +115,16 @@ int cfe_cpu_stop(int cpu)
return
xiocb
.
xiocb_status
;
}
#endif
/* CFE_API_cpu_stop || CFE_API_ALL */
#if defined(CFE_API_enumenv) || defined(CFE_API_ALL)
int
cfe_enumenv
(
int
idx
,
char
*
name
,
int
namelen
,
char
*
val
,
int
vallen
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_ENV_SET
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_envbuf_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_envbuf
);
xiocb
.
plist
.
xiocb_envbuf
.
enum_idx
=
idx
;
xiocb
.
plist
.
xiocb_envbuf
.
name_ptr
=
XPTR_FROM_NATIVE
(
name
);
xiocb
.
plist
.
xiocb_envbuf
.
name_length
=
namelen
;
...
...
@@ -150,20 +135,17 @@ int cfe_enumenv(int idx, char *name, int namelen, char *val, int vallen)
return
xiocb
.
xiocb_status
;
}
#endif
/* CFE_API_enumenv || CFE_API_ALL */
#if defined(CFE_API_enummem) || defined(CFE_API_ALL)
int
cfe_enummem
(
int
idx
,
int
flags
,
cfe_xuint_t
*
start
,
cfe_xuint_t
*
length
,
cfe_xuint_t
*
type
)
cfe_enummem
(
int
idx
,
int
flags
,
u64
*
start
,
u64
*
length
,
u64
*
type
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_FW_MEMENUM
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
flags
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_meminfo_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_meminfo
);
xiocb
.
plist
.
xiocb_meminfo
.
mi_idx
=
idx
;
cfe_iocb_dispatch
(
&
xiocb
);
...
...
@@ -177,30 +159,26 @@ cfe_enummem(int idx, int flags, cfe_xuint_t * start, cfe_xuint_t * length,
return
0
;
}
#endif
/* CFE_API_enummem || CFE_API_ALL */
#if defined(CFE_API_exit) || defined(CFE_API_ALL)
int
cfe_exit
(
int
warm
,
int
status
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_FW_RESTART
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
warm
?
CFE_FLG_WARMSTART
:
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_exitstat_
t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_exitsta
t
);
xiocb
.
plist
.
xiocb_exitstat
.
status
=
status
;
cfe_iocb_dispatch
(
&
xiocb
);
return
xiocb
.
xiocb_status
;
}
#endif
/* CFE_API_exit || CFE_API_ALL */
#if defined(CFE_API_flushcache) || defined(CFE_API_ALL)
int
cfe_flushcache
(
int
flg
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_FW_FLUSHCACHE
;
xiocb
.
xiocb_status
=
0
;
...
...
@@ -212,34 +190,30 @@ int cfe_flushcache(int flg)
return
xiocb
.
xiocb_status
;
}
#endif
/* CFE_API_flushcache || CFE_API_ALL */
#if defined(CFE_API_getdevinfo) || defined(CFE_API_ALL)
int
cfe_getdevinfo
(
char
*
name
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_DEV_GETINFO
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_buffer_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_buffer
);
xiocb
.
plist
.
xiocb_buffer
.
buf_offset
=
0
;
xiocb
.
plist
.
xiocb_buffer
.
buf_ptr
=
XPTR_FROM_NATIVE
(
name
);
xiocb
.
plist
.
xiocb_buffer
.
buf_length
=
cfe_
strlen
(
name
);
xiocb
.
plist
.
xiocb_buffer
.
buf_length
=
strlen
(
name
);
cfe_iocb_dispatch
(
&
xiocb
);
if
(
xiocb
.
xiocb_status
<
0
)
return
xiocb
.
xiocb_status
;
return
xiocb
.
plist
.
xiocb_buffer
.
buf_
devflags
;
return
xiocb
.
plist
.
xiocb_buffer
.
buf_
ioctlcmd
;
}
#endif
/* CFE_API_getdevinfo || CFE_API_ALL */
#if defined(CFE_API_getenv) || defined(CFE_API_ALL)
int
cfe_getenv
(
char
*
name
,
char
*
dest
,
int
destlen
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
*
dest
=
0
;
...
...
@@ -247,10 +221,10 @@ int cfe_getenv(char *name, char *dest, int destlen)
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_envbuf_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_envbuf
);
xiocb
.
plist
.
xiocb_envbuf
.
enum_idx
=
0
;
xiocb
.
plist
.
xiocb_envbuf
.
name_ptr
=
XPTR_FROM_NATIVE
(
name
);
xiocb
.
plist
.
xiocb_envbuf
.
name_length
=
cfe_
strlen
(
name
);
xiocb
.
plist
.
xiocb_envbuf
.
name_length
=
strlen
(
name
);
xiocb
.
plist
.
xiocb_envbuf
.
val_ptr
=
XPTR_FROM_NATIVE
(
dest
);
xiocb
.
plist
.
xiocb_envbuf
.
val_length
=
destlen
;
...
...
@@ -258,18 +232,16 @@ int cfe_getenv(char *name, char *dest, int destlen)
return
xiocb
.
xiocb_status
;
}
#endif
/* CFE_API_getenv || CFE_API_ALL */
#if defined(CFE_API_getfwinfo) || defined(CFE_API_ALL)
int
cfe_getfwinfo
(
cfe_fwinfo_t
*
info
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_FW_GETINFO
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_fwinfo_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_fwinfo
);
cfe_iocb_dispatch
(
&
xiocb
);
...
...
@@ -292,12 +264,10 @@ int cfe_getfwinfo(cfe_fwinfo_t * info)
return
0
;
}
#endif
/* CFE_API_getfwinfo || CFE_API_ALL */
#if defined(CFE_API_getstdhandle) || defined(CFE_API_ALL)
int
cfe_getstdhandle
(
int
flg
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_DEV_GETHANDLE
;
xiocb
.
xiocb_status
=
0
;
...
...
@@ -311,23 +281,17 @@ int cfe_getstdhandle(int flg)
return
xiocb
.
xiocb_status
;
return
xiocb
.
xiocb_handle
;
}
#endif
/* CFE_API_getstdhandle || CFE_API_ALL */
#if defined(CFE_API_getticks) || defined(CFE_API_ALL)
int64_t
#ifdef CFE_API_IMPL_NAMESPACE
__cfe_getticks
(
void
)
#else
cfe_getticks
(
void
)
#endif
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_FW_GETTIME
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_time_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_time
);
xiocb
.
plist
.
xiocb_time
.
ticks
=
0
;
cfe_iocb_dispatch
(
&
xiocb
);
...
...
@@ -335,18 +299,16 @@ cfe_getticks(void)
return
xiocb
.
plist
.
xiocb_time
.
ticks
;
}
#endif
/* CFE_API_getticks || CFE_API_ALL */
#if defined(CFE_API_inpstat) || defined(CFE_API_ALL)
int
cfe_inpstat
(
int
handle
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_DEV_INPSTAT
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
handle
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_inpstat_
t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_inpsta
t
);
xiocb
.
plist
.
xiocb_inpstat
.
inp_status
=
0
;
cfe_iocb_dispatch
(
&
xiocb
);
...
...
@@ -355,20 +317,18 @@ int cfe_inpstat(int handle)
return
xiocb
.
xiocb_status
;
return
xiocb
.
plist
.
xiocb_inpstat
.
inp_status
;
}
#endif
/* CFE_API_inpstat || CFE_API_ALL */
#if defined(CFE_API_ioctl) || defined(CFE_API_ALL)
int
cfe_ioctl
(
int
handle
,
unsigned
int
ioctlnum
,
unsigned
char
*
buffer
,
int
length
,
int
*
retlen
,
cfe_xuint_t
offset
)
int
length
,
int
*
retlen
,
u64
offset
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_DEV_IOCTL
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
handle
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_buffer_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_buffer
);
xiocb
.
plist
.
xiocb_buffer
.
buf_offset
=
offset
;
xiocb
.
plist
.
xiocb_buffer
.
buf_ioctlcmd
=
ioctlnum
;
xiocb
.
plist
.
xiocb_buffer
.
buf_ptr
=
XPTR_FROM_NATIVE
(
buffer
);
...
...
@@ -380,21 +340,19 @@ cfe_ioctl(int handle, unsigned int ioctlnum, unsigned char *buffer,
*
retlen
=
xiocb
.
plist
.
xiocb_buffer
.
buf_retlen
;
return
xiocb
.
xiocb_status
;
}
#endif
/* CFE_API_ioctl || CFE_API_ALL */
#if defined(CFE_API_open) || defined(CFE_API_ALL)
int
cfe_open
(
char
*
name
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_DEV_OPEN
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_buffer_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_buffer
);
xiocb
.
plist
.
xiocb_buffer
.
buf_offset
=
0
;
xiocb
.
plist
.
xiocb_buffer
.
buf_ptr
=
XPTR_FROM_NATIVE
(
name
);
xiocb
.
plist
.
xiocb_buffer
.
buf_length
=
cfe_
strlen
(
name
);
xiocb
.
plist
.
xiocb_buffer
.
buf_length
=
strlen
(
name
);
cfe_iocb_dispatch
(
&
xiocb
);
...
...
@@ -402,27 +360,21 @@ int cfe_open(char *name)
return
xiocb
.
xiocb_status
;
return
xiocb
.
xiocb_handle
;
}
#endif
/* CFE_API_open || CFE_API_ALL */
#if defined(CFE_API_read) || defined(CFE_API_ALL)
int
cfe_read
(
int
handle
,
unsigned
char
*
buffer
,
int
length
)
{
return
cfe_readblk
(
handle
,
0
,
buffer
,
length
);
}
#endif
/* CFE_API_read || CFE_API_ALL */
#if defined(CFE_API_readblk) || defined(CFE_API_ALL)
int
cfe_readblk
(
int
handle
,
cfe_xint_t
offset
,
unsigned
char
*
buffer
,
int
length
)
int
cfe_readblk
(
int
handle
,
s64
offset
,
unsigned
char
*
buffer
,
int
length
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_DEV_READ
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
handle
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_buffer_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_buffer
);
xiocb
.
plist
.
xiocb_buffer
.
buf_offset
=
offset
;
xiocb
.
plist
.
xiocb_buffer
.
buf_ptr
=
XPTR_FROM_NATIVE
(
buffer
);
xiocb
.
plist
.
xiocb_buffer
.
buf_length
=
length
;
...
...
@@ -433,62 +385,41 @@ cfe_readblk(int handle, cfe_xint_t offset, unsigned char *buffer,
return
xiocb
.
xiocb_status
;
return
xiocb
.
plist
.
xiocb_buffer
.
buf_retlen
;
}
#endif
/* CFE_API_readblk || CFE_API_ALL */
#if defined(CFE_API_setenv) || defined(CFE_API_ALL)
int
cfe_setenv
(
char
*
name
,
char
*
val
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_ENV_SET
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
0
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_envbuf_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_envbuf
);
xiocb
.
plist
.
xiocb_envbuf
.
enum_idx
=
0
;
xiocb
.
plist
.
xiocb_envbuf
.
name_ptr
=
XPTR_FROM_NATIVE
(
name
);
xiocb
.
plist
.
xiocb_envbuf
.
name_length
=
cfe_
strlen
(
name
);
xiocb
.
plist
.
xiocb_envbuf
.
name_length
=
strlen
(
name
);
xiocb
.
plist
.
xiocb_envbuf
.
val_ptr
=
XPTR_FROM_NATIVE
(
val
);
xiocb
.
plist
.
xiocb_envbuf
.
val_length
=
cfe_
strlen
(
val
);
xiocb
.
plist
.
xiocb_envbuf
.
val_length
=
strlen
(
val
);
cfe_iocb_dispatch
(
&
xiocb
);
return
xiocb
.
xiocb_status
;
}
#endif
/* CFE_API_setenv || CFE_API_ALL */
#if (defined(CFE_API_strlen) || defined(CFE_API_ALL)) \
&& !defined(CFE_API_STRLEN_CUSTOM)
int
cfe_strlen
(
char
*
name
)
{
int
count
=
0
;
while
(
*
name
++
)
count
++
;
return
count
;
}
#endif
/* CFE_API_strlen || CFE_API_ALL */
#if defined(CFE_API_write) || defined(CFE_API_ALL)
int
cfe_write
(
int
handle
,
unsigned
char
*
buffer
,
int
length
)
{
return
cfe_writeblk
(
handle
,
0
,
buffer
,
length
);
}
#endif
/* CFE_API_write || CFE_API_ALL */
#if defined(CFE_API_writeblk) || defined(CFE_API_ALL)
int
cfe_writeblk
(
int
handle
,
cfe_xint_t
offset
,
unsigned
char
*
buffer
,
int
length
)
int
cfe_writeblk
(
int
handle
,
s64
offset
,
unsigned
char
*
buffer
,
int
length
)
{
cfe_xiocb_t
xiocb
;
struct
cfe_xiocb
xiocb
;
xiocb
.
xiocb_fcode
=
CFE_CMD_DEV_WRITE
;
xiocb
.
xiocb_status
=
0
;
xiocb
.
xiocb_handle
=
handle
;
xiocb
.
xiocb_flags
=
0
;
xiocb
.
xiocb_psize
=
sizeof
(
xiocb_buffer_t
);
xiocb
.
xiocb_psize
=
sizeof
(
struct
xiocb_buffer
);
xiocb
.
plist
.
xiocb_buffer
.
buf_offset
=
offset
;
xiocb
.
plist
.
xiocb_buffer
.
buf_ptr
=
XPTR_FROM_NATIVE
(
buffer
);
xiocb
.
plist
.
xiocb_buffer
.
buf_length
=
length
;
...
...
@@ -499,4 +430,3 @@ cfe_writeblk(int handle, cfe_xint_t offset, unsigned char *buffer,
return
xiocb
.
xiocb_status
;
return
xiocb
.
plist
.
xiocb_buffer
.
buf_retlen
;
}
#endif
/* CFE_API_writeblk || CFE_API_ALL */
arch/mips/fw/cfe/cfe_api_int.h
浏览文件 @
417345d8
...
...
@@ -15,28 +15,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* *********************************************************************
*
* Broadcom Common Firmware Environment (CFE)
*
* Device function prototypes File: cfe_api_int.h
*
* This header defines all internal types and macros for the
* library. This is stuff that's not exported to an app
* using the library.
*
* Authors: Mitch Lichtenberg, Chris Demetriou
*
********************************************************************* */
#ifndef CFE_API_INT_H
#define CFE_API_INT_H
/* *********************************************************************
* Constants
********************************************************************* */
/*
* Constants.
*/
#define CFE_CMD_FW_GETINFO 0
#define CFE_CMD_FW_RESTART 1
#define CFE_CMD_FW_BOOT 2
...
...
@@ -64,89 +48,101 @@
#define CFE_CMD_VENDOR_USE 0x8000
/* codes above this are for customer use */
/*
*********************************************************************
* Structures
*********************************************************************
*/
/*
* Structures.
*/
typedef
uint64_t
cfe_xuint_t
;
typedef
int64_t
cfe_xint_t
;
typedef
int64_t
cfe_xptr_t
;
/* eeek, signed "pointers" */
typedef
s64
cfe_xptr_t
;
typedef
struct
xiocb_buffer_s
{
cfe_xuint_t
buf_offset
;
/* offset on device (bytes) */
struct
xiocb_buffer
{
u64
buf_offset
;
/* offset on device (bytes) */
cfe_xptr_t
buf_ptr
;
/* pointer to a buffer */
cfe_xuint_t
buf_length
;
/* length of this buffer */
cfe_xuint_t
buf_retlen
;
/* returned length (for read ops) */
cfe_xuint_t
buf_ioctlcmd
;
/* IOCTL command (used only for IOCTLs) */
}
xiocb_buffer_t
;
#define buf_devflags buf_ioctlcmd
/* returned device info flags */
u64
buf_length
;
/* length of this buffer */
u64
buf_retlen
;
/* returned length (for read ops) */
u64
buf_ioctlcmd
;
/* IOCTL command (used only for IOCTLs) */
};
typedef
struct
xiocb_inpstat_s
{
cfe_xuint_t
inp_status
;
/* 1 means input available */
}
xiocb_inpstat_t
;
struct
xiocb_inpstat
{
u64
inp_status
;
/* 1 means input available */
};
typedef
struct
xiocb_envbuf_s
{
cfe_xint_t
enum_idx
;
/* 0-based enumeration index */
struct
xiocb_envbuf
{
s64
enum_idx
;
/* 0-based enumeration index */
cfe_xptr_t
name_ptr
;
/* name string buffer */
cfe_xint_t
name_length
;
/* size of name buffer */
s64
name_length
;
/* size of name buffer */
cfe_xptr_t
val_ptr
;
/* value string buffer */
cfe_xint_t
val_length
;
/* size of value string buffer */
}
xiocb_envbuf_t
;
typedef
struct
xiocb_cpuctl_s
{
cfe_xuint_t
cpu_number
;
/* cpu number to control */
cfe_xuint_t
cpu_command
;
/* command to issue to CPU */
cfe_xuint_t
start_addr
;
/* CPU start address */
cfe_xuint_t
gp_val
;
/* starting GP value */
cfe_xuint_t
sp_val
;
/* starting SP value */
cfe_xuint_t
a1_val
;
/* starting A1 value */
}
xiocb_cpuctl_t
;
typedef
struct
xiocb_time_s
{
cfe_xint_t
ticks
;
/* current time in ticks */
}
xiocb_time_t
;
typedef
struct
xiocb_exitstat_s
{
cfe_xint_t
status
;
}
xiocb_exitstat_t
;
typedef
struct
xiocb_meminfo_s
{
cfe_xint_t
mi_idx
;
/* 0-based enumeration index */
cfe_xint_t
mi_type
;
/* type of memory block */
cfe_xuint_t
mi_addr
;
/* physical start address */
cfe_xuint_t
mi_size
;
/* block size */
}
xiocb_meminfo_t
;
typedef
struct
xiocb_fwinfo_s
{
cfe_xint_t
fwi_version
;
/* major, minor, eco version */
cfe_xint_t
fwi_totalmem
;
/* total installed mem */
cfe_xint_t
fwi_flags
;
/* various flags */
cfe_xint_t
fwi_boardid
;
/* board ID */
cfe_xint_t
fwi_bootarea_va
;
/* VA of boot area */
cfe_xint_t
fwi_bootarea_pa
;
/* PA of boot area */
cfe_xint_t
fwi_bootarea_size
;
/* size of boot area */
cfe_xint_t
fwi_reserved1
;
cfe_xint_t
fwi_reserved2
;
cfe_xint_t
fwi_reserved3
;
}
xiocb_fwinfo_t
;
typedef
struct
cfe_xiocb_s
{
cfe_xuint_t
xiocb_fcode
;
/* IOCB function code */
cfe_xint_t
xiocb_status
;
/* return status */
cfe_xint_t
xiocb_handle
;
/* file/device handle */
cfe_xuint_t
xiocb_flags
;
/* flags for this IOCB */
cfe_xuint_t
xiocb_psize
;
/* size of parameter list */
s64
val_length
;
/* size of value string buffer */
};
struct
xiocb_cpuctl
{
u64
cpu_number
;
/* cpu number to control */
u64
cpu_command
;
/* command to issue to CPU */
u64
start_addr
;
/* CPU start address */
u64
gp_val
;
/* starting GP value */
u64
sp_val
;
/* starting SP value */
u64
a1_val
;
/* starting A1 value */
};
struct
xiocb_time
{
s64
ticks
;
/* current time in ticks */
};
struct
xiocb_exitstat
{
s64
status
;
};
struct
xiocb_meminfo
{
s64
mi_idx
;
/* 0-based enumeration index */
s64
mi_type
;
/* type of memory block */
u64
mi_addr
;
/* physical start address */
u64
mi_size
;
/* block size */
};
struct
xiocb_fwinfo
{
s64
fwi_version
;
/* major, minor, eco version */
s64
fwi_totalmem
;
/* total installed mem */
s64
fwi_flags
;
/* various flags */
s64
fwi_boardid
;
/* board ID */
s64
fwi_bootarea_va
;
/* VA of boot area */
s64
fwi_bootarea_pa
;
/* PA of boot area */
s64
fwi_bootarea_size
;
/* size of boot area */
s64
fwi_reserved1
;
s64
fwi_reserved2
;
s64
fwi_reserved3
;
};
struct
cfe_xiocb
{
u64
xiocb_fcode
;
/* IOCB function code */
s64
xiocb_status
;
/* return status */
s64
xiocb_handle
;
/* file/device handle */
u64
xiocb_flags
;
/* flags for this IOCB */
u64
xiocb_psize
;
/* size of parameter list */
union
{
xiocb_buffer_t
xiocb_buffer
;
/* buffer parameters */
xiocb_inpstat_t
xiocb_inpstat
;
/* input status parameters */
xiocb_envbuf_t
xiocb_envbuf
;
/* environment function parameters */
xiocb_cpuctl_t
xiocb_cpuctl
;
/* CPU control parameters */
xiocb_time_t
xiocb_time
;
/* timer parameters */
xiocb_meminfo_t
xiocb_meminfo
;
/* memory arena info parameters */
xiocb_fwinfo_t
xiocb_fwinfo
;
/* firmware information */
xiocb_exitstat_t
xiocb_exitstat
;
/* Exit Status */
/* buffer parameters */
struct
xiocb_buffer
xiocb_buffer
;
/* input status parameters */
struct
xiocb_inpstat
xiocb_inpstat
;
/* environment function parameters */
struct
xiocb_envbuf
xiocb_envbuf
;
/* CPU control parameters */
struct
xiocb_cpuctl
xiocb_cpuctl
;
/* timer parameters */
struct
xiocb_time
xiocb_time
;
/* memory arena info parameters */
struct
xiocb_meminfo
xiocb_meminfo
;
/* firmware information */
struct
xiocb_fwinfo
xiocb_fwinfo
;
/* Exit Status */
struct
xiocb_exitstat
xiocb_exitstat
;
}
plist
;
}
cfe_xiocb_t
;
};
#endif
/* CFE_API_INT_H */
#endif
/* CFE_API_INT_H */
include/asm-mips/fw/cfe/cfe_api.h
浏览文件 @
417345d8
...
...
@@ -15,49 +15,27 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* *********************************************************************
*
* Broadcom Common Firmware Environment (CFE)
*
* Device function prototypes File: cfe_api.h
*
* This file contains declarations for doing callbacks to
* cfe from an application. It should be the only header
* needed by the application to use this library
*
* Authors: Mitch Lichtenberg, Chris Demetriou
*
********************************************************************* */
/*
* Broadcom Common Firmware Environment (CFE)
*
* This file contains declarations for doing callbacks to
* cfe from an application. It should be the only header
* needed by the application to use this library
*
* Authors: Mitch Lichtenberg, Chris Demetriou
*/
#ifndef CFE_API_H
#define CFE_API_H
/*
* Apply customizations here for different OSes. These need to:
* * typedef uint64_t, int64_t, intptr_t, uintptr_t.
* * define cfe_strlen() if use of an existing function is desired.
* * define CFE_API_IMPL_NAMESPACE if API functions are to use
* names in the implementation namespace.
* Also, optionally, if the build environment does not do so automatically,
* CFE_API_* can be defined here as desired.
*/
/* Begin customization. */
#include <linux/types.h>
#include <linux/string.h>
typedef
long
intptr_t
;
#define cfe_strlen strlen
#define CFE_API_ALL
#define CFE_API_STRLEN_CUSTOM
/* End customization. */
/* *********************************************************************
* Constants
********************************************************************* */
/*
* Constants
*/
/* Seal indicating CFE's presence, passed to user program. */
#define CFE_EPTSEAL 0x43464531
...
...
@@ -108,55 +86,14 @@ typedef struct {
}
cfe_fwinfo_t
;
/*
* cfe_strlen is handled specially: If already defined, it has been
* overridden in this environment with a standard strlen-like function.
*/
#ifdef cfe_strlen
# define CFE_API_STRLEN_CUSTOM
#else
# ifdef CFE_API_IMPL_NAMESPACE
# define cfe_strlen(a) __cfe_strlen(a)
# endif
int
cfe_strlen
(
char
*
name
);
#endif
/*
* Defines and prototypes for functions which take no arguments.
*/
#ifdef CFE_API_IMPL_NAMESPACE
int64_t
__cfe_getticks
(
void
);
#define cfe_getticks() __cfe_getticks()
#else
int64_t
cfe_getticks
(
void
);
#endif
/*
* Defines and prototypes for the rest of the functions.
*/
#ifdef CFE_API_IMPL_NAMESPACE
#define cfe_close(a) __cfe_close(a)
#define cfe_cpu_start(a, b, c, d, e) __cfe_cpu_start(a, b, c, d, e)
#define cfe_cpu_stop(a) __cfe_cpu_stop(a)
#define cfe_enumenv(a, b, d, e, f) __cfe_enumenv(a, b, d, e, f)
#define cfe_enummem(a, b, c, d, e) __cfe_enummem(a, b, c, d, e)
#define cfe_exit(a, b) __cfe_exit(a, b)
#define cfe_flushcache(a) __cfe_cacheflush(a)
#define cfe_getdevinfo(a) __cfe_getdevinfo(a)
#define cfe_getenv(a, b, c) __cfe_getenv(a, b, c)
#define cfe_getfwinfo(a) __cfe_getfwinfo(a)
#define cfe_getstdhandle(a) __cfe_getstdhandle(a)
#define cfe_init(a, b) __cfe_init(a, b)
#define cfe_inpstat(a) __cfe_inpstat(a)
#define cfe_ioctl(a, b, c, d, e, f) __cfe_ioctl(a, b, c, d, e, f)
#define cfe_open(a) __cfe_open(a)
#define cfe_read(a, b, c) __cfe_read(a, b, c)
#define cfe_readblk(a, b, c, d) __cfe_readblk(a, b, c, d)
#define cfe_setenv(a, b) __cfe_setenv(a, b)
#define cfe_write(a, b, c) __cfe_write(a, b, c)
#define cfe_writeblk(a, b, c, d) __cfe_writeblk(a, b, c, d)
#endif
/* CFE_API_IMPL_NAMESPACE */
int
cfe_close
(
int
handle
);
int
cfe_cpu_start
(
int
cpu
,
void
(
*
fn
)
(
void
),
long
sp
,
long
gp
,
long
a1
);
int
cfe_cpu_stop
(
int
cpu
);
...
...
include/asm-mips/fw/cfe/cfe_error.h
浏览文件 @
417345d8
...
...
@@ -16,18 +16,13 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* *********************************************************************
*
* Broadcom Common Firmware Environment (CFE)
*
* Error codes File: cfe_error.h
*
* CFE's global error code list is here.
*
* Author: Mitch Lichtenberg
*
********************************************************************* */
/*
* Broadcom Common Firmware Environment (CFE)
*
* CFE's global error code list is here.
*
* Author: Mitch Lichtenberg
*/
#define CFE_OK 0
#define CFE_ERR -1
/* generic error */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录