Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SPARC U-Boot Custodian Tree
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
U-Boot
Custodians
SPARC U-Boot Custodian Tree
Commits
4510a7b7
Commit
4510a7b7
authored
Dec 16, 2004
by
stroese
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PMC405 board update
parent
12537cc5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
2547 additions
and
1355 deletions
+2547
-1355
board/esd/pmc405/Makefile
board/esd/pmc405/Makefile
+1
-1
board/esd/pmc405/fpgadata.c
board/esd/pmc405/fpgadata.c
+2450
-1326
board/esd/pmc405/pmc405.c
board/esd/pmc405/pmc405.c
+65
-0
board/esd/pmc405/strataflash.c
board/esd/pmc405/strataflash.c
+31
-28
No files found.
board/esd/pmc405/Makefile
View file @
4510a7b7
...
...
@@ -30,7 +30,7 @@ CPLD = ../common/xilinx_jtag/lenval.o \
../common/xilinx_jtag/micro.o
\
../common/xilinx_jtag/ports.o
OBJS
=
$(BOARD)
.o strataflash.o
$(CPLD)
OBJS
=
$(BOARD)
.o strataflash.o
../common/misc.o
$(CPLD)
$(LIB)
:
$(OBJS) $(SOBJS)
$(AR)
crv
$@
$(OBJS)
...
...
board/esd/pmc405/fpgadata.c
View file @
4510a7b7
This source diff could not be displayed because it is too large. You can
view the blob
instead.
board/esd/pmc405/pmc405.c
View file @
4510a7b7
...
...
@@ -27,6 +27,9 @@
#include <malloc.h>
extern
void
lxt971_no_sleep
(
void
);
/* fpga configuration data - not compressed, generated by bin2c */
const
unsigned
char
fpgadata
[]
=
{
...
...
@@ -62,6 +65,18 @@ int board_early_init_f (void)
*/
mtebc
(
epcr
,
0xa8400000
);
/*
* Setup GPIO pins (CS6+CS7 as GPIO)
*/
mtdcr
(
cntrl0
,
mfdcr
(
cntrl0
)
|
0x00300000
);
/*
* Configure GPIO pins
*/
out32
(
GPIO0_ODR
,
0x00000000
);
/* no open drain pins */
out32
(
GPIO0_TCR
,
CFG_FPGA_PRG
|
CFG_FPGA_CLK
|
CFG_FPGA_DATA
);
/* setup for output */
out32
(
GPIO0_OR
,
0
);
/* outputs -> low */
return
0
;
}
...
...
@@ -76,6 +91,12 @@ int misc_init_f (void)
int
misc_init_r
(
void
)
{
DECLARE_GLOBAL_DATA_PTR
;
/* adjust flash start and offset */
gd
->
bd
->
bi_flashstart
=
0
-
gd
->
bd
->
bi_flashsize
;
gd
->
bd
->
bi_flashoffset
=
0
;
return
(
0
);
}
...
...
@@ -99,6 +120,11 @@ int checkboard (void)
putc
(
'\n'
);
/*
* Disable sleep mode in LXT971
*/
lxt971_no_sleep
();
return
0
;
}
...
...
@@ -130,3 +156,42 @@ int testdram (void)
}
/* ------------------------------------------------------------------------- */
int
do_cantest
(
cmd_tbl_t
*
cmdtp
,
int
flag
,
int
argc
,
char
*
argv
[])
{
ulong
addr
;
volatile
uchar
*
ptr
;
volatile
uchar
val
;
int
i
;
addr
=
simple_strtol
(
argv
[
1
],
NULL
,
16
)
+
0x16
;
i
=
0
;
for
(;;)
{
ptr
=
(
uchar
*
)
addr
;
for
(
i
=
0
;
i
<
8
;
i
++
)
{
*
ptr
=
i
;
val
=
*
ptr
;
if
(
val
!=
i
)
{
printf
(
"ERROR: addr=%p write=0x%02X, read=0x%02X
\n
"
,
ptr
,
i
,
val
);
return
0
;
}
/* Abort if ctrl-c was pressed */
if
(
ctrlc
())
{
puts
(
"
\n
Abort
\n
"
);
return
0
;
}
ptr
++
;
}
}
return
0
;
}
U_BOOT_CMD
(
cantest
,
3
,
1
,
do_cantest
,
"cantest - Test CAN controller"
,
NULL
);
board/esd/pmc405/strataflash.c
View file @
4510a7b7
...
...
@@ -24,7 +24,7 @@
#include <common.h>
#include <asm/processor.h>
#undef DEBUG_FLASH
#undef DEBUG_FLASH
/*
* This file implements a Common Flash Interface (CFI) driver for ppcboot.
* The width of the port and the width of the chips are determined at initialization.
...
...
@@ -89,6 +89,8 @@
#define FLASH_MAN_CFI 0x01000000
typedef
union
{
unsigned
char
c
;
unsigned
short
w
;
...
...
@@ -111,6 +113,7 @@ flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
*/
static
void
flash_add_byte
(
flash_info_t
*
info
,
cfiword_t
*
cword
,
uchar
c
);
static
void
flash_make_cmd
(
flash_info_t
*
info
,
uchar
cmd
,
void
*
cmdbuf
);
static
void
flash_write_cmd
(
flash_info_t
*
info
,
int
sect
,
uchar
offset
,
uchar
cmd
);
...
...
@@ -246,7 +249,7 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
flash_write_cmd
(
info
,
sect
,
0
,
FLASH_CMD_CLEAR_STATUS
);
flash_write_cmd
(
info
,
sect
,
0
,
FLASH_CMD_BLOCK_ERASE
);
flash_write_cmd
(
info
,
sect
,
0
,
FLASH_CMD_ERASE_CONFIRM
);
if
(
flash_full_status_check
(
info
,
sect
,
info
->
erase_blk_tout
,
"erase"
))
{
rcode
=
1
;
}
else
...
...
@@ -274,7 +277,7 @@ void flash_print_info (flash_info_t *info)
info
->
size
>>
20
,
info
->
sector_count
);
printf
(
" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d
\n
"
,
info
->
erase_blk_tout
,
info
->
write_tout
,
info
->
buffer_write_tout
,
info
->
buffer_size
);
printf
(
" Sector Start Addresses:"
);
for
(
i
=
0
;
i
<
info
->
sector_count
;
++
i
)
{
#ifdef CFG_FLASH_EMPTY_INFO
...
...
@@ -283,28 +286,28 @@ void flash_print_info (flash_info_t *info)
int
erased
;
volatile
unsigned
long
*
flash
;
/*
* Check if whole sector is erased
*/
if
(
i
!=
(
info
->
sector_count
-
1
))
size
=
info
->
start
[
i
+
1
]
-
info
->
start
[
i
];
else
size
=
info
->
start
[
0
]
+
info
->
size
-
info
->
start
[
i
];
erased
=
1
;
flash
=
(
volatile
unsigned
long
*
)
info
->
start
[
i
];
size
=
size
>>
2
;
/* divide by 4 for longword access */
for
(
k
=
0
;
k
<
size
;
k
++
)
{
if
(
*
flash
++
!=
0xffffffff
)
{
erased
=
0
;
break
;
}
}
/*
* Check if whole sector is erased
*/
if
(
i
!=
(
info
->
sector_count
-
1
))
size
=
info
->
start
[
i
+
1
]
-
info
->
start
[
i
];
else
size
=
info
->
start
[
0
]
+
info
->
size
-
info
->
start
[
i
];
erased
=
1
;
flash
=
(
volatile
unsigned
long
*
)
info
->
start
[
i
];
size
=
size
>>
2
;
/* divide by 4 for longword access */
for
(
k
=
0
;
k
<
size
;
k
++
)
{
if
(
*
flash
++
!=
0xffffffff
)
{
erased
=
0
;
break
;
}
}
if
((
i
%
5
)
==
0
)
printf
(
"
\n
"
);
/* print empty and read-only info */
/* print empty and read-only info */
printf
(
" %08lX%s%s"
,
info
->
start
[
i
],
erased
?
" E"
:
" "
,
...
...
@@ -411,7 +414,7 @@ int flash_real_protect(flash_info_t *info, long sector, int prot)
else
flash_write_cmd
(
info
,
sector
,
0
,
FLASH_CMD_PROTECT_CLEAR
);
if
((
retcode
=
flash_full_status_check
(
info
,
sector
,
info
->
erase_blk_tout
,
if
((
retcode
=
flash_full_status_check
(
info
,
sector
,
info
->
erase_blk_tout
,
prot
?
"protect"
:
"unprotect"
))
==
0
)
{
info
->
protect
[
sector
]
=
prot
;
...
...
@@ -461,7 +464,7 @@ static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout
printf
(
"Command Sequence Error.
\n
"
);
}
else
if
(
flash_isset
(
info
,
sector
,
0
,
FLASH_STATUS_ECLBS
)){
printf
(
"Block Erase Error.
\n
"
);
retcode
=
ERR_NOT_ERASED
;
retcode
=
ERR_NOT_ERASED
;
}
else
if
(
flash_isset
(
info
,
sector
,
0
,
FLASH_STATUS_PSLBS
))
{
printf
(
"Locking Error
\n
"
);
}
...
...
@@ -730,7 +733,7 @@ static int find_sector(flash_info_t *info, ulong addr)
{
int
sector
;
for
(
sector
=
info
->
sector_count
-
1
;
sector
>=
0
;
sector
--
)
{
if
(
addr
>=
info
->
start
[
sector
])
if
(
addr
>=
info
->
start
[
sector
])
break
;
}
return
sector
;
...
...
@@ -738,7 +741,7 @@ static int find_sector(flash_info_t *info, ulong addr)
static
int
flash_write_cfibuffer
(
flash_info_t
*
info
,
ulong
dest
,
uchar
*
cp
,
int
len
)
{
int
sector
;
int
cnt
;
int
retcode
;
...
...
@@ -786,8 +789,8 @@ static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, in
flash_write_cmd
(
info
,
sector
,
0
,
FLASH_CMD_WRITE_BUFFER_CONFIRM
);
retcode
=
flash_full_status_check
(
info
,
sector
,
info
->
buffer_write_tout
,
"buffer write"
);
}
}
flash_write_cmd
(
info
,
sector
,
0
,
FLASH_CMD_CLEAR_STATUS
);
return
retcode
;
}
}
#endif
/* CFG_USE_FLASH_BUFFER_WRITE */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment