OpenWrt Forum Archive

Topic: Intel IXDPG425 Reference Board and NPE firmware

The content of this topic has been archived on 11 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

I'm OpenWRT newbie and trying to run
OpenWrt on Intel IXDGP425 reference board.

I made following steps:

  download kamikake 7.09
  make menuconfig

I select "Intel XScale IXP4xx [2.6]" as Target System, save and quit

  make

After successfully compilation, I copied openwrt-ixp4xx-2.6-squashfs.img 
and openwrt-ixp4xx-2.6-zImage to /tftpboot directory

In redboot version 2.04 console:

  fis init
  load -r -v -b %{FREEMEMLO} openwrt-ixp4xx-2.6-zImage
  fis create kernel
  load -r -v -b %{FREEMEMLO} openwrt-ixp4xx-2.6-squashfs.img
  fis create rootfs

This is the output of console:

RedBoot> fis load kernel
RedBoot> exec
Using base address 0x00026c00 and length 0x000e8da0
Uncompressing Linux................................................................ done, booting the kernel.
Linux version 2.6.21.6 (antonello@AntoPC001) (gcc version 4.1.2) #1 Tue Apr 1 13:01:23 CEST 2008
CPU: XScale-IXP42x Family [690541c1] revision 1 (ARMv5TE), cr=000039ff
Machine: Intel IXDPG425
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Built 1 zonelists.  Total pages: 8128
Kernel command line: root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200 init=/etc/preinit
PID hash table entries: 128 (order: 7, 512 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 30424KB available (1800K code, 149K data, 72K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
IXP4xx: Using 16MiB expansion bus window size
PCI: IXP4xx is host
PCI: IXP4xx Using direct access for memory space
PCI: bus0: Fast back to back transfers disabled
dmabounce: registered device 0000:00:0e.0 on pci bus
dmabounce: registered device 0000:00:0e.1 on pci bus
dmabounce: registered device 0000:00:0e.2 on pci bus
NET: Registered protocol family 2
Time: OSTS clocksource has been installed.
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
NetWinder Floating Point Emulator V0.97 (double precision)
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered (default)
IXP4xx Watchdog Timer: heartbeat 60 sec
Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xc8000000 (irq = 15) is a XScale
IXP4XX Q Manager 0.2.1 initialized.
IXP4XX NPE driver Version 0.3.0 initialized
ixp4xx_crypto 0.0.1 registered successfully
IXP4XX-Flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
 Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
cfi_cmdset_0001: Erase suspend on write enabled
Searching for RedBoot partition table in IXP4XX-Flash.0 at offset 0xfe0000
6 RedBoot partitions found on MTD device IXP4XX-Flash.0
Creating 6 MTD partitions on "IXP4XX-Flash.0":
0x00000000-0x00080000 : "RedBoot"
0x00080000-0x00180000 : "kernel"
0x00180000-0x002a0000 : "rootfs"
0x00280000-0x002a0000 : "rootfs_data"
0x002a0000-0x00fe0000 : "unallocated"
0x00fe0000-0x00fff000 : "FIS directory"
0x00fff000-0x01000000 : "RedBoot config"
i2c /dev entries driver
nf_conntrack version 0.5.0 (256 buckets, 2048 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP westwood registered
NET: Registered protocol family 1
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
XScale DSP coprocessor detected.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
VFS: Mounted root (squashfs filesystem) readonly.
Freeing init memory: 72K
Warning: unable to open an initial console.
- preinit -
jffs2 not ready yet; using ramdisk
mini_fo: using base directory: /
mini_fo: using storage directory: /tmp/root
- init -
init started:  BusyBox v1.4.2 (2008-04-01 12:49:43 CEST) multi-call binary

Please press Enter to activate this console. PPP generic driver version 2.4.2
wlan: 0.8.4.2 (svn r2568)
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.30.13 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5413, RF2133, REGOPS_FUNC)
ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (svn r2568)
ath_rate_minstrel: look around rate set to 10%
ath_rate_minstrel: EWMA rolloff level set to 75%
ath_rate_minstrel: max segment size in the mrr set to 6000 us
wlan: mac acl policy registered
ath_pci: 0.9.4.5 (svn r2568)
jffs2: Too few erase blocks (1)



BusyBox v1.4.2 (2008-04-01 12:49:43 CEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 KAMIKAZE (7.09) -----------------------------------
  * 10 oz Vodka       Shake well with ice and strain
  * 10 oz Triple sec  mixture into 10 shot glasses.
  * 10 oz lime juice  Salute!
 ---------------------------------------------------
root@OpenWrt:/#

The problem is that the ethernet interfaces not woks.
In the console massage I can't see any message like:
"npe: seraching for firmware"

Any suggestion?

Use svn trunk wink

I tried with trunk without success:
  svn co https://svn.openwrt.org/openwrt/trunk/
To enable IXDPG425 platform support:

cd build_dir/linux-ixp4xx_generic/linux-2.6.24.2/
make ARCH=arm

added support for IXDPG425, quit and save

cd -
make

If I well understand, the NPE firmware image is stored in mtd partition.
Is correct? If yes how can I check it ?

The console output:

Trying NPE-B...success. Using NPE-B with PHY 5.
Ethernet eth0: MAC address 00:03:47:df:32:a8
IP: 192.168.1.89/255.255.255.0, Gateway: 192.168.1.1
Default server: 192.168.1.36

RedBoot(tm) bootstrap and debug environment [ROM]
Red Hat certified release, version 2.04 - built 15:36:33, Mar 21 2007

Platform: Intel IXDPG425 Network Gateway Reference (IXP42X 533MHz) BE
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2007 Free Software Foundation, Inc.

RAM: 0x00000000-0x02000000, [0x00026910-0x01fc1000] available
FLASH: 0x50000000 - 0x51000000, 128 blocks of 0x00020000 bytes each.
== Executing boot script in 2.000 seconds - enter ^C to abort
RedBoot> fis load kernel
RedBoot> exec
Using base address 0x00026c00 and length 0x000f1c28
Uncompressing Linux.................................................................... done, booting the kernel.
Linux version 2.6.24.2 (antonello@AntoPC001) (gcc version 4.1.2) #2 Tue Apr 1 15:01:07 CEST 2008
CPU: XScale-IXP42x Family [690541c1] revision 1 (ARMv5TE), cr=000039ff
Machine: Intel IXDPG425
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
Kernel command line: root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200 init=/etc/preinit
PID hash table entries: 128 (order: 7, 512 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 30320KB available (1844K code, 180K data, 96K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
IXP4xx: Using 16MiB expansion bus window size
PCI: IXP4xx is host
PCI: IXP4xx Using direct access for memory space
PCI: bus0: Fast back to back transfers disabled
dmabounce: registered device 0000:00:0e.0 on pci bus
dmabounce: registered device 0000:00:0e.1 on pci bus
dmabounce: registered device 0000:00:0e.2 on pci bus
NET: Registered protocol family 2
Time: OSTS clocksource has been installed.
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
IXP4xx Queue Manager initialized.
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xc8000000 (irq = 15) is a XScale
console [ttyS0] enabled
IXP4XX-Flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
 Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
cfi_cmdset_0001: Erase suspend on write enabled
Searching for RedBoot partition table in IXP4XX-Flash.0 at offset 0xfe0000
5 RedBoot partitions found on MTD device IXP4XX-Flash.0
Creating 5 MTD partitions on "IXP4XX-Flash.0":
0x00000000-0x00080000 : "RedBoot"
0x00080000-0x00180000 : "kernel"
0x00180000-0x002a0000 : "rootfs"
mtd: partition "rootfs" set to be root filesystem
mtd: partition "rootfs_data" created automatically, ofs=280000, len=20000 
0x00280000-0x002a0000 : "rootfs_data"
0x00fe0000-0x00fff000 : "FIS directory"
0x00fff000-0x01000000 : "RedBoot config"
i2c /dev entries driver
i2c-gpio: probe failed: -19
IXP4xx Watchdog Timer: heartbeat 60 sec
nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP westwood registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Bridge firewalling registered
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
XScale DSP coprocessor detected.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
VFS: Mounted root (squashfs filesystem) readonly.
Freeing init memory: 96K
Please be patient, while OpenWrt loads ...
- preinit -
jffs2 not ready yet; using ramdisk
mini_fo: using base directory: /
mini_fo: using storage directory: /tmp/root
- init -

Please press Enter to activate this console. PPP generic driver version 2.4.2
wlan: trunk
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.30.13 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5413, RF2133, REGOPS_FUNC)
ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (trunk)
ath_rate_minstrel: look around rate set to 10%
ath_rate_minstrel: EWMA rolloff level set to 75%
ath_rate_minstrel: max segment size in the mrr set to 6000 us
wlan: mac acl policy registered
ath_pci: trunk
jffs2: Too few erase blocks (1)



BusyBox v1.8.2 (2008-04-01 14:44:47 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 KAMIKAZE (bleeding edge, r10696) -------------------
  * 10 oz Vodka       Shake well with ice and strain
  * 10 oz Triple sec  mixture into 10 shot glasses.
  * 10 oz lime juice  Salute!
 ---------------------------------------------------
root@OpenWrt:/# ls /lib/firmware
NPE-B  NPE-C
root@OpenWrt:/# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00080000 00020000 "RedBoot"
mtd1: 00100000 00020000 "kernel"
mtd2: 00120000 00020000 "rootfs"
mtd3: 00020000 00020000 "rootfs_data"
mtd4: 0001f000 00020000 "FIS directory"
mtd5: 00001000 00020000 "RedBoot config"
root@OpenWrt:/# ifconfig eth0
ifconfig: eth0: error fetching interface information: Device not found
root@OpenWrt:/# ifconfig eth1
ifconfig: eth1: error fetching interface information: Device not found
root@OpenWrt:/#

Not anymore with trunk. But you seem to lack some platform info.. Can you paste here a factory dmesg?

I also enabled all DEBUG defines in:
  build_dir/linux-ixp4xx_generic/linux-2.6.24.2/arch/arm/mach-ixp4xx/ixp4xx_npe.c
  build_dir/linux-ixp4xx_generic/linux-2.6.24.2/arch/arm/mach-ixp4xx/ixp4xx_qmgr.c
  build_dir/linux-ixp4xx_generic/linux-2.6.24.2/drivers/net/arm/ixp4xx_eth.c

root@OpenWrt:/# uname -a
Linux OpenWrt 2.6.24.2 #3 Tue Apr 1 16:56:53 CEST 2008 armv5teb unknown
root@OpenWrt:/# 
root@OpenWrt:/# dmesg 
Linux version 2.6.24.2 (antonello@AntoPC001) (gcc version 4.1.2) #3 Tue Apr 1 16:56:53 CEST 2008
CPU: XScale-IXP42x Family [690541c1] revision 1 (ARMv5TE), cr=000039ff
Machine: Intel IXDPG425
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 8192
  DMA zone: 64 pages used for memmap
  DMA zone: 0 pages reserved
  DMA zone: 8128 pages, LIFO batch:0
  Normal zone: 0 pages used for memmap
  Movable zone: 0 pages used for memmap
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
Kernel command line: root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200 init=/etc/preinit
PID hash table entries: 128 (order: 7, 512 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 30312KB available (1852K code, 180K data, 96K init)
Calibrating delay loop... 532.48 BogoMIPS (lpj=2662400)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
IXP4xx: Using 16MiB expansion bus window size
PCI: IXP4xx is host
PCI: IXP4xx Using direct access for memory space
PCI: bus0: Fast back to back transfers disabled
dmabounce: registered device 0000:00:0e.0 on pci bus
dmabounce: registered device 0000:00:0e.1 on pci bus
dmabounce: registered device 0000:00:0e.2 on pci bus
NET: Registered protocol family 2
Time: OSTS clocksource has been installed.
Switched to high resolution mode on CPU 0
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
IXP4xx Queue Manager initialized.
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xc8000000 (irq = 15) is a XScale
console [ttyS0] enabled
IXP4XX-Flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
 Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
cfi_cmdset_0001: Erase suspend on write enabled
erase region 0: offset=0x0,size=0x20000,blocks=128
Searching for RedBoot partition table in IXP4XX-Flash.0 at offset 0xfe0000
5 RedBoot partitions found on MTD device IXP4XX-Flash.0
Creating 5 MTD partitions on "IXP4XX-Flash.0":
0x00000000-0x00080000 : "RedBoot"
0x00080000-0x00180000 : "kernel"
0x00180000-0x002a0000 : "rootfs"
mtd: partition "rootfs" set to be root filesystem
mtd: partition "rootfs_data" created automatically, ofs=280000, len=20000 
0x00280000-0x002a0000 : "rootfs_data"
0x00fe0000-0x00fff000 : "FIS directory"
0x00fff000-0x01000000 : "RedBoot config"
i2c /dev entries driver
i2c-gpio: probe failed: -19
IXP4xx Watchdog Timer: heartbeat 60 sec
nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP westwood registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Bridge firewalling registered
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
XScale DSP coprocessor detected.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
VFS: Mounted root (squashfs filesystem) readonly.
Freeing init memory: 96K
Please be patient, while OpenWrt loads ...
mini_fo: using base directory: /
mini_fo: using storage directory: /tmp/root
PPP generic driver version 2.4.2
wlan: trunk
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.30.13 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5413, RF2133, REGOPS_FUNC)
ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (trunk)
ath_rate_minstrel: look around rate set to 10%
ath_rate_minstrel: EWMA rolloff level set to 75%
ath_rate_minstrel: max segment size in the mrr set to 6000 us
wlan: mac acl policy registered
ath_pci: trunk
jffs2: Too few erase blocks (1)
root@OpenWrt:/#

I mean a dmesg from the reference firmware, which uses the intel access library.

Sorry,

the "reference" firmware that I use is from Montavista Pro 5.0
whit AccessLibrary 2.4 without crypto.

uname -a
Linux (none) 2.6.18_pro500-ixdp42x-arm_xscale_be #53 PREEMPT Tue Feb 26 15:23:06 CET 2008 armv5teb unknown
# 
# dmesg
<5>Linux version 2.6.18_pro500-ixdp42x-arm_xscale_be (root@AntoPC001) (gcc version 4.2.0 (MontaVista 4.2.0-4.0.13.0704681 2007-12-22)) #53 PREEMPT Tue Feb 26 15:23:06 CET 2008
<4>CPU: XScale-IXP42x Family [690541c1] revision 1 (ARMv5TE), cr=000039ff
<4>Machine: Intel IXDPG425
<4>Memory policy: ECC disabled, Data cache writeback
<7>On node 0 totalpages: 8192
<7>  DMA zone: 8192 pages, LIFO batch:1
<4>CPU0: D VIVT undefined 5 cache
<4>CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
<4>CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
<4>Real-Time Preemption Support (C) 2004-2006 Ingo Molnar
<4>Built 1 zonelists.  Total pages: 8192
<5>Kernel command line: console=ttyS0,115200 root=/dev/ram rw
<4>WARNING: experimental RCU implementation.
<4>PID hash table entries: 256 (order: 8, 1024 bytes)
<6>Clock event device ixp4xx timer1 configured with caps set: 07
<4>Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
<4>Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
<6>Memory: 32MB = 32MB total
<5>Memory: 25988KB available (2112K code, 450K data, 3888K init)
<7>Calibrating delay loop... 532.48 BogoMIPS (lpj=2662400)
<4>Mount-cache hash table entries: 512
<6>CPU: Testing write buffer coherency: ok
<6>NET: Registered protocol family 16
<4>IXP4xx: Using 16MiB expansion bus window size
<6>NET: Registered protocol family 2
<4>IP route cache hash table entries: 256 (order: -2, 1024 bytes)
<4>TCP established hash table entries: 1024 (order: 3, 32768 bytes)
<4>TCP bind hash table entries: 512 (order: 1, 14336 bytes)
<6>TCP: Hash tables configured (established 1024 bind 512)
<6>TCP reno registered
<4>NetWinder Floating Point Emulator V0.97 (double precision)
<6>JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
<6>io scheduler noop registered
<6>io scheduler anticipatory registered (default)
<6>io scheduler deadline registered
<6>io scheduler cfq registered
<4>IXP4xx Watchdog Timer: heartbeat 60 sec
<6>Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
<6>serial8250.0: ttyS0 at MMIO map 0xc8000000 mem 0xffbeb003 (irq = 15) is a XScale
<4>RAMDISK driver initialized: 16 RAM disks of 10240K size 1024 blocksize
<6>loop: loaded (max 8 devices)
<6>i2c /dev entries driver
<6>Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
<6>ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
<6>mice: PS/2 mouse device common for all mice
<6>IPv4 over IPv4 tunneling driver
<6>TCP bic registered
<6>NET: Registered protocol family 1
<6>NET: Registered protocol family 8
<6>NET: Registered protocol family 20
<6>Time: OSTS clocksource has been installed.
<3>IP-Config: No network devices available.
<6>Freeing init memory: 3888K
<4>ixp400: module license 'unspecified' taints kernel.
<7>ixp400: Module init.
<4>ixp400_eth: no version for "ixQMgrInit" found: kernel tainted.
<6>ixp400_eth: Initializing IXP400 NPE Ethernet driver software v. 1.7 
<6>ixp400_eth: CPU clock speed (approx) = 532 MHz
<4>[error] ixEthMiiPhyScan : unexpected Mii PHY ID 329070d0
<6>ixp400_eth: ixp0 is using NPEB and the PHY at address 5
<6>ixp400_eth: ixp1 is using NPEC and the PHY at address 4
<4>ixp400_eth: Use default MAC address 00:02:c1:05:08:01 for port 0
<4>ixp400_eth: Use default MAC address 00:02:c1:05:08:02 for port 1
# ifcon# ifconfig ixp0
ixp0      Link encap:Ethernet  HWaddr 00:02:C1:05:08:01  
          inet addr:192.168.1.88  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:101 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:256 
          RX bytes:7626 (7.4 KiB)  TX bytes:378 (378.0 B)

#

I see that for IXDPG425, so CONFIG_MACH_IXDPG425, in the
trunk/build_dir/linux-ixp4xx_generic/linux-2.6.24.2/arch/arm/mach-ixp4xx/Makefile
that file compiled is coyote-setup.c.
In this file there isn't anything about "NPE".

Could this be the problem?

No.. I'll try to find time to give you a test image tomorrow, so we cna fix this issue smile

Hello,

Is there any progress to this problem?  Just curious since I'm having a similar ethernet problem with my ixp4xx system.  Thanks.

antonello: please try trunk, I've commited the support code in r10756

schao: each different board needs different setup.. what platform are you working with?

Hi,

I tried latest trunk (r10759). In the bin directory now there is a specific kernel image for IXDPG425
board: openwrt-ixdpg425-zImage.
The MII PHY are successfully detected, but the MAC address is not setted.
I tried to set MAC address manually ad ethernet interface work fine.
I see also your patch to add IXDPG425 support.

[CODE]

+
Trying NPE-B...success. Using NPE-B with PHY 5.
Ethernet eth0: MAC address 00:03:47:df:32:a8
IP: 192.168.1.89/255.255.255.0, Gateway: 192.168.1.1
Default server: 192.168.1.36

RedBoot(tm) bootstrap and debug environment [ROM]
Red Hat certified release, version 2.04 - built 15:36:33, Mar 21 2007

Platform: Intel IXDPG425 Network Gateway Reference (IXP42X 533MHz) BE
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2007 Free Software Foundation, Inc.

RAM: 0x00000000-0x02000000, [0x00026910-0x01fc1000] available
FLASH: 0x50000000 - 0x51000000, 128 blocks of 0x00020000 bytes each.
== Executing boot script in 2.000 seconds - enter ^C to abort
^C
RedBoot> fconfig -l
Run script at boot: true
Boot script:
.. fis load kernel
.. exec

Boot script timeout (1000ms resolution): 2
Use BOOTP for network configuration: false
Gateway IP address: 192.168.1.1
Local IP address: 192.168.1.89
Local IP address mask: 255.255.255.0
Default server IP address: 192.168.1.36
Console baud rate: 115200
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Default network device: npe_eth0
Network hardware address [MAC] for npe_eth0: 0x00:0x03:0x47:0xDF:0x32:0xA8
Network hardware address [MAC] for npe_eth1: 0x00:0x03:0x47:0xDF:0x32:0xAA
RedBoot> fis load kernel
RedBoot> exec
Using base address 0x00026c00 and length 0x000f1c74
Uncompressing Linux.................................................................... done, booting the kernel.


Linux version 2.6.24.2 (antonello@AntoPC001) (gcc version 4.1.2) #1 Mon Apr 7 16:58:14 CEST 2008
CPU: XScale-IXP42x Family [690541c1] revision 1 (ARMv5TE), cr=000039ff
Machine: Intel IXDPG425
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
Kernel command line: root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200 init=/etc/preinit
PID hash table entries: 128 (order: 7, 512 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 30320KB available (1844K code, 181K data, 96K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
IXP4xx: Using 16MiB expansion bus window size
PCI: IXP4xx is host
PCI: IXP4xx Using direct access for memory space
PCI: bus0: Fast back to back transfers disabled
dmabounce: registered device 0000:00:0e.0 on pci bus
dmabounce: registered device 0000:00:0e.1 on pci bus
dmabounce: registered device 0000:00:0e.2 on pci bus
NET: Registered protocol family 2
Time: OSTS clocksource has been installed.
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
IXP4xx Queue Manager initialized.
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xc8000000 (irq = 15) is a XScale
console [ttyS0] enabled
eth0: MII PHY 5 on NPE-B
eth1: MII PHY 4 on NPE-C
IXP4XX-Flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
cfi_cmdset_0001: Erase suspend on write enabled
Searching for RedBoot partition table in IXP4XX-Flash.0 at offset 0xfe0000
5 RedBoot partitions found on MTD device IXP4XX-Flash.0
Creating 5 MTD partitions on "IXP4XX-Flash.0":
0x00000000-0x00080000 : "RedBoot"
0x00080000-0x00180000 : "kernel"
0x00180000-0x002a0000 : "rootfs"
mtd: partition "rootfs" set to be root filesystem
mtd: partition "rootfs_data" created automatically, ofs=280000, len=20000
0x00280000-0x002a0000 : "rootfs_data"
0x00fe0000-0x00fff000 : "FIS directory"
0x00fff000-0x01000000 : "RedBoot config"
i2c /dev entries driver
i2c-gpio: probe failed: -19
IXP4xx Watchdog Timer: heartbeat 60 sec
nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP westwood registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Bridge firewalling registered
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
XScale DSP coprocessor detected.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
VFS: Mounted root (squashfs filesystem) readonly.
Freeing init memory: 96K
Please be patient, while OpenWrt loads ...
- preinit -
jffs2 not ready yet; using ramdisk
mini_fo: using base directory: /
mini_fo: using storage directory: /tmp/root
- init -

Please press Enter to activate this console. PPP generic driver version 2.4.2
wlan: trunk
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.30.13 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5413, RF2133, REGOPS_FUNC)
ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (trunk)
ath_rate_minstrel: look around rate set to 10%
ath_rate_minstrel: EWMA rolloff level set to 75%
ath_rate_minstrel: max segment size in the mrr set to 6000 us
wlan: mac acl policy registered
ath_pci: trunk
jffs2: Too few erase blocks (1)



BusyBox v1.8.2 (2008-04-07 16:46:37 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
|       |.-----.-----.-----.|  |  |  |.----.|  |_
|   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
|_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
KAMIKAZE (bleeding edge, r10759) -------------------
  * 10 oz Vodka       Shake well with ice and strain
  * 10 oz Triple sec  mixture into 10 shot glasses.
  * 10 oz lime juice  Salute!
---------------------------------------------------
root@OpenWrt:/# ifconfig
lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@OpenWrt:/# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00 
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@OpenWrt:/# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:00:00:00:00:00 
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@OpenWrt:/# ifconfig eth0 down
root@OpenWrt:/# ifconfig eth0 hw ether 00:03:47:df:32:a8
root@OpenWrt:/# ifconfig eth0 192.168.1.188
NPE-B: firmware's license can be found in /usr/share/doc/LICENSE.IPL
NPE-B: firmware functionality 0x2, revision 0x2:1
eth0: link up, 100Mbps, full-duplex, lpa 0x05E1
root@OpenWrt:/# ifconfig                                                       
eth0      Link encap:Ethernet  HWaddr 00:03:47:DF:32:A8                         
          inet addr:192.168.1.188  Bcast:192.168.1.255  Mask:255.255.255.0     
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1                   
          RX packets:83 errors:0 dropped:0 overruns:0 frame:0                   
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0                 
          collisions:0 txqueuelen:100                                           
          RX bytes:6875 (6.7 KiB)  TX bytes:476 (476.0 B)                       
                                                                               
lo        Link encap:Local Loopback                                             
          inet addr:127.0.0.1  Mask:255.0.0.0                                   
          UP LOOPBACK RUNNING  MTU:16436  Metric:1                             
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0                   
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0                 
          collisions:0 txqueuelen:0                                             
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)                               
                                                                               
root@OpenWrt:/# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=12.315 ms
64 bytes from 192.168.1.1: seq=1 ttl=64 time=1.389 ms
64 bytes from 192.168.1.1: seq=2 ttl=64 time=1.316 ms
64 bytes from 192.168.1.1: seq=3 ttl=64 time=1.413 ms

--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 1.316/4.108/12.315 ms
root@OpenWrt:/#

[\CODE]

I successfully patched file:
build_dir/linux-ixp4xx_generic/linux-2.6.24.2/arch/arm/mach-ixp4xx/coyote-setup.c

I'm newbie, and I do not know how to create a patch file like:
target/linux/ixp4xx/patches-2.6.24/170-ixdpg425_mac_plat_info.patch

I think that it is better to improve the "searching" of MAC address in flash.
My idea is to search for strings "npe_eth0_esa." and "npe_eth1_esa."
and get MAC address.
I can implement if it is a good idea.

Console Output

+
Trying NPE-B...success. Using NPE-B with PHY 5.
Ethernet eth0: MAC address 00:03:47:df:32:a8
IP: 192.168.1.89/255.255.255.0, Gateway: 192.168.1.1
Default server: 192.168.1.36

RedBoot(tm) bootstrap and debug environment [ROM]
Red Hat certified release, version 2.04 - built 15:36:33, Mar 21 2007

Platform: Intel IXDPG425 Network Gateway Reference (IXP42X 533MHz) BE
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2007 Free Software Foundation, Inc.

RAM: 0x00000000-0x02000000, [0x00026910-0x01fc1000] available
FLASH: 0x50000000 - 0x51000000, 128 blocks of 0x00020000 bytes each.
== Executing boot script in 2.000 seconds - enter ^C to abort
^C
RedBoot> fconfig -l
Run script at boot: true
Boot script: 
.. fis load kernel
.. exec

Boot script timeout (1000ms resolution): 2
Use BOOTP for network configuration: false
Gateway IP address: 192.168.1.1
Local IP address: 192.168.1.89
Local IP address mask: 255.255.255.0
Default server IP address: 192.168.1.36
Console baud rate: 115200
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Default network device: npe_eth0
Network hardware address [MAC] for npe_eth0: 0x00:0x03:0x47:0xDF:0x32:0xA8
Network hardware address [MAC] for npe_eth1: 0x00:0x03:0x47:0xDF:0x32:0xAA
RedBoot> fis list
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0x50000000  0x50000000  0x00080000  0x00000000
kernel            0x50080000  0x00026C00  0x00100000  0x00026C00
rootfs            0x50180000  0x00026C00  0x00120000  0x00026C00
FIS directory     0x50FE0000  0x50FE0000  0x0001F000  0x00000000
RedBoot config    0x50FFF000  0x50FFF000  0x00001000  0x00000000

RedBoot> x -b 0x50FFF400 -l 0x30
50FFF400: 6E 70 65 5F 65 74 68 30  5F 65 73 61 00 00 03 47  |npe_eth0_esa...G|
50FFF410: DF 32 A8 00 00 06 0D 01  00 6E 70 65 5F 65 74 68  |.2.......npe_eth|
50FFF420: 31 5F 65 73 61 00 00 03  47 DF 32 AA 00 00 00 00  |1_esa...G.2.....|
RedBoot> x -b 0x50fff40d -l 0x6
50FFF40D: 00 03 47 DF 32 A8                                 |..G.2.          |
RedBoot> x -b 0x50fff426 -l 0x6
50FFF426: 00 03 47 DF 32 AA                                 |..G.2.          |
RedBoot> fis load kernel
RedBoot> exec
Using base address 0x00026c00 and length 0x000f1ce8
Uncompressing Linux.................................................................... done, booting the kernel.
Linux version 2.6.24.2 (antonello@AntoPC001) (gcc version 4.1.2) #3 Wed Apr 9 13:36:21 CEST 2008
CPU: XScale-IXP42x Family [690541c1] revision 1 (ARMv5TE), cr=000039ff
Machine: Intel IXDPG425
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
Kernel command line: root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200 init=/etc/preinit
PID hash table entries: 128 (order: 7, 512 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 30320KB available (1844K code, 181K data, 96K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
IXP4xx: Using 16MiB expansion bus window size
IXDPG425: Using MAC address 00:03:47:df:32:a8 for port 0
IXDPG425: Using MAC address 00:03:47:df:32:a8 for port 1
PCI: IXP4xx is host
PCI: IXP4xx Using direct access for memory space
PCI: bus0: Fast back to back transfers disabled
dmabounce: registered device 0000:00:0e.0 on pci bus
dmabounce: registered device 0000:00:0e.1 on pci bus
dmabounce: registered device 0000:00:0e.2 on pci bus
NET: Registered protocol family 2
Time: OSTS clocksource has been installed.
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
IXP4xx Queue Manager initialized.
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xc8000000 (irq = 15) is a XScale
console [ttyS0] enabled
eth0: MII PHY 5 on NPE-B
eth1: MII PHY 4 on NPE-C
IXP4XX-Flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
 Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
cfi_cmdset_0001: Erase suspend on write enabled
Searching for RedBoot partition table in IXP4XX-Flash.0 at offset 0xfe0000
5 RedBoot partitions found on MTD device IXP4XX-Flash.0
Creating 5 MTD partitions on "IXP4XX-Flash.0":
0x00000000-0x00080000 : "RedBoot"
0x00080000-0x00180000 : "kernel"
0x00180000-0x002a0000 : "rootfs"
mtd: partition "rootfs" set to be root filesystem
mtd: partition "rootfs_data" created automatically, ofs=280000, len=20000 
0x00280000-0x002a0000 : "rootfs_data"
0x00fe0000-0x00fff000 : "FIS directory"
0x00fff000-0x01000000 : "RedBoot config"
i2c /dev entries driver
i2c-gpio: probe failed: -19
IXP4xx Watchdog Timer: heartbeat 60 sec
nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
ip_tables: (C) 2000-2006 Netfilter Core Team
TCP westwood registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Bridge firewalling registered
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
XScale DSP coprocessor detected.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
VFS: Mounted root (squashfs filesystem) readonly.
Freeing init memory: 96K
Please be patient, while OpenWrt loads ...
- preinit -
jffs2 not ready yet; using ramdisk
mini_fo: using base directory: /
mini_fo: using storage directory: /tmp/root
- init -

Please press Enter to activate this console. NPE-B: firmware's license can be found in /usr/share/doc/LICENSE.IPL
NPE-B: firmware functionality 0x2, revision 0x2:1
eth0: link up, 100Mbps, full-duplex, lpa 0x05E1
PPP generic driver version 2.4.2
wlan: trunk
ath_hal: module license 'Proprietary' taints kernel.
ath_hal: 0.9.30.13 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5413, RF2133, REGOPS_FUNC)
ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (trunk)
ath_rate_minstrel: look around rate set to 10%
ath_rate_minstrel: EWMA rolloff level set to 75%
ath_rate_minstrel: max segment size in the mrr set to 6000 us
wlan: mac acl policy registered
ath_pci: trunk
jffs2: Too few erase blocks (1)
 


BusyBox v1.8.2 (2008-04-07 16:46:37 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 KAMIKAZE (bleeding edge, r10759) -------------------
  * 10 oz Vodka       Shake well with ice and strain
  * 10 oz Triple sec  mixture into 10 shot glasses.
  * 10 oz lime juice  Salute!
 ---------------------------------------------------
root@OpenWrt:/# ifconroot@OpenWrt:/# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:03:47:DF:32:A8  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:722 (722.0 B)  TX bytes:652 (652.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@OpenWrt:/#

Patch File

--- arch/arm/mach-ixp4xx/coyote-setup.c.orig    2008-04-09 13:14:34.000000000 +0200
+++ arch/arm/mach-ixp4xx/coyote-setup.c    2008-04-09 13:35:41.000000000 +0200
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/device.h>
+#include <linux/if_ether.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/serial_8250.h>
@@ -24,6 +25,7 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/flash.h>
+#include <asm/io.h>
 
 static struct flash_platform_data coyote_flash_data = {
     .map_name    = "cfi_probe",
@@ -108,6 +110,10 @@
 
 static void __init coyote_init(void)
 {
+    DECLARE_MAC_BUF(mac_buf);
+    uint8_t __iomem *f;
+    int i;
+
     ixp4xx_sys_init();
 
     coyote_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
@@ -124,6 +130,37 @@
     }
 
     platform_add_devices(coyote_devices, ARRAY_SIZE(coyote_devices));
+
+    /*
+     * Map in a portion of the flash and read the MAC address.
+     * Since it is stored in BE in the flash itself, we need to
+     * byteswap it if we're in LE mode.
+     */
+    f = ioremap(IXP4XX_EXP_BUS_BASE(0), 0x1000000);
+    if (f) {
+        for (i = 0; i < 6; i++)
+#ifdef __ARMEB__
+        ixdpg425_plat_eth[0].hwaddr[i] = readb(f + 0xFFF40D + i);
+#else
+        ixdpg425_plat_eth[0].hwaddr[i] = readb(f + 0xFFF40D + (i^3));
+#endif
+        iounmap(f);
+    }
+    printk(KERN_INFO "IXDPG425: Using MAC address %s for port 0\n",
+        print_mac(mac_buf, ixdpg425_plat_eth[0].hwaddr));
+
+    f = ioremap(IXP4XX_EXP_BUS_BASE(0), 0x1000000);
+    if (f) {
+        for (i = 0; i < 6; i++)
+#ifdef __ARMEB__
+        ixdpg425_plat_eth[1].hwaddr[i] = readb(f + 0xFFF426 + i);
+#else
+        ixdpg425_plat_eth[1].hwaddr[i] = readb(f + 0xFFF426 + (i^3));
+#endif
+        iounmap(f);
+    }
+    printk(KERN_INFO "IXDPG425: Using MAC address %s for port 1\n",
+        print_mac(mac_buf, ixdpg425_plat_eth[0].hwaddr));
 }
 
 #ifdef CONFIG_ARCH_ADI_COYOTE

If you come up with a patch, I'm happy to look into it.

I try to implement a string match, but the solution that I have implemented are very slow (7 sec).
The problem is that the flash is very large (16Mbytes).

Have you a method to suggest me?

Also, have you planned to release a new patch to fix MAC address problem for IXDPG425 board?

You only have to search in the redboot config location - that is a fix location per board. Regarding your current patch, I plan to add it to the rpo this weekend.

Hello Kaloz. Thank you for suggestion,

I implemented and test following patch.

I hope to be good smile

--- arch/arm/mach-ixp4xx/coyote-setup.c.orig    2008-04-09 13:14:34.000000000 +0200
+++ arch/arm/mach-ixp4xx/coyote-setup.c    2008-04-14 12:21:03.000000000 +0200
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/device.h>
+#include <linux/if_ether.h>
 #include <linux/serial.h>
 #include <linux/tty.h>
 #include <linux/serial_8250.h>
@@ -24,6 +25,7 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/flash.h>
+#include <asm/io.h>
 
 static struct flash_platform_data coyote_flash_data = {
     .map_name    = "cfi_probe",
@@ -108,6 +110,10 @@
 
 static void __init coyote_init(void)
 {
+    DECLARE_MAC_BUF(mac_buf);
+    uint8_t __iomem *f;
+    int i,j;
+
     ixp4xx_sys_init();
 
     coyote_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
@@ -124,6 +130,42 @@
     }
 
     platform_add_devices(coyote_devices, ARRAY_SIZE(coyote_devices));
+
+    /*
+     * Map in a portion of the flash (RedBoot config partition)
+     * and try to search for 'npe_eth0_esa' and 'npe_eth1_esa'
+     * string and read the MAC address. 
+     * Since it is stored in BE in the flash itself, we need to
+     * byteswap it if we're in LE mode.
+     */
+    f = ioremap(0x50FFF000, 0x0001000);
+    if(f) {
+        for (j = 0; j < 0x1000; j++) {
+            if(memcmp(f+j, "npe_eth0_esa", 12) == 0) {
+                for (i = 0; i < 6; i++)
+#ifdef __ARMEB__
+                ixdpg425_plat_eth[0].hwaddr[i] = readb(f+j + 0xd + i);
+#else
+                ixdpg425_plat_eth[0].hwaddr[i] = readb(f+j + 0xd + (i^3));
+#endif
+                printk(KERN_INFO "IXDPG425: Using MAC address %s for port 0\n",
+                    print_mac(mac_buf, ixdpg425_plat_eth[0].hwaddr));
+            }
+            if(memcmp(f+j, "npe_eth1_esa", 12) == 0) {
+                for (i = 0; i < 6; i++)
+#ifdef __ARMEB__
+                ixdpg425_plat_eth[1].hwaddr[i] = readb(f+j + 0xd + i);
+#else
+                ixdpg425_plat_eth[1].hwaddr[i] = readb(f+j + 0xd + (i^3));
+#endif
+                printk(KERN_INFO "IXDPG425: Using MAC address %s for port 1\n",
+                    print_mac(mac_buf, ixdpg425_plat_eth[1].hwaddr));
+            }
+        }
+        iounmap(f);
+    } else
+        printk(KERN_WARNING "IXDPG425: read MAC address fail: unable to map flash\n");
+    
 }
 
 #ifdef CONFIG_ARCH_ADI_COYOTE

The discussion might have continued from here.