diff --git a/config/options b/config/options index 200b470747..5be882292b 100644 --- a/config/options +++ b/config/options @@ -29,6 +29,7 @@ ROOT=`pwd` DISTRO_DIR="$ROOT/distributions" PROJECT_DIR="$ROOT/projects" LINUX_DEPENDS="$PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf $ROOT/packages/linux/package.mk" +[ "$TARGET_ARCH" = "x86_64" ] && LINUX_DEPENDS+=" $ROOT/packages/linux-firmware/intel-ucode/package.mk $ROOT/packages/linux-firmware/x86-firmware/package.mk" # include versioning . config/version diff --git a/packages/linux/package.mk b/packages/linux/package.mk index 833e4b56d6..af5d2cba83 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -23,7 +23,7 @@ PKG_LICENSE="GPL" PKG_SITE="http://www.kernel.org" PKG_DEPENDS_HOST="ccache:host" PKG_DEPENDS_TARGET="toolchain cpio:host kmod:host pciutils xz:host wireless-regdb keyutils" -PKG_DEPENDS_INIT="toolchain cpu-firmware:init" +PKG_DEPENDS_INIT="toolchain" PKG_NEED_UNPACK="$LINUX_DEPENDS" PKG_PRIORITY="optional" PKG_SECTION="linux" @@ -71,6 +71,10 @@ PKG_AUTORECONF="no" PKG_MAKE_OPTS_HOST="ARCH=$TARGET_KERNEL_ARCH headers_check" +if [ "$TARGET_ARCH" = "x86_64" ]; then + PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET intel-ucode x86-firmware" +fi + if [ "$BUILD_ANDROID_BOOTIMG" = "yes" ]; then PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET mkbootimg:host" fi @@ -132,11 +136,6 @@ post_patch() { sed -i -e "s|CONFIG_MXC_HDMI_CEC_SR=y||" $PKG_BUILD/.config fi fi - - # copy some extra firmware to linux tree - cp -R $PKG_DIR/firmware/* $PKG_BUILD/firmware - - make -C $PKG_BUILD oldconfig } makeinstall_host() { @@ -146,6 +145,20 @@ makeinstall_host() { } pre_make_target() { + if [ "$TARGET_ARCH" = "x86_64" ]; then + # copy some extra firmware to linux tree + mkdir -p $ROOT/$PKG_BUILD/external-firmware + cp -a $(get_build_dir x86-firmware)/{amdgpu,amd-ucode,i915,radeon,rtl_nic} $ROOT/$PKG_BUILD/external-firmware + + mkdir -p $ROOT/$PKG_BUILD/external-firmware/intel-ucode + cp -a $(get_build_dir intel-ucode)/microcode.bin $ROOT/$PKG_BUILD/external-firmware/intel-ucode + + FW_LIST="$(find $ROOT/$PKG_BUILD/external-firmware \( -type f -o -type l \) \( -iname '*.bin' -o -iname '*.fw' \) | sed 's|.*external-firmware/||' | sort | xargs)" + sed -i "s|CONFIG_EXTRA_FIRMWARE=.*|CONFIG_EXTRA_FIRMWARE=\"${FW_LIST}\"|" $ROOT/$PKG_BUILD/.config + fi + + make oldconfig + # regdb cp $(get_build_dir wireless-regdb)/db.txt $ROOT/$PKG_BUILD/net/wireless/db.txt