Запустил linux. Чтобы стартовала сеть подправил в arch/arm/mach-at91/at91sam9260_devices.c конфигурацию PIO для MII. При загрузке ядро выдает eth0: no PHY found. Нашел в drivers/net/macb.c:
static int macb_mii_probe(struct net_device *dev) { struct macb *bp = netdev_priv(dev); struct phy_device *phydev = NULL; struct eth_platform_data *pdata; int phy_addr;
int i = 0;
/* find the first phy */
for (phy_addr = 0; phy_addr < PHY_MAX_ADDR; phy_addr++) { if (bp->mii_bus->phy_map[phy_addr]) { phydev = bp->mii_bus->phy_map[phy_addr]; break; } printk(KERN_ERR "[DEBUG]: i=%u\n", i); // i++; // }
if (!phydev) { printk (KERN_ERR "%s: no PHY found\n", dev->name); return -1; }
pdata = bp->pdev->dev.platform_data; /* TODO : add pin_irq */
/* attach the mac to the phy */
...
как я понял проиходит скан по phy_addr и в phydev возвращается некий указатель на struct phy_device который в моем случае всегда 0 из-за этого и не происходит дальнейшей инициализации. Вобщем-то вопрос в чем может быть дело, почему он 0? какой он должен быть? и что такое phy_map[phy_addr]? Если кто разбирался с драйвером подскажите плиз или может ссылку скиньте где почитать.
/===================LOG=====================
.... ssc ssc.0: Atmel SSC device at 0xc2828000 (irq 14) Fixed MDIO Bus: probed MACB_mii_bus: probed eth0: no PHY found atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12) rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0 IRQ 1/rtc0: IRQF_DISABLED is not guaranteed on shared IRQs rtc-at91sam9 at91_rtt.0: rtc0: SET TIME! TCP cubic registered Initializing XFRM netlink socket rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock RAMDISK: gzip image found at block 0 RAMDISK: EOF while reading compressed data<3>uncompression error VFS: Mounted root (ext2 filesystem) on device 1:0. Freeing init memory: 92K
BusyBox v1.16.0 (2010-04-07 12:44:19 MSD) built-in shell (ash) Enter 'help' for a list of built-in commands.
#
/=============================================
|