Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Evan Lojewski
ast2050-flashrom
Commits
ceec420c
Commit
ceec420c
authored
21 years ago
by
Ronald G. Minnich
Browse files
Options
Download
Email Patches
Plain Diff
SONE's changes
Corresponding to coreboot v1 svn r863.
parent
afe44a97
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
23 deletions
+34
-23
flash_rom.c
flash_rom.c
+26
-19
mx29f002.c
mx29f002.c
+4
-2
w49f002u.c
w49f002u.c
+4
-2
No files found.
flash_rom.c
View file @
ceec420c
...
...
@@ -33,6 +33,7 @@
#include <unistd.h>
#include <stdio.h>
#include <pci/pci.h>
#include <string.h>
#include "flash.h"
#include "jedec.h"
...
...
@@ -69,6 +70,8 @@ struct flashchip flashchips[] = {
{
NULL
,}
};
char
*
chip_to_probe
=
NULL
;
int
enable_flash_sis630
(
struct
pci_dev
*
dev
,
char
*
name
)
{
char
b
;
...
...
@@ -127,7 +130,6 @@ int
enable_flash_e7500
(
struct
pci_dev
*
dev
,
char
*
name
)
{
/* register 4e.b gets or'ed with one */
unsigned
char
old
,
new
;
int
ok
;
/* if it fails, it fails. There are so many variations of broken mobos
* that it is hard to argue that we should quit at this point.
*/
...
...
@@ -139,11 +141,11 @@ enable_flash_e7500(struct pci_dev *dev, char *name) {
if
(
new
==
old
)
return
0
;
ok
=
pci_write_byte
(
dev
,
0x4e
,
new
);
pci_write_byte
(
dev
,
0x4e
,
new
);
if
(
ok
!=
new
)
{
if
(
pci_read_byte
(
dev
,
0x4e
)
!=
new
)
{
printf
(
"tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)
\n
"
,
old
,
new
,
name
);
0x4e
,
new
,
name
);
return
-
1
;
}
return
0
;
...
...
@@ -189,21 +191,15 @@ enable_flash_vt8235(struct pci_dev *dev, char *name) {
int
enable_flash_vt8231
(
struct
pci_dev
*
dev
,
char
*
name
)
{
unsigned
char
old
,
new
;
int
ok
;
unsigned
char
val
;
old
=
pci_read_byte
(
dev
,
0x40
);
new
=
old
|
0x10
;
val
=
pci_read_byte
(
dev
,
0x40
);
val
|=
0x10
;
pci_write_byte
(
dev
,
0x40
,
val
)
;
if
(
new
==
old
)
return
0
;
ok
=
pci_write_byte
(
dev
,
0x40
,
new
);
if
(
ok
!=
0
)
{
if
(
pci_read_byte
(
dev
,
0x40
)
!=
val
)
{
printf
(
"tried to set 0x%x to 0x%x on %s failed (WARNING ONLY)
\n
"
,
old
,
new
,
name
);
0x40
,
val
,
name
);
return
-
1
;
}
return
0
;
...
...
@@ -278,6 +274,10 @@ struct flashchip * probe_flash(struct flashchip * flash)
}
while
(
flash
->
name
!=
NULL
)
{
if
(
chip_to_probe
&&
strcmp
(
flash
->
name
,
chip_to_probe
)
!=
0
)
{
flash
++
;
continue
;
}
printf
(
"Trying %s, %d KB
\n
"
,
flash
->
name
,
flash
->
total_size
);
size
=
flash
->
total_size
*
1024
;
bios
=
mmap
(
0
,
size
,
PROT_WRITE
|
PROT_READ
,
MAP_SHARED
,
...
...
@@ -425,10 +425,11 @@ enable_flash_write() {
void
usage
(
const
char
*
name
)
{
printf
(
"usage: %s [-rwv] [file]
\n
"
,
name
);
printf
(
"usage: %s [-rwv]
[-c chipname]
[file]
\n
"
,
name
);
printf
(
"-r: read flash and save into file
\n
"
"-w: write file into flash (default when file is specified)
\n
"
"-v: verify flash against file
\n
"
"-c: probe only for specified flash chip
\n
"
" If no file is specified, then all that happens
\n
"
" is that flash info is dumped
\n
"
);
exit
(
1
);
...
...
@@ -444,7 +445,10 @@ main (int argc, char * argv[])
int
opt
;
int
read_it
=
0
,
write_it
=
0
,
verify_it
=
0
;
char
*
filename
=
NULL
;
while
((
opt
=
getopt
(
argc
,
argv
,
"rwv"
))
!=
EOF
)
{
setbuf
(
stdout
,
NULL
);
while
((
opt
=
getopt
(
argc
,
argv
,
"rwvc:"
))
!=
EOF
)
{
switch
(
opt
)
{
case
'r'
:
read_it
=
1
;
...
...
@@ -455,6 +459,9 @@ main (int argc, char * argv[])
case
'v'
:
verify_it
=
1
;
break
;
case
'c'
:
chip_to_probe
=
strdup
(
optarg
);
break
;
default:
usage
(
argv
[
0
]);
break
;
...
...
@@ -509,7 +516,7 @@ main (int argc, char * argv[])
fclose
(
image
);
}
if
(
write_it
)
if
(
write_it
||
(
!
read_it
&&
!
verify_it
)
)
flash
->
write
(
flash
,
buf
);
if
(
verify_it
)
verify_flash
(
flash
,
buf
,
/* verbose = */
0
);
...
...
This diff is collapsed.
Click to expand it.
mx29f002.c
View file @
ceec420c
...
...
@@ -97,7 +97,8 @@ int write_29f002 (struct flashchip * flash, char * buf)
printf
(
"Programming Page: "
);
for
(
i
=
0
;
i
<
total_size
;
i
++
)
{
/* write to the sector */
printf
(
"address: 0x%08lx"
,
i
);
if
((
i
&
0xfff
)
==
0
)
printf
(
"address: 0x%08lx"
,
i
);
*
(
bios
+
0x5555
)
=
0xAA
;
*
(
bios
+
0x2AAA
)
=
0x55
;
*
(
bios
+
0x5555
)
=
0xA0
;
...
...
@@ -106,7 +107,8 @@ int write_29f002 (struct flashchip * flash, char * buf)
/* wait for Toggle bit ready */
toggle_ready_jedec
(
dst
);
printf
(
"
\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b
"
);
if
((
i
&
0xfff
)
==
0
)
printf
(
"
\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b
"
);
}
#endif
printf
(
"
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
w49f002u.c
View file @
ceec420c
...
...
@@ -97,7 +97,8 @@ int write_49f002 (struct flashchip * flash, char * buf)
printf
(
"Programming Page: "
);
for
(
i
=
0
;
i
<
total_size
;
i
++
)
{
/* write to the sector */
printf
(
"address: 0x%08lx"
,
i
);
if
((
i
&
0xfff
)
==
0
)
printf
(
"address: 0x%08lx"
,
i
);
*
(
bios
+
0x5555
)
=
0xAA
;
*
(
bios
+
0x2AAA
)
=
0x55
;
*
(
bios
+
0x5555
)
=
0xA0
;
...
...
@@ -106,7 +107,8 @@ int write_49f002 (struct flashchip * flash, char * buf)
/* wait for Toggle bit ready */
toggle_ready_jedec
(
dst
);
printf
(
"
\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b
"
);
if
((
i
&
0xfff
)
==
0
)
printf
(
"
\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b
"
);
}
#endif
printf
(
"
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
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