TL;DR attach dtb file to kernel and boot
I’m running gentoo on a Pogplug E02 and had some difficulties with kernels after 3.7. These kernels use a new infrastructure called device trees to tailor the kernel to new hardware.
Luckily this abstraction layer is already prepared for common devices. It just has to be loaded together with the kernel and initrd. Unfortunately, my u-boot doesn’t have support for device trees.
It can be fixed by attaching the device tree to the kernel. The kernel needs these options enabled:
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
Afterwards, you can compile the kernel with the dtb file. I use
make -j4 zImage && make -j4 modules && make modules_install && make kirkwood-pogo_e02.dtb
Just attach the dtb file to the kernel:
cat arch/arm/boot/dts/kirkwood-pogo_e02.dtb >> arch/arm/boot/zImage
And generate an image which u-boot can understand:
mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-4.1.6-gentoo-dts -d arch/arm/boot/zImage uImage-4.1.6-gentoo-dts