summaryrefslogtreecommitdiff
path: root/recipes-kernel/linux/linux-at91_4.9.bb
blob: 28d6a146e6294b145cf13c27474a7d0214cd9e31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
SECTION = "kernel"
DESCRIPTION = "Linux kernel for Atmel ARM SoCs (aka AT91)"
SUMMARY = "Linux kernel for Atmel ARM SoCs (aka AT91)"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"

inherit kernel
# mts class to build dtb and append to kernel image
inherit linux-append-dtb


RDEPENDS_kernel-base=""
FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:"
KERNEL_EXTRA_ARGS ="LOADADDR=0x20008000"

PV = "4.9+git${SRCPV}"

S = "${WORKDIR}/git"

SRCREV = "29796588eb6a4c89795baaea3035764d15d0e44a"

KBRANCH = "linux-4.9-at91"
SRC_URI = "git://github.com/linux4sam/linux-at91.git;protocol=git;branch=${KBRANCH}"
SRC_URI += "file://defconfig"

COMMON_PATCHES = "file://linux-4.9-pps-gpio.patch"

SRC_URI_append_mtcdt = "\
            ${COMMON_PATCHES} \
            file://defconfig \
            file://linux-4.9-mtcdt-device-tree.patch \
            file://linux-4.9-add-num_accessory_ports-config-option.patch \
            "

DTB_APPEND_mtcdt = "mtcdt"

python __anonymous () {
	if d.getVar('UBOOT_FIT_IMAGE', True) == 'xyes':
		d.appendVar('DEPENDS', ' u-boot-mkimage-native dtc-native')
}

do_deploy_append() {
	if [ "${UBOOT_FIT_IMAGE}" = "xyes" ]; then
		DTB_PATH="${B}/arch/${ARCH}/boot/dts/"
		if [ ! -e "${DTB_PATH}" ]; then
			DTB_PATH="${B}/arch/${ARCH}/boot/"
		fi

		if [ -e ${S}/arch/${ARCH}/boot/dts/${MACHINE}.its ]; then
			cp ${S}/arch/${ARCH}/boot/dts/${MACHINE}*.its ${DTB_PATH}
			cd ${DTB_PATH}
			mkimage -f ${MACHINE}.its ${MACHINE}.itb
			install -m 0644 ${MACHINE}.itb ${DEPLOYDIR}/${MACHINE}.itb
			cd -
		fi
	fi
}

kernel_do_configure_append() {
	rm -f ${B}/.scmversion ${S}/.scmversion
	cd ${S}; git status; cd -
}

KERNEL_MODULE_AUTOLOAD += "atmel_usba_udc g_serial"
KERNEL_MODULE_PACKAGE_SUFFIX=""

COMPATIBLE_MACHINE = "(sama5d2-xplained|sama5d2-xplained-sd|sama5d2-ptc-ek|sama5d2-ptc-ek-sd|sama5d27-som1-ek|sama5d27-som1-ek-sd|sama5d4-xplained|sama5d4-xplained-sd|sama5d4ek|sama5d3-xplained|sama5d3-xplained-sd|sama5d3xek|at91sam9x5ek|at91sam9m10g45ek|at91sam9rlek|mtcdt)"

pkg_preinst_kernel-image-uimage() {
    set -x
    mkdir -m 0755 /var/volatile/boot 2>/dev/null || true
    ls /boot || true
    ls -l /boot | true
    rm -rf /boot
    ln -sf /var/volatile/boot /boot 2>/dev/null || true
}

pkg_prerm_kernel-image-uimage() {
        rm -rf /var/volatile/boot || true
        rm -rf /boot || true
}

PACKAGES =+ "kernel-image-uimage-inst kernel-dt-bindings-dev"
# Not sure how to get the name below generated automatically
KERNELVERSION = "4.9.87-linux4sam-5.8-dirty"
KERNELVERSION2 = "4.9.87-linux4sam_5.8-dirty"
RDEPENDS_kernel-image-uimage-inst += "kernel-image-uimage-${KERNELVERSION}"
ALLOW_EMPTY_kernel-image-uimage-inst = "1"

pkg_postinst_kernel-image-uimage-inst() {
	# Only installs all the kernel on the device (D is defined in bitbake)
	if [[ -z "$D" ]] ; then
	    logger -s -p user.info -t opkg "Upgrading kernel ${PV} -- poweroff will create an unbootable device"
	    set -x
	    kernel_mtd="/dev/$(cat /proc/mtd | grep '\"uImage\"' | cut -d : -f 1)"
	    flash_erase ${kernel_mtd} 0 0
	    if nandwrite -p ${kernel_mtd} /boot/uImage-${KERNELVERSION2} ; then
                echo 'Kernel image update is successful'
            fi
	    set +x
	fi
}

# Install dtc and fixdep to build any device tree overlays in other recipes/modules.
do_install_append() {
	install -D -m 0755 scripts/dtc/dtc ${STAGING_DIR_NATIVE}${USRBINPATH_class-native}/dtc
	install -D -m 0755 scripts/basic/fixdep ${STAGING_DIR_NATIVE}${USRBINPATH_class-native}/fixdep
        install -d -m 0755  ${D}${includedir}/linux
        cp -a ${STAGING_KERNEL_DIR}/include/dt-bindings ${D}${includedir}/linux/
        install -d -m 0755 ${STAGING_DIR_TARGET}/${includedir}/linux
        cp -a ${STAGING_KERNEL_DIR}/include/dt-bindings ${STAGING_DIR_TARGET}/${includedir}/linux
}

FILES_kernel-dt-bindings-dev = "/usr/include/linux/dt-bindings"