Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
475c7970
U
U-Boot.Mirror
项目概览
OS
/
U-Boot.Mirror
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
U-Boot.Mirror
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
475c7970
编写于
8月 23, 2012
作者:
R
Rob Herring
提交者:
Tom Rini
9月 25, 2012
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
cmd_disk: use common get_device_and_partition function
Signed-off-by:
N
Rob Herring
<
rob.herring@calxeda.com
>
上级
cfda5aea
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
58 deletion
+19
-58
common/cmd_disk.c
common/cmd_disk.c
+19
-58
未找到文件。
common/cmd_disk.c
浏览文件 @
475c7970
...
@@ -23,14 +23,16 @@
...
@@ -23,14 +23,16 @@
*/
*/
#include <common.h>
#include <common.h>
#include <command.h>
#include <command.h>
#include <part.h>
#if defined(CONFIG_CMD_IDE) || defined(CONFIG_CMD_SCSI) || \
defined(CONFIG_USB_STORAGE)
int
common_diskboot
(
cmd_tbl_t
*
cmdtp
,
const
char
*
intf
,
int
argc
,
int
common_diskboot
(
cmd_tbl_t
*
cmdtp
,
const
char
*
intf
,
int
argc
,
char
*
const
argv
[])
char
*
const
argv
[])
{
{
char
*
boot_device
=
NULL
;
int
dev
,
part
;
char
*
ep
;
ulong
addr
=
CONFIG_SYS_LOAD_ADDR
;
int
dev
,
part
=
0
;
ulong
cnt
;
ulong
addr
,
cnt
;
disk_partition_t
info
;
disk_partition_t
info
;
image_header_t
*
hdr
;
image_header_t
*
hdr
;
block_dev_desc_t
*
dev_desc
;
block_dev_desc_t
*
dev_desc
;
...
@@ -40,72 +42,30 @@ int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
...
@@ -40,72 +42,30 @@ int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
#endif
#endif
bootstage_mark
(
BOOTSTAGE_ID_IDE_START
);
bootstage_mark
(
BOOTSTAGE_ID_IDE_START
);
switch
(
argc
)
{
if
(
argc
>
3
)
{
case
1
:
addr
=
CONFIG_SYS_LOAD_ADDR
;
boot_device
=
getenv
(
"bootdevice"
);
break
;
case
2
:
addr
=
simple_strtoul
(
argv
[
1
],
NULL
,
16
);
boot_device
=
getenv
(
"bootdevice"
);
break
;
case
3
:
addr
=
simple_strtoul
(
argv
[
1
],
NULL
,
16
);
boot_device
=
argv
[
2
];
break
;
default:
bootstage_error
(
BOOTSTAGE_ID_IDE_ADDR
);
bootstage_error
(
BOOTSTAGE_ID_IDE_ADDR
);
return
CMD_RET_USAGE
;
return
CMD_RET_USAGE
;
}
}
bootstage_mark
(
BOOTSTAGE_ID_IDE_ADDR
);
bootstage_mark
(
BOOTSTAGE_ID_IDE_ADDR
);
if
(
!
boot_device
)
{
if
(
argc
>
1
)
puts
(
"
\n
** No boot device **
\n
"
);
addr
=
simple_strtoul
(
argv
[
1
],
NULL
,
16
);
bootstage_error
(
BOOTSTAGE_ID_IDE_BOOT_DEVICE
);
return
1
;
}
bootstage_mark
(
BOOTSTAGE_ID_IDE_BOOT_DEVICE
);
dev
=
simple_strtoul
(
boot_device
,
&
ep
,
16
);
bootstage_mark
(
BOOTSTAGE_ID_IDE_BOOT_DEVICE
);
dev_desc
=
get_dev
(
intf
,
dev
);
part
=
get_device_and_partition
(
intf
,
(
argc
==
3
)
?
argv
[
2
]
:
NULL
,
if
(
dev_desc
->
type
==
DEV_TYPE_UNKNOWN
)
{
&
dev_desc
,
&
info
);
printf
(
"
\n
** Device %d not available
\n
"
,
dev
);
if
(
part
<
0
)
{
bootstage_error
(
BOOTSTAGE_ID_IDE_TYPE
);
bootstage_error
(
BOOTSTAGE_ID_IDE_TYPE
);
return
1
;
return
1
;
}
}
bootstage_mark
(
BOOTSTAGE_ID_IDE_TYPE
);
if
(
*
ep
)
{
if
(
*
ep
!=
':'
)
{
puts
(
"
\n
** Invalid boot device, use `dev[:part]' **
\n
"
);
bootstage_error
(
BOOTSTAGE_ID_IDE_PART
);
return
1
;
}
part
=
simple_strtoul
(
++
ep
,
NULL
,
16
);
}
bootstage_mark
(
BOOTSTAGE_ID_IDE_PART
);
if
(
get_partition_info
(
dev_desc
,
part
,
&
info
))
{
dev
=
dev_desc
->
dev
;
bootstage_error
(
BOOTSTAGE_ID_IDE_PART_INFO
);
bootstage_mark
(
BOOTSTAGE_ID_IDE_TYPE
);
return
1
;
}
bootstage_mark
(
BOOTSTAGE_ID_IDE_PART_INFO
);
if
((
strncmp
((
char
*
)
info
.
type
,
BOOT_PART_TYPE
,
sizeof
(
info
.
type
))
!=
0
)
&&
(
strncmp
((
char
*
)
info
.
type
,
BOOT_PART_COMP
,
sizeof
(
info
.
type
))
!=
0
)
)
{
printf
(
"
\n
** Invalid partition type
\"
%.32s
\"
"
" (expect
\"
"
BOOT_PART_TYPE
"
\"
)
\n
"
,
info
.
type
);
bootstage_error
(
BOOTSTAGE_ID_IDE_PART_TYPE
);
return
1
;
}
bootstage_mark
(
BOOTSTAGE_ID_IDE_PART_TYPE
);
printf
(
"
\n
Loading from disk device %d, partition %d: "
printf
(
"
\n
Loading from %s device %d, partition %d: "
"Name: %.32s Type: %.32s
\n
"
,
dev
,
part
,
info
.
name
,
info
.
type
);
"Name: %.32s Type: %.32s
\n
"
,
intf
,
dev
,
part
,
info
.
name
,
info
.
type
);
debug
(
"First Block: %ld, # of blocks: %ld, Block Size: %ld
\n
"
,
debug
(
"First Block: %ld, # of blocks: %ld, Block Size: %ld
\n
"
,
info
.
start
,
info
.
size
,
info
.
blksz
);
info
.
start
,
info
.
size
,
info
.
blksz
);
...
@@ -181,3 +141,4 @@ int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
...
@@ -181,3 +141,4 @@ int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
return
bootm_maybe_autostart
(
cmdtp
,
argv
[
0
]);
return
bootm_maybe_autostart
(
cmdtp
,
argv
[
0
]);
}
}
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录