Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
2f926291
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,发现更多精彩内容 >>
提交
2f926291
编写于
5月 08, 2017
作者:
T
Tom Rini
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'next' of
git://git.denx.de/u-boot-spi
上级
a6d4cd47
0b2e5bbe
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
36 addition
and
56 deletion
+36
-56
common/env_sf.c
common/env_sf.c
+36
-56
未找到文件。
common/env_sf.c
浏览文件 @
2f926291
...
...
@@ -45,15 +45,11 @@ char *env_name_spec = "SPI Flash";
static
struct
spi_flash
*
env_flash
;
#if defined(CONFIG_ENV_OFFSET_REDUND)
int
saveenv
(
void
)
static
int
setup_flash_device
(
void
)
{
env_t
env_new
;
char
*
saved_buffer
=
NULL
,
flag
=
OBSOLETE_FLAG
;
u32
saved_size
,
saved_offset
,
sector
=
1
;
int
ret
;
#ifdef CONFIG_DM_SPI_FLASH
struct
udevice
*
new
;
int
ret
;
/* speed and mode will be read from DT */
ret
=
spi_flash_probe_bus_cs
(
CONFIG_ENV_SPI_BUS
,
CONFIG_ENV_SPI_CS
,
...
...
@@ -76,6 +72,20 @@ int saveenv(void)
}
}
#endif
return
0
;
}
#if defined(CONFIG_ENV_OFFSET_REDUND)
int
saveenv
(
void
)
{
env_t
env_new
;
char
*
saved_buffer
=
NULL
,
flag
=
OBSOLETE_FLAG
;
u32
saved_size
,
saved_offset
,
sector
;
int
ret
;
ret
=
setup_flash_device
();
if
(
ret
)
return
ret
;
ret
=
env_export
(
&
env_new
);
if
(
ret
)
...
...
@@ -105,11 +115,7 @@ int saveenv(void)
goto
done
;
}
if
(
CONFIG_ENV_SIZE
>
CONFIG_ENV_SECT_SIZE
)
{
sector
=
CONFIG_ENV_SIZE
/
CONFIG_ENV_SECT_SIZE
;
if
(
CONFIG_ENV_SIZE
%
CONFIG_ENV_SECT_SIZE
)
sector
++
;
}
sector
=
DIV_ROUND_UP
(
CONFIG_ENV_SIZE
,
CONFIG_ENV_SECT_SIZE
);
puts
(
"Erasing SPI flash..."
);
ret
=
spi_flash_erase
(
env_flash
,
env_new_offset
,
...
...
@@ -166,12 +172,9 @@ void env_relocate_spec(void)
goto
out
;
}
env_flash
=
spi_flash_probe
(
CONFIG_ENV_SPI_BUS
,
CONFIG_ENV_SPI_CS
,
CONFIG_ENV_SPI_MAX_HZ
,
CONFIG_ENV_SPI_MODE
);
if
(
!
env_flash
)
{
set_default_env
(
"!spi_flash_probe() failed"
);
ret
=
setup_flash_device
();
if
(
ret
)
goto
out
;
}
ret
=
spi_flash_read
(
env_flash
,
CONFIG_ENV_OFFSET
,
CONFIG_ENV_SIZE
,
tmp_env1
);
...
...
@@ -238,34 +241,14 @@ out:
#else
int
saveenv
(
void
)
{
u32
saved_size
,
saved_offset
,
sector
=
1
;
u32
saved_size
,
saved_offset
,
sector
;
char
*
saved_buffer
=
NULL
;
int
ret
=
1
;
env_t
env_new
;
#ifdef CONFIG_DM_SPI_FLASH
struct
udevice
*
new
;
/* speed and mode will be read from DT */
ret
=
spi_flash_probe_bus_cs
(
CONFIG_ENV_SPI_BUS
,
CONFIG_ENV_SPI_CS
,
0
,
0
,
&
new
);
if
(
ret
)
{
set_default_env
(
"!spi_flash_probe_bus_cs() failed"
);
return
1
;
}
env_flash
=
dev_get_uclass_priv
(
new
);
#else
if
(
!
env_flash
)
{
env_flash
=
spi_flash_probe
(
CONFIG_ENV_SPI_BUS
,
CONFIG_ENV_SPI_CS
,
CONFIG_ENV_SPI_MAX_HZ
,
CONFIG_ENV_SPI_MODE
);
if
(
!
env_flash
)
{
set_default_env
(
"!spi_flash_probe() failed"
);
return
1
;
}
}
#endif
ret
=
setup_flash_device
();
if
(
ret
)
return
ret
;
/* Is the sector larger than the env (i.e. embedded) */
if
(
CONFIG_ENV_SECT_SIZE
>
CONFIG_ENV_SIZE
)
{
...
...
@@ -281,16 +264,12 @@ int saveenv(void)
goto
done
;
}
if
(
CONFIG_ENV_SIZE
>
CONFIG_ENV_SECT_SIZE
)
{
sector
=
CONFIG_ENV_SIZE
/
CONFIG_ENV_SECT_SIZE
;
if
(
CONFIG_ENV_SIZE
%
CONFIG_ENV_SECT_SIZE
)
sector
++
;
}
ret
=
env_export
(
&
env_new
);
if
(
ret
)
goto
done
;
sector
=
DIV_ROUND_UP
(
CONFIG_ENV_SIZE
,
CONFIG_ENV_SECT_SIZE
);
puts
(
"Erasing SPI flash..."
);
ret
=
spi_flash_erase
(
env_flash
,
CONFIG_ENV_OFFSET
,
sector
*
CONFIG_ENV_SECT_SIZE
);
...
...
@@ -326,30 +305,31 @@ void env_relocate_spec(void)
char
*
buf
=
NULL
;
buf
=
(
char
*
)
memalign
(
ARCH_DMA_MINALIGN
,
CONFIG_ENV_SIZE
);
env_flash
=
spi_flash_probe
(
CONFIG_ENV_SPI_BUS
,
CONFIG_ENV_SPI_CS
,
CONFIG_ENV_SPI_MAX_HZ
,
CONFIG_ENV_SPI_MODE
);
if
(
!
env_flash
)
{
set_default_env
(
"!spi_flash_probe() failed"
);
if
(
buf
)
free
(
buf
);
if
(
!
buf
)
{
set_default_env
(
"!malloc() failed"
);
return
;
}
ret
=
setup_flash_device
();
if
(
ret
)
goto
out
;
ret
=
spi_flash_read
(
env_flash
,
CONFIG_ENV_OFFSET
,
CONFIG_ENV_SIZE
,
buf
);
if
(
ret
)
{
set_default_env
(
"!spi_flash_read() failed"
);
goto
out
;
goto
err_read
;
}
ret
=
env_import
(
buf
,
1
);
if
(
ret
)
gd
->
env_valid
=
1
;
out:
err_read:
spi_flash_free
(
env_flash
);
if
(
buf
)
free
(
buf
);
env_flash
=
NULL
;
out:
free
(
buf
);
}
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录