FreeCalypso > hg > freecalypso-tools
annotate loadtools/flprotreg.c @ 712:a167d7b376b7
fc-loadtool code: flprotreg.c factored out
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 05 Jun 2020 07:29:59 +0000 |
parents | |
children | cf7bd5e705ed |
rev | line source |
---|---|
712
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This module implements commands dealing with Intel flash protection |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * register, which holds the IMEI on Compal phones. |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 */ |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <sys/types.h> |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdio.h> |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdint.h> |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <string.h> |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include <strings.h> |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include <stdlib.h> |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #include "flash.h" |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 extern struct flash_bank_info flash_bank_info[2]; |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 flashcmd_protreg(argc, argv, bank) |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 char **argv; |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 { |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 struct flash_bank_info *bi; |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 uint16_t data[9]; |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 int rc; |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 if (argc > 2) { |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 fprintf(stderr, "error: too many arguments\n"); |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 return(-1); |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 } |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 if (flash_detect(bank, 0) < 0) |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 return(-1); |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 bi = flash_bank_info + bank; |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 rc = bi->ops->read_prot_reg(bi, data); |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 if (rc) |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 return(rc); |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 printf("Lock word: %04X\n", data[0]); |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 printf("Factory words: %04X %04X %04X %04X\n", data[1], data[2], |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 data[3], data[4]); |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 printf("User words: %04X %04X %04X %04X\n", data[5], data[6], data[7], |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 data[8]); |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 return(0); |
a167d7b376b7
fc-loadtool code: flprotreg.c factored out
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 } |