GWも11連休中の6日目となった。
ZYBOでKernel 3.13が動作するまで進めたが、LANに接続できない現象に入った。
次のようにMIIがProbeできないとエラーが出ているのでPSのEMACに接続できていない。
libphy: XEMACPS mii bus: probed
mdio_bus e000b000: cannot get PHY at address 7
xemacps e000b000.ps7-ethernet: pdev->id -1, baseaddr 0xe000b000, irq 54
...
xemacps e000b000.ps7-ethernet: XEMACPS mii bus mii_probe fail.
xemacps e000b000.ps7-ethernet: eth0: no PHY found
っうか、なんかおかしいよな。
PSにPHYなんか付いてないのに、MIIエラーということは単純に外部PHYが見えてないからエラーにしたということか?
そういえば、XilinxのEMACってMIIコントローラが付いてたような。
エラーの原因はこの辺りか?
だとすると、単純に.configで有効にしてないコンフィグがあるんだな。
3.10の成功している.configと今回はKernelのdefconfigをもとに新規作成した3.13の.configを比較すれば分かるだろう。
●比較して気になるコンフィグ(3.10で有効にしていて3.13で有効にしていないもの)
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_DMA_ENGINE=y
CONFIG_LOCAL_TIMERS=y
CONFIG_ARM_ZYNQ_CPUFREQ=y
CONFIG_REGMAP_SPI=y
CONFIG_DMA_SHARED_BUFFER=y
CONFIG_MTD_NAND_XILINX_PS=y
CONFIG_OF_DEVICE=y
CONFIG_OF_I2C=y
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_XILINX_PS=y
CONFIG_SPI_XILINX_PS_QSPI=y
CONFIG_SPI_XILINX_PS_SPI=y
⇒CONFIG_SPI_ZYNQ_QSPI=yに名前が変わったようだ。
CONFIG_GPIO_XILINX_PS=y
⇒CONFIG_GPIO_ZYNQ=yに名前が変わったようだ。
CONFIG_XILINX_PS_WATCHDOG=y
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
CONFIG_USB_XUSBPS_DR_OF=y
CONFIG_USB_EHCI_XUSBPS=y
⇒CONFIG_USB_ZYNQ_DR_OF=y
⇒CONFIG_USB_EHCI_ZYNQ=y
CONFIG_USB_GADGET_XUSBPS=y
CONFIG_XUSBPS_ERRATA_DT654401=y
⇒CONFIG_USB_ZYNQ=y
⇒CONFIG_USB_ZYNQ_ERRATA_DT654401=y
CONFIG_MMC_SDHCI_OF_XILINX_PS=y
⇒CONFIG_MMC_SDHCI_OF_ARASAN=y
これはMMC(SDIO)が動作しなかった原因だ。
SDHCIはさらにクロック名称も変更されているので、Device Treeも変更しなければいけない。
CONFIG_ZYNQ_SMC=y
●Ethernet周辺のコンフィグ
KernelでZynq用Ethernetのコンフィグは次の4つになる。
CONFIG_NET_VENDOR_XILINX=y
CONFIG_XILINX_EMACLITE=y
CONFIG_XILINX_AXI_EMAC=y
CONFIG_XILINX_PS_EMAC=y
このうち、CONFIG_XILINX_EMACLITEとCONFIG_XILINX_AXI_EMACはPLにEMACを追加した場合のドライバなので今回は対象外である。
まさか、CONFIG_NET_VENDOR_REALTEK=yが必要とか?
と、昼までの作業。