From f6a2ca21c72b8d97cd0f89a0a436bf90b431698b Mon Sep 17 00:00:00 2001 From: Thomas Thorne Date: Mon, 24 Jul 2017 10:48:00 +0100 Subject: [PATCH 01/52] rpio: Add RDEPENDS For python-logging & python-threading [GitHub Ticket #98 - rpio requires the logging and threading Python packages but does not RDEPENDS them in recipie] The rpio tool needs the Python logging and threading pacakges installed on the target system for it to work. The pacakges are not included when doing a rpi-basci-image. This change updates the recipe so that all the required dependencies of the prio script are identified by the recipie. Fixes #98 Signed-off-by: Thomas A F Thorne --- recipes-devtools/python/rpio_0.10.0.bb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes-devtools/python/rpio_0.10.0.bb b/recipes-devtools/python/rpio_0.10.0.bb index 69ecb6f9b..1a6cee704 100644 --- a/recipes-devtools/python/rpio_0.10.0.bb +++ b/recipes-devtools/python/rpio_0.10.0.bb @@ -16,5 +16,10 @@ inherit setuptools COMPATIBLE_MACHINE = "raspberrypi" +RDEPENDS_${PN} = "\ + python-logging \ + python-threading \ +" + SRC_URI[md5sum] = "cefc45422833dcafcd59b78dffc540f4" SRC_URI[sha256sum] = "b89f75dec9de354681209ebfaedfe22b7c178aacd91a604a7bd6d92024e4cf7e" From ab4006bb2e6f51ea49c074fc0e9b1a50c96c01e1 Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Wed, 26 Jul 2017 12:49:31 +0200 Subject: [PATCH 02/52] weston: use just one append and one bb.utils.contains * drop duplicated --enable-rpi-compositor and WESTON_NATIVE_BACKEND=rpi-backend.so * use rpi override, adding --enable-rpi-compositor unconditionally breaks other MACHINEs with: configure: WARNING: unrecognized options: --enable-rpi-compositor * use just one append and one bb.utils.contains to save some bitbake cycles while parsing Signed-off-by: Martin Jansa --- recipes-graphics/wayland/weston_%.bbappend | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/recipes-graphics/wayland/weston_%.bbappend b/recipes-graphics/wayland/weston_%.bbappend index f2cb7aa1f..1dac41cc6 100644 --- a/recipes-graphics/wayland/weston_%.bbappend +++ b/recipes-graphics/wayland/weston_%.bbappend @@ -1,12 +1,12 @@ -EXTRA_OECONF_append_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', ' --enable-rpi-compositor WESTON_NATIVE_BACKEND=rpi-backend.so', d)}" - PACKAGECONFIG_remove_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', 'fbdev', '', d)}" -EXTRA_OECONF += "--disable-xwayland-test \ - --disable-simple-egl-clients \ +EXTRA_OECONF_append_rpi = " \ + --disable-xwayland-test \ + --disable-simple-egl-clients \ + ${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', ' \ + --enable-rpi-compositor \ + --disable-resize-optimization \ + --disable-setuid-install \ + WESTON_NATIVE_BACKEND=rpi-backend.so \ + ', d)} \ " - -EXTRA_OECONF += "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', '--enable-rpi-compositor', d)}" -EXTRA_OECONF += "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', '--disable-resize-optimization', d)}" -EXTRA_OECONF += "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', '--disable-setuid-install', d)}" -EXTRA_OECONF += "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', 'WESTON_NATIVE_BACKEND=rpi-backend.so', d)}" From 56d0bdb5fe818858a152a793a363bbe86d46d430 Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Wed, 26 Jul 2017 12:49:51 +0200 Subject: [PATCH 03/52] recipe: anchor regexps in COMPATIBLE_MACHINE * bitbake is using re.match, so raspberrypi actually matches with anything ^raspberrypi.* which currently works, but it will also match with hypothetical raspberrypi-is-no-more-this-is-banana-now MACHINE which isn't intended by this COMPATIBLE_MACHINE. Signed-off-by: Martin Jansa --- recipes-bsp/bootfiles/bcm2835-bootfiles.bb | 2 +- recipes-bsp/bootfiles/rpi-config_git.bb | 2 +- recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb | 2 +- recipes-devtools/bcm2835/bcm2835_1.52.bb | 2 +- recipes-devtools/pi-blaster/pi-blaster.inc | 2 +- recipes-devtools/python/rpi-gpio_0.6.2.bb | 2 +- recipes-devtools/python/rpio_0.10.0.bb | 2 +- recipes-devtools/wiringPi/wiringpi_git.bb | 2 +- recipes-graphics/userland/userland_git.bb | 2 +- recipes-graphics/vc-graphics/vc-graphics.inc | 2 +- recipes-kernel/linux/linux-raspberrypi.inc | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/recipes-bsp/bootfiles/bcm2835-bootfiles.bb b/recipes-bsp/bootfiles/bcm2835-bootfiles.bb index b279e1551..a11503726 100644 --- a/recipes-bsp/bootfiles/bcm2835-bootfiles.bb +++ b/recipes-bsp/bootfiles/bcm2835-bootfiles.bb @@ -9,7 +9,7 @@ include recipes-bsp/common/firmware.inc RDEPENDS_${PN} = "rpi-config" -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" S = "${RPIFW_S}/boot" diff --git a/recipes-bsp/bootfiles/rpi-config_git.bb b/recipes-bsp/bootfiles/rpi-config_git.bb index b3c50847a..38a123723 100644 --- a/recipes-bsp/bootfiles/rpi-config_git.bb +++ b/recipes-bsp/bootfiles/rpi-config_git.bb @@ -5,7 +5,7 @@ DESCRIPTION = "Commented config.txt file for the Raspberry Pi. \ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" SRCREV = "648ffc470824c43eb0d16c485f4c24816b32cd6f" SRC_URI = "git://github.com/Evilpaul/RPi-config.git;protocol=git;branch=master \ diff --git a/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb b/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb index 4936dcfd3..c938c3b45 100644 --- a/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb +++ b/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb @@ -1,7 +1,7 @@ SUMMARY = "U-boot boot scripts for Raspberry Pi" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" -COMPATIBLE_MACHINE = "rpi" +COMPATIBLE_MACHINE = "^rpi$" DEPENDS = "u-boot-mkimage-native" diff --git a/recipes-devtools/bcm2835/bcm2835_1.52.bb b/recipes-devtools/bcm2835/bcm2835_1.52.bb index 8e41c61f1..eef6afd1c 100644 --- a/recipes-devtools/bcm2835/bcm2835_1.52.bb +++ b/recipes-devtools/bcm2835/bcm2835_1.52.bb @@ -8,7 +8,7 @@ AUTHOR = "Mike McCauley (mikem@open.com.au)" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" SRC_URI = "http://www.airspayce.com/mikem/bcm2835/bcm2835-${PV}.tar.gz" diff --git a/recipes-devtools/pi-blaster/pi-blaster.inc b/recipes-devtools/pi-blaster/pi-blaster.inc index a548957dc..6ea4fa358 100644 --- a/recipes-devtools/pi-blaster/pi-blaster.inc +++ b/recipes-devtools/pi-blaster/pi-blaster.inc @@ -16,6 +16,6 @@ INITSCRIPT_PACKAGES = "${PN}" INITSCRIPT_NAME_${PN} = "${PN}.boot.sh" INITSCRIPT_PARAMS_${PN} = "defaults 15 85" -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/recipes-devtools/python/rpi-gpio_0.6.2.bb b/recipes-devtools/python/rpi-gpio_0.6.2.bb index a08ea98ac..9c72168bb 100644 --- a/recipes-devtools/python/rpi-gpio_0.6.2.bb +++ b/recipes-devtools/python/rpi-gpio_0.6.2.bb @@ -17,5 +17,5 @@ S = "${WORKDIR}/${SRCNAME}-${PV}" inherit distutils -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" diff --git a/recipes-devtools/python/rpio_0.10.0.bb b/recipes-devtools/python/rpio_0.10.0.bb index 1a6cee704..998fdb39d 100644 --- a/recipes-devtools/python/rpio_0.10.0.bb +++ b/recipes-devtools/python/rpio_0.10.0.bb @@ -14,7 +14,7 @@ S = "${WORKDIR}/${SRCNAME}-${PV}" inherit setuptools -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" RDEPENDS_${PN} = "\ python-logging \ diff --git a/recipes-devtools/wiringPi/wiringpi_git.bb b/recipes-devtools/wiringPi/wiringpi_git.bb index 7953a55b2..f1b01dbe5 100644 --- a/recipes-devtools/wiringPi/wiringpi_git.bb +++ b/recipes-devtools/wiringPi/wiringpi_git.bb @@ -13,7 +13,7 @@ SRC_URI = "git://git.drogon.net/wiringPi \ file://0001-Add-initial-cross-compile-support.patch \ " -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" CFLAGS_prepend = "-I${S}/wiringPi -I${S}/devLib " diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb index 893fcba23..8ff14118e 100644 --- a/recipes-graphics/userland/userland_git.bb +++ b/recipes-graphics/userland/userland_git.bb @@ -12,7 +12,7 @@ PROVIDES = "virtual/libgles2 \ RPROVIDES_${PN} += "libgles2 egl" -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" SRCBRANCH = "master" SRCFORK = "raspberrypi" diff --git a/recipes-graphics/vc-graphics/vc-graphics.inc b/recipes-graphics/vc-graphics/vc-graphics.inc index a1c8d2943..668c5cee1 100644 --- a/recipes-graphics/vc-graphics/vc-graphics.inc +++ b/recipes-graphics/vc-graphics/vc-graphics.inc @@ -4,7 +4,7 @@ LICENSE = "Proprietary" LIC_FILES_CHKSUM = "file://LICENCE;md5=86e53f5f5909ee66900418028de11780" PROVIDES = "virtual/libgles2 virtual/egl" -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" include recipes-bsp/common/firmware.inc diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index 9265d557a..4f5999de2 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -10,7 +10,7 @@ SRC_URI += " \ file://defconfig \ " -COMPATIBLE_MACHINE = "raspberrypi" +COMPATIBLE_MACHINE = "^rpi$" PE = "1" PV = "${LINUX_VERSION}+git${SRCPV}" From ff02bf92e66a9997576923b4622cdcf740352724 Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Wed, 26 Jul 2017 12:49:59 +0200 Subject: [PATCH 04/52] packagegroup-rpi-test, rpi-test-image: restrict to ^rpi$ and include omxplayer only for 32bit rpi * omxplayer has: COMPATIBLE_MACHINE_rpi_aarch64 = null so it cannot be inclued for raspberrypi3-64 * components used by this packagegroup are also restricted to ^rpi$ so the packagegroup and the image using it cannot be built for anything else * fixes couple errors when trying to build world with meta-raspberrypi included Signed-off-by: Martin Jansa --- recipes-core/images/rpi-test-image.bb | 2 ++ recipes-core/packagegroups/packagegroup-rpi-test.bb | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/recipes-core/images/rpi-test-image.bb b/recipes-core/images/rpi-test-image.bb index b5602a605..c8dc4368e 100644 --- a/recipes-core/images/rpi-test-image.bb +++ b/recipes-core/images/rpi-test-image.bb @@ -1,4 +1,6 @@ # Base this image on rpi-basic-image include rpi-basic-image.bb +COMPATIBLE_MACHINE = "^rpi$" + IMAGE_INSTALL_append = " packagegroup-rpi-test" diff --git a/recipes-core/packagegroups/packagegroup-rpi-test.bb b/recipes-core/packagegroups/packagegroup-rpi-test.bb index 29e995e0c..029c18cb7 100644 --- a/recipes-core/packagegroups/packagegroup-rpi-test.bb +++ b/recipes-core/packagegroups/packagegroup-rpi-test.bb @@ -4,8 +4,13 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384 inherit packagegroup +COMPATIBLE_MACHINE = "^rpi$" + +OMXPLAYER_rpi = "omxplayer" +OMXPLAYER_rpi_aarch64 = "" + RDEPENDS_${PN} = "\ - omxplayer \ + ${OMXPLAYER} \ bcm2835-tests \ wiringpi \ rpio \ From 1a06502656851f359f0b4422a7832fc39f30098d Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 22 Aug 2017 16:49:53 -0700 Subject: [PATCH 05/52] gstreamer1.0-omx: Match with oe-core 1.12.x gstreamer Signed-off-by: Khem Raj --- ...1-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch | 0 .../0001-config-files-path.patch | 0 .../0002-fix-decoder-flushing.patch | 0 .../0003-no-timeout-on-get-state.patch | 0 .../0004-Properly-handle-drain-requests-while-flushing.patch | 0 ...5-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch | 0 ...er1.0-omx_1.10%.bbappend => gstreamer1.0-omx_1.12%.bbappend} | 2 +- 7 files changed, 1 insertion(+), 1 deletion(-) rename recipes-multimedia/gstreamer/{gstreamer1.0-omx-1.10 => gstreamer1.0-omx-1.12}/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch (100%) rename recipes-multimedia/gstreamer/{gstreamer1.0-omx-1.10 => gstreamer1.0-omx-1.12}/0001-config-files-path.patch (100%) rename recipes-multimedia/gstreamer/{gstreamer1.0-omx-1.10 => gstreamer1.0-omx-1.12}/0002-fix-decoder-flushing.patch (100%) rename recipes-multimedia/gstreamer/{gstreamer1.0-omx-1.10 => gstreamer1.0-omx-1.12}/0003-no-timeout-on-get-state.patch (100%) rename recipes-multimedia/gstreamer/{gstreamer1.0-omx-1.10 => gstreamer1.0-omx-1.12}/0004-Properly-handle-drain-requests-while-flushing.patch (100%) rename recipes-multimedia/gstreamer/{gstreamer1.0-omx-1.10 => gstreamer1.0-omx-1.12}/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch (100%) rename recipes-multimedia/gstreamer/{gstreamer1.0-omx_1.10%.bbappend => gstreamer1.0-omx_1.12%.bbappend} (88%) diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch similarity index 100% rename from recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch rename to recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0001-config-files-path.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0001-config-files-path.patch similarity index 100% rename from recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0001-config-files-path.patch rename to recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0001-config-files-path.patch diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0002-fix-decoder-flushing.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0002-fix-decoder-flushing.patch similarity index 100% rename from recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0002-fix-decoder-flushing.patch rename to recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0002-fix-decoder-flushing.patch diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0003-no-timeout-on-get-state.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0003-no-timeout-on-get-state.patch similarity index 100% rename from recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0003-no-timeout-on-get-state.patch rename to recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0003-no-timeout-on-get-state.patch diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0004-Properly-handle-drain-requests-while-flushing.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0004-Properly-handle-drain-requests-while-flushing.patch similarity index 100% rename from recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0004-Properly-handle-drain-requests-while-flushing.patch rename to recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0004-Properly-handle-drain-requests-while-flushing.patch diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch b/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch similarity index 100% rename from recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch rename to recipes-multimedia/gstreamer/gstreamer1.0-omx-1.12/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.10%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.12%.bbappend similarity index 88% rename from recipes-multimedia/gstreamer/gstreamer1.0-omx_1.10%.bbappend rename to recipes-multimedia/gstreamer/gstreamer1.0-omx_1.12%.bbappend index d4198677a..93381a4e0 100644 --- a/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.10%.bbappend +++ b/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.12%.bbappend @@ -10,4 +10,4 @@ SRC_URI_append_rpi = " \ file://0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch \ " -FILESEXTRAPATHS_prepend := "${THISDIR}/gstreamer1.0-omx-1.10:" +FILESEXTRAPATHS_prepend := "${THISDIR}/gstreamer1.0-omx-1.12:" From 94e2929f746f7e49a7870f7ea889dcbed05296c7 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 25 Aug 2017 09:59:14 +0000 Subject: [PATCH 06/52] u-boot: Fix boot and keyboard for rpi devices u-boot v2017.07 was not able to boot a Linux kernel or handle keyboard input. This is fixed by reverting a config change to re-enable CONFIG_OF_EMBED and backporting another config change to enable CONFIG_DM_KEYBOARD. Signed-off-by: Paul Barker --- ...vert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch | 67 +++++++++++++++++ ...0002-rpi-Enable-USB-keyboard-support.patch | 71 +++++++++++++++++++ recipes-bsp/u-boot/u-boot_%.bbappend | 7 ++ 3 files changed, 145 insertions(+) create mode 100644 recipes-bsp/u-boot/u-boot/0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch create mode 100644 recipes-bsp/u-boot/u-boot/0002-rpi-Enable-USB-keyboard-support.patch diff --git a/recipes-bsp/u-boot/u-boot/0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch b/recipes-bsp/u-boot/u-boot/0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch new file mode 100644 index 000000000..ffabe89ca --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch @@ -0,0 +1,67 @@ +From 46035d84eb75d54e524d068c29a42c4f562f757a Mon Sep 17 00:00:00 2001 +From: Paul Barker +Date: Wed, 2 Aug 2017 11:37:30 +0100 +Subject: [PATCH 1/2] Revert "dm: arm: rpi: Drop CONFIG_OF_EMBED" + +This reverts commit 25877d4e4c45451c5398aec3de50e0d5befe0e9f. + +Signed-off-by: Paul Barker +Upstream-status: Pending +--- + configs/rpi_2_defconfig | 1 + + configs/rpi_3_32b_defconfig | 1 + + configs/rpi_3_defconfig | 1 + + configs/rpi_defconfig | 1 + + 4 files changed, 4 insertions(+) + +diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig +index 862203f..6aa0532 100644 +--- a/configs/rpi_2_defconfig ++++ b/configs/rpi_2_defconfig +@@ -13,6 +13,7 @@ CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + # CONFIG_CMD_FPGA is not set + CONFIG_CMD_GPIO=y ++CONFIG_OF_EMBED=y + CONFIG_DM_MMC=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_BCM2835=y +diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig +index 95b1677..7396925 100644 +--- a/configs/rpi_3_32b_defconfig ++++ b/configs/rpi_3_32b_defconfig +@@ -14,6 +14,7 @@ CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + # CONFIG_CMD_FPGA is not set + CONFIG_CMD_GPIO=y ++CONFIG_OF_EMBED=y + CONFIG_DM_MMC=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_BCM2835=y +diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig +index f91b53d..1b1ee67 100644 +--- a/configs/rpi_3_defconfig ++++ b/configs/rpi_3_defconfig +@@ -14,6 +14,7 @@ CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + # CONFIG_CMD_FPGA is not set + CONFIG_CMD_GPIO=y ++CONFIG_OF_EMBED=y + CONFIG_DM_MMC=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_BCM2835=y +diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig +index e2d81ab..c7cf6e0 100644 +--- a/configs/rpi_defconfig ++++ b/configs/rpi_defconfig +@@ -13,6 +13,7 @@ CONFIG_CMD_MMC=y + CONFIG_CMD_USB=y + # CONFIG_CMD_FPGA is not set + CONFIG_CMD_GPIO=y ++CONFIG_OF_EMBED=y + CONFIG_DM_MMC=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_BCM2835=y +-- +2.7.4 + diff --git a/recipes-bsp/u-boot/u-boot/0002-rpi-Enable-USB-keyboard-support.patch b/recipes-bsp/u-boot/u-boot/0002-rpi-Enable-USB-keyboard-support.patch new file mode 100644 index 000000000..675d7d932 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0002-rpi-Enable-USB-keyboard-support.patch @@ -0,0 +1,71 @@ +From e4ddccdcf2360c104de502db140a2dbb90b63cfe Mon Sep 17 00:00:00 2001 +From: Simon Glass +Date: Thu, 24 Aug 2017 19:45:31 -0600 +Subject: [PATCH 2/2] rpi: Enable USB keyboard support + +This is currently disabled, so USB keyboards are not detected in U_Boot. +Enable this option to fix that. + +Backported to v2017.07. + +Signed-off-by: Simon Glass +Signed-off-by: Paul Barker +Upstream-status: Backport +--- + configs/rpi_2_defconfig | 1 + + configs/rpi_3_32b_defconfig | 1 + + configs/rpi_3_defconfig | 1 + + configs/rpi_defconfig | 1 + + 4 files changed, 4 insertions(+) + +diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig +index 6aa0532..9851836 100644 +--- a/configs/rpi_2_defconfig ++++ b/configs/rpi_2_defconfig +@@ -22,6 +22,7 @@ CONFIG_USB=y + CONFIG_DM_USB=y + CONFIG_USB_STORAGE=y + CONFIG_USB_KEYBOARD=y ++CONFIG_DM_KEYBOARD=y + CONFIG_DM_VIDEO=y + CONFIG_SYS_WHITE_ON_BLACK=y + CONFIG_CONSOLE_SCROLL_LINES=10 +diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig +index 7396925..c9bdcd7 100644 +--- a/configs/rpi_3_32b_defconfig ++++ b/configs/rpi_3_32b_defconfig +@@ -24,6 +24,7 @@ CONFIG_USB=y + CONFIG_DM_USB=y + CONFIG_USB_STORAGE=y + CONFIG_USB_KEYBOARD=y ++CONFIG_DM_KEYBOARD=y + CONFIG_DM_VIDEO=y + CONFIG_SYS_WHITE_ON_BLACK=y + CONFIG_CONSOLE_SCROLL_LINES=10 +diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig +index 1b1ee67..e9c9806 100644 +--- a/configs/rpi_3_defconfig ++++ b/configs/rpi_3_defconfig +@@ -24,6 +24,7 @@ CONFIG_USB=y + CONFIG_DM_USB=y + CONFIG_USB_STORAGE=y + CONFIG_USB_KEYBOARD=y ++CONFIG_DM_KEYBOARD=y + CONFIG_DM_VIDEO=y + CONFIG_SYS_WHITE_ON_BLACK=y + CONFIG_CONSOLE_SCROLL_LINES=10 +diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig +index c7cf6e0..59d8c58 100644 +--- a/configs/rpi_defconfig ++++ b/configs/rpi_defconfig +@@ -22,6 +22,7 @@ CONFIG_USB=y + CONFIG_DM_USB=y + CONFIG_USB_STORAGE=y + CONFIG_USB_KEYBOARD=y ++CONFIG_DM_KEYBOARD=y + CONFIG_DM_VIDEO=y + CONFIG_SYS_WHITE_ON_BLACK=y + CONFIG_CONSOLE_SCROLL_LINES=10 +-- +2.7.4 + diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend b/recipes-bsp/u-boot/u-boot_%.bbappend index 37816668c..8d0a53133 100644 --- a/recipes-bsp/u-boot/u-boot_%.bbappend +++ b/recipes-bsp/u-boot/u-boot_%.bbappend @@ -1 +1,8 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/u-boot:" + +SRC_URI_append_rpi = " \ + file://0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch \ + file://0002-rpi-Enable-USB-keyboard-support.patch \ + " + RDEPENDS_${PN}_append_rpi = " rpi-u-boot-scr" From c098439ac10f1c968b12b584d3e434aea758f519 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 25 Aug 2017 13:40:05 +0000 Subject: [PATCH 07/52] linux-raspberrypi: Update to tag 'raspberrypi-kernel_1.20170811-1' Signed-off-by: Paul Barker --- recipes-kernel/linux/linux-raspberrypi_4.9.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes-kernel/linux/linux-raspberrypi_4.9.bb b/recipes-kernel/linux/linux-raspberrypi_4.9.bb index ed36f304b..ba17020f7 100644 --- a/recipes-kernel/linux/linux-raspberrypi_4.9.bb +++ b/recipes-kernel/linux/linux-raspberrypi_4.9.bb @@ -1,8 +1,8 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" -LINUX_VERSION ?= "4.9.35" +LINUX_VERSION ?= "4.9.41" -SRCREV = "be2540e540f5442d7b372208787fb64100af0c54" +SRCREV = "4153f509b449f1c1c816cf124c314975c3daa824" SRC_URI = "git://github.com/raspberrypi/linux.git;branch=rpi-4.9.y" require linux-raspberrypi.inc From 2aa08e4f977468cbd3811587ece44f7148ad7829 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 25 Aug 2017 13:41:05 +0000 Subject: [PATCH 08/52] firmware: Update to tag '1.20170811' Signed-off-by: Paul Barker --- recipes-bsp/common/firmware.inc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes-bsp/common/firmware.inc b/recipes-bsp/common/firmware.inc index 1c3a911dd..ac2bd82b5 100644 --- a/recipes-bsp/common/firmware.inc +++ b/recipes-bsp/common/firmware.inc @@ -1,10 +1,10 @@ -RPIFW_DATE ?= "20170405" +RPIFW_DATE ?= "20170811" RPIFW_SRC_URI ?= "https://github.com/raspberrypi/firmware/archive/1.${RPIFW_DATE}.tar.gz" RPIFW_S ?= "${WORKDIR}/firmware-1.${RPIFW_DATE}" SRC_URI = "${RPIFW_SRC_URI}" -SRC_URI[md5sum] = "ea82d14a7cd8cfae9b78e00d4e56bc71" -SRC_URI[sha256sum] = "2f4e5bddbac1372590db203002c35cbba3fb9d6172a93c314ee27bf05ae13bff" +SRC_URI[md5sum] = "afd09f9a6df14e32b6d832fd9f51d087" +SRC_URI[sha256sum] = "a25f6281d64732892a2e838cc2346f1a88505b5c77a57a6540755362ea64043a" PV = "${RPIFW_DATE}" From f70b24b1f1a66159bba1879dcc6a7f37d26085fc Mon Sep 17 00:00:00 2001 From: Andrea Galbusera Date: Tue, 1 Aug 2017 08:46:45 +0200 Subject: [PATCH 09/52] sdcard_image-rpi: fix absolute path in vfat symlink Fix bitbake complaining with: ERROR: core-image-minimal-1.0-r0 do_image_complete: sstate found an absolute path symlink [...].vfat pointing at [...].vfat. Please replace this with a relative link. This patch redefines SDIMG_VFAT as a file name instead of a full absolute path, then fixing the symlink creation by pointing to a relative target. The cp command that deploys the artifact is changed accordingly to include the destination path. Signed-off-by: Andrea Galbusera --- classes/sdcard_image-rpi.bbclass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass index 1f75ef784..42753d686 100644 --- a/classes/sdcard_image-rpi.bbclass +++ b/classes/sdcard_image-rpi.bbclass @@ -73,7 +73,7 @@ SDIMG = "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.rpi-sdimg" FATPAYLOAD ?= "" # SD card vfat partition image name -SDIMG_VFAT = "${IMGDEPLOYDIR}/${IMAGE_NAME}.vfat" +SDIMG_VFAT = "${IMAGE_NAME}.vfat" SDIMG_LINK_VFAT = "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.vfat" IMAGE_CMD_rpi-sdimg () { @@ -152,7 +152,7 @@ IMAGE_CMD_rpi-sdimg () { # Deploy vfat partition (for u-boot case only) case "${KERNEL_IMAGETYPE}" in "uImage") - cp ${WORKDIR}/boot.img ${SDIMG_VFAT} + cp ${WORKDIR}/boot.img ${IMGDEPLOYDIR}/${SDIMG_VFAT} ln -sf ${SDIMG_VFAT} ${SDIMG_LINK_VFAT} ;; *) From 88478c38744e6a57361b438095fee1d808690a00 Mon Sep 17 00:00:00 2001 From: Andrea Ghittino Date: Tue, 29 Aug 2017 22:42:45 +0200 Subject: [PATCH 10/52] linux-raspberrypi: fix kernel configuration using cfg files In tree configurations are now used to build the kernel and it is possible to extend the config via bbappend and cfg fragments Fix issue 14 Signed-off-by: Andrea Ghittino --- recipes-kernel/linux/linux-raspberrypi.inc | 17 +++++------------ .../linux/linux-raspberrypi/defconfig | 1 - recipes-kernel/linux/linux-rpi.inc | 6 +++--- 3 files changed, 8 insertions(+), 16 deletions(-) delete mode 100644 recipes-kernel/linux/linux-raspberrypi/defconfig diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index 4f5999de2..f79aacbb9 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -6,19 +6,16 @@ SECTION = "kernel" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" -SRC_URI += " \ - file://defconfig \ - " - COMPATIBLE_MACHINE = "^rpi$" PE = "1" PV = "${LINUX_VERSION}+git${SRCPV}" -# NOTE: For now we pull in the default config from the RPi kernel GIT tree. -KERNEL_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig" -KERNEL_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig" -KERNEL_DEFCONFIG_raspberrypi3-64 ?= "bcmrpi3_defconfig" +KCONFIG_MODE = "--alldefconfig" +KBUILD_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig" +KBUILD_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig" +KBUILD_DEFCONFIG_raspberrypi3 ?= "bcm2709_defconfig" +KBUILD_DEFCONFIG_raspberrypi3-64 ?= "bcmrpi3_defconfig" # CMDLINE for raspberrypi CMDLINE ?= "dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" @@ -38,10 +35,6 @@ python __anonymous () { d.setVar("KERNEL_DEVICETREE", kerneldt) } -do_kernel_configme_prepend() { - install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available." -} - do_install_prepend() { install -d ${D}/lib/firmware } diff --git a/recipes-kernel/linux/linux-raspberrypi/defconfig b/recipes-kernel/linux/linux-raspberrypi/defconfig deleted file mode 100644 index ecbf32cfd..000000000 --- a/recipes-kernel/linux/linux-raspberrypi/defconfig +++ /dev/null @@ -1 +0,0 @@ -# Dummy file to get through do_kernel_configme. diff --git a/recipes-kernel/linux/linux-rpi.inc b/recipes-kernel/linux/linux-rpi.inc index 53383b073..ba47e3149 100644 --- a/recipes-kernel/linux/linux-rpi.inc +++ b/recipes-kernel/linux/linux-rpi.inc @@ -35,8 +35,7 @@ kernel_configure_variable() { } do_configure_prepend() { - # Clean .config - echo "" > ${B}/.config + mv -f ${B}/.config ${B}/.config.patched CONF_SED_SCRIPT="" # oabi / eabi support @@ -123,7 +122,8 @@ do_configure_prepend() { # Keep this the last line # Remove all modified configs and add the rest to .config - sed -e "${CONF_SED_SCRIPT}" < '${WORKDIR}/defconfig' >> '${B}/.config' + sed -e "${CONF_SED_SCRIPT}" < '${B}/.config.patched' >> '${B}/.config' + rm -f ${B}/.config.patched yes '' | oe_runmake oldconfig } From 7a7d871cc1e0a0c5d217ea4a2bca4f4a76e5a9c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zdzis=C5=82aw=20Krajewski?= Date: Mon, 10 Jul 2017 18:15:27 +0200 Subject: [PATCH 11/52] linux-raspberrypi: Add option for disabling rpi boot logo. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by Zdzisław Krajewski --- docs/extra-build-config.md | 6 ++++++ recipes-kernel/linux/linux-raspberrypi.inc | 3 +++ 2 files changed, 9 insertions(+) diff --git a/docs/extra-build-config.md b/docs/extra-build-config.md index 365c49068..8d4f897e4 100644 --- a/docs/extra-build-config.md +++ b/docs/extra-build-config.md @@ -95,6 +95,12 @@ this variable in local.conf: ENABLE_KGDB = "1" +## Disable rpi boot logo + +To disable rpi boot logo, set this variable in local.conf: + + DISABLE_RPI_BOOT_LOGO = "1" + ## Boot to U-Boot To have u-boot load kernel image, set in your local.conf: diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index f79aacbb9..f336490db 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -23,6 +23,9 @@ CMDLINE ?= "dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 root # Add the kernel debugger over console kernel command line option if enabled CMDLINE_append = ' ${@base_conditional("ENABLE_KGDB", "1", "kgdboc=serial0,115200", "", d)}' +# Disable rpi logo on boot +CMDLINE_append += ' ${@base_conditional("DISABLE_RPI_BOOT_LOGO", "1", "logo.nologo", "", d)}' + UDEV_GE_141 ?= "1" KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains("MACHINE_FEATURES", "pitft28r", "stmpe-ts", "", d)}" From e59132bdcc092597ed5f08a77e7160b0f3bb3547 Mon Sep 17 00:00:00 2001 From: Aurelian Zanoschi Date: Sun, 20 Aug 2017 12:25:19 +0300 Subject: [PATCH 12/52] wiringpi: Fix linking problem [github issue #105: wiringpi library is not linked correctly] Incorrect order of compiler flags causing the libwiringpi.so library to not have the required linking dependencies. The cross-compilation patch needed to be reworked in order to fix this problem. Fixes #105 Signed-off-by: Aurelian Zanoschi --- ...01-Add-initial-cross-compile-support.patch | 57 ++++++++++--------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch b/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch index a081b8d79..01e054634 100644 --- a/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch +++ b/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch @@ -1,23 +1,18 @@ -From 4ed727aa9e528f130fdc8798df771037a1f22fc9 Mon Sep 17 00:00:00 2001 -From: Andrea Galbusera -Date: Mon, 3 Apr 2017 14:48:14 +0200 -Subject: [PATCH] =?UTF-8?q?Add=20initial=20cross=20compile=20support=20(re?= - =?UTF-8?q?base=20from=20Petter=20Mab=C3=A4cker=20=20ve?= - =?UTF-8?q?rsion)?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +From ca25788e2563bad0d554deb9f4300d1e7d062825 Mon Sep 17 00:00:00 2001 +From: Aurelian Zanoschi +Date: Mon, 31 Jul 2017 20:25:15 +0300 +Subject: [PATCH] Add initial cross compile support --- devLib/Makefile | 54 +++++++++++++++++++++++++-------------------- - examples/Gertboard/Makefile | 20 +++++++++++------ - examples/Makefile | 20 +++++++++++------ - examples/PiFace/Makefile | 20 +++++++++++------ + examples/Gertboard/Makefile | 22 +++++++++++------- + examples/Makefile | 22 +++++++++++------- + examples/PiFace/Makefile | 22 +++++++++++------- examples/PiGlow/Makefile | 4 ++-- examples/q2w/Makefile | 4 ++-- gpio/Makefile | 29 ++++++++++++------------ - wiringPi/Makefile | 50 +++++++++++++++++++++++------------------ - 8 files changed, 116 insertions(+), 85 deletions(-) + wiringPi/Makefile | 52 ++++++++++++++++++++++++------------------- + 8 files changed, 120 insertions(+), 89 deletions(-) diff --git a/devLib/Makefile b/devLib/Makefile index cf665d6..040c03a 100644 @@ -132,11 +127,12 @@ index 1939ad6..98d1415 100644 -CC = gcc -INCLUDE = -I/usr/local/include -CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe -+DESTDIR?=/usr -+PREFIX?=/local - +- -LDFLAGS = -L/usr/local/lib -LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm ++DESTDIR?=/usr ++PREFIX?=/local ++ +INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include +LIB_DIR?=$(DESTDIR)$(PREFIX)/lib + @@ -164,11 +160,12 @@ index 6d87885..8623816 100644 -CC = gcc -INCLUDE = -I/usr/local/include -CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe -+DESTDIR?=/usr -+PREFIX?=/local - +- -LDFLAGS = -L/usr/local/lib -LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt ++DESTDIR?=/usr ++PREFIX?=/local ++ +INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include +LIB_DIR?=$(DESTDIR)$(PREFIX)/lib + @@ -196,11 +193,12 @@ index f937c14..ad030b3 100644 -CC = gcc -INCLUDE = -I/usr/local/include -CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe -+DESTDIR?=/usr -+PREFIX?=/local - +- -LDFLAGS = -L/usr/local/lib -LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm ++DESTDIR?=/usr ++PREFIX?=/local ++ +INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include +LIB_DIR?=$(DESTDIR)$(PREFIX)/lib + @@ -305,10 +303,10 @@ index f41a005..22753ee 100644 .PHONY: depend diff --git a/wiringPi/Makefile b/wiringPi/Makefile -index e1868b9..e39f75a 100644 +index e1868b9..750d290 100644 --- a/wiringPi/Makefile +++ b/wiringPi/Makefile -@@ -25,19 +25,23 @@ VERSION=$(shell cat ../VERSION) +@@ -25,21 +25,25 @@ VERSION=$(shell cat ../VERSION) DESTDIR?=/usr PREFIX?=/local @@ -336,19 +334,22 @@ index e1868b9..e39f75a 100644 +CC ?= gcc +INCLUDE ?= -I. DEFS = -D_GNU_SOURCE - CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC +-CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC ++CFLAGS = $(DEBUG) $(DEFS) $(INCLUDE) -Wformat=2 -Wall -Wextra -Winline -pipe -fPIC + + LIBS = -lm -lpthread -lrt -lcrypt @@ -78,17 +82,17 @@ $(STATIC): $(OBJ) $(DYNAMIC): $(OBJ) $Q echo "[Link (Dynamic)]" - $Q $(CC) -shared -Wl,-soname,libwiringPi.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPi.so.$(VERSION) $(LIBS) $(OBJ) -+ $Q $(CC) $(LDFLAGS) -shared -Wl,-soname,$(BASE_NAME).so.$(DYN_VERS_MAJ) -o $(BASE_NAME).so $(LIBS) $(OBJ) ++ $Q $(CC) $(LDFLAGS) -shared -Wl,-soname,$(BASE_NAME).so.$(DYN_VERS_MAJ) -o $(BASE_NAME).so $(OBJ) $(LIBS) .c.o: $Q echo [Compile] $< - $Q $(CC) -c $(CFLAGS) $< -o $@ -+ $Q $(CC) -c $(CFLAGS) -fPIC $< -o $@ ++ $Q $(CC) $(CFLAGS) $(LIBS) -c $< -o $@ .PHONY: clean From b934304e4399748df0d722a3fd3473d64c92b02d Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 6 Sep 2017 23:17:26 -0700 Subject: [PATCH 13/52] linux-raspberrypi: Disable DRBD lkm This comes from drbd-utils in meta-oe Signed-off-by: Khem Raj --- recipes-kernel/linux/linux-rpi.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/recipes-kernel/linux/linux-rpi.inc b/recipes-kernel/linux/linux-rpi.inc index ba47e3149..00c97f61b 100644 --- a/recipes-kernel/linux/linux-rpi.inc +++ b/recipes-kernel/linux/linux-rpi.inc @@ -109,6 +109,8 @@ do_configure_prepend() { fi # Activate CONFIG_LEGACY_PTYS kernel_configure_variable LEGACY_PTYS y + # this module is built externally via drbd-utils + kernel_configure_variable BLK_DEV_DRBD n # Activate the configuration options for VC4 VC4GRAPHICS="${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "1", "0", d)}" From d2acb3ffdae3143da383048e07cce9163f7864e8 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 6 Sep 2017 23:21:57 -0700 Subject: [PATCH 14/52] extra-apps.md: Document limitations of raspberrypi3-64 Signed-off-by: Khem Raj --- docs/extra-apps.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/extra-apps.md b/docs/extra-apps.md index 53007dc1f..99682b6e8 100644 --- a/docs/extra-apps.md +++ b/docs/extra-apps.md @@ -7,3 +7,9 @@ able to compile omxplayer you will need to whiteflag the commercial license in your local.conf: LICENSE_FLAGS_WHITELIST = "commercial" +## raspberrypi3-64 + +Currently, raspberrypi3-64 does not boot into graphics, this needs more investigation +and fixes, until then none of images using graphics stack would boot into UI, although +the system would be up and ready, graphics wont come up. One can use serial console or +remote login to get into system From fa82321af29aabdf82a5cdf247fde372c41cec35 Mon Sep 17 00:00:00 2001 From: Andrei Gherzan Date: Wed, 6 Sep 2017 20:27:52 +0100 Subject: [PATCH 15/52] rpi-gpio: Update to 0.6.3 As well integrate with meta-oe bbclass pypi. Signed-off-by: Andrei Gherzan --- recipes-devtools/python/rpi-gpio_0.6.2.bb | 21 --------------------- recipes-devtools/python/rpi-gpio_0.6.3.bb | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 21 deletions(-) delete mode 100644 recipes-devtools/python/rpi-gpio_0.6.2.bb create mode 100644 recipes-devtools/python/rpi-gpio_0.6.3.bb diff --git a/recipes-devtools/python/rpi-gpio_0.6.2.bb b/recipes-devtools/python/rpi-gpio_0.6.2.bb deleted file mode 100644 index 9c72168bb..000000000 --- a/recipes-devtools/python/rpi-gpio_0.6.2.bb +++ /dev/null @@ -1,21 +0,0 @@ -DESCRIPTION = "A module to control Raspberry Pi GPIO channels" -HOMEPAGE = "http://code.google.com/p/raspberry-gpio-python/" -SECTION = "devel/python" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=9b95630a648966b142f1a0dcea001cb7" - -SRCNAME = "RPi.GPIO" - -SRC_URI = "\ - http://pypi.python.org/packages/source/R/RPi.GPIO/${SRCNAME}-${PV}.tar.gz \ - file://0001-Remove-nested-functions.patch \ - " -SRC_URI[md5sum] = "9db86fd5f3bae872de9dbb068ee0b096" -SRC_URI[sha256sum] = "82acff0ef6bbe3cdf6f4dbdd73d96add5294bb94baf7f51c1d901861af3c2392" - -S = "${WORKDIR}/${SRCNAME}-${PV}" - -inherit distutils - -COMPATIBLE_MACHINE = "^rpi$" - diff --git a/recipes-devtools/python/rpi-gpio_0.6.3.bb b/recipes-devtools/python/rpi-gpio_0.6.3.bb new file mode 100644 index 000000000..d0ff00af7 --- /dev/null +++ b/recipes-devtools/python/rpi-gpio_0.6.3.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "A module to control Raspberry Pi GPIO channels" +HOMEPAGE = "http://code.google.com/p/raspberry-gpio-python/" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=9b95630a648966b142f1a0dcea001cb7" + +PYPI_PACKAGE = "RPi.GPIO" +inherit pypi distutils + +SRC_URI += "file://0001-Remove-nested-functions.patch" +SRC_URI[md5sum] = "e4abe1cfb5eacebe53078032256eb837" +SRC_URI[sha256sum] = "a5fc0eb5e401963b6c0a03650da6b42c4005f02d962b81241d96c98d0a578516" + +COMPATIBLE_MACHINE = "^rpi$" From b6b6ecb6cb9211b1a4c5ffbb4d03a2d0fe128369 Mon Sep 17 00:00:00 2001 From: Andrei Gherzan Date: Wed, 6 Sep 2017 20:28:51 +0100 Subject: [PATCH 16/52] python-sense-hat: Update to 2.2.0 As well integrate with meta-oe bbclass pypi. Signed-off-by: Andrei Gherzan --- ...-sense-hat_2.1.0.bb => python-sense-hat_2.2.0.bb} | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) rename recipes-devtools/python/{python-sense-hat_2.1.0.bb => python-sense-hat_2.2.0.bb} (57%) diff --git a/recipes-devtools/python/python-sense-hat_2.1.0.bb b/recipes-devtools/python/python-sense-hat_2.2.0.bb similarity index 57% rename from recipes-devtools/python/python-sense-hat_2.1.0.bb rename to recipes-devtools/python/python-sense-hat_2.2.0.bb index e990a2872..f7c4e349d 100644 --- a/recipes-devtools/python/python-sense-hat_2.1.0.bb +++ b/recipes-devtools/python/python-sense-hat_2.2.0.bb @@ -4,16 +4,12 @@ SECTION = "devel/python" LICENSE = "BSD" LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=d80fe312e1ff5fbd97369b093bf21cda" -SRCNAME = "sense-hat" +inherit setuptools pypi -SRC_URI = "https://pypi.python.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz" +PYPI_PACKAGE = "sense-hat" -SRC_URI[md5sum] = "71217f15ea963040f06e2f50722186ca" -SRC_URI[sha256sum] = "c6c76707c0ea514e4b0f1f96f1b5b79755875891aae037df7434b6aad7b9dbca" - -S = "${WORKDIR}/${SRCNAME}-${PV}" - -inherit setuptools +SRC_URI[md5sum] = "69929250cb72349a8a82edf2584b1d83" +SRC_URI[sha256sum] = "f000998d042d96ed722d459312e1bebd0107f9f3015cd34b3e4fabcab9c800af" DEPENDS += " \ jpeg \ From 50cbbb01519c9356db61beef501236f7f1bfcf15 Mon Sep 17 00:00:00 2001 From: Andrei Gherzan Date: Wed, 6 Sep 2017 20:37:03 +0100 Subject: [PATCH 17/52] pi-blaster: Update to current master HEAD License in the README was moved a couple of lines below. Signed-off-by: Andrei Gherzan --- recipes-devtools/pi-blaster/pi-blaster.inc | 2 +- recipes-devtools/pi-blaster/pi-blaster_git.bb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes-devtools/pi-blaster/pi-blaster.inc b/recipes-devtools/pi-blaster/pi-blaster.inc index 6ea4fa358..3cb79cccf 100644 --- a/recipes-devtools/pi-blaster/pi-blaster.inc +++ b/recipes-devtools/pi-blaster/pi-blaster.inc @@ -2,7 +2,7 @@ DESCRIPTION = "This project enables PWM on the GPIO pins you request of a Raspbe HOMEPAGE = "https://github.com/sarfata/pi-blaster/" SECTION = "devel/libs" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://README.md;beginline=212;endline=239;md5=a012868ef5f83b9f257af253d7cb07a3" +LIC_FILES_CHKSUM = "file://README.md;beginline=225;endline=252;md5=a012868ef5f83b9f257af253d7cb07a3" SRC_URI = "git://github.com/sarfata/pi-blaster \ file://remove-initscript-lsb-dependency.patch \ diff --git a/recipes-devtools/pi-blaster/pi-blaster_git.bb b/recipes-devtools/pi-blaster/pi-blaster_git.bb index ac812abcd..730f9d3e9 100644 --- a/recipes-devtools/pi-blaster/pi-blaster_git.bb +++ b/recipes-devtools/pi-blaster/pi-blaster_git.bb @@ -1,3 +1,3 @@ require pi-blaster.inc -SRCREV = "9f45eb23a8a3b2d1c08d08a6d68f206fe91ecf4c" +SRCREV = "1035ad7dffb270c40eec1bb3a654171a755fba98" From aea2129fe3513dd77232477515bfe6e360dbbe12 Mon Sep 17 00:00:00 2001 From: Andrei Gherzan Date: Thu, 7 Sep 2017 12:06:19 +0100 Subject: [PATCH 18/52] omxplayer: Update to current master HEAD Signed-off-by: Andrei Gherzan --- recipes-multimedia/omxplayer/omxplayer_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-multimedia/omxplayer/omxplayer_git.bb b/recipes-multimedia/omxplayer/omxplayer_git.bb index 0e0f9ba40..713dacfab 100644 --- a/recipes-multimedia/omxplayer/omxplayer_git.bb +++ b/recipes-multimedia/omxplayer/omxplayer_git.bb @@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" DEPENDS = "libpcre libav virtual/egl boost freetype dbus openssl samba libssh libomxil coreutils-native curl-native" PR = "r4" -SRCREV = "061425a5eabf6e9ee43229911c073a863d144038" +SRCREV = "b8ff59dccd9307f10dad71bec2525a95bd6c603b" SRC_URI = "git://github.com/popcornmix/omxplayer.git;protocol=git;branch=master \ file://0001-Remove-Makefile.include-which-includes-hardcoded.patch \ file://0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch \ From 91f59ae288d8ee6c37091952802e7924b97ecff5 Mon Sep 17 00:00:00 2001 From: Andrei Gherzan Date: Thu, 7 Sep 2017 12:06:30 +0100 Subject: [PATCH 19/52] userland: Update to current master HEAD Signed-off-by: Andrei Gherzan --- recipes-graphics/userland/userland_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-graphics/userland/userland_git.bb b/recipes-graphics/userland/userland_git.bb index 8ff14118e..1fc0717c2 100644 --- a/recipes-graphics/userland/userland_git.bb +++ b/recipes-graphics/userland/userland_git.bb @@ -16,7 +16,7 @@ COMPATIBLE_MACHINE = "^rpi$" SRCBRANCH = "master" SRCFORK = "raspberrypi" -SRCREV = "50d3cb5f4ee95a9513bb9f94d661947e9e6ac085" +SRCREV = "3caf0cd4a61f46b71eff49422c36e1cd2727ab45" SRC_URI = "\ git://github.com/${SRCFORK}/userland.git;protocol=git;branch=${SRCBRANCH} \ From 6abd752bd0dce56a4458377dcabfe7fe84843715 Mon Sep 17 00:00:00 2001 From: Yusuke Mitsuki Date: Wed, 6 Sep 2017 07:13:16 +0900 Subject: [PATCH 20/52] bluez5: add functions/variables to enabling bluetooth on another raspberrypi functions/variables in this bbappend implemented for only raspberrypi3. But these must be able to used to enabling bluetooth on another raspberrypi that has bluetooth feature such as raspberrypi0-wifi. The simple solution is a duplicating these but it is not good ideas for maintainance. Add functions/variables follows to simplify to enabling bluetooth on another raspberrypi that has bluetooth. - BCM_BT_SOURCES - enable_bcm_bluetooth() - BCM_BT_FIRMWARE - BCM_BT_SERVICE Signed-off-by: Yusuke Mitsuki --- recipes-connectivity/bluez5/bluez5_%.bbappend | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/recipes-connectivity/bluez5/bluez5_%.bbappend b/recipes-connectivity/bluez5/bluez5_%.bbappend index 956d77664..b2fbf22d4 100644 --- a/recipes-connectivity/bluez5/bluez5_%.bbappend +++ b/recipes-connectivity/bluez5/bluez5_%.bbappend @@ -1,6 +1,6 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" -SRC_URI_append_raspberrypi3 = " \ +BCM_BT_SOURCES = " \ file://BCM43430A1.hcd \ file://0001-bcm43xx-Add-bcm43xx-3wire-variant.patch \ file://0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch \ @@ -9,7 +9,7 @@ SRC_URI_append_raspberrypi3 = " \ file://brcm43438.service \ " -do_install_append_raspberrypi3() { +enable_bcm_bluetooth() { install -d ${D}/lib/firmware/brcm/ install -m 0644 ${WORKDIR}/BCM43430A1.hcd ${D}/lib/firmware/brcm/BCM43430A1.hcd @@ -19,8 +19,18 @@ do_install_append_raspberrypi3() { fi } -FILES_${PN}_append_raspberrypi3 = " \ +BCM_BT_FIRMWARE = " \ /lib/firmware/brcm/BCM43430A1.hcd \ " -SYSTEMD_SERVICE_${PN}_append_raspberrypi3 = " brcm43438.service" +BCM_BT_SERVICE = " brcm43438.service" + +SRC_URI_append_raspberrypi3 = " ${BCM_BT_SOURCES}" + +do_install_append_raspberrypi3() { + enable_bcm_bluetooth +} + +FILES_${PN}_append_raspberrypi3 = " ${BCM_BT_FIRMWARE}" + +SYSTEMD_SERVICE_${PN}_append_raspberrypi3 = " ${BCM_BT_SERVICE}" From a120ece0e4a12c8f77b32b76078003d2542187f0 Mon Sep 17 00:00:00 2001 From: Yusuke Mitsuki Date: Wed, 6 Sep 2017 07:14:42 +0900 Subject: [PATCH 21/52] bluez5: enable bluetooth on raspberrypi0-wifi Add functions/variable to enabling bluetooth on raspberrypi0-wifi. Signed-off-by: Yusuke Mitsuki --- recipes-connectivity/bluez5/bluez5_%.bbappend | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/recipes-connectivity/bluez5/bluez5_%.bbappend b/recipes-connectivity/bluez5/bluez5_%.bbappend index b2fbf22d4..03efd5c00 100644 --- a/recipes-connectivity/bluez5/bluez5_%.bbappend +++ b/recipes-connectivity/bluez5/bluez5_%.bbappend @@ -25,6 +25,7 @@ BCM_BT_FIRMWARE = " \ BCM_BT_SERVICE = " brcm43438.service" +# for raspberrypi3 SRC_URI_append_raspberrypi3 = " ${BCM_BT_SOURCES}" do_install_append_raspberrypi3() { @@ -34,3 +35,14 @@ do_install_append_raspberrypi3() { FILES_${PN}_append_raspberrypi3 = " ${BCM_BT_FIRMWARE}" SYSTEMD_SERVICE_${PN}_append_raspberrypi3 = " ${BCM_BT_SERVICE}" + +# for raspberrypi0-wifi +SRC_URI_append_raspberrypi0-wifi = " ${BCM_BT_SOURCES}" + +do_install_append_raspberrypi0-wifi() { + enable_bcm_bluetooth +} + +FILES_${PN}_append_raspberrypi0-wifi = " ${BCM_BT_FIRMWARE}" + +SYSTEMD_SERVICE_${PN}_append_raspberrypi0-wifi = " ${BCM_BT_SERVICE}" From a951629575f7936cb21ffc743f31b77a7d89f99b Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 17 Sep 2017 22:28:42 -0700 Subject: [PATCH 22/52] linux-raspberrypi_4.9.bb: Upgrade to 4.9.50 Signed-off-by: Khem Raj --- recipes-kernel/linux/linux-raspberrypi_4.9.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes-kernel/linux/linux-raspberrypi_4.9.bb b/recipes-kernel/linux/linux-raspberrypi_4.9.bb index ba17020f7..068965ffb 100644 --- a/recipes-kernel/linux/linux-raspberrypi_4.9.bb +++ b/recipes-kernel/linux/linux-raspberrypi_4.9.bb @@ -1,8 +1,8 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" -LINUX_VERSION ?= "4.9.41" +LINUX_VERSION ?= "4.9.50" -SRCREV = "4153f509b449f1c1c816cf124c314975c3daa824" +SRCREV = "46e2d4d1bd2c17e2f84dd90768321ee0bbaa6b8a" SRC_URI = "git://github.com/raspberrypi/linux.git;branch=rpi-4.9.y" require linux-raspberrypi.inc From 3fd57e95efafbeb78436e76544b6780bec37991a Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 17 Sep 2017 22:30:23 -0700 Subject: [PATCH 23/52] raspberrypi3-64: Use vc4-fkms-v3d overlay for rpi64 Use correct overlay for enabled vc4 accelaration This enable 3D accelaration over dispmanx on vc4/rpi64 Enable audio over HDMI Disable overscan to avoid graphics glitches Signed-off-by: Khem Raj --- conf/machine/raspberrypi3-64.conf | 1 + recipes-bsp/bootfiles/rpi-config_git.bb | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/conf/machine/raspberrypi3-64.conf b/conf/machine/raspberrypi3-64.conf index e3d11f20a..237684aaa 100644 --- a/conf/machine/raspberrypi3-64.conf +++ b/conf/machine/raspberrypi3-64.conf @@ -31,6 +31,7 @@ KERNEL_DEVICETREE = " \ overlays/pi3-disable-bt.dtbo \ overlays/pi3-miniuart-bt.dtbo \ overlays/vc4-kms-v3d.dtbo \ + overlays/vc4-fkms-v3d.dtbo \ " SERIAL_CONSOLE ?= "115200 ttyS0" diff --git a/recipes-bsp/bootfiles/rpi-config_git.bb b/recipes-bsp/bootfiles/rpi-config_git.bb index 38a123723..43530616e 100644 --- a/recipes-bsp/bootfiles/rpi-config_git.bb +++ b/recipes-bsp/bootfiles/rpi-config_git.bb @@ -21,7 +21,8 @@ PITFT28r="${@bb.utils.contains("MACHINE_FEATURES", "pitft28r", "1", "0", d)}" PITFT35r="${@bb.utils.contains("MACHINE_FEATURES", "pitft35r", "1", "0", d)}" VC4GRAPHICS="${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "1", "0", d)}" - +VC4DTBO_raspberrypi3-64 = "vc4-fkms-v3d" +VC4DTBO ?= "vc4-kms-v3d" inherit deploy do_deploy() { @@ -114,7 +115,7 @@ do_deploy() { # VC4 Graphics support if [ "${VC4GRAPHICS}" = "1" ]; then echo "# Enable VC4 Graphics" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt - echo "dtoverlay=vc4-kms-v3d,${VC4_CMA_SIZE}" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + echo "dtoverlay=${VC4DTBO},${VC4_CMA_SIZE}" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt fi # Waveshare "C" 1024x600 7" Rev2.1 IPS capacitive touch (http://www.waveshare.com/7inch-HDMI-LCD-C.htm) @@ -129,6 +130,15 @@ do_deploy() { } do_deploy_append_raspberrypi3-64() { + echo "# have a properly sized image" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + echo "disable_overscan=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + + echo "# for sound over HDMI" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + echo "hdmi_drive=2" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + + echo "# Enable audio (loads snd_bcm2835)" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + echo "dtparam=audio=on" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + # Device Tree support echo "# Load correct Device Tree for Aarch64" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo "device_tree=bcm2710-rpi-3-b.dtb" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt From bbca029e0259786747abf71b12b0db0e672d8ab4 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 17 Sep 2017 22:32:45 -0700 Subject: [PATCH 24/52] linux-raspberrypi: Build dtbs with dtbs make target for rpi64 OE currently builds dtb files with its own custom targets by specifying each dtb file as makefile target, this creates bad dtb for rpi64 bit. This patch calles 'make dtbs' at the end which regenerates the correct dtb files This makes the vc4 initialize properly on rpi64 Signed-off-by: Khem Raj --- recipes-kernel/linux/linux-raspberrypi.inc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index f336490db..e0b14e9af 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -38,6 +38,10 @@ python __anonymous () { d.setVar("KERNEL_DEVICETREE", kerneldt) } +do_compile_append_raspberrypi3-64() { + oe_runmake dtbs +} + do_install_prepend() { install -d ${D}/lib/firmware } From 5a2b34e56c228a2fa768a2b3feeebc9f4600b7c4 Mon Sep 17 00:00:00 2001 From: Andrea Galbusera Date: Thu, 14 Sep 2017 18:26:37 +0200 Subject: [PATCH 25/52] u-boot: drop now upstreamed patches oe-core now provides v2017.09 of u-boot which already merged both patches introduced by commit 94e2929f746f7e49a7870f7ea889dcbed05296c7 so we can drop them from meta-raspberrypi. Signed-off-by: Andrea Galbusera --- ...vert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch | 67 ----------------- ...0002-rpi-Enable-USB-keyboard-support.patch | 71 ------------------- recipes-bsp/u-boot/u-boot_%.bbappend | 7 -- 3 files changed, 145 deletions(-) delete mode 100644 recipes-bsp/u-boot/u-boot/0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch delete mode 100644 recipes-bsp/u-boot/u-boot/0002-rpi-Enable-USB-keyboard-support.patch diff --git a/recipes-bsp/u-boot/u-boot/0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch b/recipes-bsp/u-boot/u-boot/0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch deleted file mode 100644 index ffabe89ca..000000000 --- a/recipes-bsp/u-boot/u-boot/0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 46035d84eb75d54e524d068c29a42c4f562f757a Mon Sep 17 00:00:00 2001 -From: Paul Barker -Date: Wed, 2 Aug 2017 11:37:30 +0100 -Subject: [PATCH 1/2] Revert "dm: arm: rpi: Drop CONFIG_OF_EMBED" - -This reverts commit 25877d4e4c45451c5398aec3de50e0d5befe0e9f. - -Signed-off-by: Paul Barker -Upstream-status: Pending ---- - configs/rpi_2_defconfig | 1 + - configs/rpi_3_32b_defconfig | 1 + - configs/rpi_3_defconfig | 1 + - configs/rpi_defconfig | 1 + - 4 files changed, 4 insertions(+) - -diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig -index 862203f..6aa0532 100644 ---- a/configs/rpi_2_defconfig -+++ b/configs/rpi_2_defconfig -@@ -13,6 +13,7 @@ CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - # CONFIG_CMD_FPGA is not set - CONFIG_CMD_GPIO=y -+CONFIG_OF_EMBED=y - CONFIG_DM_MMC=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_BCM2835=y -diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig -index 95b1677..7396925 100644 ---- a/configs/rpi_3_32b_defconfig -+++ b/configs/rpi_3_32b_defconfig -@@ -14,6 +14,7 @@ CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - # CONFIG_CMD_FPGA is not set - CONFIG_CMD_GPIO=y -+CONFIG_OF_EMBED=y - CONFIG_DM_MMC=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_BCM2835=y -diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig -index f91b53d..1b1ee67 100644 ---- a/configs/rpi_3_defconfig -+++ b/configs/rpi_3_defconfig -@@ -14,6 +14,7 @@ CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - # CONFIG_CMD_FPGA is not set - CONFIG_CMD_GPIO=y -+CONFIG_OF_EMBED=y - CONFIG_DM_MMC=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_BCM2835=y -diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig -index e2d81ab..c7cf6e0 100644 ---- a/configs/rpi_defconfig -+++ b/configs/rpi_defconfig -@@ -13,6 +13,7 @@ CONFIG_CMD_MMC=y - CONFIG_CMD_USB=y - # CONFIG_CMD_FPGA is not set - CONFIG_CMD_GPIO=y -+CONFIG_OF_EMBED=y - CONFIG_DM_MMC=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_BCM2835=y --- -2.7.4 - diff --git a/recipes-bsp/u-boot/u-boot/0002-rpi-Enable-USB-keyboard-support.patch b/recipes-bsp/u-boot/u-boot/0002-rpi-Enable-USB-keyboard-support.patch deleted file mode 100644 index 675d7d932..000000000 --- a/recipes-bsp/u-boot/u-boot/0002-rpi-Enable-USB-keyboard-support.patch +++ /dev/null @@ -1,71 +0,0 @@ -From e4ddccdcf2360c104de502db140a2dbb90b63cfe Mon Sep 17 00:00:00 2001 -From: Simon Glass -Date: Thu, 24 Aug 2017 19:45:31 -0600 -Subject: [PATCH 2/2] rpi: Enable USB keyboard support - -This is currently disabled, so USB keyboards are not detected in U_Boot. -Enable this option to fix that. - -Backported to v2017.07. - -Signed-off-by: Simon Glass -Signed-off-by: Paul Barker -Upstream-status: Backport ---- - configs/rpi_2_defconfig | 1 + - configs/rpi_3_32b_defconfig | 1 + - configs/rpi_3_defconfig | 1 + - configs/rpi_defconfig | 1 + - 4 files changed, 4 insertions(+) - -diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig -index 6aa0532..9851836 100644 ---- a/configs/rpi_2_defconfig -+++ b/configs/rpi_2_defconfig -@@ -22,6 +22,7 @@ CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_USB_STORAGE=y - CONFIG_USB_KEYBOARD=y -+CONFIG_DM_KEYBOARD=y - CONFIG_DM_VIDEO=y - CONFIG_SYS_WHITE_ON_BLACK=y - CONFIG_CONSOLE_SCROLL_LINES=10 -diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig -index 7396925..c9bdcd7 100644 ---- a/configs/rpi_3_32b_defconfig -+++ b/configs/rpi_3_32b_defconfig -@@ -24,6 +24,7 @@ CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_USB_STORAGE=y - CONFIG_USB_KEYBOARD=y -+CONFIG_DM_KEYBOARD=y - CONFIG_DM_VIDEO=y - CONFIG_SYS_WHITE_ON_BLACK=y - CONFIG_CONSOLE_SCROLL_LINES=10 -diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig -index 1b1ee67..e9c9806 100644 ---- a/configs/rpi_3_defconfig -+++ b/configs/rpi_3_defconfig -@@ -24,6 +24,7 @@ CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_USB_STORAGE=y - CONFIG_USB_KEYBOARD=y -+CONFIG_DM_KEYBOARD=y - CONFIG_DM_VIDEO=y - CONFIG_SYS_WHITE_ON_BLACK=y - CONFIG_CONSOLE_SCROLL_LINES=10 -diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig -index c7cf6e0..59d8c58 100644 ---- a/configs/rpi_defconfig -+++ b/configs/rpi_defconfig -@@ -22,6 +22,7 @@ CONFIG_USB=y - CONFIG_DM_USB=y - CONFIG_USB_STORAGE=y - CONFIG_USB_KEYBOARD=y -+CONFIG_DM_KEYBOARD=y - CONFIG_DM_VIDEO=y - CONFIG_SYS_WHITE_ON_BLACK=y - CONFIG_CONSOLE_SCROLL_LINES=10 --- -2.7.4 - diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend b/recipes-bsp/u-boot/u-boot_%.bbappend index 8d0a53133..37816668c 100644 --- a/recipes-bsp/u-boot/u-boot_%.bbappend +++ b/recipes-bsp/u-boot/u-boot_%.bbappend @@ -1,8 +1 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/u-boot:" - -SRC_URI_append_rpi = " \ - file://0001-Revert-dm-arm-rpi-Drop-CONFIG_OF_EMBED.patch \ - file://0002-rpi-Enable-USB-keyboard-support.patch \ - " - RDEPENDS_${PN}_append_rpi = " rpi-u-boot-scr" From d31377b81a9ca7e9e70f334da68c2bdb437380fe Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 17 Sep 2017 22:28:42 -0700 Subject: [PATCH 26/52] linux-raspberrypi_4.9.bb: Upgrade to 4.9.50 Signed-off-by: Khem Raj --- recipes-kernel/linux/linux-raspberrypi_4.9.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes-kernel/linux/linux-raspberrypi_4.9.bb b/recipes-kernel/linux/linux-raspberrypi_4.9.bb index ba17020f7..068965ffb 100644 --- a/recipes-kernel/linux/linux-raspberrypi_4.9.bb +++ b/recipes-kernel/linux/linux-raspberrypi_4.9.bb @@ -1,8 +1,8 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" -LINUX_VERSION ?= "4.9.41" +LINUX_VERSION ?= "4.9.50" -SRCREV = "4153f509b449f1c1c816cf124c314975c3daa824" +SRCREV = "46e2d4d1bd2c17e2f84dd90768321ee0bbaa6b8a" SRC_URI = "git://github.com/raspberrypi/linux.git;branch=rpi-4.9.y" require linux-raspberrypi.inc From bb51049ebe761ac2806fa0fa492c586976632011 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 17 Sep 2017 22:30:23 -0700 Subject: [PATCH 27/52] raspberrypi3-64: Use vc4-fkms-v3d overlay for rpi64 Use correct overlay for enabled vc4 accelaration This enable 3D accelaration over dispmanx on vc4/rpi64 Enable audio over HDMI Disable overscan to avoid graphics glitches Signed-off-by: Khem Raj --- conf/machine/raspberrypi3-64.conf | 1 + recipes-bsp/bootfiles/rpi-config_git.bb | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/conf/machine/raspberrypi3-64.conf b/conf/machine/raspberrypi3-64.conf index e3d11f20a..237684aaa 100644 --- a/conf/machine/raspberrypi3-64.conf +++ b/conf/machine/raspberrypi3-64.conf @@ -31,6 +31,7 @@ KERNEL_DEVICETREE = " \ overlays/pi3-disable-bt.dtbo \ overlays/pi3-miniuart-bt.dtbo \ overlays/vc4-kms-v3d.dtbo \ + overlays/vc4-fkms-v3d.dtbo \ " SERIAL_CONSOLE ?= "115200 ttyS0" diff --git a/recipes-bsp/bootfiles/rpi-config_git.bb b/recipes-bsp/bootfiles/rpi-config_git.bb index 38a123723..43530616e 100644 --- a/recipes-bsp/bootfiles/rpi-config_git.bb +++ b/recipes-bsp/bootfiles/rpi-config_git.bb @@ -21,7 +21,8 @@ PITFT28r="${@bb.utils.contains("MACHINE_FEATURES", "pitft28r", "1", "0", d)}" PITFT35r="${@bb.utils.contains("MACHINE_FEATURES", "pitft35r", "1", "0", d)}" VC4GRAPHICS="${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "1", "0", d)}" - +VC4DTBO_raspberrypi3-64 = "vc4-fkms-v3d" +VC4DTBO ?= "vc4-kms-v3d" inherit deploy do_deploy() { @@ -114,7 +115,7 @@ do_deploy() { # VC4 Graphics support if [ "${VC4GRAPHICS}" = "1" ]; then echo "# Enable VC4 Graphics" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt - echo "dtoverlay=vc4-kms-v3d,${VC4_CMA_SIZE}" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + echo "dtoverlay=${VC4DTBO},${VC4_CMA_SIZE}" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt fi # Waveshare "C" 1024x600 7" Rev2.1 IPS capacitive touch (http://www.waveshare.com/7inch-HDMI-LCD-C.htm) @@ -129,6 +130,15 @@ do_deploy() { } do_deploy_append_raspberrypi3-64() { + echo "# have a properly sized image" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + echo "disable_overscan=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + + echo "# for sound over HDMI" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + echo "hdmi_drive=2" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + + echo "# Enable audio (loads snd_bcm2835)" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + echo "dtparam=audio=on" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt + # Device Tree support echo "# Load correct Device Tree for Aarch64" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo "device_tree=bcm2710-rpi-3-b.dtb" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt From 6c4de0b5fe44b8e661f1391ee8540a7f04d75315 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 17 Sep 2017 22:32:45 -0700 Subject: [PATCH 28/52] linux-raspberrypi: Build dtbs with dtbs make target for rpi64 OE currently builds dtb files with its own custom targets by specifying each dtb file as makefile target, this creates bad dtb for rpi64 bit. This patch calles 'make dtbs' at the end which regenerates the correct dtb files This makes the vc4 initialize properly on rpi64 Signed-off-by: Khem Raj --- recipes-kernel/linux/linux-raspberrypi.inc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index f336490db..b348a9da8 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -38,6 +38,11 @@ python __anonymous () { d.setVar("KERNEL_DEVICETREE", kerneldt) } +do_compile_append_raspberrypi3-64() { + cc_extra=$(get_cc_option) + oe_runmake dtbs CC="${KERNEL_CC} $cc_extra " LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} +} + do_install_prepend() { install -d ${D}/lib/firmware } From f2896b0e5c0ae5dc4a523e569f33bfa6d2f55f86 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 18 Sep 2017 12:25:46 -0700 Subject: [PATCH 29/52] xserver-xf86-config: Disable glamor for the modesetting driver on pi64 Fixes a xorg server crash with musl see details https://github.com/voidlinux/void-packages/issues/6091 Signed-off-by: Khem Raj --- .../xserver-xf86-config/rpi/xorg.conf.d/10-noglamor.conf | 6 ++++++ .../xorg-xserver/xserver-xf86-config_0.1.bbappend | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-noglamor.conf diff --git a/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-noglamor.conf b/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-noglamor.conf new file mode 100644 index 000000000..1a562ea03 --- /dev/null +++ b/recipes-graphics/xorg-xserver/xserver-xf86-config/rpi/xorg.conf.d/10-noglamor.conf @@ -0,0 +1,6 @@ +# +Section "Device" + Identifier "modeset" + Driver "modesetting" + Option "AccelMethod" "None" +EndSection diff --git a/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend b/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend index b361eef13..7902f20ed 100644 --- a/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend +++ b/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend @@ -4,7 +4,9 @@ SRC_URI_append_rpi = " \ file://xorg.conf.d/98-pitft.conf \ file://xorg.conf.d/99-calibration.conf \ " - +SRC_URI_append_libc-musl_raspberrypi3-64 = " \ + file://xorg.conf.d/10-noglamor.conf \ +" do_install_append_rpi () { PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}" if [ "${PITFT}" = "1" ]; then @@ -13,5 +15,8 @@ do_install_append_rpi () { install -m 0644 ${WORKDIR}/xorg.conf.d/99-calibration.conf ${D}/${sysconfdir}/X11/xorg.conf.d/ fi } - +do_install_append_libc-musl_raspberrypi3-64 () { + install -d ${D}/${sysconfdir}/X11/xorg.conf.d/ + install -m 0644 ${WORKDIR}/xorg.conf.d/10-noglamor.conf ${D}/${sysconfdir}/X11/xorg.conf.d/ +} FILES_${PN}_rpi += "${sysconfdir}/X11/xorg.conf ${sysconfdir}/X11/xorg.conf.d/*" From acd58692356df2bbdc3aa1d6b15f44c104ad3b45 Mon Sep 17 00:00:00 2001 From: Andrei Gherzan Date: Thu, 14 Sep 2017 11:53:44 +0100 Subject: [PATCH 30/52] linux-firmware: Update brcmfmac43430 to 7.45.41.46 The version of this firmware provided by linux-firmware is 7.45.41.26. This version seems to have connectivity issues when bonding interfaces. Raspbian included an updated version (7.45.41.46) which tested, proved to fix this problem (see https://github.com/resin-os/meta-resin/issues/812). The version Raspbian is providing is not yet in linux-firmware as they have it directly from Cypress (see https://github.com/RPi-Distro/repo/issues/88). Besides the issue described above, it fixes various other issues including a broadpwn fix. Hopefully this version, or a newer one, will end up in upstream soon. In order to catch when that happens and stop overwriting this firmware, a check is added in the racipe based on the md5sum of the current shipped firmware. In terms of ditribution license, we got an informal one in the github thread mentioned above. Signed-off-by: Andrei Gherzan --- .../files/brcmfmac43430-sdio.bin | Bin 0 -> 372398 bytes .../files/brcmfmac43430-sdio.txt | 25 +++++++----------- .../linux-firmware/linux-firmware_%.bbappend | 22 ++++++++++++--- 3 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin diff --git a/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin b/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin new file mode 100644 index 0000000000000000000000000000000000000000..6b955da80b8cc920464f44d26ea3216c22349f1a GIT binary patch literal 372398 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 z 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 z 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

QNTy3UjY{F2`qOowjP-5ji3SZRDAA3E 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

    ;u}R@pXcYxw5p&S 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 B(G>sy literal 0 HcmV?d00001 diff --git a/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt b/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt index ea4f648a1..3d917a7fd 100644 --- a/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt +++ b/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt @@ -1,19 +1,20 @@ -# NVRAM file for BCM943430WLPTH +# NVRAM file for BCM943430WLSELG # 2.4 GHz, 20 MHz BW mode # The following parameter values are just placeholders, need to be updated. manfid=0x2d0 -prodid=0x0727 +prodid=0x0726 vendid=0x14e4 devid=0x43e2 -boardtype=0x0727 -boardrev=0x1101 +boardtype=0x0726 +boardrev=0x1202 boardnum=22 macaddr=00:90:4c:c5:12:38 sromrev=11 boardflags=0x00404201 boardflags3=0x08000000 xtalfreq=37400 +#xtalfreq=19200 nocrc=1 ag0=255 aa2g=1 @@ -21,6 +22,7 @@ ccode=ALL pa0itssit=0x20 extpagain2g=0 + #PA parameters for 2.4GHz, measured at CHIP OUTPUT pa2ga0=-168,7161,-820 AvVmid_c0=0x0,0xc8 @@ -40,15 +42,9 @@ ofdmdigfilttypebe=18 # PAPD mode: papdmode=1 papdvalidtest=1 -pacalidx2g=42 -papdepsoffset=-22 -papdendidx=58 - -# LTECX flags -ltecxmux=0 -ltecxpadnum=0x0102 -ltecxfnsel=0x44 -ltecxgcigpio=0x01 +pacalidx2g=32 +papdepsoffset=-36 +papdendidx=61 il0macaddr=00:90:4c:c5:12:38 wl0id=0x431b @@ -61,6 +57,3 @@ muxenab=0x1 #VCO freq 326.4MHz spurconfig=0x3 - -edonthd20l=-75 -edoffthd20ul=-80 diff --git a/recipes-kernel/linux-firmware/linux-firmware_%.bbappend b/recipes-kernel/linux-firmware/linux-firmware_%.bbappend index 252da22a4..565b73526 100644 --- a/recipes-kernel/linux-firmware/linux-firmware_%.bbappend +++ b/recipes-kernel/linux-firmware/linux-firmware_%.bbappend @@ -1,12 +1,26 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/files:" -SRC_URI += "file://brcmfmac43430-sdio.txt" +SRC_URI += " \ + file://brcmfmac43430-sdio.bin \ + file://brcmfmac43430-sdio.txt \ + " do_install_append() { - install -D -m 0644 ${WORKDIR}/brcmfmac43430-sdio.txt ${D}/lib/firmware/brcm/brcmfmac43430-sdio.txt + # Overwrite v7.45.41.26 by the one we currently provide in this layer + # (v7.45.41.46) + local _firmware="brcmfmac43430-sdio.bin" + local _oldmd5=9258986488eca9fe5343b0d6fe040f8e + if [ "$(md5sum ${D}/lib/firmware/brcm/$_firmware | awk '{print $1}')" != "$_oldmd5" ]; then + _firmware="" + bbwarn "linux-firmware stopped providing brcmfmac43430 v7.45.41.26." + else + _firmware="${WORKDIR}/$_firmware" + fi + + mkdir -p ${D}/lib/firmware/brcm + install -m 0644 $_firmware ${WORKDIR}/brcmfmac43430-sdio.txt ${D}/lib/firmware/brcm } FILES_${PN}-bcm43430 += " \ - /lib/firmware/brcm/brcmfmac43430-sdio.txt \ + /lib/firmware/brcm/brcmfmac43430-sdio.txt \ " - From b00d914e78c8f4abfaff29deda5a72689230fa5f Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Thu, 7 Sep 2017 20:10:40 +0000 Subject: [PATCH 31/52] omxplayer: Fix build issues * Update the recipe and patch the Makefile to not require internet access during do_compile. Unfortunately, the upstream Makefile wants to access a web service hosted on Heroku and to "git clone" ffmpeg with no fixed commit hash. * Patch Makefile.ffmpeg to avoid a potential race condition between the configure & compile stages. Signed-off-by: Paul Barker --- ...ire-internet-connection-during-build.patch | 56 +++++++++++++++++++ ...peg-configure-compile-race-condition.patch | 39 +++++++++++++ recipes-multimedia/omxplayer/omxplayer_git.bb | 9 ++- 3 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 recipes-multimedia/omxplayer/omxplayer/0005-Don-t-require-internet-connection-during-build.patch create mode 100644 recipes-multimedia/omxplayer/omxplayer/0006-Prevent-ffmpeg-configure-compile-race-condition.patch diff --git a/recipes-multimedia/omxplayer/omxplayer/0005-Don-t-require-internet-connection-during-build.patch b/recipes-multimedia/omxplayer/omxplayer/0005-Don-t-require-internet-connection-during-build.patch new file mode 100644 index 000000000..4f56ad2a5 --- /dev/null +++ b/recipes-multimedia/omxplayer/omxplayer/0005-Don-t-require-internet-connection-during-build.patch @@ -0,0 +1,56 @@ +From 97cb9405f281f54d4083f3126d441c8b44eafb89 Mon Sep 17 00:00:00 2001 +From: Paul Barker +Date: Thu, 7 Sep 2017 19:14:20 +0000 +Subject: [PATCH] Don't require internet connection during build + +The following issues break offline builds: + +* Building the man page uses a web service hosted on heroku. + +* Makefile.ffmpeg explicitly does a "git clone" from the internet. + +Signed-off-by: Paul Barker +Upstream-status: Inappropriate +--- + Makefile | 6 ++---- + Makefile.ffmpeg | 2 +- + 2 files changed, 3 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index 60501b1..6471f0f 100644 +--- a/Makefile ++++ b/Makefile +@@ -79,14 +79,12 @@ ffmpeg: + make -f Makefile.ffmpeg + make -f Makefile.ffmpeg install + +-dist: omxplayer.bin omxplayer.1 ++dist: omxplayer.bin + mkdir -p $(DIST)/usr/lib/omxplayer + mkdir -p $(DIST)/usr/bin + mkdir -p $(DIST)/usr/share/doc/omxplayer +- mkdir -p $(DIST)/usr/share/man/man1 + cp omxplayer omxplayer.bin $(DIST)/usr/bin + cp COPYING $(DIST)/usr/share/doc/omxplayer + cp README.md $(DIST)/usr/share/doc/omxplayer/README +- cp omxplayer.1 $(DIST)/usr/share/man/man1 + cp -P ffmpeg_compiled/usr/lib/*.so* $(DIST)/usr/lib/omxplayer/ +- tar -czf omxplayer-dist.tar.gz $(DIST) +\ No newline at end of file ++ tar -czf omxplayer-dist.tar.gz $(DIST) +diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg +index 22d495c..8651724 100644 +--- a/Makefile.ffmpeg ++++ b/Makefile.ffmpeg +@@ -6,7 +6,7 @@ FFMPEG_EXTRA_CFLAGS?=-mfpu=vfp -mfloat-abi=$(FLOAT) -mno-apcs-stack-check -mstru + WORK=$(PWD) + + .PHONY : all +-all: checkout configure compile ++all: configure compile + + .PHONY : copy + copy: +-- +2.7.4 + diff --git a/recipes-multimedia/omxplayer/omxplayer/0006-Prevent-ffmpeg-configure-compile-race-condition.patch b/recipes-multimedia/omxplayer/omxplayer/0006-Prevent-ffmpeg-configure-compile-race-condition.patch new file mode 100644 index 000000000..a73ed9aab --- /dev/null +++ b/recipes-multimedia/omxplayer/omxplayer/0006-Prevent-ffmpeg-configure-compile-race-condition.patch @@ -0,0 +1,39 @@ +From 4a13419e3805b541fc58e57f1f27c4a388609ef5 Mon Sep 17 00:00:00 2001 +From: Paul Barker +Date: Thu, 7 Sep 2017 20:02:15 +0000 +Subject: [PATCH] Prevent ffmpeg configure/compile race condition + +Additional dependency information is needed in Makefile.ffmpeg to ensure that +the configure stage is finished before the compile stage starts. + +Signed-off-by: Paul Barker +Upstream-status: Inappropriate +--- + Makefile.ffmpeg | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg +index 8651724..619c49a 100644 +--- a/Makefile.ffmpeg ++++ b/Makefile.ffmpeg +@@ -6,7 +6,7 @@ FFMPEG_EXTRA_CFLAGS?=-mfpu=vfp -mfloat-abi=$(FLOAT) -mno-apcs-stack-check -mstru + WORK=$(PWD) + + .PHONY : all +-all: configure compile ++all: compile + + .PHONY : copy + copy: +@@ -14,7 +14,7 @@ copy: + $(HOST)-strip *.so* + + .PHONY : compile +-compile: ++compile: configure + +$(MAKE) -C ffmpeg + + .PHONY : configure +-- +2.7.4 + diff --git a/recipes-multimedia/omxplayer/omxplayer_git.bb b/recipes-multimedia/omxplayer/omxplayer_git.bb index 713dacfab..8079a4025 100644 --- a/recipes-multimedia/omxplayer/omxplayer_git.bb +++ b/recipes-multimedia/omxplayer/omxplayer_git.bb @@ -10,14 +10,18 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" DEPENDS = "libpcre libav virtual/egl boost freetype dbus openssl samba libssh libomxil coreutils-native curl-native" PR = "r4" -SRCREV = "b8ff59dccd9307f10dad71bec2525a95bd6c603b" +SRCREV_default = "b8ff59dccd9307f10dad71bec2525a95bd6c603b" +SRCREV_ffmpeg = "afa34cb36edca0ff809b7e58474bbce12271ecba" SRC_URI = "git://github.com/popcornmix/omxplayer.git;protocol=git;branch=master \ + git://source.ffmpeg.org/ffmpeg;branch=release/3.1;protocol=git;depth=1;name=ffmpeg;destsuffix=git/ffmpeg \ file://0001-Remove-Makefile.include-which-includes-hardcoded.patch \ file://0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch \ file://0003-Remove-strip-step-in-Makefile.patch \ file://0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch \ file://fix-tar-command-with-DIST.patch \ file://use-native-pkg-config.patch \ + file://0005-Don-t-require-internet-connection-during-build.patch \ + file://0006-Prevent-ffmpeg-configure-compile-race-condition.patch \ " S = "${WORKDIR}/git" @@ -53,7 +57,8 @@ do_compile() { # Needed for compiler test in ffmpeg's configure mkdir -p tmp - oe_runmake ffmpeg + oe_runmake -f Makefile.ffmpeg + oe_runmake -f Makefile.ffmpeg install oe_runmake } From 8311d16e5999566d01e6931003f858d979a6e46c Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 09:29:31 +0000 Subject: [PATCH 32/52] linux-raspberrypi: Drop unnecessary code * The kerneltype variable is not used anywhere after being set. * The manipulation of KERNEL_DEVICETREE is effectively a no-op, we read the current value in get_dts() and store this back into the same variable. Signed-off-by: Paul Barker --- classes/linux-raspberrypi-base.bbclass | 19 +------------------ classes/sdcard_image-rpi.bbclass | 2 +- recipes-kernel/linux/linux-raspberrypi.inc | 8 -------- 3 files changed, 2 insertions(+), 27 deletions(-) diff --git a/classes/linux-raspberrypi-base.bbclass b/classes/linux-raspberrypi-base.bbclass index e925d4e91..0a21cc92e 100644 --- a/classes/linux-raspberrypi-base.bbclass +++ b/classes/linux-raspberrypi-base.bbclass @@ -1,24 +1,7 @@ inherit linux-kernel-base -def get_dts(d, ver=None): - import re - - staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR") - dts = d.getVar("KERNEL_DEVICETREE") - - # d.getVar() might return 'None' as a normal string - # leading to 'is None' check isn't enough. - # TODO: Investigate if this is a bug in bitbake - if ver is None or ver == "None": - ''' if 'ver' isn't set try to grab the kernel version - from the kernel staging ''' - ver = get_kernelversion_file(staging_dir) - - return dts - - def split_overlays(d, out, ver=None): - dts = get_dts(d, ver) + dts = d.getVar("KERNEL_DEVICETREE") if out: overlays = oe.utils.str_filter_out('\S+\-overlay\.dtb$', dts, d) overlays = oe.utils.str_filter_out('\S+\.dtbo$', overlays, d) diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass index 42753d686..8099f778d 100644 --- a/classes/sdcard_image-rpi.bbclass +++ b/classes/sdcard_image-rpi.bbclass @@ -86,7 +86,7 @@ IMAGE_CMD_rpi-sdimg () { echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS $ROOTFS_SIZE KiB" # Check if we are building with device tree support - DTS="${@get_dts(d)}" + DTS="${KERNEL_DEVICETREE}" # Initialize sdcard image file dd if=/dev/zero of=${SDIMG} bs=1024 count=0 seek=${SDIMG_SIZE} diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index b348a9da8..8aa9577b0 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -30,14 +30,6 @@ UDEV_GE_141 ?= "1" KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains("MACHINE_FEATURES", "pitft28r", "stmpe-ts", "", d)}" -# Set programmatically some variables during recipe parsing -# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions -python __anonymous () { - kerneltype = d.getVar('KERNEL_IMAGETYPE') - kerneldt = get_dts(d, d.getVar('LINUX_VERSION')) - d.setVar("KERNEL_DEVICETREE", kerneldt) -} - do_compile_append_raspberrypi3-64() { cc_extra=$(get_cc_option) oe_runmake dtbs CC="${KERNEL_CC} $cc_extra " LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} From cbd2412fb4fd38febdd2e71c6e8e9d7f35e94419 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 09:35:48 +0000 Subject: [PATCH 33/52] linux-raspberrypi-base.bbclass: Drop The only remaining function in linux-raspberrypi-base was split_overlays() which is used in the sdcard_image-rpi class. So we can move this function over and drop the now-empty linux-raspberrypi-base class. Signed-off-by: Paul Barker --- classes/linux-raspberrypi-base.bbclass | 12 ------------ classes/sdcard_image-rpi.bbclass | 12 +++++++++++- recipes-kernel/linux/linux-raspberrypi.inc | 1 - 3 files changed, 11 insertions(+), 14 deletions(-) delete mode 100644 classes/linux-raspberrypi-base.bbclass diff --git a/classes/linux-raspberrypi-base.bbclass b/classes/linux-raspberrypi-base.bbclass deleted file mode 100644 index 0a21cc92e..000000000 --- a/classes/linux-raspberrypi-base.bbclass +++ /dev/null @@ -1,12 +0,0 @@ -inherit linux-kernel-base - -def split_overlays(d, out, ver=None): - dts = d.getVar("KERNEL_DEVICETREE") - if out: - overlays = oe.utils.str_filter_out('\S+\-overlay\.dtb$', dts, d) - overlays = oe.utils.str_filter_out('\S+\.dtbo$', overlays, d) - else: - overlays = oe.utils.str_filter('\S+\-overlay\.dtb$', dts, d) + \ - " " + oe.utils.str_filter('\S+\.dtbo$', dts, d) - - return overlays diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass index 8099f778d..6d34a2901 100644 --- a/classes/sdcard_image-rpi.bbclass +++ b/classes/sdcard_image-rpi.bbclass @@ -1,5 +1,4 @@ inherit image_types -inherit linux-raspberrypi-base # # Create an image that can by written onto a SD card using dd. @@ -76,6 +75,17 @@ FATPAYLOAD ?= "" SDIMG_VFAT = "${IMAGE_NAME}.vfat" SDIMG_LINK_VFAT = "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.vfat" +def split_overlays(d, out, ver=None): + dts = d.getVar("KERNEL_DEVICETREE") + if out: + overlays = oe.utils.str_filter_out('\S+\-overlay\.dtb$', dts, d) + overlays = oe.utils.str_filter_out('\S+\.dtbo$', overlays, d) + else: + overlays = oe.utils.str_filter('\S+\-overlay\.dtb$', dts, d) + \ + " " + oe.utils.str_filter('\S+\.dtbo$', dts, d) + + return overlays + IMAGE_CMD_rpi-sdimg () { # Align partitions diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index 8aa9577b0..154e4da8e 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -1,5 +1,4 @@ require linux-rpi.inc -inherit linux-raspberrypi-base DESCRIPTION = "Linux Kernel for Raspberry Pi" SECTION = "kernel" From 46f78e37e30b5686631b71c551402f5087274610 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 09:45:24 +0000 Subject: [PATCH 34/52] linux-raspberrypi: Drop ineffective code The code to determine if we need to depend on lzop-native will fail as the local defconfig file no longer exists. Signed-off-by: Paul Barker --- recipes-kernel/linux/linux-rpi.inc | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/recipes-kernel/linux/linux-rpi.inc b/recipes-kernel/linux/linux-rpi.inc index 00c97f61b..715cd0611 100644 --- a/recipes-kernel/linux/linux-rpi.inc +++ b/recipes-kernel/linux/linux-rpi.inc @@ -129,22 +129,3 @@ do_configure_prepend() { yes '' | oe_runmake oldconfig } - -# Automatically depend on lzop-native if CONFIG_KERNEL_LZO is enabled -python () { - try: - defconfig = bb.fetch2.localpath('file://defconfig', d) - except bb.fetch2.FetchError: - return - - try: - configfile = open(defconfig) - except IOError: - return - - if 'CONFIG_KERNEL_LZO=y\n' in configfile.readlines(): - depends = d.getVar('DEPENDS', False) - d.setVar('DEPENDS', depends + ' lzop-native') - - configfile.close() -} From e7bac0bed5797342ac52431cf9678981bfd8decf Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 09:49:46 +0000 Subject: [PATCH 35/52] linux-raspberrypi: Merge inc files There is no need to have 2 separate inc files any more and the existing code has several duplications. Signed-off-by: Paul Barker --- recipes-kernel/linux/linux-raspberrypi.inc | 126 +++++++++++++++++++- recipes-kernel/linux/linux-rpi.inc | 131 --------------------- 2 files changed, 124 insertions(+), 133 deletions(-) delete mode 100644 recipes-kernel/linux/linux-rpi.inc diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index 154e4da8e..9f401d0f3 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -1,5 +1,3 @@ -require linux-rpi.inc - DESCRIPTION = "Linux Kernel for Raspberry Pi" SECTION = "kernel" LICENSE = "GPLv2" @@ -10,6 +8,9 @@ COMPATIBLE_MACHINE = "^rpi$" PE = "1" PV = "${LINUX_VERSION}+git${SRCPV}" +inherit kernel siteinfo +require recipes-kernel/linux/linux-yocto.inc + KCONFIG_MODE = "--alldefconfig" KBUILD_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig" KBUILD_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig" @@ -25,10 +26,131 @@ CMDLINE_append = ' ${@base_conditional("ENABLE_KGDB", "1", "kgdboc=serial0,11520 # Disable rpi logo on boot CMDLINE_append += ' ${@base_conditional("DISABLE_RPI_BOOT_LOGO", "1", "logo.nologo", "", d)}' +# You can define CMDLINE_DEBUG as "debug" in your local.conf or distro.conf +# to enable kernel debugging. +CMDLINE_DEBUG ?= "" +CMDLINE_append = " ${CMDLINE_DEBUG}" + +# Quirk for udev greater or equal 141 UDEV_GE_141 ?= "1" +# Enable OABI compat for people stuck with obsolete userspace +ARM_KEEP_OABI ?= "1" + +KERNEL_INITRAMFS ?= '${@base_conditional("INITRAMFS_IMAGE_BUNDLE", "1", "1", "", d)}' + KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains("MACHINE_FEATURES", "pitft28r", "stmpe-ts", "", d)}" +# Set a variable in .configure +# $1 - Configure variable to be set +# $2 - value [n/y/value] +kernel_configure_variable() { + # Remove the config + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;" + if test "$2" = "n" + then + echo "# CONFIG_$1 is not set" >> ${B}/.config + else + echo "CONFIG_$1=$2" >> ${B}/.config + fi +} + +do_configure_prepend() { + mv -f ${B}/.config ${B}/.config.patched + CONF_SED_SCRIPT="" + + # oabi / eabi support + kernel_configure_variable AEABI y + if [ "${ARM_KEEP_OABI}" = "1" ] ; then + kernel_configure_variable OABI_COMPAT y + else + kernel_configure_variable OABI_COMPAT n + fi + + # Set cmdline + kernel_configure_variable CMDLINE "\"${CMDLINE}\"" + + # Localversion + kernel_configure_variable LOCALVERSION "\"\"" + kernel_configure_variable LOCALVERSION_AUTO n + + # Udev quirks + # Newer versions of udev mandate that sysfs doesn't have deprecated entries + if [ "${UDEV_GE_141}" = "1" ] ; then + kernel_configure_variable SYSFS_DEPRECATED n + kernel_configure_variable SYSFS_DEPRECATED_V2 n + kernel_configure_variable HOTPLUG y + kernel_configure_variable UEVENT_HELPER_PATH "\"\"" + kernel_configure_variable UNIX y + kernel_configure_variable SYSFS y + kernel_configure_variable PROC_FS y + kernel_configure_variable TMPFS y + kernel_configure_variable INOTIFY_USER y + kernel_configure_variable SIGNALFD y + kernel_configure_variable TMPFS_POSIX_ACL y + kernel_configure_variable BLK_DEV_BSG y + kernel_configure_variable DEVTMPFS y + kernel_configure_variable DEVTMPFS_MOUNT y + fi + + # Newer inits like systemd need cgroup support + if [ "${KERNEL_ENABLE_CGROUPS}" = "1" ] ; then + kernel_configure_variable CGROUP_SCHED y + kernel_configure_variable CGROUPS y + kernel_configure_variable CGROUP_NS y + kernel_configure_variable CGROUP_FREEZER y + kernel_configure_variable CGROUP_DEVICE y + kernel_configure_variable CPUSETS y + kernel_configure_variable PROC_PID_CPUSET y + kernel_configure_variable CGROUP_CPUACCT y + kernel_configure_variable RESOURCE_COUNTERS y + fi + + # root-over-nfs-over-usb-eth support. Limited, but should cover some cases + # Enable this by setting a proper CMDLINE_NFSROOT_USB. + if [ ! -z "${CMDLINE_NFSROOT_USB}" ]; then + oenote "Configuring the kernel for root-over-nfs-over-usb-eth with CMDLINE ${CMDLINE_NFSROOT_USB}" + kernel_configure_variable INET y + kernel_configure_variable IP_PNP y + kernel_configure_variable USB_GADGET y + kernel_configure_variable USB_GADGET_SELECTED y + kernel_configure_variable USB_ETH y + kernel_configure_variable NFS_FS y + kernel_configure_variable ROOT_NFS y + kernel_configure_variable ROOT_NFS y + kernel_configure_variable CMDLINE "\"${CMDLINE_NFSROOT_USB}\"" + fi + if [ ! -z "${KERNEL_INITRAMFS}" ]; then + kernel_configure_variable BLK_DEV_INITRD y + kernel_configure_variable INITRAMFS_SOURCE "" + kernel_configure_variable RD_GZIP y + kernel_configure_variable OVERLAY_FS y + kernel_configure_variable SQUASHFS y + kernel_configure_variable UBIFS_FS y + fi + # Activate CONFIG_LEGACY_PTYS + kernel_configure_variable LEGACY_PTYS y + # this module is built externally via drbd-utils + kernel_configure_variable BLK_DEV_DRBD n + + # Activate the configuration options for VC4 + VC4GRAPHICS="${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "1", "0", d)}" + if [ ${VC4GRAPHICS} = "1" ]; then + kernel_configure_variable I2C_BCM2835 y + kernel_configure_variable DRM y + kernel_configure_variable DRM_FBDEV_EMULATION y + kernel_configure_variable DRM_VC4 y + kernel_configure_variable FB_BCM2708 n + fi + + # Keep this the last line + # Remove all modified configs and add the rest to .config + sed -e "${CONF_SED_SCRIPT}" < '${B}/.config.patched' >> '${B}/.config' + rm -f ${B}/.config.patched + + yes '' | oe_runmake oldconfig +} + do_compile_append_raspberrypi3-64() { cc_extra=$(get_cc_option) oe_runmake dtbs CC="${KERNEL_CC} $cc_extra " LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} diff --git a/recipes-kernel/linux/linux-rpi.inc b/recipes-kernel/linux/linux-rpi.inc deleted file mode 100644 index 715cd0611..000000000 --- a/recipes-kernel/linux/linux-rpi.inc +++ /dev/null @@ -1,131 +0,0 @@ -DESCRIPTION = "Linux Kernel" -SECTION = "kernel" -LICENSE = "GPLv2" - -LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" - -inherit kernel siteinfo -require recipes-kernel/linux/linux-yocto.inc - -# Enable OABI compat for people stuck with obsolete userspace -ARM_KEEP_OABI ?= "1" - -# Quirk for udev greater or equal 141 -UDEV_GE_141 ?= "1" - -# You can define CMDLINE_DEBUG as "debug" in your local.conf or distro.conf -# to enable kernel debugging. -CMDLINE_DEBUG ?= "" -CMDLINE_append = " ${CMDLINE_DEBUG}" - -KERNEL_INITRAMFS ?= '${@base_conditional("INITRAMFS_IMAGE_BUNDLE", "1", "1", "", d)}' - -# Set a variable in .configure -# $1 - Configure variable to be set -# $2 - value [n/y/value] -kernel_configure_variable() { - # Remove the config - CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;" - if test "$2" = "n" - then - echo "# CONFIG_$1 is not set" >> ${B}/.config - else - echo "CONFIG_$1=$2" >> ${B}/.config - fi -} - -do_configure_prepend() { - mv -f ${B}/.config ${B}/.config.patched - CONF_SED_SCRIPT="" - - # oabi / eabi support - kernel_configure_variable AEABI y - if [ "${ARM_KEEP_OABI}" = "1" ] ; then - kernel_configure_variable OABI_COMPAT y - else - kernel_configure_variable OABI_COMPAT n - fi - - # Set cmdline - kernel_configure_variable CMDLINE "\"${CMDLINE}\"" - - # Localversion - kernel_configure_variable LOCALVERSION "\"\"" - kernel_configure_variable LOCALVERSION_AUTO n - - # Udev quirks - # Newer versions of udev mandate that sysfs doesn't have deprecated entries - if [ "${UDEV_GE_141}" = "1" ] ; then - kernel_configure_variable SYSFS_DEPRECATED n - kernel_configure_variable SYSFS_DEPRECATED_V2 n - kernel_configure_variable HOTPLUG y - kernel_configure_variable UEVENT_HELPER_PATH "\"\"" - kernel_configure_variable UNIX y - kernel_configure_variable SYSFS y - kernel_configure_variable PROC_FS y - kernel_configure_variable TMPFS y - kernel_configure_variable INOTIFY_USER y - kernel_configure_variable SIGNALFD y - kernel_configure_variable TMPFS_POSIX_ACL y - kernel_configure_variable BLK_DEV_BSG y - kernel_configure_variable DEVTMPFS y - kernel_configure_variable DEVTMPFS_MOUNT y - fi - - # Newer inits like systemd need cgroup support - if [ "${KERNEL_ENABLE_CGROUPS}" = "1" ] ; then - kernel_configure_variable CGROUP_SCHED y - kernel_configure_variable CGROUPS y - kernel_configure_variable CGROUP_NS y - kernel_configure_variable CGROUP_FREEZER y - kernel_configure_variable CGROUP_DEVICE y - kernel_configure_variable CPUSETS y - kernel_configure_variable PROC_PID_CPUSET y - kernel_configure_variable CGROUP_CPUACCT y - kernel_configure_variable RESOURCE_COUNTERS y - fi - - # root-over-nfs-over-usb-eth support. Limited, but should cover some cases - # Enable this by setting a proper CMDLINE_NFSROOT_USB. - if [ ! -z "${CMDLINE_NFSROOT_USB}" ]; then - oenote "Configuring the kernel for root-over-nfs-over-usb-eth with CMDLINE ${CMDLINE_NFSROOT_USB}" - kernel_configure_variable INET y - kernel_configure_variable IP_PNP y - kernel_configure_variable USB_GADGET y - kernel_configure_variable USB_GADGET_SELECTED y - kernel_configure_variable USB_ETH y - kernel_configure_variable NFS_FS y - kernel_configure_variable ROOT_NFS y - kernel_configure_variable ROOT_NFS y - kernel_configure_variable CMDLINE "\"${CMDLINE_NFSROOT_USB}\"" - fi - if [ ! -z "${KERNEL_INITRAMFS}" ]; then - kernel_configure_variable BLK_DEV_INITRD y - kernel_configure_variable INITRAMFS_SOURCE "" - kernel_configure_variable RD_GZIP y - kernel_configure_variable OVERLAY_FS y - kernel_configure_variable SQUASHFS y - kernel_configure_variable UBIFS_FS y - fi - # Activate CONFIG_LEGACY_PTYS - kernel_configure_variable LEGACY_PTYS y - # this module is built externally via drbd-utils - kernel_configure_variable BLK_DEV_DRBD n - - # Activate the configuration options for VC4 - VC4GRAPHICS="${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "1", "0", d)}" - if [ ${VC4GRAPHICS} = "1" ]; then - kernel_configure_variable I2C_BCM2835 y - kernel_configure_variable DRM y - kernel_configure_variable DRM_FBDEV_EMULATION y - kernel_configure_variable DRM_VC4 y - kernel_configure_variable FB_BCM2708 n - fi - - # Keep this the last line - # Remove all modified configs and add the rest to .config - sed -e "${CONF_SED_SCRIPT}" < '${B}/.config.patched' >> '${B}/.config' - rm -f ${B}/.config.patched - - yes '' | oe_runmake oldconfig -} From 49f1a945120ede2273c02388d54059b7eee57e5e Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 09:52:29 +0000 Subject: [PATCH 36/52] linux-raspberrypi: Move LOADADDR setting to inc file There is no reason to continue supporting pre-4.8 series kernels so we can move the setting of LOADADDR to the common inc file. Signed-off-by: Paul Barker --- recipes-kernel/linux/linux-raspberrypi-dev.bb | 5 ----- recipes-kernel/linux/linux-raspberrypi.inc | 5 +++++ recipes-kernel/linux/linux-raspberrypi_4.9.bb | 5 ----- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/recipes-kernel/linux/linux-raspberrypi-dev.bb b/recipes-kernel/linux/linux-raspberrypi-dev.bb index 05a7ea24d..0fecccb25 100644 --- a/recipes-kernel/linux/linux-raspberrypi-dev.bb +++ b/recipes-kernel/linux/linux-raspberrypi-dev.bb @@ -16,11 +16,6 @@ SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=${LINUX_RP " require linux-raspberrypi.inc -# A LOADADDR is needed when building a uImage format kernel. This value is not -# set by default in rpi-4.8.y and later branches so we need to provide it -# manually. This value unused if KERNEL_IMAGETYPE is not uImage. -KERNEL_EXTRA_ARGS += "LOADADDR=0x00008000" - # Disable version check so that we don't have to edit this recipe every time # upstream bumps the version KERNEL_VERSION_SANITY_SKIP = "1" diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index 9f401d0f3..37cf0bb64 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -41,6 +41,11 @@ KERNEL_INITRAMFS ?= '${@base_conditional("INITRAMFS_IMAGE_BUNDLE", "1", "1", "", KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains("MACHINE_FEATURES", "pitft28r", "stmpe-ts", "", d)}" +# A LOADADDR is needed when building a uImage format kernel. This value is not +# set by default in rpi-4.8.y and later branches so we need to provide it +# manually. This value unused if KERNEL_IMAGETYPE is not uImage. +KERNEL_EXTRA_ARGS += "LOADADDR=0x00008000" + # Set a variable in .configure # $1 - Configure variable to be set # $2 - value [n/y/value] diff --git a/recipes-kernel/linux/linux-raspberrypi_4.9.bb b/recipes-kernel/linux/linux-raspberrypi_4.9.bb index 068965ffb..dd9afe291 100644 --- a/recipes-kernel/linux/linux-raspberrypi_4.9.bb +++ b/recipes-kernel/linux/linux-raspberrypi_4.9.bb @@ -6,8 +6,3 @@ SRCREV = "46e2d4d1bd2c17e2f84dd90768321ee0bbaa6b8a" SRC_URI = "git://github.com/raspberrypi/linux.git;branch=rpi-4.9.y" require linux-raspberrypi.inc - -# A LOADADDR is needed when building a uImage format kernel. This value is not -# set by default in rpi-4.8.y and later branches so we need to provide it -# manually. This value unused if KERNEL_IMAGETYPE is not uImage. -KERNEL_EXTRA_ARGS += "LOADADDR=0x00008000" From 129107837da7251496cab5de379611c72231eb79 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 09:53:44 +0000 Subject: [PATCH 37/52] linux-raspberrypi-dev: Bump to 4.13.y series Signed-off-by: Paul Barker --- recipes-kernel/linux/linux-raspberrypi-dev.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes-kernel/linux/linux-raspberrypi-dev.bb b/recipes-kernel/linux/linux-raspberrypi-dev.bb index 0fecccb25..b94765964 100644 --- a/recipes-kernel/linux/linux-raspberrypi-dev.bb +++ b/recipes-kernel/linux/linux-raspberrypi-dev.bb @@ -7,8 +7,8 @@ python __anonymous() { FILESEXTRAPATHS_prepend := "${THISDIR}/linux-raspberrypi:" -LINUX_VERSION ?= "4.12" -LINUX_RPI_DEV_BRANCH ?= "rpi-4.12.y" +LINUX_VERSION ?= "4.13" +LINUX_RPI_DEV_BRANCH ?= "rpi-4.13.y" SRCREV = "${AUTOREV}" SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=${LINUX_RPI_DEV_BRANCH} \ From 43e0169ab7f5143fab3ec12a788557a6306c8476 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 09:58:38 +0000 Subject: [PATCH 38/52] rpi-base.inc: Simplify setting of IMAGE_BOOT_FILES Signed-off-by: Paul Barker --- conf/machine/include/rpi-base.inc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/machine/include/rpi-base.inc b/conf/machine/include/rpi-base.inc index 71bb071a0..f29db29b4 100644 --- a/conf/machine/include/rpi-base.inc +++ b/conf/machine/include/rpi-base.inc @@ -83,9 +83,9 @@ def make_dtb_boot_files(d): IMAGE_BOOT_FILES ?= "bcm2835-bootfiles/* \ ${@make_dtb_boot_files(d)} \ - ${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', '${KERNEL_IMAGETYPE}', '${KERNEL_IMAGETYPE};${SDIMG_KERNELIMAGE}', d)} \ - ${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', 'u-boot.bin;${SDIMG_KERNELIMAGE}', '', d)} \ - ${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', 'boot.scr;boot.scr', '', d)} \ + ${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', \ + '${KERNEL_IMAGETYPE} u-boot.bin;${SDIMG_KERNELIMAGE} boot.scr', \ + '${KERNEL_IMAGETYPE};${SDIMG_KERNELIMAGE}', d)} \ " # The kernel image is installed into the FAT32 boot partition and does not need From e9bb7f0c6d3f77312970034ca0a63b3df0e3ba8e Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 10:12:54 +0000 Subject: [PATCH 39/52] Support using u-boot with Image format for raspberrypi3-64 For raspberrypi3-64 we need to use the Image or Image.gz format with u-boot instead of the legacy uImage format. We also need to issue the 'booti' command to boot the kernel instead of 'bootm'. Signed-off-by: Paul Barker --- classes/sdcard_image-rpi.bbclass | 21 +++++++------------- conf/machine/include/rpi-base.inc | 14 +++++++++++-- conf/machine/raspberrypi3-64.conf | 5 +++++ docs/extra-build-config.md | 8 +++++--- recipes-bsp/rpi-u-boot-scr/files/boot.cmd | 3 --- recipes-bsp/rpi-u-boot-scr/files/boot.cmd.in | 3 +++ recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb | 5 ++++- 7 files changed, 36 insertions(+), 23 deletions(-) delete mode 100644 recipes-bsp/rpi-u-boot-scr/files/boot.cmd create mode 100644 recipes-bsp/rpi-u-boot-scr/files/boot.cmd.in diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass index 6d34a2901..6b7433e56 100644 --- a/classes/sdcard_image-rpi.bbclass +++ b/classes/sdcard_image-rpi.bbclass @@ -55,7 +55,7 @@ do_image_rpi_sdimg[depends] = " \ dosfstools-native:do_populate_sysroot \ virtual/kernel:do_deploy \ ${IMAGE_BOOTLOADER}:do_deploy \ - ${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', 'u-boot:do_deploy', '',d)} \ + ${@bb.utils.contains('RPI_USE_U_BOOT', '1', 'u-boot:do_deploy', '',d)} \ " # SD card image name @@ -136,16 +136,13 @@ IMAGE_CMD_rpi-sdimg () { mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.${DTB_EXT} ::overlays/${DTB_BASE_NAME}.${DTB_EXT} done fi - case "${KERNEL_IMAGETYPE}" in - "uImage") + if [ "${RPI_USE_U_BOOT}" = "1" ]; then mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/u-boot.bin ::${SDIMG_KERNELIMAGE} - mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::uImage + mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::${KERNEL_IMAGETYPE} mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/boot.scr ::boot.scr - ;; - *) + else mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin ::${SDIMG_KERNELIMAGE} - ;; - esac + fi if [ -n ${FATPAYLOAD} ] ; then echo "Copying payload into VFAT" @@ -160,14 +157,10 @@ IMAGE_CMD_rpi-sdimg () { mcopy -i ${WORKDIR}/boot.img -v ${WORKDIR}/image-version-info :: # Deploy vfat partition (for u-boot case only) - case "${KERNEL_IMAGETYPE}" in - "uImage") + if [ "${RPI_USE_U_BOOT}" = "1" ]; then cp ${WORKDIR}/boot.img ${IMGDEPLOYDIR}/${SDIMG_VFAT} ln -sf ${SDIMG_VFAT} ${SDIMG_LINK_VFAT} - ;; - *) - ;; - esac + fi # Burn Partitions dd if=${WORKDIR}/boot.img of=${SDIMG} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync diff --git a/conf/machine/include/rpi-base.inc b/conf/machine/include/rpi-base.inc index f29db29b4..970f4d884 100644 --- a/conf/machine/include/rpi-base.inc +++ b/conf/machine/include/rpi-base.inc @@ -41,7 +41,17 @@ KERNEL_DEVICETREE ?= " \ overlays/pi3-miniuart-bt.dtbo \ overlays/vc4-kms-v3d.dtbo \ " -KERNEL_IMAGETYPE ?= "Image" + +# By default: +# +# * When u-boot is disabled use the "Image" format which can be directly loaded +# by the rpi firmware. +# +# * When u-boot is enabled use the "uImage" format and the "bootm" command +# within u-boot to load the kernel. +KERNEL_BOOTCMD ??= "bootm" +KERNEL_IMAGETYPE_UBOOT ??= "uImage" +KERNEL_IMAGETYPE ?= "${@bb.utils.contains('RPI_USE_U_BOOT', '1', '${KERNEL_IMAGETYPE_UBOOT}', 'Image', d)}" MACHINE_FEATURES += "apm usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio" @@ -83,7 +93,7 @@ def make_dtb_boot_files(d): IMAGE_BOOT_FILES ?= "bcm2835-bootfiles/* \ ${@make_dtb_boot_files(d)} \ - ${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', \ + ${@bb.utils.contains('RPI_USE_U_BOOT', '1', \ '${KERNEL_IMAGETYPE} u-boot.bin;${SDIMG_KERNELIMAGE} boot.scr', \ '${KERNEL_IMAGETYPE};${SDIMG_KERNELIMAGE}', d)} \ " diff --git a/conf/machine/raspberrypi3-64.conf b/conf/machine/raspberrypi3-64.conf index 237684aaa..ebc9f382c 100644 --- a/conf/machine/raspberrypi3-64.conf +++ b/conf/machine/raspberrypi3-64.conf @@ -39,3 +39,8 @@ VC4_CMA_SIZE ?= "cma-256" UBOOT_MACHINE = "rpi_3_config" MACHINE_FEATURES_append = " vc4graphics" + +# When u-boot is enabled we need to use the "Image" format and the "booti" +# command to load the kernel +KERNEL_IMAGETYPE_UBOOT ?= "Image" +KERNEL_BOOTCMD ?= "booti" diff --git a/docs/extra-build-config.md b/docs/extra-build-config.md index 8d4f897e4..380d96997 100644 --- a/docs/extra-build-config.md +++ b/docs/extra-build-config.md @@ -105,10 +105,12 @@ To disable rpi boot logo, set this variable in local.conf: To have u-boot load kernel image, set in your local.conf: - KERNEL_IMAGETYPE = "uImage" + RPI_USE_U_BOOT = "1" -This will make kernel.img be u-boot image which will load uImage. By default, -kernel.img is the actual kernel image (ex. Image). +This will select the appropriate image format for use with u-boot automatically. +For further customisation the KERNEL_IMAGETYPE and KERNEL_BOOTCMD variables can +be overridden to select the exact kernel image type (eg. zImage) and u-boot +command (eg. bootz) to be used. ## Image with Initramfs diff --git a/recipes-bsp/rpi-u-boot-scr/files/boot.cmd b/recipes-bsp/rpi-u-boot-scr/files/boot.cmd deleted file mode 100644 index 2e8452e89..000000000 --- a/recipes-bsp/rpi-u-boot-scr/files/boot.cmd +++ /dev/null @@ -1,3 +0,0 @@ -fdt addr ${fdt_addr} && fdt get value bootargs /chosen bootargs -fatload mmc 0:1 ${kernel_addr_r} uImage -bootm ${kernel_addr_r} - ${fdt_addr} diff --git a/recipes-bsp/rpi-u-boot-scr/files/boot.cmd.in b/recipes-bsp/rpi-u-boot-scr/files/boot.cmd.in new file mode 100644 index 000000000..ad54cd067 --- /dev/null +++ b/recipes-bsp/rpi-u-boot-scr/files/boot.cmd.in @@ -0,0 +1,3 @@ +fdt addr ${fdt_addr} && fdt get value bootargs /chosen bootargs +fatload mmc 0:1 ${kernel_addr_r} @@KERNEL_IMAGETYPE@@ +@@KERNEL_BOOTCMD@@ ${kernel_addr_r} - ${fdt_addr} diff --git a/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb b/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb index c938c3b45..345730088 100644 --- a/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb +++ b/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb @@ -5,9 +5,12 @@ COMPATIBLE_MACHINE = "^rpi$" DEPENDS = "u-boot-mkimage-native" -SRC_URI = "file://boot.cmd" +SRC_URI = "file://boot.cmd.in" do_compile() { + sed -e 's/@@KERNEL_IMAGETYPE@@/${KERNEL_IMAGETYPE}/' \ + -e 's/@@KERNEL_BOOTCMD@@/${KERNEL_BOOTCMD}/' \ + "${WORKDIR}/boot.cmd.in" > "${WORKDIR}/boot.cmd" mkimage -A arm -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr } From 134e7dd94334d3ac26bf0e51318f642154dd42da Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 13:22:34 +0000 Subject: [PATCH 40/52] sdcard_image-rpi: Drop unnecessary sync commands These commands are unnecessary and seem to mask failures to find the rootfs.ext3 file when re-running the do_image_rpi_sdimg stage without re-running the preceeding do_image_ext3 stage. Signed-off-by: Paul Barker --- classes/sdcard_image-rpi.bbclass | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass index 6b7433e56..87c8afa23 100644 --- a/classes/sdcard_image-rpi.bbclass +++ b/classes/sdcard_image-rpi.bbclass @@ -163,13 +163,13 @@ IMAGE_CMD_rpi-sdimg () { fi # Burn Partitions - dd if=${WORKDIR}/boot.img of=${SDIMG} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync + dd if=${WORKDIR}/boot.img of=${SDIMG} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) # If SDIMG_ROOTFS_TYPE is a .xz file use xzcat if echo "${SDIMG_ROOTFS_TYPE}" | egrep -q "*\.xz" then - xzcat ${SDIMG_ROOTFS} | dd of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync + xzcat ${SDIMG_ROOTFS} | dd of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) else - dd if=${SDIMG_ROOTFS} of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync + dd if=${SDIMG_ROOTFS} of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) fi # Optionally apply compression From 37e4e18f4a745ce8dc11f7e40a29da0859ff13c6 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 13:34:20 +0000 Subject: [PATCH 41/52] sdcard_image-rpi: Use un-timestamped link to rootfs partition image The timestamp in the rootfs partition image filename may not match the current timestamp if the do_image_rpi_sdimg step is repeated without repeating the previous do_image_ext3 (or similar) step. Signed-off-by: Paul Barker --- classes/sdcard_image-rpi.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass index 87c8afa23..2dd932653 100644 --- a/classes/sdcard_image-rpi.bbclass +++ b/classes/sdcard_image-rpi.bbclass @@ -47,7 +47,7 @@ IMAGE_ROOTFS_ALIGNMENT = "4096" # Use an uncompressed ext3 by default as rootfs SDIMG_ROOTFS_TYPE ?= "ext3" -SDIMG_ROOTFS = "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.${SDIMG_ROOTFS_TYPE}" +SDIMG_ROOTFS = "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${SDIMG_ROOTFS_TYPE}" do_image_rpi_sdimg[depends] = " \ parted-native:do_populate_sysroot \ From c26e9d3df54293a88fba047a29b335f52b01120e Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Fri, 8 Sep 2017 21:32:25 +0000 Subject: [PATCH 42/52] rpi-base.inc: Set dependencies for creating wic images We need to ensure that the bootloader and firmware files are present in the deploy directory before creating wic images. Signed-off-by: Paul Barker --- conf/machine/include/rpi-base.inc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/machine/include/rpi-base.inc b/conf/machine/include/rpi-base.inc index 970f4d884..688227c09 100644 --- a/conf/machine/include/rpi-base.inc +++ b/conf/machine/include/rpi-base.inc @@ -97,6 +97,10 @@ IMAGE_BOOT_FILES ?= "bcm2835-bootfiles/* \ '${KERNEL_IMAGETYPE} u-boot.bin;${SDIMG_KERNELIMAGE} boot.scr', \ '${KERNEL_IMAGETYPE};${SDIMG_KERNELIMAGE}', d)} \ " +do_image_wic[depends] += " \ + bcm2835-bootfiles:do_deploy \ + ${@bb.utils.contains('RPI_USE_U_BOOT', '1', 'u-boot:do_deploy', '',d)} \ + " # The kernel image is installed into the FAT32 boot partition and does not need # to also be installed into the rootfs. From 47da217fda4af6fa385f81ea08203de9a29b292b Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Mon, 11 Sep 2017 13:37:39 +0000 Subject: [PATCH 43/52] omxplayer: Update Upstream-status tag on patch Signed-off-by: Paul Barker --- .../0006-Prevent-ffmpeg-configure-compile-race-condition.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-multimedia/omxplayer/omxplayer/0006-Prevent-ffmpeg-configure-compile-race-condition.patch b/recipes-multimedia/omxplayer/omxplayer/0006-Prevent-ffmpeg-configure-compile-race-condition.patch index a73ed9aab..3fac2d1cd 100644 --- a/recipes-multimedia/omxplayer/omxplayer/0006-Prevent-ffmpeg-configure-compile-race-condition.patch +++ b/recipes-multimedia/omxplayer/omxplayer/0006-Prevent-ffmpeg-configure-compile-race-condition.patch @@ -7,7 +7,7 @@ Additional dependency information is needed in Makefile.ffmpeg to ensure that the configure stage is finished before the compile stage starts. Signed-off-by: Paul Barker -Upstream-status: Inappropriate +Upstream-status: Pending --- Makefile.ffmpeg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) From f1e2bf782f5906f05dfe7c1a9260ce5b4744f5bc Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Mon, 11 Sep 2017 13:47:59 +0000 Subject: [PATCH 44/52] omxplayer: Explain inclusion of ffmpeg Signed-off-by: Paul Barker --- recipes-multimedia/omxplayer/omxplayer_git.bb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/recipes-multimedia/omxplayer/omxplayer_git.bb b/recipes-multimedia/omxplayer/omxplayer_git.bb index 8079a4025..db01d7433 100644 --- a/recipes-multimedia/omxplayer/omxplayer_git.bb +++ b/recipes-multimedia/omxplayer/omxplayer_git.bb @@ -11,7 +11,16 @@ DEPENDS = "libpcre libav virtual/egl boost freetype dbus openssl samba libssh li PR = "r4" SRCREV_default = "b8ff59dccd9307f10dad71bec2525a95bd6c603b" + +# omxplayer builds its own copy of ffmpeg from source instead of using the +# system's ffmpeg library. This isn't ideal but it's ok for now. We do however +# want to keep control of the exact version of ffmpeg used instead of just +# fetching the latest commit on a release branch (which is what the checkout job +# in Makefile.ffmpeg in the omxplayer source tree does). +# +# This SRCREV corresponds to the v3.1.10 release of ffmpeg. SRCREV_ffmpeg = "afa34cb36edca0ff809b7e58474bbce12271ecba" + SRC_URI = "git://github.com/popcornmix/omxplayer.git;protocol=git;branch=master \ git://source.ffmpeg.org/ffmpeg;branch=release/3.1;protocol=git;depth=1;name=ffmpeg;destsuffix=git/ffmpeg \ file://0001-Remove-Makefile.include-which-includes-hardcoded.patch \ From e2432d3bb42e1d6c58f4665a8817e5b18e142a58 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 25 Sep 2017 10:40:34 -0300 Subject: [PATCH 45/52] layer.conf: Add Dynamic Layer mechanism This allow for bbappend files to be enabled when specific layers are included. Change-Id: Iecbcf0de85a64aad71605b60ecd3d9a2586fae85 Signed-off-by: Otavio Salvador --- conf/layer.conf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/conf/layer.conf b/conf/layer.conf index bea5a6556..bbdce1458 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -12,3 +12,12 @@ BBFILE_PRIORITY_raspberrypi = "9" # Additional license directories. LICENSE_PATH += "${LAYERDIR}/files/custom-licenses" +# The dynamic-layers directory hosts the extensions and layer specific +# modifications. +# +# The .bbappend and .bb files are included if the respective layer +# collection is available. +BBFILES += "${@' '.join('${LAYERDIR}/dynamic-layers/%s/recipes*/*/*.bbappend' % layer \ + for layer in BBFILE_COLLECTIONS.split())}" +BBFILES += "${@' '.join('${LAYERDIR}/dynamic-layers/%s/recipes*/*/*.bb' % layer \ + for layer in BBFILE_COLLECTIONS.split())}" From 04b37dbdb79638b17a670280058400ffaf1b6ccb Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 25 Sep 2017 10:40:34 -0300 Subject: [PATCH 46/52] qtbase: Enable EGLFS support Change-Id: Ib96bd995091f6838f7c09cf5daedbf60f18e1a2d Signed-off-by: Otavio Salvador --- dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend diff --git a/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend b/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend new file mode 100644 index 000000000..ae3f1d37f --- /dev/null +++ b/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend @@ -0,0 +1,3 @@ +# Copyright (C) 2017 O.S. Systems Software LTDA. + +PACKAGECONFIG_GL_rpi = "gles2 eglfs" From 70b9c3ec57a08b0458a5128b039b29e436bc5975 Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Wed, 27 Sep 2017 15:23:19 +0000 Subject: [PATCH 47/52] Revert "qtbase: Enable EGLFS support" * this reverts commit 04b37dbdb79638b17a670280058400ffaf1b6ccb. * this makes qtbase and everything which depends on some qt* recipe to be effectivelly MACHINE_ARCH Signed-off-by: Martin Jansa --- dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend diff --git a/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend b/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend deleted file mode 100644 index ae3f1d37f..000000000 --- a/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright (C) 2017 O.S. Systems Software LTDA. - -PACKAGECONFIG_GL_rpi = "gles2 eglfs" From c716e0d30cf897d1fb132e2e67e08e6cd20d312d Mon Sep 17 00:00:00 2001 From: Andrei Gherzan Date: Mon, 2 Oct 2017 12:54:53 +0100 Subject: [PATCH 48/52] linux-raspberrypi.inc: Define KBUILD_DEFCONFIG for rpi0 WiFi Signed-off-by: Andrei Gherzan --- recipes-kernel/linux/linux-raspberrypi.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index 37cf0bb64..ee46532ce 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -12,6 +12,7 @@ inherit kernel siteinfo require recipes-kernel/linux/linux-yocto.inc KCONFIG_MODE = "--alldefconfig" +KBUILD_DEFCONFIG_raspberrypi0-wifi ?= "bcmrpi_defconfig" KBUILD_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig" KBUILD_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig" KBUILD_DEFCONFIG_raspberrypi3 ?= "bcm2709_defconfig" From f6fecae82551b148c4ec685dde8728bae3f2695f Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Sun, 8 Oct 2017 18:38:17 +0000 Subject: [PATCH 49/52] rpi-config: Do not force HDMI mode for raspberrypi3-64 Forcing hdmi_drive=2 prevents the use of a DVI monitor and a HDMI-DVI converter cable. Signed-off-by: Paul Barker --- recipes-bsp/bootfiles/rpi-config_git.bb | 3 --- 1 file changed, 3 deletions(-) diff --git a/recipes-bsp/bootfiles/rpi-config_git.bb b/recipes-bsp/bootfiles/rpi-config_git.bb index 43530616e..ca4160b57 100644 --- a/recipes-bsp/bootfiles/rpi-config_git.bb +++ b/recipes-bsp/bootfiles/rpi-config_git.bb @@ -133,9 +133,6 @@ do_deploy_append_raspberrypi3-64() { echo "# have a properly sized image" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo "disable_overscan=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt - echo "# for sound over HDMI" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt - echo "hdmi_drive=2" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt - echo "# Enable audio (loads snd_bcm2835)" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt echo "dtparam=audio=on" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt From 9d84186870a6f9bde44575690105b9bb5e44ca24 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Sun, 8 Oct 2017 20:41:09 +0000 Subject: [PATCH 50/52] linux-raspberrypi: Keep framebuffer support when vc4graphics is enabled Framebuffer support may be required for some monitors and applications. Signed-off-by: Paul Barker --- recipes-kernel/linux/linux-raspberrypi.inc | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index ee46532ce..da36ca7d5 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -146,7 +146,6 @@ do_configure_prepend() { kernel_configure_variable DRM y kernel_configure_variable DRM_FBDEV_EMULATION y kernel_configure_variable DRM_VC4 y - kernel_configure_variable FB_BCM2708 n fi # Keep this the last line From 0f795402ef46ae9df61263f0d996c49c00fded74 Mon Sep 17 00:00:00 2001 From: David Bensoussan Date: Thu, 12 Oct 2017 13:00:46 +0000 Subject: [PATCH 51/52] feat: cm3 64 bits OS This modifies kernel source and creates the machine --- classes/sdcard_image-rpi.bbclass | 1 + conf/machine/raspberrypi-cm3-64.conf | 41 +++++++++++++++++++ recipes-kernel/linux/linux-raspberrypi.inc | 1 + recipes-kernel/linux/linux-raspberrypi_4.9.bb | 6 +-- 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 conf/machine/raspberrypi-cm3-64.conf diff --git a/classes/sdcard_image-rpi.bbclass b/classes/sdcard_image-rpi.bbclass index 42753d686..65545dcd9 100644 --- a/classes/sdcard_image-rpi.bbclass +++ b/classes/sdcard_image-rpi.bbclass @@ -36,6 +36,7 @@ KERNEL_INITRAMFS ?= "" SDIMG_KERNELIMAGE_raspberrypi ?= "kernel.img" SDIMG_KERNELIMAGE_raspberrypi2 ?= "kernel7.img" SDIMG_KERNELIMAGE_raspberrypi3-64 ?= "kernel8.img" +SDIMG_KERNELIMAGE_raspberrypi-cm3-64 ?= "kernel8.img" # Boot partition volume id BOOTDD_VOLUME_ID ?= "${MACHINE}" diff --git a/conf/machine/raspberrypi-cm3-64.conf b/conf/machine/raspberrypi-cm3-64.conf new file mode 100644 index 000000000..7080f7691 --- /dev/null +++ b/conf/machine/raspberrypi-cm3-64.conf @@ -0,0 +1,41 @@ +#@TYPE: Machine +#@NAME: RaspberryPi 3 Development Board +#@DESCRIPTION: Machine configuration for the RaspberryPi 3 in 64 bits mode + +MACHINEOVERRIDES = "raspberrypi2:${MACHINE}" + +MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-bcm43430" + +require conf/machine/include/arm/arch-armv8.inc +include conf/machine/include/rpi-base.inc + +KERNEL_DEVICETREE = " \ + broadcom/bcm2837-rpi-cm3.dtb \ + \ + overlays/hifiberry-amp.dtbo \ + overlays/hifiberry-dac.dtbo \ + overlays/hifiberry-dacplus.dtbo \ + overlays/hifiberry-digi.dtbo \ + overlays/i2c-rtc.dtbo \ + overlays/iqaudio-dac.dtbo \ + overlays/iqaudio-dacplus.dtbo \ + overlays/lirc-rpi.dtbo \ + overlays/pitft22.dtbo \ + overlays/pitft28-resistive.dtbo \ + overlays/pitft35-resistive.dtbo \ + overlays/pps-gpio.dtbo \ + overlays/rpi-ft5406.dtbo \ + overlays/w1-gpio.dtbo \ + overlays/w1-gpio-pullup.dtbo \ + overlays/pi3-disable-bt.dtbo \ + overlays/pi3-miniuart-bt.dtbo \ + overlays/vc4-kms-v3d.dtbo \ + overlays/vc4-fkms-v3d.dtbo \ + " + +SERIAL_CONSOLE ?= "115200 ttyS0" +#VC4_CMA_SIZE ?= "cma-256" + +UBOOT_MACHINE = "rpi_3_config" +#MACHINE_FEATURES_append = " vc4graphics" +KERNEL_DEFCONFIG ?= "bcmrpi3_defconfig" diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index e0b14e9af..96cbceae1 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -16,6 +16,7 @@ KBUILD_DEFCONFIG_raspberrypi ?= "bcmrpi_defconfig" KBUILD_DEFCONFIG_raspberrypi2 ?= "bcm2709_defconfig" KBUILD_DEFCONFIG_raspberrypi3 ?= "bcm2709_defconfig" KBUILD_DEFCONFIG_raspberrypi3-64 ?= "bcmrpi3_defconfig" +KBUILD_DEFCONFIG_raspberrypi-cm3-64 ?= "bcmrpi3_defconfig" # CMDLINE for raspberrypi CMDLINE ?= "dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" diff --git a/recipes-kernel/linux/linux-raspberrypi_4.9.bb b/recipes-kernel/linux/linux-raspberrypi_4.9.bb index 068965ffb..0e279ca59 100644 --- a/recipes-kernel/linux/linux-raspberrypi_4.9.bb +++ b/recipes-kernel/linux/linux-raspberrypi_4.9.bb @@ -1,9 +1,9 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" -LINUX_VERSION ?= "4.9.50" +LINUX_VERSION ?= "4.9.52" -SRCREV = "46e2d4d1bd2c17e2f84dd90768321ee0bbaa6b8a" -SRC_URI = "git://github.com/raspberrypi/linux.git;branch=rpi-4.9.y" +SRCREV = "19577521f46c188a592f44cb311c0d421b0c9d93" +SRC_URI = "git://github.com/synapticon/linux.git;branch=cm3_64" require linux-raspberrypi.inc From fe99478aa9ebfbcf78d02bad35fd1310912e4857 Mon Sep 17 00:00:00 2001 From: Paul Barker Date: Thu, 12 Oct 2017 15:34:40 +0000 Subject: [PATCH 52/52] docs: Drop comment on broken raspberrypi3-64 HDMI output Graphical output on raspberrypi3-64 should now be fixed. Signed-off-by: Paul Barker --- docs/extra-apps.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/extra-apps.md b/docs/extra-apps.md index 99682b6e8..53007dc1f 100644 --- a/docs/extra-apps.md +++ b/docs/extra-apps.md @@ -7,9 +7,3 @@ able to compile omxplayer you will need to whiteflag the commercial license in your local.conf: LICENSE_FLAGS_WHITELIST = "commercial" -## raspberrypi3-64 - -Currently, raspberrypi3-64 does not boot into graphics, this needs more investigation -and fixes, until then none of images using graphics stack would boot into UI, although -the system would be up and ready, graphics wont come up. One can use serial console or -remote login to get into system