Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
02b117d4
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,发现更多精彩内容 >>
提交
02b117d4
编写于
10月 11, 2010
作者:
W
Wolfgang Denk
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'sf' of
git://git.denx.de/u-boot-blackfin
上级
59336459
21032b35
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
46 addition
and
19 deletion
+46
-19
common/cmd_spi.c
common/cmd_spi.c
+25
-15
drivers/mtd/spi/spansion.c
drivers/mtd/spi/spansion.c
+12
-4
drivers/mtd/spi/winbond.c
drivers/mtd/spi/winbond.c
+9
-0
未找到文件。
common/cmd_spi.c
浏览文件 @
02b117d4
...
...
@@ -47,7 +47,9 @@
/*
* Values from last command.
*/
static
unsigned
int
device
;
static
unsigned
int
bus
;
static
unsigned
int
cs
;
static
unsigned
int
mode
;
static
int
bitlen
;
static
uchar
dout
[
MAX_SPI_BYTES
];
static
uchar
din
[
MAX_SPI_BYTES
];
...
...
@@ -78,8 +80,18 @@ int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if
((
flag
&
CMD_FLAG_REPEAT
)
==
0
)
{
if
(
argc
>=
2
)
device
=
simple_strtoul
(
argv
[
1
],
NULL
,
10
);
if
(
argc
>=
2
)
{
mode
=
CONFIG_DEFAULT_SPI_MODE
;
bus
=
simple_strtoul
(
argv
[
1
],
&
cp
,
10
);
if
(
*
cp
==
':'
)
{
cs
=
simple_strtoul
(
cp
+
1
,
&
cp
,
10
);
}
else
{
cs
=
bus
;
bus
=
CONFIG_DEFAULT_SPI_BUS
;
}
if
(
*
cp
==
'.'
);
mode
=
simple_strtoul
(
cp
+
1
,
NULL
,
10
);
}
if
(
argc
>=
3
)
bitlen
=
simple_strtoul
(
argv
[
2
],
NULL
,
10
);
if
(
argc
>=
4
)
{
...
...
@@ -91,7 +103,7 @@ int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if
(
tmp
>
15
)
tmp
-=
(
'a'
-
'A'
);
if
(
tmp
>
15
)
{
printf
(
"Hex conversion error on %c
, giving up.
\n
"
,
*
cp
);
printf
(
"Hex conversion error on %c
\n
"
,
*
cp
);
return
1
;
}
if
((
j
%
2
)
==
0
)
...
...
@@ -103,24 +115,20 @@ int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
}
if
((
bitlen
<
0
)
||
(
bitlen
>
(
MAX_SPI_BYTES
*
8
)))
{
printf
(
"Invalid bitlen %d
, giving up.
\n
"
,
bitlen
);
printf
(
"Invalid bitlen %d
\n
"
,
bitlen
);
return
1
;
}
/* FIXME: Make these parameters run-time configurable */
slave
=
spi_setup_slave
(
CONFIG_DEFAULT_SPI_BUS
,
device
,
1000000
,
CONFIG_DEFAULT_SPI_MODE
);
slave
=
spi_setup_slave
(
bus
,
cs
,
1000000
,
mode
);
if
(
!
slave
)
{
printf
(
"Invalid device %d
, giving up.
\n
"
,
device
);
printf
(
"Invalid device %d
:%d
\n
"
,
bus
,
cs
);
return
1
;
}
debug
(
"spi chipsel = %08X
\n
"
,
device
);
spi_claim_bus
(
slave
);
if
(
spi_xfer
(
slave
,
bitlen
,
dout
,
din
,
SPI_XFER_BEGIN
|
SPI_XFER_END
)
!=
0
)
{
printf
(
"Error
with the SPI transaction.
\n
"
);
printf
(
"Error
during SPI transaction
\n
"
);
rcode
=
1
;
}
else
{
for
(
j
=
0
;
j
<
((
bitlen
+
7
)
/
8
);
j
++
)
{
...
...
@@ -138,9 +146,11 @@ int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
U_BOOT_CMD
(
sspi
,
5
,
1
,
do_spi
,
"SPI utility commands"
,
"<device> <bit_len> <dout> - Send <bit_len> bits from <dout> out the SPI
\n
"
"<device> - Identifies the chip select of the device
\n
"
"SPI utility command"
,
"[<bus>:]<cs>[.<mode>] <bit_len> <dout> - Send and receive bits
\n
"
"<bus> - Identifies the SPI bus
\n
"
"<cs> - Identifies the chip select
\n
"
"<mode> - Identifies the SPI mode to use
\n
"
"<bit_len> - Number of bits to send (base 10)
\n
"
"<dout> - Hexadecimal string that gets sent"
);
drivers/mtd/spi/spansion.c
浏览文件 @
02b117d4
...
...
@@ -52,6 +52,7 @@
#define SPSN_ID_S25FL128P 0x2018
#define SPSN_EXT_ID_S25FL128P_256KB 0x0300
#define SPSN_EXT_ID_S25FL128P_64KB 0x0301
#define SPSN_EXT_ID_S25FL032P 0x4d00
#define SPANSION_SR_WIP (1 << 0)
/* Write-in-Progress */
...
...
@@ -124,6 +125,14 @@ static const struct spansion_spi_flash_params spansion_spi_flash_table[] = {
.
nr_sectors
=
64
,
.
name
=
"S25FL128P_256K"
,
},
{
.
idcode1
=
SPSN_ID_S25FL032A
,
.
idcode2
=
SPSN_EXT_ID_S25FL032P
,
.
page_size
=
256
,
.
pages_per_sector
=
256
,
.
nr_sectors
=
64
,
.
name
=
"S25FL032P"
,
},
};
static
int
spansion_wait_ready
(
struct
spi_flash
*
flash
,
unsigned
long
timeout
)
...
...
@@ -262,7 +271,6 @@ int spansion_erase(struct spi_flash *flash, u32 offset, size_t len)
return
-
1
;
}
len
/=
sector_size
;
cmd
[
0
]
=
CMD_S25FLXX_SE
;
cmd
[
2
]
=
0x00
;
cmd
[
3
]
=
0x00
;
...
...
@@ -274,8 +282,8 @@ int spansion_erase(struct spi_flash *flash, u32 offset, size_t len)
}
ret
=
0
;
for
(
actual
=
0
;
actual
<
len
;
actual
++
)
{
cmd
[
1
]
=
(
offset
/
sector_size
)
+
actual
;
for
(
actual
=
0
;
actual
<
len
;
actual
+=
sector_size
)
{
cmd
[
1
]
=
(
offset
+
actual
)
>>
16
;
ret
=
spi_flash_cmd
(
flash
->
spi
,
CMD_S25FLXX_WREN
,
NULL
,
0
);
if
(
ret
<
0
)
{
...
...
@@ -298,7 +306,7 @@ int spansion_erase(struct spi_flash *flash, u32 offset, size_t len)
}
debug
(
"SF: SPANSION: Successfully erased %u bytes @ 0x%x
\n
"
,
len
*
sector_size
,
offset
);
len
,
offset
);
spi_release_bus
(
flash
->
spi
);
return
ret
;
...
...
drivers/mtd/spi/winbond.c
浏览文件 @
02b117d4
...
...
@@ -27,6 +27,7 @@
#define WINBOND_ID_W25X16 0x3015
#define WINBOND_ID_W25X32 0x3016
#define WINBOND_ID_W25X64 0x3017
#define WINBOND_ID_W25Q64 0x4017
#define WINBOND_SR_WIP (1 << 0)
/* Write-in-Progress */
...
...
@@ -77,6 +78,14 @@ static const struct winbond_spi_flash_params winbond_spi_flash_table[] = {
.
nr_blocks
=
128
,
.
name
=
"W25X64"
,
},
{
.
id
=
WINBOND_ID_W25Q64
,
.
l2_page_size
=
8
,
.
pages_per_sector
=
16
,
.
sectors_per_block
=
16
,
.
nr_blocks
=
128
,
.
name
=
"W25Q64"
,
},
};
static
int
winbond_wait_ready
(
struct
spi_flash
*
flash
,
unsigned
long
timeout
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录