]>
Commit | Line | Data |
---|---|---|
5e5803e1 SB |
1 | /* |
2 | * (C) Copyright 2007 | |
3 | * Stefano Babic, DENX Software Engineering, sbabic@denx.de. | |
4 | * | |
5 | * See file CREDITS for list of people who contributed to this | |
6 | * project. | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or | |
9 | * modify it under the terms of the GNU General Public License as | |
10 | * published by the Free Software Foundation; either version 2 of | |
11 | * the License, or (at your option) any later version. | |
12 | * | |
13 | * This program is distributed in the hope that it will be useful, | |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | * GNU General Public License for more details. | |
17 | * | |
18 | * You should have received a copy of the GNU General Public License | |
19 | * along with this program; if not, write to the Free Software | |
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
21 | * MA 02111-1307 USA | |
22 | */ | |
23 | ||
24 | #include <common.h> | |
25 | #include <command.h> | |
e5a3bc24 | 26 | #include <dm9000.h> |
5e5803e1 | 27 | |
54841ab5 | 28 | static int do_read_dm9000_eeprom ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { |
e5a3bc24 RB |
29 | unsigned int i; |
30 | u8 data[2]; | |
5e5803e1 SB |
31 | |
32 | for (i=0; i < 0x40; i++) { | |
33 | if (!(i % 0x10)) | |
e5a3bc24 RB |
34 | printf("\n%08x:", i); |
35 | dm9000_read_srom_word(i, data); | |
36 | printf(" %02x%02x", data[1], data[0]); | |
5e5803e1 SB |
37 | } |
38 | printf ("\n"); | |
39 | return (0); | |
40 | } | |
41 | ||
54841ab5 | 42 | static int do_write_dm9000_eeprom ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { |
5e5803e1 SB |
43 | int offset,value; |
44 | ||
47e26b1b WD |
45 | if (argc < 4) |
46 | return cmd_usage(cmdtp); | |
5e5803e1 SB |
47 | |
48 | offset=simple_strtoul(argv[2],NULL,16); | |
49 | value=simple_strtoul(argv[3],NULL,16); | |
50 | if (offset > 0x40) { | |
51 | printf("Wrong offset : 0x%x\n",offset); | |
47e26b1b | 52 | return cmd_usage(cmdtp); |
5e5803e1 | 53 | } |
e5a3bc24 | 54 | dm9000_write_srom_word(offset, value); |
5e5803e1 SB |
55 | return (0); |
56 | } | |
57 | ||
54841ab5 | 58 | int do_dm9000_eeprom ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { |
47e26b1b WD |
59 | if (argc < 2) |
60 | return cmd_usage(cmdtp); | |
5e5803e1 | 61 | |
47e26b1b | 62 | if (strcmp (argv[1],"read") == 0) |
5e5803e1 | 63 | return (do_read_dm9000_eeprom(cmdtp,flag,argc,argv)); |
47e26b1b | 64 | else if (strcmp (argv[1],"write") == 0) |
5e5803e1 | 65 | return (do_write_dm9000_eeprom(cmdtp,flag,argc,argv)); |
47e26b1b WD |
66 | else |
67 | return cmd_usage(cmdtp); | |
5e5803e1 SB |
68 | } |
69 | ||
70 | U_BOOT_CMD( | |
71 | dm9000ee,4,1,do_dm9000_eeprom, | |
2fb2604d | 72 | "Read/Write eeprom connected to Ethernet Controller", |
5e5803e1 SB |
73 | "\ndm9000ee write <word offset> <value> \n" |
74 | "\tdm9000ee read \n" | |
75 | "\tword:\t\t00-02 : MAC Address\n" | |
76 | "\t\t\t03-07 : DM9000 Configuration\n" | |
a89c33db WD |
77 | "\t\t\t08-63 : User data" |
78 | ); |