Re: Re: [Etherboot-developers] 3C905CX-TXM flashing with cromutil hangs
Hans-Peter Jansen <[email protected]>
| Newsgroups | gmane.linux.drivers.vortex.devel |
|---|---|
| Message-ID | <[email protected]> |
Dear Donald, pretty late follow up, sorry. On the bright side, my netbooted ramdisk rescue environment has pretty nice evolved 'til the last time... On Friday 18 April 2003 18:18, Donald Becker wrote: > On Fri, 18 Apr 2003, Hans-Peter Jansen wrote: > > > > > vortex-diag.c:v2.09 9/18/2002 Donald Becker ([email protected]) > > > http://www.scyld.com/diag/index.html > > > Index #1: Found a 3c905C Tornado 100baseTx adapter at 0xd800. > > > Hmmm, no response to the ID command, trying again.. > > > ACKKK, this may not be a programmable Flash part! > > > Unknown BIOS ROM ID 55 AA. > > This is a different style of flash part with variable sector sizes > and a new command structure. > > I have updated libflash with code that may work with the new parts. > Who has a board with a AM29F002BT or AM29F002BB that could try it > out? Done. I have two different NICS, some labeled 3C905CX-TXM with a AM29F002BT and some 3C905C-TX-M with a Atmel AT49BV512. While the latter could be easily flashed with cromutil (will check vortex-diag soon), the former resisted insistently on any attempts :-(. This is with your libflash v2.06 with AM29F002BT (-vB): vortex-diag.c:v2.14 12/28/2002 Donald Becker ([email protected]) http://www.scyld.com/diag/index.html Index #1: Found a 3c905C Tornado 100baseTx adapter at 0xd000. Station address 00:0a:0d:d4:77:d7. Receive mode is 0x07: Normal unicast and all multicast. Indication enable is 06c6, interrupt enable is 0000. No interrupt sources are pending. Transceiver/media interfaces available: 100baseTx 10baseT. Transceiver type in use: Autonegotiate. MAC settings: full-duplex. Station address set to 00:0a:0d:d4:77:d7. Configuration options 0012. Saved EEPROM settings of a 3Com Vortex/Boomerang: 3Com Node Address 00:0A:0D:D4:77:D7 (used as a unique ID only). OEM Station address 00:0A:0D:D4:77:D7 (used as the ethernet address). Device ID 9200, Manufacturer ID 6d50. Manufacture date (MM/DD/YYYY) 11/12/2001, division H, product SZ. No BIOS ROM is present. <- vortex-diag doesn't recognize the flash -> Transceiver selection: Autonegotiate. Options: negotiated duplex, link beat required. PCI Subsystem IDs: Vendor 10b7 Device 1000. 100baseTx 10baseT. Vortex format checksum is incorrect (06 vs. 10b7). Cyclone format checksum is incorrect (0x9c vs. 0x9d). Hurricane format checksum is incorrect (0xb5 vs. 0x9d). MII PHY found at address 24, status 782d. MII PHY 0 at #24 transceiver registers: 3000 782d 0040 6177 05e1 45e1 0003 0000 0000 0000 0000 0000 0000 0000 0000 0000 1000 0301 0000 0000 0000 029d 0100 0000 003f fd3e 0f00 ff40 002f 0000 80a0 000b. Hmmm, no response to the ID command, trying again with '80/60'.. That did not work either, trying with '90/01'... <!-- 90/01 is expected to work with this device, but it doesn't --!> ACKKK, this may not be a programmable Flash part! BIOS ROM ID 55 AA, looking up vendor... Unknown BIOS ROM ID 55 AA. 0x000: 55 aa 08 e9 bf 07 55 4c 44 52 00 00 05 03 00 00 U.....ULDR...... 0x010: 00 00 e0 06 50 05 70 00 58 00 38 00 6d 00 30 04 ....P.p.X.8.m.0. 0x020: 00 00 00 10 e8 27 10 df c0 05 00 01 00 00 00 00 ................ 0x030: 00 00 00 00 00 00 00 00 24 50 6e 50 01 02 00 00 .........PnP.... 0x040: 00 de 00 00 00 00 c3 00 c8 00 02 00 00 14 00 00 ................ 0x050: 00 00 49 03 00 00 00 00 50 43 49 52 b7 10 00 92 ..I.....PCIR.... 0x060: 00 00 18 00 00 02 00 00 73 00 00 00 00 80 00 00 ........s....... 0x070: 55 4e 44 49 16 af 00 00 01 02 9a 03 00 08 38 38 UNDI..........88 0x080: a0 25 50 43 49 52 4d 42 41 20 32 02 00 00 00 00 ..PCIRMBA.2..... 0x090: 00 00 00 33 43 6f 6d 20 31 30 2f 31 30 30 20 45 ...3Com.10.100.E 0x0a0: 74 68 65 72 6e 65 74 20 4e 49 43 00 00 00 00 00 thernet.NIC..... Consequently, -S ends up with an 8k image out of 256k. (expected) As far, as I understand the code, the problem is the identification of the device, which doesn't seem to respond on any of the three attempts made. <grr> According to http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/21527d.pdf p. 16, the command sequence seems to differ from other such devices, therefor I experimented with a specialized do_cmd(): static void do_am_cmd(long addr_ioaddr, long data_ioaddr, int cmd) { flash_out(addr_ioaddr, data_ioaddr, 0x555, 0xAA); flash_out(addr_ioaddr, data_ioaddr, 0x2AA, 0x55); flash_out(addr_ioaddr, data_ioaddr, 0x555, cmd); /* Alternate command is simply flash_out(addr_ioaddr, data_ioaddr, 0, cmd); */ } in both, the first do_cmd() and the one in the 90/01 method in get_part_id() without success. Does 3com fiddle with any hardware protection here? But I doubt, that this would protect the id reading. Am I on a lost track? What can I try next? BTW, attached is a gcc3.3 compile fix for vortex-diag.c. Best regards, Pete
vortex-diag-gcc3.3.diff
(text/x-diff, 3.3 KB)
--- vortex-diag.c.orig 2003-07-04 15:37:53.000000000 +0200 +++ vortex-diag.c 2003-07-04 15:37:56.000000000 +0200 @@ -39,44 +39,44 @@ static char *usage_msg = "Usage: vortex-diag [-aDEefFgGhmPqrRtvVwW] [-p <IOport>] [-[AF] <media>]\n" " For details and other options see http://www.scyld.com/diag/index.html\n"; static const char long_usage_msg[] = -"Usage: %s [-aDfrRvVw] [-AF <speed+duplex>] [-#<BoardNum>] - - Show the internal state of a network adapter. - - The common usage is - vortex-diag -aem - - Frequently used options are - -a --show_all_registers Print all registers. - -e --show-eeprom Dump EEPROM contents, \"-ee\" shows the details. - -m --show_mii Print the MII transceiver state - Using -mm monitors the link. - -f --force Perform operation, even on a running NIC. - - To operate on a single NIC, or one that hasn't been automatically found: - -# --card_num INDEX Operate on the specified card index. - -p --port-base IOADDR Assume an adapter at the specified I/O address. - -t --chip-type TYPE Specify adapter type with '-p', use '-1' to list. - - To change the persistent EEPROM settings - -G --parameters PARMS Set adapter-specific parameters. - -H --new-hwaddr 01:23:45:67:ab:cd - Set a new hardware station address. Read the documentation first! - -w --write-EEPROM Actually write the new settings into the EEPROM. - To read and write the boot BIOS extension Flash ROM - -B Show the first few bytes of the ROM - -L FILE Load the Flash from FILE. - -S FILE Store the Flash image to FILE. - - -D --debug - -v --verbose Report each action taken. - -V --version Emit version information. - - -A --advertise <speed|setting> (See the mii-diag manual page.) +"Usage: %s [-aDfrRvVw] [-AF <speed+duplex>] [-#<BoardNum>]\n\ +\n\ + Show the internal state of a network adapter.\n\ +\n\ + The common usage is\n\ + vortex-diag -aem\n\ +\n\ + Frequently used options are\n\ + -a --show_all_registers Print all registers.\n\ + -e --show-eeprom Dump EEPROM contents, \"-ee\" shows the details.\n\ + -m --show_mii Print the MII transceiver state\n\ + Using -mm monitors the link.\n\ + -f --force Perform operation, even on a running NIC.\n\ +\n\ + To operate on a single NIC, or one that hasn't been automatically found:\n\ + -# --card_num INDEX Operate on the specified card index.\n\ + -p --port-base IOADDR Assume an adapter at the specified I/O address.\n\ + -t --chip-type TYPE Specify adapter type with '-p', use '-1' to list.\n\ +\n\ + To change the persistent EEPROM settings\n\ + -G --parameters PARMS Set adapter-specific parameters.\n\ + -H --new-hwaddr 01:23:45:67:ab:cd\n\ + Set a new hardware station address. Read the documentation first!\n\ + -w --write-EEPROM Actually write the new settings into the EEPROM.\n\ + To read and write the boot BIOS extension Flash ROM\n\ + -B Show the first few bytes of the ROM\n\ + -L FILE Load the Flash from FILE.\n\ + -S FILE Store the Flash image to FILE.\n\ +\n\ + -D --debug\n\ + -v --verbose Report each action taken.\n\ + -V --version Emit version information.\n\ +\n\ + -A --advertise <speed|setting> (See the mii-diag manual page.)\n\ "; #if ! defined(__OPTIMIZE__) #warning You must compile this program with the correct options! #warning See the last lines of the source file.