Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
bc23d96b
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,发现更多精彩内容 >>
提交
bc23d96b
编写于
9月 16, 2013
作者:
T
Tom Rini
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.denx.de/u-boot-spi
上级
6856254f
b95f958d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
15 addition
and
10 deletion
+15
-10
common/cmd_sf.c
common/cmd_sf.c
+12
-1
drivers/spi/mxs_spi.c
drivers/spi/mxs_spi.c
+3
-9
未找到文件。
common/cmd_sf.c
浏览文件 @
bc23d96b
...
...
@@ -152,8 +152,10 @@ static const char *spi_flash_update_block(struct spi_flash *flash, u32 offset,
{
debug
(
"offset=%#x, sector_size=%#x, len=%#zx
\n
"
,
offset
,
flash
->
sector_size
,
len
);
if
(
spi_flash_read
(
flash
,
offset
,
len
,
cmp_buf
))
/* Read the entire sector so to allow for rewriting */
if
(
spi_flash_read
(
flash
,
offset
,
flash
->
sector_size
,
cmp_buf
))
return
"read"
;
/* Compare only what is meaningful (len) */
if
(
memcmp
(
cmp_buf
,
buf
,
len
)
==
0
)
{
debug
(
"Skip region %x size %zx: no change
\n
"
,
offset
,
len
);
...
...
@@ -163,8 +165,17 @@ static const char *spi_flash_update_block(struct spi_flash *flash, u32 offset,
/* Erase the entire sector */
if
(
spi_flash_erase
(
flash
,
offset
,
flash
->
sector_size
))
return
"erase"
;
/* Write the initial part of the block from the source */
if
(
spi_flash_write
(
flash
,
offset
,
len
,
buf
))
return
"write"
;
/* If it's a partial sector, rewrite the existing part */
if
(
len
!=
flash
->
sector_size
)
{
/* Rewrite the original data to the end of the sector */
if
(
spi_flash_write
(
flash
,
offset
+
len
,
flash
->
sector_size
-
len
,
&
cmp_buf
[
len
]))
return
"write"
;
}
return
NULL
;
}
...
...
drivers/spi/mxs_spi.c
浏览文件 @
bc23d96b
...
...
@@ -56,8 +56,6 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
unsigned
int
max_hz
,
unsigned
int
mode
)
{
struct
mxs_spi_slave
*
mxs_slave
;
struct
mxs_ssp_regs
*
ssp_regs
;
int
reg
;
if
(
!
spi_cs_is_valid
(
bus
,
cs
))
{
printf
(
"mxs_spi: invalid bus %d / chip select %d
\n
"
,
bus
,
cs
);
...
...
@@ -74,13 +72,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
mxs_slave
->
max_khz
=
max_hz
/
1000
;
mxs_slave
->
mode
=
mode
;
mxs_slave
->
regs
=
mxs_ssp_regs_by_bus
(
bus
);
ssp_regs
=
mxs_slave
->
regs
;
reg
=
readl
(
&
ssp_regs
->
hw_ssp_ctrl0
);
reg
&=
~
(
MXS_SSP_CHIPSELECT_MASK
);
reg
|=
cs
<<
MXS_SSP_CHIPSELECT_SHIFT
;
writel
(
reg
,
&
ssp_regs
->
hw_ssp_ctrl0
);
return
&
mxs_slave
->
slave
;
err_init:
...
...
@@ -102,7 +94,9 @@ int spi_claim_bus(struct spi_slave *slave)
mxs_reset_block
(
&
ssp_regs
->
hw_ssp_ctrl0_reg
);
writel
(
SSP_CTRL0_BUS_WIDTH_ONE_BIT
,
&
ssp_regs
->
hw_ssp_ctrl0
);
writel
((
slave
->
cs
<<
MXS_SSP_CHIPSELECT_SHIFT
)
|
SSP_CTRL0_BUS_WIDTH_ONE_BIT
,
&
ssp_regs
->
hw_ssp_ctrl0
);
reg
=
SSP_CTRL1_SSP_MODE_SPI
|
SSP_CTRL1_WORD_LENGTH_EIGHT_BITS
;
reg
|=
(
mxs_slave
->
mode
&
SPI_CPOL
)
?
SSP_CTRL1_POLARITY
:
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录