Yocto 2.3

Move OpenBMC to Yocto 2.3(pyro).

Tested: Built and verified Witherspoon and Palmetto images
Change-Id: I50744030e771f4850afc2a93a10d3507e76d36bc
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Resolves: openbmc/openbmc#2461
diff --git a/import-layers/meta-raspberrypi/.github/ISSUE_TEMPLATE.md b/import-layers/meta-raspberrypi/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..ea2697d
--- /dev/null
+++ b/import-layers/meta-raspberrypi/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,27 @@
+<!--
+If you are reporting a new issue, make sure that we do not have any duplicates
+already open. You can ensure this by searching the issue list for this
+repository. If there is a duplicate, please close your issue and add a comment
+to the existing issue instead.
+-->
+
+**Description**
+
+<!--
+Briefly describe the problem you are having in a few paragraphs.
+-->
+
+**Steps to reproduce the issue:**
+1.
+2.
+3.
+
+**Describe the results you received:**
+
+
+**Describe the results you expected:**
+
+
+**Additional information you deem important (e.g. issue happens only occasionally):**
+
+**Additional details (revisions used, host distro, etc.):**
diff --git a/import-layers/meta-raspberrypi/.github/PULL_REQUEST_TEMPLATE.md b/import-layers/meta-raspberrypi/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..223f23a
--- /dev/null
+++ b/import-layers/meta-raspberrypi/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,16 @@
+<!--
+Please make sure you've read and understood our contributing guidelines.
+
+For additional information on the contribution guidelines:
+https://wiki.yoctoproject.org/wiki/Contribution_Guidelines#General_Information
+
+If this PR fixes an issue, make sure your description includes "fixes #xxxx".
+
+If this PR connects to an issue, make sure your description includes "connected to #xxxx".
+
+Please provide the following information:
+-->
+
+**- What I did**
+
+**- How I did it**
diff --git a/import-layers/meta-raspberrypi/.gitignore b/import-layers/meta-raspberrypi/.gitignore
index bd5616a..706144a 100644
--- a/import-layers/meta-raspberrypi/.gitignore
+++ b/import-layers/meta-raspberrypi/.gitignore
@@ -3,3 +3,5 @@
 .*.swp
 *.orig
 *.rej
+*.log
+docs/_build
diff --git a/import-layers/meta-raspberrypi/README b/import-layers/meta-raspberrypi/README
deleted file mode 100644
index bfc3e2e..0000000
--- a/import-layers/meta-raspberrypi/README
+++ /dev/null
@@ -1,352 +0,0 @@
-Quick links
-===========
-Git repository web frontend:
-    http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/
-Mailing list (yocto mailing list):
-    yocto@yoctoproject.org
-Issues management (Github Issues):
-    https://github.com/agherzan/meta-raspberrypi/issues
-
-
-Contents:
-=========
-1. Description
-2. Yocto BSP Layer - Raspberry Pi
-    2.A. How to use it
-    2.B. Images
-3. Optional build configuration
-    3.A. Compressed deployed files
-    3.B. GPU memory
-    3.C. Add purchased license codecs
-    3.D. Disable overscan
-    3.E. Set overclocking options
-    3.F. Video camera support with V4L2 drivers
-    3.G. Enable offline compositing support
-    3.H. Enable kgdb over console support
-    3.I. Boot to U-Boot
-    3.J. Image with Initramfs
-    3.K. Device tree support
-    3.L. Enable SPI bus
-    3.M. Enable I2C
-    3.N. Enable PiTFT support
-    3.O. Enable UART support
-4. Extra apps
-    4.A. omxplayer
-5. Board Configuration
-    5.A. Audio Routing
-6. Source code and mirrors
-7. Contribution
-    7.A. Mailing List
-    7.B. Github Issues
-8. Maintainers
-
-
-1. Description
-==============
-
-This is the general hardware specific BSP overlay for the RaspberryPi device.
-
-More information can be found at:
-                   http://www.raspberrypi.org/ (Official Site)
-
-The core BSP part of meta-raspberrypi should work with different
-OpenEmbedded/Yocto distributions and layer stacks, such as:
-* Distro-less (only with OE-Core).
-* Angstrom.
-* Yocto/Poky (main focus of testing).
-
-2. Yocto BSP Layer - RaspberryPi
-================================
-
-This layer depends on:
-
-URI: git://git.yoctoproject.org/poky
-branch: master
-revision: HEAD
-
-URI: git://git.openembedded.org/meta-openembedded
-layers: meta-oe, meta-multimedia, meta-networking, meta-python
-branch: master
-revision: HEAD
-
-2.A. How to use it
-==================
-a. source poky/oe-init-build-env rpi-build
-b. Add needed layer to bblayers.conf:
-    - meta-raspberrypi
-c. Set MACHINE in local.conf to one of the supported boards:
-    - raspberrypi
-    - raspberrypi0
-    - raspberrypi0-wifi
-    - raspberrypi2
-    - raspberrypi3
-    - raspberrypi-cm (dummy alias for raspberrypi)
-    - raspberrypi-cm3 (dummy alias for raspberrypi2)
-d. bitbake rpi-hwup-image
-e. dd to a SD card the generated sdimg file (use xzcat if rpi-sdimg.xz is used)
-f. Boot your RPI.
-
-2.B. Images
--===========
-* rpi-hwup-image
-    Hardware up image
-* rpi-basic-image
-    Based on rpi-hwup-image with some added features (ex: splash)
-* rpi-test-image
-    Image based on rpi-basic-image which includes most of the packages in this
-    layer and some media samples.
-
-3. Optional build configuration
-===============================
-
-There are a set of ways in which a user can influence different paramenters of the build.
-We list here the ones that are closely related to this BSP or specific to it. For the rest
-please check: http://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html
-
-3.A. Compressed deployed files
-==============================
-1. Overwrite IMAGE_FSTYPES in local.conf
-    IMAGE_FSTYPES = "tar.bz2 ext3.xz"
-2. Overwrite SDIMG_ROOTFS_TYPE in local.conf
-    SDIMG_ROOTFS_TYPE = "ext3.xz"
-3. Overwrite SDIMG_COMPRESSION in local.conf
-    SDIMG_COMPRESSION = "xz"
-*Accommodate the values above to your own needs (ex: ext3 / ext4).
-
-3.B. GPU memory
-===============
-Variable    : Details
-GPU_MEM     : GPU memory in megabyte. Sets the memory split between the ARM and
-              GPU. ARM gets the remaining memory. Min 16. Default 64.
-GPU_MEM_256 : GPU memory in megabyte for the 256MB Raspberry Pi. Ignored by the
-              512MB RP. Overrides gpu_mem. Max 192. Default not set.
-GPU_MEM_512 : GPU memory in megabyte for the 512MB Raspberry Pi. Ignored by the
-              256MB RP. Overrides gpu_mem. Max 448. Default not set.
-GPU_MEM_1024: GPU memory in megabyte for the 1024MB Raspberry Pi. Ignored by the
-              256MB/512MB RP. Overrides gpu_mem. Max 944. Default not set.
-
-3.C. Add purchased license codecs
-=================================
-To add you own licenses use variables KEY_DECODE_MPG2 and KEY_DECODE_WVC1 in
-local.conf. Example:
-KEY_DECODE_MPG2 = "12345678"
-KEY_DECODE_WVC1 = "12345678"
-You can supply more licenses separated by comma. Example:
-KEY_DECODE_WVC1 = "0x12345678,0xabcdabcd,0x87654321"
-
-3.D. Disable overscan
-=====================
-By default the GPU adds a black border around the video output to compensate for
-TVs which cut off part of the image. To disable this set this variable in
-local.conf:
-DISABLE_OVERSCAN = "1"
-
-3.E. Set overclocking options
-=============================
-The Raspberry PI can be overclocked. As of now overclocking up to the "Turbo
-Mode" is officially supported by the raspbery and does not void warranty.
-Check the config.txt for a detailed description of options and modes. Example:
-# Turbo mode
-ARM_FREQ = "1000"
-CORE_FREQ = "500"
-SDRAM_FREQ = "500"
-OVER_VOLTAGE = "6"
-
-3.F. Video camera support with V4L2 drivers
-===========================================
-Set this variable to enable support for the video camera (Linux 3.12.4+ required)
-VIDEO_CAMERA = "1"
-
-3.G. Enable offline compositing support
-=======================================
-Set this variable to enable support for dispmanx offline compositing
-DISPMANX_OFFLINE = "1"
-
-This will enable the firmware to fall back to off-line compositing of
-Dispmanx elements. Normally the compositing is done on-line, during scanout,
-but cannot handle too many elements. With off-line enabled, an off-screen
-buffer is allocated for compositing. When scene complexity (number and sizes
-of elements) is high, compositing will happen off-line into the buffer.
-
-Heavily recommended for Wayland/Weston.
-
-See: http://wayland.freedesktop.org/raspberrypi.html
-
-3.H. Enable kgdb over console support
-=====================================
-To add the kdbg over console (kgdboc) parameter to the kernel command line,
-set this variable in local.conf:
-ENABLE_KGDB = "1"
-
-3.I. Boot to U-Boot
-===================
-To have u-boot load kernel image, set in your local.conf
-KERNEL_IMAGETYPE = "uImage"
-
-This will make kernel.img be u-boot image which will load uImage.
-By default, kernel.img is the actual kernel image (ex. Image).
-
-3.J. Image with Initramfs
-=========================
-To build an initramfs image :
-    * Set this 3 kernel variables (in linux-raspberrypi.inc for example)
-        - kernel_configure_variable BLK_DEV_INITRD y
-        - kernel_configure_variable INITRAMFS_SOURCE ""
-        - kernel_configure_variable RD_GZIP y
-    * Set the yocto variables (in linux-raspberrypi.inc for example)
-        - INITRAMFS_IMAGE = "<a name for your initramfs image>"
-        - INITRAMFS_IMAGE_BUNDLE = "1"
-    * Set the meta-rasberrypi variable (in raspberrypi.conf for example)
-        - KERNEL_INITRAMFS = "-initramfs"
-
-3.K. Device tree support
-=========================
-Device tree for RPi is only supported when using linux-raspberrypi 3.18+
-kernels.
-
-    * Set KERNEL_DEVICETREE (in conf/machine/raspberrypi.conf)
-        - the trailer is added to the kernel image before kernel install task.
-          While creating the SDCard image, this modified kernel is put on
-          boot partition (as kernel.img) as well as DeviceTree blobs (.dtb files).
-
-NOTE: KERNEL_DEVICETREE is default enabled for kernel >= 3.18 and always disabled for
-      older kernel versions.
-
-3.L. Enable SPI bus
-====================
-When using device tree kernels, set this variable to enable the SPI bus
-ENABLE_SPI_BUS = "1"
-
-3.M. Enable I2C
-===============
-When using device tree kernels, set this variable to enable I2C
-ENABLE_I2C = "1"
-
-3.N. Enable PiTFT support
-=========================
-Basic support for using PiTFT screens can be enabled by adding
-below in local.conf:
-
-MACHINE_FEATURES += "pitft"
-  - This will enable SPI bus and i2c device-trees, it will also setup
-    framebuffer for console and x server on PiTFT.
-
-NOTE: To get this working the overlay for the PiTFT model must be build,
-      added and specified as well (dtoverlay=<driver> in config.txt)
-
-Below is a list of currently supported PiTFT models in meta-raspberrypi,
-the modelname should be added as a MACHINE_FEATURES in local.conf like below:
-    - MACHINE_FEATURES += "pitft <modelname>"
-
-List of currently supported models:
-    - pitft22
-    - pitft28r
-
-3.O. Enable UART
-===============
-RaspberryPi 0, 1, 2 and CM will have UART console enabled by default.
-
-RaspberryPi 0 WiFi and 3 does not have the UART enabled by default because this
-needs a fixed core frequency and enable_uart wil set it to the minimum. Certain
-operations - 60fps h264 decode, high quality deinterlace - which aren't
-performed on the ARM may be affected, and we wouldn't want to do that to users
-who don't want to use the serial port. Users who want serial console support on
-RaspberryPi3 will have to explicitely set in local.conf: ENABLE_UART = "1".
-
-Ref.: https://github.com/raspberrypi/firmware/issues/553
-      https://github.com/RPi-Distro/repo/issues/22
-
-4. Extra apps
-=============
-
-4.A. omxplayer
-==============
-omxplayer depends on libav which has a commercial license. So in order to be
-able to compile omxplayer you will need to whiteflag the commercial license
-adding to you local.conf:
-LICENSE_FLAGS_WHITELIST = "commercial"
-
-5. Board Configuration
-======================
-
-5.A. Audio Routing
-==================
-To load audio driver
-
-    modprobe snd-bcm2835
-
-To test audio playback
-
-    e.g. aplay test.wav
-
-Note that without HDMI connected this emits audio from the 3.5in jack connector
-as expected. However With an HDMI display connected there is no audio output from
-the jack connector.
-
-To force the audio routing via the 3.5in jack connector use
-
-    amixer cset numid=3 1
-
-Options to amixer cset are:
-
-    0=auto
-    1=headphones
-    2=hdmi
-
-6. Source code and mirrors
-==========================
-
-Main repo:
-    git://git.yoctoproject.org/meta-raspberrypi
-    http://git.yoctoproject.org/git/meta-raspberrypi
-
-Github mirror:
-    https://github.com/agherzan/meta-raspberrypi
-
-Bitbucket mirror:
-    https://bitbucket.org/agherzan/meta-raspberrypi
-
-
-7. Contributing
-===============
-
-7.A. Mailing list
-=================
-The main communication tool we use is a mailing list:
-    yocto@yoctoproject.org
-    https://lists.yoctoproject.org/listinfo/yocto
-
-Feel free to ask any kind of questions but always prepend your email subject
-with "[meta-raspberrypi]". This is because we use the 'yocto' mailing list and
-not a perticular 'meta-raspberrypi' mailing list.
-
-7.B. Patches and pull requests
-==============================
-
-To contribute to this project you should send pull requests to the github mirror
-(<https://github.com/agherzan/meta-raspberrypi>). **Additionally** you can send
-the patches for review to the above specified mailing list.
-
-When creating patches, please use something like:
-
-    git format-patch -s --subject-prefix='meta-raspberrypi][PATCH' origin
-
-When sending patches to mailing list, please use something like:
-
-    git send-email --to yocto@yoctoproject.org <generated patch>
-
-7.C. Github issues
-==================
-In order to manage and trace the meta-raspberrypi issues, we use github issues:
-    https://github.com/agherzan/meta-raspberrypi/issues
-
-If you push patches which have a github issue associated, please provide the
-issue number in the commit log just before "Signed-off-by" line(s). Example line
-for a bug:
-    [Issue #13]
-
-
-8. Maintainers
-==============
-
-    Andrei Gherzan <andrei at gherzan.ro>
diff --git a/import-layers/meta-raspberrypi/README.md b/import-layers/meta-raspberrypi/README.md
new file mode 100644
index 0000000..c2ea048
--- /dev/null
+++ b/import-layers/meta-raspberrypi/README.md
@@ -0,0 +1,55 @@
+# meta-raspberrypi
+
+Yocto BSP layer for the Raspberry Pi boards - <http://www.raspberrypi.org/>.
+
+[![Build Status](https://yocto-ci.resin.io/job/meta-raspberrypi1/badge/icon)](https://yocto-ci.resin.io/job/meta-raspberrypi1)
+[![Build Status](https://yocto-ci.resin.io/job/meta-raspberrypi2/badge/icon)](https://yocto-ci.resin.io/job/meta-raspberrypi2)
+[![Build Status](https://yocto-ci.resin.io/job/meta-raspberrypi3/badge/icon)](https://yocto-ci.resin.io/job/meta-raspberrypi3)
+[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/agherzan/meta-raspberrypi)
+
+## Quick links
+
+* Git repository web frontend:
+  <http://git.yoctoproject.org/cgit/cgit.cgi/meta-raspberrypi/>
+* Mailing list (yocto mailing list): <yocto@yoctoproject.org>
+* Issues management (Github Issues):
+  <https://github.com/agherzan/meta-raspberrypi/issues>
+
+## Description
+
+This is the general hardware specific BSP overlay for the RaspberryPi device.
+
+More information can be found at: <http://www.raspberrypi.org/> (Official Site)
+
+The core BSP part of meta-raspberrypi should work with different
+OpenEmbedded/Yocto distributions and layer stacks, such as:
+
+* Distro-less (only with OE-Core).
+* Angstrom.
+* Yocto/Poky (main focus of testing).
+
+## Dependencies
+
+This layer depends on:
+
+* URI: git://git.yoctoproject.org/poky
+  * branch: pyro
+  * revision: HEAD
+
+* URI: git://git.openembedded.org/meta-openembedded
+  * layers: meta-oe, meta-multimedia, meta-networking, meta-python
+  * branch: pyro
+  * revision: HEAD
+
+## Quick Start
+
+1. source poky/oe-init-build-env rpi-build
+2. Add this layer to bblayers.conf and the dependencies above
+3. Set MACHINE in local.conf to one of the supported boards
+4. bitbake rpi-hwup-image
+5. dd to a SD card the generated sdimg file (use xzcat if rpi-sdimg.xz is used)
+6. Boot your RPI.
+
+## Maintainers
+
+* Andrei Gherzan `<andrei at gherzan.ro>`
diff --git a/import-layers/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass b/import-layers/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass
index dc2330a..e925d4e 100644
--- a/import-layers/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass
+++ b/import-layers/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass
@@ -3,8 +3,8 @@
 def get_dts(d, ver=None):
     import re
 
-    staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR", True)
-    dts = d.getVar("KERNEL_DEVICETREE", True)
+    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.
diff --git a/import-layers/meta-raspberrypi/classes/sdcard_image-rpi.bbclass b/import-layers/meta-raspberrypi/classes/sdcard_image-rpi.bbclass
index 79ab53a..56a854e 100644
--- a/import-layers/meta-raspberrypi/classes/sdcard_image-rpi.bbclass
+++ b/import-layers/meta-raspberrypi/classes/sdcard_image-rpi.bbclass
@@ -72,6 +72,10 @@
 # Additional files and/or directories to be copied into the vfat partition from the IMAGE_ROOTFS.
 FATPAYLOAD ?= ""
 
+# SD card vfat partition image name
+SDIMG_VFAT = "${IMAGE_NAME}.vfat"
+SDIMG_LINK_VFAT = "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.vfat"
+
 IMAGE_CMD_rpi-sdimg () {
 
 	# Align partitions
@@ -107,7 +111,7 @@
 		DT_ROOT="${@split_overlays(d, 1)}"
 
 		# Copy board device trees to root folder
-		for DTB in ${DT_ROOT}; do
+		for DTB in $DT_ROOT; do
 			DTB_BASE_NAME=`basename ${DTB} .dtb`
 
 			mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.dtb ::${DTB_BASE_NAME}.dtb
@@ -115,7 +119,7 @@
 
 		# Copy device tree overlays to dedicated folder
 		mmd -i ${WORKDIR}/boot.img overlays
-		for DTB in ${DT_OVERLAYS}; do
+		for DTB in $DT_OVERLAYS; do
 				DTB_EXT=${DTB##*.}
 				DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
 
@@ -145,6 +149,16 @@
 	echo "${IMAGE_NAME}" > ${WORKDIR}/image-version-info
 	mcopy -i ${WORKDIR}/boot.img -v ${WORKDIR}/image-version-info ::
 
+        # Deploy vfat partition (for u-boot case only)
+        case "${KERNEL_IMAGETYPE}" in
+        "uImage")
+                cp ${WORKDIR}/boot.img ${IMGDEPLOYDIR}/${SDIMG_VFAT}
+                ln -sf ${SDIMG_VFAT} ${SDIMG_LINK_VFAT}
+                ;;
+        *)
+                ;;
+        esac
+
 	# Burn Partitions
 	dd if=${WORKDIR}/boot.img of=${SDIMG} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
 	# If SDIMG_ROOTFS_TYPE is a .xz file use xzcat
diff --git a/import-layers/meta-raspberrypi/conf/machine/include/rpi-base.inc b/import-layers/meta-raspberrypi/conf/machine/include/rpi-base.inc
index dc98099..7ed1088 100644
--- a/import-layers/meta-raspberrypi/conf/machine/include/rpi-base.inc
+++ b/import-layers/meta-raspberrypi/conf/machine/include/rpi-base.inc
@@ -32,6 +32,7 @@
     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 \
@@ -52,7 +53,44 @@
 # Set Raspberrypi splash image
 SPLASH = "psplash-raspberrypi"
 
-IMAGE_BOOT_FILES ?= "bcm2835-bootfiles/* ${KERNEL_IMAGETYPE};${SDIMG_KERNELIMAGE}"
+def make_dtb_boot_files(d):
+    # Generate IMAGE_BOOT_FILES entries for device tree files listed in
+    # KERNEL_DEVICETREE.
+    alldtbs = d.getVar('KERNEL_DEVICETREE')
+    imgtyp = d.getVar('KERNEL_IMAGETYPE')
+
+    def transform(dtb):
+        if dtb.endswith('dtb'):
+            # eg: whatever/bcm2708-rpi-b.dtb has:
+            #     DEPLOYDIR file: ${KERNEL_IMAGETYPE}-bcm2708-rpi-b.dtb
+            #     destination: bcm2708-rpi-b.dtb
+            base = os.path.basename(dtb)
+            src = '{}-{}'.format(imgtyp, base)
+            dst = base
+            return '{};{}'.format(src, dst)
+        elif dtb.endswith('dtbo'):
+            # overlay dtb:
+            # eg: overlays/hifiberry-amp.dtbo has:
+            #     DEPLOYDIR file: ${KERNEL_IMAGETYPE}-hifiberry-amp.dtbo
+            #     destination: overlays/hifiberry-amp.dtbo
+            base = os.path.basename(dtb)
+            src = '{}-{}'.format(imgtyp, base)
+            dst = dtb
+            return '{};{}'.format(src, dtb)
+
+    return ' '.join([transform(dtb) for dtb in alldtbs.split(' ') if dtb])
+
+
+IMAGE_BOOT_FILES ?= "bcm2835-bootfiles/* \
+                 ${@make_dtb_boot_files(d)} \
+                 ${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', \
+                    '${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.
diff --git a/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-providers.inc b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-providers.inc
index 078e9d6..5b2658b 100644
--- a/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-providers.inc
+++ b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-providers.inc
@@ -6,4 +6,5 @@
 PREFERRED_PROVIDER_virtual/libgles2 ?= "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "mesa", "userland", d)}"
 PREFERRED_PROVIDER_virtual/libgl ?= "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "mesa", "mesa-gl", d)}"
 PREFERRED_PROVIDER_virtual/mesa ?= "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "mesa", "mesa-gl", d)}"
+PREFERRED_PROVIDER_libgbm ?= "${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "mesa", "mesa-gl", d)}"
 PREFERRED_PROVIDER_jpeg ?= "jpeg"
diff --git a/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
index e65a4ae..faa6b41 100644
--- a/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
+++ b/import-layers/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
@@ -1,3 +1,3 @@
 # RaspberryPi BSP default versions
 
-PREFERRED_VERSION_linux-raspberrypi ?= "4.4.%"
+PREFERRED_VERSION_linux-raspberrypi ??= "4.9.%"
diff --git a/import-layers/meta-raspberrypi/conf/machine/raspberrypi0.conf b/import-layers/meta-raspberrypi/conf/machine/raspberrypi0.conf
index 7c2b811..3bd9e95 100644
--- a/import-layers/meta-raspberrypi/conf/machine/raspberrypi0.conf
+++ b/import-layers/meta-raspberrypi/conf/machine/raspberrypi0.conf
@@ -5,5 +5,5 @@
 MACHINEOVERRIDES = "raspberrypi:${MACHINE}"
 include conf/machine/raspberrypi.conf
 
-SERIAL_CONSOLE = "115200 ttyAMA0"
+SERIAL_CONSOLE ?= "115200 ttyAMA0"
 VC4_CMA_SIZE ?= "cma-128"
diff --git a/import-layers/meta-raspberrypi/conf/machine/raspberrypi3-64.conf b/import-layers/meta-raspberrypi/conf/machine/raspberrypi3-64.conf
index fc36142..e3d11f2 100644
--- a/import-layers/meta-raspberrypi/conf/machine/raspberrypi3-64.conf
+++ b/import-layers/meta-raspberrypi/conf/machine/raspberrypi3-64.conf
@@ -6,9 +6,6 @@
 
 MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-bcm43430"
 
-# Set this early so it overrides rpi-default-versions.inc
-PREFERRED_VERSION_linux-raspberrypi ?= "4.9.%"
-
 require conf/machine/include/arm/arch-armv8.inc
 include conf/machine/include/rpi-base.inc
 
@@ -26,6 +23,7 @@
     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 \
@@ -39,3 +37,4 @@
 VC4_CMA_SIZE ?= "cma-256"
 
 UBOOT_MACHINE = "rpi_3_config"
+MACHINE_FEATURES_append = " vc4graphics"
diff --git a/import-layers/meta-raspberrypi/conf/machine/raspberrypi3.conf b/import-layers/meta-raspberrypi/conf/machine/raspberrypi3.conf
index 884d875..b511bec 100644
--- a/import-layers/meta-raspberrypi/conf/machine/raspberrypi3.conf
+++ b/import-layers/meta-raspberrypi/conf/machine/raspberrypi3.conf
@@ -10,6 +10,6 @@
 
 SDIMG_KERNELIMAGE ?= "kernel7.img"
 KERNEL_DEFCONFIG ?= "bcm2709_defconfig"
-UBOOT_MACHINE ?= "rpi_2_config"
+UBOOT_MACHINE = "rpi_3_32b_config"
 SERIAL_CONSOLE ?= "115200 ttyS0"
 VC4_CMA_SIZE ?= "cma-256"
diff --git a/import-layers/meta-raspberrypi/docs/Makefile b/import-layers/meta-raspberrypi/docs/Makefile
new file mode 100644
index 0000000..d0de87f
--- /dev/null
+++ b/import-layers/meta-raspberrypi/docs/Makefile
@@ -0,0 +1,225 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  applehelp  to make an Apple Help Book"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  epub3      to make an epub3"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  texinfo    to make Texinfo files"
+	@echo "  info       to make Texinfo files and run them through makeinfo"
+	@echo "  gettext    to make PO message catalogs"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  xml        to make Docutils-native XML files"
+	@echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+	@echo "  coverage   to run coverage check of the documentation (if enabled)"
+	@echo "  dummy      to check syntax errors of document sources"
+
+.PHONY: clean
+clean:
+	rm -rf $(BUILDDIR)/*
+
+.PHONY: html
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+.PHONY: dirhtml
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+.PHONY: singlehtml
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+.PHONY: pickle
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+.PHONY: json
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+.PHONY: htmlhelp
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+.PHONY: qthelp
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/meta-raspberrypi.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/meta-raspberrypi.qhc"
+
+.PHONY: applehelp
+applehelp:
+	$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
+	@echo
+	@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
+	@echo "N.B. You won't be able to view it unless you put it in" \
+	      "~/Library/Documentation/Help or install it in your application" \
+	      "bundle."
+
+.PHONY: devhelp
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/meta-raspberrypi"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/meta-raspberrypi"
+	@echo "# devhelp"
+
+.PHONY: epub
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+.PHONY: epub3
+epub3:
+	$(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
+	@echo
+	@echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
+
+.PHONY: latex
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+.PHONY: latexpdf
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+.PHONY: latexpdfja
+latexpdfja:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through platex and dvipdfmx..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+.PHONY: text
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+.PHONY: man
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+.PHONY: texinfo
+texinfo:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo
+	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+	@echo "Run \`make' in that directory to run these through makeinfo" \
+	      "(use \`make info' here to do that automatically)."
+
+.PHONY: info
+info:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo "Running Texinfo files through makeinfo..."
+	make -C $(BUILDDIR)/texinfo info
+	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+.PHONY: gettext
+gettext:
+	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+	@echo
+	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+.PHONY: changes
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+.PHONY: linkcheck
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+.PHONY: doctest
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
+
+.PHONY: coverage
+coverage:
+	$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
+	@echo "Testing of coverage in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/coverage/python.txt."
+
+.PHONY: xml
+xml:
+	$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+	@echo
+	@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+.PHONY: pseudoxml
+pseudoxml:
+	$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+	@echo
+	@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
+
+.PHONY: dummy
+dummy:
+	$(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy
+	@echo
+	@echo "Build finished. Dummy builder generates no files."
diff --git a/import-layers/meta-raspberrypi/docs/conf.py b/import-layers/meta-raspberrypi/docs/conf.py
new file mode 100644
index 0000000..ce0bb0a
--- /dev/null
+++ b/import-layers/meta-raspberrypi/docs/conf.py
@@ -0,0 +1,343 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# meta-raspberrypi documentation build configuration file, created by
+# sphinx-quickstart on Tue May 23 09:51:24 2017.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+# import os
+# import sys
+# sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = []
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = ['.rst', '.md']
+
+# The encoding of source files.
+#
+# source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = 'meta-raspberrypi'
+copyright = '2017, meta-raspberrypi contributors'
+author = 'meta-raspberrypi contributors'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = 'pyro'
+# The full version, including alpha/beta/rc tags.
+release = 'pyro'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#
+# today = ''
+#
+# Else, today_fmt is used as the format for a strftime call.
+#
+# today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This patterns also effect to html_static_path and html_extra_path
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+#
+# default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#
+# add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#
+# add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#
+# show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+# modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+# keep_warnings = False
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = False
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'alabaster'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = []
+
+# The name for this set of Sphinx documents.
+# "<project> v<release> documentation" by default.
+#
+# html_title = 'meta-raspberrypi vmaster'
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#
+# html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#
+# html_logo = None
+
+# The name of an image file (relative to this directory) to use as a favicon of
+# the docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#
+# html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+#
+# html_extra_path = []
+
+# If not None, a 'Last updated on:' timestamp is inserted at every page
+# bottom, using the given strftime format.
+# The empty string is equivalent to '%b %d, %Y'.
+#
+# html_last_updated_fmt = None
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#
+# html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#
+# html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#
+# html_additional_pages = {}
+
+# If false, no module index is generated.
+#
+# html_domain_indices = True
+
+# If false, no index is generated.
+#
+# html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#
+# html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#
+# html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#
+# html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#
+# html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#
+# html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = None
+
+# Language to be used for generating the HTML full-text search index.
+# Sphinx supports the following languages:
+#   'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
+#   'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr', 'zh'
+#
+# html_search_language = 'en'
+
+# A dictionary with options for the search language support, empty by default.
+# 'ja' uses this config value.
+# 'zh' user can custom change `jieba` dictionary path.
+#
+# html_search_options = {'type': 'default'}
+
+# The name of a javascript file (relative to the configuration directory) that
+# implements a search results scorer. If empty, the default will be used.
+#
+# html_search_scorer = 'scorer.js'
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'meta-raspberrypidoc'
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+     # The paper size ('letterpaper' or 'a4paper').
+     #
+     # 'papersize': 'letterpaper',
+
+     # The font size ('10pt', '11pt' or '12pt').
+     #
+     # 'pointsize': '10pt',
+
+     # Additional stuff for the LaTeX preamble.
+     #
+     # 'preamble': '',
+
+     # Latex figure (float) alignment
+     #
+     # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+    (master_doc, 'meta-raspberrypi.tex', 'meta-raspberrypi Documentation',
+     'meta-raspberrypi contributors', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#
+# latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#
+# latex_use_parts = False
+
+# If true, show page references after internal links.
+#
+# latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#
+# latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#
+# latex_appendices = []
+
+# It false, will not define \strong, \code, 	itleref, \crossref ... but only
+# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added
+# packages.
+#
+# latex_keep_old_macro_names = True
+
+# If false, no module index is generated.
+#
+# latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    (master_doc, 'meta-raspberrypi', 'meta-raspberrypi Documentation',
+     [author], 1)
+]
+
+# If true, show URL addresses after external links.
+#
+# man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (master_doc, 'meta-raspberrypi', 'meta-raspberrypi Documentation',
+     author, 'meta-raspberrypi', 'One line description of project.',
+     'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#
+# texinfo_appendices = []
+
+# If false, no module index is generated.
+#
+# texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#
+# texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+#
+# texinfo_no_detailmenu = False
+
+source_parsers = {
+    '.md': 'recommonmark.parser.CommonMarkParser',
+}
diff --git a/import-layers/meta-raspberrypi/docs/contributing.md b/import-layers/meta-raspberrypi/docs/contributing.md
new file mode 100644
index 0000000..94dbf49
--- /dev/null
+++ b/import-layers/meta-raspberrypi/docs/contributing.md
@@ -0,0 +1,38 @@
+# Contributing
+
+## Mailing list
+
+The main communication tool we use is a mailing list:
+* <yocto@yoctoproject.org>
+* <https://lists.yoctoproject.org/listinfo/yocto>
+
+Feel free to ask any kind of questions but always prepend your email subject
+with "[meta-raspberrypi]". This is because we use the 'yocto' mailing list and
+not a perticular 'meta-raspberrypi' mailing list.
+
+## Patches and pull requests
+
+All the contributions should be compliant with the openembedded patch
+guidelines: <http://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines>
+
+To contribute to this project you should send pull requests to the github mirror
+(<https://github.com/agherzan/meta-raspberrypi>). **Additionally** you can send
+the patches for review to the above specified mailing list.
+
+When creating patches for the mailing list, please use something like:
+
+    git format-patch -s --subject-prefix='meta-raspberrypi][PATCH' origin
+
+When sending patches to the mailing list, please use something like:
+
+    git send-email --to yocto@yoctoproject.org <generated patch>
+
+## Github issues
+
+In order to manage and trace the meta-raspberrypi issues, we use github issues:
+<https://github.com/agherzan/meta-raspberrypi/issues>
+
+If you push patches which have a github issue associated, please provide the
+issue number in the commit log just before "Signed-off-by" line(s). Example line
+for a bug:
+`[Issue #13]`
diff --git a/import-layers/meta-raspberrypi/docs/extra-apps.md b/import-layers/meta-raspberrypi/docs/extra-apps.md
new file mode 100644
index 0000000..53007dc
--- /dev/null
+++ b/import-layers/meta-raspberrypi/docs/extra-apps.md
@@ -0,0 +1,9 @@
+# Extra apps
+
+## omxplayer
+
+omxplayer depends on libav which has a commercial license. So in order to be
+able to compile omxplayer you will need to whiteflag the commercial
+license in your local.conf:
+
+    LICENSE_FLAGS_WHITELIST = "commercial"
diff --git a/import-layers/meta-raspberrypi/docs/extra-build-config.md b/import-layers/meta-raspberrypi/docs/extra-build-config.md
new file mode 100644
index 0000000..365c490
--- /dev/null
+++ b/import-layers/meta-raspberrypi/docs/extra-build-config.md
@@ -0,0 +1,180 @@
+# Optional build configuration
+
+There are a set of ways in which a user can influence different paramenters of
+the build. We list here the ones that are closely related to this BSP or
+specific to it. For the rest please check:
+<http://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html>
+
+## Compressed deployed files
+
+1. Overwrite IMAGE_FSTYPES in local.conf
+    * `IMAGE_FSTYPES = "tar.bz2 ext3.xz"`
+
+2. Overwrite SDIMG_ROOTFS_TYPE in local.conf
+    * `SDIMG_ROOTFS_TYPE = "ext3.xz"`
+
+3. Overwrite SDIMG_COMPRESSION in local.conf
+    * `SDIMG_COMPRESSION = "xz"`
+
+Accommodate the values above to your own needs (ex: ext3 / ext4).
+
+## GPU memory
+
+* `GPU_MEM`: GPU memory in megabyte. Sets the memory split between the ARM and
+  GPU. ARM gets the remaining memory. Min 16. Default 64.
+
+* `GPU_MEM_256`: GPU memory in megabyte for the 256MB Raspberry Pi. Ignored by
+  the 512MB RP. Overrides gpu_mem. Max 192. Default not set.
+
+* `GPU_MEM_512`: GPU memory in megabyte for the 512MB Raspberry Pi. Ignored by
+  the 256MB RP. Overrides gpu_mem. Max 448. Default not set.
+
+* `GPU_MEM_1024`: GPU memory in megabyte for the 1024MB Raspberry Pi. Ignored by
+  the 256MB/512MB RP. Overrides gpu_mem. Max 944. Default not set.
+
+## Add purchased license codecs
+
+To add you own licenses use variables `KEY_DECODE_MPG2` and `KEY_DECODE_WVC1` in
+local.conf. Example:
+
+    KEY_DECODE_MPG2 = "12345678"
+    KEY_DECODE_WVC1 = "12345678"
+
+You can supply more licenses separated by comma. Example:
+
+    KEY_DECODE_WVC1 = "0x12345678,0xabcdabcd,0x87654321"
+
+
+## Disable overscan
+
+By default the GPU adds a black border around the video output to compensate for
+TVs which cut off part of the image. To disable this set this variable in
+local.conf:
+
+    DISABLE_OVERSCAN = "1"
+
+## Set overclocking options
+
+The Raspberry PI can be overclocked. As of now overclocking up to the "Turbo
+Mode" is officially supported by the raspbery and does not void warranty. Check
+the config.txt for a detailed description of options and modes. Example turbo
+mode:
+
+    ARM_FREQ = "1000"
+    CORE_FREQ = "500"
+    SDRAM_FREQ = "500"
+    OVER_VOLTAGE = "6"
+
+## Video camera support with V4L2 drivers
+
+Set this variable to enable support for the video camera (Linux 3.12.4+
+required):
+
+    VIDEO_CAMERA = "1"
+
+## Enable offline compositing support
+
+Set this variable to enable support for dispmanx offline compositing:
+
+    DISPMANX_OFFLINE = "1"
+
+This will enable the firmware to fall back to off-line compositing of Dispmanx
+elements. Normally the compositing is done on-line, during scanout, but cannot
+handle too many elements. With off-line enabled, an off-screen buffer is
+allocated for compositing. When scene complexity (number and sizes
+of elements) is high, compositing will happen off-line into the buffer.
+
+Heavily recommended for Wayland/Weston.
+
+See: <http://wayland.freedesktop.org/raspberrypi.html>
+
+## Enable kgdb over console support
+
+To add the kdbg over console (kgdboc) parameter to the kernel command line, set
+this variable in local.conf:
+
+    ENABLE_KGDB = "1"
+
+## Boot to U-Boot
+
+To have u-boot load kernel image, set in your local.conf:
+
+    KERNEL_IMAGETYPE = "uImage"
+
+This will make kernel.img be u-boot image which will load uImage. By default,
+kernel.img is the actual kernel image (ex. Image).
+
+## Image with Initramfs
+
+To build an initramfs image:
+
+* Set this 3 kernel variables (in linux-raspberrypi.inc for example)
+  - kernel_configure_variable BLK_DEV_INITRD y
+  - kernel_configure_variable INITRAMFS_SOURCE ""
+  - kernel_configure_variable RD_GZIP y
+
+* Set the yocto variables (in linux-raspberrypi.inc for example)
+  - `INITRAMFS_IMAGE = "<a name for your initramfs image>"`
+  - `INITRAMFS_IMAGE_BUNDLE = "1"`
+
+* Set the meta-rasberrypi variable (in raspberrypi.conf for example)
+  - `KERNEL_INITRAMFS = "-initramfs"`
+
+## Enable SPI bus
+
+When using device tree kernels, set this variable to enable the SPI bus:
+
+    ENABLE_SPI_BUS = "1"
+
+## Enable I2C
+
+When using device tree kernels, set this variable to enable I2C:
+
+    ENABLE_I2C = "1"
+
+## Enable PiTFT support
+
+Basic support for using PiTFT screens can be enabled by adding below in
+local.conf:
+
+* `MACHINE_FEATURES += "pitft"`
+  - This will enable SPI bus and i2c device-trees, it will also setup
+    framebuffer for console and x server on PiTFT.
+
+NOTE: To get this working the overlay for the PiTFT model must be build, added
+and specified as well (dtoverlay=<driver> in config.txt).
+
+Below is a list of currently supported PiTFT models in meta-raspberrypi, the
+modelname should be added as a MACHINE_FEATURES in local.conf like below:
+
+    MACHINE_FEATURES += "pitft <modelname>"
+
+List of currently supported models:
+* pitft22
+* pitft28r
+* pitft35r
+
+## Misc. display
+
+If you would like to use the Waveshare "C" 1024×600, 7 inch Capacitive Touch
+Screen LCD, HDMI interface (<http://www.waveshare.com/7inch-HDMI-LCD-C.htm>) Rev
+2.1, please set the following in your local.conf:
+
+    WAVESHARE_1024X600_C_2_1 = "1"
+
+## Enable UART
+
+RaspberryPi 0, 1, 2 and CM will have UART console enabled by default.
+
+RaspberryPi 0 WiFi and 3 does not have the UART enabled by default because this
+needs a fixed core frequency and enable_uart wil set it to the minimum. Certain
+operations - 60fps h264 decode, high quality deinterlace - which aren't
+performed on the ARM may be affected, and we wouldn't want to do that to users
+who don't want to use the serial port. Users who want serial console support on
+RaspberryPi3 will have to explicitely set in local.conf:
+
+    ENABLE_UART = "1"
+
+Ref.:
+* <https://github.com/raspberrypi/firmware/issues/553>
+* <https://github.com/RPi-Distro/repo/issues/22>
diff --git a/import-layers/meta-raspberrypi/docs/index.rst b/import-layers/meta-raspberrypi/docs/index.rst
new file mode 100644
index 0000000..0d7ee07
--- /dev/null
+++ b/import-layers/meta-raspberrypi/docs/index.rst
@@ -0,0 +1,26 @@
+.. meta-raspberrypi documentation master file, created by
+   sphinx-quickstart on Tue May 23 09:51:24 2017.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to meta-raspberrypi's documentation!
+============================================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   readme
+   layer-contents
+   extra-build-config
+   extra-apps
+   contributing
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/import-layers/meta-raspberrypi/docs/layer-contents.md b/import-layers/meta-raspberrypi/docs/layer-contents.md
new file mode 100644
index 0000000..29cfa35
--- /dev/null
+++ b/import-layers/meta-raspberrypi/docs/layer-contents.md
@@ -0,0 +1,24 @@
+# Layer Contents
+
+## Supported Machines
+
+* raspberrypi
+* raspberrypi0
+* raspberrypi0-wifi
+* raspberrypi2
+* raspberrypi3
+* raspberrypi3-64 (64 bit kernel & userspace)
+* raspberrypi-cm (dummy alias for raspberrypi)
+* raspberrypi-cm3 (dummy alias for raspberrypi2)
+
+## Images
+
+* rpi-hwup-image
+  * Hardware up image
+
+* rpi-basic-image
+  * Based on rpi-hwup-image with some added features (ex: splash)
+
+* rpi-test-image
+  * Image based on rpi-basic-image which includes most of the packages in this
+    layer and some media samples.
diff --git a/import-layers/meta-raspberrypi/docs/readme.md b/import-layers/meta-raspberrypi/docs/readme.md
new file mode 120000
index 0000000..32d46ee
--- /dev/null
+++ b/import-layers/meta-raspberrypi/docs/readme.md
@@ -0,0 +1 @@
+../README.md
\ No newline at end of file
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb b/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
index 20ec343..b3c5084 100644
--- a/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
+++ b/import-layers/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb
@@ -18,6 +18,7 @@
 PITFT="${@bb.utils.contains("MACHINE_FEATURES", "pitft", "1", "0", d)}"
 PITFT22="${@bb.utils.contains("MACHINE_FEATURES", "pitft22", "1", "0", d)}"
 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)}"
 
@@ -99,6 +100,11 @@
         echo "dtoverlay=pitft28-resistive,rotate=90,speed=32000000,txbuflen=32768" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
     fi
 
+    if [ "${PITFT35r}" = "1" ]; then
+        echo "# Enable PITFT35r display" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "dtoverlay=pitft35-resistive,rotate=90,speed=42000000,fps=20" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
+
     # UART support
     if [ "${ENABLE_UART}" = "1" ]; then
         echo "# Enable UART" >>${DEPLOYDIR}/bcm2835-bootfiles/config.txt
@@ -110,6 +116,16 @@
         echo "# Enable VC4 Graphics" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
         echo "dtoverlay=vc4-kms-v3d,${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)
+    if [ "${WAVESHARE_1024X600_C_2_1}" = "1" ]; then
+        echo "# Waveshare \"C\" 1024x600 7\" Rev2.1 IPS capacitive touch screen" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "max_usb_current=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "hdmi_group=2" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "hdmi_mode=87" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "hdmi_cvt 1024 600 60 6 0 0 0" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+        echo "hdmi_drive=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+    fi
 }
 
 do_deploy_append_raspberrypi3-64() {
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/common/firmware.inc b/import-layers/meta-raspberrypi/recipes-bsp/common/firmware.inc
index 1c3a911..67078c1 100644
--- a/import-layers/meta-raspberrypi/recipes-bsp/common/firmware.inc
+++ b/import-layers/meta-raspberrypi/recipes-bsp/common/firmware.inc
@@ -1,10 +1,9 @@
-RPIFW_DATE ?= "20170405"
+RPIFW_DATE ?= "20171029"
 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] = "4d27c1888a7bab3097471906e7b4a319"
+SRC_URI[sha256sum] = "46ce28c8d87ef22bdcc57ac1836ca3f04d1ec6f46580ff5a30bf76b3c0822117"
 PV = "${RPIFW_DATE}"
 
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0001-arm-add-save_boot_params-for-ARM1176.patch b/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0001-arm-add-save_boot_params-for-ARM1176.patch
deleted file mode 100644
index a5ebff5..0000000
--- a/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0001-arm-add-save_boot_params-for-ARM1176.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 3e10fcde3f3c24a488866dd33fa3f5d46ff3d7a3 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?C=C3=A9dric=20Schieli?= <cschieli@gmail.com>
-Date: Fri, 11 Nov 2016 11:59:06 +0100
-Subject: [PATCH] arm: add save_boot_params for ARM1176
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Implement a hook to allow boards to save boot-time CPU state for later
-use. When U-Boot is chain-loaded by another bootloader, CPU registers may
-contain useful information such as system configuration information. This
-feature mirrors the equivalent ARMv7 feature.
-
-Signed-off-by: Cédric Schieli <cschieli@gmail.com>
-Acked-by: Stephen Warren <swarren@nvidia.com>
-Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
-Upstream-status: Backport
----
- arch/arm/cpu/arm1176/start.S | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/arch/arm/cpu/arm1176/start.S b/arch/arm/cpu/arm1176/start.S
-index a602d4e..7c00201 100644
---- a/arch/arm/cpu/arm1176/start.S
-+++ b/arch/arm/cpu/arm1176/start.S
-@@ -16,6 +16,7 @@
- 
- #include <asm-offsets.h>
- #include <config.h>
-+#include <linux/linkage.h>
- 
- #ifndef CONFIG_SYS_PHY_UBOOT_BASE
- #define CONFIG_SYS_PHY_UBOOT_BASE	CONFIG_SYS_UBOOT_BASE
-@@ -37,6 +38,11 @@
- 	.globl reset
- 
- reset:
-+	/* Allow the board to save important registers */
-+	b	save_boot_params
-+.globl	save_boot_params_ret
-+save_boot_params_ret:
-+
- 	/*
- 	 * set the cpu to SVC32 mode
- 	 */
-@@ -110,3 +116,7 @@ mmu_disable_phys:
- c_runtime_cpu_setup:
- 
- 	mov	pc, lr
-+
-+WEAK(save_boot_params)
-+	b	save_boot_params_ret	/* back to my caller */
-+ENDPROC(save_boot_params)
--- 
-2.1.4
-
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch b/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch
deleted file mode 100644
index 323b7ab..0000000
--- a/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From ade243a211d62327e9ebadce27bbbff7981e37f0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?C=C3=A9dric=20Schieli?= <cschieli@gmail.com>
-Date: Fri, 11 Nov 2016 11:59:07 +0100
-Subject: [PATCH] rpi: passthrough of the firmware provided FDT blob
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Raspberry firmware used to pass a FDT blob at a fixed address (0x100),
-but this is not true anymore. The address now depends on both the
-memory size and the blob size [1].
-
-If one wants to passthrough this FDT blob to the kernel, the most
-reliable way is to save its address from the r2/x0 register in the
-U-Boot entry point and expose it in a environment variable for
-further processing.
-
-This patch just does this:
-- save the provided address in the global variable fw_dtb_pointer
-- expose it in ${fdt_addr} if it points to a a valid FDT blob
-
-There are many different ways to use it. One can, for example, use
-the following script which will extract from the tree the command
-line built by the firmware, then hand over the blob to a previously
-loaded kernel:
-
-fdt addr ${fdt_addr}
-fdt get value bootargs /chosen bootargs
-bootz ${kernel_addr_r} - ${fdt_addr}
-
-Alternatively, users relying on sysboot/pxe can simply omit any FDT
-statement in their extlinux.conf file, U-Boot will automagically pick
-${fdt_addr} and pass it to the kernel.
-
-[1] https://www.raspberrypi.org/forums//viewtopic.php?f=107&t=134018
-
-Upstream-Status: Backport
-
-Signed-off-by: Cédric Schieli <cschieli@gmail.com>
-Acked-by: Stephen Warren <swarren@nvidia.com>
-Signed-off-by: Jonathan Liu <net147@gmail.com>
----
- board/raspberrypi/rpi/Makefile        |  1 +
- board/raspberrypi/rpi/lowlevel_init.S | 36 +++++++++++++++++++++++++++++++++++
- board/raspberrypi/rpi/rpi.c           | 29 ++++++++++++++++++++++++++++
- 3 files changed, 66 insertions(+)
- create mode 100644 board/raspberrypi/rpi/lowlevel_init.S
-
-diff --git a/board/raspberrypi/rpi/Makefile b/board/raspberrypi/rpi/Makefile
-index 4ce2c98..dcb25ac 100644
---- a/board/raspberrypi/rpi/Makefile
-+++ b/board/raspberrypi/rpi/Makefile
-@@ -5,3 +5,4 @@
- #
- 
- obj-y	:= rpi.o
-+obj-y	+= lowlevel_init.o
-diff --git a/board/raspberrypi/rpi/lowlevel_init.S b/board/raspberrypi/rpi/lowlevel_init.S
-new file mode 100644
-index 0000000..cdbd8e1
---- /dev/null
-+++ b/board/raspberrypi/rpi/lowlevel_init.S
-@@ -0,0 +1,36 @@
-+/*
-+ * (C) Copyright 2016
-+ * Cédric Schieli <cschieli@gmail.com>
-+ *
-+ * SPDX-License-Identifier:	GPL-2.0+
-+ */
-+
-+#include <config.h>
-+
-+.align 8
-+.global fw_dtb_pointer
-+fw_dtb_pointer:
-+#ifdef CONFIG_ARM64
-+	.dword 0x0
-+#else
-+	.word 0x0
-+#endif
-+
-+/*
-+ * Routine: save_boot_params (called after reset from start.S)
-+ * Description: save ATAG/FDT address provided by the firmware at boot time
-+ */
-+
-+.global save_boot_params
-+save_boot_params:
-+
-+	/* The firmware provided ATAG/FDT address can be found in r2/x0 */
-+#ifdef CONFIG_ARM64
-+	adr	x8, fw_dtb_pointer
-+	str	x0, [x8]
-+#else
-+	str	r2, fw_dtb_pointer
-+#endif
-+
-+	/* Returns */
-+	b	save_boot_params_ret
-diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
-index 6245b36..ffd6d31 100644
---- a/board/raspberrypi/rpi/rpi.c
-+++ b/board/raspberrypi/rpi/rpi.c
-@@ -25,6 +25,9 @@
- 
- DECLARE_GLOBAL_DATA_PTR;
- 
-+/* From lowlevel_init.S */
-+extern unsigned long fw_dtb_pointer;
-+
- static const struct bcm2835_gpio_platdata gpio_platdata = {
- 	.base = BCM2835_GPIO_BASE,
- };
-@@ -285,6 +288,31 @@ static void set_fdtfile(void)
- 	setenv("fdtfile", fdtfile);
- }
- 
-+/*
-+ * If the firmware provided a valid FDT at boot time, let's expose it in
-+ * ${fdt_addr} so it may be passed unmodified to the kernel.
-+ */
-+static void set_fdt_addr(void)
-+{
-+	if (getenv("fdt_addr"))
-+		return;
-+
-+	if (fdt_magic(fw_dtb_pointer) != FDT_MAGIC)
-+		return;
-+
-+	setenv_hex("fdt_addr", fw_dtb_pointer);
-+}
-+
-+/*
-+ * Prevent relocation from stomping on a firmware provided FDT blob.
-+ */
-+unsigned long board_get_usable_ram_top(unsigned long total_size)
-+{
-+	if ((gd->ram_top - fw_dtb_pointer) > SZ_64M)
-+		return gd->ram_top;
-+	return fw_dtb_pointer & ~0xffff;
-+}
-+
- static void set_usbethaddr(void)
- {
- 	ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_mac_address, msg, 1);
-@@ -356,6 +384,7 @@ static void set_serial_number(void)
- 
- int misc_init_r(void)
- {
-+	set_fdt_addr();
- 	set_fdtfile();
- 	set_usbethaddr();
- #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
--- 
-2.10.2
-
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0003-Include-lowlevel_init.o-for-rpi2.patch b/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0003-Include-lowlevel_init.o-for-rpi2.patch
deleted file mode 100644
index 1431a2e..0000000
--- a/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0003-Include-lowlevel_init.o-for-rpi2.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 1eb01436bc57ad32519a4567a1c9ec82d52d60a1 Mon Sep 17 00:00:00 2001
-From: Paul Barker <paul@paulbarker.me.uk>
-Date: Tue, 29 Nov 2016 19:47:49 +0000
-Subject: [PATCH] Include lowlevel_init.o for rpi2
-
-Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
-Upstream-status: Inappropriate
-    (not needed upstream as rpi_2 board directory is removed in latest
-    version)
----
- board/raspberrypi/rpi_2/Makefile | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/board/raspberrypi/rpi_2/Makefile b/board/raspberrypi/rpi_2/Makefile
-index d82cd21..9f865c5 100644
---- a/board/raspberrypi/rpi_2/Makefile
-+++ b/board/raspberrypi/rpi_2/Makefile
-@@ -5,3 +5,4 @@
- #
-
- obj-y	:= ../rpi/rpi.o
-+obj-y	+= ../rpi/lowlevel_init.o
---
-2.1.4
-
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend b/import-layers/meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend
index a4545f0..3781666 100644
--- a/import-layers/meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend
+++ b/import-layers/meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend
@@ -1,7 +1 @@
-FILESEXTRAPATHS_prepend_rpi := "${THISDIR}/files:"
 RDEPENDS_${PN}_append_rpi = " rpi-u-boot-scr"
-SRC_URI_append_rpi = " \
-    file://0001-arm-add-save_boot_params-for-ARM1176.patch \
-    file://0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch \
-    file://0003-Include-lowlevel_init.o-for-rpi2.patch \
-    "
diff --git a/import-layers/meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend b/import-layers/meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend
index 65dc30f..698564b 100644
--- a/import-layers/meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend
+++ b/import-layers/meta-raspberrypi/recipes-core/psplash/psplash_git.bbappend
@@ -1,2 +1,4 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-SPLASH_IMAGES += "file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
+SPLASH_IMAGES_append_rpi = " file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
+ALTERNATIVE_PRIORITY_psplash-raspberrypi[psplash] = "10"
+
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.50.bb b/import-layers/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb
similarity index 86%
rename from import-layers/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.50.bb
rename to import-layers/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb
index 9cf6f48..8e41c61 100644
--- a/import-layers/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.50.bb
+++ b/import-layers/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb
@@ -12,8 +12,8 @@
 
 SRC_URI = "http://www.airspayce.com/mikem/bcm2835/bcm2835-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "258caf3437012d09a651e1852d0bd60c"
-SRC_URI[sha256sum] = "52180b8a61b6546c1df4aed259d0a4d2fa56e50605e0d4d967a76bf2b23dafb8"
+SRC_URI[md5sum] = "b5dc426b4ff258bb1397442f98e40236"
+SRC_URI[sha256sum] = "b9fd10f7a80aadaed28a77168709b7c519568a63b6e98d0a50e9c5fe31bea6bb"
 
 inherit autotools
 
@@ -35,6 +35,8 @@
 
 PACKAGES += "${PN}-tests"
 
+RDEPENDS_${PN}-dev = ""
+
 FILES_${PN} = ""
 FILES_${PN}-tests = "${libdir}/${BPN}"
 FILES_${PN}-dbg += "${libdir}/${BPN}/.debug"
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/files/remove-initscript-lsb-dependency.patch b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/files/remove-initscript-lsb-dependency.patch
index 7ea9a3b..c8afe60 100644
--- a/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/files/remove-initscript-lsb-dependency.patch
+++ b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/files/remove-initscript-lsb-dependency.patch
@@ -1,13 +1,28 @@
-Remove dependencies on LSB functions
+From 1338f98a279616f4e5e9ea30a25d1dfa0c7df5d6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petter=20Mab=C3=A4cker?= <petter@technux.se>
+Date: Sun, 4 Jun 2017 12:22:40 +0200
+Subject: [PATCH] Remove dependencies on LSB functions
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+See this as a rebase of the previous 'Remove dependencies on LSB
+functions patch' with only minor modifications from the original version,
+based on the work done by Alex Lennon <ajlennon@dynamicdevices.co.uk> in
+'25fd817 pi-blaster: Added recipe'.
 
 Upstream-Status: Inappropriate [configuration]
 
-Signed-off-by: Alex Lennon <ajlennon@dynamicdevices.co.uk>
+Signed-off-by: Petter Mabäcker <petter@technux.se>
+---
+ debian/pi-blaster.init | 38 +++++++-------------------------------
+ 1 file changed, 7 insertions(+), 31 deletions(-)
 
-diff -ur git.org/pi-blaster.boot.sh git/pi-blaster.boot.sh
---- git.org/pi-blaster.boot.sh	2014-05-20 14:49:44.378582168 +0100
-+++ git/pi-blaster.boot.sh	2014-05-20 14:51:08.330582386 +0100
-@@ -28,12 +28,12 @@
+diff --git a/debian/pi-blaster.init b/debian/pi-blaster.init
+index b142d70..01a686c 100644
+--- a/debian/pi-blaster.init
++++ b/debian/pi-blaster.init
+@@ -28,12 +28,12 @@ SCRIPTNAME=/etc/init.d/$NAME
  [ -r /etc/default/$NAME ] && . /etc/default/$NAME
  
  # Load the VERBOSE setting and other rcS variables
@@ -22,7 +37,7 @@
  
  #
  # Function that starts the daemon/service
-@@ -77,48 +77,23 @@
+@@ -77,48 +77,24 @@ do_stop()
  
  case "$1" in
    start)
@@ -52,6 +67,7 @@
  	# 'force-reload' alias
  	#
 -	log_daemon_msg "Restarting $DESC" "$NAME"
++	echo "Restarting $DESC" "$NAME"
  	do_stop
 -	case "$?" in
 -	  0|1)
@@ -67,11 +83,14 @@
 -		log_end_msg 1
 -		;;
 -	esac
-+	do_start
++    do_start
  	;;
    *)
 -	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
-+	echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
++	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
  	exit 3
  	;;
  esac
+-- 
+1.9.1
+
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster.inc b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster.inc
index a3beccc..a548957 100644
--- a/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster.inc
+++ b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster.inc
@@ -2,7 +2,7 @@
 HOMEPAGE = "https://github.com/sarfata/pi-blaster/"
 SECTION = "devel/libs"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://README.md;beginline=157;endline=170;md5=f20832f31126609af5a7bf2340014540"
+LIC_FILES_CHKSUM = "file://README.md;beginline=212;endline=239;md5=a012868ef5f83b9f257af253d7cb07a3"
 
 SRC_URI = "git://github.com/sarfata/pi-blaster \
            file://remove-initscript-lsb-dependency.patch \
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb
index 263852b..ac812ab 100644
--- a/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb
+++ b/import-layers/meta-raspberrypi/recipes-devtools/pi-blaster/pi-blaster_git.bb
@@ -1,3 +1,3 @@
 require pi-blaster.inc
 
-SRCREV = "ec5e1b4c6191d8f9a538497dbbb86f9cf0de7016"
+SRCREV = "9f45eb23a8a3b2d1c08d08a6d68f206fe91ecf4c"
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.1.bb b/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.2.bb
similarity index 78%
rename from import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.1.bb
rename to import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.2.bb
index 89f601b..a08ea98 100644
--- a/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.1.bb
+++ b/import-layers/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.6.2.bb
@@ -10,8 +10,8 @@
           http://pypi.python.org/packages/source/R/RPi.GPIO/${SRCNAME}-${PV}.tar.gz \
           file://0001-Remove-nested-functions.patch \
           "
-SRC_URI[md5sum] = "254d0443a436eb241367c487274e7197"
-SRC_URI[sha256sum] = "54e5fb06d9ea1a1389a497fb5a06dfa950c86303b0f4ba89b68c55999d1df064"
+SRC_URI[md5sum] = "9db86fd5f3bae872de9dbb068ee0b096"
+SRC_URI[sha256sum] = "82acff0ef6bbe3cdf6f4dbdd73d96add5294bb94baf7f51c1d901861af3c2392"
 
 S = "${WORKDIR}/${SRCNAME}-${PV}"
 
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb b/import-layers/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb
index 69ecb6f..1a6cee7 100644
--- a/import-layers/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb
+++ b/import-layers/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb
@@ -16,5 +16,10 @@
 
 COMPATIBLE_MACHINE = "raspberrypi"
 
+RDEPENDS_${PN} = "\
+    python-logging \
+    python-threading \
+"
+
 SRC_URI[md5sum] = "cefc45422833dcafcd59b78dffc540f4"
 SRC_URI[sha256sum] = "b89f75dec9de354681209ebfaedfe22b7c178aacd91a604a7bd6d92024e4cf7e"
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch
index 603422c..01e0546 100644
--- a/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch
+++ b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/files/0001-Add-initial-cross-compile-support.patch
@@ -1,21 +1,21 @@
-From 6d85e6cc3ab97c3f060e5e0a8e3f1945a14c86ba Mon Sep 17 00:00:00 2001
-From: Gianfranco Costamagna <gianfranco.costamagna@abinsula.com>
-Date: Mon, 12 Oct 2015 12:15:51 +0200
-Subject: [PATCH] Add initial cross compile support (rebase from Petter Mabäcker <petter@technux.se> version)
+From ca25788e2563bad0d554deb9f4300d1e7d062825 Mon Sep 17 00:00:00 2001
+From: Aurelian Zanoschi <aurelian17@gmail.com>
+Date: Mon, 31 Jul 2017 20:25:15 +0300
+Subject: [PATCH] Add initial cross compile support
 
 ---
- devLib/Makefile             |   54 ++++++++++++++++++++++++-------------------
- 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, 119 insertions(+), 88 deletions(-)
+ devLib/Makefile             | 54 +++++++++++++++++++++++++--------------------
+ examples/Gertboard/Makefile | 22 +++++++++++-------
+ examples/Makefile           | 22 +++++++++++-------
+ examples/PiFace/Makefile    | 22 +++++++++++-------
+ examples/PiGlow/Makefile    |  4 ++--
+ examples/q2w/Makefile       |  4 ++--
+ gpio/Makefile               | 29 ++++++++++++------------
+ wiringPi/Makefile           | 52 ++++++++++++++++++++++++-------------------
+ 8 files changed, 120 insertions(+), 89 deletions(-)
 
 diff --git a/devLib/Makefile b/devLib/Makefile
-index 0fb0033..cbea759 100644
+index cf665d6..040c03a 100644
 --- a/devLib/Makefile
 +++ b/devLib/Makefile
 @@ -31,15 +31,19 @@ ifneq ($V,1)
@@ -46,7 +46,7 @@
  
  LIBS    =
  
-@@ -66,16 +70,16 @@ $(STATIC):	$(OBJ)
+@@ -68,16 +72,16 @@ $(STATIC):	$(OBJ)
  
  $(DYNAMIC):	$(OBJ)
  	$Q echo "[Link (Dynamic)]"
@@ -66,7 +66,7 @@
  
  .PHONY:	tags
  tags:	$(SRC)
-@@ -86,22 +90,22 @@ tags:	$(SRC)
+@@ -88,22 +92,22 @@ tags:	$(SRC)
  .PHONY:	install
  install:	$(DYNAMIC)
  	$Q echo "[Install Headers]"
@@ -99,7 +99,7 @@
  
  .PHONY:	install-deb
  install-deb:	$(DYNAMIC)
-@@ -116,9 +120,11 @@ install-deb:	$(DYNAMIC)
+@@ -118,9 +122,11 @@ install-deb:	$(DYNAMIC)
  .PHONY:	uninstall
  uninstall:
  	$Q echo "[UnInstall]"
@@ -148,7 +148,7 @@
  # Should not alter anything below this line
  ###############################################################################
 diff --git a/examples/Makefile b/examples/Makefile
-index e6b9b71..931b167 100644
+index 6d87885..8623816 100644
 --- a/examples/Makefile
 +++ b/examples/Makefile
 @@ -26,14 +26,20 @@ ifneq ($V,1)
@@ -162,7 +162,7 @@
 -CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
 -
 -LDFLAGS	= -L/usr/local/lib
--LDLIBS    = -lwiringPi -lwiringPiDev -lpthread -lm
+-LDLIBS    = -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt
 +DESTDIR?=/usr
 +PREFIX?=/local
 +
@@ -176,12 +176,12 @@
 +CFLAGS	?= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
 +
 +LDFLAGS	?= -L$(LIB_DIR)
-+LDLIBS    ?= -lwiringPi -lwiringPiDev -lpthread -lm
++LDLIBS    ?= -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt
  
  # Should not alter anything below this line
  ###############################################################################
 diff --git a/examples/PiFace/Makefile b/examples/PiFace/Makefile
-index 4685adc..cfaf902 100644
+index f937c14..ad030b3 100644
 --- a/examples/PiFace/Makefile
 +++ b/examples/PiFace/Makefile
 @@ -26,14 +26,20 @@ ifneq ($V,1)
@@ -214,7 +214,7 @@
  # Should not alter anything below this line
  ###############################################################################
 diff --git a/examples/PiGlow/Makefile b/examples/PiGlow/Makefile
-index acd4818..dabd64e 100644
+index f182db7..d1ea74f 100644
 --- a/examples/PiGlow/Makefile
 +++ b/examples/PiGlow/Makefile
 @@ -29,10 +29,10 @@ endif
@@ -231,7 +231,7 @@
  
  # Should not alter anything below this line
 diff --git a/examples/q2w/Makefile b/examples/q2w/Makefile
-index 6f50fa0..c5e9f6e 100644
+index 8f773bf..14aa6e4 100644
 --- a/examples/q2w/Makefile
 +++ b/examples/q2w/Makefile
 @@ -29,10 +29,10 @@ endif
@@ -248,7 +248,7 @@
  
  ###############################################################################
 diff --git a/gpio/Makefile b/gpio/Makefile
-index 7dcd090..83ec454 100644
+index f41a005..22753ee 100644
 --- a/gpio/Makefile
 +++ b/gpio/Makefile
 @@ -30,13 +30,17 @@ ifneq ($V,1)
@@ -259,7 +259,7 @@
 -DEBUG	= -O2
 -CC	= gcc
 -INCLUDE	= -I$(DESTDIR)$(PREFIX)/include
--CFLAGS	= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+-CFLAGS	= $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe
 +INCLUDE_DIR?=$(DESTDIR)$(PREFIX)/include
 +LIB_DIR?=$(DESTDIR)$(PREFIX)/lib
 +BIN_DIR?=$(DESTDIR)$(PREFIX)/bin
@@ -269,10 +269,10 @@
 +DEBUG	?= -O2
 +CC	?= gcc
 +INCLUDE	?= -I$(INCLUDE_DIR)
-+CFLAGS	?= $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
++CFLAGS	?= $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe
 +
 +LDFLAGS	?= -L$(LIB_DIR)
- LIBS    = -lwiringPi -lwiringPiDev -lpthread
+ LIBS    = -lwiringPi -lwiringPiDev -lpthread -lrt -lm -lcrypt
  
  # May not need to  alter anything below this line
 @@ -72,13 +76,10 @@ tags:	$(SRC)
@@ -293,7 +293,7 @@
  
  .PHONY:	install-deb
  install-deb:	gpio
-@@ -89,7 +90,7 @@ install-deb:	gpio
+@@ -91,7 +92,7 @@ install-deb:	gpio
  .PHONY:	uninstall
  uninstall:
  	$Q echo "[UnInstall]"
@@ -303,10 +303,10 @@
  
  .PHONY:	depend
 diff --git a/wiringPi/Makefile b/wiringPi/Makefile
-index 6bbcc5d..5355b74 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
  
@@ -334,19 +334,22 @@
 +CC	?= gcc
 +INCLUDE	?= -I.
  DEFS	= -D_GNU_SOURCE
- CFLAGS	= $(DEBUG) $(DEFS) -Wformat=2 -Wall -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
  
-@@ -89,17 +93,17 @@ $(STATIC):	$(OBJ)
+ 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) -lpthread $(OBJ)
-+	$Q $(CC) $(LDFLAGS) -shared -Wl,-soname,$(BASE_NAME).so.$(DYN_VERS_MAJ) -o $(BASE_NAME).so -lpthread $(OBJ)
+-	$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 $(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
@@ -357,7 +360,7 @@
  
  .PHONY:	tags
  tags:	$(SRC)
-@@ -110,22 +114,22 @@ tags:	$(SRC)
+@@ -99,22 +103,22 @@ tags:	$(SRC)
  .PHONY:	install
  install:	$(DYNAMIC)
  	$Q echo "[Install Headers]"
@@ -390,7 +393,7 @@
  
  .PHONY:	install-deb
  install-deb:	$(DYNAMIC)
-@@ -140,9 +144,11 @@ install-deb:	$(DYNAMIC)
+@@ -129,9 +133,11 @@ install-deb:	$(DYNAMIC)
  .PHONY:	uninstall
  uninstall:
  	$Q echo "[UnInstall]"
@@ -406,5 +409,5 @@
  
  .PHONY:	depend
 -- 
-2.1.4
+2.7.4
 
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
deleted file mode 100644
index 5de5853..0000000
--- a/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi/0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 7f65eb37a82a6d9b095d9c8f262ad9dd205acd03 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 30 Jan 2016 16:57:38 -0800
-Subject: [PATCH] include <asm/ioctl.h> directly for _IOC_SIZEBITS
-
-Fixes errors like
-| wiringPiSPI.c: In function 'wiringPiSPIDataRW':
-| wiringPiSPI.c:89:35: error: '_IOC_SIZEBITS' undeclared (first use in
-this function)
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Submitted
-
- wiringPi/wiringPi.c    | 1 +
- wiringPi/wiringPiI2C.c | 1 +
- wiringPi/wiringPiSPI.c | 1 +
- 3 files changed, 3 insertions(+)
-
-diff --git a/wiringPi/wiringPi.c b/wiringPi/wiringPi.c
-index 32e5100..cb5db9d 100644
---- a/wiringPi/wiringPi.c
-+++ b/wiringPi/wiringPi.c
-@@ -64,6 +64,7 @@
- #include <time.h>
- #include <fcntl.h>
- #include <pthread.h>
-+#include <asm/ioctl.h>
- #include <sys/time.h>
- #include <sys/mman.h>
- #include <sys/stat.h>
-diff --git a/wiringPi/wiringPiI2C.c b/wiringPi/wiringPiI2C.c
-index c787bce..efdf53c 100644
---- a/wiringPi/wiringPiI2C.c
-+++ b/wiringPi/wiringPiI2C.c
-@@ -52,6 +52,7 @@
- #include <string.h>
- #include <fcntl.h>
- #include <sys/ioctl.h>
-+#include <asm/ioctl.h>
- 
- #include "wiringPi.h"
- #include "wiringPiI2C.h"
-diff --git a/wiringPi/wiringPiSPI.c b/wiringPi/wiringPiSPI.c
-index 453df31..ae3c7d9 100644
---- a/wiringPi/wiringPiSPI.c
-+++ b/wiringPi/wiringPiSPI.c
-@@ -27,6 +27,7 @@
- #include <fcntl.h>
- #include <errno.h>
- #include <string.h>
-+#include <asm/ioctl.h>
- #include <sys/ioctl.h>
- #include <linux/spi/spidev.h>
- 
--- 
-2.7.0
-
diff --git a/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb
index c337b19..7953a55 100644
--- a/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb
+++ b/import-layers/meta-raspberrypi/recipes-devtools/wiringPi/wiringpi_git.bb
@@ -4,14 +4,13 @@
 LICENSE = "LGPLv3+"
 LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
 
-# tag 2.32
-SRCREV = "b0a60c3302973ca1878d149d61f2f612c8f27fac"
+# tag 2.44
+SRCREV = "96344ff7125182989f98d3be8d111952a8f74e15"
 
 S = "${WORKDIR}/git"
 
 SRC_URI = "git://git.drogon.net/wiringPi \
            file://0001-Add-initial-cross-compile-support.patch \
-           file://0001-include-asm-ioctl.h-directly-for-_IOC_SIZEBITS.patch \
            "
 
 COMPATIBLE_MACHINE = "raspberrypi"
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend b/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
index 7f8b600..7692133 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
+++ b/import-layers/meta-raspberrypi/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
@@ -1 +1,2 @@
 EGLINFO_DEVICE_rpi  = "raspberrypi"
+COMPATIBLE_HOST_rpi = "${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', 'null', '"(.*)"', d)}"
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/mesa/mesa-gl_%.bbappend b/import-layers/meta-raspberrypi/recipes-graphics/mesa/mesa-gl_%.bbappend
new file mode 100644
index 0000000..7897125
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/mesa/mesa-gl_%.bbappend
@@ -0,0 +1 @@
+PACKAGECONFIG_append_rpi = " gbm"
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0001-Allow-applications-to-set-next-resource-handle.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0001-Allow-applications-to-set-next-resource-handle.patch
index 4f72845..5861c4e 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0001-Allow-applications-to-set-next-resource-handle.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0001-Allow-applications-to-set-next-resource-handle.patch
@@ -1,7 +1,7 @@
-From 4b68419e58ef31e72abab688d0c7cc5db80efc13 Mon Sep 17 00:00:00 2001
+From e45bc677368d0f8d42720aad242f33f6e2687fb1 Mon Sep 17 00:00:00 2001
 From: Dom Cobley <dc4@broadcom.com>
 Date: Tue, 9 Jul 2013 09:26:26 -0400
-Subject: [PATCH 01/12] Allow applications to set next resource handle
+Subject: [PATCH 01/15] Allow applications to set next resource handle
 
 This patch adds provisions in userland to
 let apps callers set the next rendereing dispmanx resource.
@@ -204,5 +204,5 @@
  
  FN(void, eglIntGetColorData_impl, (EGL_SURFACE_ID_T s, KHRN_IMAGE_FORMAT_T format, uint32_t width, uint32_t height, int32_t stride, uint32_t y_offset, void *data))
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0002-wayland-Add-support-for-the-Wayland-winsys.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0002-wayland-Add-support-for-the-Wayland-winsys.patch
index 6cc8ea8..d6e6476 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0002-wayland-Add-support-for-the-Wayland-winsys.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0002-wayland-Add-support-for-the-Wayland-winsys.patch
@@ -1,7 +1,7 @@
-From e3d2d0007e1c6c32ab7d9a28f1e399d42b511333 Mon Sep 17 00:00:00 2001
+From 15fb270f438f4ef1413192b5ce1e0dc784b45d9e Mon Sep 17 00:00:00 2001
 From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
 Date: Tue, 1 Oct 2013 13:19:20 +0200
-Subject: [PATCH 02/12] wayland: Add support for the Wayland winsys
+Subject: [PATCH 02/15] wayland: Add support for the Wayland winsys
 
 * Adds EGL_WL_bind_wayland_display extension
 * Adds wayland-egl library
@@ -17,7 +17,7 @@
 private header that can be included from EGL and vc_* instead of in
 vc_vchi_dispmanx.h
 ---
- .gitignore                                         |   2 +
+ .gitignore                                         |   1 +
  CMakeLists.txt                                     |  11 +
  README.md                                          |   4 +
  buildme                                            |  10 +-
@@ -47,7 +47,7 @@
  interface/vmcs_host/vc_vchi_dispmanx.h             |  15 ++
  interface/wayland/dispmanx.xml                     | 123 +++++++++++
  makefiles/cmake/Wayland.cmake                      |  72 ++++++
- 30 files changed, 1258 insertions(+), 98 deletions(-)
+ 30 files changed, 1257 insertions(+), 98 deletions(-)
  create mode 100644 interface/khronos/common/linux/khrn_wayland.c
  copy interface/{vmcs_host/vc_vchi_dispmanx.h => khronos/common/linux/khrn_wayland.h} (56%)
  create mode 100644 interface/khronos/ext/egl_wayland.c
@@ -58,17 +58,16 @@
  create mode 100644 makefiles/cmake/Wayland.cmake
 
 diff --git a/.gitignore b/.gitignore
-index 4a88665..5da71a9 100644
+index 63570f1..1459436 100644
 --- a/.gitignore
 +++ b/.gitignore
-@@ -13,3 +13,5 @@ build/
- *.lai
- *.la
- *.a
-+
+@@ -30,3 +30,4 @@ build/
+ *.pts
+ *.ppm
+ *.mkv
 +*~
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 98252c3..d6ae907 100644
+index cfc8ae5..673a5ad 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
 @@ -24,6 +24,17 @@ include(makefiles/cmake/global_settings.cmake)
@@ -102,7 +101,7 @@
 +
 +$ BUILD_WAYLAND=1 ./buildme.
 diff --git a/buildme b/buildme
-index 1061745..d0e6e54 100755
+index b8fd440..a780bb6 100755
 --- a/buildme
 +++ b/buildme
 @@ -8,6 +8,10 @@ fi
@@ -117,7 +116,7 @@
  	# Native compile on the Raspberry Pi
  	mkdir -p build/raspberry/$BUILDSUBDIR
 @@ -32,9 +36,13 @@ elif [ "$1" = "--native" ]; then
- 	make -j 6 $*
+ 	make -j `nproc` $*
  else
  	# Cross compile on a more capable machine
 +	if [ -n "$BUILD_WAYLAND" ]; then
@@ -128,7 +127,7 @@
  	pushd build/arm-linux/$BUILDSUBDIR
 -	cmake -DCMAKE_TOOLCHAIN_FILE=../../../makefiles/cmake/toolchains/arm-linux-gnueabihf.cmake -DCMAKE_BUILD_TYPE=$BUILDTYPE ../../..
 +	cmake -DCMAKE_TOOLCHAIN_FILE=../../../makefiles/cmake/toolchains/arm-linux-gnueabihf.cmake -DCMAKE_BUILD_TYPE=$BUILDTYPE $WAYLAND_VARS ../../..
- 	make -j 6
+ 	make -j `nproc`
  
  	if [ "$1" != "" ]; then
 diff --git a/host_applications/linux/apps/raspicam/CMakeLists.txt b/host_applications/linux/apps/raspicam/CMakeLists.txt
@@ -808,16 +807,16 @@
  /*
  TODO: do an RPC call to make sure the Khronos vll is loaded (and that it stays loaded until eglTerminate)
  Also affects global image (and possibly others?)
-@@ -451,6 +444,9 @@ EGLAPI const char EGLAPIENTRY * eglQueryString(EGLDisplay dpy, EGLint name)
+@@ -450,6 +443,9 @@ EGLAPI const char EGLAPIENTRY * eglQueryString(EGLDisplay dpy, EGLint name)
+ #ifdef EGL_KHR_fence_sync
              "EGL_KHR_fence_sync "
  #endif
- #endif
++#endif
 +#if EGL_WL_bind_wayland_display
 +            "EGL_WL_bind_wayland_display "
-+#endif
+ #endif
              ;
           break;
-       case EGL_VENDOR:
 @@ -655,8 +651,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig c
                                  false,
                                  EGL_NO_TEXTURE,
@@ -1542,7 +1541,7 @@
 +Libs: -L${libdir} -lwayland-egl
 +Cflags: -I${includedir}
 diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
-index 0b3adc9..f44d01f 100755
+index fde18da..6718215 100755
 --- a/interface/vmcs_host/CMakeLists.txt
 +++ b/interface/vmcs_host/CMakeLists.txt
 @@ -9,13 +9,24 @@ add_definitions(-fno-strict-aliasing)
@@ -1551,12 +1550,12 @@
  
 -add_library(vchostif
 -            ${VMCS_TARGET}/vcfilesys.c ${VMCS_TARGET}/vcmisc.c
--            vc_vchi_gencmd.c vc_vchi_filesys.c
+-            vc_vchi_gencmd.c vc_vchi_filesys.c vc_vchi_gpuserv.c
 -            vc_vchi_tvservice.c vc_vchi_cecservice.c
 -            vc_vchi_dispmanx.c vc_service_common.c)
 +set(VCHOSTIF_SOURCE
 +    ${VMCS_TARGET}/vcfilesys.c ${VMCS_TARGET}/vcmisc.c
-+    vc_vchi_gencmd.c vc_vchi_filesys.c
++    vc_vchi_gencmd.c vc_vchi_filesys.c vc_vchi_gpuserv.c
 +    vc_vchi_tvservice.c vc_vchi_cecservice.c
 +    vc_vchi_dispmanx.c vc_service_common.c)
  #            ${VMCS_TARGET}/vmcs_main.c
@@ -1604,7 +1603,7 @@
  }
  #endif
 diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c
-index 133e86d..45f4cff 100755
+index 7a6cdcd..eab146e 100755
 --- a/interface/vmcs_host/vc_vchi_dispmanx.c
 +++ b/interface/vmcs_host/vc_vchi_dispmanx.c
 @@ -1319,3 +1319,45 @@ static void *dispmanx_notify_func( void *arg ) {
@@ -1885,5 +1884,5 @@
 +    set(${_sources} ${${_sources}} PARENT_SCOPE)
 +endfunction()
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0003-wayland-Add-Wayland-example.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0003-wayland-Add-Wayland-example.patch
index bbd9727..1d78755 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0003-wayland-Add-Wayland-example.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0003-wayland-Add-Wayland-example.patch
Binary files differ
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0004-wayland-egl-Add-bcm_host-to-dependencies.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0004-wayland-egl-Add-bcm_host-to-dependencies.patch
index 752b61a..d60c432 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0004-wayland-egl-Add-bcm_host-to-dependencies.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0004-wayland-egl-Add-bcm_host-to-dependencies.patch
@@ -1,7 +1,7 @@
-From 718402e1be80ff9fb9863e847e31072ec735a5eb Mon Sep 17 00:00:00 2001
+From cae4ff834eef23c8f23126ba4d630db395f13aee Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 10 Aug 2015 02:38:27 -0700
-Subject: [PATCH 04/12] wayland-egl: Add bcm_host to dependencies
+Subject: [PATCH 04/15] wayland-egl: Add bcm_host to dependencies
 
 It uses headers like vcos_platform_types.h but does not
 depend on module which should add the required include paths
@@ -24,5 +24,5 @@
  Libs: -L${libdir} -lwayland-egl
  Cflags: -I${includedir}
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch
index 05b0dfa..676f34c 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0005-interface-remove-faulty-assert-to-make-weston-happy-.patch
@@ -1,7 +1,7 @@
-From 2a6e3d53a75fe44ec6fa3ae64c8ca5664b614979 Mon Sep 17 00:00:00 2001
+From 8ee4f6eedb81e9bfe0e603a21606c52f9501e609 Mon Sep 17 00:00:00 2001
 From: "Yann E. MORIN" <yann.morin.1998@free.fr>
 Date: Sat, 24 Jan 2015 22:07:19 +0100
-Subject: [PATCH 05/12] interface: remove faulty assert() to make weston happy
+Subject: [PATCH 05/15] interface: remove faulty assert() to make weston happy
  at runtime
 
 This was removed after a discussion on IRC with the weston guys
@@ -13,7 +13,7 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c
-index 45f4cff..5d0368c 100755
+index eab146e..29e0dee 100755
 --- a/interface/vmcs_host/vc_vchi_dispmanx.c
 +++ b/interface/vmcs_host/vc_vchi_dispmanx.c
 @@ -1306,7 +1306,6 @@ static void *dispmanx_notify_func( void *arg ) {
@@ -25,5 +25,5 @@
              }
           } else {
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0006-zero-out-wl-buffers-in-egl_surface_free.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0006-zero-out-wl-buffers-in-egl_surface_free.patch
index f4da1c1..a8f1f24 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0006-zero-out-wl-buffers-in-egl_surface_free.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0006-zero-out-wl-buffers-in-egl_surface_free.patch
@@ -1,7 +1,7 @@
-From a3d43c1b754fc0576b428d36a877b9b50dd5d1ce Mon Sep 17 00:00:00 2001
+From 789b0b0c04b741c21dd573b78eded970721d14c2 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 6 Feb 2016 11:10:47 -0800
-Subject: [PATCH 06/12] zero-out wl buffers in egl_surface_free
+Subject: [PATCH 06/15] zero-out wl buffers in egl_surface_free
 
 origins from buildroot
 
@@ -29,5 +29,5 @@
  #endif
     }
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0007-initialize-front-back-wayland-buffers.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0007-initialize-front-back-wayland-buffers.patch
index 47f633a..ad2636a 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0007-initialize-front-back-wayland-buffers.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0007-initialize-front-back-wayland-buffers.patch
@@ -1,7 +1,7 @@
-From 5b37f53cff07f37b281c25f987b9dbdacc264bf6 Mon Sep 17 00:00:00 2001
+From 762dd3156775f167ff0dfd44322dbb19a85822a7 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 6 Feb 2016 11:11:41 -0800
-Subject: [PATCH 07/12] initialize front back wayland buffers
+Subject: [PATCH 07/15] initialize front back wayland buffers
 
 origins from metrological wayland support
 
@@ -30,5 +30,5 @@
     }
  #endif
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0008-Remove-RPC_FLUSH.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0008-Remove-RPC_FLUSH.patch
index 7491842..1e66813 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0008-Remove-RPC_FLUSH.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0008-Remove-RPC_FLUSH.patch
@@ -1,7 +1,7 @@
-From 14a749a3f840e93db548373b907a7a0e664dcfdb Mon Sep 17 00:00:00 2001
+From f8929adbf95ad3d44491cf6fc8a84a686b71193e Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 6 Feb 2016 11:09:18 -0800
-Subject: [PATCH 08/12] Remove RPC_FLUSH
+Subject: [PATCH 08/15] Remove RPC_FLUSH
 
 Origins from buildroot
 
@@ -23,5 +23,5 @@
        }
  #endif
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0009-fix-cmake-dependency-race.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0009-fix-cmake-dependency-race.patch
index 3f57d1e..214d5e2 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0009-fix-cmake-dependency-race.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0009-fix-cmake-dependency-race.patch
@@ -1,7 +1,7 @@
-From b5392c39d7407a5226c9314bc01ed82877ff0539 Mon Sep 17 00:00:00 2001
+From f53e028f33f261f85883c9168977dd5486e9b47c Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 6 Feb 2016 13:12:47 -0800
-Subject: [PATCH 09/12] fix cmake dependency race
+Subject: [PATCH 09/15] fix cmake dependency race
 
 Fixes errors like
 
@@ -42,7 +42,7 @@
     add_library (vcos SHARED ${SOURCES})
     target_link_libraries (vcos pthread dl rt)
 diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
-index f44d01f..9bcc2c3 100755
+index 6718215..c415176 100755
 --- a/interface/vmcs_host/CMakeLists.txt
 +++ b/interface/vmcs_host/CMakeLists.txt
 @@ -17,14 +17,6 @@ set(VCHOSTIF_SOURCE
@@ -74,5 +74,5 @@
  	struct wl_resource *resource;
  	struct wl_dispmanx *dispmanx;
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0010-Fix-for-framerate-with-nested-composition.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0010-Fix-for-framerate-with-nested-composition.patch
index 8a34f3f..9f77920 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0010-Fix-for-framerate-with-nested-composition.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0010-Fix-for-framerate-with-nested-composition.patch
@@ -1,7 +1,7 @@
-From 098faed5e7035b51f14700fdf4cf5875aa7af97e Mon Sep 17 00:00:00 2001
+From 6559a57c66c5f55571a1aa29cf14d9130a9ef2c9 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 29 Mar 2016 20:38:30 -0700
-Subject: [PATCH 10/12] Fix for framerate with nested composition
+Subject: [PATCH 10/15] Fix for framerate with nested composition
 
 frame rate appears irregular and lower than expected when using nested composition.
 
@@ -56,5 +56,5 @@
  #ifdef ANDROID
                 CLIENT_UNLOCK();
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0011-build-shared-library-for-vchostif.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0011-build-shared-library-for-vchostif.patch
index f2455e5..5ee5cbd 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0011-build-shared-library-for-vchostif.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0011-build-shared-library-for-vchostif.patch
@@ -1,7 +1,7 @@
-From b533d784484caead1dc84c766127e1d3854d2aad Mon Sep 17 00:00:00 2001
+From 3e396f0b514f3acf90c02f5d55b3816028367a55 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 2 Apr 2016 10:37:24 -0700
-Subject: [PATCH 11/12] build shared library for vchostif
+Subject: [PATCH 11/15] build shared library for vchostif
 
 Fixes #149
 
@@ -11,7 +11,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
-index 9bcc2c3..0ef753f 100755
+index c415176..d0cca1a 100755
 --- a/interface/vmcs_host/CMakeLists.txt
 +++ b/interface/vmcs_host/CMakeLists.txt
 @@ -17,7 +17,7 @@ set(VCHOSTIF_SOURCE
@@ -24,5 +24,5 @@
  #add_library(bufman            vc_vchi_bufman.c            )
  
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0012-implement-buffer-wrapping-interface-for-dispmanx.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0012-implement-buffer-wrapping-interface-for-dispmanx.patch
index aa3e0ef..48af588 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0012-implement-buffer-wrapping-interface-for-dispmanx.patch
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0012-implement-buffer-wrapping-interface-for-dispmanx.patch
@@ -1,7 +1,7 @@
-From ee5ebfcf0e030efed17f2a45fbb018a02dd421b3 Mon Sep 17 00:00:00 2001
+From f5b2263c8d65e307cb085414e08118cbbe00a94c Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 2 Apr 2016 10:54:59 -0700
-Subject: [PATCH 12/12] implement buffer wrapping interface for dispmanx
+Subject: [PATCH 12/15] implement buffer wrapping interface for dispmanx
 
 Courtesy: Zan Dobersek
 
@@ -88,5 +88,5 @@
  
  </protocol>
 -- 
-2.10.2
+2.15.0
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0013-Implement-triple-buffering-for-wayland.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0013-Implement-triple-buffering-for-wayland.patch
new file mode 100644
index 0000000..d3a9840
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0013-Implement-triple-buffering-for-wayland.patch
@@ -0,0 +1,90 @@
+From 10ba55489002c2ccdf96d221301ec059c4574811 Mon Sep 17 00:00:00 2001
+From: Jeff Wannamaker <jeff_wannamaker@cable.comcast.com>
+Date: Thu, 19 Jan 2017 18:56:07 +0000
+Subject: [PATCH 13/15] Implement triple buffering for wayland
+
+Change from double to triple buffering for wayland.
+This enables higher frame rates without tearing artifacts
+by allowing both the glFinish and the buffer release
+interlock to operate without pushing the frame period
+to two vertical intervals
+
+Signed-off-by: Jeff Wannamaker <jeff_wannamaker@cable.comcast.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/egl/egl_client.c         |  3 ++-
+ interface/khronos/egl/egl_client_surface.c |  8 ++++++++
+ interface/khronos/egl/egl_client_surface.h | 11 +++++++++++
+ 3 files changed, 21 insertions(+), 1 deletion(-)
+
+diff --git a/interface/khronos/egl/egl_client.c b/interface/khronos/egl/egl_client.c
+index 13a110c..0380274 100644
+--- a/interface/khronos/egl/egl_client.c
++++ b/interface/khronos/egl/egl_client.c
+@@ -2323,7 +2323,8 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surf)
+ 
+                   buffer_temp = surface->front_wl_buffer;
+                   surface->front_wl_buffer = surface->back_wl_buffer;
+-                  surface->back_wl_buffer = buffer_temp;
++                  surface->back_wl_buffer = surface->middle_wl_buffer;
++                  surface->middle_wl_buffer = buffer_temp;
+ 
+                   configid = egl_config_to_id(surface->config);
+                   color = egl_config_get_color_format(configid);
+diff --git a/interface/khronos/egl/egl_client_surface.c b/interface/khronos/egl/egl_client_surface.c
+index 9a9582c..10b3b04 100644
+--- a/interface/khronos/egl/egl_client_surface.c
++++ b/interface/khronos/egl/egl_client_surface.c
+@@ -402,12 +402,14 @@ EGL_SURFACE_T *egl_surface_create(
+    if (type == WINDOW && wl_display) {
+       surface->wl_egl_window = (struct wl_egl_window*)win;
+       surface->front_wl_buffer = NULL;
++      surface->middle_wl_buffer = NULL;
+       surface->back_wl_buffer = allocate_wl_buffer(
+             surface->wl_egl_window, color);
+       resource = surface->back_wl_buffer->resource;
+    } else {
+       surface->wl_egl_window = NULL;
+       surface->front_wl_buffer = NULL;
++      surface->middle_wl_buffer = NULL;
+       surface->back_wl_buffer = NULL;
+       resource = DISPMANX_NO_HANDLE;
+    }
+@@ -696,6 +698,12 @@ void egl_surface_free(EGL_SURFACE_T *surface)
+          surface->back_wl_buffer = 0;
+       }
+ 
++      if (surface->middle_wl_buffer) {
++         wl_buffer_destroy(surface->middle_wl_buffer->wl_buffer);
++         free(surface->middle_wl_buffer);
++         surface->middle_wl_buffer = 0;
++      }
++
+       if (surface->front_wl_buffer) {
+          wl_buffer_destroy(surface->front_wl_buffer->wl_buffer);
+          free(surface->front_wl_buffer);
+diff --git a/interface/khronos/egl/egl_client_surface.h b/interface/khronos/egl/egl_client_surface.h
+index e328b77..58a3184 100644
+--- a/interface/khronos/egl/egl_client_surface.h
++++ b/interface/khronos/egl/egl_client_surface.h
+@@ -312,6 +312,17 @@ typedef struct {
+    */
+    struct wl_dispmanx_client_buffer *front_wl_buffer;
+ 
++   /*
++      middle_wl_buffer
++
++      Validity:
++      type == WINDOW
++
++      Invariant:
++      client-side information about the wl_buffer in the middle
++   */
++   struct wl_dispmanx_client_buffer *middle_wl_buffer;
++
+    /*
+       back_wl_buffer
+ 
+-- 
+2.15.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0014-GLES2-gl2ext.h-Define-GL_R8_EXT-and-GL_RG8_EXT.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0014-GLES2-gl2ext.h-Define-GL_R8_EXT-and-GL_RG8_EXT.patch
new file mode 100644
index 0000000..b596056
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0014-GLES2-gl2ext.h-Define-GL_R8_EXT-and-GL_RG8_EXT.patch
@@ -0,0 +1,30 @@
+From d750c738b5c23bba24531cb713292e4ab3f2ec56 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 10 May 2017 06:39:34 +0000
+Subject: [PATCH 14/15] GLES2/gl2ext.h: Define GL_R8_EXT and GL_RG8_EXT
+
+weston code uses these defines
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ interface/khronos/include/GLES2/gl2ext.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/interface/khronos/include/GLES2/gl2ext.h b/interface/khronos/include/GLES2/gl2ext.h
+index 4eacf7f..283e3e1 100644
+--- a/interface/khronos/include/GLES2/gl2ext.h
++++ b/interface/khronos/include/GLES2/gl2ext.h
+@@ -327,6 +327,9 @@ typedef void* GLeglImageOES;
+ #define GL_RGBX_BRCM                                            0x80EE
+ #endif
+ 
++#define GL_R8_EXT                                               0x8229
++#define GL_RG8_EXT                                              0x822B
++
+ /* GL_EXT_texture_type_2_10_10_10_REV */
+ #ifndef GL_EXT_texture_type_2_10_10_10_REV
+ #define GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      0x8368
+-- 
+2.15.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0015-EGL-glplatform.h-define-EGL_CAST.patch b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0015-EGL-glplatform.h-define-EGL_CAST.patch
new file mode 100644
index 0000000..f10740b
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland/0015-EGL-glplatform.h-define-EGL_CAST.patch
@@ -0,0 +1,32 @@
+From 827907f2223df93918e680101a1ac6228ba0f07e Mon Sep 17 00:00:00 2001
+From: Andrea Galbusera <gizero@gmail.com>
+Date: Fri, 14 Jul 2017 09:52:54 +0200
+Subject: [PATCH 15/15] EGL/glplatform.h: define EGL_CAST
+
+C++ / C typecast macros for special EGL handle values: used by libepoxy code
+The definition comes from the updated version of this header in mesa.
+
+Upstream-Status: Pending
+---
+ interface/khronos/include/EGL/eglplatform.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/interface/khronos/include/EGL/eglplatform.h b/interface/khronos/include/EGL/eglplatform.h
+index 1f7c930..c39d425 100644
+--- a/interface/khronos/include/EGL/eglplatform.h
++++ b/interface/khronos/include/EGL/eglplatform.h
+@@ -202,4 +202,11 @@ EGLAPI void EGLAPIENTRY BEGL_GetDefaultDriverInterfaces(BEGL_DriverInterfaces *i
+ #include "interface/khronos/common/khrn_client_mangle.h"
+ #endif
+ 
++/* C++ / C typecast macros for special EGL handle values */
++#if defined(__cplusplus)
++#define EGL_CAST(type, value) (static_cast<type>(value))
++#else
++#define EGL_CAST(type, value) ((type) (value))
++#endif
++
+ #endif /* __eglplatform_h */
+-- 
+2.15.0
+
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland_git.bb b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland_git.bb
index a37249c..579aace 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/userland/userland_git.bb
+++ b/import-layers/meta-raspberrypi/recipes-graphics/userland/userland_git.bb
@@ -10,13 +10,13 @@
 PROVIDES = "virtual/libgles2 \
             virtual/egl"
 
-RPROVIDES_${PN} += "libgles2 libgl"
+RPROVIDES_${PN} += "libgles2 egl libegl"
 
 COMPATIBLE_MACHINE = "raspberrypi"
 
 SRCBRANCH = "master"
 SRCFORK = "raspberrypi"
-SRCREV = "bb15afe33b313fe045d52277a78653d288e04f67"
+SRCREV = "bc3c52a51315399a9f31ed24049eb4bc81fd1c60"
 
 SRC_URI = "\
     git://github.com/${SRCFORK}/userland.git;protocol=git;branch=${SRCBRANCH} \
@@ -32,6 +32,9 @@
     file://0010-Fix-for-framerate-with-nested-composition.patch \
     file://0011-build-shared-library-for-vchostif.patch \
     file://0012-implement-buffer-wrapping-interface-for-dispmanx.patch \
+    file://0013-Implement-triple-buffering-for-wayland.patch \
+    file://0014-GLES2-gl2ext.h-Define-GL_R8_EXT-and-GL_RG8_EXT.patch \
+    file://0015-EGL-glplatform.h-define-EGL_CAST.patch \
 "
 S = "${WORKDIR}/git"
 
diff --git a/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
index 6fd17da..a5a6af3 100644
--- a/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
+++ b/import-layers/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
@@ -7,5 +7,3 @@
     ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "xwayland", "", d)} \
     ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd", "", d)} \
 "
-
-XSERVER_RRECOMMENDS_append = " xf86-input-libinput"
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin
new file mode 100644
index 0000000..6b955da
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin
Binary files differ
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt
index ea4f648..3d917a7 100644
--- a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt
+++ b/import-layers/meta-raspberrypi/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 @@
 
 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 @@
 # 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 @@
 
 #VCO freq 326.4MHz
 spurconfig=0x3 
-
-edonthd20l=-75
-edoffthd20ul=-80
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend
index 252da22..565b735 100644
--- a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend
+++ b/import-layers/meta-raspberrypi/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 \
 "
-
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.4/0001-fix-dtbo-rules.patch b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.4/0001-fix-dtbo-rules.patch
deleted file mode 100644
index 5113e23..0000000
--- a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-4.4/0001-fix-dtbo-rules.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 13c8784da3dbd977f64cec740eba775b6fab11c2 Mon Sep 17 00:00:00 2001
-From: Herve Jourdain <herve.jourdain@neuf.fr>
-Date: Fri, 20 May 2016 16:02:23 +0800
-Subject: [yocto][meta-raspberrypi][PATCH v4 4/5] linux-raspberrypi_4.4.inc:
- support for .dtbo files for dtb overlays
-
-Upstream-Status: Pending
-
-Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb.
-Patch the kernel, which has faulty rules to generate .dtbo the way yocto does
-
-Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
----
- .../0001-fix-dtbo-rules.patch                      | 27 ++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
- create mode 100644 recipes-kernel/linux/linux-raspberrypi-4.4/0001-fix-dtbo-rules.patch
-
-diff --git a/arch/arm/Makefile b/arch/arm/Makefile
-index a2e7cf7..673c1cb 100644
---- a/arch/arm/Makefile
-+++ b/arch/arm/Makefile
-@@ -333,6 +333,8 @@ $(INSTALL_TARGETS):
- 
- %.dtb: | scripts
- 	$(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@
-+%.dtbo: | scripts
-+	$(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@
- 
- PHONY += dtbs dtbs_install
- 
-diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
-index 3079c4f..6cc3766 100644
---- a/scripts/Makefile.lib
-+++ b/scripts/Makefile.lib
-@@ -293,7 +293,8 @@ $(obj)/%.dtb: $(src)/%.dts FORCE
- 	$(call if_changed_dep,dtc)
- 
- quiet_cmd_dtco = DTCO    $@
--cmd_dtco = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
-+cmd_dtco = mkdir -p $(dir ${dtc-tmp}) ; \
-+	$(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
- 	$(objtree)/scripts/dtc/dtc -@ -H epapr -O dtb -o $@ -b 0 \
- 		-i $(dir $<) $(DTC_FLAGS) \
- 		-d $(depfile).dtc.tmp $(dtc-tmp) ; \
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev.bb b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev.bb
new file mode 100644
index 0000000..0879bcb
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev.bb
@@ -0,0 +1,26 @@
+python __anonymous() {
+    if "linux-raspberrypi-dev" not in d.getVar("PREFERRED_PROVIDER_virtual/kernel"):
+        msg = "Skipping linux-raspberrypi-dev as it is not the preferred " + \
+              "provider of virtual/kernel."
+        raise bb.parse.SkipRecipe(msg)
+}
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/linux-raspberrypi:"
+
+LINUX_VERSION ?= "4.11"
+LINUX_RPI_DEV_BRANCH ?= "rpi-4.11.y"
+
+SRCREV = "${AUTOREV}"
+SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=${LINUX_RPI_DEV_BRANCH} \
+           file://0001-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch \
+"
+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/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev/0001-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev/0001-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch
new file mode 100644
index 0000000..e8bc52e
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-dev/0001-build-arm64-Add-rules-for-.dtbo-files-for-dts-overla.patch
@@ -0,0 +1,29 @@
+From 922ce1fd0eb810b713f6ffa9a7ab97c11b6e38cf Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 10 Feb 2017 17:57:08 -0800
+Subject: [PATCH] build/arm64: Add rules for .dtbo files for dts overlays
+
+We now create overlays as .dtbo files.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ arch/arm64/Makefile | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
+index 3635b8662724..822fefeb1cd0 100644
+--- a/arch/arm64/Makefile
++++ b/arch/arm64/Makefile
+@@ -113,6 +113,9 @@ zinstall install:
+ %.dtb: scripts
+ 	$(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
+ 
++%.dtbo: | scripts
++	$(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@
++
+ PHONY += dtbs dtbs_install
+ 
+ dtbs: prepare scripts
+-- 
+2.11.1
+
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
index d196d8e..9265d55 100644
--- a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
@@ -21,7 +21,7 @@
 KERNEL_DEFCONFIG_raspberrypi3-64 ?= "bcmrpi3_defconfig"
 
 # CMDLINE for raspberrypi
-CMDLINE = "dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
+CMDLINE ?= "dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
 
 # Add the kernel debugger over console kernel command line option if enabled
 CMDLINE_append = ' ${@base_conditional("ENABLE_KGDB", "1", "kgdboc=serial0,115200", "", d)}'
@@ -33,8 +33,8 @@
 # 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', True)
-    kerneldt = get_dts(d, d.getVar('LINUX_VERSION', True))
+    kerneltype = d.getVar('KERNEL_IMAGETYPE')
+    kerneldt = get_dts(d, d.getVar('LINUX_VERSION'))
     d.setVar("KERNEL_DEVICETREE", kerneldt)
 }
 
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.4.bb b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.4.bb
deleted file mode 100644
index b6be0ec..0000000
--- a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.4.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
-
-LINUX_VERSION ?= "4.4.50"
-
-SRCREV = "04c8e47067d4873c584395e5cb260b4f170a99ea"
-SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.4.y \
-           file://0001-fix-dtbo-rules.patch \
-"
-
-require linux-raspberrypi.inc
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb
index 074f448..df28fda 100644
--- a/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb
+++ b/import-layers/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb
@@ -1,10 +1,10 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
 
-LINUX_VERSION ?= "4.9.27"
+LINUX_VERSION ?= "4.9.59"
 
-SRCREV = "9a5f215eda12bad29b35040dff00d0346fe517e2"
-SRC_URI = "git://github.com/raspberrypi/linux.git;protocol=git;branch=rpi-4.9.y \
-"
+SRCREV = "e7976b2affa8c05bd299ead0ad9c36ddaf135b9d"
+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
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx%.bbappend b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx%.bbappend
new file mode 100644
index 0000000..67e46de
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx%.bbappend
@@ -0,0 +1,9 @@
+GSTREAMER_1_0_OMX_TARGET_rpi = "rpi"
+GSTREAMER_1_0_OMX_CORE_NAME_rpi = "${libdir}/libopenmaxil.so"
+
+
+# How to make this RPI specific?
+EXTRA_OECONF_append_rpi  = " CFLAGS="$CFLAGS -I${STAGING_DIR_TARGET}/usr/include/IL -I${STAGING_DIR_TARGET}/usr/include/interface/vcos/pthreads -I${STAGING_DIR_TARGET}/usr/include/interface/vmcs_host/linux""
+#examples only build with GL but not GLES, so disable it for RPI
+EXTRA_OECONF_append_rpi = " --disable-examples"
+
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
similarity index 100%
rename from import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
rename to import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-config-files-path.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0001-config-files-path.patch
similarity index 100%
rename from import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0001-config-files-path.patch
rename to import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0001-config-files-path.patch
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0002-fix-decoder-flushing.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0002-fix-decoder-flushing.patch
similarity index 100%
rename from import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0002-fix-decoder-flushing.patch
rename to import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0002-fix-decoder-flushing.patch
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0003-no-timeout-on-get-state.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0003-no-timeout-on-get-state.patch
similarity index 100%
rename from import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0003-no-timeout-on-get-state.patch
rename to import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0003-no-timeout-on-get-state.patch
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0004-Properly-handle-drain-requests-while-flushing.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0004-Properly-handle-drain-requests-while-flushing.patch
new file mode 100644
index 0000000..4d10f24
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0004-Properly-handle-drain-requests-while-flushing.patch
@@ -0,0 +1,30 @@
+From 80dddfd13aaf2fe7272765f8cf291215fe375e28 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Tue, 17 Nov 2015 16:51:27 +0000
+Subject: [PATCH] Properly handle drain requests while flushing
+
+Without this commit the decoder streaming thread stops without ever attending
+the drain request, leaving the decoder input thread waiting forever.
+---
+ omx/gstomx.c         |  7 +++++++
+ omx/gstomxvideodec.c | 13 +++++++++++++
+ 2 files changed, 20 insertions(+)
+
+Index: gst-omx-1.10.2/omx/gstomx.c
+===================================================================
+--- gst-omx-1.10.2.orig/omx/gstomx.c
++++ gst-omx-1.10.2/omx/gstomx.c
+@@ -737,6 +737,13 @@ gst_omx_component_new (GstObject * paren
+ 
+   g_mutex_lock (&comp->lock);
+   gst_omx_component_handle_messages (comp);
++
++  if (err != OMX_ErrorNone && comp->last_error == OMX_ErrorNone) {
++    GST_ERROR_OBJECT (comp->parent,
++        "Last operation returned an error. Setting last_error manually.");
++    comp->last_error = err;
++  }
++
+   g_mutex_unlock (&comp->lock);
+ 
+   return comp;
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
similarity index 100%
rename from import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
rename to import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.10/0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0004-Properly-handle-drain-requests-while-flushing.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0004-Properly-handle-drain-requests-while-flushing.patch
deleted file mode 100644
index 98689f3..0000000
--- a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0004-Properly-handle-drain-requests-while-flushing.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 80dddfd13aaf2fe7272765f8cf291215fe375e28 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
-Date: Tue, 17 Nov 2015 16:51:27 +0000
-Subject: [PATCH] Properly handle drain requests while flushing
-
-Without this commit the decoder streaming thread stops without ever attending
-the drain request, leaving the decoder input thread waiting forever.
----
- omx/gstomx.c         |  7 +++++++
- omx/gstomxvideodec.c | 13 +++++++++++++
- 2 files changed, 20 insertions(+)
-
-diff --git a/omx/gstomx.c b/omx/gstomx.c
-index 69696c4..f0cd890 100644
---- a/omx/gstomx.c
-+++ b/omx/gstomx.c
-@@ -830,6 +830,13 @@ gst_omx_component_set_state (GstOMXComponent * comp, OMX_STATETYPE state)
- done:
- 
-   gst_omx_component_handle_messages (comp);
-+
-+  if (err != OMX_ErrorNone && comp->last_error == OMX_ErrorNone) {
-+    GST_ERROR_OBJECT (comp->parent,
-+        "Last operation returned an error. Setting last_error manually.");
-+    comp->last_error = err;
-+  }
-+
-   g_mutex_unlock (&comp->lock);
- 
-   if (err != OMX_ErrorNone) {
-diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
-index d531f75..a26c4a6 100644
---- a/omx/gstomxvideodec.c
-+++ b/omx/gstomxvideodec.c
-@@ -1539,9 +1539,16 @@ component_error:
- flushing:
-   {
-     GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
-+
-+    g_mutex_lock (&self->drain_lock);
-+    if (self->draining) {
-+      self->draining = FALSE;
-+      g_cond_broadcast (&self->drain_cond);
-+    }
-     gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
-     self->downstream_flow_ret = GST_FLOW_FLUSHING;
-     self->started = FALSE;
-+    g_mutex_unlock (&self->drain_lock);
-     return;
-   }
- 
-@@ -1599,8 +1606,14 @@ flow_error:
-       self->started = FALSE;
-     } else if (flow_ret == GST_FLOW_FLUSHING) {
-       GST_DEBUG_OBJECT (self, "Flushing -- stopping task");
-+      g_mutex_lock (&self->drain_lock);
-+      if (self->draining) {
-+        self->draining = FALSE;
-+        g_cond_broadcast (&self->drain_cond);
-+      }
-       gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
-       self->started = FALSE;
-+      g_mutex_unlock (&self->drain_lock);
-     }
-     GST_VIDEO_DECODER_STREAM_UNLOCK (self);
-     return;
--- 
-1.8.3.2
-
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0006-omxvideodec-unref-allocator-after-getting-it-from-al.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0006-omxvideodec-unref-allocator-after-getting-it-from-al.patch
deleted file mode 100644
index ace60a6..0000000
--- a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0006-omxvideodec-unref-allocator-after-getting-it-from-al.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From d2df0fb032c36b366a08a1355c4f4c816eb53447 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Aur=C3=A9lien=20Zanelli?= <aurelien.zanelli@darkosphere.fr>
-Date: Fri, 3 Jul 2015 00:26:48 +0200
-Subject: [PATCH] omxvideodec: unref allocator after getting it from allocation
- query
-
-Otherwise a reference will be leaked for each allocator. It only happens
-when target platform is Raspberry Pi and when we have GL support.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=751867
----
- omx/gstomxvideodec.c | 20 ++++++++++++--------
- 1 file changed, 12 insertions(+), 8 deletions(-)
-
-diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
-index cd24944..b8c3756 100644
---- a/omx/gstomxvideodec.c
-+++ b/omx/gstomxvideodec.c
-@@ -2530,14 +2530,18 @@ gst_omx_video_dec_decide_allocation (GstVideoDecoder * bdec, GstQuery * query)
-         GstAllocationParams params;
- 
-         gst_query_parse_nth_allocation_param (query, i, &allocator, &params);
--        if (allocator
--            && g_strcmp0 (allocator->mem_type,
--                GST_EGL_IMAGE_MEMORY_TYPE) == 0) {
--          found = TRUE;
--          gst_query_set_nth_allocation_param (query, 0, allocator, &params);
--          while (gst_query_get_n_allocation_params (query) > 1)
--            gst_query_remove_nth_allocation_param (query, 1);
--          break;
-+        if (allocator) {
-+          if (g_strcmp0 (allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0) {
-+            found = TRUE;
-+            gst_query_set_nth_allocation_param (query, 0, allocator, &params);
-+            while (gst_query_get_n_allocation_params (query) > 1)
-+              gst_query_remove_nth_allocation_param (query, 1);
-+          }
-+
-+          gst_object_unref (allocator);
-+
-+          if (found)
-+            break;
-         }
-       }
- 
--- 
-2.5.5
-
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0007-omxvideodec-Use-gstglmemoryegl-for-the-RPi.patch b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0007-omxvideodec-Use-gstglmemoryegl-for-the-RPi.patch
deleted file mode 100644
index ed828c3..0000000
--- a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx-1.2.0/0007-omxvideodec-Use-gstglmemoryegl-for-the-RPi.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From 1cb902edb51d8f5d95f910b79b9b4c208550a7b6 Mon Sep 17 00:00:00 2001
-From: Gwang Yoon Hwang <yoon@igalia.com>
-Date: Wed, 20 Jan 2016 03:10:38 +0900
-Subject: [PATCH] omxvideodec : Use gstglmemoryegl for the RPi
-
-Modified to use gstglmemoryegl to avoid texture creation/copy operations
-at the glupload.
----
- omx/gstomxvideodec.c | 28 ++++++++++++++--------------
- 1 file changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
-index ec97731..c9d60ff 100644
---- a/omx/gstomxvideodec.c
-+++ b/omx/gstomxvideodec.c
-@@ -38,7 +38,7 @@
- 
- #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
- #include <gst/gl/gl.h>
--#include <gst/gl/egl/gsteglimagememory.h>
-+#include <gst/gl/egl/gstglmemoryegl.h>
- #endif
- 
- #if defined (USE_OMX_TARGET_RPI) && defined(__GNUC__)
-@@ -125,7 +125,7 @@ gst_omx_video_dec_class_init (GstOMXVideoDecClass * klass)
-   klass->cdata.type = GST_OMX_COMPONENT_TYPE_FILTER;
-   klass->cdata.default_src_template_caps =
- #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
--      GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE,
-+      GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_GL_MEMORY,
-       "RGBA") "; "
- #endif
-       "video/x-raw, "
-@@ -596,8 +596,8 @@ gst_omx_video_dec_allocate_output_buffers (GstOMXVideoDec * self)
-     gst_structure_free (config);
- 
- #if defined (USE_OMX_TARGET_RPI) && defined (HAVE_GST_GL)
--    eglimage = self->eglimage && (allocator
--        && g_strcmp0 (allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0);
-+    eglimage = self->eglimage
-+               && (allocator && GST_IS_GL_MEMORY_EGL_ALLOCATOR (allocator));
- #else
-     /* TODO: Implement something that works for other targets too */
-     eglimage = FALSE;
-@@ -640,12 +640,12 @@ gst_omx_video_dec_allocate_output_buffers (GstOMXVideoDec * self)
-     for (i = 0; i < min; i++) {
-       GstBuffer *buffer;
-       GstMemory *mem;
-+      GstGLMemoryEGL *gl_mem;
- 
-       if (gst_buffer_pool_acquire_buffer (pool, &buffer, &params) != GST_FLOW_OK
-           || gst_buffer_n_memory (buffer) != 1
-           || !(mem = gst_buffer_peek_memory (buffer, 0))
--          || g_strcmp0 (mem->allocator->mem_type,
--              GST_EGL_IMAGE_MEMORY_TYPE) != 0) {
-+          || !GST_IS_GL_MEMORY_EGL_ALLOCATOR (mem->allocator)) {
-         GST_INFO_OBJECT (self, "Failed to allocated %d-th EGLImage", i);
-         g_list_free_full (buffers, (GDestroyNotify) gst_buffer_unref);
-         g_list_free (images);
-@@ -656,13 +656,13 @@ gst_omx_video_dec_allocate_output_buffers (GstOMXVideoDec * self)
-         err = OMX_ErrorUndefined;
-         goto done;
-       }
--
-+      gl_mem = (GstGLMemoryEGL *)mem;
-       buffers = g_list_append (buffers, buffer);
--      gst_egl_image_memory_set_orientation (mem,
-+      gst_gl_memory_egl_set_orientation (gl_mem,
-           GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_FLIP);
--      images = g_list_append (images, gst_egl_image_memory_get_image (mem));
-+      images = g_list_append (images, gst_gl_memory_egl_get_image (gl_mem));
-       if (egl_display == EGL_NO_DISPLAY)
--        egl_display = gst_egl_image_memory_get_display (mem);
-+        egl_display = gst_gl_memory_egl_get_display (gl_mem);
-     }
- 
-     GST_DEBUG_OBJECT (self, "Allocated %d EGLImages successfully", min);
-@@ -954,14 +954,14 @@ gst_omx_video_dec_reconfigure_output_port (GstOMXVideoDec * self)
-         gst_caps_unref (state->caps);
-       state->caps = gst_video_info_to_caps (&state->info);
-       gst_caps_set_features (state->caps, 0,
--          gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE, NULL));
-+          gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_GL_MEMORY, NULL));
- 
-       /* try to negotiate with caps feature */
-       if (!gst_video_decoder_negotiate (GST_VIDEO_DECODER (self))) {
- 
-         GST_DEBUG_OBJECT (self,
-             "Failed to negotiate with feature %s",
--            GST_CAPS_FEATURE_MEMORY_EGL_IMAGE);
-+            GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
- 
-         if (state->caps)
-           gst_caps_replace (&state->caps, NULL);
-@@ -2554,7 +2554,7 @@ gst_omx_video_dec_decide_allocation (GstVideoDecoder * bdec, GstQuery * query)
- 
-         gst_query_parse_nth_allocation_param (query, i, &allocator, &params);
-         if (allocator) {
--          if (g_strcmp0 (allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0) {
-+          if (GST_IS_GL_MEMORY_EGL_ALLOCATOR (allocator)) {
-             found = TRUE;
-             gst_query_set_nth_allocation_param (query, 0, allocator, &params);
-             while (gst_query_get_n_allocation_params (query) > 1)
-@@ -2572,7 +2572,7 @@ gst_omx_video_dec_decide_allocation (GstVideoDecoder * bdec, GstQuery * query)
-        * and if allocator is not of type memory EGLImage then fails */
-       if (feature
-           && gst_caps_features_contains (feature,
--              GST_CAPS_FEATURE_MEMORY_EGL_IMAGE) && !found) {
-+              GST_CAPS_FEATURE_MEMORY_GL_MEMORY) && !found) {
-         return FALSE;
-       }
-     }
--- 
-2.5.0
-
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.10%.bbappend b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.10%.bbappend
new file mode 100644
index 0000000..d419867
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.10%.bbappend
@@ -0,0 +1,13 @@
+#
+# Need to make this conditional to gstreamer1
+#
+SRC_URI_append_rpi = " \
+             file://0001-config-files-path.patch \
+             file://0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch \
+             file://0002-fix-decoder-flushing.patch \
+             file://0003-no-timeout-on-get-state.patch \
+             file://0004-Properly-handle-drain-requests-while-flushing.patch \
+             file://0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch \
+"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/gstreamer1.0-omx-1.10:"
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.2.0.bbappend b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.2.0.bbappend
deleted file mode 100644
index 1e84abe..0000000
--- a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.2.0.bbappend
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Need to make this conditional to gstreamer1
-#
-SRC_URI_append_rpi = " \
-             file://0001-config-files-path.patch \
-             file://0001-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch \
-             file://0002-fix-decoder-flushing.patch \
-             file://0003-no-timeout-on-get-state.patch \
-             file://0004-Properly-handle-drain-requests-while-flushing.patch \
-             file://0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch \
-             file://0006-omxvideodec-unref-allocator-after-getting-it-from-al.patch \
-             file://0007-omxvideodec-Use-gstglmemoryegl-for-the-RPi.patch \
-"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/gstreamer1.0-omx-1.2.0:"
-
-GSTREAMER_1_0_OMX_TARGET_rpi = "rpi"
-GSTREAMER_1_0_OMX_CORE_NAME_rpi = "${libdir}/libopenmaxil.so"
-
-
-# How to make this RPI specific?
-EXTRA_OECONF_append_rpi  = " CFLAGS="$CFLAGS -I${STAGING_DIR_TARGET}/usr/include/IL -I${STAGING_DIR_TARGET}/usr/include/interface/vcos/pthreads -I${STAGING_DIR_TARGET}/usr/include/interface/vmcs_host/linux""
-#examples only build with GL but not GLES, so disable it for RPI
-EXTRA_OECONF_append_rpi = " --disable-examples"
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bbappend b/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bbappend
deleted file mode 100644
index a13aad7..0000000
--- a/import-layers/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bbappend
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Need to make this conditional to gstreamer1
-#
-SRC_URI_append_rpi = " \
-             file://0001-config-files-path.patch \
-             file://0002-Don-t-try-to-acquire-buffer-when-src-pad-isn-t-activ.patch \
-             file://0003-fix-decoder-flushing.patch \
-             file://0003-no-timeout-on-get-state.patch \
-             file://0004-Properly-handle-drain-requests-while-flushing.patch \
-             file://0005-Don-t-abort-gst_omx_video_dec_set_format-if-there-s-.patch \
-"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/gstreamer1.0-omx:"
-
-GSTREAMER_1_0_OMX_TARGET_rpi = "rpi"
-GSTREAMER_1_0_OMX_CORE_NAME_rpi = "${libdir}/libopenmaxil.so"
-
-
-# How to make this RPI specific?
-EXTRA_OECONF_append_rpi  = " CFLAGS="$CFLAGS -I${STAGING_DIR_TARGET}/usr/include/IL -I${STAGING_DIR_TARGET}/usr/include/interface/vcos/pthreads -I${STAGING_DIR_TARGET}/usr/include/interface/vmcs_host/linux""
-#examples only build with GL but not GLES, so disable it for RPI
-EXTRA_OECONF_append_rpi = " --disable-examples"
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch
index 75f7254..203f34b 100644
--- a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0002-Libraries-and-headers-from-ffmpeg-are-installed-in-u.patch
@@ -14,33 +14,33 @@
  Makefile.ffmpeg | 2 +-
  2 files changed, 4 insertions(+), 4 deletions(-)
 
-diff --git a/Makefile b/Makefile
-index be97c2b..2c120fc 100644
---- a/Makefile
-+++ b/Makefile
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
 @@ -1,9 +1,9 @@
  
  CFLAGS+=-std=c++0x -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -DTARGET_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CMAKE_CONFIG -D__VIDEOCORE4__ -U_FORTIFY_SOURCE -Wall -DHAVE_OMXLIB -DUSE_EXTERNAL_FFMPEG  -DHAVE_LIBAVCODEC_AVCODEC_H -DHAVE_LIBAVUTIL_OPT_H -DHAVE_LIBAVUTIL_MEM_H -DHAVE_LIBAVUTIL_AVUTIL_H -DHAVE_LIBAVFORMAT_AVFORMAT_H -DHAVE_LIBAVFILTER_AVFILTER_H -DHAVE_LIBSWRESAMPLE_SWRESAMPLE_H -DOMX -DOMX_SKIP64BIT -ftree-vectorize -DUSE_EXTERNAL_OMX -DTARGET_RASPBERRY_PI -DUSE_EXTERNAL_LIBBCM_HOST
  
--LDFLAGS+=-L./ -Lffmpeg_compiled/usr/local/lib/ -lc -lWFC -lGLESv2 -lEGL -lbcm_host -lopenmaxil -lfreetype -lz
-+LDFLAGS+=-L./ -Lffmpeg_compiled/usr/lib/ -lc -lWFC -lGLESv2 -lEGL -lbcm_host -lopenmaxil -lfreetype -lz
+-LDFLAGS+=-L./ -Lffmpeg_compiled/usr/local/lib/ -lc -lWFC -lGLESv2 -lEGL -lbcm_host -lopenmaxil -lfreetype -lz -lasound
++LDFLAGS+=-L./ -Lffmpeg_compiled/usr/lib/ -lc -lWFC -lGLESv2 -lEGL -lbcm_host -lopenmaxil -lfreetype -lz -lasound
  
 -INCLUDES+=-I./ -Ilinux -Iffmpeg_compiled/usr/local/include/ -I /usr/include/dbus-1.0 -I /usr/lib/arm-linux-gnueabihf/dbus-1.0/include
-+INCLUDES+=-I./ -Ilinux -Iffmpeg_compiled/usr/include/ -I=/usr/include/dbus-1.0 -I /usr/lib/arm-linux-gnueabihf/dbus-1.0/include
++INCLUDES+=-I./ -Ilinux -Iffmpeg_compiled/usr/include/ -I=/usr/include/dbus-1.0
  
  DIST ?= omxplayer-dist
  
-@@ -87,5 +87,5 @@ dist: omxplayer.bin omxplayer.1
+@@ -88,5 +88,5 @@ dist: omxplayer.bin omxplayer.1
  	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/local/lib/*.so* $(DIST)/usr/lib/omxplayer/
 +	cp -P ffmpeg_compiled/usr/lib/*.so* $(DIST)/usr/lib/omxplayer/
  	cd $(DIST); tar -czf ../$(DIST).tgz *
-diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg
-index 5ccf96f..a7ddd5f 100644
---- a/Makefile.ffmpeg
-+++ b/Makefile.ffmpeg
+Index: git/Makefile.ffmpeg
+===================================================================
+--- git.orig/Makefile.ffmpeg
++++ git/Makefile.ffmpeg
 @@ -254,5 +254,5 @@ checkout:
  .PHONY : install
  install:
@@ -48,6 +48,3 @@
 -	$(HOST)-strip ffmpeg_compiled/usr/local/lib/*.so
 +	$(HOST)-strip ffmpeg_compiled/usr/lib/*.so
  
--- 
-1.9.3
-
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch
index edb388e..ea8530d 100644
--- a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer/0004-Add-FFMPEG_EXTRA_CFLAGS-and-FFMPEG_EXTRA_LDFLAGS.patch
@@ -12,20 +12,26 @@
  Makefile.ffmpeg | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
-diff --git a/Makefile.ffmpeg b/Makefile.ffmpeg
-index abe4b26..c9d42d7 100644
---- a/Makefile.ffmpeg
-+++ b/Makefile.ffmpeg
-@@ -22,7 +22,8 @@ configure:
+Index: git/Makefile.ffmpeg
+===================================================================
+--- git.orig/Makefile.ffmpeg
++++ git/Makefile.ffmpeg
+@@ -1,6 +1,8 @@
+ 
+ CFLAGS=-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -DTARGET_LINUX -fPIC -DPIC -D_REENTRANT -D_HAVE_SBRK -D_LARGEFILE64_SOURCE -DHAVE_CMAKE_CONFIG -DHAVE_VMCS_CONFIG -D_REENTRANT -DUSE_VCHIQ_ARM -DVCHI_BULK_ALIGN=1 -DVCHI_BULK_GRANULARITY=1 -DEGL_SERVER_DISPMANX -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__VIDEOCORE4__ -DGRAPHICS_X_VG=1 -U_FORTIFY_SOURCE -Wall -DHAVE_OMXLIB -DUSE_EXTERNAL_FFMPEG  -DHAVE_LIBAVCODEC_AVCODEC_H -DHAVE_LIBAVUTIL_MEM_H -DHAVE_LIBAVUTIL_AVUTIL_H -DHAVE_LIBAVFORMAT_AVFORMAT_H -DHAVE_LIBAVFILTER_AVFILTER_H -DOMX -DOMX_SKIP64BIT
+ 
++FFMPEG_EXTRA_CFLAGS?=-mfpu=vfp -mfloat-abi=$(FLOAT) -mno-apcs-stack-check -mstructure-size-boundary=32 -mno-sched-prolog
++
+ WORK=$(PWD)
+ 
+ .PHONY : all
+@@ -21,7 +23,8 @@ configure:
  	CFLAGS="$(CFLAGS) ${INCLUDES}" \
  	LDFLAGS="" \
    ./configure \
 -			--extra-cflags="-mfpu=vfp -mfloat-abi=$(FLOAT) -mno-apcs-stack-check -mstructure-size-boundary=32 -mno-sched-prolog" \
-+			--extra-cflags="-mfpu=vfp -mfloat-abi=$(FLOAT) -mno-apcs-stack-check -mstructure-size-boundary=32 -mno-sched-prolog $(FFMPEG_EXTRA_CFLAGS)" \
++			--extra-cflags="$(FFMPEG_EXTRA_CFLAGS)" \
 +			--extra-ldflags="$(FFMPEG_EXTRA_LDFLAGS)" \
  			--enable-cross-compile \
  			--enable-shared \
  			--disable-static \
--- 
-2.1.0
-
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb
index d9460de..0e0f9ba 100644
--- a/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb
@@ -7,10 +7,10 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
-DEPENDS = "libpcre libav virtual/egl boost freetype dbus openssl samba libssh"
+DEPENDS = "libpcre libav virtual/egl boost freetype dbus openssl samba libssh libomxil coreutils-native curl-native"
 PR = "r4"
 
-SRCREV = "8466acf65f5f444dfa22631fb83c07ac759c02a5"
+SRCREV = "061425a5eabf6e9ee43229911c073a863d144038"
 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 \
@@ -21,7 +21,9 @@
            "
 S = "${WORKDIR}/git"
 
-COMPATIBLE_MACHINE = "raspberrypi"
+COMPATIBLE_MACHINE ?= "null"
+COMPATIBLE_MACHINE_rpi_aarch64 = "null"
+COMPATIBLE_MACHINE_rpi = "(.*)"
 
 inherit autotools-brokensep pkgconfig
 
@@ -31,9 +33,8 @@
 # Needed in Makefile.ffmpeg
 export HOST = "${HOST_SYS}"
 export WORK = "${S}"
-export FLOAT = "${@bb.utils.contains("TUNE_FEATURES", "callconvention-hard", "hard", "softfp", d)}"
-export FFMPEG_EXTRA_CFLAGS  = "--sysroot=${STAGING_DIR_TARGET}"
-export FFMPEG_EXTRA_LDFLAGS = "--sysroot=${STAGING_DIR_TARGET}"
+export FFMPEG_EXTRA_CFLAGS  = "${TUNE_CCARGS} ${TOOLCHAIN_OPTIONS}"
+export FFMPEG_EXTRA_LDFLAGS  = "${TUNE_CCARGS} ${TOOLCHAIN_OPTIONS}"
 
 # Needed in top Makefile
 export LDFLAGS = "-L${S}/ffmpeg_compiled/usr/lib \
diff --git a/import-layers/meta-raspberrypi/recipes-multimedia/x264/x264_git.bbappend b/import-layers/meta-raspberrypi/recipes-multimedia/x264/x264_git.bbappend
new file mode 100644
index 0000000..c1cb3bc
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-multimedia/x264/x264_git.bbappend
@@ -0,0 +1 @@
+EXTRA_OECONF_append_raspberrypi = " --disable-asm"
diff --git a/import-layers/meta-raspberrypi/scripts/lib/image/canned-wks/sdimage-raspberrypi.wks b/import-layers/meta-raspberrypi/wic/sdimage-raspberrypi.wks
similarity index 100%
rename from import-layers/meta-raspberrypi/scripts/lib/image/canned-wks/sdimage-raspberrypi.wks
rename to import-layers/meta-raspberrypi/wic/sdimage-raspberrypi.wks