Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
92eb729b
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,发现更多精彩内容 >>
提交
92eb729b
编写于
12月 27, 2006
作者:
W
Wolfgang Denk
提交者:
Wolfgang Denk
12月 27, 2006
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix bug in adaption of Stefano Babic's CFI driver patch.
上级
9c0f42ec
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
15 deletion
+21
-15
drivers/cfi_flash.c
drivers/cfi_flash.c
+21
-15
未找到文件。
drivers/cfi_flash.c
浏览文件 @
92eb729b
...
...
@@ -104,6 +104,7 @@
#define FLASH_OFFSET_DEVICE_ID2 0x0E
#define FLASH_OFFSET_DEVICE_ID3 0x0F
#define FLASH_OFFSET_CFI 0x55
#define FLASH_OFFSET_CFI_ALT 0x555
#define FLASH_OFFSET_CFI_RESP 0x10
#define FLASH_OFFSET_PRIMARY_VENDOR 0x13
#define FLASH_OFFSET_EXT_QUERY_T_P_ADDR 0x15
/* extended query table primary addr */
...
...
@@ -154,6 +155,8 @@ typedef union {
#define NUM_ERASE_REGIONS 4
/* max. number of erase regions */
static
uint
flash_offset_cfi
[
2
]
=
{
FLASH_OFFSET_CFI
,
FLASH_OFFSET_CFI_ALT
};
/* use CFG_MAX_FLASH_BANKS_DETECT if defined */
#ifdef CFG_MAX_FLASH_BANKS_DETECT
static
ulong
bank_base
[
CFG_MAX_FLASH_BANKS_DETECT
]
=
CFG_FLASH_BANKS_LIST
;
...
...
@@ -343,7 +346,7 @@ unsigned long flash_init (void)
if
(
flash_info
[
i
].
flash_id
==
FLASH_UNKNOWN
)
{
#ifndef CFG_FLASH_QUIET_TEST
printf
(
"## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB
\n
"
,
i
,
flash_info
[
i
].
size
,
flash_info
[
i
].
size
<<
20
);
i
+
1
,
flash_info
[
i
].
size
,
flash_info
[
i
].
size
<<
20
);
#endif
/* CFG_FLASH_QUIET_TEST */
}
#ifdef CFG_FLASH_PROTECTION
...
...
@@ -1136,6 +1139,7 @@ static void flash_read_jedec_ids (flash_info_t * info)
*/
static
int
flash_detect_cfi
(
flash_info_t
*
info
)
{
int
cfi_offset
;
debug
(
"flash detect cfi
\n
"
);
for
(
info
->
portwidth
=
CFG_FLASH_CFI_WIDTH
;
...
...
@@ -1144,20 +1148,22 @@ static int flash_detect_cfi (flash_info_t * info)
info
->
chipwidth
<=
info
->
portwidth
;
info
->
chipwidth
<<=
1
)
{
flash_write_cmd
(
info
,
0
,
0
,
info
->
cmd_reset
);
flash_write_cmd
(
info
,
0
,
FLASH_OFFSET_CFI
,
FLASH_CMD_CFI
);
if
(
flash_isequal
(
info
,
0
,
FLASH_OFFSET_CFI_RESP
,
'Q'
)
&&
flash_isequal
(
info
,
0
,
FLASH_OFFSET_CFI_RESP
+
1
,
'R'
)
&&
flash_isequal
(
info
,
0
,
FLASH_OFFSET_CFI_RESP
+
2
,
'Y'
))
{
info
->
interface
=
flash_read_ushort
(
info
,
0
,
FLASH_OFFSET_INTERFACE
);
info
->
cfi_offset
=
flash_offset_cfi
[
cfi_offset
];
debug
(
"device interface is %d
\n
"
,
info
->
interface
);
debug
(
"found port %d chip %d "
,
info
->
portwidth
,
info
->
chipwidth
);
debug
(
"port %d bits chip %d bits
\n
"
,
info
->
portwidth
<<
CFI_FLASH_SHIFT_WIDTH
,
info
->
chipwidth
<<
CFI_FLASH_SHIFT_WIDTH
);
return
1
;
for
(
cfi_offset
=
0
;
cfi_offset
<
sizeof
(
flash_offset_cfi
)
/
sizeof
(
uint
);
cfi_offset
++
)
{
flash_write_cmd
(
info
,
0
,
flash_offset_cfi
[
cfi_offset
],
FLASH_CMD_CFI
);
if
(
flash_isequal
(
info
,
0
,
FLASH_OFFSET_CFI_RESP
,
'Q'
)
&&
flash_isequal
(
info
,
0
,
FLASH_OFFSET_CFI_RESP
+
1
,
'R'
)
&&
flash_isequal
(
info
,
0
,
FLASH_OFFSET_CFI_RESP
+
2
,
'Y'
))
{
info
->
interface
=
flash_read_ushort
(
info
,
0
,
FLASH_OFFSET_INTERFACE
);
info
->
cfi_offset
=
flash_offset_cfi
[
cfi_offset
];
debug
(
"device interface is %d
\n
"
,
info
->
interface
);
debug
(
"found port %d chip %d "
,
info
->
portwidth
,
info
->
chipwidth
);
debug
(
"port %d bits chip %d bits
\n
"
,
info
->
portwidth
<<
CFI_FLASH_SHIFT_WIDTH
,
info
->
chipwidth
<<
CFI_FLASH_SHIFT_WIDTH
);
return
1
;
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录