ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

GW(6/11)

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が必要とか?

と、昼までの作業。