diff options
author | David-John Willis <John.Willis@Distant-earth.com> | 2012-04-03 20:54:11 +0100 |
---|---|---|
committer | David-John Willis <John.Willis@Distant-earth.com> | 2012-04-03 20:54:11 +0100 |
commit | b1db254c1886300d66c5e53431fcefe90800d36d (patch) | |
tree | dcaab754fa1b8bbb36622ccdcf1edc073afbc180 | |
parent | 2684e1f552bfa7daacf52c34f9ea396461ff0902 (diff) | |
download | meta-raspberrypi-b1db254c1886300d66c5e53431fcefe90800d36d.tar.gz |
linux-raspberrypi: Add recipe for 3.1.9 kernel.
* Kernel is from https://github.com/raspberrypi/linux
-rw-r--r-- | recipes-kernel/linux/linux-raspberrypi_3.1.9.bb | 25 | ||||
-rw-r--r-- | recipes-kernel/linux/linux.inc | 262 |
2 files changed, 287 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-raspberrypi_3.1.9.bb b/recipes-kernel/linux/linux-raspberrypi_3.1.9.bb new file mode 100644 index 0000000..075e300 --- /dev/null +++ b/recipes-kernel/linux/linux-raspberrypi_3.1.9.bb | |||
@@ -0,0 +1,25 @@ | |||
1 | require linux.inc | ||
2 | |||
3 | DESCRIPTION = "Linux kernel for the OpenPandora handheld" | ||
4 | KERNEL_IMAGETYPE = "uImage" | ||
5 | |||
6 | COMPATIBLE_MACHINE = "raspberrypi" | ||
7 | |||
8 | # This is on the pandora-3.2 branch | ||
9 | SRCREV = "d348f1694041b0310e42c6a471e97214eb301e91" | ||
10 | |||
11 | SRC_URI = " \ | ||
12 | git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-patches \ | ||
13 | " | ||
14 | |||
15 | PV = "3.1.9-rpi+${PR}+git${SRCREV}" | ||
16 | |||
17 | S = "${WORKDIR}/git" | ||
18 | |||
19 | # NOTE: For now we pull in the default config from the RPi kernel GIT tree. | ||
20 | |||
21 | KERNEL_DEFCONFIG = "bcmrpi_defconfig" | ||
22 | |||
23 | do_configure_prepend() { | ||
24 | install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available." | ||
25 | } | ||
diff --git a/recipes-kernel/linux/linux.inc b/recipes-kernel/linux/linux.inc new file mode 100644 index 0000000..a8ddf7f --- /dev/null +++ b/recipes-kernel/linux/linux.inc | |||
@@ -0,0 +1,262 @@ | |||
1 | DESCRIPTION = "Linux Kernel" | ||
2 | SECTION = "kernel" | ||
3 | LICENSE = "GPLv2" | ||
4 | |||
5 | LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" | ||
6 | |||
7 | inherit kernel siteinfo | ||
8 | |||
9 | # Try to build & install perf | ||
10 | require recipes-kernel/linux/linux-tools.inc | ||
11 | |||
12 | RPSRC = "http://www.rpsys.net/openzaurus/patches/archive" | ||
13 | |||
14 | # Enable OABI compat for people stuck with obsolete userspace | ||
15 | ARM_KEEP_OABI ?= "1" | ||
16 | |||
17 | # Quirk for udev greater or equal 141 | ||
18 | UDEV_GE_141 ?= "0" | ||
19 | |||
20 | # Specify the commandline for your device | ||
21 | |||
22 | # Boot from mmc | ||
23 | CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=5" | ||
24 | # Boot from nfs | ||
25 | #CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=301 root=/dev/nfs nfsroot=172.20.3.1:/data/at91 ip=172.20.0.5:::255.255.0.0" | ||
26 | |||
27 | # Set the verbosity of kernel messages during runtime | ||
28 | # You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour | ||
29 | CMDLINE_DEBUG ?= '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug", d)}' | ||
30 | CMDLINE_append = " ${CMDLINE_DEBUG} " | ||
31 | |||
32 | # Kernel bootlogo is distro-specific (default is OE logo). | ||
33 | # Logo resolution (qvga, vga, ...) is machine-specific. | ||
34 | LOGO_SIZE ?= "." | ||
35 | |||
36 | # Support for binary device tree generation | ||
37 | |||
38 | FILES_kernel-devicetree = "/boot/devicetree*" | ||
39 | |||
40 | KERNEL_DEVICETREE_boc01 = "${WORKDIR}/boc01.dts" | ||
41 | KERNEL_DEVICETREE_calamari = "arch/${ARCH}/boot/dts/mpc8536ds.dts" | ||
42 | KERNEL_DEVICETREE_canyonlands = "arch/${ARCH}/boot/dts/canyonlands.dts" | ||
43 | KERNEL_DEVICETREE_kilauea = "arch/${ARCH}/boot/dts/kilauea.dts" | ||
44 | KERNEL_DEVICETREE_lite5200 = "arch/${ARCH}/boot/dts/lite5200.dts" | ||
45 | KERNEL_DEVICETREE_lsppchd = "arch/${ARCH}/boot/dts/kuroboxHD.dts" | ||
46 | KERNEL_DEVICETREE_lsppchg = "arch/${ARCH}/boot/dts/kuroboxHG.dts" | ||
47 | KERNEL_DEVICETREE_mpc8313e-rdb = "arch/${ARCH}/boot/dts/mpc8313erdb.dts" | ||
48 | KERNEL_DEVICETREE_mpc8315e-rdb = "arch/${ARCH}/boot/dts/mpc8315erdb.dts" | ||
49 | KERNEL_DEVICETREE_mpc8323e-rdb = "arch/${ARCH}/boot/dts/mpc832x_rdb.dts" | ||
50 | KERNEL_DEVICETREE_mpc8544ds = "arch/${ARCH}/boot/dts/mpc8544ds.dts" | ||
51 | KERNEL_DEVICETREE_mpc8641-hpcn = "arch/${ARCH}/boot/dts/mpc8641_hpcn.dts" | ||
52 | KERNEL_DEVICETREE_p1020rdb = "arch/${ARCH}/boot/dts/p1020rdb.dts" | ||
53 | KERNEL_DEVICETREE_p2020ds = "arch/${ARCH}/boot/dts/p2020ds.dts" | ||
54 | KERNEL_DEVICETREE_sequoia = "arch/${ARCH}/boot/dts/sequoia.dts" | ||
55 | KERNEL_DEVICETREE_tqm8540 = "arch/${ARCH}/boot/dts/tqm8540.dts" | ||
56 | KERNEL_DEVICETREE_xilinx-ml507 = "arch/${ARCH}/boot/dts/virtex440-ml507.dts" | ||
57 | |||
58 | KERNEL_DEVICETREE_FLAGS = "-R 8 -S 0x3000" | ||
59 | |||
60 | CORTEXA8FIXUP ?= "yes" | ||
61 | |||
62 | python __anonymous () { | ||
63 | |||
64 | import bb | ||
65 | |||
66 | devicetree = bb.data.getVar('KERNEL_DEVICETREE', d, 1) or '' | ||
67 | if devicetree: | ||
68 | depends = bb.data.getVar("DEPENDS", d, 1) | ||
69 | bb.data.setVar("DEPENDS", "%s dtc-native" % depends, d) | ||
70 | packages = bb.data.getVar("PACKAGES", d, 1) | ||
71 | bb.data.setVar("PACKAGES", "%s kernel-devicetree" % packages, d) | ||
72 | } | ||
73 | |||
74 | do_configure_prepend() { | ||
75 | |||
76 | # Rename getline in ./scripts/unifdef.c | ||
77 | # Kernels up to 2.6.29 are currently failing to build unifdef.c, | ||
78 | # clashing with exposed getline() from <stdio.h> | ||
79 | # see https://patchwork.kernel.org/patch/11166/ | ||
80 | # committed in 2.6.29 (commit d15bd1067b1fcb2b7250d22bc0c7c7fea0b759f7) | ||
81 | |||
82 | sed -i -e 's/getline/parseline/g' ${S}/scripts/unifdef.c | ||
83 | |||
84 | |||
85 | echo "" > ${S}/.config | ||
86 | |||
87 | # | ||
88 | # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, then it's going to be used | ||
89 | # | ||
90 | if [ -e ${WORKDIR}/${LOGO_SIZE}/logo_linux_clut224.ppm ]; then | ||
91 | install -m 0644 ${WORKDIR}/${LOGO_SIZE}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm | ||
92 | echo "CONFIG_LOGO=y" >> ${S}/.config | ||
93 | echo "CONFIG_LOGO_LINUX_CLUT224=y" >> ${S}/.config | ||
94 | fi | ||
95 | |||
96 | # | ||
97 | # oabi / eabi support | ||
98 | # | ||
99 | if [ "${TARGET_OS}" = "linux-gnueabi" -o "${TARGET_OS}" = "linux-uclibceabi" ]; then | ||
100 | echo "CONFIG_AEABI=y" >> ${S}/.config | ||
101 | if [ "${ARM_KEEP_OABI}" = "1" ] ; then | ||
102 | echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config | ||
103 | else | ||
104 | echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config | ||
105 | fi | ||
106 | else | ||
107 | echo "# CONFIG_AEABI is not set" >> ${S}/.config | ||
108 | echo "# CONFIG_OABI_COMPAT is not set" >> ${S}/.config | ||
109 | fi | ||
110 | |||
111 | # When enabling thumb for userspace we also need thumb support in the kernel | ||
112 | if [ "${ARM_INSTRUCTION_SET}" = "thumb" ] ; then | ||
113 | sed -i -e /CONFIG_ARM_THUMB/d ${WORKDIR}/defconfig | ||
114 | echo "CONFIG_ARM_THUMB=y" >> ${S}/.config | ||
115 | fi | ||
116 | |||
117 | # Enable thumb2 fixup for specific issue in angstrom toolchains when used on A8 r1p[012] silicon | ||
118 | if [ "${DISTRO_NAME}" = "Angstrom" -o "${CORTEXA8FIXUP}" = "yes" ] ; then | ||
119 | sed -i -e /CONFIG_ARM_ERRATA_430973/d ${WORKDIR}/defconfig | ||
120 | echo "CONFIG_ARM_ERRATA_430973=y" >> ${S}/.config | ||
121 | fi | ||
122 | |||
123 | # | ||
124 | # endian support | ||
125 | # | ||
126 | if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then | ||
127 | echo "CONFIG_CPU_BIG_ENDIAN=y" >> ${S}/.config | ||
128 | fi | ||
129 | |||
130 | echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config | ||
131 | |||
132 | sed -e '/CONFIG_AEABI/d' \ | ||
133 | -e '/CONFIG_OABI_COMPAT=/d' \ | ||
134 | -e '/CONFIG_CMDLINE=/d' \ | ||
135 | -e '/CONFIG_CPU_BIG_ENDIAN/d' \ | ||
136 | -e '/CONFIG_LOGO=/d' \ | ||
137 | -e '/CONFIG_LOGO_LINUX_CLUT224=/d' \ | ||
138 | -e '/CONFIG_LOCALVERSION/d' \ | ||
139 | -e '/CONFIG_LOCALVERSION_AUTO/d' \ | ||
140 | < '${WORKDIR}/defconfig' >>'${S}/.config' | ||
141 | |||
142 | echo 'CONFIG_LOCALVERSION=""' >>${S}/.config | ||
143 | echo '# CONFIG_LOCALVERSION_AUTO is not set' >>${S}/.config | ||
144 | |||
145 | # | ||
146 | # Udev quirks | ||
147 | # | ||
148 | |||
149 | # Newer versions of udev mandate that sysfs doesn't have deprecated entries | ||
150 | if [ "${UDEV_GE_141}" = "1" ] ; then | ||
151 | sed -e /CONFIG_SYSFS_DEPRECATED/d \ | ||
152 | -e /CONFIG_SYSFS_DEPRECATED_V2/d \ | ||
153 | -e /CONFIG_HOTPLUG/d \ | ||
154 | -e /CONFIG_UEVENT_HELPER_PATH/d \ | ||
155 | -e /CONFIG_UNIX/d \ | ||
156 | -e /CONFIG_SYSFS/d \ | ||
157 | -e /CONFIG_PROC_FS/d \ | ||
158 | -e /CONFIG_TMPFS/d \ | ||
159 | -e /CONFIG_INOTIFY_USER/d \ | ||
160 | -e /CONFIG_SIGNALFD/d \ | ||
161 | -e /CONFIG_TMPFS_POSIX_ACL/d \ | ||
162 | -e /CONFIG_BLK_DEV_BSG/d \ | ||
163 | -i '${S}/.config' | ||
164 | |||
165 | echo '# CONFIG_SYSFS_DEPRECATED is not set' >> ${S}/.config | ||
166 | echo '# CONFIG_SYSFS_DEPRECATED_V2 is not set' >> ${S}/.config | ||
167 | echo 'CONFIG_HOTPLUG=y' >> ${S}/.config | ||
168 | echo 'CONFIG_UEVENT_HELPER_PATH=""' >> ${S}/.config | ||
169 | echo 'CONFIG_UNIX=y' >> ${S}/.config | ||
170 | echo 'CONFIG_SYSFS=y' >> ${S}/.config | ||
171 | echo 'CONFIG_PROC_FS=y' >> ${S}/.config | ||
172 | echo 'CONFIG_TMPFS=y' >> ${S}/.config | ||
173 | echo 'CONFIG_INOTIFY_USER=y' >> ${S}/.config | ||
174 | echo 'CONFIG_SIGNALFD=y' >> ${S}/.config | ||
175 | echo 'CONFIG_TMPFS_POSIX_ACL=y' >> ${S}/.config | ||
176 | echo 'CONFIG_BLK_DEV_BSG=y' >> ${S}/.config | ||
177 | echo 'CONFIG_DEVTMPFS=y' >> ${S}/.config | ||
178 | echo 'CONFIG_DEVTMPFS_MOUNT=y' >> ${S}/.config | ||
179 | fi | ||
180 | |||
181 | # Newer inits like systemd need cgroup support | ||
182 | if [ "${KERNEL_ENABLE_CGROUPS}" = "1" ] ; then | ||
183 | sed -e /CONFIG_CGROUP_SCHED/d \ | ||
184 | -e /CONFIG_CGROUPS/d \ | ||
185 | -i '${S}/.config' | ||
186 | |||
187 | echo 'CONFIG_CGROUP_SCHED=y' >> ${S}/.config | ||
188 | echo 'CONFIG_CGROUPS=y' >> ${S}/.config | ||
189 | echo 'CONFIG_CGROUP_NS=y' >> ${S}/.config | ||
190 | echo 'CONFIG_CGROUP_FREEZER=y' >> ${S}/.config | ||
191 | echo 'CONFIG_CGROUP_DEVICE=y' >> ${S}/.config | ||
192 | echo 'CONFIG_CPUSETS=y' >> ${S}/.config | ||
193 | echo 'CONFIG_PROC_PID_CPUSET=y' >> ${S}/.config | ||
194 | echo 'CONFIG_CGROUP_CPUACCT=y' >> ${S}/.config | ||
195 | echo 'CONFIG_RESOURCE_COUNTERS=y' >> ${S}/.config | ||
196 | fi | ||
197 | |||
198 | # | ||
199 | # root-over-nfs-over-usb-eth support. Limited, but should cover some cases. | ||
200 | # Enable this by setting a proper CMDLINE_NFSROOT_USB. | ||
201 | # | ||
202 | if [ ! -z "${CMDLINE_NFSROOT_USB}" ]; then | ||
203 | oenote "Configuring the kernel for root-over-nfs-over-usb-eth with CMDLINE ${CMDLINE_NFSROOT_USB}" | ||
204 | sed -e '/CONFIG_INET/d' \ | ||
205 | -e '/CONFIG_IP_PNP=/d' \ | ||
206 | -e '/CONFIG_USB_GADGET=/d' \ | ||
207 | -e '/CONFIG_USB_GADGET_SELECTED=/d' \ | ||
208 | -e '/CONFIG_USB_ETH=/d' \ | ||
209 | -e '/CONFIG_NFS_FS=/d' \ | ||
210 | -e '/CONFIG_ROOT_NFS=/d' \ | ||
211 | -e '/CONFIG_CMDLINE=/d' \ | ||
212 | -i ${S}/.config | ||
213 | echo "CONFIG_INET=y" >> ${S}/.config | ||
214 | echo "CONFIG_IP_PNP=y" >> ${S}/.config | ||
215 | echo "CONFIG_USB_GADGET=y" >> ${S}/.config | ||
216 | echo "CONFIG_USB_GADGET_SELECTED=y" >> ${S}/.config | ||
217 | echo "CONFIG_USB_ETH=y" >> ${S}/.config | ||
218 | echo "CONFIG_NFS_FS=y" >> ${S}/.config | ||
219 | echo "CONFIG_ROOT_NFS=y" >> ${S}/.config | ||
220 | echo "CONFIG_CMDLINE=\"${CMDLINE_NFSROOT_USB}\"" >> ${S}/.config | ||
221 | fi | ||
222 | yes '' | oe_runmake oldconfig | ||
223 | } | ||
224 | |||
225 | do_configure_append() { | ||
226 | if test -e scripts/Makefile.fwinst ; then | ||
227 | sed -i -e "s:-m0644:-m 0644:g" scripts/Makefile.fwinst | ||
228 | fi | ||
229 | } | ||
230 | |||
231 | do_install_append() { | ||
232 | oe_runmake headers_install INSTALL_HDR_PATH=${D}${exec_prefix}/src/linux-${KERNEL_VERSION} ARCH=$ARCH | ||
233 | } | ||
234 | |||
235 | PACKAGES =+ "kernel-headers" | ||
236 | FILES_kernel-headers = "${exec_prefix}/src/linux*" | ||
237 | |||
238 | do_devicetree_image() { | ||
239 | if test -n "${KERNEL_DEVICETREE}" ; then | ||
240 | dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree ${KERNEL_DEVICETREE} | ||
241 | install -d ${D}/boot | ||
242 | install -m 0644 devicetree ${D}/boot/devicetree-${KERNEL_VERSION} | ||
243 | install -d ${DEPLOY_DIR_IMAGE} | ||
244 | install -m 0644 devicetree ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb | ||
245 | package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb | ||
246 | cd ${DEPLOY_DIR_IMAGE} | ||
247 | rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb | ||
248 | ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb | ||
249 | package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_SYMLINK_NAME}.dtb | ||
250 | fi | ||
251 | } | ||
252 | |||
253 | addtask devicetree_image after do_install before do_package do_deploy | ||
254 | |||
255 | pkg_postinst_kernel-devicetree () { | ||
256 | cd /${KERNEL_IMAGEDEST}; update-alternatives --install /${KERNEL_IMAGEDEST}/devicetree devicetree devicetree-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true | ||
257 | } | ||
258 | |||
259 | pkg_postrm_kernel-devicetree () { | ||
260 | cd /${KERNEL_IMAGEDEST}; update-alternatives --remove devicetree devicetree-${KERNEL_VERSION} || true | ||
261 | } | ||
262 | |||