diff options
Diffstat (limited to 'recipes-kernel/linux/linux-altera.inc')
-rwxr-xr-x | recipes-kernel/linux/linux-altera.inc | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-altera.inc b/recipes-kernel/linux/linux-altera.inc new file mode 100755 index 0000000..3a8ac1d --- /dev/null +++ b/recipes-kernel/linux/linux-altera.inc | |||
@@ -0,0 +1,112 @@ | |||
1 | PR = "r1" | ||
2 | |||
3 | KERNEL_REPO?="git://git.rocketboards.org/linux-socfpga.git" | ||
4 | KERNEL_PROT?="http" | ||
5 | KERNEL_DEFCONFIG?="socfpga_defconfig" | ||
6 | KERNEL_TAG?="${AUTOREV}" | ||
7 | |||
8 | SRC_URI = "${KERNEL_REPO};protocol=${KERNEL_PROT};branch=${KERNEL_BRANCH}" | ||
9 | |||
10 | SRCREV_pn-${PN} = "${KERNEL_TAG}" | ||
11 | |||
12 | inherit kernel | ||
13 | SECTION = "kernel" | ||
14 | DESCRIPTION = "Altera Linux kernel" | ||
15 | LICENSE = "GPLv2" | ||
16 | |||
17 | COMPATIBLE_MACHINE = "socfpga" | ||
18 | |||
19 | LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" | ||
20 | |||
21 | S = "${WORKDIR}/git" | ||
22 | |||
23 | MACHINE_DEFCONFIG = "${KERNEL_DEFCONFIG}" | ||
24 | |||
25 | do_configure() { | ||
26 | export INITRAMFS_IMAGE_FILE="${INITRAMFS_IMAGE}-${MACHINE}.cpio" | ||
27 | |||
28 | unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE | ||
29 | export CROSS_COMPILE="${TARGET_PREFIX}" | ||
30 | export ARCH=${ARCH} | ||
31 | |||
32 | oe_runmake ${MACHINE_DEFCONFIG} CONFIG_BLK_DEV_INITRD=y | ||
33 | |||
34 | cp .config .config.ori | ||
35 | |||
36 | grep CONFIG_BLK_DEV_INITRD .config || echo "CONFIG_BLK_DEV_INITRD=y" >> .config | ||
37 | grep CONFIG_INITRAMFS_SOURCE .config || echo "CONFIG_INITRAMFS_SOURCE=\"\"" >> .config | ||
38 | grep CONFIG_INITRAMFS_ROOT_UID .config || echo "CONFIG_INITRAMFS_ROOT_UID=0" >> .config | ||
39 | grep CONFIG_INITRAMFS_ROOT_GID .config || echo "CONFIG_INITRAMFS_ROOT_GID=0" >> .config | ||
40 | grep CONFIG_INITRAMFS_COMPRESSION_NONE .config || echo "CONFIG_INITRAMFS_COMPRESSION_NONE=y" >> .config | ||
41 | |||
42 | if [ ! -z ${INITRAMFS_IMAGE} ] && [ -e ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_FILE} ]; then | ||
43 | cp ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_FILE} . | ||
44 | echo "Found valid initramfs ${INITRAMFS_IMAGE_FILE}" | ||
45 | sed -i "s|^.*CONFIG_BLK_DEV_INITRD[ =].*$|CONFIG_BLK_DEV_INITRD=y|g" .config | ||
46 | sed -i "s|^.*CONFIG_INITRAMFS_SOURCE[ =].*$|CONFIG_INITRAMFS_SOURCE=\"${INITRAMFS_IMAGE_FILE}\"|g" .config | ||
47 | sed -i "s|^.*CONFIG_INITRAMFS_ROOT_UID[ =].*$|CONFIG_INITRAMFS_ROOT_UID=0|g" .config | ||
48 | sed -i "s|^.*CONFIG_INITRAMFS_ROOT_GID[ =].*$|CONFIG_INITRAMFS_ROOT_GID=0|g" .config | ||
49 | sed -i "s|^.*CONFIG_INITRAMFS_COMPRESSION_NONE[ =].*$|CONFIG_INITRAMFS_COMPRESSION_NONE=y|g" .config | ||
50 | oe_runmake oldconfig | ||
51 | else | ||
52 | rm -f *.cpio | ||
53 | echo "Initramfs disabled or can't find valid initramfs ${INITRAMFS_IMAGE_FILE}" | ||
54 | sed -i "s|^CONFIG_BLK_DEV_INITRD=.*$|# CONFIG_BLK_DEV_INITRD is not set|g" .config | ||
55 | sed -i "s|^CONFIG_INITRAMFS_SOURCE=\".*\"$|# CONFIG_INITRAMFS_SOURCE is not set|g" .config | ||
56 | sed -i "s|^CONFIG_INITRAMFS_ROOT_UID=.*$|# CONFIG_INITRAMFS_ROOT_UID is not set|g" .config | ||
57 | sed -i "s|^CONFIG_INITRAMFS_ROOT_GID=.*$|# CONFIG_INITRAMFS_ROOT_GID is not set|g" .config | ||
58 | sed -i "s|^CONFIG_INITRAMFS_COMPRESSION_NONE=.*$|# CONFIG_INITRAMFS_COMPRESSION_NONE is not set|g" .config | ||
59 | oe_runmake oldconfig | ||
60 | fi | ||
61 | } | ||
62 | |||
63 | kernel_do_compile() { | ||
64 | unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE | ||
65 | oe_runmake __headers CC="${KERNEL_CC}" LD="${KERNEL_LD}" | ||
66 | oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} ${KERNEL_ALT_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" LOADADDR=0x8000 | ||
67 | if test "${KERNEL_IMAGETYPE_FOR_MAKE}.gz" = "${KERNEL_IMAGETYPE}"; then | ||
68 | gzip -9c < "${KERNEL_IMAGETYPE_FOR_MAKE}" > "${KERNEL_OUTPUT}" | ||
69 | fi | ||
70 | } | ||
71 | |||
72 | do_compile_dtb() { | ||
73 | unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE | ||
74 | sync | ||
75 | oe_runmake ARCH=${ARCH} CROSS_COMPILE="${TARGET_PREFIX}" dtbs || | ||
76 | oe_runmake ARCH=${ARCH} CROSS_COMPILE="${TARGET_PREFIX}" dtbs | ||
77 | } | ||
78 | |||
79 | addtask compile_dtb after do_compile before do_build | ||
80 | |||
81 | KERNEL_DEVICETREE ?= "socfpga_vt socfpga_cyclone5 socfpga_arria5" | ||
82 | |||
83 | do_deploy_dtb() { | ||
84 | install -d ${DEPLOY_DIR_IMAGE} | ||
85 | cd ${DEPLOY_DIR_IMAGE} | ||
86 | if test -n "${KERNEL_DEVICETREE}"; then | ||
87 | for DTB_FILE in ${KERNEL_DEVICETREE}; do | ||
88 | DTB_SYMLINK_NAME="${DTB_FILE}.dtb" | ||
89 | DEVICE_TREE_OUTPUT="${S}/arch/${ARCH}/boot/${DTB_SUBDIR}${DTB_FILE}.dtb" | ||
90 | DTB_NAME="${DTB_FILE}-${DATETIME}.dtb" | ||
91 | if [ ! -f ${DEVICE_TREE_OUTPUT} ]; then | ||
92 | echo "Warning: ${DEVICE_TREE_OUTPUT} is not available!" | ||
93 | continue | ||
94 | fi | ||
95 | install -m 0644 ${DEVICE_TREE_OUTPUT} ${DTB_NAME} | ||
96 | rm -f ${DTB_SYMLINK_NAME} | ||
97 | ln -sf ${DTB_NAME} ${DTB_SYMLINK_NAME} | ||
98 | done | ||
99 | fi | ||
100 | } | ||
101 | |||
102 | addtask deploy_dtb after do_compile_dtb before do_build | ||
103 | |||
104 | VMLINUX_NAME ?= "vmlinux-${PV}-${PR}-${MACHINE}-${DATETIME}" | ||
105 | |||
106 | kernel_do_deploy_append() { | ||
107 | install -m 0644 ${S}/vmlinux ${DEPLOYDIR}/${VMLINUX_NAME} | ||
108 | cd ${DEPLOYDIR} && | ||
109 | rm -f vmlinux && | ||
110 | ln -sf ${VMLINUX_NAME} vmlinux | ||
111 | } | ||
112 | |||