summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-altera.inc
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-altera.inc')
-rwxr-xr-xrecipes-kernel/linux/linux-altera.inc112
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 @@
1PR = "r1"
2
3KERNEL_REPO?="git://git.rocketboards.org/linux-socfpga.git"
4KERNEL_PROT?="http"
5KERNEL_DEFCONFIG?="socfpga_defconfig"
6KERNEL_TAG?="${AUTOREV}"
7
8SRC_URI = "${KERNEL_REPO};protocol=${KERNEL_PROT};branch=${KERNEL_BRANCH}"
9
10SRCREV_pn-${PN} = "${KERNEL_TAG}"
11
12inherit kernel
13SECTION = "kernel"
14DESCRIPTION = "Altera Linux kernel"
15LICENSE = "GPLv2"
16
17COMPATIBLE_MACHINE = "socfpga"
18
19LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
20
21S = "${WORKDIR}/git"
22
23MACHINE_DEFCONFIG = "${KERNEL_DEFCONFIG}"
24
25do_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
63kernel_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
72do_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
79addtask compile_dtb after do_compile before do_build
80
81KERNEL_DEVICETREE ?= "socfpga_vt socfpga_cyclone5 socfpga_arria5"
82
83do_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
102addtask deploy_dtb after do_compile_dtb before do_build
103
104VMLINUX_NAME ?= "vmlinux-${PV}-${PR}-${MACHINE}-${DATETIME}"
105
106kernel_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