summaryrefslogtreecommitdiffstats
path: root/bsp/meta-freescale
diff options
context:
space:
mode:
Diffstat (limited to 'bsp/meta-freescale')
-rw-r--r--bsp/meta-freescale/.gitignore1
-rw-r--r--bsp/meta-freescale/COPYING.MIT17
-rw-r--r--bsp/meta-freescale/EULA659
-rw-r--r--bsp/meta-freescale/LICENSE12
-rw-r--r--bsp/meta-freescale/README38
-rw-r--r--bsp/meta-freescale/SCR/SCR-4.1.15-2.0.0.txt404
-rw-r--r--bsp/meta-freescale/classes/dtc-145.bbclass7
-rw-r--r--bsp/meta-freescale/classes/fsl-dynamic-packagearch.bbclass69
-rw-r--r--bsp/meta-freescale/classes/fsl-eula-unpack.bbclass68
-rw-r--r--bsp/meta-freescale/classes/fsl-kernel-localversion.bbclass43
-rw-r--r--bsp/meta-freescale/classes/fsl-u-boot-localversion.bbclass27
-rw-r--r--bsp/meta-freescale/classes/fsl-vivante-kernel-driver-handler.bbclass63
-rw-r--r--bsp/meta-freescale/classes/image_types_fsl.bbclass44
-rw-r--r--bsp/meta-freescale/classes/kernel-imximage.bbclass60
-rw-r--r--bsp/meta-freescale/classes/kernel-itbimage.bbclass493
-rw-r--r--bsp/meta-freescale/classes/machine-overrides-extender.bbclass56
-rw-r--r--bsp/meta-freescale/classes/mfgtool-initramfs-image.bbclass41
-rw-r--r--bsp/meta-freescale/classes/qoriq_build_64bit_kernel.bbclass18
-rw-r--r--bsp/meta-freescale/classes/use-imx-headers.bbclass19
-rw-r--r--bsp/meta-freescale/conf/layer.conf50
-rw-r--r--bsp/meta-freescale/conf/machine/imx23evk.conf16
-rw-r--r--bsp/meta-freescale/conf/machine/imx25pdk.conf24
-rw-r--r--bsp/meta-freescale/conf/machine/imx28evk.conf52
-rw-r--r--bsp/meta-freescale/conf/machine/imx51evk.conf17
-rw-r--r--bsp/meta-freescale/conf/machine/imx53ard.conf22
-rw-r--r--bsp/meta-freescale/conf/machine/imx53qsb.conf18
-rw-r--r--bsp/meta-freescale/conf/machine/imx6qdlsabreauto.conf47
-rw-r--r--bsp/meta-freescale/conf/machine/imx6qdlsabresd.conf47
-rw-r--r--bsp/meta-freescale/conf/machine/imx6slevk.conf26
-rw-r--r--bsp/meta-freescale/conf/machine/imx6sllevk.conf29
-rw-r--r--bsp/meta-freescale/conf/machine/imx6sxsabreauto.conf28
-rw-r--r--bsp/meta-freescale/conf/machine/imx6sxsabresd.conf29
-rw-r--r--bsp/meta-freescale/conf/machine/imx6ulevk.conf29
-rw-r--r--bsp/meta-freescale/conf/machine/imx6ullevk.conf24
-rw-r--r--bsp/meta-freescale/conf/machine/imx7dsabresd.conf28
-rw-r--r--bsp/meta-freescale/conf/machine/imx7ulpevk.conf27
-rw-r--r--bsp/meta-freescale/conf/machine/imx8mmevk.conf58
-rw-r--r--bsp/meta-freescale/conf/machine/imx8mqevk.conf55
-rw-r--r--bsp/meta-freescale/conf/machine/imx8qmmek.conf52
-rw-r--r--bsp/meta-freescale/conf/machine/imx8qxpmek.conf43
-rw-r--r--bsp/meta-freescale/conf/machine/include/e500mc.inc6
-rw-r--r--bsp/meta-freescale/conf/machine/include/e500v2.inc4
-rw-r--r--bsp/meta-freescale/conf/machine/include/e5500-64b.inc11
-rw-r--r--bsp/meta-freescale/conf/machine/include/e5500.inc6
-rw-r--r--bsp/meta-freescale/conf/machine/include/e6500-64b.inc11
-rw-r--r--bsp/meta-freescale/conf/machine/include/e6500.inc12
-rw-r--r--bsp/meta-freescale/conf/machine/include/fsl-default-settings.inc3
-rw-r--r--bsp/meta-freescale/conf/machine/include/fsl-default-versions.inc1
-rw-r--r--bsp/meta-freescale/conf/machine/include/imx-base.inc329
-rw-r--r--bsp/meta-freescale/conf/machine/include/qoriq-arm.inc10
-rw-r--r--bsp/meta-freescale/conf/machine/include/qoriq-arm64.inc10
-rw-r--r--bsp/meta-freescale/conf/machine/include/qoriq-base.inc29
-rw-r--r--bsp/meta-freescale/conf/machine/include/qoriq-ppc.inc10
-rw-r--r--bsp/meta-freescale/conf/machine/include/utilities.inc16
-rw-r--r--bsp/meta-freescale/conf/machine/ls1012afrwy-32b.conf33
-rw-r--r--bsp/meta-freescale/conf/machine/ls1012afrwy.conf29
-rw-r--r--bsp/meta-freescale/conf/machine/ls1012ardb-32b.conf34
-rw-r--r--bsp/meta-freescale/conf/machine/ls1012ardb.conf29
-rw-r--r--bsp/meta-freescale/conf/machine/ls1021atwr.conf33
-rw-r--r--bsp/meta-freescale/conf/machine/ls1043ardb-32b.conf39
-rw-r--r--bsp/meta-freescale/conf/machine/ls1043ardb-be.conf40
-rw-r--r--bsp/meta-freescale/conf/machine/ls1043ardb.conf33
-rw-r--r--bsp/meta-freescale/conf/machine/ls1046ardb-32b.conf40
-rw-r--r--bsp/meta-freescale/conf/machine/ls1046ardb-be.conf37
-rw-r--r--bsp/meta-freescale/conf/machine/ls1046ardb.conf36
-rw-r--r--bsp/meta-freescale/conf/machine/ls1088ardb-be.conf34
-rw-r--r--bsp/meta-freescale/conf/machine/ls1088ardb-pb.conf33
-rw-r--r--bsp/meta-freescale/conf/machine/ls1088ardb.conf32
-rw-r--r--bsp/meta-freescale/conf/machine/ls2080ardb.conf20
-rw-r--r--bsp/meta-freescale/conf/machine/ls2088ardb-be.conf35
-rw-r--r--bsp/meta-freescale/conf/machine/ls2088ardb.conf33
-rw-r--r--bsp/meta-freescale/conf/machine/lx2160ardb.conf33
-rw-r--r--bsp/meta-freescale/conf/machine/mpc8548cds.conf14
-rw-r--r--bsp/meta-freescale/conf/machine/p1020rdb.conf28
-rw-r--r--bsp/meta-freescale/conf/machine/p2020rdb.conf28
-rw-r--r--bsp/meta-freescale/conf/machine/p2041rdb.conf28
-rw-r--r--bsp/meta-freescale/conf/machine/p3041ds.conf28
-rw-r--r--bsp/meta-freescale/conf/machine/p4080ds.conf27
-rw-r--r--bsp/meta-freescale/conf/machine/p5040ds-64b.conf28
-rw-r--r--bsp/meta-freescale/conf/machine/p5040ds.conf28
-rw-r--r--bsp/meta-freescale/conf/machine/t1024rdb-64b.conf29
-rw-r--r--bsp/meta-freescale/conf/machine/t1024rdb.conf29
-rw-r--r--bsp/meta-freescale/conf/machine/t1042d4rdb-64b.conf30
-rw-r--r--bsp/meta-freescale/conf/machine/t1042d4rdb.conf30
-rw-r--r--bsp/meta-freescale/conf/machine/t2080rdb-64b.conf29
-rw-r--r--bsp/meta-freescale/conf/machine/t2080rdb.conf29
-rw-r--r--bsp/meta-freescale/conf/machine/t4240rdb-64b.conf24
-rw-r--r--bsp/meta-freescale/conf/machine/t4240rdb.conf24
-rw-r--r--bsp/meta-freescale/custom-licenses/Cortina51
-rw-r--r--bsp/meta-freescale/custom-licenses/Freescale-Binary-EULA115
-rw-r--r--bsp/meta-freescale/custom-licenses/Freescale-EULA214
-rw-r--r--bsp/meta-freescale/custom-licenses/NXP-Binary-EULA81
-rw-r--r--bsp/meta-freescale/custom-licenses/TestFloat24
-rw-r--r--bsp/meta-freescale/dynamic-layers/browser-layer/recipes-browser/chromium/chromium-imx.inc44
-rw-r--r--bsp/meta-freescale/dynamic-layers/browser-layer/recipes-browser/chromium/chromium/chromium.patch51
-rw-r--r--bsp/meta-freescale/dynamic-layers/filesystem-layer/recipes-fsl/packagegroups/packagegroup-fsl-mfgtool.bbappend10
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/README77
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/auto_left.conf-3des-sha1-tunnel32
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/auto_right.conf-3des-sha1-tunnel31
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/flush-setkey4
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.conf.left29
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.conf.right28
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.secrets.left3
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.secrets.right8
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec_ikev1.conf.left39
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec_ikev1.conf.right34
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-md5-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-md5-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha1-transport22
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha1-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha256-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha256-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-md5-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-md5-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha1-transport22
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha1-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha256-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha256-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-null-null-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-null-null-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.ipv42
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/moonCert.pem25
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/moonKey.pem27
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/pingsizes.sh19
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/pingsizest.sh19
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/psk.txt2
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/racoon.conf22
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-md5-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-md5-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha1-transport22
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha1-tunnel41
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha256-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha256-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-md5-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-md5-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha1-transport22
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha1-tunnel41
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha256-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha256-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-null-null-transport23
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-null-null-tunnel42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.ipv42
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup47
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup_left13
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup_right13
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan.conf19
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswanCert.pem22
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan_left10
-rwxr-xr-xbsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan_right10
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/sunCert.pem25
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/sunKey.pem27
-rw-r--r--bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo_0.1.bb26
-rw-r--r--bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-benchmark/glmark2/glmark2_%.bbappend4
-rw-r--r--bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-devtools/luajit/luajit/ppc-fixplt.patch105
-rw-r--r--bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-devtools/luajit/luajit_%.bbappend4
-rw-r--r--bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-dpaa/fmc/fmc_git.bb55
-rw-r--r--bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-graphics/xserver-common/xserver-common/imx/0016-xserver-common-enable-iglx-module.patch30
-rw-r--r--bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-graphics/xserver-common/xserver-common_%.bbappend8
-rw-r--r--bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv/0001-MGS-515-ccc-Opencv-app-can-t-run-on-imx6sx-with-cam.patch46
-rw-r--r--bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv_3.4.%.bbappend5
-rw-r--r--bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/sg3-utils/sg3-utils_%.bbappend1
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-embedded_%.bbappend1
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-imx-support.inc28
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-x11-free_%.bbappend1
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0001-Add-support-for-i.MX-codecs-to-phonon.patch468
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch46
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0003-i.MX6-force-egl-visual-ID-33.patch35
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/mx6/g++.conf40
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/mx6/linux.conf66
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0001-egl.prf-Fix-build-error-when-egl-headers-need-platfo.patch32
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0014-Add-IMX-GPU-support.patch14
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0015-Add-eglfs-to-IMX-GPU.patch13
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0016-Configure-eglfs-with-egl-pkg-config.patch13
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend32
-rw-r--r--bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend2
-rw-r--r--bsp/meta-freescale/dynamic-layers/virtualization-layer/recipes-extended/libvirt/libvirt/qoriq-ppc/qemu.conf465
-rw-r--r--bsp/meta-freescale/dynamic-layers/virtualization-layer/recipes-extended/libvirt/libvirt_%.bbappend9
-rw-r--r--bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state.bbappend10
-rw-r--r--bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state/imx/asound.conf459
-rwxr-xr-xbsp/meta-freescale/recipes-bsp/alsa-state/alsa-state/imx/asound.state7092
-rw-r--r--bsp/meta-freescale/recipes-bsp/boot-format/boot-format/flags.patch21
-rw-r--r--bsp/meta-freescale/recipes-bsp/boot-format/boot-format_git.bb20
-rw-r--r--bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess.bb19
-rwxr-xr-xbsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl40
-rw-r--r--bsp/meta-freescale/recipes-bsp/ddr-phy/ddr-phy_git.bb29
-rw-r--r--bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-7.8.inc18
-rw-r--r--bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8_7.8.bb25
-rw-r--r--bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8m_7.8.bb24
-rw-r--r--bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8x_7.8.bb20
-rw-r--r--bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx_7.8.bb106
-rw-r--r--bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx51evk/machconfig11
-rw-r--r--bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx53ard/machconfig13
-rw-r--r--bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx53qsb/machconfig11
-rw-r--r--bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6/machconfig11
-rw-r--r--bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6sll/machconfig11
-rw-r--r--bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6ul/machconfig11
-rw-r--r--bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx7/machconfig11
-rw-r--r--bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx7ulp/machconfig11
-rw-r--r--bsp/meta-freescale/recipes-bsp/formfactor/formfactor_%.bbappend2
-rw-r--r--bsp/meta-freescale/recipes-bsp/fsl-tlu/fsl-tlu_1.0.0.bb20
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf/0001-Allow-BUILD_STRING-to-be-set-in-.revision-file.patch29
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf_1.5.0.bb47
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs/0001-Add-missing-includes-as-pointed-out-by-musl.patch33
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs_git.bb19
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-lib/imx-lib_git.bb44
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-boot_0.2.bb176
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.bb35
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.inc11
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-sc-firmware/imx-sc-firmware_0.9.bb38
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-test-Makefile-Add-include-path-to-CC-command.patch27
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-test/imx-test/memtool_profile1
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-test/imx-test_00.00.00.bb10
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-test/imx-test_git.bb86
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-uuc/imx-uuc_git.bb20
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0001-Get-i.MX-custom-headers-from-usr-include-imx.patch49
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb35
-rw-r--r--bsp/meta-freescale/recipes-bsp/imx-vpu/imx-vpu_5.4.38.bb31
-rw-r--r--bsp/meta-freescale/recipes-bsp/inphi/inphi_git.bb28
-rw-r--r--bsp/meta-freescale/recipes-bsp/ls2-phy/ls2-phy_git.bb28
-rw-r--r--bsp/meta-freescale/recipes-bsp/mc-utils/mc-utils_git.bb45
-rw-r--r--bsp/meta-freescale/recipes-bsp/mxsldr/mxsldr/0001-Do-not-ignore-OE-cflags-and-ldflags.patch28
-rw-r--r--bsp/meta-freescale/recipes-bsp/mxsldr/mxsldr_git.bb26
-rw-r--r--bsp/meta-freescale/recipes-bsp/ppfe-firmware/ppfe-firmware_git.bb35
-rw-r--r--bsp/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb38
-rw-r--r--bsp/meta-freescale/recipes-bsp/rcw/rcw_git.bb40
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-common_2018.11.inc18
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-fw-utils_2018.11.bb45
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-mxsboot_2018.11.bb32
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc_2018.11.bb21
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-mfgtool_2017.03.bb6
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx_2017.03.bb48
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-mfgtool.inc21
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.03.inc19
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.09.inc19
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-fw-utils_2018.03.bb45
-rw-r--r--bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2018.09.bb79
-rw-r--r--bsp/meta-freescale/recipes-bsp/uefi/uefi_git.bb35
-rw-r--r--bsp/meta-freescale/recipes-connectivity/iproute2/iproute2_%.bbappend5
-rw-r--r--bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-Remove-test-that-requires-running-as-non-root.patch49
-rw-r--r--bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-Take-linking-flags-from-LDFLAGS-env-var.patch43
-rw-r--r--bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-aes-asm-aes-armv4-bsaes-armv7-.pl-make-it-work-with-.patch88
-rw-r--r--bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/openssl-c_rehash.sh222
-rw-r--r--bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/run-ptest4
-rw-r--r--bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq_1.1.0g.bb186
-rw-r--r--bsp/meta-freescale/recipes-core/init-ifupdown/init-ifupdown/qoriq/interfaces6
-rw-r--r--bsp/meta-freescale/recipes-core/init-ifupdown/init-ifupdown_%.bbappend2
-rw-r--r--bsp/meta-freescale/recipes-core/packagegroup/nativesdk-packagegroup-sdk-host.bbappend6
-rw-r--r--bsp/meta-freescale/recipes-core/udev/udev-rules-imx.bb12
-rw-r--r--bsp/meta-freescale/recipes-core/udev/udev-rules-imx/10-imx.rules23
-rw-r--r--bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq.bb35
-rw-r--r--bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/71-fsl-dpaa-persistent-networking.rules20
-rw-r--r--bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/72-fsl-dpaa-persistent-networking.rules24
-rw-r--r--bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/73-fsl-dpaa-persistent-networking.rules11
-rw-r--r--bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/74-ls1046a-xfi2-networking.rules1
-rw-r--r--bsp/meta-freescale/recipes-daemons/ptpd/ptpd-qoriq.bb67
-rw-r--r--bsp/meta-freescale/recipes-daemons/ptpd/ptpd-qoriq/ptpd-use-pkgconfig.patch35
-rw-r--r--bsp/meta-freescale/recipes-devtools/cst/cst_git.bb27
-rw-r--r--bsp/meta-freescale/recipes-devtools/devregs/devregs_git.bb13
-rw-r--r--bsp/meta-freescale/recipes-devtools/imx-usb-loader/imx-usb-loader_git.bb21
-rw-r--r--bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/memfd.patch41
-rw-r--r--bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/powerpc_rom.binbin0 -> 4096 bytes
-rw-r--r--bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/run-ptest10
-rw-r--r--bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq_git.bb72
-rw-r--r--bsp/meta-freescale/recipes-devtools/utp-com/utp-com_git.bb27
-rw-r--r--bsp/meta-freescale/recipes-dpaa/eth-config/eth-config_git.bb20
-rw-r--r--bsp/meta-freescale/recipes-dpaa/flib/flib_git.bb15
-rw-r--r--bsp/meta-freescale/recipes-dpaa/fm-ucode/fm-ucode_git.bb43
-rw-r--r--bsp/meta-freescale/recipes-dpaa/fmlib/fmlib_git.bb41
-rw-r--r--bsp/meta-freescale/recipes-dpaa2/aiopsl/aiopsl_git.bb32
-rw-r--r--bsp/meta-freescale/recipes-dpaa2/dce/dce_git.bb21
-rw-r--r--bsp/meta-freescale/recipes-dpaa2/dpl-examples/dpl-examples_git.bb35
-rw-r--r--bsp/meta-freescale/recipes-dpaa2/gpp-aioptool/gpp-aioptool/0001-remove-libio.h.patch27
-rw-r--r--bsp/meta-freescale/recipes-dpaa2/gpp-aioptool/gpp-aioptool_git.bb26
-rw-r--r--bsp/meta-freescale/recipes-dpaa2/management-complex/management-complex_10.12.0.bb40
-rw-r--r--bsp/meta-freescale/recipes-dpaa2/restool/restool/0001-restool-fix-build-error-with-gcc7.patch24
-rw-r--r--bsp/meta-freescale/recipes-dpaa2/restool/restool_git.bb22
-rw-r--r--bsp/meta-freescale/recipes-dpaa2/spc/spc_git.bb38
-rw-r--r--bsp/meta-freescale/recipes-extended/dpdk/dpdk/0001-fix-gcc-8-build-error.patch51
-rw-r--r--bsp/meta-freescale/recipes-extended/dpdk/dpdk/add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch51
-rw-r--r--bsp/meta-freescale/recipes-extended/dpdk/dpdk_17.11.bb104
-rw-r--r--bsp/meta-freescale/recipes-extended/hyperrelay/hyperrelay_git.bb36
-rw-r--r--bsp/meta-freescale/recipes-extended/ipc-ust/ipc-ust/Makefile-use-LDFLAGS-if-set.patch86
-rw-r--r--bsp/meta-freescale/recipes-extended/ipc-ust/ipc-ust_git.bb52
-rw-r--r--bsp/meta-freescale/recipes-extended/libpkcs11/libpkcs11_git.bb37
-rw-r--r--bsp/meta-freescale/recipes-extended/merge-files/merge-files/merge/README7
-rw-r--r--bsp/meta-freescale/recipes-extended/merge-files/merge-files_1.0.bb22
-rw-r--r--bsp/meta-freescale/recipes-extended/odp/odp-counters_git.bb14
-rw-r--r--bsp/meta-freescale/recipes-extended/odp/odp-module_git.bb16
-rw-r--r--bsp/meta-freescale/recipes-extended/odp/odp.inc26
-rw-r--r--bsp/meta-freescale/recipes-extended/odp/odp/0001-Fix-this-build-error.patch28
-rw-r--r--bsp/meta-freescale/recipes-extended/odp/odp_git.bb63
-rw-r--r--bsp/meta-freescale/recipes-extended/ofp/ofp_git.bb37
-rw-r--r--bsp/meta-freescale/recipes-extended/ovs-dpdk/ovs-dpdk_2.9.bb48
-rw-r--r--bsp/meta-freescale/recipes-extended/pktgen-dpdk/pktgen-dpdk_git.bb33
-rw-r--r--bsp/meta-freescale/recipes-extended/procps/procps_%.bbappend9
-rw-r--r--bsp/meta-freescale/recipes-extended/secure-obj/secure-obj-module_git.bb11
-rw-r--r--bsp/meta-freescale/recipes-extended/secure-obj/secure-obj.inc28
-rw-r--r--bsp/meta-freescale/recipes-extended/secure-obj/secure-obj_git.bb44
-rw-r--r--bsp/meta-freescale/recipes-extended/skmm-ep/skmm-ep/add-two-missing-header-files.patch660
-rw-r--r--bsp/meta-freescale/recipes-extended/skmm-ep/skmm-ep_git.bb30
-rw-r--r--bsp/meta-freescale/recipes-extended/testfloat/files/SoftFloat-powerpc-1.patch1427
-rw-r--r--bsp/meta-freescale/recipes-extended/testfloat/files/TestFloat-powerpc-E500v2-SPE-1.patch1644
-rw-r--r--bsp/meta-freescale/recipes-extended/testfloat/files/Yocto-replace-COMPILE_PREFIX-gcc.patch67
-rw-r--r--bsp/meta-freescale/recipes-extended/testfloat/testfloat_2a.bb45
-rw-r--r--bsp/meta-freescale/recipes-extended/vpp-core/files/0001-GCC-above-5.4-fails-when-we-specify-arch-funattribut.patch26
-rw-r--r--bsp/meta-freescale/recipes-extended/vpp-core/files/0001-Link-vpp-api-with-shared-libs-if-static-is-disabled.patch28
-rw-r--r--bsp/meta-freescale/recipes-extended/vpp-core/files/config.h1
-rw-r--r--bsp/meta-freescale/recipes-extended/vpp-core/vpp-core.bb65
-rw-r--r--bsp/meta-freescale/recipes-extended/vpp-core/vpp-pkgs.inc227
-rw-r--r--bsp/meta-freescale/recipes-fsl/images/fsl-image-mfgtool-initramfs.bb8
-rw-r--r--bsp/meta-freescale/recipes-fsl/packagegroups/packagegroup-fsl-mfgtool.bb49
-rw-r--r--bsp/meta-freescale/recipes-graphics/cairo/cairo_%.bbappend2
-rw-r--r--bsp/meta-freescale/recipes-graphics/clutter/clutter-1.0_%.bbappend5
-rw-r--r--bsp/meta-freescale/recipes-graphics/cogl/cogl-1.0_%.bbappend5
-rw-r--r--bsp/meta-freescale/recipes-graphics/drm/libdrm-armada_git.bb17
-rw-r--r--bsp/meta-freescale/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch54
-rw-r--r--bsp/meta-freescale/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch24
-rw-r--r--bsp/meta-freescale/recipes-graphics/drm/libdrm/installtests.patch25
-rw-r--r--bsp/meta-freescale/recipes-graphics/drm/libdrm/mx6/drm-update-arm.patch35
-rw-r--r--bsp/meta-freescale/recipes-graphics/drm/libdrm/mx7/drm-update-arm.patch35
-rw-r--r--bsp/meta-freescale/recipes-graphics/drm/libdrm_%.bbappend5
-rw-r--r--bsp/meta-freescale/recipes-graphics/drm/libdrm_2.4.91.imx.bb65
-rw-r--r--bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-fb/0001-Replace-vendor-specific-header-with-generic.patch28
-rw-r--r--bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend8
-rw-r--r--bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend2
-rw-r--r--bsp/meta-freescale/recipes-graphics/gtk+/gtk+3_%.bbappend5
-rw-r--r--bsp/meta-freescale/recipes-graphics/images/core-image-weston.bbappend3
-rw-r--r--bsp/meta-freescale/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.4.8.bb37
-rw-r--r--bsp/meta-freescale/recipes-graphics/imx-gpu-apitrace/imx-gpu-apitrace_7.1.0.bb37
-rw-r--r--bsp/meta-freescale/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p1.8.bb41
-rw-r--r--bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc370
-rw-r--r--bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p1.8-aarch32.bb11
-rw-r--r--bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p1.8-aarch64.bb6
-rw-r--r--bsp/meta-freescale/recipes-graphics/libepoxy/libepoxy_1.5.%.bbappend5
-rw-r--r--bsp/meta-freescale/recipes-graphics/libsdl2/libsdl2_%.bbappend8
-rw-r--r--bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Add-OpenVG-demos-to-support-wayland.patch84
-rw-r--r--bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Additional-eglSwapBuffer-calling-makes-wrong-throttl.patch28
-rw-r--r--bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch355
-rw-r--r--bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/fix-clear-build-break.patch17
-rw-r--r--bsp/meta-freescale/recipes-graphics/mesa/mesa-demos_%.bbappend22
-rw-r--r--bsp/meta-freescale/recipes-graphics/mesa/mesa-gl_%.bbappend1
-rw-r--r--bsp/meta-freescale/recipes-graphics/mesa/mesa_%.bbappend40
-rw-r--r--bsp/meta-freescale/recipes-graphics/waffle/waffle_%.bbappend7
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols/0001-unstable-Add-alpha-compositing-protocol.patch195
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols/0002-unstable-Add-hdr10-metadata-protocol.patch134
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols_1.13.imx.bb26
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston-init.bbappend25
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston-init/imxdrm/weston.config3
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston-init/mx8mm/weston.config3
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston-init/weston.config2
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston-init/weston.service38
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston/0001-g2d-renderer-Fix-open-function-build-break.patch33
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston/0001-make-error-portable.patch78
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch173
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston/imx/weston.ini20
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston/mx8mq/weston.ini24
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston/weston.desktop9
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston/weston.pngbin0 -> 2383 bytes
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston/xwayland.weston-start7
-rw-r--r--bsp/meta-freescale/recipes-graphics/wayland/weston_4.0.0.imx.bb144
-rw-r--r--bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput/imx28evk/pointercal.xinput2
-rw-r--r--bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput/mx6/pointercal.xinput2
-rw-r--r--bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput_%.bbappend2
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-armada_git.bb48
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-fbdev_0.4.2.bb11
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-imx-vivante/rc.autohdmi42
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p1.8.bb65
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx5/xorg.conf16
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6/xorg.conf14
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sl/xorg.conf15
-rwxr-xr-xbsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sll/xorg.conf12
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sx/xorg.conf15
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6ul/xorg.conf12
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx7/xorg.conf12
-rwxr-xr-xbsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx7ulp/xorg.conf15
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mxs/xorg.conf12
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/p1022ds/xorg.conf27
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/use-mainline-bsp/xorg.conf28
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/vf/xorg.conf12
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config_%.bbappend2
-rw-r--r--bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend5
-rw-r--r--bsp/meta-freescale/recipes-kernel/ceetm/ceetm_git.bb24
-rw-r--r--bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-linux_1.9.bb16
-rw-r--r--bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-module_1.9.bb21
-rw-r--r--bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-tests_1.9.bb26
-rw-r--r--bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq_1.9.inc26
-rw-r--r--bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch50
-rw-r--r--bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0001-Disable-installing-header-file-provided-by-another-p.patch22
-rw-r--r--bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0003-update-the-install-path-for-cryptodev-tests.patch28
-rw-r--r--bsp/meta-freescale/recipes-kernel/dtc/dtc-145_git.bb20
-rw-r--r--bsp/meta-freescale/recipes-kernel/dtc/files/0001-Fix-compiler-warnings-seen-with-musl.patch55
-rw-r--r--bsp/meta-freescale/recipes-kernel/dtc/files/make_install.patch17
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ar_git.bb32
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv/Add-makefile.patch326
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.4.p1.2+fslc.bb20
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.4.p1.8.bb26
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc-multi_git.bb13
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc-single_git.bb13
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc.inc18
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ls-debug_git.bb18
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-perf-qoriq_0.8.2.bb18
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-scatter-gather_git.bb12
-rw-r--r--bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-uio-seville_0.1.bb12
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0001-fix-build.patch71
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0002-no-split-ptlocks.patch85
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch126
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0004-export-swait-locked-functions.patch31
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/defconfig439
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt_4.1-2.0.x.bb26
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx/defconfig426
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx_4.9-1.0.x.bb16
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc.inc10
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc/defconfig444
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc/mx25/defconfig187
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc/mxs/defconfig177
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-fslc_4.20.bb19
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-imx-4.9.123/imx/defconfig466
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-imx-4.9.123/mx8/defconfig679
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-imx-headers-4.9.123/0001-uapi-Install-custom-headers.patch40
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-imx-headers_4.9.123.bb59
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-imx-mfgtool-4.9.123/defconfig466
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-imx-mfgtool_4.9.123.bb13
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-imx.inc22
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-imx_4.9.123.bb20
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-mfgtool.inc7
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-qoriq/0001-Makefile-fix-gcc-8-build-error.patch25
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-qoriq/0001-fix-gcc8-build-error.patch25
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-qoriq_4.14.bb70
-rw-r--r--bsp/meta-freescale/recipes-kernel/linux/linux-qoriq_4.9.bb71
-rw-r--r--bsp/meta-freescale/recipes-kernel/lttng/lttng-modules_%.bbappend2
-rw-r--r--bsp/meta-freescale/recipes-kernel/skmm-host/skmm-host_git.bb20
-rw-r--r--bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0001-add-conf-for-multichannel-support-in-imx.patch221
-rwxr-xr-xbsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0004-pcm-Don-t-store-the-state-for-SND_PCM_STATE_SUSPENDE.patch69
-rw-r--r--bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0005-add-ak4458-conf-for-multichannel-support.patch123
-rw-r--r--bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib_%.bbappend10
-rw-r--r--bsp/meta-freescale/recipes-multimedia/alsa/imx-alsa-plugins_1.0.26.bb36
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch35
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch42
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch47
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad-1.14.imx/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch45
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad-1.14.imx/configure-allow-to-disable-libssh2.patch61
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-opencv-fix-build-for-opencv-3-4-2.patch63
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb174
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch171
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0001-gstreamer1.0-plugins-base-Fix-ion.h-header-inclusion.patch45
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch289
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0003-riff-add-missing-include-directories-when-calling-in.patch28
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch27
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/make-gio_unix_2_0-dependency-configurable.patch45
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.%.bbappend3
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb76
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.%.bbappend3
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb71
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_git.bb71
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb76
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-imx-gst1.0-plugin-Fix-ion.h-header-inclusion-to-be-s.patch44
-rw-r--r--bsp/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.2.bb83
-rw-r--r--bsp/meta-freescale/recipes-multimedia/imx-codec/imx-codec_4.4.2.bb119
-rw-r--r--bsp/meta-freescale/recipes-multimedia/imx-parser/imx-parser_4.4.2.bb46
-rw-r--r--bsp/meta-freescale/recipes-multimedia/imx-vpuwrap/imx-vpuwrap_4.4.2.bb32
-rw-r--r--bsp/meta-freescale/recipes-multimedia/libimxvpuapi/libimxvpuapi_git.bb21
-rw-r--r--bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/daemon.conf87
-rw-r--r--bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/default.pa170
-rw-r--r--bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/pulseaudio-remove-the-control-for-speaker-headphone-widge.patch73
-rw-r--r--bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend21
-rw-r--r--bsp/meta-freescale/recipes-security/optee/optee-client-qoriq.bb31
-rw-r--r--bsp/meta-freescale/recipes-security/optee/optee-client-qoriq/0001-GCC-8-format-truncation-error.patch35
-rw-r--r--bsp/meta-freescale/recipes-security/optee/optee-client-qoriq/0001-flags-CFLAGS-add-Wno-cpp.patch28
-rw-r--r--bsp/meta-freescale/recipes-security/optee/optee-os-qoriq/0001-allow-setting-sysroot-for-libgcc-lookup.patch13
-rw-r--r--bsp/meta-freescale/recipes-security/optee/optee-os-qoriq_git.bb75
-rw-r--r--bsp/meta-freescale/recipes-security/optee/optee-test-qoriq/0001-fix-build-failure-with-GCC-8.patch40
-rw-r--r--bsp/meta-freescale/recipes-security/optee/optee-test-qoriq_git.bb49
-rwxr-xr-xbsp/meta-freescale/scripts/get-maintainer107
-rw-r--r--bsp/meta-freescale/wic/imx-imx-boot-bootpart.wks.in21
-rw-r--r--bsp/meta-freescale/wic/imx-uboot-bootpart.wks19
-rw-r--r--bsp/meta-freescale/wic/imx-uboot-mxs-bootpart.wks.in19
-rw-r--r--bsp/meta-freescale/wic/imx-uboot-mxs.wks.in18
-rw-r--r--bsp/meta-freescale/wic/imx-uboot-spl-bootpart.wks20
-rw-r--r--bsp/meta-freescale/wic/imx-uboot-spl.wks19
-rw-r--r--bsp/meta-freescale/wic/imx-uboot.wks18
480 files changed, 34406 insertions, 0 deletions
diff --git a/bsp/meta-freescale/.gitignore b/bsp/meta-freescale/.gitignore
new file mode 100644
index 00000000..b25c15b8
--- /dev/null
+++ b/bsp/meta-freescale/.gitignore
@@ -0,0 +1 @@
+*~
diff --git a/bsp/meta-freescale/COPYING.MIT b/bsp/meta-freescale/COPYING.MIT
new file mode 100644
index 00000000..fb950dc6
--- /dev/null
+++ b/bsp/meta-freescale/COPYING.MIT
@@ -0,0 +1,17 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/bsp/meta-freescale/EULA b/bsp/meta-freescale/EULA
new file mode 100644
index 00000000..4504a14d
--- /dev/null
+++ b/bsp/meta-freescale/EULA
@@ -0,0 +1,659 @@
+LA_OPT_BASE_LICENSE v24 May 2018
+
+
+
+IMPORTANT. Read the following NXP Software License Agreement ("Agreement")
+completely. By selecting the "I Accept" button at the end of this page, you
+indicate that you accept the terms of the Agreement and you acknowledge that
+you have the authority, for yourself or on behalf of your company, to bind your
+company to these terms. You may then download or install the file.
+
+
+
+NXP SOFTWARE LICENSE AGREEMENT
+
+
+
+This is a legal agreement between you, as an authorized representative of your
+employer, or if you have no employer, as an individual (together "you"), and
+NXP B.V. ("NXP"). It concerns your rights to use the software identified in
+the Software Content Register and provided to you in binary or source code form
+and any accompanying written materials (the "Licensed Software"). The Licensed
+Software may include any updates or error corrections or documentation relating
+to the Licensed Software provided to you by NXP under this License. In
+consideration for NXP allowing you to access the Licensed Software, you are
+agreeing to be bound by the terms of this Agreement. If you do not agree to all
+of the terms of this Agreement, do not download or install the Licensed
+Software. If you change your mind later, stop using the Licensed Software and
+delete all copies of the Licensed Software in your possession or control. Any
+copies of the Licensed Software that you have already distributed, where
+permitted, and do not destroy will continue to be governed by this Agreement.
+Your prior use will also continue to be governed by this Agreement.
+
+1. DEFINITIONS
+
+1.1. For NXP, the term "Affiliate" means (i) any Person Controlled by NXP
+Semiconductors N.V. or (ii) any Person Controlled by any transferee of all or
+substantially all of the assets of NXP Semiconductors N.V., where "Controlled"
+means the direct or indirect beneficial ownership of more than fifty percent
+(50%) of the voting stock, or decision-making authority in the event that there
+is no voting stock, in another entity; provided, any such Person described in
+clause (i) or (ii) shall be deemed to be an "Affiliate" only for so long as
+such Person is Controlled by NXP Semiconductors N.V. or such transferee. For
+the purposes of this definition, "Person" is defined to mean "an individual,
+corporation, partnership, limited liability company, association,
+unincorporated association, trust or other entity or organization, including a
+government or political subdivision or an agency or instrumentality thereof."
+
+1.2. "Essential Patent" means a patent to the limited extent that infringement
+of such patent cannot be avoided in remaining compliant with the technology
+standards implicated by the usage of any of the Licensed Software, including
+optional implementation of the standards, on technical but not commercial
+grounds, taking into account normal technical practice and the state of the art
+generally available at the time of standardization.
+
+1.3. "Intellectual Property Rights" means any and all rights under statute,
+common law or equity in and under copyrights, trade secrets, and patents
+(including utility models), and analogous rights throughout the world,
+including any applications for and the right to apply for, any of the foregoing.
+
+1.4. "Software Content Register" means the documentation accompanying the
+Licensed Software which identifies the contents of the Licensed Software,
+including but not limited to identification of any Third Party Software.
+
+1.5. "Third Party Software" means, any software included in the Licensed
+Software that is not NXP Proprietary software, and is not open source software,
+and to which different license terms may apply.
+
+2. LICENSE GRANT.
+
+2.1. Separate license grants to Third Party Software, or other terms applicable
+to the Licensed Software if different from those granted in this Section 2, are
+contained in Appendix A. The Licensed Software is accompanied by a Software
+Content Register which will identify that portion of the Licensed Software, if
+any, that is subject to the different terms in Appendix A.
+
+2.2. Exclusively in connection with your development and distribution of
+product containing a programmable processing unit (e.g. a microprocessor,
+microcontroller, sensor or digital signal processor) ("NXP Product") supplied
+directly or indirectly from NXP ("Authorized System"), and exclusively for use
+with or integrated within an NXP Product, NXP grants you a world-wide,
+personal, non-transferable, non-exclusive, non-sublicensable, license, under
+NXP's Intellectual Property Rights:
+
+(a) to use and reproduce the Licensed Software only as part of, or integrated
+within, Authorized Systems and not on a standalone basis;
+
+(b) to directly or indirectly manufacture, demonstrate, copy, distribute,
+market and sell the Licensed Software in object code (machine readable) only as
+part of, or embedded within, Authorized Systems in object code form and not on
+a standalone basis. Notwithstanding the foregoing, those files marked as .h
+files ("Header files") may be distributed in source or object code form, but
+only as part of, or embedded within Authorized Systems.
+
+(c) to copy, use and distribute as needed, solely in connection with an
+Authorized System, proprietary NXP information associated with the Licensed
+Software for the purpose of developing, maintaining and supporting Authorized
+Systems with which the Licensed Software is integrated or associated.
+
+
+
+2.3. For Licensed Software provided to you in source code form (human
+readable), exclusively for use with or integrated within an NXP Product, NXP
+further grants to you a worldwide, personal, non-transferable, non-exclusive,
+non-sublicensable, license, under NXP's Intellectual Property Rights:
+
+(a) to prepare derivative works of the Licensed Software, only as part of, or
+integrated within, Authorized Systems and not on a standalone basis;
+
+(b) to use, demonstrate, copy, distribute, market and sell the derivative
+works of the Licensed Software in object code (machine readable) only as part
+of, or integrated within, Authorized Systems and not on a standalone basis.
+Notwithstanding the foregoing, those files marked as .h files ("Header files")
+may be distributed in source or object code form, but only as part of, or
+embedded within Authorized Systems.
+
+2.4. You may use subcontractors on your premises to exercise your rights under
+Section 2.2 and 2.3 so long as you have an agreement in place with the
+subcontractor containing confidentiality restrictions no less stringent than
+those contained in this Agreement. You will remain liable for your
+subcontractors' adherence to the terms of this Agreement and for any and all
+acts and omissions of such subcontractors with respect to this Agreement and
+the Licensed Software.
+
+3. LICENSE LIMITATIONS AND RESTRICTIONS.
+
+3.1. The licenses granted above in Section 2.3 only extend to NXP intellectual
+property rights that would be infringed by the Licensed Software prior to your
+preparation of any derivative work.
+
+3.2. The Licensed Software is licensed to you, not sold. Title to Licensed
+Software delivered hereunder remains vested in NXP or NXP's licensor and cannot
+be assigned or transferred. You are expressly forbidden from selling or
+otherwise distributing the Licensed Software, or any portion thereof, except as
+expressly permitted herein. This Agreement does not grant to you any implied
+rights under any NXP or third party intellectual property.
+
+3.3. You may not translate, reverse engineer, decompile, or disassemble the
+Licensed Software except to the extent applicable law specifically prohibits
+such restriction. You must prohibit your sublicensees from translating,
+reverse engineering, decompiling, or disassembling the Licensed Software except
+to the extent applicable law specifically prohibits such restriction.
+
+3.4. You must reproduce any and all of NXP's (or its third party licensor's)
+copyright notices and other proprietary legends on copies of Licensed Software.
+
+
+3.5. If you distribute the Licensed Software to the United States Government,
+then the Licensed Software is "restricted computer software" and is subject to
+FAR 52.227-19 (c)(1) and (c)(2).
+
+3.6. You grant to NXP a non-exclusive, non-transferable, irrevocable,
+perpetual, worldwide, royalty-free, sub-licensable license under your
+Intellectual Property Rights to use without restriction and for any purpose any
+suggestion, comment or other feedback related to the Licensed Software
+(including, but not limited to, error corrections and bug fixes).
+
+3.7. You will not take or fail to take any action that could subject the
+Licensed Software to an Excluded License. An Excluded License means any license
+that requires, as a condition of use, modification or distribution of software
+subject to the Excluded License, that such software or other software combined
+and/or distributed with the software be (i) disclosed or distributed in source
+code form; (ii) licensed for the purpose of making derivative works; or (iii)
+redistributable at no charge.
+
+3.8. You may not publish or distribute information, results or data associated
+with the use of the Licensed Software to anyone other than NXP; however, you
+must advise NXP of any results obtained including any problems or suggested
+improvements thereof. NXP retains the right to use such results and related
+information in any manner it deems appropriate.
+
+4. OPEN SOURCE. Open source software included in the
+Licensed Software is not licensed under the terms of this Agreement but is
+instead licensed under the terms of the applicable open source license(s), such
+as the BSD License, Apache License or the GNU Lesser General Public License.
+Your use of the open source software is subject to the terms of each applicable
+license. You must agree to the terms of each applicable license, or you cannot
+use the open source software.
+
+5. INTELLECTUAL PROPERTY RIGHTS. Subject to NXP's ownership
+interest in the underlying Licensed Software, all intellectual property rights
+associated with, and title to, your Authorized System will be retained by or
+will vest in you. Your modifications to the Licensed Software, and all
+intellectual property rights associated with, and title thereto, will be the
+property of NXP. Upon request, you must provide NXP the source code of any
+derivative of the Licensed Software. You agree to assign all, and hereby do
+assign all rights, title, and interest to any such modifications to the
+Licensed Software to NXP and agree to provide all assistance reasonably
+requested by NXP to establish, preserve or enforce such right. Further, you
+agree to waive all moral rights relating to your modifications to the Licensed
+Software, including, without limitation, all rights of identification of
+authorship and all rights of approval, restriction, or limitation on use or
+subsequent modification. Notwithstanding the foregoing, you will have the
+license rights granted in Section 2 hereto to any such modifications made by
+you or your licensees.
+
+6. PATENT COVENANT NOT TO SUE. As partial, material consideration
+for the rights granted to you under this Agreement, you covenant not to sue or
+otherwise assert your patents against NXP, a NXP Affiliate or subsidiary, or a
+NXP licensee of the Licensed Software for infringement of your Intellectual
+Property Rights by the manufacture, use, sale, offer for sale, importation or
+other disposition or promotion of the Licensed Software and/or any
+redistributed portions of the Licensed Software.
+
+7. ESSENTIAL PATENTS. You are solely responsible for obtaining
+licenses for any relevant Essential Patents for your use in connection with
+technology that you incorporate into your product (whether as part of the
+Licensed Software or not).
+
+8. TERM AND TERMINATION. This Agreement will remain in effect
+unless terminated as provided in this Section 8.
+
+8.1. You may terminate this Agreement immediately upon written notice to NXP at
+the address provided below.
+
+8.2. Either party may terminate this Agreement if the other party is in default
+of any of the terms and conditions of this Agreement, and termination is
+effective if the defaulting party fails to correct such default within 30 days
+after written notice thereof by the non-defaulting party to the defaulting
+party at the address below.
+
+8.3. Notwithstanding the foregoing, NXP may terminate this Agreement
+immediately upon written notice if you: breach any of your confidentiality
+obligations or the license restrictions under this Agreement; become bankrupt,
+insolvent, or file a petition for bankruptcy or insolvency, make an assignment
+for the benefit of its creditors; enter proceedings for winding up or
+dissolution ;are dissolved; or are nationalized or become subject to the
+expropriation of all or substantially all of its business or assets.
+
+8.4. Upon termination of this Agreement, all licenses granted under Section 2
+will expire, except that any licenses extended to end-users pursuant to
+Sections 2.2(b), 2.2(c), and 2.3(b), which have been granted prior to such
+termination will survive.
+
+8.5. After termination of this Agreement by either party and upon NXP's written
+request, you will, at your discretion, return to the NXP any confidential
+information including all copies thereof or furnish to NXP at the address
+below, a statement certifying, with respect to the Licensed Software delivered
+hereunder that the original and all copies, except for archival copies to be
+used solely for dispute resolution purposes, in whole or in part, in any form,
+of the Licensed Software have been destroyed.
+
+8.6. Notwithstanding the termination of this Agreement for any reason, the
+terms of Sections 1, 3, 5 through 25 will survive.
+
+9. SUPPORT. NXP is not obligated to provide any support, upgrades
+or new releases of the Licensed Software under this Agreement. If you wish, you
+may contact NXP and report problems and provide suggestions regarding the
+Licensed Software. NXP has no obligation to respond to such a problem report or
+suggestion. NXP may make changes to the Licensed Software at any time, without
+any obligation to notify or provide updated versions of the Licensed Software
+to you.
+
+
+10. NO WARRANTY. To the maximum extent permitted by law, NXP
+expressly disclaims any warranty for the Licensed Software. The Licensed
+Software is provided "AS IS", without warranty of any kind, either express or
+implied, including without limitation the implied warranties of
+merchantability, fitness for a particular purpose, or non-infringement. You
+assume the entire risk arising out of the use or performance of the licensed
+software, or any systems you design using the licensed software (if any).
+
+11. INDEMNITY. You agree to fully defend and indemnify NXP from all
+claims, liabilities, and costs (including reasonable attorney's fees) related
+to (1) your use (including your contractors or distributee's use, if permitted)
+of the Licensed Software or (2) your violation of the terms and conditions of
+this Agreement.
+
+12. LIMITATION OF LIABILITY. EXCLUDING LIABILITY FOR A BREACH OF
+SECTION 2 (LICENSE GRANTS), SECTION 3 (LICENSE LIMITATIONS AND RESTRICTIONS),
+SECTION 17 (CONFIDENTIAL INFORMATION), OR CLAIMS UNDER SECTION 11(INDEMNITY),
+IN NO EVENT WILL EITHER PARTY BE LIABLE, WHETHER IN CONTRACT, TORT, OR
+OTHERWISE, FOR ANY INCIDENTAL, SPECIAL, INDIRECT, CONSEQUENTIAL OR PUNITIVE
+DAMAGES, INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR ANY LOSS OF USE, LOSS OF
+TIME, INCONVENIENCE, COMMERCIAL LOSS, OR LOST PROFITS, SAVINGS, OR REVENUES, TO
+THE FULL EXTENT SUCH MAY BE DISCLAIMED BY LAW. NXP'S TOTAL LIABILITY FOR ALL
+COSTS, DAMAGES, CLAIMS, OR LOSSES WHATSOEVER ARISING OUT OF OR IN CONNECTION
+WITH THIS AGREEMENT OR PRODUCT(S) SUPPLIED UNDER THIS AGREEMENT IS LIMITED TO
+THE AGGREGATE AMOUNT PAID BY YOU TO NXP IN CONNECTION WITH THE LICENSED
+SOFTWARE TO WHICH LOSSES OR DAMAGES ARE CLAIMED.
+
+
+13. EXPORT COMPLIANCE. Each party shall comply with all applicable
+export and import control laws and regulations including but not limited to the
+US Export Administration Regulations (including prohibited party lists issued
+by other federal governments), Catch-all regulations and all national and
+international embargoes. Each party further agrees that it will not knowingly
+transfer, divert, export or re-export, directly or indirectly, any product,
+software, including software source code, or technology restricted by such
+regulations or by other applicable national regulations, received from the
+other party under this Agreement, or any direct product of such software or
+technical data to any person, firm, entity, country or destination to which
+such transfer, diversion, export or re-export is restricted or prohibited,
+without obtaining prior written authorization from the applicable competent
+government authorities to the extent required by those laws.
+
+14. GOVERNMENT CONTRACT COMPLIANCE.
+
+14.1. If you sell Authorized Systems directly to any government
+or public entity, including U.S., state, local, foreign or international
+governments or public entities, or indirectly via a prime contractor or
+subcontractor of such governments or entities, NXP makes no representations,
+certifications, or warranties whatsoever about compliance with government or
+public entity acquisition statutes or regulations, including, without
+limitation, statutes or regulations that may relate to pricing, quality, origin
+or content.
+
+14.2. The Licensed Software has been developed at private
+expense and is a "Commercial Item" as defined in 48 C.F.R. §2.101, consisting
+of "Commercial Computer Software", and/or "Commercial Computer Software
+Documentation," as such terms are used in 48 C.F.R. §12.212 (or 48 C.F.R.
+§227.7202, as applicable) and may only be licensed to or shared with U.S.
+Government end users in object code form as part of, or embedded within,
+Authorized Systems. Any agreement pursuant to which you share the Licensed
+Software will include a provision that reiterates the limitations of this
+document and requires all sub-agreements to similarly contain such limitations.
+
+15. SAFETY CRITICAL APPLICATIONS
+
+15.1. In some cases, NXP may promote certain Licensed Software
+for use in safety-related applications. NXP's goal is to educate licensees so
+that they can design their own end-product solutions to meet applicable
+functional safety standards and requirements. You make the ultimate design
+decisions regarding your products and are solely responsible for compliance
+with all legal, regulatory, safety, and security related requirements
+concerning your products, regardless of any information or support that may be
+provided by NXP. Accordingly, you will indemnify and hold NXP harmless from
+any claims, liabilities, damages and associated costs and expenses (including
+attorneys' fees) that NXP may incur related to your incorporation of any
+product in a safety-critical application or system.
+
+15.2. Only Licensed Software that NXP has specifically
+designated as "Automotive Qualified" is intended for use in automotive,
+military, or aerospace applications or environments. If you use Licensed
+Software that has not been designated as "Automotive Qualified" in an
+automotive, military, or aerospace application or environment, you do so at
+your own risk.
+
+15.3. Licensed Software is not intended or authorized for any
+use in anti-personnel landmines.
+
+16. CHOICE OF LAW; VENUE. This Agreement will be governed by,
+construed, and enforced in accordance with the laws of The Netherlands, without
+regard to conflicts of laws principles, will apply to all matters relating to
+this Agreement or the Licensed Software, and you agree that any litigation will
+be subject to the exclusive jurisdiction of the courts of Amsterdam, The
+Netherlands. The United Nations Convention on Contracts for the International
+Sale of Goods will not apply to this document.
+
+17. CONFIDENTIAL INFORMATION. Subject to the license grants and
+restrictions contained herein, you must treat the Licensed Software as
+confidential information and you agree to retain the Licensed Software in
+confidence perpetually, with respect to Licensed Software in source code form
+(human readable), or for a period of five (5) years from the date of
+termination of this Agreement, with respect to all other parts of the Licensed
+Software. During this period, you may not disclose any part of the Licensed
+Software to anyone other than employees, or sub-contractors in accordance with
+Section 2.4 who have a need to know of the Licensed Software and who have
+executed written agreements obligating them to protect such Licensed Software
+to at least the same degree of care as in this Agreement. You agree to use the
+same degree of care, but no less than a reasonable degree of care, with the
+Licensed Software as you do with your own confidential information. You may
+disclose Licensed Software to the extent required by a court or under operation
+of law or order provided that you notify NXP of such requirement prior to
+disclosure, which you only disclose information required, and that you allow
+NXP the opportunity to object to such court or other legal body requiring such
+disclosure.
+
+18. TRADEMARKS. You are not authorized to use any NXP trademarks,
+brand names, or logos.
+
+19. ENTIRE AGREEMENT. This Agreement constitutes the entire
+agreement between you and NXP regarding the subject matter of this Agreement,
+and supersedes all prior communications, negotiations, understandings,
+agreements or representations, either written or oral, if any. This Agreement
+may only be amended in written form, signed by you and NXP.
+
+20. SEVERABILITY. If any provision of this Agreement is held for any
+reason to be invalid or unenforceable, then the remaining provisions of this
+Agreement will be unimpaired and, unless a modification or replacement of the
+invalid or unenforceable provision is further held to deprive you or NXP of a
+material benefit, in which case the Agreement will immediately terminate, the
+invalid or unenforceable provision will be replaced with a provision that is
+valid and enforceable and that comes closest to the intention underlying the
+invalid or unenforceable provision.
+
+21. NO WAIVER. The waiver by NXP of any breach of any provision of
+this Agreement will not operate or be construed as a waiver of any other or a
+subsequent breach of the same or a different provision.
+
+22. AUDIT. You will keep full, clear and accurate records with
+respect to your compliance with the limited license rights granted under this
+Agreement for three years following expiration or termination of this
+Agreement. NXP will have the right, either itself or through an independent
+certified public accountant to examine and audit, at NXP's expense, not more
+than once a year, and during normal business hours, all such records that may
+bear upon your compliance with the limited license rights granted above. You
+must make prompt adjustment to compensate for any errors and/or omissions
+disclosed by such examination or audit.
+
+23. NOTICES. All notices and communications under this
+Agreement will be made in writing, and will be effective when received at the
+following addresses:
+
+NXP: NXP B.V.
+
+ High Tech Campus 60
+
+ 5656 AG Eindhoven
+
+ The Netherlands
+
+ ATTN: Legal Department
+
+
+
+ You: The address provided at registration will
+be used.
+
+24. RELATIONSHIP OF THE PARTIES. The parties are independent
+contractors. Nothing in this Agreement will be construed to create any
+partnership, joint venture, or similar relationship. Neither party is
+authorized to bind the other to any obligations with third parties.
+
+25. SUCCESSION AND ASSIGNMENT. This Agreement will be binding upon
+and inure to the benefit of the parties and their permitted successors and
+assigns. You may not assign this Agreement, or any part of this Agreement,
+without the prior written approval of NXP, which approval will not be
+unreasonably withheld or delayed. NXP may assign this Agreement, or any part of
+this Agreement, in its sole discretion.
+
+
+
+
+
+APPENDIX A
+
+Other License Grants and Restrictions:
+
+The Licensed Software may include some or all of the following software, which
+is either 1) not NXP proprietary software or 2) NXP proprietary software
+subject to different terms than those in the Agreement. If the Software
+Content Register that accompanies the Licensed Software identifies any of the
+following Third Party Software or specific components of the NXP Proprietary
+Software, the following terms apply to the extent they deviate from the terms
+in the Agreement:
+
+
+
+Third Party Software Use Restrictions
+
+Amphion Semiconductor Ltd.
+Distribution of Amphion software must be a part of, or embedded within,
+Authorized Systems that include an Amphion Video Decoder.
+
+Atheros
+Use of Atheros software is limited to evaluation and demonstration only.
+Permitted distributions must be similarly limited. Further rights must be
+obtained directly from Atheros.
+
+ATI (AMD)
+Distribution of ATI software must be a part of, or embedded within, Authorized
+Systems that include a ATI graphics processor core.
+
+Broadcom Corporation
+Your use of Broadcom Corporation software is restricted to Authorized Systems
+that incorporate a compatible integrated circuit device manufactured or sold by
+Broadcom.
+
+Cadence Design Systems
+Use of Cadence audio codec software is limited to evaluation and demonstration
+only of one copy embedded in a single NXP Product. Further rights must be
+obtained from Cadence. The license granted herein to the Cadence Design Systems
+HiFi aacPlus Audio Decoder software does not include a license to the AAC
+family of technologies which you or your customer may need to obtain.
+Configuration tool outputs may only be distributed by licensees of the relevant
+Cadence SDK and distribution is limited to distribution of one copy embedded in
+a single NXP Product.
+
+Cirque Corporation
+Use of Cirque Corporation technology is limited to evaluation, demonstration,
+or certification testing only. Permitted distributions must be similarly
+limited. Further rights, including but not limited to ANY commercial
+distribution rights, must be obtained directly from Cirque Corporation.
+
+Coding Technologies (Dolby Labs)
+Use of CTS software is limited to evaluation and demonstration only. Permitted
+distributions must be similarly limited. Further rights must be obtained from
+Dolby Laboratories.
+
+CSR
+Use of Cambridge Silicon Radio, Inc. ("CSR") software is limited to evaluation
+and demonstration only. Permitted distributions must be similarly limited.
+Further rights must be obtained directly from CSR.
+
+NXP Wireless Charging Library
+License to the Software is limited to use in inductive coupling or wireless
+charging applications
+
+Global Locate (Broadcom Corporation)
+Use of Global Locate, Inc. software is limited to evaluation and demonstration
+only. Permitted distributions must be similarly limited. Further rights must
+be obtained from Global Locate.
+
+Imagination Technologies Limited (IMG)
+If the Licensed Software includes proprietary software developed by IMG, your
+rights are limited to a non-exclusive, world-wide right and nontransferable and
+non-sub-licensable license (i) to use and modify the Licensed Software and
+documentation and (ii) to copy and distribute the Licensed Software only in
+object code form solely for use on NXP Rayleigh products. If you are provided
+with the Licensed Software in source code format, you are restricted to
+accessing only those deliverables in source code format which are necessary for
+you to carry out either specific customization or porting work in association
+with NXP's Rayleigh products or your Authorized System.
+
+The confidentiality restrictions shall continue in force without limit in time
+notwithstanding the termination or expiration of this Agreement.
+
+Micrium
+uC/OS-II and uC/OS-III is provided in source form for FREE short-term
+evaluation, for educational use or for peaceful research. If you plan or
+intend to use uC/OS-II or uC/OS-III in a commercial application/product then,
+you need to contact Micrium to properly license uC/OS-II or uC/OSIII for its
+use in your application/product. We provide ALL the source code for your
+convenience and to help you experience uC/OS-II or uC/OSIII. The fact that the
+source is provided does NOT mean that you can use it commercially without
+paying a licensing fee.
+
+Microsoft
+If the Licensed Software includes software owned by Microsoft
+Corporation ("Microsoft"), it is subject to the terms of your license with
+Microsoft (the "Microsoft Underlying Licensed Software") and as such, NXP
+grants no license to you, beyond evaluation and demonstration in connection
+with NXP processors, in the Microsoft Underlying Licensed Software. You must
+separately obtain rights beyond evaluation and demonstration in connection with
+the Microsoft Underlying Licensed Software from Microsoft.
+
+Microsoft does not provide support services for the components provided to you
+through this Agreement. If you have any questions or require technical
+assistance, please contact NXP. Microsoft Corporation is a third party
+beneficiary to this Agreement with the right to enforce the terms of this
+Agreement. TO THE MAXIMUM EXTENT PERMITTED BY LAW, MICROSOFT AND ITS
+AFFILIATES DISCLAIM ANY WARRANTIES FOR THE
+MICROSOFT UNDERLYING LICENSED SOFTWARE. TO THE MAXIMUM
+EXTENT PERMITTED BY LAW, NEITHER MICROSOFT NOR ITS AFFILIATES
+WILL BE LIABLE, WHETHER IN CONTRACT, TORT, OR OTHERWISE, FOR ANY
+DIRECT, INCIDENTAL, SPECIAL, INDIRECT, CONSEQUENTIAL OR PUNITIVE
+DAMAGES, INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR ANY LOSS
+OF USE, LOSS OF TIME, INCONVENIENCE, COMMERCIAL LOSS, OR LOST PROFITS, SAVINGS,
+OR REVENUES, ARISING FROM THE FROM THE USE OF THE MICROSOFT UNDERLYING LICENSED
+SOFTWARE.
+
+MindTree
+Notwithstanding the terms contained in Section 2.3 (a), if the Licensed
+Software includes proprietary software of MindTree in source code format,
+Licensee may make modifications and create derivative works only to the extent
+necessary for debugging of the Licensed Software.
+
+MPEG LA
+Use of MPEG LA audio or video codec technology is limited to evaluation and
+demonstration only. Permitted distributions must be similarly limited. Further
+rights must be obtained directly from MPEG LA.
+
+MQX RTOS Code
+MQX RTOS source code may not be re-distributed by any NXP Licensee under any
+circumstance, even by a signed written amendment to this Agreement.
+
+Opus
+Use of Opus software must be consistent with the terms of the Opus license
+which can be found at: http://www.opus-codec.org/license/
+
+Qualcomm Atheros, Inc.
+Notwithstanding anything in this Agreement, Qualcomm Atheros, Inc. Wi-Fi
+software must be used strictly in accordance with the Qualcomm Atheros, Inc.
+Technology License Agreement that accompanies such software. Any other use is
+expressly prohibited.
+
+Real Networks - its GStreamer Optimized Real Format Client Code implementation
+or OpenMax Optimized Real Format Client Code
+Use of the GStreamer Optimized Real Format Client Code, or OpenMax Optimized
+Real Format Client code is restricted to applications in the automotive market.
+ Licensee must be a final manufacturer in good standing with a current license
+with Real Networks for the commercial use and distribution of products
+containing the GStreamer Optimized Real Format Client Code implementation or
+OpenMax Optimized Real Format Client Code
+
+Real Time Engineers Ltd.
+Any FreeRTOS source code, whether modified or in its original release form, or
+whether in whole or in part, can only be distributed by you under the terms of
+version 2 of the GNU General Public License plus this exception. An
+independent module is a module which is not derived from or based on FreeRTOS.
+
+Clause 1: Linking FreeRTOS with other modules is making a combined work based
+on FreeRTOS. Thus, the terms and conditions of the GNU General Public License
+V2 cover the whole combination.
+
+As a special exception, the copyright holders of FreeRTOS give you permission
+to link FreeRTOS with independent modules to produce a statically linked
+executable, regardless of the license terms of these independent modules, and
+to copy and distribute the resulting executable under terms of your choice,
+provided that you also meet, for each linked independent module, the terms and
+conditions of the license of that module. An independent module is a module
+which is not derived from or based on FreeRTOS.
+
+Clause 2: FreeRTOS may not be used for any competitive or comparative purpose,
+including the publication of any form of run time or compile time metric,
+without the express permission of Real Time Engineers Ltd. (this is the norm
+within the industry and is intended to ensure information accuracy).
+
+RivieraWaves SAS (a member of the CEVA, Inc. family of companies)
+You may not use the RivieraWaves intellectual property licensed under this
+Agreement if you develop, market, and/or license products similar to such
+RivieraWaves intellectual property. Such use constitutes a breach of this
+Agreement. Any such use rights must be obtained directly from RivieraWaves.
+
+SanDisk Corporation
+If the Licensed Software includes software developed by SanDisk Corporation
+("SanDisk"), you must separately obtain the rights to reproduce and distribute
+this software in source code form from SanDisk. Please follow these easy steps
+to obtain the license and software:
+
+1. Contact your local SanDisk sales representative to obtain the SanDisk
+License Agreement.
+2. Sign the license agreement. Fax the signed agreement to SanDisk USA
+marketing department at 408-542-0403. The license will be valid when fully
+executed by SanDisk.
+3. If you have specific questions, please send an email to sales@sandisk.com
+
+You may only use the SanDisk Corporation Licensed Software on products
+compatible with a SanDisk Secure Digital Card. You may not use the SanDisk
+Corporation Licensed Software on any memory device product. SanDisk retains
+all rights to any modifications or derivative works to the SanDisk Corporation
+Licensed Software that you may create.
+
+SEGGER Microcontroller
+Your use of SEGGER emWin software is restricted to NXP ARM7, ARM9, Cortex-M0,
+Cortex-M3, and Cortex-M4 based devices only.
+
+Synopsys/Target Compiler Technologies
+Your use of the Synopsys/Target Compiler Technologies Licensed Software and
+related documentation is subject to the following:
+
+* Duration of the license for the Licensed Software is limited to 12
+months, unless otherwise specified in the license file.
+* The Licensed Software is usable by one user at a time on a single
+designated computer, unless otherwise agreed by Synopsys.
+* Licensed Software and documentation are to be used only on a designated
+computer at the designated physical address provided by you on the APEX license
+form.
+* The Licensed Software is not sub-licensable.
+
+
+Texas Instruments
+Your use of Texas Instruments Inc. WiLink8 Licensed Software is restricted to
+NXP SoC based systems that include a compatible connectivity device
+manufactured by TI.
+
+Vivante
+Distribution of Vivante software must be a part of, or embedded within,
+Authorized Systems that include a Vivante Graphics Processing Unit.
diff --git a/bsp/meta-freescale/LICENSE b/bsp/meta-freescale/LICENSE
new file mode 100644
index 00000000..17964fe5
--- /dev/null
+++ b/bsp/meta-freescale/LICENSE
@@ -0,0 +1,12 @@
+Different components of meta-freescale are under different licenses (a mix
+of MIT and proprietary). Please see:
+
+COPYING.MIT (MIT)
+custom-licenses/* (Various EULAs, included by recipes)
+
+All metadata is MIT licensed unless otherwise stated. Source code and binaries
+included in tree for individual recipes are under the LICENSE stated in
+the associated recipe (.bb file) unless otherwise stated.
+
+License information for any other files is either explicitly stated
+or defaults to GPL version 2.
diff --git a/bsp/meta-freescale/README b/bsp/meta-freescale/README
new file mode 100644
index 00000000..1f40864b
--- /dev/null
+++ b/bsp/meta-freescale/README
@@ -0,0 +1,38 @@
+OpenEmbedded/Yocto BSP layer for Freescale's platforms
+======================================================
+
+This layer provides support for Freescale's platforms for use with
+OpenEmbedded and/or Yocto.
+
+This layer depends on:
+
+URI: git://git.openembedded.org/openembedded-core
+branch: master
+revision: HEAD
+
+Contributing
+------------
+
+To contribute to this layer you should submit the patches for review to the
+mailing list (meta-freescale@yoctoproject.org).
+
+Please refer to:
+http://openembedded.org/wiki/Commit_Patch_Message_Guidelines
+
+for some useful guidelines to be followed when submitting patches.
+
+Mailing list:
+
+ https://lists.yoctoproject.org/listinfo/meta-freescale
+
+Source code:
+
+ https://github.com/Freescale/meta-freescale
+
+When creating patches, please use something like:
+
+ git format-patch -s origin
+
+When sending patches, please use something like:
+
+ git send-email --to meta-freescale@yoctoproject.org <generated patch>
diff --git a/bsp/meta-freescale/SCR/SCR-4.1.15-2.0.0.txt b/bsp/meta-freescale/SCR/SCR-4.1.15-2.0.0.txt
new file mode 100644
index 00000000..ec0274c6
--- /dev/null
+++ b/bsp/meta-freescale/SCR/SCR-4.1.15-2.0.0.txt
@@ -0,0 +1,404 @@
+NXP Software Content Register
+
+Release - Linux 4.1.15
+
+Date Created: 2016-Sep-14
+
+--------------------------------------------
+BSP PACKAGES
+--------------------------------------------
+
+Package: linux-2.6-imx
+
+Outgoing License: GPL-2.0+
+
+License Files: COPYING: GPL-2.0
+
+Package Category: BSP
+
+Type of content: Source code
+
+Description and comments: The Linux kernel with i.MX-specific drivers
+
+Release Location: git.freescale.com branch imx_4.1.15_2.0.0_ga
+
+Origin: Freescale Semiconductor, Inc. (GPL-2.0+)
+ kernel.org (GPL-2.0+) - https://www.kernel.org/
+
+--------------------------------------------
+
+Package: uboot-imx
+
+Outgoing License: GPL-2.0+
+
+License Files: COPYING: GPL-2.0
+
+Package Category: Bootloader
+
+Type of content: Source code
+
+Description and comments: Bootloader with i.MX-specific capabilities
+
+Release Location: git.freescale.com branch imx_v2016.03_4.1.15_2.0.0_ga
+
+Origin: Freescale Semiconductor, Inc. (GPL-2.0+)
+ Das U-Boot - Universal Bootloader (LGPL-2.0+) - http://www.denx.de/wiki/U-Boot/WebHome
+ Android Open Source Project (BSD-2-Clause) - https://source.android.com/
+ zlib (zlib license) - http://www.zlib.net/
+
+--------------------------------------------
+
+Package: firmware-imx-5.4.bin
+
+Outgoing License: LA_OPT_BASE_LICENSE v12 March 2016
+
+License Files: COPYING
+
+Package Category: BSP
+
+Type of content: Binaries
+
+Description and comments: BSP firmware - EPDC, SDMA, VPU
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (proprietary)
+ Chips & Media, Inc. (proprietary)
+
+--------------------------------------------
+
+Package: imx-lib-5.5.tar.gz
+
+Outgoing License: LGPL-2.1+
+
+License Files: COPYING-LGPL-2.1
+
+Package Category: BSP
+
+Type of content: Source code
+
+Description and comments: BSP libraries
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (LGPL-2.1+)
+
+--------------------------------------------
+
+Package: imx-test-5.7.tar.gz
+
+Outgoing License: Each test has its own license
+
+License Files: See source code.
+
+Package Category: BSP
+
+Type of content: Source code
+
+Description and comments: Linux unit test applications
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (proprietary)
+ Linux Test Project (GPL-2.0+) - https://github.com/linux-test-project/ltp
+ Chips and Media Resource (GPL2+) - none
+ RTC Test in Linux Kernel (GPL-2.0+) - http://kernel.org
+ BlueZ (GPL-2.0+) - http://www.bluez.org/
+ Embedded Alley v4l2 test (GPL-2.0+)
+ Android Open Source Project (BSD-2-Clause) - https://source.android.com/
+ Hantro Memalloc in Linux (GPL-2.0+)
+ Linux driver for Atheros AR5210 802.11a (GPL-2.0+) - http://sourceforge.net/projects/ar5k/
+ Hannu Savolainen's soundcard.h (BSD-2-clause)
+
+--------------------------------------------
+
+Package: imx-vpu-5.4.35.bin
+
+Outgoing License: LA_OPT_BASE_LICENSE v12 March 2016
+
+License Files: COPYING
+
+Package Category: BSP
+
+Type of content: Source code
+
+Description and comments: VPU library
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (proprietary)
+ Chips & Media, Inc. (proprietary)
+
+--------------------------------------------
+GRAPHICS PACKAGES
+--------------------------------------------
+
+Package: imx-gpu-viv-5.0.11.p8.6.bin
+
+Outgoing License: LA_OPT_BASE_LICENSE v14 June 2016
+
+License Files: COPYING
+
+Package Category: Graphics
+
+Type of content: Binaries, scripts and header files
+
+Description and comments: GPU Core IP in binary and test application source
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (proprietary)
+ Vivante Corp. (proprietary)
+ apitrace (MIT) - https://github.com/apitrace/apitrace
+ opengleskul (MIT) - https://code.google.com/archive/p/opengleskul/
+ Khronos Group (MIT) - http://www.khronos.org/
+ Mesa3D - Mesa Lib [GL3ext header] (SGI-B-2.0) - http://mesa3d.sourceforge.net/
+ libdri (MIT) - http://dri.freedesktop.org/wiki/
+ The Android Open Source Project (Apache 2.0) - https://source.android.com/
+ LLVM Compiler (BSD-3-clause) - https://github.com/prof123/llvm/
+
+--------------------------------------------
+
+Package: kernel-module-imx-gpu-viv-5.0.11.p8.6.tar.gz
+
+Outgoing License: GPL-2.0+
+
+License Files: See source code.
+
+Package Category: Graphics
+
+Type of content: Source code
+
+Description and comments: GPU kernel source provided for kernel loadable modules
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (GPL-2.0+)
+ Vivante Corp. (proprietary)
+
+--------------------------------------------
+
+Package: xserver-xorg-video-imx-viv-5.0.11.p8.6.tar.gz
+
+Outgoing License: MIT
+
+License Files: COPYING-MIT
+
+Package Category: Graphics
+
+Type of content: Source code
+
+Description and comments: Xserver Library extensions
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (MIT)
+ Vivante Corp. (MIT)
+ xorg-server (MIT) - http://xorg.freedesktop.org/
+ XFree86 Project (XFree86-1.0) - http://sourceforge.net/projects/xfree86/
+ xf86-video-freedreno (MIT) - http://github.com/freedreno/xf86-video-freedreno/
+
+--------------------------------------------
+
+Package: imx-gpu-sdk-2.3.2.bin
+
+Outgoing License: LA_OPT_BASE_LICENSE v14 June 2016
+
+License Files: COPYING
+
+Package Category: Graphics
+
+Type of content: Source code
+
+Description and comments: Graphics sample applications
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (proprietary)
+ DevIL (LGPL-2.1+) - https://sourceforge.net/projects/openil/ [separate binary]
+ Templatized C++ Command Line Parser [tclap] (MIT) - http://sourceforge.net/projects/tclap/
+ The Android Open Source Project (Apache-2.0) - https://source.android.com/
+ Mesa 3D - Graphics Library (MIT) - http://mesa3d.sourceforge.net/
+ "OpenGL(R) ES 3.0 Programming Guide" book samples (MIT) - http://github.com/zemanel/opengles-book-samples/
+ The Khronos Group Inc. (MIT) - http://www.khronos.org/
+ Wayland (Seetex License) - http://cgit.freedesktop.org/~krh/wayland/
+ GetTimeOfDay (MIT) - unknown
+ XFree86 (XFree86-1.0) - http://www.xfree86.org/
+ Chromium (BSD) - https://github.com/bloomberg/chromium.bb/
+
+--------------------------------------------
+
+Package: VivanteVTK-v5.0.11.p8.1.6.7.tgz
+
+Outgoing License: Vivante Licenses in each msi install
+
+License Files: included in msi install
+
+Package Category: Graphics
+
+Type of content: Setup MSI installations
+
+Description and comments: Vivante Tools
+
+Release Location: mx8_downloads
+
+Origin: VeriSilicon
+
+--------------------------------------------
+MULTIMEDIA PACKAGES
+--------------------------------------------
+
+Package: imx-gst1.0-plugin-4.1.4.tar.gz
+
+Outgoing License: LGPL-2.1+
+
+License Files: COPYING (GPL-2.0)
+ COPYING-LGPL-2
+ COPYING-LGPL-2.1
+
+Package Category: Multimedia
+
+Type of content: Source code
+
+Description and comments: i.MX Gstreamer 1.0 plugins
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (LGPL-2.1+)
+ Gstreamer plugins-Base (LGPL-2.1+) - http://gstreamer.freedesktop.org/src/gst-plugins-base/
+ Gstreamer plugins-Good (LGPL-2.1+) - http://gstreamer.freedesktop.org/src/gst-plugins-good/
+ Gstreamer plugins-Bad (LGPL-2.1+) - http://gstreamer.freedesktop.org/src/gst-plugins-bad/
+
+--------------------------------------------
+
+Package: imx-codec-4.1.4.bin
+
+Outgoing License: LA_OPT_BASE_LICENSE v14 June 2016
+
+License Files: COPYING
+
+Package Category: Multimedia
+
+Type of content: Binaries and header files
+
+Description and comments: i.MX multimedia codec libraries
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (proprietary)
+ ISO/IEC 13818-7 and ISO/IEC 14496-3 standards
+ 3GPP 26.173 standard
+ FLAC (BSD-3-clause) - https://sourceforge.net/projects/flac/
+ libjpeg (IJG) - http://www.ijg.org/
+ OggVorbis Tremor (BSD-3-Clause) - http://xiph.org/vorbis/
+
+--------------------------------------------
+
+Package: imx-parser-4.1.4.bin
+
+Outgoing License: LA_OPT_BASE_LICENSE v14 June 2016
+
+License Files: COPYING
+
+Package Category: Multimedia
+
+Type of content: Binaries and header files
+
+Description and comments: i.MX multimedia parser libraries
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (proprietary)
+
+--------------------------------------------
+
+Package: imx-vpuwrap-1.0.68.bin
+
+Outgoing License: LA_OPT_BASE_LICENSE v14 June 2016
+
+License Files: COPYING
+
+Package Category: Multimedia
+
+Type of content: Source code
+
+Description and comments: i.MX VPU wrapper library
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (proprietary)
+ sqlite (Public Domain) - http://www.hwaci.com/sw/sqlite/index.html
+
+--------------------------------------------
+
+Package: imx-qtapplications-1.0.9.bin
+
+Outgoing License: LA_OPT_BASE_LICENSE v14 June 2016
+
+License Files: COPYING
+
+Package Category: Multimedia
+
+Type of content: Binaries
+
+Description and comments: i.MX QT multimedia player application
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (proprietary)
+
+--------------------------------------------
+
+Package: simg2img-1.0.0.tar.gz
+
+Outgoing License: Apache-2.0
+
+License Files: COPYING
+
+Package Category: Multimedia
+
+Type of content: Source
+
+Description and comments: Tool to convert Android sparse images to raw images
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (Apache-2.0)
+ The Android Open Source Project (Apache-2.0) - https://android.googlesource.com/platform/system/core/+/master/libsparse
+ Gary S Brown (Public Domain) - http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/libkern/crc32.c?txt
+--------------------------------------------
+
+Package: imx-alsa-plugins-1.0.26
+
+Outgoing License: GPL-2.0+
+
+License Files: COPYING-GPL: GPL-2.0
+
+Package Category: Multimedia
+
+Type of content: Source
+
+Description and comments: Audio
+
+Release Location: i.MX Yocto Project mirror
+
+Origin: Freescale Semiconductor, Inc. (GPL-2.0+)
+ Alsa Plugins (GPL-2.0+) - ftp://ftp.alsa-project.org/pub/plugins/
+ GNU libtool (GPL-2.0+) http://www.gnu.org/software/libtool/
+
+--------------------------------------------
+M4 PACKAGES
+--------------------------------------------
+Package: imx7d_sabresd_m4_freertos_1.0.1
+
+Outgoing License: LA_OPT_BASE_LICENSE v14 June 2016
+
+Description and comments: See the SW-Content-Register-FreeRTOS-BSP-1.0.1 for details
+ on the contents and origins.
+
+Release Location: i.MX Yocto Project mirror
+
+Origin overview: Freescale Semiconductor, Inc. (BSD-3-clause)
+ ARM (BSD-3-clause) - http://silver.arm.com
+ Real Time Engineers, Ltd. (GPL-2.0-WITHfreertos-exception-2.0) - http://www.freertos.org
+ Mentor Graphics, Ltd. (BSD-3-Clause) - https://github.com/OpenAMP/open-amp
diff --git a/bsp/meta-freescale/classes/dtc-145.bbclass b/bsp/meta-freescale/classes/dtc-145.bbclass
new file mode 100644
index 00000000..d4a30711
--- /dev/null
+++ b/bsp/meta-freescale/classes/dtc-145.bbclass
@@ -0,0 +1,7 @@
+# Use this class for U-Boot 2017.03 or older.
+
+DEPENDS_append = " dtc-145-native"
+
+do_configure_prepend () {
+ sed -i -e 's/^DTC[[:space:]]*=[[:space:]]*dtc[[:space:]]*$/DTC = dtc-145/' ${S}/Makefile
+}
diff --git a/bsp/meta-freescale/classes/fsl-dynamic-packagearch.bbclass b/bsp/meta-freescale/classes/fsl-dynamic-packagearch.bbclass
new file mode 100644
index 00000000..a7cc53fc
--- /dev/null
+++ b/bsp/meta-freescale/classes/fsl-dynamic-packagearch.bbclass
@@ -0,0 +1,69 @@
+# Automatically set PACKAGE_ARCH for MACHINE_SOCARCH
+#
+# This allow to easy reuse of binary packages among similar SoCs. The
+# usual use for this is to share SoC specific packages among different
+# boards.
+#
+# MACHINE_SOCARCH_FILTER list all packages associated with
+# MACHINE_SOCARCH and, when match, will set PACKAGE_ARCH as MACHINE_SOCARCH
+#
+# MACHINE_ARCH_FILTER list all packages associated with
+# MACHINE_ARCH and, when match, will set PACKAGE_ARCH as MACHINE_ARCH
+#
+# For example, in meta-fsl-arm, this is used to share GPU packages for
+# i.MX53 boards (as all them share the AMD GPU) and i.MX6 based boards
+# (as all them share Vivante GPU).
+#
+# To use the class, specify, for example:
+#
+# MACHINE_SOCARCH_SUFFIX_soc = "-soc"
+#
+# and the need filters, as:
+#
+# MACHINE_ARCH_FILTER = "virtual/kernel"
+# MACHINE_SOCARCH_FILTER_soc = "virtual/libgles1 ... virtual/libgl"
+#
+# Copyright 2013-2016 (C) O.S. Systems Software LTDA.
+
+python __anonymous () {
+ machine_arch_filter = set((d.getVar("MACHINE_ARCH_FILTER", True) or "").split())
+ machine_socarch_filter = set((d.getVar("MACHINE_SOCARCH_FILTER", True) or "").split())
+ if machine_socarch_filter or machine_arch_filter:
+ provides = set((d.getVar("PROVIDES", True) or "").split())
+ depends = set((d.getVar("DEPENDS", True) or "").split())
+ PN = d.getVar("PN", True)
+
+ package_arch = None
+ if list(machine_arch_filter & (provides | depends)):
+ package_arch = d.getVar("MACHINE_ARCH", True)
+ elif list(machine_socarch_filter & (provides | depends)):
+ package_arch = d.getVar("MACHINE_SOCARCH", True)
+ if not package_arch:
+ raise bb.parse.SkipPackage("You must set MACHINE_SOCARCH as MACHINE_SOCARCH_FILTER is set for this SoC.")
+
+ machine_socarch_suffix = d.getVar("MACHINE_SOCARCH_SUFFIX", True)
+ if not machine_socarch_suffix:
+ raise bb.parse.SkipPackage("You must set MACHINE_SOCARCH_SUFFIX as MACHINE_SOCARCH_FILTER is set for this SoC.")
+
+ if package_arch:
+ bb.debug(1, "Use '%s' as package architecture for '%s'" % (package_arch, PN))
+ d.setVar("PACKAGE_ARCH", package_arch)
+
+ cur_package_archs = (d.getVar("PACKAGE_ARCHS", True) or "").split()
+ machine_socarch = (d.getVar("MACHINE_SOCARCH", True) or "")
+ if not machine_socarch in cur_package_archs:
+ d.appendVar("PACKAGE_EXTRA_ARCHS", " %s" % machine_socarch)
+
+ if d.getVar("TUNE_ARCH", True) == "arm":
+ # For ARM we have two possible machine_socarch values, one for the arm and one for the thumb instruction set
+ # add the other value to extra archs also, so that a image recipe searches both for packages.
+ if d.getVar("ARM_INSTRUCTION_SET", True) == "thumb":
+ d.appendVar("PACKAGE_EXTRA_ARCHS", " %s" % d.getVar("ARM_EXTRA_SOCARCH", True))
+ else:
+ d.appendVar("PACKAGE_EXTRA_ARCHS", " %s" % d.getVar("THUMB_EXTRA_SOCARCH", True))
+}
+
+MACHINE_SOCARCH = "${TUNE_PKGARCH}${MACHINE_SOCARCH_SUFFIX}"
+
+ARM_EXTRA_SOCARCH = "${ARMPKGARCH}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}${MACHINE_SOCARCH_SUFFIX}"
+THUMB_EXTRA_SOCARCH = "${ARMPKGARCH}${ARM_THUMB_SUFFIX}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}${MACHINE_SOCARCH_SUFFIX}"
diff --git a/bsp/meta-freescale/classes/fsl-eula-unpack.bbclass b/bsp/meta-freescale/classes/fsl-eula-unpack.bbclass
new file mode 100644
index 00000000..198a1944
--- /dev/null
+++ b/bsp/meta-freescale/classes/fsl-eula-unpack.bbclass
@@ -0,0 +1,68 @@
+# fsl-eula-unpack.bbclass provides the mechanism used for unpacking
+# the .bin file downloaded by HTTP and handle the EULA acceptance.
+#
+# To use it, the 'fsl-eula' parameter needs to be added to the
+# SRC_URI entry, e.g:
+#
+# SRC_URI = "${FSL_MIRROR}/firmware-imx-${PV};fsl-eula=true"
+
+LIC_FILES_CHKSUM_append = " file://${FSL_EULA_FILE};md5=ab61cab9599935bfe9f700405ef00f28"
+
+LIC_FILES_CHKSUM[vardepsexclude] += "FSL_EULA_FILE"
+
+python fsl_bin_do_unpack() {
+ src_uri = (d.getVar('SRC_URI', True) or "").split()
+ if len(src_uri) == 0:
+ return
+
+ localdata = bb.data.createCopy(d)
+ bb.data.update_data(localdata)
+
+ rootdir = localdata.getVar('WORKDIR', True)
+ fetcher = bb.fetch2.Fetch(src_uri, localdata)
+
+ for url in fetcher.ud.values():
+ save_cwd = os.getcwd()
+ # Check for supported fetchers
+ if url.type in ['http', 'https', 'ftp', 'file']:
+ if url.parm.get('fsl-eula', False):
+ # If download has failed, do nothing
+ if not os.path.exists(url.localpath):
+ bb.debug(1, "Exiting as '%s' cannot be found" % url.basename)
+ return
+
+ # Change to the working directory
+ bb.note("Handling file '%s' as a Freescale's EULA binary." % url.basename)
+ save_cwd = os.getcwd()
+ os.chdir(rootdir)
+
+ cmd = "sh %s --auto-accept --force" % (url.localpath)
+ bb.fetch2.runfetchcmd(cmd, d, quiet=True)
+
+ # Return to the previous directory
+ os.chdir(save_cwd)
+}
+
+python do_unpack() {
+ eula = d.getVar('ACCEPT_FSL_EULA', True)
+ eula_file = d.getVar('FSL_EULA_FILE', True)
+ pkg = d.getVar('PN', True)
+ if eula == None:
+ bb.fatal("To use '%s' you need to accept the Freescale EULA at '%s'. "
+ "Please read it and in case you accept it, write: "
+ "ACCEPT_FSL_EULA = \"1\" in your local.conf." % (pkg, eula_file))
+ elif eula == '0':
+ bb.fatal("To use '%s' you need to accept the Freescale EULA." % pkg)
+ else:
+ bb.note("Freescale EULA has been accepted for '%s'" % pkg)
+
+ # The binary unpack needs to be done first so 'S' is valid
+ bb.build.exec_func('fsl_bin_do_unpack', d)
+
+ try:
+ bb.build.exec_func('base_do_unpack', d)
+ except:
+ raise
+}
+
+do_unpack[vardepsexclude] += "FSL_EULA_FILE"
diff --git a/bsp/meta-freescale/classes/fsl-kernel-localversion.bbclass b/bsp/meta-freescale/classes/fsl-kernel-localversion.bbclass
new file mode 100644
index 00000000..ff1075e5
--- /dev/null
+++ b/bsp/meta-freescale/classes/fsl-kernel-localversion.bbclass
@@ -0,0 +1,43 @@
+# Freescale Kernel LOCALVERSION extension
+#
+# This allow to easy reuse of code between different kernel recipes
+#
+# The following options are supported:
+#
+# SCMVERSION Puts the Git hash in kernel local version
+# LOCALVERSION Value used in LOCALVERSION (default to '+fslc')
+#
+# Copyright 2014, 2015 (C) O.S. Systems Software LTDA.
+
+SCMVERSION ??= "y"
+LOCALVERSION ??= "+fslc"
+
+kernel_conf_variable() {
+ CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;"
+ if test "$2" = "n"
+ then
+ echo "# CONFIG_$1 is not set" >> ${B}/.config
+ else
+ echo "CONFIG_$1=$2" >> ${B}/.config
+ fi
+}
+
+do_preconfigure() {
+ mkdir -p ${B}
+ echo "" > ${B}/.config
+ CONF_SED_SCRIPT=""
+
+ kernel_conf_variable LOCALVERSION "\"${LOCALVERSION}\""
+ if [ "${SCMVERSION}" = "y" ]; then
+ kernel_conf_variable LOCALVERSION_AUTO y
+ fi
+
+ sed -e "${CONF_SED_SCRIPT}" < '${WORKDIR}/defconfig' >> '${B}/.config'
+
+ if [ "${SCMVERSION}" = "y" ]; then
+ # Add GIT revision to the local version
+ head=`git --git-dir=${S}/.git rev-parse --verify --short HEAD 2> /dev/null`
+ printf "%s%s" +g $head > ${S}/.scmversion
+ fi
+}
+addtask preconfigure before do_configure after do_unpack do_patch
diff --git a/bsp/meta-freescale/classes/fsl-u-boot-localversion.bbclass b/bsp/meta-freescale/classes/fsl-u-boot-localversion.bbclass
new file mode 100644
index 00000000..617aae1d
--- /dev/null
+++ b/bsp/meta-freescale/classes/fsl-u-boot-localversion.bbclass
@@ -0,0 +1,27 @@
+# Freescale U-Boot LOCALVERSION extension
+#
+# This allow to easy reuse of code between different U-Boot recipes
+#
+# The following options are supported:
+#
+# SCMVERSION Puts the Git hash in U-Boot local version
+# LOCALVERSION Value used in LOCALVERSION (default to '+fslc')
+#
+# Copyright 2014 (C) O.S. Systems Software LTDA.
+
+SCMVERSION ??= "y"
+LOCALVERSION ??= "+fslc"
+
+UBOOT_LOCALVERSION = "${LOCALVERSION}"
+
+do_compile_prepend() {
+ if [ "${SCMVERSION}" = "y" ]; then
+ # Add GIT revision to the local version
+ head=`cd ${S} ; git rev-parse --verify --short HEAD 2> /dev/null`
+ printf "%s%s%s" "${UBOOT_LOCALVERSION}" +g $head > ${S}/.scmversion
+ printf "%s%s%s" "${UBOOT_LOCALVERSION}" +g $head > ${B}/.scmversion
+ else
+ printf "%s" "${UBOOT_LOCALVERSION}" > ${S}/.scmversion
+ printf "%s" "${UBOOT_LOCALVERSION}" > ${B}/.scmversion
+ fi
+}
diff --git a/bsp/meta-freescale/classes/fsl-vivante-kernel-driver-handler.bbclass b/bsp/meta-freescale/classes/fsl-vivante-kernel-driver-handler.bbclass
new file mode 100644
index 00000000..e0578f4e
--- /dev/null
+++ b/bsp/meta-freescale/classes/fsl-vivante-kernel-driver-handler.bbclass
@@ -0,0 +1,63 @@
+# Freescale Kernel Vivante Kernel Driver handler
+#
+# Enable the kernel to provide or not the Vivante kernel driver and
+# dynamically set the proper providers per machine.
+#
+# The following options are supported:
+#
+# MACHINE_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT
+#
+# Machine does or does not have support for the Vivante kernel
+# driver, options are:
+#
+# 0 - machine does not have Vivante GPU driver support
+# 1 - machine has Vivante GPU driver support
+#
+# MACHINE_USES_VIVANTE_KERNEL_DRIVER_MODULE
+#
+# Machine uses the Vivante kernel driver as module, options are:
+#
+# 0 - enable the builtin kernel driver module
+# 1 - enable the external kernel module
+#
+# Copyright 2015, 2016 (C) O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+# Handle Vivante kernel driver setting:
+# 0 - machine does not have Vivante GPU driver support
+# 1 - machine has Vivante GPU driver support
+MACHINE_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT ??= "0"
+
+# Use Vivante kernel driver module:
+# 0 - enable the builtin kernel driver module
+# 1 - enable the external kernel module
+MACHINE_USES_VIVANTE_KERNEL_DRIVER_MODULE ??= "${@d.getVar('MACHINE_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT', False) or '0'}"
+
+python fsl_vivante_kernel_driver_handler () {
+ has_vivante_kernel_driver_support = e.data.getVar('MACHINE_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT', True) or "0"
+ use_vivante_kernel_driver_module = e.data.getVar('MACHINE_USES_VIVANTE_KERNEL_DRIVER_MODULE', True) or "0"
+
+ if has_vivante_kernel_driver_support != "1":
+ return
+
+ if use_vivante_kernel_driver_module != "1":
+ e.data.appendVar('RPROVIDES_kernel-base', ' kernel-module-imx-gpu-viv')
+ e.data.appendVar('RREPLACES_kernel-base', ' kernel-module-imx-gpu-viv')
+ e.data.appendVar('RCONFLICTS_kernel-base', ' kernel-module-imx-gpu-viv')
+}
+
+addhandler fsl_vivante_kernel_driver_handler
+fsl_vivante_kernel_driver_handler[eventmask] = "bb.event.RecipePreFinalise"
+
+do_configure_append () {
+ if [ "${MACHINE_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT}" = "1" ]; then
+ config="${B}/.config"
+
+ sed -i "/CONFIG_MXC_GPU_VIV[ =]/d" $config
+ if [ "${MACHINE_USES_VIVANTE_KERNEL_DRIVER_MODULE}" = "1" ]; then
+ echo "# CONFIG_MXC_GPU_VIV is not set" >> $config
+ else
+ echo "CONFIG_MXC_GPU_VIV=y" >> $config
+ fi
+ fi
+}
diff --git a/bsp/meta-freescale/classes/image_types_fsl.bbclass b/bsp/meta-freescale/classes/image_types_fsl.bbclass
new file mode 100644
index 00000000..c49c51b7
--- /dev/null
+++ b/bsp/meta-freescale/classes/image_types_fsl.bbclass
@@ -0,0 +1,44 @@
+inherit image_types
+
+# Handle u-boot suffixes
+UBOOT_SUFFIX ?= "bin"
+
+#
+# Handles i.MX mxs bootstream generation
+#
+MXSBOOT_NAND_ARGS ?= ""
+
+# U-Boot mxsboot generation for uSD
+do_image_uboot_mxsboot_sdcard[depends] += "u-boot-mxsboot-native:do_populate_sysroot \
+ u-boot:do_deploy"
+IMAGE_CMD_uboot-mxsboot-sdcard() {
+ mxsboot sd ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.${UBOOT_SUFFIX} \
+ ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.uboot-mxsboot-sdcard
+ ln -sf ${IMAGE_NAME}.rootfs.uboot-mxsboot-sdcard \
+ ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.uboot-mxsboot-sdcard
+}
+
+# U-Boot mxsboot generation for NAND
+do_image_uboot_mxsboot_nand[depends] += "u-boot-mxsboot-native:do_populate_sysroot \
+ u-boot:do_deploy"
+IMAGE_CMD_uboot-mxsboot-nand() {
+ mxsboot ${MXSBOOT_NAND_ARGS} nand \
+ ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.${UBOOT_SUFFIX} \
+ ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.uboot-mxsboot-nand
+ ln -sf ${IMAGE_NAME}.rootfs.uboot-mxsboot-nand \
+ ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.rootfs.uboot-mxsboot-nand
+}
+
+# In case we are building for i.MX23 or i.MX28 we need to have the
+# image stream built before the wic generation
+do_image_wic[depends] += " \
+ ${@bb.utils.contains('IMAGE_FSTYPES', 'uboot-mxsboot-sdcard', \
+ '${IMAGE_BASENAME}:do_image_uboot_mxsboot_sdcard', '', d)} \
+"
+
+# We need to apply a fixup inside of the partition table
+IMAGE_CMD_wic_append_mxs() {
+ # Change partition type for mxs processor family
+ bbnote "Setting partition type to 0x53 as required for mxs' SoC family."
+ echo -n S | dd of=$out${IMAGE_NAME_SUFFIX}.wic bs=1 count=1 seek=450 conv=notrunc
+}
diff --git a/bsp/meta-freescale/classes/kernel-imximage.bbclass b/bsp/meta-freescale/classes/kernel-imximage.bbclass
new file mode 100644
index 00000000..234cc00d
--- /dev/null
+++ b/bsp/meta-freescale/classes/kernel-imximage.bbclass
@@ -0,0 +1,60 @@
+# -*- python -*-
+# Linux kernel with DCD headers
+#
+# This new image type adds support to generate a Linux kernel with DCD
+# headers. Essentially it adds support to directly boot a Linux kernel
+# without a bootloader.
+#
+# As the Linux kernel will be boot directly, it required that the Device
+# Tree is appended to the kernel image. To have the Linux kernel
+# generated with the DCD headers, following steps must be followed:
+#
+# - Linux kernel recipe must inherit kernel-imximage class;
+# - Device Tree appended Linux kernel must be used
+# (KERNEL_DEVICETREE_BUNDLE = "1");
+# - DCD header configuration must be provided (dcd.cfg or
+# dcd-<devicetree>.cfg);
+#
+# Copyright 2017 (C) O.S. Systems Software LTDA.
+
+DEPENDS_append = ' u-boot-mkimage-native'
+
+IMXIMAGE_ENTRYPOINT ?= "${UBOOT_ENTRYPOINT}"
+
+imx_mkimage() {
+ uboot-mkimage -n $1 -T imximage -e ${IMXIMAGE_ENTRYPOINT} -d $2 $2.imx
+}
+
+gen_imximage() {
+ if [ -z "${IMXIMAGE_ENTRYPOINT}" ]; then
+ bbfatal "IMXIMAGE_ENTRYPOINT must have a valid value"
+ fi
+
+ for DTB in ${KERNEL_DEVICETREE}; do
+ DTB=`normalize_dtb "${DTB}"`
+ DTB_EXT=${DTB##*.}
+ DTB_BASE_NAME=`basename ${DTB} ."${DTB_EXT}"`
+ base_name="zImage-"${KERNEL_IMAGE_BASE_NAME}
+ symlink_name="zImage-"${KERNEL_IMAGE_SYMLINK_NAME}
+ DTB_NAME=`echo ${base_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+ DTB_SYMLINK_NAME=`echo ${symlink_name} | sed "s/${MACHINE}/${DTB_BASE_NAME}/g"`
+ for DCD in dcd-${DTB}.cfg dcd.cfg; do
+ if [ -e "${WORKDIR}/${DCD}" ]; then
+ if [ -e ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT}.bin ]; then
+ imx_mkimage ${WORKDIR}/${DCD} ${DEPLOYDIR}/${DTB_NAME}.${DTB_EXT}.bin
+ ln -sf ${DTB_NAME}.${DTB_EXT}.bin.imx ${DEPLOYDIR}/$type-${DTB_BASE_NAME}.${DTB_EXT}.bin.imx
+ fi
+
+ if [ -e ${DEPLOYDIR}/zImage-${INITRAMFS_BASE_NAME}-${DTB_BASE_NAME}.${DTB_EXT}.bin ]; then
+ imx_mkimage ${WORKDIR}/${DCD} ${DEPLOYDIR}/zImage-${INITRAMFS_BASE_NAME}-${DTB_BASE_NAME}.${DTB_EXT}.bin
+ ln -sf zImage-${INITRAMFS_BASE_NAME}-${DTB_BASE_NAME}.${DTB_EXT}.bin.imx \
+ ${DEPLOYDIR}/zImage-initramfs-${DTB_BASE_NAME}.${DTB_EXT}-${MACHINE}.bin.imx
+ fi
+ fi
+ done
+ done
+}
+
+do_deploy_append() {
+ gen_imximage
+}
diff --git a/bsp/meta-freescale/classes/kernel-itbimage.bbclass b/bsp/meta-freescale/classes/kernel-itbimage.bbclass
new file mode 100644
index 00000000..703fa616
--- /dev/null
+++ b/bsp/meta-freescale/classes/kernel-itbimage.bbclass
@@ -0,0 +1,493 @@
+inherit kernel-uboot uboot-sign
+
+python __anonymous () {
+ kerneltypes = d.getVar('KERNEL_IMAGETYPES') or ""
+ if 'itbImage' in kerneltypes.split():
+ depends = d.getVar("DEPENDS")
+ depends = "%s u-boot-mkimage-native dtc-native" % depends
+ d.setVar("DEPENDS", depends)
+
+ if d.getVar("UBOOT_ARCH") == "x86":
+ replacementtype = "bzImage"
+ else:
+ replacementtype = "vmlinux"
+
+ # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
+ # to kernel.bbclass . We have to override it, since we pack zImage
+ # (at least for now) into the fitImage .
+ typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE") or ""
+ if 'itbImage' in typeformake.split():
+ d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('itbImage', replacementtype))
+
+ image = d.getVar('INITRAMFS_IMAGE')
+ if image:
+ d.appendVarFlag('do_assemble_fitimage_initramfs', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
+ def extraimage_getdepends(task):
+ deps = ""
+ for dep in (d.getVar('EXTRA_IMAGEDEPENDS') or "").split():
+ deps += " %s:%s" % (dep, task)
+ return deps
+
+ d.appendVarFlag('do_image', 'depends', extraimage_getdepends('do_populate_lic'))
+ d.appendVarFlag('do_image_complete', 'depends', extraimage_getdepends('do_populate_sysroot'))
+
+ # Verified boot will sign the fitImage and append the public key to
+ # U-Boot dtb. We ensure the U-Boot dtb is deployed before assembling
+ # the fitImage:
+ if d.getVar('UBOOT_SIGN_ENABLE') == "1":
+ uboot_pn = d.getVar('PREFERRED_PROVIDER_u-boot') or 'u-boot'
+ d.appendVarFlag('do_assemble_fitimage', 'depends', ' %s:do_deploy' % uboot_pn)
+}
+
+# Options for the device tree compiler passed to mkimage '-D' feature:
+UBOOT_MKIMAGE_DTCOPTS ??= ""
+
+#
+# Emit the fitImage ITS header
+#
+# $1 ... .its filename
+fitimage_emit_fit_header() {
+ cat << EOF >> ${1}
+/dts-v1/;
+
+/ {
+ description = "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}";
+ #address-cells = <1>;
+EOF
+}
+
+#
+# Emit the fitImage section bits
+#
+# $1 ... .its filename
+# $2 ... Section bit type: imagestart - image section start
+# confstart - configuration section start
+# sectend - section end
+# fitend - fitimage end
+#
+fitimage_emit_section_maint() {
+ case $2 in
+ imagestart)
+ cat << EOF >> ${1}
+
+ images {
+EOF
+ ;;
+ confstart)
+ cat << EOF >> ${1}
+
+ configurations {
+EOF
+ ;;
+ sectend)
+ cat << EOF >> ${1}
+ };
+EOF
+ ;;
+ fitend)
+ cat << EOF >> ${1}
+};
+EOF
+ ;;
+ esac
+}
+
+#
+# Emit the fitImage ITS kernel section
+#
+# $1 ... .its filename
+# $2 ... Image counter
+# $3 ... Path to kernel image
+# $4 ... Compression type
+fitimage_emit_section_kernel() {
+
+ kernel_csum="sha1"
+
+ ENTRYPOINT=${UBOOT_ENTRYPOINT}
+ if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
+ ENTRYPOINT=`${HOST_PREFIX}nm ${S}/vmlinux | \
+ awk '$4=="${UBOOT_ENTRYSYMBOL}" {print $2}'`
+ fi
+
+ cat << EOF >> ${1}
+ kernel@${2} {
+ description = "Linux kernel";
+ data = /incbin/("${3}");
+ type = "kernel";
+ arch = "${UBOOT_ARCH}";
+ os = "linux";
+ compression = "${4}";
+ load = <${UBOOT_LOADADDRESS}>;
+ entry = <${ENTRYPOINT}>;
+ hash@1 {
+ algo = "${kernel_csum}";
+ };
+ };
+EOF
+}
+
+#
+# Emit the fitImage ITS DTB section
+#
+# $1 ... .its filename
+# $2 ... Image counter
+# $3 ... Path to DTB image
+fitimage_emit_section_dtb() {
+
+ dtb_csum="sha1"
+
+ if [ -n "${DTB_LOAD}" ]; then
+ dtb_loadline="load = <${DTB_LOAD}>;"
+ fi
+
+ cat << EOF >> ${1}
+ fdt@${2} {
+ description = "Flattened Device Tree blob";
+ data = /incbin/("${3}");
+ type = "flat_dt";
+ arch = "${UBOOT_ARCH}";
+ compression = "none";
+ ${dtb_loadline}
+ hash@1 {
+ algo = "${dtb_csum}";
+ };
+ };
+EOF
+}
+
+#
+# Emit the fitImage ITS setup section
+#
+# $1 ... .its filename
+# $2 ... Image counter
+# $3 ... Path to setup image
+fitimage_emit_section_setup() {
+
+ setup_csum="sha1"
+
+ cat << EOF >> ${1}
+ setup@${2} {
+ description = "Linux setup.bin";
+ data = /incbin/("${3}");
+ type = "x86_setup";
+ arch = "${UBOOT_ARCH}";
+ os = "linux";
+ compression = "none";
+ load = <0x00090000>;
+ entry = <0x00090000>;
+ hash@1 {
+ algo = "${setup_csum}";
+ };
+ };
+EOF
+}
+
+#
+# Emit the fitImage ITS ramdisk section
+#
+# $1 ... .its filename
+# $2 ... Image counter
+# $3 ... Path to ramdisk image
+fitimage_emit_section_ramdisk() {
+
+ ramdisk_csum="sha1"
+ ramdisk_ctype="none"
+ ramdisk_loadline=""
+ ramdisk_entryline=""
+
+ if [ -n "${UBOOT_RD_LOADADDRESS}" ]; then
+ ramdisk_loadline="load = <${UBOOT_RD_LOADADDRESS}>;"
+ fi
+ if [ -n "${UBOOT_RD_ENTRYPOINT}" ]; then
+ ramdisk_entryline="entry = <${UBOOT_RD_ENTRYPOINT}>;"
+ fi
+
+ case $3 in
+ *.gz)
+ ramdisk_ctype="gzip"
+ ;;
+ *.bz2)
+ ramdisk_ctype="bzip2"
+ ;;
+ *.lzma)
+ ramdisk_ctype="lzma"
+ ;;
+ *.lzo)
+ ramdisk_ctype="lzo"
+ ;;
+ *.lz4)
+ ramdisk_ctype="lz4"
+ ;;
+ esac
+
+ cat << EOF >> ${1}
+ ramdisk@${2} {
+ description = "${INITRAMFS_IMAGE}";
+ data = /incbin/("${3}");
+ type = "ramdisk";
+ arch = "${UBOOT_ARCH}";
+ os = "linux";
+ compression = "${ramdisk_ctype}";
+ ${ramdisk_loadline}
+ ${ramdisk_entryline}
+ hash@1 {
+ algo = "${ramdisk_csum}";
+ };
+ };
+EOF
+}
+
+#
+# Emit the fitImage ITS configuration section
+#
+# $1 ... .its filename
+# $2 ... Linux kernel ID
+# $3 ... DTB image name
+# $4 ... ramdisk ID
+# $5 ... config ID
+# $6 ... default flag
+fitimage_emit_section_config() {
+
+ conf_csum="sha1"
+ if [ -n "${UBOOT_SIGN_ENABLE}" ] ; then
+ conf_sign_keyname="${UBOOT_SIGN_KEYNAME}"
+ fi
+
+ # Test if we have any DTBs at all
+ conf_desc="Linux kernel"
+ kernel_line="kernel = \"kernel@${2}\";"
+ fdt_line=""
+ ramdisk_line=""
+ setup_line=""
+ default_line=""
+
+ if [ -n "${3}" ]; then
+ conf_desc="${conf_desc}, FDT blob"
+ fdt_line="fdt = \"fdt@${3}\";"
+ fi
+
+ if [ -n "${4}" ]; then
+ conf_desc="${conf_desc}, ramdisk"
+ ramdisk_line="ramdisk = \"ramdisk@${4}\";"
+ fi
+
+ if [ -n "${5}" ]; then
+ conf_desc="${conf_desc}, setup"
+ setup_line="setup = \"setup@${5}\";"
+ fi
+
+ if [ "${6}" = "1" ]; then
+ default_line="default = \"conf@${3}\";"
+ fi
+
+ cat << EOF >> ${1}
+ ${default_line}
+ conf@${3} {
+ description = "${6} ${conf_desc}";
+ ${kernel_line}
+ ${fdt_line}
+ ${ramdisk_line}
+ ${setup_line}
+ hash@1 {
+ algo = "${conf_csum}";
+ };
+EOF
+
+ if [ ! -z "${conf_sign_keyname}" ] ; then
+
+ sign_line="sign-images = \"kernel\""
+
+ if [ -n "${3}" ]; then
+ sign_line="${sign_line}, \"fdt\""
+ fi
+
+ if [ -n "${4}" ]; then
+ sign_line="${sign_line}, \"ramdisk\""
+ fi
+
+ if [ -n "${5}" ]; then
+ sign_line="${sign_line}, \"setup\""
+ fi
+
+ sign_line="${sign_line};"
+
+ cat << EOF >> ${1}
+ signature@1 {
+ algo = "${conf_csum},rsa2048";
+ key-name-hint = "${conf_sign_keyname}";
+ ${sign_line}
+ };
+EOF
+ fi
+
+ cat << EOF >> ${1}
+ };
+EOF
+}
+
+#
+# Assemble fitImage
+#
+# $1 ... .its filename
+# $2 ... fitImage name
+# $3 ... include ramdisk
+fitimage_assemble() {
+ kernelcount=1
+ dtbcount=""
+ DTBS=""
+ ramdiskcount=${3}
+ setupcount=""
+ rm -f ${1} arch/${ARCH}/boot/${2}
+
+ fitimage_emit_fit_header ${1}
+
+ #
+ # Step 1: Prepare a kernel image section.
+ #
+ fitimage_emit_section_maint ${1} imagestart
+
+ uboot_prep_kimage
+ fitimage_emit_section_kernel ${1} "${kernelcount}" linux.bin "${linux_comp}"
+
+ #
+ # Step 2: Prepare a DTB image section
+ #
+ if [ -n "${KERNEL_DEVICETREE}" ]; then
+ dtbcount=1
+ for DTB in ${KERNEL_DEVICETREE}; do
+ if echo ${DTB} | grep -q '/dts/'; then
+ bbwarn "${DTB} contains the full path to the the dts file, but only the dtb name should be used."
+ DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'`
+ fi
+ DTB_PATH="arch/${ARCH}/boot/dts/${DTB}"
+ DTB=`basename ${DTB}`
+ if [ ! -e "${DTB_PATH}" ]; then
+ DTB_PATH="arch/${ARCH}/boot/${DTB}"
+ fi
+
+ DTBS="${DTBS} ${DTB}"
+ fitimage_emit_section_dtb ${1} ${DTB} ${DTB_PATH}
+ done
+ fi
+
+ #
+ # Step 3: Prepare a setup section. (For x86)
+ #
+ if [ -e arch/${ARCH}/boot/setup.bin ]; then
+ setupcount=1
+ fitimage_emit_section_setup ${1} "${setupcount}" arch/${ARCH}/boot/setup.bin
+ fi
+
+ #
+ # Step 4: Prepare a ramdisk section.
+ #
+ if [ "x${ramdiskcount}" = "x1" ] ; then
+ # Find and use the first initramfs image archive type we find
+ for img in cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.gz ext2.gz cpio; do
+ initramfs_path="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.${img}"
+ echo "Using $initramfs_path"
+ if [ -e "${initramfs_path}" ]; then
+ fitimage_emit_section_ramdisk ${1} "${ramdiskcount}" "${initramfs_path}"
+ break
+ fi
+ done
+ fi
+
+ fitimage_emit_section_maint ${1} sectend
+
+ # Force the first Kernel and DTB in the default config
+ kernelcount=1
+ if [ -n "${dtbcount}" ]; then
+ dtbcount=1
+ fi
+
+ #
+ # Step 5: Prepare a configurations section
+ #
+ fitimage_emit_section_maint ${1} confstart
+
+ if [ -n "${DTBS}" ]; then
+ i=1
+ for DTB in ${DTBS}; do
+ fitimage_emit_section_config ${1} "${kernelcount}" "${DTB}" "${ramdiskcount}" "${setupcount}" "`expr ${i} = ${dtbcount}`"
+ i=`expr ${i} + 1`
+ done
+ fi
+
+ fitimage_emit_section_maint ${1} sectend
+
+ fitimage_emit_section_maint ${1} fitend
+
+ #
+ # Step 6: Assemble the image
+ #
+ uboot-mkimage \
+ ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
+ -f ${1} \
+ arch/${ARCH}/boot/${2}
+
+ #
+ # Step 7: Sign the image and add public key to U-Boot dtb
+ #
+ if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ] ; then
+ uboot-mkimage \
+ ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
+ -F -k "${UBOOT_SIGN_KEYDIR}" \
+ -K "${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_BINARY}" \
+ -r arch/${ARCH}/boot/${2}
+ fi
+}
+
+do_assemble_fitimage() {
+ if echo ${KERNEL_IMAGETYPES} | grep -wq "itbImage"; then
+ cd ${B}
+ fitimage_assemble itb-image.its itbImage
+ fi
+}
+
+addtask assemble_fitimage before do_install after do_compile
+
+do_assemble_fitimage_initramfs() {
+ if echo ${KERNEL_IMAGETYPES} | grep -wq "itbImage" && \
+ test -n "${INITRAMFS_IMAGE}" ; then
+ cd ${B}
+ fitimage_assemble itb-image-${INITRAMFS_IMAGE}.its itbImage-${INITRAMFS_IMAGE} 1
+ fi
+}
+
+addtask assemble_fitimage_initramfs before do_deploy after do_install
+
+
+kernel_do_deploy[vardepsexclude] = "DATETIME"
+kernel_do_deploy_append() {
+ # Update deploy directory
+ if echo ${KERNEL_IMAGETYPES} | grep -wq "itbImage"; then
+ cd ${B}
+ echo "Copying fit-image.its source file..."
+ its_base_name="itbImage-its-${PV}-${PR}-${MACHINE}-${DATETIME}"
+ its_symlink_name=itbImage-its-${MACHINE}
+ install -m 0644 itb-image.its ${DEPLOYDIR}/${its_base_name}.its
+ linux_bin_base_name="itbImage-linux.bin-${PV}-${PR}-${MACHINE}-${DATETIME}"
+ linux_bin_symlink_name=itbImage-linux.bin-${MACHINE}
+ install -m 0644 linux.bin ${DEPLOYDIR}/${linux_bin_base_name}.bin
+
+ if [ -n "${INITRAMFS_IMAGE}" ]; then
+ echo "Copying fit-image-${INITRAMFS_IMAGE}.its source file..."
+ its_initramfs_base_name="itbImage-its-${INITRAMFS_IMAGE_NAME}-${PV}-${PR}-${DATETIME}"
+ its_initramfs_symlink_name=itbImage-its-${INITRAMFS_IMAGE_NAME}
+ install -m 0644 itb-image-${INITRAMFS_IMAGE}.its ${DEPLOYDIR}/${its_initramfs_base_name}.its
+ fit_initramfs_base_name="itbImage-${INITRAMFS_IMAGE_NAME}-${PV}-${PR}-${DATETIME}"
+ fit_initramfs_symlink_name=itbImage-${INITRAMFS_IMAGE_NAME}
+ install -m 0644 arch/${ARCH}/boot/itbImage-${INITRAMFS_IMAGE} ${DEPLOYDIR}/${fit_initramfs_base_name}.bin
+ fi
+
+ cd ${DEPLOYDIR}
+ ln -sf ${its_base_name}.its ${its_symlink_name}.its
+ ln -sf ${linux_bin_base_name}.bin ${linux_bin_symlink_name}.bin
+
+ if [ -n "${INITRAMFS_IMAGE}" ]; then
+ ln -sf ${its_initramfs_base_name}.its ${its_initramfs_symlink_name}.its
+ ln -sf ${fit_initramfs_base_name}.bin ${fit_initramfs_symlink_name}.bin
+ fi
+ fi
+}
diff --git a/bsp/meta-freescale/classes/machine-overrides-extender.bbclass b/bsp/meta-freescale/classes/machine-overrides-extender.bbclass
new file mode 100644
index 00000000..959fdc16
--- /dev/null
+++ b/bsp/meta-freescale/classes/machine-overrides-extender.bbclass
@@ -0,0 +1,56 @@
+# -*- python -*-
+# Automatically set extend the MACHINEOVERRIDES
+#
+# This allow to grouping of different settings for similar platforms.
+#
+# To indicate that a SoC contains following set of overrides, you can use:
+#
+# MACHINEOVERRIDES_EXTENDER_soc = "group1:group2"
+#
+# However to indicate that an override replaces a set of other
+# overrides, you can use:
+#
+# MACHINEOVERRIDES_EXTENDER_FILTER_OUT_override = "group1 group2"
+#
+# Copyright 2016-2018 (C) O.S. Systems Software LTDA.
+
+def machine_overrides_extender(d):
+ machine_overrides = (d.getVar('PRISTINE_MACHINEOVERRIDES', True) or '').split(':')
+
+ # Gather the list of overrides to filter out
+ machine_overrides_filter_out = []
+ for override in machine_overrides:
+ machine_overrides_filter_out += (d.getVar('MACHINEOVERRIDES_EXTENDER_FILTER_OUT_%s' % override, True) or '').split()
+
+ # Drop any overrides of filter_out prior extending
+ machine_overrides = [o for o in machine_overrides if o not in machine_overrides_filter_out]
+
+ for override in machine_overrides:
+ extender = d.getVar('MACHINEOVERRIDES_EXTENDER_%s' % override, True)
+
+ if extender:
+ extender = extender.split(':')
+
+ # Drop any extension if in filter_out
+ extender = [e for e in extender if e not in machine_overrides_filter_out]
+
+ extender.reverse()
+ if not set(extender).issubset(set(machine_overrides)):
+ index = machine_overrides.index(override)
+ for e in extender:
+ machine_overrides.insert(index, e)
+
+ return ':'.join(machine_overrides)
+
+python machine_overrides_extender_handler() {
+ # Ideally we'd use a separate variable name for this however
+ # historically NXP BSPs used this. We save it to a known good name
+ # so we can reprocess OVERRIDES if/as/when needed.
+ d.renameVar("MACHINEOVERRIDES", "PRISTINE_MACHINEOVERRIDES")
+
+ # Now we add our own function intercept in instead
+ d.setVar("MACHINEOVERRIDES", "${@machine_overrides_extender(d)}")
+}
+
+machine_overrides_extender_handler[eventmask] = "bb.event.ConfigParsed"
+addhandler machine_overrides_extender_handler
diff --git a/bsp/meta-freescale/classes/mfgtool-initramfs-image.bbclass b/bsp/meta-freescale/classes/mfgtool-initramfs-image.bbclass
new file mode 100644
index 00000000..65028b8f
--- /dev/null
+++ b/bsp/meta-freescale/classes/mfgtool-initramfs-image.bbclass
@@ -0,0 +1,41 @@
+# Generates a Manufacturing Tool Initramfs image
+#
+# This generates the initramfs used for the installation process. The
+# image provides the utilities which are used, in the target, during
+# the process and receive the commands from the MfgTool application.
+#
+# Copyright 2014-2017 (C) O.S. Systems Software LTDA.
+
+DEPENDS += "u-boot-mfgtool linux-mfgtool"
+
+FEATURE_PACKAGES_mtd = "packagegroup-fsl-mfgtool-mtd"
+FEATURE_PACKAGES_extfs = "packagegroup-fsl-mfgtool-extfs"
+FEATURE_PACKAGES_f2fs = "packagegroup-fsl-mfgtool-f2fs"
+
+IMAGE_FSTYPES = "cpio.gz.u-boot"
+IMAGE_FSTYPES_mxs = "cpio.gz.u-boot"
+IMAGE_ROOTFS_SIZE ?= "8192"
+
+# Filesystems enabled by default
+DEFAULT_FS_SUPPORT = " \
+ mtd \
+ extfs \
+"
+
+IMAGE_FEATURES = " \
+ ${DEFAULT_FS_SUPPORT} \
+ \
+ read-only-rootfs \
+"
+
+# Avoid installation of syslog
+BAD_RECOMMENDATIONS += "busybox-syslog"
+
+# Avoid static /dev
+USE_DEVFS = "1"
+
+inherit core-image
+
+CORE_IMAGE_BASE_INSTALL = " \
+ ${CORE_IMAGE_EXTRA_INSTALL} \
+"
diff --git a/bsp/meta-freescale/classes/qoriq_build_64bit_kernel.bbclass b/bsp/meta-freescale/classes/qoriq_build_64bit_kernel.bbclass
new file mode 100644
index 00000000..2209e339
--- /dev/null
+++ b/bsp/meta-freescale/classes/qoriq_build_64bit_kernel.bbclass
@@ -0,0 +1,18 @@
+inherit distro_features_check
+REQUIRED_DISTRO_FEATURES_e6500 += "multiarch"
+
+python () {
+ promote_kernel = d.getVar('BUILD_64BIT_KERNEL', False)
+ if promote_kernel == "1":
+ sys_multilib = 'powerpc64' + d.getVar('TARGET_VENDOR', False) + 'mllib64-' + d.getVar('HOST_OS', False)
+ tc_options = d.getVar('TOOLCHAIN_OPTIONS', False) + '/../lib64-' + d.getVar("MACHINE", False)
+ d.setVar('DEPENDS_append', ' lib64-gcc-cross-powerpc64 lib64-libgcc')
+ d.setVar('PATH_append', ':' + d.getVar('STAGING_BINDIR_NATIVE', False) + '/' + sys_multilib)
+ d.setVar('KERNEL_CC', d.getVar('CCACHE', False) + sys_multilib + '-' + 'gcc' + d.getVar('HOST_CC_KERNEL_ARCH', False) + tc_options)
+ d.setVar('KERNEL_LD', d.getVar('CCACHE', False) + sys_multilib + '-' + 'ld.bfd' + d.getVar('HOST_LD_KERNEL_ARCH', False) + tc_options)
+ d.setVar('KERNEL_AR', d.getVar('CCACHE', False) + sys_multilib + '-' + 'ar' + d.getVar('HOST_AR_KERNEL_ARCH', False))
+
+ error_qa = d.getVar('ERROR_QA', True)
+ if 'arch' in error_qa:
+ d.setVar('ERROR_QA', error_qa.replace(' arch', ''))
+}
diff --git a/bsp/meta-freescale/classes/use-imx-headers.bbclass b/bsp/meta-freescale/classes/use-imx-headers.bbclass
new file mode 100644
index 00000000..9dcd864d
--- /dev/null
+++ b/bsp/meta-freescale/classes/use-imx-headers.bbclass
@@ -0,0 +1,19 @@
+# Easy use of linux-imx-headers by packages
+#
+# This allow to easy reuse of binary packages among similar SoCs. The
+# usual use for this is to share SoC specific packages among different
+# boards independently of the kernel version it is using, as far it is
+# ABI compatible with the official version it will just work.
+#
+# All recipes using this class ought to depend on linux-imx-headers
+# and by default to use MACHINE_SOCARCH.
+#
+# Please use the STAGING_INCDIR_IMX variable to refer to the installed
+# headers.
+#
+# Copyright 2018 (C) O.S. Systems Software LTDA.
+
+DEPENDS_append_imx = " linux-imx-headers"
+PACKAGE_ARCH_imx ?= "${MACHINE_SOCARCH}"
+
+STAGING_INCDIR_IMX = "${STAGING_INCDIR}/imx"
diff --git a/bsp/meta-freescale/conf/layer.conf b/bsp/meta-freescale/conf/layer.conf
new file mode 100644
index 00000000..e171fdaa
--- /dev/null
+++ b/bsp/meta-freescale/conf/layer.conf
@@ -0,0 +1,50 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have a packages directory, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+ ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "freescale-layer"
+BBFILE_PATTERN_freescale-layer := "^${LAYERDIR}/"
+BBFILE_PRIORITY_freescale-layer = "5"
+LAYERSERIES_COMPAT_freescale-layer = "thud"
+
+# Add the Freescale-specific licenses into the metadata
+LICENSE_PATH += "${LAYERDIR}/custom-licenses"
+
+FSL_EULA_FILE = "${LAYERDIR}/EULA"
+
+IMX_MIRROR ?= "https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/"
+QORIQ_MIRROR ?= "http://git.freescale.com/source/"
+
+# FIXME: set this to avoid changing all the recipes that use it
+FSL_MIRROR ?= "${IMX_MIRROR}"
+
+MIRRORS += " \
+${IMX_MIRROR} http://download.ossystems.com.br/bsp/freescale/source/ \n \
+${QORIQ_MIRROR} http://download.ossystems.com.br/bsp/freescale/source/ \n \
+"
+
+BBFILES_DYNAMIC += " \
+ browser-layer:${LAYERDIR}/dynamic-layers/browser-layer/*/*/*.bb \
+ browser-layer:${LAYERDIR}/dynamic-layers/browser-layer/*/*/*.bbappend \
+ \
+ filesystem-layer:${LAYERDIR}/dynamic-layers/filesystem-layer/*/*/*.bb \
+ filesystem-layer:${LAYERDIR}/dynamic-layers/filesystem-layer/*/*/*.bbappend \
+ \
+ networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/*/*/*.bb \
+ networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/*/*/*.bbappend \
+ \
+ openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bb \
+ openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bbappend \
+ \
+ qt4-layer:${LAYERDIR}/dynamic-layers/qt4-layer/*/*/*.bb \
+ qt4-layer:${LAYERDIR}/dynamic-layers/qt4-layer/*/*/*.bbappend \
+ \
+ qt5-layer:${LAYERDIR}/dynamic-layers/qt5-layer/*/*/*.bb \
+ qt5-layer:${LAYERDIR}/dynamic-layers/qt5-layer/*/*/*.bbappend \
+ \
+ virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/*/*/*.bb \
+ virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/*/*/*.bbappend \
+"
diff --git a/bsp/meta-freescale/conf/machine/imx23evk.conf b/bsp/meta-freescale/conf/machine/imx23evk.conf
new file mode 100644
index 00000000..009aff79
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx23evk.conf
@@ -0,0 +1,16 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX23 Evaluation Kit
+#@SOC: i.MX23
+#@DESCRIPTION: Machine configuration for NXP i.MX23 Evaluation Kit
+#@MAINTAINER: Otavio Salvador <otavio@ossystems.com.br>
+
+MACHINEOVERRIDES =. "mxs:mx23:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-arm926ejs.inc
+
+UBOOT_MACHINE = "mx23evk_config"
+
+KERNEL_DEVICETREE = "imx23-evk.dtb"
+
+MACHINE_FEATURES = "usbgadget usbhost vfat touchscreen"
diff --git a/bsp/meta-freescale/conf/machine/imx25pdk.conf b/bsp/meta-freescale/conf/machine/imx25pdk.conf
new file mode 100644
index 00000000..e22d9f4e
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx25pdk.conf
@@ -0,0 +1,24 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX25 Evaluation Kit
+#@SOC: i.MX25
+#@DESCRIPTION: Machine configuration for NXP i.MX25 Evaluation Kit
+#@MAINTAINER: Otavio Salvador <otavio@ossystems.com.br>
+
+MACHINEOVERRIDES =. "mx25:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-arm926ejs.inc
+
+UBOOT_MACHINE ?= "mx25pdk_defconfig"
+
+KERNEL_DEVICETREE = "imx25-pdk.dtb"
+
+SERIAL_CONSOLE = "115200 ttymxc0"
+
+MACHINE_FEATURES = "usbgadget usbhost vfat alsa touchscreen"
+
+WKS_FILE = "imx-uboot.wks"
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += " \
+ kernel-image \
+ kernel-devicetree \
+"
diff --git a/bsp/meta-freescale/conf/machine/imx28evk.conf b/bsp/meta-freescale/conf/machine/imx28evk.conf
new file mode 100644
index 00000000..937fd143
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx28evk.conf
@@ -0,0 +1,52 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX28 Evaluation Kit
+#@SOC: i.MX28
+#@DESCRIPTION: Machine configuration for NXP i.MX28 Evaluation Kit
+#@MAINTAINER: Otavio Salvador <otavio@ossystems.com.br>
+
+MACHINEOVERRIDES =. "mxs:mx28:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-arm926ejs.inc
+
+IMXBOOTLETS_MACHINE = "iMX28_EVK"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx28evk_config,sdcard"
+UBOOT_CONFIG[nand] = "mx28evk_nand_config,ubifs"
+UBOOT_CONFIG[sd-auart-console] = "mx28evk_auart_console_config,sdcard"
+
+KERNEL_DEVICETREE = "imx28-evk.dtb"
+
+SERIAL_CONSOLE = "115200 ttyAMA0"
+
+MACHINE_FEATURES = "usbgadget usbhost vfat alsa touchscreen"
+
+## Parameters for NAND IC part-# K9LBG08U0D-PCB0
+
+MKUBIFS_ARGS = "--min-io-size 4096 --leb-size 516096 --max-leb-cnt 8139"
+UBINIZE_ARGS = "--min-io-size 4096 --peb-size 524288 --sub-page-size 4096"
+MXSBOOT_NAND_ARGS = "-w 4096 -o 218 -e 524288"
+
+## To determine parameters' values, run "ubiattach -m 6 /dev/ubi_ctrl"
+## (assuming the rootfs device is /dev/mtd6). Here's an example:
+
+# # ubiattach -m 6 /dev/ubi_ctrl
+# [ 28.640396] UBI: attaching mtd6 to ubi0
+# [ 53.000817] UBI: scanning is finished
+# [ 53.126052] UBI: attached mtd6 (name "filesystem", size 4079 MiB) to ubi0
+# [ 53.133109] UBI: PEB size: 524288 bytes (512 KiB), LEB size: 516096 bytes
+# [ 53.140149] UBI: min./max. I/O unit sizes: 4096/4096, sub-page size 4096
+# [ 53.146895] UBI: VID header offset: 4096 (aligned 4096), data offset: 8192
+# [ 53.153931] UBI: good PEBs: 8139, bad PEBs: 20, corrupted PEBs: 0
+# [ 53.160263] UBI: user volume: 1, internal volumes: 1, max. volumes count: 128
+# [ 53.167444] UBI: max/mean erase counter: 2/1, WL threshold: 4096, image sequence number: 0
+# [ 53.175872] UBI: available PEBs: 4113, total reserved PEBs: 4026, PEBs reserved for bad PEB handling: 140
+# [ 53.189399] UBI: background thread "ubi_bgt0d" started, PID 217
+# UBI device number 0, total 8139 LEBs (4200505344 bytes, f GiB), available 4113 LEBs (2122702848 bytes, f GiB), LEB size 516096 bytes (f KiB)
+
+# --min-io-size: see "min./max. I/O unit sizes: " in the ubiattach output
+# --leb-size: see "LEB size:" in the ubiattach output
+# --max-leb-cnt: see "total <n> LEBs" in the ubiattach output, where <n> is the number you want
+# --peb-size: see "PEB size:" in the ubiattach output (pick the value in bytes)
+# --sub-page-size: see "sub-page size" in the ubiattach output
diff --git a/bsp/meta-freescale/conf/machine/imx51evk.conf b/bsp/meta-freescale/conf/machine/imx51evk.conf
new file mode 100644
index 00000000..a32b4e00
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx51evk.conf
@@ -0,0 +1,17 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX51 Evaluation Kit
+#@SOC: i.MX51
+#@DESCRIPTION: Machine configuration for NXP i.MX51 Evaluation Kit
+#@MAINTAINER: Daiane Angolini <daiane.angolini@nxp.com>
+
+MACHINEOVERRIDES =. "mx5:mx51:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-cortexa8.inc
+
+# Disable perf features as 2.6.35.3 fails to build otherwise
+PERF_FEATURES_ENABLE = ""
+
+KERNEL_DEVICETREE = "imx51-babbage.dtb"
+
+UBOOT_MACHINE = "mx51evk_config"
diff --git a/bsp/meta-freescale/conf/machine/imx53ard.conf b/bsp/meta-freescale/conf/machine/imx53ard.conf
new file mode 100644
index 00000000..c6d7f0d9
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx53ard.conf
@@ -0,0 +1,22 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX53 SABRE Automotive Board
+#@SOC: i.MX53
+#@DESCRIPTION: Machine configuration for NXP i.MX53 SABRE Automotive Board
+#@MAINTAINER: Daiane Angolini <daiane.angolini@nxp.com>
+
+MACHINEOVERRIDES =. "mx5:mx53:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-cortexa8.inc
+
+# Disable perf features as 2.6.35.3 fails to build otherwise
+PERF_FEATURES_ENABLE = ""
+
+KERNEL_DEVICETREE = "imx53-ard.dtb"
+
+UBOOT_MACHINE = "mx53ard_config"
+KERNEL_IMAGETYPE = "uImage"
+
+MACHINE_FIRMWARE += "linux-firmware-ar3k \
+ linux-firmware-ath6k"
+MACHINE_FEATURES += "wifi bluetooth"
diff --git a/bsp/meta-freescale/conf/machine/imx53qsb.conf b/bsp/meta-freescale/conf/machine/imx53qsb.conf
new file mode 100644
index 00000000..24cbfac6
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx53qsb.conf
@@ -0,0 +1,18 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX53 Quick Start Board
+#@SOC: i.MX53
+#@DESCRIPTION: Machine configuration for NXP i.MX53 Quick Start Board
+#@MAINTAINER: Trevor Woerner <trevor.woerner@linaro.org>
+
+MACHINEOVERRIDES =. "mx5:mx53:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-cortexa8.inc
+
+KERNEL_DEVICETREE = "imx53-qsb.dtb imx53-qsrb.dtb"
+
+UBOOT_MACHINE = "mx53loco_config"
+
+MACHINE_FIRMWARE = "linux-firmware-ar3k \
+ linux-firmware-ath6k"
+MACHINE_FEATURES += " wifi bluetooth"
diff --git a/bsp/meta-freescale/conf/machine/imx6qdlsabreauto.conf b/bsp/meta-freescale/conf/machine/imx6qdlsabreauto.conf
new file mode 100644
index 00000000..71b1cf88
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx6qdlsabreauto.conf
@@ -0,0 +1,47 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX6QP/Q/DL SABRE Automotive
+#@SOC: i.MX6QP/Q/DL
+#@DESCRIPTION: Machine configuration for NXP i.MX6QP/Q/DL SABRE Automotive
+#@MAINTAINER: Daiane Angolini <daiane.angolini@nxp.com>
+#
+# This machine replaces the following machines:
+# * imx6qpsabreauto
+# * imx6qsabreauto
+# * imx6dlsabreauto
+# * imx6solosabreauto
+# and is able to work for all the machines.
+
+MACHINEOVERRIDES =. "mx6:mx6q:mx6dl:"
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/tune-cortexa9.inc
+
+KERNEL_DEVICETREE = " \
+ imx6qp-sabreauto.dtb imx6qp-sabreauto-ecspi.dtb imx6qp-sabreauto-flexcan1.dtb \
+ imx6qp-sabreauto-gpmi-weim.dtb \
+ \
+ imx6q-sabreauto.dtb imx6q-sabreauto-gpmi-weim.dtb imx6q-sabreauto-ecspi.dtb \
+ imx6q-sabreauto-flexcan1.dtb imx6q-sabreauto-enetirq.dtb \
+ \
+ imx6dl-sabreauto.dtb imx6dl-sabreauto-gpmi-weim.dtb imx6dl-sabreauto-ecspi.dtb \
+ imx6dl-sabreauto-flexcan1.dtb imx6dl-sabreauto-enetirq.dtb \
+"
+KERNEL_DEVICETREE_use-mainline-bsp = " \
+ imx6qp-sabreauto.dtb \
+ imx6q-sabreauto.dtb \
+ imx6dl-sabreauto.dtb \
+"
+
+UBOOT_MACHINE ?= "mx6sabreauto_defconfig"
+
+# Use fslc u-boot by default. See also imx-base.inc.
+UBOOT_MAKE_TARGET = "all"
+UBOOT_SUFFIX = "img"
+SPL_BINARY = "SPL"
+WKS_FILE = "imx-uboot-spl-bootpart.wks"
+
+SERIAL_CONSOLE = "115200 ttymxc3"
+
+MACHINE_FIRMWARE_append_mx6 = " linux-firmware-ath6k"
+
+MACHINE_FEATURES += " pci wifi bluetooth"
diff --git a/bsp/meta-freescale/conf/machine/imx6qdlsabresd.conf b/bsp/meta-freescale/conf/machine/imx6qdlsabresd.conf
new file mode 100644
index 00000000..a8407e28
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx6qdlsabresd.conf
@@ -0,0 +1,47 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX6QP/Q/DL SABRE Smart Device
+#@SOC: i.MX6QP/Q/DL
+#@DESCRIPTION: Machine configuration for NXP i.MX6QP/Q/DL SABRE Smart Device
+#@MAINTAINER: Otavio Salvador <otavio@ossystems.com.br>
+#
+# This machine replaces the following machines:
+# * imx6qpsabresd
+# * imx6qsabresd
+# * imx6dlsabresd
+# * imx6solosabresd
+# and is able to work for all the machines.
+
+MACHINEOVERRIDES =. "mx6:mx6q:mx6dl:"
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/tune-cortexa9.inc
+
+KERNEL_DEVICETREE = " \
+ imx6qp-sabresd.dtb imx6qp-sabresd-btwifi.dtb imx6qp-sabresd-hdcp.dtb \
+ imx6qp-sabresd-ldo.dtb imx6qp-sabresd-ldo-pcie-cert.dtb \
+ \
+ imx6q-sabresd.dtb imx6q-sabresd-ldo.dtb imx6q-sabresd-hdcp.dtb \
+ imx6q-sabresd-enetirq.dtb imx6q-sabresd-btwifi.dtb \
+ \
+ imx6dl-sabresd.dtb imx6dl-sabresd-ldo.dtb imx6dl-sabresd-hdcp.dtb \
+ imx6dl-sabresd-enetirq.dtb imx6dl-sabresd-btwifi.dtb \
+"
+KERNEL_DEVICETREE_use-mainline-bsp = " \
+ imx6qp-sabresd.dtb \
+ imx6q-sabresd.dtb \
+ imx6dl-sabresd.dtb \
+"
+
+UBOOT_MACHINE ?= "mx6sabresd_defconfig"
+
+# Use fslc u-boot by default. See also imx-base.inc.
+UBOOT_MAKE_TARGET = "all"
+UBOOT_SUFFIX = "img"
+SPL_BINARY = "SPL"
+WKS_FILE = "imx-uboot-spl-bootpart.wks"
+
+SERIAL_CONSOLE = "115200 ttymxc0"
+
+MACHINE_FIRMWARE_append_mx6 = " linux-firmware-ath6k"
+
+MACHINE_FEATURES += " pci wifi bluetooth"
diff --git a/bsp/meta-freescale/conf/machine/imx6slevk.conf b/bsp/meta-freescale/conf/machine/imx6slevk.conf
new file mode 100644
index 00000000..ffcbaaa7
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx6slevk.conf
@@ -0,0 +1,26 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX6SL Evaluation Kit
+#@SOC: i.MX6SL
+#@DESCRIPTION: Machine configuration for NXP i.MX6SL Evaluation Kit
+#@MAINTAINER: Otavio Salvador <otavio@ossystems.com.br>
+
+MACHINEOVERRIDES =. "mx6:mx6sl:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-cortexa9.inc
+
+KERNEL_DEVICETREE = "imx6sl-evk.dtb imx6sl-evk-csi.dtb imx6sl-evk-ldo.dtb \
+ imx6sl-evk-uart.dtb imx6sl-evk-btwifi.dtb"
+KERNEL_DEVICETREE_use-mainline-bsp = "imx6sl-evk.dtb"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx6slevk_config,sdcard"
+UBOOT_CONFIG[epdc] = "mx6slevk_epdc_config"
+UBOOT_CONFIG[spinor] = "mx6slevk_spinor_config"
+UBOOT_CONFIG[mfgtool] = "mx6slevk_config"
+
+SERIAL_CONSOLE = "115200 ttymxc0"
+
+MACHINE_FEATURES += " pci wifi bluetooth"
+
+MACHINE_FIRMWARE += "linux-firmware-ath6k firmware-imx-epdc"
diff --git a/bsp/meta-freescale/conf/machine/imx6sllevk.conf b/bsp/meta-freescale/conf/machine/imx6sllevk.conf
new file mode 100644
index 00000000..84d1e319
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx6sllevk.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: Freescale i.MX6SLL Evaluation Kit
+#@SOC: i.MX6SLL
+#@DESCRIPTION: Machine configuration for Freescale i.MX6SLL EVK
+#@MAINTAINER: Lauren Post lauren.post@nxp.com
+
+MACHINEOVERRIDES =. "mx6:mx6sll:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-cortexa9.inc
+
+MACHINE_FIRMWARE_append = " firmware-imx-epdc firmware-imx-brcm"
+
+KERNEL_DEVICETREE = "imx6sll-evk.dtb imx6sll-evk-btwifi.dtb"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx6sllevk_config,sdcard"
+UBOOT_CONFIG[epdc] = "mx6sllevk_epdc_config"
+UBOOT_CONFIG[mfgtool] = "mx6sllevk_config"
+
+SERIAL_CONSOLE = "115200 ttymxc0"
+
+MACHINE_FEATURES += " pci wifi bluetooth"
+
+# MESA DRI library
+XSERVER += "mesa-driver-swrast"
+
+PREFERRED_PROVIDER_u-boot = "u-boot-imx"
+PREFERRED_PROVIDER_virtual/bootloader = "u-boot-imx"
diff --git a/bsp/meta-freescale/conf/machine/imx6sxsabreauto.conf b/bsp/meta-freescale/conf/machine/imx6sxsabreauto.conf
new file mode 100644
index 00000000..ca5c9746
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx6sxsabreauto.conf
@@ -0,0 +1,28 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX6SoloX Sabre Automotive
+#@SOC: i.MX6SX
+#@DESCRIPTION: Machine configuration for NXP i.MX6SoloX Sabre Automotive
+#@MAINTAINER: Lauren Post <Lauren.Post@nxp.com>
+
+MACHINEOVERRIDES =. "mx6:mx6sx:"
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/tune-cortexa9.inc
+
+KERNEL_DEVICETREE = "imx6sx-sabreauto.dtb imx6sx-sabreauto-m4.dtb"
+KERNEL_DEVICETREE_use-mainline-bsp = "imx6sx-sabreauto.dtb"
+
+PREFERRED_PROVIDER_u-boot = "u-boot-imx"
+PREFERRED_PROVIDER_virtual/bootloader = "u-boot-imx"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx6sxsabreauto_config,sdcard"
+UBOOT_CONFIG[qspi1] = "mx6sxsabreauto_qspi1_config"
+UBOOT_CONFIG[nand] = "mx6sxsabreauto_nand_config,ubifs"
+UBOOT_CONFIG[mfgtool] = "mx6sxsabreauto_config"
+
+SERIAL_CONSOLE = "115200 ttymxc3"
+
+MACHINE_FIRMWARE_append_mx6 = " linux-firmware-ath6k"
+
+MACHINE_FEATURES += " pci wifi bluetooth"
diff --git a/bsp/meta-freescale/conf/machine/imx6sxsabresd.conf b/bsp/meta-freescale/conf/machine/imx6sxsabresd.conf
new file mode 100644
index 00000000..3a969e4a
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx6sxsabresd.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX6SoloX SabreSD
+#@SOC: i.MX6SX
+#@DESCRIPTION: Machine configuration for NXP i.MX6SoloX Sabre SD
+#@MAINTAINER: Lauren Post <Lauren.Post@nxp.com>
+
+MACHINEOVERRIDES =. "mx6:mx6sx:"
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/tune-cortexa9.inc
+
+KERNEL_DEVICETREE = "imx6sx-sdb.dtb imx6sx-sdb-emmc.dtb imx6sx-sdb-m4.dtb \
+ imx6sx-sdb-sai.dtb imx6sx-sdb-lcdif1.dtb imx6sx-sdb-ldo.dtb \
+ imx6sx-sdb-reva-ldo.dtb imx6sx-sdb-reva.dtb \
+ imx6sx-sdb-btwifi.dtb imx6sx-sdb-mqs.dtb"
+KERNEL_DEVICETREE_use-mainline-bsp = "imx6sx-sdb.dtb imx6sx-sdb-sai.dtb imx6sx-sdb-reva.dtb"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx6sxsabresd_config,sdcard"
+UBOOT_CONFIG[emmc] = "mx6sxsabresd_emmc_config,sdcard"
+UBOOT_CONFIG[qspi2] = "mx6sxsabresd_qspi2_config"
+UBOOT_CONFIG[m4fastup] = "mx6sxsabresd_m4fastup_config"
+UBOOT_CONFIG[mfgtool] = "mx6sxsabresd_config"
+
+SERIAL_CONSOLE = "115200 ttymxc0"
+
+MACHINE_FIRMWARE_append_mx6 = " linux-firmware-ath6k"
+
+MACHINE_FEATURES += " pci wifi bluetooth"
diff --git a/bsp/meta-freescale/conf/machine/imx6ulevk.conf b/bsp/meta-freescale/conf/machine/imx6ulevk.conf
new file mode 100644
index 00000000..01ebce6f
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx6ulevk.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX6UL Evaluation Kit
+#@SOC: i.MX6UL
+#@DESCRIPTION: Machine configuration for NXP i.MX6UL EVK
+#@MAINTAINER: Lauren Post <lauren.post@nxp.com>
+
+MACHINEOVERRIDES =. "mx6:mx6ul:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-cortexa7.inc
+
+MACHINE_FEATURES += " pci wifi bluetooth"
+
+KERNEL_DEVICETREE = "imx6ul-14x14-evk.dtb imx6ul-14x14-evk-csi.dtb imx6ul-14x14-evk-btwifi.dtb \
+ imx6ul-14x14-evk-gpmi-weim.dtb imx6ul-14x14-evk-usb-certi.dtb \
+ imx6ul-14x14-evk-emmc.dtb "
+KERNEL_DEVICETREE_use-mainline-bsp = "imx6ul-14x14-evk.dtb"
+
+# Use fslc u-boot by default. See also imx-base.inc.
+UBOOT_MAKE_TARGET = ""
+UBOOT_SUFFIX = "img"
+SPL_BINARY = "SPL"
+WKS_FILE = "imx-uboot-spl-bootpart.wks"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx6ul_14x14_evk_config,sdcard"
+UBOOT_CONFIG[emmc] = "mx6ul_14x14_evk_emmc_config,sdcard"
+UBOOT_CONFIG[qspi1] = "mx6ul_14x14_evk_qspi1_config"
+UBOOT_CONFIG[mfgtool] = "mx6ul_14x14_evk_config"
diff --git a/bsp/meta-freescale/conf/machine/imx6ullevk.conf b/bsp/meta-freescale/conf/machine/imx6ullevk.conf
new file mode 100644
index 00000000..7cf9c328
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx6ullevk.conf
@@ -0,0 +1,24 @@
+#@TYPE: Machine
+#@NAME: Freescale i.MX6ULL Evaluation Kit
+#@SOC: i.MX6ULL
+#@DESCRIPTION: Machine configuration for Freescale i.MX6ULL EVK
+#@MAINTAINER: Daiane Angolini <daiane.angolini@nxp.com>
+
+MACHINEOVERRIDES =. "mx6:mx6ull:"
+
+include conf/machine/include/imx-base.inc
+include conf/machine/include/tune-cortexa7.inc
+
+KERNEL_DEVICETREE = "imx6ull-14x14-evk.dtb imx6ull-14x14-evk-btwifi.dtb"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx6ull_14x14_evk_config,sdcard"
+UBOOT_CONFIG[mfgtool] = "mx6ull_14x14_evk_config"
+
+PREFERRED_PROVIDER_u-boot = "u-boot-imx"
+PREFERRED_PROVIDER_virtual/bootloader = "u-boot-imx"
+PREFERRED_PROVIDER_virtual/kernel = "linux-imx"
+
+SERIAL_CONSOLE = "115200 ttymxc0"
+
+MACHINE_FEATURES += "wifi bluetooth"
diff --git a/bsp/meta-freescale/conf/machine/imx7dsabresd.conf b/bsp/meta-freescale/conf/machine/imx7dsabresd.conf
new file mode 100644
index 00000000..be9a6703
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx7dsabresd.conf
@@ -0,0 +1,28 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX7D SABRE Smart Device
+#@SOC: i.MX7D
+#@DESCRIPTION: Machine configuration for NXP i.MX7D SABRE Smart Device
+#@MAINTAINER: Lauren Post <Lauren.Post@nxp.com>
+
+MACHINEOVERRIDES =. "mx7:mx7d:"
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/tune-cortexa7.inc
+
+MACHINE_FEATURES += " pci wifi bluetooth"
+
+KERNEL_DEVICETREE = "imx7d-sdb.dtb imx7d-sdb-epdc.dtb imx7d-sdb-gpmi-weim.dtb \
+ imx7d-sdb-m4.dtb imx7d-sdb-mipi-dsi.dtb imx7d-sdb-qspi.dtb \
+ imx7d-sdb-reva.dtb imx7d-sdb-reva-epdc.dtb imx7d-sdb-reva-gpmi-weim.dtb \
+ imx7d-sdb-reva-hdmi-audio.dtb imx7d-sdb-reva-m4.dtb imx7d-sdb-reva-qspi.dtb \
+ imx7d-sdb-reva-touch.dtb imx7d-sdb-reva-wm8960.dtb"
+KERNEL_DEVICETREE_use-mainline-bsp = "imx7d-sdb.dtb"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx7dsabresd_config,sdcard"
+UBOOT_CONFIG[qspi1] = "mx7dsabresd_qspi1_config"
+UBOOT_CONFIG[nand] = "mx7dsabresd_nand_config,ubifs"
+UBOOT_CONFIG[epdc] = "mx7dsabresd_epdc_config"
+UBOOT_CONFIG[mfgtool] = "mx7dsabresd_config"
+
+MACHINE_EXTRA_RRECOMMENDS += "firmware-imx-brcm"
diff --git a/bsp/meta-freescale/conf/machine/imx7ulpevk.conf b/bsp/meta-freescale/conf/machine/imx7ulpevk.conf
new file mode 100644
index 00000000..d077de74
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx7ulpevk.conf
@@ -0,0 +1,27 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX7ULP Evaluation Kit
+#@SOC: i.MX7ULP
+#@DESCRIPTION: Machine configuration for NXP i.MX7ULP EVK
+#@MAINTAINER: Lauren Post <Lauren.Post@nxp.com>
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/tune-cortexa7.inc
+
+MACHINE_FEATURES += " pci wifi bluetooth"
+
+MACHINEOVERRIDES =. "mx7:mx7ulp:"
+
+KERNEL_DEVICETREE = "imx7ulp-evk.dtb imx7ulp-evk-emmc.dtb imx7ulp-evk-emmc-qspi.dtb imx7ulp-evk-ft5416.dtb imx7ulp-evk-mipi.dtb"
+KERNEL_DEVICETREE += "imx7ulp-evk-lpuart.dtb imx7ulp-evk-qspi.dtb imx7ulp-evk-sd1.dtb imx7ulp-evk-sensors-to-i2c5.dtb"
+KERNEL_DEVICETREE += "imx7ulp-evk-wm8960.dtb"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx7ulp_evk_config,sdcard"
+UBOOT_CONFIG[emmc] = "mx7ulp_evk_emmc_config,sdcard"
+UBOOT_CONFIG[mfgtool] = "mx7ulp_evk_config"
+
+# Install brcm firmware
+MACHINE_FIRMWARE_append = " firmware-imx-brcm"
+
+# Set Serial console
+SERIAL_CONSOLE = "115200 ttyLP0"
diff --git a/bsp/meta-freescale/conf/machine/imx8mmevk.conf b/bsp/meta-freescale/conf/machine/imx8mmevk.conf
new file mode 100644
index 00000000..44b3249f
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx8mmevk.conf
@@ -0,0 +1,58 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX 8M Mini Evaluation Kit
+#@SOC: i.MX8MM
+#@DESCRIPTION: Machine configuration for NXP i.MX 8M Mini EVK
+#@MAINTAINER: Jun Zhu <junzhu@nxp.com>
+
+MACHINEOVERRIDES =. "mx8:mx8m:mx8mm:"
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+MACHINE_FEATURES += " pci wifi bluetooth optee qca9377 qca6174"
+
+KERNEL_DEVICETREE = "freescale/fsl-imx8mm-evk.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8mm-evk-ak4497.dtb freescale/fsl-imx8mm-evk-ak5558.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8mm-evk-audio-tdm.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8mm-evk-inmate.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8mm-evk-m4.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8mm-evk-rm67191.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8mm-evk-root.dtb"
+
+IMAGE_BOOTFILES += "imx8mm_m4_TCM_hello_world.bin \
+ imx8mm_m4_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin \
+ imx8mm_m4_TCM_rpmsg_lite_str_echo_rtos.bin \
+ imx8mm_m4_TCM_sai_low_power_audio.bin \
+"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "imx8mm_evk_config,sdcard"
+UBOOT_CONFIG[fspi] = "imx8mm_evk_fspi_defconfig"
+UBOOT_CONFIG[mfgtool] = "imx8mm_evk_config"
+SPL_BINARY = "spl/u-boot-spl.bin"
+
+# Set DDR FIRMWARE
+DDR_FIRMWARE_NAME = "lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_dmem.bin"
+
+# Set u-boot DTB
+UBOOT_DTB_NAME = "fsl-imx8mm-evk.dtb"
+
+# Set imx-mkimage boot target
+IMXBOOT_TARGETS = "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_evk_flexspi', 'flash_evk', d)}"
+
+# Set Serial console
+SERIAL_CONSOLE = "115200 ttymxc1"
+
+IMAGE_BOOTLOADER = "imx-boot"
+
+BOOT_SPACE = "65536"
+
+LOADADDR = ""
+UBOOT_SUFFIX = "bin"
+UBOOT_MAKE_TARGET = ""
+IMX_BOOT_SEEK = "33"
+
+OPTEE_BIN_EXT = "8mm"
+
+# Add additional firmware
+MACHINE_FIRMWARE_append = " linux-firmware-ath10k"
diff --git a/bsp/meta-freescale/conf/machine/imx8mqevk.conf b/bsp/meta-freescale/conf/machine/imx8mqevk.conf
new file mode 100644
index 00000000..8ddb03cb
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx8mqevk.conf
@@ -0,0 +1,55 @@
+#@TYPE: Machine
+#@NAME: NXP i.MX8MQ Evaluation Kit
+#@SOC: i.MX8MQ
+#@DESCRIPTION: Machine configuration for NXP i.MX8MQ EVK
+#@MAINTAINER: Jun Zhu <junzhu@nxp.com>
+
+MACHINEOVERRIDES =. "mx8:mx8m:mx8mq:"
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+MACHINE_FEATURES += "pci wifi bluetooth optee qca6174"
+
+MACHINE_SOCARCH_FILTER_append_mx8mq = " virtual/libopenvg virtual/libgles1 virtual/libgles2 virtual/egl virtual/mesa virtual/libgl virtual/libg2d"
+
+KERNEL_DEVICETREE = "freescale/fsl-imx8mq-evk.dtb freescale/fsl-imx8mq-evk-ak4497.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8mq-evk-audio-tdm.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8mq-evk-dcss-adv7535.dtb freescale/fsl-imx8mq-evk-dcss-rm67191.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8mq-evk-dual-display.dtb freescale/fsl-imx8mq-evk-drm.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8mq-evk-lcdif-adv7535.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8mq-evk-m4.dtb freescale/fsl-imx8mq-evk-mipi-csi2.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8mq-evk-pcie1-m2.dtb freescale/fsl-imx8mq-evk-pdm.dtb"
+
+IMAGE_BOOTFILES += "imx8mq_m4_TCM_hello_world.bin imx8mq_m4_TCM_rpmsg_lite_pingpong_rtos_linux_remote.bin imx8mq_m4_TCM_rpmsg_lite_str_echo_rtos.bin"
+
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "imx8mq_evk_config,sdcard"
+UBOOT_CONFIG[mfgtool] = "imx8mq_evk_config"
+SPL_BINARY = "spl/u-boot-spl.bin"
+
+# Set DDR FIRMWARE
+DDR_FIRMWARE_NAME = "lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_dmem.bin"
+
+# Set u-boot DTB
+UBOOT_DTB_NAME = "fsl-imx8mq-evk.dtb"
+
+# Set imx-mkimage boot target
+IMXBOOT_TARGETS = "flash_evk flash_evk_no_hdmi"
+
+# Set Serial console
+SERIAL_CONSOLE = "115200 ttymxc0"
+
+IMAGE_BOOTLOADER = "imx-boot"
+
+BOOT_SPACE = "65536"
+
+LOADADDR = ""
+UBOOT_SUFFIX = "bin"
+UBOOT_MAKE_TARGET = ""
+IMX_BOOT_SEEK = "33"
+
+OPTEE_BIN_EXT = "8mq"
+
+# Add additional firmware
+MACHINE_FIRMWARE_append = " linux-firmware-ath10k"
diff --git a/bsp/meta-freescale/conf/machine/imx8qmmek.conf b/bsp/meta-freescale/conf/machine/imx8qmmek.conf
new file mode 100644
index 00000000..e1f26b44
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx8qmmek.conf
@@ -0,0 +1,52 @@
+#@TYPE: Machine
+#@NAME: i.MX 8QM MEK
+#@DESCRIPTION: i.MX 8QuadMax MEK board
+#@MAINTAINER: Jun Zhu <junzhu@nxp.com>
+
+MACHINEOVERRIDES =. "mx8:mx8qm:"
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+MACHINE_FEATURES_append = " qca6174"
+
+# Don't include kernels in standard images
+RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
+
+LOADADDR = ""
+
+# We have to disable SERIAL_CONSOLE due to auto-serial-console
+SERIAL_CONSOLE = "115200 ttyAMA0"
+
+# we do not want to have getty running on tty1 as we run
+# auto-serial-console there
+USE_VT = "0"
+
+KERNEL_DEVICETREE = "freescale/fsl-imx8qm-mek.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8qm-mek_ca53.dtb freescale/fsl-imx8qm-mek_ca72.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8qm-mek-8cam.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8qm-mek-hdmi.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8qm-mek-jdi-wuxga-lvds1-panel.dtb freescale/fsl-imx8qm-mek-dsi-rm67191.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8qm-mek-mipi-ov5640.dtb freescale/fsl-imx8qm-mek-mipi-two-ov5640.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8qm-mek-enet2-tja1100.dtb "
+KERNEL_DEVICETREE += "freescale/fsl-imx8qm-mek-dom0.dtb freescale/fsl-imx8qm-mek-domu.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8qp-lpddr4-arm2.dtb"
+
+UBOOT_MAKE_TARGET = "u-boot.bin"
+UBOOT_SUFFIX = "bin"
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "imx8qm_mek_defconfig,sdcard"
+UBOOT_CONFIG[fspi] = "imx8qm_mek_fspi_defconfig"
+UBOOT_CONFIG[mfgtool] = "imx8qm_mek_defconfig"
+
+BOOT_SPACE = "65536"
+IMAGE_BOOTLOADER = "imx-boot"
+IMX_BOOT_SEEK = "33"
+
+IMAGE_BOOTFILES_DEPENDS += "firmware-imx:do_deploy"
+IMAGE_BOOTFILES += "hdmitxfw.bin hdmirxfw.bin dpfw.bin"
+
+BOARD_TYPE = "mek"
+
+# Add additional firmware
+MACHINE_FIRMWARE_append = " linux-firmware-ath10k"
diff --git a/bsp/meta-freescale/conf/machine/imx8qxpmek.conf b/bsp/meta-freescale/conf/machine/imx8qxpmek.conf
new file mode 100644
index 00000000..2ffbcacc
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/imx8qxpmek.conf
@@ -0,0 +1,43 @@
+#@TYPE: Machine
+#@NAME: i.MX 8QXP MEK
+#@DESCRIPTION: i.MX 8QXP MEK board
+
+MACHINEOVERRIDES =. "mx8:mx8x:mx8qxp:"
+
+require conf/machine/include/imx-base.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+MACHINE_FEATURES_append = " qca6174"
+
+# Don't include kernels in standard images
+RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
+
+LOADADDR = ""
+
+# We have to disable SERIAL_CONSOLE due to auto-serial-console
+SERIAL_CONSOLE = "115200 ttyAMA0"
+
+# we do not want to have getty running on tty1 as we run
+# auto-serial-console there
+USE_VT = "0"
+
+KERNEL_DEVICETREE = "freescale/fsl-imx8qxp-mek.dtb freescale/fsl-imx8qxp-mek-dom0.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8qxp-mek-dsi-rm67191.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8qxp-mek-enet2.dtb freescale/fsl-imx8qxp-mek-enet2-tja1100.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8qxp-mek-csi.dtb"
+KERNEL_DEVICETREE += "freescale/fsl-imx8qxp-mek-mipi-ov5640.dtb freescale/fsl-imx8qxp-mek-ov5640.dtb"
+
+UBOOT_MAKE_TARGET = "u-boot.bin"
+UBOOT_SUFFIX = "bin"
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "imx8qxp_mek_config,sdcard"
+UBOOT_CONFIG[fspi] = "imx8qxp_mek_fspi_defconfig"
+
+BOOT_SPACE = "65536"
+IMAGE_BOOTLOADER = "imx-boot"
+IMX_BOOT_SEEK = "32"
+
+BOARD_TYPE = "mek"
+
+# Add additional firmware
+MACHINE_FIRMWARE_append = " linux-firmware-ath10k"
diff --git a/bsp/meta-freescale/conf/machine/include/e500mc.inc b/bsp/meta-freescale/conf/machine/include/e500mc.inc
new file mode 100644
index 00000000..a33485be
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/e500mc.inc
@@ -0,0 +1,6 @@
+TARGET_FPU = "hard"
+
+require conf/machine/include/tune-ppce500mc.inc
+require conf/machine/include/qoriq-ppc.inc
+
+MACHINEOVERRIDES =. "e500mc:"
diff --git a/bsp/meta-freescale/conf/machine/include/e500v2.inc b/bsp/meta-freescale/conf/machine/include/e500v2.inc
new file mode 100644
index 00000000..420f0343
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/e500v2.inc
@@ -0,0 +1,4 @@
+require conf/machine/include/tune-ppce500v2.inc
+
+MACHINEOVERRIDES =. "e500v2:"
+require conf/machine/include/qoriq-ppc.inc
diff --git a/bsp/meta-freescale/conf/machine/include/e5500-64b.inc b/bsp/meta-freescale/conf/machine/include/e5500-64b.inc
new file mode 100644
index 00000000..72b958cd
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/e5500-64b.inc
@@ -0,0 +1,11 @@
+TARGET_FPU = "hard"
+DEFAULTTUNE ?= "ppc64e5500"
+
+require conf/machine/include/tune-ppce5500.inc
+require conf/machine/include/qoriq-ppc.inc
+
+MACHINEOVERRIDES =. "e5500-64b:"
+
+require conf/multilib.conf
+MULTILIBS ?= "multilib:lib32"
+DEFAULTTUNE_virtclass-multilib-lib32 ?= "ppce5500"
diff --git a/bsp/meta-freescale/conf/machine/include/e5500.inc b/bsp/meta-freescale/conf/machine/include/e5500.inc
new file mode 100644
index 00000000..364ffac4
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/e5500.inc
@@ -0,0 +1,6 @@
+TARGET_FPU = "hard"
+
+require conf/machine/include/tune-ppce5500.inc
+require conf/machine/include/qoriq-ppc.inc
+
+MACHINEOVERRIDES =. "e5500:"
diff --git a/bsp/meta-freescale/conf/machine/include/e6500-64b.inc b/bsp/meta-freescale/conf/machine/include/e6500-64b.inc
new file mode 100644
index 00000000..e0e04dbc
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/e6500-64b.inc
@@ -0,0 +1,11 @@
+TARGET_FPU = "hard"
+DEFAULTTUNE ?= "ppc64e6500"
+
+require conf/machine/include/tune-ppce6500.inc
+require conf/machine/include/qoriq-ppc.inc
+
+MACHINEOVERRIDES =. "e6500-64b:"
+
+require conf/multilib.conf
+MULTILIBS ?= "multilib:lib32"
+DEFAULTTUNE_virtclass-multilib-lib32 ?= "ppce6500"
diff --git a/bsp/meta-freescale/conf/machine/include/e6500.inc b/bsp/meta-freescale/conf/machine/include/e6500.inc
new file mode 100644
index 00000000..8d773b6e
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/e6500.inc
@@ -0,0 +1,12 @@
+TARGET_FPU = "hard"
+
+require conf/machine/include/tune-ppce6500.inc
+require conf/machine/include/qoriq-ppc.inc
+
+MACHINEOVERRIDES =. "e6500:"
+
+BUILD_64BIT_KERNEL = "1"
+
+require conf/multilib.conf
+MULTILIBS ?= "multilib:lib64"
+DEFAULTTUNE_virtclass-multilib-lib64 ?= "ppc64e6500"
diff --git a/bsp/meta-freescale/conf/machine/include/fsl-default-settings.inc b/bsp/meta-freescale/conf/machine/include/fsl-default-settings.inc
new file mode 100644
index 00000000..b36e75a5
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/fsl-default-settings.inc
@@ -0,0 +1,3 @@
+# Freescale BSP default settings
+
+IMAGE_CLASSES += "image_types_fsl"
diff --git a/bsp/meta-freescale/conf/machine/include/fsl-default-versions.inc b/bsp/meta-freescale/conf/machine/include/fsl-default-versions.inc
new file mode 100644
index 00000000..d2a4e93c
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/fsl-default-versions.inc
@@ -0,0 +1 @@
+# Freescale BSP default versions
diff --git a/bsp/meta-freescale/conf/machine/include/imx-base.inc b/bsp/meta-freescale/conf/machine/include/imx-base.inc
new file mode 100644
index 00000000..20f861f2
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/imx-base.inc
@@ -0,0 +1,329 @@
+# Provides the i.MX common settings
+
+include conf/machine/include/fsl-default-settings.inc
+include conf/machine/include/fsl-default-versions.inc
+
+require conf/machine/include/utilities.inc
+
+# Set specific make target and binary suffix
+IMX_DEFAULT_BOOTLOADER = "u-boot-fslc"
+IMX_DEFAULT_BOOTLOADER_mx8 = "u-boot-imx"
+
+PREFERRED_PROVIDER_u-boot ??= "${IMX_DEFAULT_BOOTLOADER}"
+PREFERRED_PROVIDER_virtual/bootloader ??= "${IMX_DEFAULT_BOOTLOADER}"
+
+PREFERRED_PROVIDER_u-boot-mxsboot-native ??= "u-boot-fslc-mxsboot-native"
+
+UBOOT_MAKE_TARGET ?= "u-boot.imx"
+UBOOT_MAKE_TARGET_mxs ?= "u-boot.sb"
+UBOOT_MAKE_TARGET_mx8 ?= ""
+
+UBOOT_SUFFIX ?= "imx"
+UBOOT_SUFFIX_mxs ?= "sb"
+UBOOT_SUFFIX_mx8 ?= "bin"
+
+UBOOT_ENTRYPOINT_mxs = "0x40008000"
+UBOOT_ENTRYPOINT_mx51 = "0x90008000"
+UBOOT_ENTRYPOINT_mx53 = "0x70008000"
+UBOOT_ENTRYPOINT_mx6 = "0x10008000"
+UBOOT_ENTRYPOINT_mx6sl = "0x80008000"
+UBOOT_ENTRYPOINT_mx6sll = "0x80008000"
+UBOOT_ENTRYPOINT_mx6sx = "0x80008000"
+UBOOT_ENTRYPOINT_mx6ul = "0x10008000"
+UBOOT_ENTRYPOINT_mx6ull = "0x10008000"
+UBOOT_ENTRYPOINT_mx7 = "0x80008000"
+UBOOT_ENTRYPOINT_mx8mq = "0x40480000"
+UBOOT_ENTRYPOINT_vf = "0x80008000"
+
+PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg"
+XSERVER_DRIVER = "xf86-video-fbdev"
+XSERVER_DRIVER_imxgpu2d = "xf86-video-imx-vivante"
+XSERVER_DRIVER_vf = "xf86-video-modesetting"
+XSERVER_DRIVER_append_mx8 = " xf86-video-modesetting"
+XSERVER_DRIVER_use-mainline-bsp = "xf86-video-armada"
+XSERVER = "xserver-xorg \
+ xf86-input-evdev \
+ ${XSERVER_DRIVER}"
+
+# Ship kernel modules
+MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
+
+# Tunes for hard/soft float-point selection. Note that we allow building for
+# thumb support giving distros the chance to enable thumb by setting
+# ARM_INSTRUCTION_SET = "thumb"
+#
+# handled by software
+# DEFAULTTUNE_mx6 ?= "cortexa9t-neon"
+# handled by hardware
+DEFAULTTUNE_mx6 ?= "cortexa9thf-neon"
+DEFAULTTUNE_mx6ul ?= "cortexa7thf-neon"
+DEFAULTTUNE_mx6ull ?= "cortexa7thf-neon"
+DEFAULTTUNE_mx7 ?= "cortexa7thf-neon"
+DEFAULTTUNE_vf ?= "cortexa5thf-neon"
+
+INHERIT += "machine-overrides-extender"
+
+MACHINEOVERRIDES_EXTENDER_mx25 = "use-mainline-bsp"
+MACHINEOVERRIDES_EXTENDER_mx6q = "imxfbdev:imxipu:imxvpu:imxgpu:imxgpu2d:imxgpu3d"
+MACHINEOVERRIDES_EXTENDER_mx6dl = "imxfbdev:imxpxp:imxipu:imxvpu:imxgpu:imxgpu2d:imxgpu3d:imxepdc"
+MACHINEOVERRIDES_EXTENDER_mx6sx = "imxfbdev:imxpxp:imxgpu:imxgpu2d:imxgpu3d"
+MACHINEOVERRIDES_EXTENDER_mx6sl = "imxfbdev:imxpxp:imxgpu:imxgpu2d:imxepdc"
+MACHINEOVERRIDES_EXTENDER_mx6sll = "imxfbdev:imxpxp:imxepdc"
+MACHINEOVERRIDES_EXTENDER_mx6ul = "imxfbdev:imxpxp"
+MACHINEOVERRIDES_EXTENDER_mx6ull = "imxfbdev:imxpxp:imxepdc"
+MACHINEOVERRIDES_EXTENDER_mx7d = "imxfbdev:imxpxp:imxepdc"
+MACHINEOVERRIDES_EXTENDER_mx7ulp = "imxfbdev:imxpxp:imxgpu:imxgpu2d:imxgpu3d"
+MACHINEOVERRIDES_EXTENDER_mx8qm = "imxdrm:imxdpu:imxgpu:imxgpu2d:imxgpu3d"
+MACHINEOVERRIDES_EXTENDER_mx8mm = "imxdrm:imxvpu:imxgpu:imxgpu2d:imxgpu3d"
+MACHINEOVERRIDES_EXTENDER_mx8mq = "imxdrm:imxvpu:imxgpu:imxgpu3d"
+MACHINEOVERRIDES_EXTENDER_mx8qxp = "imxdrm:imxdpu:imxgpu:imxgpu2d:imxgpu3d"
+
+MACHINEOVERRIDES_EXTENDER_FILTER_OUT_use-mainline-bsp = " \
+ mx6 \
+ mx6q \
+ mx6dl \
+ mx6sx \
+ mx6sl \
+ mx6sll \
+ mx6ul \
+ mx6ull \
+ \
+ mx7 \
+ mx7d \
+ mx7ulp \
+ \
+ mx8 \
+ mx8qm \
+ mx8mm \
+ mx8mq \
+ mx8qxp \
+"
+
+# Sub-architecture support
+MACHINE_SOCARCH_SUFFIX ?= ""
+MACHINE_SOCARCH_SUFFIX_mx23 = "-mxs"
+MACHINE_SOCARCH_SUFFIX_mx28 = "-mxs"
+MACHINE_SOCARCH_SUFFIX_mx51 = "-mx5"
+MACHINE_SOCARCH_SUFFIX_mx53 = "-mx5"
+MACHINE_SOCARCH_SUFFIX_mx6q = "-mx6qdl"
+MACHINE_SOCARCH_SUFFIX_mx6dl = "-mx6qdl"
+MACHINE_SOCARCH_SUFFIX_mx6sx = "-mx6sx"
+MACHINE_SOCARCH_SUFFIX_mx6sl = "-mx6sl"
+MACHINE_SOCARCH_SUFFIX_mx6sll= "-mx6sll"
+MACHINE_SOCARCH_SUFFIX_mx7d = "-mx7d"
+MACHINE_SOCARCH_SUFFIX_mx7ulp = "-mx7ulp"
+MACHINE_SOCARCH_SUFFIX_vf60 = "-vf60"
+MACHINE_SOCARCH_SUFFIX_vf50 = "-vf50"
+MACHINE_SOCARCH_SUFFIX_mx6ul = "-mx6ul"
+MACHINE_SOCARCH_SUFFIX_mx6ull = "-mx6ul"
+MACHINE_SOCARCH_SUFFIX_mx8qm = "-mx8"
+MACHINE_SOCARCH_SUFFIX_mx8mm = "-mx8mm"
+MACHINE_SOCARCH_SUFFIX_mx8mq = "-mx8m"
+MACHINE_SOCARCH_SUFFIX_mx8qxp = "-mx8"
+MACHINE_SOCARCH_SUFFIX_use-mainline-bsp = "-imx"
+
+MACHINE_ARCH_FILTER = "virtual/kernel"
+MACHINE_SOCARCH_FILTER_append_imx = " \
+ alsa-lib \
+ weston \
+"
+MACHINE_SOCARCH_FILTER_append_imxvpu = " \
+ imx-codec \
+ imx-parser \
+ imx-vpuwrap \
+ libimxvpuapi \
+ virtual/imxvpu \
+"
+MACHINE_SOCARCH_FILTER_append_imxgpu = " \
+ virtual/egl \
+ virtual/mesa \
+ virtual/libopenvg \
+ libdrm \
+ cairo \
+ gstreamer1.0-plugins-bad \
+ libgal-imx \
+ pango \
+"
+MACHINE_SOCARCH_FILTER_append_imxgpu2d = " \
+ virtual/libg2d \
+"
+MACHINE_SOCARCH_FILTER_append_imxgpu3d = " \
+ virtual/libgl \
+ virtual/libgles1 \
+ virtual/libgles2 \
+"
+MACHINE_SOCARCH_FILTER_append_use-mainline-bsp = " \
+ virtual/egl \
+ virtual/libopenvg \
+ virtual/libg2d \
+ virtual/libgl \
+ virtual/libgles1 \
+ virtual/libgles2 \
+ virtual/mesa \
+ cairo \
+ pango \
+ qtbase \
+"
+MACHINE_SOCARCH_FILTER_append_mx6q = " \
+ virtual/opencl-icd \
+ opencl-headers \
+"
+MACHINE_SOCARCH_FILTER_append_mx8 = " \
+ virtual/opencl-icd \
+ opencl-headers \
+"
+MACHINE_SOCARCH_FILTER_append_mx8qm = " \
+ virtual/libopenvx \
+"
+
+INHERIT += "fsl-dynamic-packagearch"
+
+SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS_append = " \
+ imx-gpu-viv->kernel-module-imx-gpu-viv \
+ libimxvpuapi->virtual/imxvpu \
+ imx-vpuwrap->virtual/imxvpu \
+ imx-codec->virtual/imxvpu \
+ imx-test->virtual/imxvpu \
+"
+
+# Firmware
+MACHINE_FIRMWARE ?= ""
+MACHINE_FIRMWARE_append_mx25 = " firmware-imx-sdma-imx25"
+MACHINE_FIRMWARE_append_mx7d = " linux-firmware-imx-sdma-imx7d firmware-imx-epdc"
+MACHINE_FIRMWARE_append_mx6 = " linux-firmware-imx-sdma-imx6q"
+MACHINE_FIRMWARE_append_mx6q = " firmware-imx-vpu-imx6q"
+MACHINE_FIRMWARE_append_mx6dl = " firmware-imx-vpu-imx6d firmware-imx-epdc"
+MACHINE_FIRMWARE_append_mx6sl = " firmware-imx-epdc"
+MACHINE_FIRMWARE_append_mx6sll = " firmware-imx-epdc"
+MACHINE_FIRMWARE_append_mx6ull = " firmware-imx-epdc"
+MACHINE_FIRMWARE_append_mx53 = " firmware-imx-vpu-imx53 firmware-imx-sdma-imx53"
+MACHINE_FIRMWARE_append_mx51 = " firmware-imx-vpu-imx51 firmware-imx-sdma-imx51"
+MACHINE_FIRMWARE_append_mx8qxp = " firmware-imx-vpu-imx8qxp"
+MACHINE_FIRMWARE_append_use-mainline-bsp = " linux-firmware-imx-sdma-imx6q linux-firmware-imx-sdma-imx7d firmware-imx-vpu-imx6q firmware-imx-vpu-imx6d"
+
+# FIXME: Needs addition of firmware-imx of official BSPs
+#MACHINE_FIRMWARE_append_mx27 = " firmware-imx-vpu-imx27"
+
+MACHINE_EXTRA_RRECOMMENDS += "${MACHINE_FIRMWARE}"
+
+# Extra audio support
+MACHINE_EXTRA_RRECOMMENDS_append_mx6 = " ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'imx-alsa-plugins', '', d)}"
+MACHINE_EXTRA_RRECOMMENDS_append_mx7 = " ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'imx-alsa-plugins', '', d)}"
+MACHINE_EXTRA_RRECOMMENDS_append_mx8 = " ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'imx-alsa-plugins', '', d)}"
+
+# Extra udev rules
+MACHINE_EXTRA_RRECOMMENDS += "udev-rules-imx"
+
+# GStreamer 1.0 plugins
+MACHINE_GSTREAMER_1_0_PLUGIN ?= ""
+MACHINE_GSTREAMER_1_0_PLUGIN_mx6dl ?= "gstreamer1.0-plugins-imx-meta"
+MACHINE_GSTREAMER_1_0_PLUGIN_mx6q ?= "gstreamer1.0-plugins-imx-meta"
+MACHINE_GSTREAMER_1_0_PLUGIN_mx6sl ?= "gstreamer1.0-plugins-imx-meta"
+MACHINE_GSTREAMER_1_0_PLUGIN_mx6sx ?= "gstreamer1.0-plugins-imx-meta"
+MACHINE_GSTREAMER_1_0_PLUGIN_mx6ul ?= "gstreamer1.0-plugins-imx-meta"
+MACHINE_GSTREAMER_1_0_PLUGIN_mx6ull ?= "gstreamer1.0-plugins-imx-meta"
+MACHINE_GSTREAMER_1_0_PLUGIN_mx7d ?= "gstreamer1.0-plugins-imx-meta"
+
+# Determines if the SoC has support for Vivante kernel driver
+SOC_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT = "0"
+SOC_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT_imxgpu = "1"
+
+# Handle Vivante kernel driver setting:
+# 0 - machine does not have Vivante GPU driver support
+# 1 - machine has Vivante GPU driver support
+MACHINE_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT ?= "${SOC_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT}"
+
+# Graphics libraries
+PREFERRED_PROVIDER_virtual/egl ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
+
+PREFERRED_PROVIDER_virtual/egl_imxgpu ?= "imx-gpu-viv"
+PREFERRED_PROVIDER_virtual/libgl_imxgpu3d ?= "imx-gpu-viv"
+PREFERRED_PROVIDER_virtual/libgles1_imxgpu3d ?= "imx-gpu-viv"
+PREFERRED_PROVIDER_virtual/libgles2_imxgpu3d ?= "imx-gpu-viv"
+PREFERRED_PROVIDER_virtual/libg2d ?= "imx-gpu-g2d"
+
+PREFERRED_VERSION_weston_mx6 ?= "4.0.0.imx"
+PREFERRED_VERSION_weston_mx7 ?= "4.0.0.imx"
+PREFERRED_VERSION_weston_mx8 ?= "4.0.0.imx"
+
+PREFERRED_VERSION_wayland-protocols_mx6 ?= "1.13.imx"
+PREFERRED_VERSION_wayland-protocols_mx7 ?= "1.13.imx"
+PREFERRED_VERSION_wayland-protocols_mx8 ?= "1.13.imx"
+
+# Use i.MX libdrm Version
+PREFERRED_VERSION_libdrm_mx6 ?= "2.4.91.imx"
+PREFERRED_VERSION_libdrm_mx7 ?= "2.4.91.imx"
+PREFERRED_VERSION_libdrm_mx8 ?= "2.4.91.imx"
+
+# Handle default kernel
+IMX_DEFAULT_KERNEL = "linux-imx"
+IMX_DEFAULT_KERNEL_mxs = "linux-fslc"
+IMX_DEFAULT_KERNEL_mx5 = "linux-fslc"
+IMX_DEFAULT_KERNEL_mx6 = "linux-fslc-imx"
+IMX_DEFAULT_KERNEL_mx7 = "linux-fslc-imx"
+IMX_DEFAULT_KERNEL_mx8 = "linux-imx"
+IMX_DEFAULT_KERNEL_mx7ulp = "linux-imx"
+IMX_DEFAULT_KERNEL_mx6sll = "linux-imx"
+IMX_DEFAULT_KERNEL_mx6ul = "linux-fslc-imx"
+IMX_DEFAULT_KERNEL_mx6ull = "linux-fslc-imx"
+IMX_DEFAULT_KERNEL_use-mainline-bsp = "linux-fslc"
+
+PREFERRED_PROVIDER_virtual/kernel ??= "${IMX_DEFAULT_KERNEL}"
+
+SOC_DEFAULT_IMAGE_FSTYPES = "wic.bmap wic.gz"
+SOC_DEFAULT_IMAGE_FSTYPES_mxs = "uboot-mxsboot-sdcard wic.gz"
+
+# Do not update fstab file when using wic images
+WIC_CREATE_EXTRA_ARGS ?= "--no-fstab-update"
+
+SDCARD_ROOTFS ?= "${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.ext4"
+IMAGE_FSTYPES ?= "${SOC_DEFAULT_IMAGE_FSTYPES}"
+
+IMAGE_BOOT_FILES ?= " \
+ ${KERNEL_IMAGETYPE} \
+ ${@make_dtb_boot_files(d)} \
+"
+
+### wic default support
+WKS_FILE_DEPENDS ?= " \
+ virtual/bootloader \
+ \
+ e2fsprogs-native \
+ bmap-tools-native \
+"
+
+WKS_FILE_DEPENDS_mx8 += "imx-boot"
+
+SOC_DEFAULT_WKS_FILE ?= "imx-uboot-bootpart.wks"
+SOC_DEFAULT_WKS_FILE_mx8 ?= "imx-imx-boot-bootpart.wks.in"
+SOC_DEFAULT_WKS_FILE_mxs ?= "imx-uboot-mxs-bootpart.wks.in"
+
+WKS_FILE ?= "${SOC_DEFAULT_WKS_FILE}"
+
+# Certain machines override the default fsl u-boot with the
+# fslc u-boot. To restore the fsl u-boot, add use-fsl-bsp like this:
+# MACHINEOVERRIDES_prepend_imx6ulevk = "use-fsl-bsp:"
+UBOOT_MAKE_TARGET_use-fsl-bsp_mx6 = "u-boot.imx"
+UBOOT_SUFFIX_use-fsl-bsp_mx6 = "imx"
+SPL_BINARY_use-fsl-bsp_mx6 = ""
+WKS_FILE_use-fsl-bsp_mx6 = "imx-uboot-bootpart.wks"
+UBOOT_MAKE_TARGET_use-fsl-bsp_mx7 = "u-boot.imx"
+UBOOT_SUFFIX_use-fsl-bsp_mx7 = "imx"
+SPL_BINARY_use-fsl-bsp_mx7 = ""
+WKS_FILE_use-fsl-bsp_mx7 = "imx-uboot-bootpart.wks"
+
+SERIAL_CONSOLE = "115200 ttymxc0"
+SERIAL_CONSOLE_mxs = "115200 ttyAMA0"
+
+KERNEL_IMAGETYPE = "zImage"
+KERNEL_IMAGETYPE_aarch64 = "Image"
+
+MACHINE_FEATURES = "usbgadget usbhost vfat alsa touchscreen"
+
+# Add the ability to specify _imx machines
+MACHINEOVERRIDES =. "imx:"
+
+HOSTTOOLS_NONFATAL_append_mx8x = " sha384sum"
diff --git a/bsp/meta-freescale/conf/machine/include/qoriq-arm.inc b/bsp/meta-freescale/conf/machine/include/qoriq-arm.inc
new file mode 100644
index 00000000..eb03af43
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/qoriq-arm.inc
@@ -0,0 +1,10 @@
+# Provides the common settings for QorIQ ARM
+
+KERNEL_IMAGETYPE ?= "uImage"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyEHV0 115200;ttyLP0 115200;ttyAMA0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+MACHINEOVERRIDES =. "qoriq-arm:"
+
+require conf/machine/include/qoriq-base.inc
diff --git a/bsp/meta-freescale/conf/machine/include/qoriq-arm64.inc b/bsp/meta-freescale/conf/machine/include/qoriq-arm64.inc
new file mode 100644
index 00000000..e8d99a6e
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/qoriq-arm64.inc
@@ -0,0 +1,10 @@
+# Provides the QorIQ common settings for ARM64
+
+KERNEL_IMAGETYPE ?= "Image"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyAMA0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+MACHINEOVERRIDES =. "qoriq-arm64:"
+
+require conf/machine/include/qoriq-base.inc
diff --git a/bsp/meta-freescale/conf/machine/include/qoriq-base.inc b/bsp/meta-freescale/conf/machine/include/qoriq-base.inc
new file mode 100644
index 00000000..b19332e3
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/qoriq-base.inc
@@ -0,0 +1,29 @@
+# common providers of QorIQ targets
+PREFERRED_PROVIDER_cryptodev-linux = "cryptodev-qoriq-linux"
+PREFERRED_PROVIDER_cryptodev-module = "cryptodev-qoriq-module"
+PREFERRED_PROVIDER_cryptodev-tests = "cryptodev-qoriq-tests"
+PREFERRED_PROVIDER_openssl = "openssl-qoriq"
+PREFERRED_PROVIDER_u-boot ?= "u-boot-qoriq"
+PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-qoriq"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-qoriq"
+PREFERRED_VERSION_testfloat = "2a"
+PREFERRED_PROVIDER_ptpd = "ptpd-qoriq"
+
+SOC_DEFAULT_IMAGE_FSTYPES = "tar.gz ext2.gz.u-boot ext2.gz"
+IMAGE_FSTYPES ?= "${SOC_DEFAULT_IMAGE_FSTYPES}"
+
+MACHINE_FEATURES ?= "pci ext2 ext3 serial"
+MACHINE_EXTRA_RRECOMMENDS += "udev-extraconf udev-rules-qoriq kernel-modules"
+
+EXTRA_IMAGEDEPENDS += "u-boot cst-native"
+
+MACHINEOVERRIDES =. "qoriq:"
+
+# Sub-architecture support
+MACHINE_SOCARCH_SUFFIX ?= ""
+MACHINE_SOCARCH_SUFFIX_qoriq = "-qoriq"
+
+MACHINE_ARCH_FILTER = "virtual/kernel"
+MACHINE_SOCARCH_FILTER_append_qoriq = " cryptodev-qoriq-linux cryptodev-qoriq-module cryptodev-qoriq-test openssl-qoriq"
+
+INHERIT += "fsl-dynamic-packagearch"
diff --git a/bsp/meta-freescale/conf/machine/include/qoriq-ppc.inc b/bsp/meta-freescale/conf/machine/include/qoriq-ppc.inc
new file mode 100644
index 00000000..b40e1489
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/qoriq-ppc.inc
@@ -0,0 +1,10 @@
+# Provides the common settings for QorIQ PPC
+
+KERNEL_IMAGETYPE ?= "uImage"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyEHV0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+MACHINEOVERRIDES =. "qoriq-ppc:"
+
+require conf/machine/include/qoriq-base.inc
diff --git a/bsp/meta-freescale/conf/machine/include/utilities.inc b/bsp/meta-freescale/conf/machine/include/utilities.inc
new file mode 100644
index 00000000..e6cfda80
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/include/utilities.inc
@@ -0,0 +1,16 @@
+### Machine definition file utilities
+
+def make_dtb_boot_files(d):
+ # Generate IMAGE_BOOT_FILES entries for device tree files listed in
+ # KERNEL_DEVICETREE.
+ # Use only the basename for dtb files:
+ alldtbs = d.getVar('KERNEL_DEVICETREE')
+
+ def transform(dtb):
+ if dtb.endswith('dtb') or dtb.endswith('dtbo'):
+ # eg: whatever/bcm2708-rpi-b.dtb has:
+ # DEPLOYDIR file: bcm2708-rpi-b.dtb
+ # destination: bcm2708-rpi-b.dtb
+ return os.path.basename(dtb)
+
+ return ' '.join([transform(dtb) for dtb in alldtbs.split(' ') if dtb])
diff --git a/bsp/meta-freescale/conf/machine/ls1012afrwy-32b.conf b/bsp/meta-freescale/conf/machine/ls1012afrwy-32b.conf
new file mode 100644
index 00000000..88f071ea
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1012afrwy-32b.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@NAME: NXP LS1012AFRWY board
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for NXP QorIQ LS1012AFRWY in 32-bit mode
+# with ARM Cortext-A53 core
+#@MAINTAINER: Chunrong Guo <Chunrong.Guo@nxp.com>
+
+MACHINEOVERRIDES =. "fsl-lsch2:fsl-lsch2-32b:ls1012a:"
+
+require conf/machine/include/qoriq-arm.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+DEFAULTTUNE = "armv7ahf-neon"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "qspi-secure-boot qspi"
+UBOOT_CONFIG[qspi] = "ls1012afrwy_qspi_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[qspi-secure-boot] = "ls1012afrwy_qspi_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1012a-frwy.dtb"
+KERNEL_DEFCONFIG ?= "multi_v7_defconfig"
+
+EXTRA_IMAGEDEPENDS += "ppfe-firmware rcw"
+USE_VT = "0"
+
+require conf/multilib.conf
+MULTILIBS ?= "multilib:lib64"
+DEFAULTTUNE_virtclass-multilib-lib64 ?= "aarch64"
diff --git a/bsp/meta-freescale/conf/machine/ls1012afrwy.conf b/bsp/meta-freescale/conf/machine/ls1012afrwy.conf
new file mode 100644
index 00000000..bd154acb
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1012afrwy.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: NXP LS1012AFRWY board
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for NXP QorIQ LS1012AFRWY
+# with ARM Cortext-A53 core
+#@MAINTAINER: Chunrong Guo <Chunrong.Guo@nxp.com>
+
+MACHINEOVERRIDES =. "fsl-lsch2:ls1012a:"
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "tfa-secure-boot tfa"
+UBOOT_CONFIG[tfa] = "ls1012afrwy_tfa_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[tfa-secure-boot] = "ls1012afrwy_tfa_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+RCWQSPI ?= "N_SSNP_3305/rcw_1000_default.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1012a-frwy.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+EXTRA_IMAGEDEPENDS += "ppfe-firmware rcw atf"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls1012ardb-32b.conf b/bsp/meta-freescale/conf/machine/ls1012ardb-32b.conf
new file mode 100644
index 00000000..43abf70a
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1012ardb-32b.conf
@@ -0,0 +1,34 @@
+#@TYPE: Machine
+#@NAME: NXP LS1012ARDB board
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for NXP QorIQ LS1012ARDB
+# with ARM Cortext-A53 core
+#@MAINTAINER: Zongchun Yu <Zongchun.Yu@nxp.com>
+
+MACHINEOVERRIDES =. "fsl-lsch2:fsl-lsch2-32b:ls1012a:"
+
+require conf/machine/include/qoriq-arm.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+DEFAULTTUNE = "armv7ahf-neon"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80008000"
+
+UBOOT_CONFIG ??= "qspi-secure-boot qspi"
+UBOOT_CONFIG[qspi] = "ls1012ardb_qspi_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[qspi-secure-boot] = "ls1012ardb_qspi_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+KERNEL_IMAGETYPE = "zImage"
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1012a-rdb.dtb"
+KERNEL_DEFCONFIG ?= "multi_v7_defconfig"
+
+EXTRA_IMAGEDEPENDS += "rcw"
+USE_VT = "0"
+
+require conf/multilib.conf
+MULTILIBS ?= "multilib:lib64"
+DEFAULTTUNE_virtclass-multilib-lib64 ?= "aarch64"
diff --git a/bsp/meta-freescale/conf/machine/ls1012ardb.conf b/bsp/meta-freescale/conf/machine/ls1012ardb.conf
new file mode 100644
index 00000000..f05507d7
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1012ardb.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: NXP LS1012ARDB board
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for NXP QorIQ LS1012ARDB
+# with ARM Cortext-A53 core
+#@MAINTAINER: Zongchun Yu <Zongchun.Yu@nxp.com>
+
+MACHINEOVERRIDES =. "fsl-lsch2:ls1012a:"
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "tfa-secure-boot tfa"
+UBOOT_CONFIG[tfa] = "ls1012ardb_tfa_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[tfa-secure-boot] = "ls1012ardb_tfa_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+RCWQSPI ?= "R_SPNH_3508/rcw_1000_default.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1012a-rdb.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+EXTRA_IMAGEDEPENDS += "ppfe-firmware rcw atf"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls1021atwr.conf b/bsp/meta-freescale/conf/machine/ls1021atwr.conf
new file mode 100644
index 00000000..a238fdca
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1021atwr.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@NAME: NXP LS1021ATWR board
+#@SOC: ls102xa
+#@DESCRIPTION: Machine configuration for NXP QorIQ LS1 Tower System
+# Module Rev2.0 with ARM Cortex-A7 core
+#@MAINTAINER: Zhenhua Luo <zhenhua.luo@freescale.com>
+
+MACHINEOVERRIDES =. "ls102xa:"
+
+require conf/machine/include/qoriq-arm.inc
+require conf/machine/include/tune-cortexa7.inc
+
+DEFAULTTUNE = "cortexa7hf-neon"
+
+UBOOT_CONFIG ??= "sdcard-ifc-secure-boot sdcard-ifc sdcard-qspi lpuart qspi secure-boot nor"
+UBOOT_CONFIG[nor] = "ls1021atwr_nor_config,,u-boot-dtb.bin"
+UBOOT_CONFIG[sdcard-ifc] = "ls1021atwr_sdcard_ifc_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard-qspi] = "ls1021atwr_sdcard_qspi_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[lpuart] = "ls1021atwr_nor_lpuart_config,,u-boot-dtb.bin"
+UBOOT_CONFIG[qspi] = "ls1021atwr_qspi_config,,u-boot-dtb.bin"
+UBOOT_CONFIG[secure-boot] = "ls1021atwr_nor_SECURE_BOOT_config,,u-boot-dtb.bin"
+UBOOT_CONFIG[sdcard-ifc-secure-boot] = "ls1021atwr_sdcard_ifc_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin"
+
+QE_UCODE="iram_Type_A_LS1021a_r1.0.bin"
+
+KERNEL_DEVICETREE ?= "ls1021a-twr.dtb"
+KERNEL_DEFCONFIG ?= "multi_v7_defconfig"
+
+KERNEL_IMAGETYPES = "zImage"
+
+UBOOT_ENTRYPOINT = "0x80008000"
+EXTRA_IMAGEDEPENDS += "rcw qe-ucode"
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/ls1043ardb-32b.conf b/bsp/meta-freescale/conf/machine/ls1043ardb-32b.conf
new file mode 100644
index 00000000..aa7f3f6f
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1043ardb-32b.conf
@@ -0,0 +1,39 @@
+#@TYPE: Machine
+#@NAME: NXP LS1043ARDB-32B
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for running LS1043A in 32B mode
+#@MAINTAINER: Ting Liu <ting.liu@nxp.com>
+
+MACHINEOVERRIDES =. "fsl-lsch2:fsl-lsch2-32b:ls1043a:"
+
+require conf/machine/include/qoriq-arm.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+DEFAULTTUNE = "armv7ahf-neon"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x9ffe0000"
+UBOOT_ENTRYPOINT = "0x80008000"
+
+UBOOT_CONFIG ??= "nand sdcard nor"
+UBOOT_CONFIG[nor] = "ls1043ardb_config,,u-boot-dtb.bin"
+UBOOT_CONFIG[nand] = "ls1043ardb_nand_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard] = "ls1043ardb_sdcard_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[secure-boot] = "ls1043ardb_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+QE_UCODE = "iram_Type_A_LS1021a_r1.0.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1043a-rdb-sdk.dtb freescale/fsl-ls1043a-rdb-usdpaa.dtb"
+KERNEL_DEFCONFIG ?= "multi_v7_defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyAMA0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw qe-ucode"
+USE_VT = "0"
+
+require conf/multilib.conf
+MULTILIBS ?= "multilib:lib64"
+DEFAULTTUNE_virtclass-multilib-lib64 ?= "aarch64"
diff --git a/bsp/meta-freescale/conf/machine/ls1043ardb-be.conf b/bsp/meta-freescale/conf/machine/ls1043ardb-be.conf
new file mode 100644
index 00000000..3582162f
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1043ardb-be.conf
@@ -0,0 +1,40 @@
+#@TYPE: Machine
+#@NAME: Freescale LS1043ARDB
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for running LS1043A in 64-bit mode
+#@MAINTAINER: Chunrong Guo <nxa13725@nxp.com>
+
+DEFAULTTUNE = "aarch64_be"
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+MACHINEOVERRIDES =. "fsl-lsch2:ls1043a:"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "nand sdcard nor"
+UBOOT_CONFIG[nor] = "ls1043ardb_config,,u-boot-dtb.bin"
+UBOOT_CONFIG[nand] = "ls1043ardb_nand_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard] = "ls1043ardb_sdcard_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[secure-boot] = "ls1043ardb_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[nand-secure-boot] = "ls1043ardb_nand_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[nand-spl-secure-boot] = "ls1043ardb_nand_SECURE_BOOT_defconfig,,spl/u-boot-spl.bin"
+UBOOT_CONFIG[nand-dtb-secure-boot] = "ls1043ardb_nand_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[sdcard-secure-boot] = "ls1043ardb_sdcard_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard-spl-secure-boot] = "ls1043ardb_sdcard_SECURE_BOOT_defconfig,,spl/u-boot-spl.bin"
+UBOOT_CONFIG[sdcard-dtb-secure-boot] = "ls1043ardb_sdcard_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+QE_UCODE = "iram_Type_A_LS1021a_r1.0.bin"
+LE_UBOOT_FOR_ARMBE_TARGET = "1"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1043a-rdb-sdk.dtb freescale/fsl-ls1043a-rdb-usdpaa.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw qe-ucode"
+
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls1043ardb.conf b/bsp/meta-freescale/conf/machine/ls1043ardb.conf
new file mode 100644
index 00000000..f9b0d3d9
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1043ardb.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@NAME: NXP LS1043ARDB board
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for NXP QorIQ LS1043ARDB
+# with ARM Cortext-A53 core
+#@MAINTAINER: Ting Liu <ting.liu@nxp.com>
+
+MACHINEOVERRIDES =. "fsl-lsch2:ls1043a:"
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "tfa-secure-boot tfa"
+UBOOT_CONFIG[tfa] = "ls1043ardb_tfa_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[tfa-secure-boot] = "ls1043ardb_tfa_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1043a-rdb-sdk.dtb freescale/fsl-ls1043a-rdb-usdpaa.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+UEFI_NORBOOT ?= "LS1043ARDB_EFI_NORBOOT.fd"
+RCWNOR ?= "RR_FQPP_1455/rcw_1600.bin"
+RCWSD ?= "RR_FQPP_1455/rcw_1600_sdboot.bin"
+RCWNAND ?= "RR_FQPP_1455/rcw_1600_nandboot.bin"
+
+QE_UCODE = "iram_Type_A_LS1021a_r1.0.bin"
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw qe-ucode uefi atf"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls1046ardb-32b.conf b/bsp/meta-freescale/conf/machine/ls1046ardb-32b.conf
new file mode 100644
index 00000000..4267c0f1
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1046ardb-32b.conf
@@ -0,0 +1,40 @@
+#@TYPE: Machine
+#@NAME: NXP LS1046ARDB
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for running LS1046A in 32-bit mode
+#@MAINTAINER: Zhenhua Luo <zhenhua.luo@nxp.com>
+
+MACHINEOVERRIDES =. "fsl-lsch2:fsl-lsch2-32b:ls1046a:"
+
+require conf/machine/include/qoriq-arm.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+DEFAULTTUNE = "armv7ahf-neon"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x9ffe0000"
+UBOOT_ENTRYPOINT = "0x80008000"
+
+UBOOT_CONFIG ??= "emmc sdcard qspi-secure-boot qspi"
+UBOOT_CONFIG[emmc] = "ls1046ardb_emmc_defconfig,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard] = "ls1046ardb_sdcard_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[qspi] = "ls1046ardb_qspi_config,,u-boot-dtb.bin"
+UBOOT_CONFIG[qspi-secure-boot] = "ls1046ardb_qspi_SECURE_BOOT_config,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "\
+ freescale/fsl-ls1046a-rdb-sdk.dtb \
+ freescale/fsl-ls1046a-rdb-usdpaa.dtb \
+"
+KERNEL_DEFCONFIG ?= "multi_v7_defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyAMA0 115200;ttyLP0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw"
+USE_VT = "0"
+
+require conf/multilib.conf
+MULTILIBS ?= "multilib:lib64"
+DEFAULTTUNE_virtclass-multilib-lib64 ?= "aarch64"
diff --git a/bsp/meta-freescale/conf/machine/ls1046ardb-be.conf b/bsp/meta-freescale/conf/machine/ls1046ardb-be.conf
new file mode 100644
index 00000000..0f72d579
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1046ardb-be.conf
@@ -0,0 +1,37 @@
+#@TYPE: Machine
+#@NAME: NXP LS1046ARDB
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for running LS1046A in 64-bit mode
+#@MAINTAINER: Zhenhua Luo <zhenhua.luo@nxp.com>
+
+DEFAULTTUNE = "aarch64_be"
+
+MACHINEOVERRIDES =. "fsl-lsch2:ls1046a:"
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+LE_UBOOT_FOR_ARMBE_TARGET = "1"
+UBOOT_CONFIG ??= "emmc sdcard sdcard-dtb-secure-boot sdcard-spl-secure-boot sdcard-secure-boot qspi-secure-boot qspi"
+UBOOT_CONFIG[emmc] = "ls1046ardb_emmc_defconfig,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard] = "ls1046ardb_sdcard_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[qspi] = "ls1046ardb_qspi_config,,u-boot-dtb.bin"
+UBOOT_CONFIG[qspi-secure-boot] = "ls1046ardb_qspi_SECURE_BOOT_config,,u-boot-dtb.bin"
+UBOOT_CONFIG[sdcard-secure-boot] = "ls1046ardb_sdcard_SECURE_BOOT_defconfig,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard-spl-secure-boot] = "ls1046ardb_sdcard_SECURE_BOOT_defconfig,,spl/u-boot-spl.bin"
+UBOOT_CONFIG[sdcard-dtb-secure-boot] = "ls1046ardb_sdcard_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "\
+ freescale/fsl-ls1046a-rdb-sdk.dtb \
+ freescale/fsl-ls1046a-rdb-usdpaa.dtb \
+"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls1046ardb.conf b/bsp/meta-freescale/conf/machine/ls1046ardb.conf
new file mode 100644
index 00000000..83309c95
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1046ardb.conf
@@ -0,0 +1,36 @@
+#@TYPE: Machine
+#@NAME: NXP LS1046ARDB
+#@SOC: LSCH2
+#@DESCRIPTION: Machine configuration for running LS1046A in 64-bit mode
+#@MAINTAINER: Zhenhua Luo <zhenhua.luo@nxp.com>
+
+MACHINEOVERRIDES =. "fsl-lsch2:ls1046a:"
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "tfa-secure-boot tfa"
+UBOOT_CONFIG[tfa] = "ls1046ardb_tfa_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[tfa-secure-boot] = "ls1046ardb_tfa_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "\
+ freescale/fsl-ls1046a-rdb-sdk.dtb \
+ freescale/fsl-ls1046a-rdb-usdpaa.dtb \
+"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyAMA0 115200;ttyLP0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+UEFI_NORBOOT ?= "LS1046ARDB_EFI_NORBOOT.fd"
+RCWQSPI ?= "RR_FFSSPPPH_1133_5559/rcw_1800_qspiboot.bin"
+RCWSD ?= "RR_FFSSPPPH_1133_5559/rcw_1800_sdboot.bin"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw uefi atf"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls1088ardb-be.conf b/bsp/meta-freescale/conf/machine/ls1088ardb-be.conf
new file mode 100644
index 00000000..3460a9c1
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1088ardb-be.conf
@@ -0,0 +1,34 @@
+#@TYPE: Machine
+#@NAME: NXP LS1088ARDB
+#@SOC: LSCH3
+#@DESCRIPTION: Machine configuration for running LS1088ARDB in 64-bit mode
+#@MAINTAINER: Zongchun Yu <Zongchun.Yu@nxp.com>
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+DEFAULTTUNE = "aarch64_be"
+
+LE_UBOOT_FOR_ARMBE_TARGET = "1"
+
+MACHINEOVERRIDES =. "fsl-lsch3:ls1088a:"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "secure-boot sdcard-qspi qspi"
+UBOOT_CONFIG[secure-boot] = "ls1088ardb_qspi_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[qspi] = "ls1088ardb_qspi_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[sdcard-qspi] = "ls1088ardb_sdcard_qspi_defconfig,,u-boot-with-spl.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1088a-rdb.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyAMA0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+EXTRA_IMAGEDEPENDS += "mc-utils rcw management-complex"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls1088ardb-pb.conf b/bsp/meta-freescale/conf/machine/ls1088ardb-pb.conf
new file mode 100644
index 00000000..3726efa2
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1088ardb-pb.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@NAME: NXP LS1088ARDB
+#@SOC: LSCH3
+#@DESCRIPTION: Machine configuration for running LS1088ARDB in 64-bit mode
+#@MAINTAINER: Chunrong Guo <Chunrong.Guo@nxp.com>
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+MACHINEOVERRIDES =. "fsl-lsch3:ls1088a:"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "tfa-secure-boot tfa"
+UBOOT_CONFIG[tfa] = "ls1088ardb_tfa_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[tfa-secure-boot] = "ls1088ardb_tfa_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1088a-rdb.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyAMA0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+RCWSD ?= "FCSSRR_PPPP_0x1d_0x13/rcw_1600_sd.bin"
+RCWQSPI ?= "FCSSRR_PPPP_0x1d_0x13/rcw_1600_qspi.bin"
+
+
+EXTRA_IMAGEDEPENDS += "mc-utils rcw management-complex atf"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls1088ardb.conf b/bsp/meta-freescale/conf/machine/ls1088ardb.conf
new file mode 100644
index 00000000..13c8bf29
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls1088ardb.conf
@@ -0,0 +1,32 @@
+#@TYPE: Machine
+#@NAME: NXP LS1088ARDB
+#@SOC: LSCH3
+#@DESCRIPTION: Machine configuration for running LS1088ARDB in 64-bit mode
+#@MAINTAINER: Zongchun Yu <Zongchun.Yu@nxp.com>
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+MACHINEOVERRIDES =. "fsl-lsch3:ls1088a:"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "tfa-secure-boot tfa"
+UBOOT_CONFIG[tfa-secure-boot] = "ls1088ardb_tfa_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[tfa] = "ls1088ardb_tfa_defconfig,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls1088a-rdb.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyAMA0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+RCWSD ?= "FCQQQQQQQQ_PPP_H_0x1d_0x0d/rcw_1600_sd.bin"
+RCWQSPI ?= "FCQQQQQQQQ_PPP_H_0x1d_0x0d/rcw_1600_qspi.bin"
+
+EXTRA_IMAGEDEPENDS += "mc-utils rcw management-complex atf"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls2080ardb.conf b/bsp/meta-freescale/conf/machine/ls2080ardb.conf
new file mode 100644
index 00000000..d58a86a4
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls2080ardb.conf
@@ -0,0 +1,20 @@
+#@TYPE: Machine
+#@NAME: NXP LS2080ARDB board
+#@SOC: LSCH3
+#@DESCRIPTION: Machine configuration for NXP QorIQ LS2080ARDB
+# with ARM Cortext-A57 core
+#@MAINTAINER: Zongchun Yu <Zongchun.Yu@nxp.com>
+
+MACHINEOVERRIDES =. "fsl-lsch3:ls2080a:"
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+UBOOT_CONFIG ??= "nor"
+UBOOT_CONFIG[nor] = "ls2080ardb_defconfig,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls2080a-rdb.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+EXTRA_IMAGEDEPENDS += "dpl-examples ls2-phy rcw management-complex"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls2088ardb-be.conf b/bsp/meta-freescale/conf/machine/ls2088ardb-be.conf
new file mode 100644
index 00000000..71cf596d
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls2088ardb-be.conf
@@ -0,0 +1,35 @@
+#@TYPE: Machine
+#@NAME: NXP LS2088ARDB
+#@SOC: LSCH3
+#@DESCRIPTION: Machine configuration for running LS2088ARDB in 64-bit mode
+#@MAINTAINER: Zongchun Yu <Zongchun.Yu@nxp.com>
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+DEFAULTTUNE = "aarch64_be"
+
+LE_UBOOT_FOR_ARMBE_TARGET = "1"
+
+MACHINEOVERRIDES =. "fsl-lsch3:ls2088a:"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "qspi-secure-boot qspi nand nor"
+UBOOT_CONFIG[nor] = "ls2080ardb_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[nand] = "ls2080ardb_nand_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[qspi] = "ls2088ardb_qspi_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[qspi-secure-boot] = "ls2088ardb_qspi_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls2088a-rdb.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyAMA0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+EXTRA_IMAGEDEPENDS += "mc-utils ls2-phy rcw management-complex"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/ls2088ardb.conf b/bsp/meta-freescale/conf/machine/ls2088ardb.conf
new file mode 100644
index 00000000..04f3bbdc
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/ls2088ardb.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@NAME: NXP LS2088ARDB
+#@SOC: LSCH3
+#@DESCRIPTION: Machine configuration for running LS2088ARDB in 64-bit mode
+#@MAINTAINER: Zongchun Yu <Zongchun.Yu@nxp.com>
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+MACHINEOVERRIDES =. "fsl-lsch3:ls2088a:"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+UBOOT_DTB_LOADADDRESS = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "tfa-secure-boot tfa"
+UBOOT_CONFIG[tfa] = "ls2088ardb_tfa_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[tfa-secure-boot] = "ls2088ardb_tfa_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+RCWNOR ?= "FFFFFFFF_PP_HH_0x2a_0x41/rcw_1800.bin"
+RCWQSPI?= "FFFFFFFF_PP_HH_0x2a_0x41/rcw_2000_qspi.bin"
+UEFI_NORBOOT ?= "LS2088ARDB_EFI_NORBOOT.fd"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-ls2088a-rdb.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyAMA0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+EXTRA_IMAGEDEPENDS += "mc-utils ls2-phy rcw management-complex uefi atf"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/lx2160ardb.conf b/bsp/meta-freescale/conf/machine/lx2160ardb.conf
new file mode 100644
index 00000000..44eba5d9
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/lx2160ardb.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@NAME: NXP LX2160ARDB
+#@SOC: LSCH3
+#@DESCRIPTION: Machine configuration for running LX2160ARDB in 64-bit mode
+#@MAINTAINER: Zongchun Yu <Zongchun.Yu@nxp.com>
+
+require conf/machine/include/qoriq-arm64.inc
+require conf/machine/include/arm/arch-arm64.inc
+
+MACHINEOVERRIDES =. "fsl-lsch3:lx2160a:"
+
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+
+DTB_LOAD = "0x90000000"
+UBOOT_ENTRYPOINT = "0x80080000"
+
+UBOOT_CONFIG ??= "tfa-secure-boot tfa"
+UBOOT_CONFIG[tfa] = "lx2160ardb_tfa_defconfig,,u-boot-dtb.bin"
+UBOOT_CONFIG[tfa-secure-boot] = "lx2160ardb_tfa_SECURE_BOOT_defconfig,,u-boot-dtb.bin"
+
+KERNEL_DEVICETREE ?= "freescale/fsl-lx2160a-rdb.dtb"
+KERNEL_DEFCONFIG ?= "defconfig"
+
+SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyAMA0"
+SERIAL_CONSOLES_CHECK ?= "${SERIAL_CONSOLES}"
+
+UEFI_XSPIBOOT ?= "LX2160ARDB_EFI_NORBOOT.fd"
+RCWXSPI ?= "XGGFF_PP_HHHH_RR_19_5_2/rcw_2000_700_2900_19_5_2.bin"
+RCWSD ?= "XGGFF_PP_HHHH_RR_19_5_2/rcw_2000_700_2900_19_5_2_sd.bin"
+
+EXTRA_IMAGEDEPENDS += "management-complex mc-utils rcw ls2-phy ddr-phy uefi atf inphi"
+USE_VT = "0"
diff --git a/bsp/meta-freescale/conf/machine/mpc8548cds.conf b/bsp/meta-freescale/conf/machine/mpc8548cds.conf
new file mode 100644
index 00000000..73194402
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/mpc8548cds.conf
@@ -0,0 +1,14 @@
+#@TYPE: Machine
+#@Name: NXP MPC8548CDS
+#@DESCRIPTION: Machine configuration for the NXP MPC8548CDS
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e500v2.inc
+
+UBOOT_CONFIG ??= "nor"
+UBOOT_CONFIG[nor] = "MPC8548CDS_defconfig,,u-boot.bin"
+
+KERNEL_DEVICETREE = "mpc8548cds_32b.dtb"
+KERNEL_DEFCONFIG = "mpc85xx_defconfig"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/p1020rdb.conf b/bsp/meta-freescale/conf/machine/p1020rdb.conf
new file mode 100644
index 00000000..50edba7d
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/p1020rdb.conf
@@ -0,0 +1,28 @@
+#@TYPE: Machine
+#@NAME: NXP P1020RDB
+#@SOC: p1020
+#@DESCRIPTION: Machine configuration for NXP QorIQ P1020 Reference
+# Design Board, revD with ppce500v2 core
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e500v2.inc
+
+MACHINEOVERRIDES =. "p1020"
+BOOTFORMAT_CONFIG = "config_sram_p1022ds.dat"
+
+UBOOT_CONFIG ??= "nand sdcard spi nor"
+UBOOT_CONFIG[nor] = "P1020RDB-PD_config"
+UBOOT_CONFIG[nand] = "P1020RDB-PD_NAND_config"
+UBOOT_CONFIG[sdcard] = "P1020RDB-PD_SDCARD_config"
+UBOOT_CONFIG[spi] = "P1020RDB-PD_SPIFLASH_config"
+
+UBOOT_SOURCE_NAND = "u-boot-with-spl.bin"
+UBOOT_SOURCE_SPI = "u-boot-with-spl.bin"
+UBOOT_SOURCE_SD = "u-boot-with-spl.bin"
+
+KERNEL_DEVICETREE ?= "p1020rdb-pd.dtb"
+KERNEL_DEFCONFIG ?= "mpc85xx_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x20000"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/p2020rdb.conf b/bsp/meta-freescale/conf/machine/p2020rdb.conf
new file mode 100644
index 00000000..324186ca
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/p2020rdb.conf
@@ -0,0 +1,28 @@
+#@TYPE: Machine
+#@Name: NXP P2020RDB
+#@SOC: p2020
+#@DESCRIPTION: Machine configuration for NXP QorIQ P2020 Reference
+# Design Board with ppce500v2 core
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e500v2.inc
+
+MACHINEOVERRIDES =. "p2020:"
+BOOTFORMAT_CONFIG = "config_sram_p1022ds.dat"
+
+UBOOT_CONFIG ??= "nand sdcard spi 36bit-nor 36bit-spi 36bit-nand 36bit-sdcard nor"
+UBOOT_CONFIG[nor] = "P2020RDB-PC_config,,u-boot.bin"
+UBOOT_CONFIG[nand] = "P2020RDB-PC_NAND_config,,u-boot.bin"
+UBOOT_CONFIG[sdcard] = "P2020RDB-PC_SDCARD_config,,u-boot.bin"
+UBOOT_CONFIG[spi] = "P2020RDB-PC_SPIFLASH_config,,u-boot.bin"
+UBOOT_CONFIG[36bit-nor] = "P2020RDB-PC_36BIT_config,,u-boot.bin"
+UBOOT_CONFIG[36bit-spi] = "P2020RDB-PC_36BIT_SPIFLASH_config,,u-boot.bin"
+UBOOT_CONFIG[36bit-nand] = "P2020RDB-PC_36BIT_NAND_config,,u-boot.bin"
+UBOOT_CONFIG[36bit-sdcard] = "P2020RDB-PC_36BIT_SDCARD_config,,u-boot.bin"
+
+KERNEL_DEVICETREE ?= "p2020rdb-pc_32b.dtb"
+KERNEL_DEFCONFIG ?= "mpc85xx_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x20000"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/p2041rdb.conf b/bsp/meta-freescale/conf/machine/p2041rdb.conf
new file mode 100644
index 00000000..102cc8db
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/p2041rdb.conf
@@ -0,0 +1,28 @@
+#@TYPE: Machine
+#@NAME: NXP P2041RDB
+#@SOC: p2041
+#@DESCRIPTION: Machine configuration for NXP QorIQ P2041 Reference
+# Design Board, rev2 silicon with ppce500mc core
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e500mc.inc
+
+MACHINEOVERRIDES =. "p2041"
+
+UBOOT_CONFIG ??= "nand secure-boot sdcard spi nor"
+UBOOT_CONFIG[nor] = "P2041RDB_config"
+UBOOT_CONFIG[nand] = "P2041RDB_NAND_config,,u-boot.pbl"
+UBOOT_CONFIG[secure-boot] = "P2041RDB_SECURE_BOOT_config"
+UBOOT_CONFIG[sdcard] = "P2041RDB_SDCARD_config,,u-boot.pbl"
+UBOOT_CONFIG[spi] = "P2041RDB_SPIFLASH_config,,u-boot.pbl"
+
+HV_CFG_M = "p2041rdb"
+
+KERNEL_DEVICETREE ?= "p2041rdb.dtb"
+KERNEL_DEFCONFIG ?= "corenet32_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/p3041ds.conf b/bsp/meta-freescale/conf/machine/p3041ds.conf
new file mode 100644
index 00000000..c7ce4692
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/p3041ds.conf
@@ -0,0 +1,28 @@
+#@TYPE: Machine
+#@NAME: NXP P3041DS
+#@SOC: p3041
+#@DESCRIPTION: Machine configuration for NXP QorIQ P3041 Development
+# System with ppce500mc core
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e500mc.inc
+
+MACHINEOVERRIDES =. "p3041"
+
+UBOOT_CONFIG ??= "nand secure-boot sdcard spi nor"
+UBOOT_CONFIG[nor] = "P3041DS_config"
+UBOOT_CONFIG[nand] = "P3041DS_NAND_config,,u-boot.pbl"
+UBOOT_CONFIG[secure-boot] = "P3041DS_SECURE_BOOT_config"
+UBOOT_CONFIG[sdcard] = "P3041DS_SDCARD_config,,u-boot.pbl"
+UBOOT_CONFIG[spi] = "P3041DS_SPIFLASH_config,,u-boot.pbl"
+
+HV_CFG_M = "p3041ds"
+
+KERNEL_DEVICETREE ?= "p3041ds.dtb"
+KERNEL_DEFCONFIG ?= "corenet32_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/p4080ds.conf b/bsp/meta-freescale/conf/machine/p4080ds.conf
new file mode 100644
index 00000000..23a7816b
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/p4080ds.conf
@@ -0,0 +1,27 @@
+#@TYPE: Machine
+#@NAME: NXP P4080DS
+#@SOC: p4080
+#@DESCRIPTION: Machine configuration for NXP QorIQ P4080 Development
+# System with ppce500mc core
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e500mc.inc
+
+MACHINEOVERRIDES =. "p4080"
+
+UBOOT_CONFIG ??= "secure-boot sdcard spi nor"
+UBOOT_CONFIG[nor] = "P4080DS_config"
+UBOOT_CONFIG[secure-boot] = "P4080DS_SECURE_BOOT_config"
+UBOOT_CONFIG[sdcard] = "P4080DS_SDCARD_config,,u-boot.pbl"
+UBOOT_CONFIG[spi] = "P4080DS_SPIFLASH_config,,u-boot.pbl"
+
+HV_CFG_M = "p4080ds"
+
+KERNEL_DEVICETREE ?= "p4080ds.dtb"
+KERNEL_DEFCONFIG ?= "corenet32_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/p5040ds-64b.conf b/bsp/meta-freescale/conf/machine/p5040ds-64b.conf
new file mode 100644
index 00000000..161eb5e9
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/p5040ds-64b.conf
@@ -0,0 +1,28 @@
+#@TYPE: Machine
+#@NAME: NXP P5040DS-64B
+#@SOC: p5040
+#@DESCRIPTION: Machine configuration for Freescale QorIQ P5040 Development
+# System with ppce5500 core in 64b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e5500-64b.inc
+
+MACHINEOVERRIDES =. "p5040:"
+
+UBOOT_CONFIG ??= "nand secure-boot sdcard spi nor"
+UBOOT_CONFIG[nor] = "P5040DS_config"
+UBOOT_CONFIG[nand] = "P5040DS_NAND_config,,u-boot.pbl"
+UBOOT_CONFIG[secure-boot] = "P5040DS_SECURE_BOOT_config"
+UBOOT_CONFIG[sdcard] = "P5040DS_SDCARD_config,,u-boot.pbl"
+UBOOT_CONFIG[spi] = "P5040DS_SPIFLASH_config,,u-boot.pbl"
+
+HV_CFG_M = "p5040ds"
+
+KERNEL_DEVICETREE ?= "p5040ds.dtb"
+KERNEL_DEFCONFIG ?= "corenet64_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/p5040ds.conf b/bsp/meta-freescale/conf/machine/p5040ds.conf
new file mode 100644
index 00000000..af581f49
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/p5040ds.conf
@@ -0,0 +1,28 @@
+#@TYPE: Machine
+#@NAME: NXP P5040DS
+#@SOC: p5040
+#@DESCRIPTION: Machine configuration for NXP QorIQ P5040 Development
+# System with ppce5500 core in 32b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e5500.inc
+
+MACHINEOVERRIDES =. "p5040"
+
+UBOOT_CONFIG ??= "nand secure-boot sdcard spi nor"
+UBOOT_CONFIG[nor] = "P5040DS_config"
+UBOOT_CONFIG[nand] = "P5040DS_NAND_config,,u-boot.pbl"
+UBOOT_CONFIG[secure-boot] = "P5040DS_SECURE_BOOT_config"
+UBOOT_CONFIG[sdcard] = "P5040DS_SDCARD_config,,u-boot.pbl"
+UBOOT_CONFIG[spi] = "P5040DS_SPIFLASH_config,,u-boot.pbl"
+
+HV_CFG_M = "p5040ds"
+
+KERNEL_DEVICETREE ?= "p5040ds.dtb"
+KERNEL_DEFCONFIG ?= "corenet32_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/t1024rdb-64b.conf b/bsp/meta-freescale/conf/machine/t1024rdb-64b.conf
new file mode 100644
index 00000000..490c8491
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/t1024rdb-64b.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: NXP T1024RDB
+#@SOC: t1024
+#@DESCRIPTION: Machine configuration for Freescale QorIQ T1024 Reference
+# Design Board with ppce5500 core in 64b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e5500-64b.inc
+
+MACHINEOVERRIDES =. "t1:t1024:"
+
+UBOOT_CONFIG ??= "nand sdcard spi secure-boot nor"
+UBOOT_CONFIG[nor] = "T1024RDB_config"
+UBOOT_CONFIG[nand] = "T1024RDB_NAND_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard] = "T1024RDB_SDCARD_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[spi] = "T1024RDB_SPIFLASH_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[secure-boot] = "T1024RDB_SECURE_BOOT_config"
+
+HV_CFG_M = "t1024rdb"
+
+KERNEL_DEVICETREE ?= "t1024rdb.dtb"
+KERNEL_DEFCONFIG ?= "corenet64_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+QE_UCODE ?= "iram_Type_A_T1024_r1.0.bin"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw qe-ucode"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/t1024rdb.conf b/bsp/meta-freescale/conf/machine/t1024rdb.conf
new file mode 100644
index 00000000..616ce3f1
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/t1024rdb.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: NXP T1024RDB
+#@SOC: t1024
+#@DESCRIPTION: Machine configuration for NXP QorIQ T1024 Reference
+# Design Board with ppce5500 core in 32b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e5500.inc
+
+MACHINEOVERRIDES =. "t1:t1024"
+
+UBOOT_CONFIG ??= "nand sdcard spi secure-boot nor"
+UBOOT_CONFIG[nor] = "T1024RDB_config"
+UBOOT_CONFIG[nand] = "T1024RDB_NAND_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard] = "T1024RDB_SDCARD_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[spi] = "T1024RDB_SPIFLASH_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[secure-boot] = "T1024RDB_SECURE_BOOT_config"
+
+HV_CFG_M = "t1024rdb"
+
+KERNEL_DEVICETREE ?= "t1024rdb.dtb"
+KERNEL_DEFCONFIG ?= "corenet32_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+QE_UCODE ?= "iram_Type_A_T1024_r1.0.bin"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw qe-ucode"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/t1042d4rdb-64b.conf b/bsp/meta-freescale/conf/machine/t1042d4rdb-64b.conf
new file mode 100644
index 00000000..873f206a
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/t1042d4rdb-64b.conf
@@ -0,0 +1,30 @@
+#@TYPE: Machine
+#@NAME: NXP T1042D4RDB
+#@SOC: t1042
+#@DESCRIPTION: Machine configuration for NXP QorIQ T1042D4 Reference
+# Design Board with ppce5500 core in 64b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e5500-64b.inc
+
+MACHINEOVERRIDES =. "t1:t1042:"
+
+UBOOT_CONFIG ??= "nand sdcard spi secure-boot nor"
+UBOOT_CONFIG[nor] = "T1042D4RDB_config,,u-boot.bin"
+UBOOT_CONFIG[nand] = "T1042D4RDB_NAND_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard] = "T1042D4RDB_SDCARD_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[spi] = "T1042D4RDB_SPIFLASH_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[secure-boot] = "T1042D4RDB_SECURE_BOOT_config,,u-boot.bin"
+
+HV_CFG_M = "t1040rdb"
+
+KERNEL_DEVICETREE ?= "t1042d4rdb.dtb"
+KERNEL_DEFCONFIG ?= "corenet64_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+QE_UCODE = "iram_Type_A_T1040_r1.0.bin"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw qe-ucode"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/t1042d4rdb.conf b/bsp/meta-freescale/conf/machine/t1042d4rdb.conf
new file mode 100644
index 00000000..685b7cb1
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/t1042d4rdb.conf
@@ -0,0 +1,30 @@
+#@TYPE: Machine
+#@NAME: NXP T1042D4RDB
+#@SOC: t1042
+#@DESCRIPTION: Machine configuration for NXP QorIQ T1042D4 Reference
+# Design Board with ppce5500 core in 32b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e5500.inc
+
+MACHINEOVERRIDES =. "t1:t1042:"
+
+UBOOT_CONFIG ??= "nand sdcard spi secure-boot nor"
+UBOOT_CONFIG[nor] = "T1042D4RDB_config,,u-boot.bin"
+UBOOT_CONFIG[nand] = "T1042D4RDB_NAND_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[sdcard] = "T1042D4RDB_SDCARD_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[spi] = "T1042D4RDB_SPIFLASH_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[secure-boot] = "T1042D4RDB_SECURE_BOOT_config,,u-boot.bin"
+
+HV_CFG_M = "t1040rdb"
+
+KERNEL_DEVICETREE ?= "t1042d4rdb.dtb"
+KERNEL_DEFCONFIG ?= "corenet32_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+QE_UCODE = "iram_Type_A_T1040_r1.0.bin"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw qe-ucode"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/t2080rdb-64b.conf b/bsp/meta-freescale/conf/machine/t2080rdb-64b.conf
new file mode 100644
index 00000000..c46d94cf
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/t2080rdb-64b.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: NXP T2080RDB
+#@SOC: t2080
+#@DESCRIPTION: Machine configuration for Freescale QorIQ T2080 Reference
+# Design Board with ppce6500 core in 64b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e6500-64b.inc
+
+MACHINEOVERRIDES =. "t2:t2080:"
+
+UBOOT_CONFIG ??= "sdcard spi nand srio-pcie-boot secure-boot nor"
+UBOOT_CONFIG[nor] = "T2080RDB_config"
+UBOOT_CONFIG[sdcard] = "T2080RDB_SDCARD_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[spi] = "T2080RDB_SPIFLASH_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[nand] = "T2080RDB_NAND_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[srio-pcie-boot] = "T2080RDB_SRIO_PCIE_BOOT_config"
+UBOOT_CONFIG[secure-boot] = "T2080RDB_SECURE_BOOT_config"
+
+HV_CFG_M = "t2080rdb"
+
+KERNEL_DEVICETREE ?= "t2080rdb.dtb"
+KERNEL_DEFCONFIG ?= "corenet64_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw ls2-phy"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/t2080rdb.conf b/bsp/meta-freescale/conf/machine/t2080rdb.conf
new file mode 100644
index 00000000..bfcb7689
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/t2080rdb.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: NXP T2080RDB
+#@SOC: t2080
+#@DESCRIPTION: Machine configuration for NXP QorIQ T2080 Reference
+# Design Board with ppce6500 core in 32b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e6500.inc
+
+MACHINEOVERRIDES =. "t2:t2080"
+
+UBOOT_CONFIG ??= "sdcard spi nand srio-pcie-boot secure-boot nor"
+UBOOT_CONFIG[nor] = "T2080RDB_config"
+UBOOT_CONFIG[sdcard] = "T2080RDB_SDCARD_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[spi] = "T2080RDB_SPIFLASH_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[nand] = "T2080RDB_NAND_config,,u-boot-with-spl-pbl.bin"
+UBOOT_CONFIG[srio-pcie-boot] = "T2080RDB_SRIO_PCIE_BOOT_config"
+UBOOT_CONFIG[secure-boot] = "T2080RDB_SECURE_BOOT_config"
+
+HV_CFG_M = "t2080rdb"
+
+KERNEL_DEVICETREE ?= "t2080rdb.dtb"
+KERNEL_DEFCONFIG ?= "corenet64_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw ls2-phy"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/t4240rdb-64b.conf b/bsp/meta-freescale/conf/machine/t4240rdb-64b.conf
new file mode 100644
index 00000000..0ccfce7c
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/t4240rdb-64b.conf
@@ -0,0 +1,24 @@
+#@TYPE: Machine
+#@NAME: NXP T4240RDB
+#@SOC: t4240
+#@DESCRIPTION: Machine configuration for Freescale QorIQ T4240 Reference
+# Design Board with ppce6500 core in 64b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e6500-64b.inc
+
+MACHINEOVERRIDES =. "t4:t4240:"
+
+UBOOT_CONFIG ??= "nor"
+UBOOT_CONFIG[nor] = "T4240RDB_config"
+
+HV_CFG_M = "t4240rdb"
+
+KERNEL_DEVICETREE ?= "t4240rdb.dtb"
+KERNEL_DEFCONFIG ?= "corenet64_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw ls2-phy"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/conf/machine/t4240rdb.conf b/bsp/meta-freescale/conf/machine/t4240rdb.conf
new file mode 100644
index 00000000..9f86345e
--- /dev/null
+++ b/bsp/meta-freescale/conf/machine/t4240rdb.conf
@@ -0,0 +1,24 @@
+#@TYPE: Machine
+#@NAME: NXP T4240RDB
+#@SOC: t4240
+#@DESCRIPTION: Machine configuration for NXP QorIQ T4240 Reference
+# Design Board with ppce6500 core in 32b mode
+#@MAINTAINER: Chunrong Guo <chunrong.guo@nxp.com>
+
+require conf/machine/include/e6500.inc
+
+MACHINEOVERRIDES =. "t4:t4240"
+
+UBOOT_CONFIG ??= "nor"
+UBOOT_CONFIG[nor] = "T4240RDB_config"
+
+HV_CFG_M = "t4240rdb"
+
+KERNEL_DEVICETREE ?= "t4240rdb.dtb"
+KERNEL_DEFCONFIG ?= "corenet64_smp_defconfig"
+
+JFFS2_ERASEBLOCK = "0x10000"
+
+EXTRA_IMAGEDEPENDS += "fm-ucode rcw ls2-phy"
+
+USE_VT ?= "0"
diff --git a/bsp/meta-freescale/custom-licenses/Cortina b/bsp/meta-freescale/custom-licenses/Cortina
new file mode 100644
index 00000000..a68417c5
--- /dev/null
+++ b/bsp/meta-freescale/custom-licenses/Cortina
@@ -0,0 +1,51 @@
+DEFINITIONS:“Device” is the product described in this document or document set. “Cortina” is Cortina Systems, Inc.
+“Software” is the software used with the Device, including the Application Programmable Interface (“API”). “You” are a
+customer, or potential customer, of Devices with whom Cortina has an NDA.
+LICENSE:Subject to the restrictions below, Cortina grants to You a non-exclusive, non-assignable, non-transferable,
+royalty-free copyright license to (1) copy and modify the source code of the API; (2) incorporate the API in object code
+form or as a library into Your software which is solely used with Your products (that incorporate the Devices); and (3)
+distribute to Your customer, inobject code form only, the API.
+RESTRICTIONS:The Software must be used solely in conjunction with the Devices and solely for Your internal
+evaluation, demonstration, software application development anddistribution for production purposes, either with an
+Cortina platform that contains the Device or with Your own product that incorporates the Device. Notwithstanding
+anything to the contrary, the API can be incorporated into Your software as described above and distributed to Your
+customers in object code form only. You may not distribute the Software as a stand-alone product. You shall not cause
+the incorporation, modification or distribution of the Software to become subject to any open source licenses. You will
+make reasonable efforts to discontinue the distribution of any portions of the Software that You are licensed hereunder
+to distribute upon Cortina’s release of an update, upgrade or new version of the Software. You agree that You are
+solely responsible for supporting any code which You modify, incorporate or distribute. You may not reverse-assemble,
+reverse-compile, or otherwise reverse-engineer any Software provided in binary or machine readable form.
+Distribution of the Software is also subject to the following limitations: You (i) are solely responsible to Your customers
+for any update or support obligation or other liability which may arise from the modification, incorporation, and
+distribution of the Software, (ii) do notmake any statement that Your product is“certified,” or that its performance is
+guaranteed, by Cortina, (iii) do not use Cortina's name or trademarks to market Your product without prior written
+permission, (iv) shall prohibit disassembly and reverse engineering, and (v) shall indemnify, hold harmless, and defend
+Cortina and its suppliers from and against any claims or lawsuits, including attorney's fees, that arise or result from
+Your distribution of any product.
+OWNERSHIP OF SOFTWARE AND COPYRIGHTS.The title to all copies of the Software remains with Cortina or its
+suppliers. The Software is copyrighted and protected by the laws of the United States and other countries, and
+international treaty provisions. You may not remove any copyright notices from the Software. Cortina may make
+changes to the Software, or to items referenced therein, at any timewithout notice, but is not obligated to support or
+update the Software. Except as otherwise expressly provided,Cortina grants no express or implied right under Cortina
+patents, copyrights, trademarks, or other intellectual property rights.
+DISCLAIMER OF WARRANTIES.THE SOFTWARE IS PROVIDED “AS IS” WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTY OF ANY KIND. CORTINA AND ITS SUPPLIERSHEREBY DISCLAIM ALL WARRANTIES, INCLUDING
+ANY IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR
+PURPOSE.
+LIMITATION OF LIABILITY.IN NO EVENT SHALL CORTINA OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES
+WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS, BUSINESS INTERRUPTION, OR LOST
+INFORMATION) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF CORTINA HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+TERMINATION OF THIS LICENSE.Cortina may terminate this license at any time if You violate its terms. Upon
+termination, You will immediately destroy the Software or return all copies of the Software to Cortina.
+APPLICABLE LAWS.Claims arising under this license shall be governed by the laws of the State of Delaware,
+excluding its principles of conflict of laws. The provisions of the United Nations Convention on Contracts for the
+International Sale of Goods shall not apply to this license.You shall not export, either directly or indirectly, any
+Software or derived object code without first obtaining any required license or other approval from the applicable
+governmental entity, including the U.S. Department of Commerce or any other agency or department of the United
+States Government if required. This isthe entire agreement and understanding between You and Cortina relating to
+this subject matter, and no amendments will be effective unless in a writing signed by both parties.
+GOVERNMENT RESTRICTED RIGHTS.The Software is provided with “RESTRICTED RIGHTS.” Use, duplication, or
+disclosure by the Government issubject to restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or
+its successor. Use of the Software by the Government constitutes acknowledgment of Cortina's proprietary rights
+therein. Contractor or Manufacturer is Cortina.
diff --git a/bsp/meta-freescale/custom-licenses/Freescale-Binary-EULA b/bsp/meta-freescale/custom-licenses/Freescale-Binary-EULA
new file mode 100644
index 00000000..fa1d33c0
--- /dev/null
+++ b/bsp/meta-freescale/custom-licenses/Freescale-Binary-EULA
@@ -0,0 +1,115 @@
+Copyright © 2016, Freescale Semiconductor, Inc. All rights reserved.
+
+Software License Agreement (“Agreement”)
+
+ANY USE, REPRODUCTION, OR DISTRIBUTION OF THE ACCOMPANYING BINARY SOFTWARE
+CONSTITUTES LICENSEE'S ACCEPTANCE OF THE TERMS AND CONDITIONS OF THIS
+AGREEMENT.
+
+Licensed Software. “Binary Software” means software in binary form specified in
+ANNEX A Subject to the terms and conditions of this Agreement, Freescale
+Semiconductor, Inc., a 100% affiliated company of NXP Semiconductors N.V.
+which will be renamed in due course ("NXP"), grants to Licensee a worldwide,
+non-exclusive, and royalty-free license to use, reproduce, and distribute the
+Binary Software in its complete and unmodified binary form as provided by NXP.
+
+Restrictions. Licensee must reproduce the NXP copyright notice above with each
+binary copy of the Binary Software. Licensee must not reverse engineer,
+decompile, disassemble or modify in any way the Binary Software. Licensee must
+not use the Binary Software in violation of any applicable law or regulation.
+This Agreement shall automatically terminate upon Licensee's breach of any
+term or condition of this Agreement in which case, Licensee shall destroy all
+copies of the Binary Software.
+
+Warranty Disclaimer. TO THE MAXIMUM EXTENT PERMITTED BY LAW, NXP EXPRESSLY
+DISCLAIMS ANY WARRANTY FOR THE BINARY SOFTWARE. THE BINARY SOFTWARE IS
+PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
+INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. LICENSEE ASSUMES THE
+ENTIRE RISK ARISING OUT OF THE USE OR PERFORMANCE OF THE BINARY SOFTWARE, OR
+ANY SYSTEMS LICENSEE DESIGNS USING THE BINARY SOFTWARE (IF ANY). WITHOUT
+LIMITING THE GENERALITY OF THE FOREGOING, NXP DOES NOT WARRANT THAT THE BINARY
+SOFTWARE IS ERROR-FREE OR WILL OPERATE WITHOUT INTERRUPTION, AND NXP GRANTS NO
+WARRANTY REGARDING ITS USE OR THE RESULTS THEREFROM, INCLUDING ITS CORRECTNESS,
+ACCURACY, OR RELIABILITY.
+
+Limitation of Liability. IN NO EVENT WILL NXP, OR ANY OF NXP'S LICENSORS HAVE
+ANY LIABILITY HEREUNDER FOR ANY INDIRECT, SPECIAL, OR
+CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+FOR BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, ARISING OUT
+OF THIS AGREEMENT, INCLUDING DAMAGES FOR LOSS OF PROFITS, OR THE COST OF
+PROCUREMENT OF SUBSTITUTE GOODS, EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES. NXP’S TOTAL LIABILITY FOR ALL COSTS, DAMAGES,
+CLAIMS, OR LOSSES WHATSOEVER ARISING OUT OF OR IN CONNECTION WITH THIS
+AGREEMENT OR THE BINARY SOFTWARE SUPPLIED UNDER THIS AGREEMENT IS LIMITED TO
+THE AGGREGATE AMOUNT PAID BY LICENSEE TO NXP IN CONNECTION WITH THE BINARY
+SOFTWARE TO WHICH LOSSES OR DAMAGES ARE CLAIMED.
+
+Trade Compliance. Licensee shall comply with all applicable export and import
+control laws and regulations including but not limited to the US Export
+Administration Regulation (including prohibited party lists issued by other
+federal governments), Catch-all regulations and all national and international
+embargoes. Licensee will not knowingly transfer, divert, export or re-export,
+directly or indirectly, any product, software, including software source code,
+or technology restricted by such regulations or by other applicable national
+regulations, received from the other party under this Agreement, or any direct
+product of such software or technical data to any person, firm, entity, country
+or destination to which such transfer, diversion, export or re-export is
+restricted or prohibited, without obtaining prior written authorization from
+the applicable competent government authorities to the extent required by those
+laws.
+
+Restrictions, Warranty Disclaimer, Limitation of Liability, Trade Compliance,
+and Governing Law shall survive termination or expiration of this Agreement.
+
+Governing Law. This Agreement will be governed by, construed, and enforced in
+accordance with the laws of the State of Texas, USA, without regard to
+conflicts of laws principles, will apply to all matters relating to this
+Agreement or the binary software, and Licensee agrees that any litigation will
+be subject to the exclusive jurisdiction of the state or federal courts Texas,
+USA. The United Nations Convention on Contracts for the International Sale of
+Goods will not apply to this Agreement.
+Licensed software includes the following 3d party software for which the
+following terms apply.
+Libfdt - Flat Device Tree manipulation
+Copyright © 2006 David Gibson, IBM Corporation
+All rights reserved.
+Redistributions must reproduce the above copyright notice, this list of
+conditions and the following disclaimer in the documentation and/or other
+materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+LibElf
+Copyright © 2006,2008-2011 Joseph Koshy
+All rights reserved.
+Redistributions must reproduce the above copyright notice, this list of
+conditions and the following disclaimer in the documentation and/or other
+materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ 
+ANNEX A
+BINARY SOFTWARE
+Only software in binary form may be provided under this Agreement
+Here is a list of software covered by this Agreement:
+MC binary firmware
diff --git a/bsp/meta-freescale/custom-licenses/Freescale-EULA b/bsp/meta-freescale/custom-licenses/Freescale-EULA
new file mode 100644
index 00000000..2122a1fd
--- /dev/null
+++ b/bsp/meta-freescale/custom-licenses/Freescale-EULA
@@ -0,0 +1,214 @@
+IMPORTANT. Read the following Freescale Software License Agreement ("Agreement")
+completely. By selecting the "I Accept" button at the end of this page, you
+indicate that you accept the terms of the Freescale Proprietary Software License
+Agreement and you also acknowledge that you have the authority, on behalf of your
+company, to bind your company to such terms. You may then download or install the
+file.
+
+FREESCALE PROPRIETARY SOFTWARE LICENSE AGREEMENT
+This is a license agreement ("Agreement") between you (either as an individual
+or as an authorized representative acting on behalf of your employer) and Freescale
+Semiconductor, Inc. ("Freescale"). It concerns your rights to use the software
+provided to you in binary or source code form and any accompanying written materials
+(the "Software"). The Software may include any updates or error corrections or
+documentation relating to the Software provided to you by Freescale under this
+License. In consideration for Freescale allowing you to access the Software, you are
+agreeing to be bound by the terms of this Agreement. If you do not agree to all of
+the terms of this Agreement, do not download or install the Software. If you change
+your mind later, stop using the Software and delete all copies of the Software in
+your possession or control. Any copies of the Software that you have already
+distributed, where permitted, and do not destroy will continue to be governed by
+this Agreement. Your prior use will also continue to be governed by this Agreement.
+
+1. LICENSE GRANT. Freescale grants to you, free of charge, the non-exclusive,
+non-transferable, non-sublicensable right (1) to use the Software, (2) to reproduce
+the Software, (3) to prepare derivative works of the Software, (4) to distribute the
+Software and derivative works thereof in object (machine-readable) form as part of
+a programmable processing unit (e.g. a microprocessor, microcontroller, or digital
+signal processor) supplied directly or indirectly from Freescale ("Freescale
+System") and (5) to sublicense to others the right to use the distributed Software,
+provided that any and all such sublicenses include the same terms and conditions of
+this Agreement. Notwithstanding the limitation on damages in Section 8, Licensee
+will indemnify, defend, and hold harmless Freescale against any and all claims,
+costs, damages, liabilities, judgments and attorneys' fees resulting from or
+arising out of any breach by the sublicensee, or resulting from or arising out of
+any action by the sublicensee inconsistent with this Agreement.
+You must notify Freescale, in writing, any time you create a derivative of the
+Software. Freescale owns all derivatives created from the Software, and derivatives
+are licensed to you under the same terms as the Software under this Agreement. Upon
+request, you must provide Freescale the source code of any derivative of the Software.
+If you violate any of the terms or restrictions of this Agreement, Freescale may
+immediately terminate this Agreement, and require that you stop using and delete all
+copies of the Software and any derivative in your possession or control. Any license
+granted above only extends to Freescale's intellectual property rights that would
+be necessarily infringed by the Software as provided to you by Freescale and as used
+within the scope of the licenses granted. You must advise Freescale of any results
+obtained including any problems or suggested improvements thereof. Freescale retains
+the right to use such results and related information in any manner it deems
+appropriate.
+
+2. OTHER RESTRICTIONS. Subject to the license grant above, the following restrictions
+ apply:
+
+a. Freescale reserves all rights not expressly granted herein.
+b. You may not rent, lease, sublicense, lend or encumber the Software, unless
+ otherwise expressly agreed to within this Agreement
+c. You may not distribute, manufacture, have manufactured, sublicense or otherwise
+ reproduce the Software for purposes other than intended in this Agreement.
+d. You may not remove or alter any proprietary legends, notices, or trademarks
+ contained in the Licensed Software,
+e. The terms and conditions of this Agreement will apply to any Software updates,
+ provided to you at Freescale's discretion, that replace and/or supplement the
+ original Software, unless such update contains a separate license.
+f. You may not translate, reverse engineer, decompile, or disassemble the Software
+ provided to you solely in object code format (machine readable) except to the
+ extent applicable law specifically prohibits such restriction. You will prohibit
+ your sublicensees from translating, reverse engineering, decompiling, or
+ disassembling the Software except to the extent applicable law specifically
+ prohibits such restriction.
+
+3. OPEN SOURCE. You are about to download or install certain software that is
+subject to various open source licenses such as the Apache License, the BSD license,
+the Free Software Foundation General Public License and Lesser General Public
+License, the Mozilla Public License and others. Your use of such open source
+software is subject to the terms of each applicable license. You must agree to the
+terms of each such applicable license, or you should not use the open source software.
+Any open source license that is incompatible with the terms of this Agreement
+supersedes the terms of this Agreement.
+
+4. COPYRIGHT. The Software is licensed to you, not sold. Freescale owns the
+Software, and United States copyright laws and international treaty provisions
+protect the Software. Therefore, you must treat the Software like any other
+copyrighted material (e.g. a book or musical recording). You may not use or
+copy the Software for any other purpose than what is described in this Agreement.
+Except as expressly provided herein, Freescale does not grant to you any express or
+implied rights under any Freescale or third party patents, copyrights, trademarks,
+or trade secrets. Additionally, you must reproduce and apply any copyright or other
+proprietary rights notices included on or embedded in the Software to any copies
+made thereof, in whole or in part, if any. You may not remove any copyright
+notices of Freescale incorporated in the Software.
+
+5. TERM AND TERMINATION. The term of this Agreement shall commence on the date
+of installation or download and shall continue perpetually, unless earlier
+terminated in accordance with this Agreement. Freescale has the right to terminate
+this Agreement without notice and require that you stop using and delete all copies
+of the Software in your possession or control if you violate any of the terms or
+restrictions of this Agreement. Freescale may terminate this Agreement should any
+of the Software become, or in Freescale's reasonable opinion is likely to become,
+the subject of a claim of intellectual infringement or trade secret misappropriation.
+Upon termination, you must cease use of and destroy, the Software and confirm
+compliance in writing to Freescale. Upon termination, the license granted pursuant
+to this Agreement immediately terminates and the provisions of Sections 4 through
+18 will survive any termination of this Agreement.
+
+6. SUPPORT. Freescale is NOT obligated to provide any support, upgrades or new
+releases of the Software. If you wish, you may contact Freescale and report problems
+and provide suggestions regarding the Software. Freescale has no obligation
+whatsoever to respond in any way to such a problem report or suggestion. Freescale
+may make changes to the Software at any time, without any obligation to notify or
+provide updated versions of the Software to you.
+
+7. NO WARRANTY. TO THE MAXIMUM EXTENT PERMITTED BY LAW, FREESCALE EXPRESSLY
+DISCLAIMS ANY WARRANTY FOR THE SOFTWARE. THE SOFTWARE IS PROVIDED "AS IS",
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT
+LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE, OR NON-INFRINGEMENT. YOU ASSUME THE ENTIRE RISK ARISING OUT OF THE USE
+OR PERFORMANCE OF THE SOFTWARE, OR ANY SYSTEMS YOU DESIGN USING THE SOFTWARE (IF
+ANY). NOTHING IN THIS AGREEMENT MAY BE CONSTRUED AS A WARRANTY OR REPRESENTATION
+BY FREESCALE THAT THE SOFTWARE OR ANY DERIVATIVE WORK DEVELOPED WITH OR INCORPORATING
+THE SOFTWARE WILL BE FREE FROM INFRINGEMENT OF THE INTELLECTUAL PROPERTY RIGHTS OF
+THIRD PARTIES.
+
+8. INDEMNITY. You agree to fully defend and indemnify Freescale from any and all
+claims, liabilities, and costs (including reasonable attorney's fees) related to
+(1) your use (including your sublicensee's use, if permitted) of the Software or
+(2) your violation of the terms and conditions of this Agreement.
+
+9. LIMITATION OF LIABILITY. IN NO EVENT WILL FREESCALE BE LIABLE, WHETHER IN
+CONTRACT, TORT, OR OTHERWISE, FOR ANY INCIDENTAL, SPECIAL, INDIRECT, CONSEQUENTIAL
+OR PUNITIVE DAMAGES, INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR ANY LOSS OF USE,
+LOSS OF TIME, INCONVENIENCE, COMMERCIAL LOSS, OR LOST PROFITS, SAVINGS, OR REVENUES
+TO THE FULL EXTENT SUCH MAY BE DISCLAIMED BY LAW EVEN IF INFORMED IN ADVANCE OF THE
+POSSIBILITY OF SUCH DAMAGES. FREESCALE'S LIABILITY WILL IN ANY EVENT AND UNDER ANY
+THEORY OF RECOVERY BE LIMITED TO THE TOTAL AMOUNT RECEIVED BY FREESCALE UNDER THIS
+AGREEMENT.
+
+10. COMPLIANCE WITH LAWS; EXPORT RESTRICTIONS. You must not resell, re-export, or
+provide, directly or indirectly, the licensed software or direct product thereof,
+in any form without obtaining appropriate export or re-export licenses from the
+United States Government and from the country from which the export or re-export
+is to occur. An export occurs when products, technology, or software is transferred
+from one country to another by any means, including physical shipments, FTP file
+transfers, E-mails, faxes, remote server access, conversations, and the like. An
+export also occurs when technology or software is transferred to a foreign national
+in the United States, or foreign national of the country in which the business
+activity is taking place. A foreign national is any person who is neither a citizen
+nor permanent resident of the United States, or the country in which the business
+activity is taking place. Furthermore, if an export/import license, permit or other
+government required authority (collectively referred to as "government
+authorization") is required to transfer technology, software, hardware or other
+Freescale property to non- Freescale party(ies) and is not approved, then Freescale
+is not obligated to transfer the Software under this Agreement until such
+"government authorization" is granted..
+
+11. GOVERNMENT RIGHTS. The Licensed Software is a "Commercial Item as defined in
+48 C.F.R. $2.101, consisting of "Commercial Computer Software" and "Commercial
+Computer Software Documentation," as such terms are used in 48 C.F.R. $ 12.212 or
+48 C.F.R. $227.7202, as applicable and are only licensed to U.S. Government end
+users with the rights as are set forth herein..
+
+12. HIGH RISK ACTIVITIES. You acknowledge that the Software is not fault tolerant
+and is not designed, manufactured or intended by Freescale for incorporation into
+products intended for use or resale in on-line control equipment in hazardous,
+dangerous to life or potentially life-threatening environments requiring fail-safe
+ performance, such as in the operation of nuclear facilities, aircraft navigation
+ or communication systems, air traffic control, direct life support machines or
+weapons systems, in which the failure of products could lead directly to death,
+personal injury or severe physical or environmental damage ("High Risk Activities").
+ You specifically represent and warrant that you will not use the Software or any
+derivative work of the Software for High Risk Activities.
+
+13. CHOICE OF LAW; VENUE; LIMITATIONS. You agree that the statutes and laws of the
+United States and the State of Texas, USA, without regard to conflicts of laws
+principles, will apply to all matters relating to this Agreement or the Software,
+and you agree that any litigation will be subject to the exclusive jurisdiction of
+the state or federal courts in Texas, USA. You agree that regardless of any
+statute or law to the contrary, any claim or cause of action arising out of or
+related to this Agreement or the Software must be filed within one (1) year after
+such claim or cause of action arose or be forever barred.
+
+14. CONFIDENTIAL INFORMATION. You must treat the Software as confidential
+information and you agree to retain the Software in confidence perpetually, with
+respect to Software in source code form (human readable), or for a period of five
+(5) years from the date of termination of this Agreement, with respect to all other
+parts of the Software. During this period you may not disclose any part of the
+Software to anyone other than employees who have a need to know of the Software and
+ who have executed written agreements obligating them to protect such Licensed
+Software to at least the same degree of care as in this Agreement. You agree to use
+ the same degree of care, but no less than a reasonable degree of care, with the
+Software as you do with your own confidential information. You may disclose Software
+ to the extent required by a court or under operation of law or order provided that
+ you notify Freescale of such requirement prior to disclosure, which you only
+disclose information required, and that you allow Freescale the opportunity to
+object to such court or other legal body requiring such disclosure.
+
+15. PRODUCT LABELING. You are not authorized to use any Freescale trademarks,
+brand names, or logos.
+
+16. ENTIRE AGREEMENT. This Agreement constitutes the entire agreement between you
+and Freescale regarding the subject matter of this Agreement, and supersedes all
+prior communications, negotiations, understandings, agreements or representations,
+either written or oral, if any. This Agreement may only be amended in written form,
+executed by you and Freescale.
+
+17. SEVERABILITY. If any provision of this Agreement is held for any reason to be
+invalid or unenforceable, then the remaining provisions of this Agreement will be
+unimpaired and, unless a modification or replacement of the invalid or unenforceable
+provision is further held to deprive you or Freescale of a material benefit, in
+which case the Agreement will immediately terminate, the invalid or unenforceable
+provision will be replaced with a provision that is valid and enforceable and that
+comes closest to the intention underlying the invalid or unenforceable provision.
+
+18. NO WAIVER. The waiver by Freescale of any breach of any provision of this
+Agreement will not operate or be construed as a waiver of any other or a subsequent
+breach of the same or a different provision.
diff --git a/bsp/meta-freescale/custom-licenses/NXP-Binary-EULA b/bsp/meta-freescale/custom-licenses/NXP-Binary-EULA
new file mode 100644
index 00000000..4d028a26
--- /dev/null
+++ b/bsp/meta-freescale/custom-licenses/NXP-Binary-EULA
@@ -0,0 +1,81 @@
+Copyright © 2017 NXP. All rights reserved.
+
+Software License Agreement (“Agreement”)
+
+ANY USE, REPRODUCTION, OR DISTRIBUTION OF THE ACCOMPANYING BINARY SOFTWARE
+CONSTITUTES LICENSEE'S ACCEPTANCE OF THE TERMS AND CONDITIONS OF THIS AGREEMENT.
+
+Licensed Software. “Binary Software” means software in binary form specified in
+ANNEX A Subject to the terms and conditions of this Agreement, NXP USA, Inc.
+("NXP"), grants to Licensee a worldwide, non-exclusive, and royalty-free license
+ to use, reproduce, and distribute the Binary Software in its complete and
+ unmodified binary form as provided by NXP.
+
+Restrictions. Licensee must reproduce the NXP copyright notice above with each
+binary copy of the Binary Software. Licensee must not reverse engineer,
+decompile, disassemble or modify in any way the Binary Software. Licensee must
+not use the Binary Software in violation of any applicable law or regulation.
+This Agreement shall automatically terminate upon Licensee's breach of any
+term or condition of this Agreement in which case, Licensee shall destroy all
+copies of the Binary Boftware.
+
+Warranty Disclaimer. TO THE MAXIMUM EXTENT PERMITTED BY LAW, NXP EXPRESSLY
+DISCLAIMS ANY WARRANTY FOR THE BINARY SOFTWARE. THE BINARY SOFTWARE IS PROVIDED
+“AS IS”, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE, OR NON-INFRINGEMENT. LICENSEE ASSUMES THE ENTIRE RISK
+ARISING OUT OF THE USE OR PERFORMANCE OF THE BINARY SOFTWARE, OR ANY SYSTEMS
+LICENSEE DESIGNS USING THE BINARY SOFTWARE (IF ANY). WITHOUT LIMITING THE
+GENERALITY OF THE FOREGOING, NXP DOES NOT WARRANT THAT THE BINARY SOFTWARE IS
+ERROR-FREE OR WILL OPERATE WITHOUT INTERRUPTION, AND NXP GRANTS NO WARRANTY
+REGARDING ITS USE OR THE RESULTS THEREFROM, INCLUDING ITS CORRECTNESS, ACCURACY,
+OR RELIABILITY.
+
+Limitation of Liability. IN NO EVENT WILL NXP, OR ANY OF NXP'S LICENSORS HAVE
+ANY LIABILITY HEREUNDER FOR ANY INDIRECT, SPECIAL, OR CONSEQUENTIAL DAMAGES,
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER FOR BREACH OF CONTRACT,
+TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, ARISING OUT OF THIS AGREEMENT,
+INCLUDING DAMAGES FOR LOSS OF PROFITS, OR THE COST OF PROCUREMENT OF SUBSTITUTE
+GOODS, EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+NXP’S TOTAL LIABILITY FOR ALL COSTS, DAMAGES, CLAIMS, OR LOSSES WHATSOEVER
+ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT OR THE BINARY SOFTWARE
+SUPPLIED UNDER THIS AGREEMENT IS LIMITED TO THE AGGREGATE AMOUNT PAID BY
+LICENSEE TO NXP IN CONNECTION WITH THE BINARY SOFTWARE TO WHICH LOSSES OR
+DAMAGES ARE CLAIMED.
+
+Trade Compliance. Licensee shall comply with all applicable export and import
+control laws and regulations including but not limited to the US Export
+Administration Regulation (including prohibited party lists issued by other
+federal governments), Catch-all regulations and all national and international
+embargoes. Licensee will not knowingly transfer, divert, export or re-export,
+directly or indirectly, any product, software, including software source code,
+or technology restricted by such regulations or by other applicable national
+regulations, received from the other party under this Agreement, or any direct
+product of such software or technical data to any person, firm, entity, country
+or destination to which such transfer, diversion, export or re-export is
+restricted or prohibited, without obtaining prior written authorization from the
+applicable competent government authorities to the extent required by those
+laws.
+
+Assignment. Licensee may not assign this Agreement without the prior written
+consent of NXP. NXP may assign this Agreement without Licensee’s consent.
+
+Governing Law. This Agreement will be governed by, construed, and enforced in
+accordance with the laws of the State of Texas, USA, without regard to conflicts
+of laws principles, will apply to all matters relating to this Agreement or the
+binary software, and Licensee agrees that any litigation will be subject to the
+exclusive jurisdiction of the state or federal courts Texas, USA. The United
+Nations Convention on Contracts for the International Sale of Goods will not
+apply to this Agreement.
+Restrictions, Warranty Disclaimer, Limitation of Liability, Trade Compliance,
+Assignment, and Governing Law shall survive termination or expiration of this
+Agreement.
+
+
+ 
+ANNEX A
+BINARY SOFTWARE
+Only software in binary form may be provided under this Agreement
+
+Here is a list of software covered by this Agreement:
+RCW binaries
diff --git a/bsp/meta-freescale/custom-licenses/TestFloat b/bsp/meta-freescale/custom-licenses/TestFloat
new file mode 100644
index 00000000..1a1a23fe
--- /dev/null
+++ b/bsp/meta-freescale/custom-licenses/TestFloat
@@ -0,0 +1,24 @@
+Written by John R. Hauser. This work was made possible in part by the
+International Computer Science Institute, located at Suite 600, 1947 Center
+Street, Berkeley, California 94704. Funding was partially provided by the
+National Science Foundation under grant MIP-9311980. The original version
+of this code was written as part of a project to build a fixed-point vector
+processor in collaboration with the University of California at Berkeley,
+overseen by Profs. Nelson Morgan and John Wawrzynek. More information
+is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
+arithmetic/SoftFloat.html'.
+
+THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
+been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
+RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
+AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
+COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
+EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
+INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
+OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
+
+Derivative works are acceptable, even for commercial purposes, so long as
+(1) the source code for the derivative work includes prominent notice that
+the work is derivative, and (2) the source code includes prominent notice with
+these four paragraphs for those parts of this code that are retained.
+
diff --git a/bsp/meta-freescale/dynamic-layers/browser-layer/recipes-browser/chromium/chromium-imx.inc b/bsp/meta-freescale/dynamic-layers/browser-layer/recipes-browser/chromium/chromium-imx.inc
new file mode 100644
index 00000000..cdd0f08f
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/browser-layer/recipes-browser/chromium/chromium-imx.inc
@@ -0,0 +1,44 @@
+DEPENDS_append_imxvpu = " imx-vpuwrap"
+
+# Additional imx code and patches are included in the chromium-imx git repository.
+# The code below fetches this repository, copies the extra source over to the main
+# chromium source directory, and applies the patches.
+
+CHROMIUM_IMX_BRANCH ?= "master"
+CHROMIUM_IMX_SRCREV ?= "HEAD"
+CHROMIUM_IMX_DESTSUFFIX ?= "chromium-imx-git"
+
+PATCH_BASE_DIR = "${WORKDIR}/${CHROMIUM_IMX_DESTSUFFIX}/patches"
+
+CHROMIUM_IMX_COMMON_PATCHES ?= " "
+CHROMIUM_IMX_VPU_PATCHES ?= " "
+CHROMIUM_IMX_WAYLAND_PATCHES ?= " "
+
+SRC_URI += "git://github.com/Freescale/chromium-imx.git;destsuffix=${CHROMIUM_IMX_DESTSUFFIX};branch=${CHROMIUM_IMX_BRANCH};rev=${CHROMIUM_IMX_SRCREV}"
+
+do_unpack[postfuncs] += "copy_chromium_imx_files"
+# using =+ instead of += to make sure add_chromium_imx_patches is
+# executed before add_ozone_wayland_patches in the main recipe;
+# this is necessary because add_chromium_imx_patches appends
+# patches to the OZONE_WAYLAND_EXTRA_PATCHES variable
+do_patch[prefuncs] =+ "add_chromium_imx_patches"
+
+# * Lost context problems are not known to happen with Vivante GPUs,
+# so it is safe to use ignore-lost-context
+# * Proprietary codecs need to be enabled for h.264 and MP4 support
+PACKAGECONFIG_append = " ignore-lost-context proprietary-codecs"
+
+copy_chromium_imx_files() {
+ # sources in src/ are already organized in a manner
+ # that matches the subdirectories in the chromium
+ # source directory; just copy over the files in src/
+ cp -r ${WORKDIR}/chromium-imx-git/src/* ${S}/
+}
+
+python add_chromium_imx_patches() {
+ d.appendVar('SRC_URI', ' ' + d.getVar('CHROMIUM_IMX_COMMON_PATCHES', 1))
+ d.appendVar('SRC_URI', ' ' + d.getVar('CHROMIUM_IMX_VPU_PATCHES', 1))
+ d.appendVar('OZONE_WAYLAND_EXTRA_PATCHES', ' ' + d.getVar('CHROMIUM_IMX_WAYLAND_PATCHES', 1))
+}
+
+COMPATIBLE_MACHINE = "(mx6)"
diff --git a/bsp/meta-freescale/dynamic-layers/browser-layer/recipes-browser/chromium/chromium/chromium.patch b/bsp/meta-freescale/dynamic-layers/browser-layer/recipes-browser/chromium/chromium/chromium.patch
new file mode 100644
index 00000000..0329d42e
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/browser-layer/recipes-browser/chromium/chromium/chromium.patch
@@ -0,0 +1,51 @@
+diff -Naur chromium-48.0.2548.0_org/third_party/libva/va/va_dec_jpeg.h chromium-48.0.2548.0/third_party/libva/va/va_dec_jpeg.h
+--- chromium-48.0.2548.0_org/third_party/libva/va/va_dec_jpeg.h 2016-05-27 11:45:31.248306710 -0500
++++ chromium-48.0.2548.0/third_party/libva/va/va_dec_jpeg.h 2016-05-27 11:49:53.000000000 -0500
+@@ -36,7 +36,7 @@
+ extern "C" {
+ #endif
+
+-#include <va/va.h>
++#include <libva/va/va.h>
+
+ /**
+ * \defgroup api_dec_jpeg JPEG decoding API
+diff -Naur chromium-48.0.2548.0_org/third_party/libva/va/va.h chromium-48.0.2548.0/third_party/libva/va/va.h
+--- chromium-48.0.2548.0_org/third_party/libva/va/va.h 2016-05-27 11:45:31.248306710 -0500
++++ chromium-48.0.2548.0/third_party/libva/va/va.h 2016-05-27 11:49:16.000000000 -0500
+@@ -80,7 +80,7 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
+-#include <va/va_version.h>
++#include <libva/va/va_version.h>
+
+ #ifdef __cplusplus
+ extern "C" {
+@@ -2836,16 +2836,16 @@
+ */
+ #define VA_PICTURE_HEVC_RPS_LT_CURR 0x00000040
+
+-#include <va/va_dec_hevc.h>
+-#include <va/va_dec_jpeg.h>
+-#include <va/va_dec_vp8.h>
+-#include <va/va_dec_vp9.h>
+-#include <va/va_enc_hevc.h>
+-#include <va/va_enc_h264.h>
+-#include <va/va_enc_jpeg.h>
+-#include <va/va_enc_mpeg2.h>
+-#include <va/va_enc_vp8.h>
+-#include <va/va_vpp.h>
++#include <libva/va/va_dec_hevc.h>
++#include <libva/va/va_dec_jpeg.h>
++#include <libva/va/va_dec_vp8.h>
++#include <libva/va/va_dec_vp9.h>
++#include <libva/va/va_enc_hevc.h>
++#include <libva/va/va_enc_h264.h>
++#include <libva/va/va_enc_jpeg.h>
++#include <libva/va/va_enc_mpeg2.h>
++#include <libva/va/va_enc_vp8.h>
++#include <libva/va/va_vpp.h>
+
+ /**@}*/
+
diff --git a/bsp/meta-freescale/dynamic-layers/filesystem-layer/recipes-fsl/packagegroups/packagegroup-fsl-mfgtool.bbappend b/bsp/meta-freescale/dynamic-layers/filesystem-layer/recipes-fsl/packagegroups/packagegroup-fsl-mfgtool.bbappend
new file mode 100644
index 00000000..1080a9f5
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/filesystem-layer/recipes-fsl/packagegroups/packagegroup-fsl-mfgtool.bbappend
@@ -0,0 +1,10 @@
+# Copyright (C) 2015 O.S. Systems Software LTDA.
+
+PACKAGES += " \
+ ${PN}-f2fs \
+"
+
+RDEPENDS_${PN}-f2fs = " \
+ ${PN}-base \
+ f2fs-tools \
+"
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/README b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/README
new file mode 100644
index 00000000..9578982d
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/README
@@ -0,0 +1,77 @@
+test_setkey script usage
+
+The scripts in this directory may be used for testing
+native Linux IPsec with the talitos driver as a loadable module.
+
+It's assumed that these scripts have been placed in the directory
+named /test_setkey.
+
+The scripts setup_left and setup_right configure the ip addresses
+for two boards named 'left' and 'right', which are two gateways for
+an IPsec tunnel. Connect the eth1 interfaces of left and right boards together.
+For smartbits testing, connect eth0 on each board to a smartbits port.
+For other testing (ping, netperf, iperf), connect eth0 on each board to another system.
+
+The scripts named left.conf-* and right.conf-* are setkey scripts
+which configure the IPsec SA and SPD entries.
+The scripts ending in -tunnel use tunnel mode IPsec, and the scripts
+ending in -transport used transport mode IPsec.
+Transport mode is useful for quickly testing security functionality
+using ping or netperf between two boards.
+Tunnel mode can be used for testing throughput using smartbits or other
+performance test equipment.
+
+There is a top level script called 'setup' which
+is used for a one-step setup on the left and right boards.
+'setup' uses two or three parameters. The first parameter is the side, left or right.
+The second parameter is the setkey suffix for the left.conf- and right.conf- files.
+If the third parameter is supplied, the setup will modprobe that name, so
+typically you should provide talitos as the third parameter if you want to load the driver.
+If you have built the talitos driver into the kernel, omit the third parameter to setup.
+You may test software encryption if talitos is built as a module and you omit the third parameter.
+
+Below are example uses of the 'setup' script.
+
+1) One-step setup for smartbits
+ Use a tunnel mode setup on each side.
+ AES-HMAC-SHA1:
+ Left side:
+ /test_setkey/setup left aes-sha1-tunnel talitos
+ Right side:
+ /test_setkey/setup right aes-sha1-tunnel talitos
+
+ 3DES-HMAC-SHA1:
+ Left side:
+ /test_setkey/setup left 3des-sha1-tunnel talitos
+ Right side:
+ /test_setkey/setup right 3des-sha1-tunnel talitos
+
+2) One-step setup for testing ping, netperf, or iperf between two boards.
+ Use a transport mode setup on each side.
+ AES-HMAC-SHA1:
+ Left side:
+ /test_setkey/setup left aes-sha1-transport talitos
+ Right side:
+ /test_setkey/setup right aes-sha1-transport talitos
+
+ 3DES-HMAC-SHA1:
+ Left side:
+ /test_setkey/setup left 3des-sha1-transport talitos
+ Right side:
+ /test_setkey/setup right 3des-sha1-transport talitos
+
+3) Testing ipv4
+ To test ipv4 (with no security) over the two gateways, use steps below.
+ Testing ipv4 is helpful to get your smartbits configuration verified
+ and also establish a baseline performance for throughput.
+
+ On the left board:
+ cd /test_setkey
+ ./setup_left
+ ./left.ipv4
+
+ On the right board:
+ cd /test_setkey
+ ./setup_right
+ ./right.ipv4
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/auto_left.conf-3des-sha1-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/auto_left.conf-3des-sha1-tunnel
new file mode 100755
index 00000000..6bd6c5d8
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/auto_left.conf-3des-sha1-tunnel
@@ -0,0 +1,32 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway A (eth0:192.168.1.130, eth1:200.200.200.10)
+#
+# Security policies
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/auto_right.conf-3des-sha1-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/auto_right.conf-3des-sha1-tunnel
new file mode 100755
index 00000000..eebf307a
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/auto_right.conf-3des-sha1-tunnel
@@ -0,0 +1,31 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board B setup
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway B (eth0:192.168.2.130, eth1:200.200.200.20)
+#
+# Security policies
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/flush-setkey b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/flush-setkey
new file mode 100755
index 00000000..0be30562
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/flush-setkey
@@ -0,0 +1,4 @@
+#!/usr/sbin/setkey -f
+
+flush;
+spdflush;
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.conf.left b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.conf.left
new file mode 100644
index 00000000..d9d6c0c6
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.conf.left
@@ -0,0 +1,29 @@
+# /etc/ipsec.conf - strongSwan IPsec configuration file
+
+config setup
+ charondebug="chd 2, knl 2"
+ crlcheckinterval=180
+ strictcrlpolicy=no
+ plutostart=no
+
+conn %default
+ ikelifetime=60m
+ keylife=20m
+ rekeymargin=3m
+ keyingtries=1
+ keyexchange=ikev2
+ type=tunnel
+ auth=esp
+ compress=no
+ mobike=no
+
+conn net-net
+ left=200.200.200.10
+ leftsubnet=192.168.1.0/24
+ leftcert=moonCert.pem
+ leftid="C=CH, O=Linux strongSwan, CN=moon.strongswan.org"
+ leftfirewall=yes
+ right=200.200.200.20
+ rightsubnet=192.168.2.0/24
+ rightid="C=CH, O=Linux strongSwan, CN=sun.strongswan.org"
+ auto=add
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.conf.right b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.conf.right
new file mode 100644
index 00000000..c14dee2b
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.conf.right
@@ -0,0 +1,28 @@
+# /etc/ipsec.conf - strongSwan IPsec configuration file
+
+config setup
+ charondebug="chd 2, knl 2"
+ crlcheckinterval=180
+ strictcrlpolicy=no
+ plutostart=no
+
+conn %default
+ ikelifetime=60m
+ keylife=20m
+ rekeymargin=3m
+ keyingtries=1
+ keyexchange=ikev2
+ auth=esp
+ compress=no
+ mobike=no
+
+conn net-net
+ left=200.200.200.20
+ leftcert=sunCert.pem
+ leftid="C=CH, O=Linux strongSwan, CN=sun.strongswan.org"
+ leftsubnet=192.168.2.0/24
+ leftfirewall=yes
+ right=200.200.200.10
+ rightid="C=CH, O=Linux strongSwan, CN=moon.strongswan.org"
+ rightsubnet=192.168.1.0/24
+ auto=add
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.secrets.left b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.secrets.left
new file mode 100644
index 00000000..e86d6aa5
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.secrets.left
@@ -0,0 +1,3 @@
+# /etc/ipsec.secrets - strongSwan IPsec secrets file
+
+: RSA moonKey.pem
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.secrets.right b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.secrets.right
new file mode 100644
index 00000000..1095b74c
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec.secrets.right
@@ -0,0 +1,8 @@
+# /etc/ipsec.secrets - strongSwan IPsec secrets file
+
+: RSA sunKey.pem
+
+
+
+
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec_ikev1.conf.left b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec_ikev1.conf.left
new file mode 100644
index 00000000..55025dbc
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec_ikev1.conf.left
@@ -0,0 +1,39 @@
+# /etc/ipsec.conf - strongSwan IPsec configuration file
+
+config setup
+ plutodebug=control
+ crlcheckinterval=180
+ strictcrlpolicy=no
+ charonstart=no
+
+conn %default
+ ikelifetime=60m
+ keylife=20m
+ rekeymargin=3m
+ keyingtries=1
+ keyexchange=ikev1
+ left=200.200.200.10
+ leftcert=moonCert.pem
+ leftid="C=CH, O=Linux strongSwan, CN=moon.strongswan.org"
+ leftfirewall=yes
+
+conn net-net
+ left=%defaultroute
+ leftsubnet=192.168.1.0/24
+ leftcert=moonCert.pem
+ right=200.200.200.20
+ rightsubnet=192.168.2.0/24
+ rightid="C=CH, O=Linux strongSwan, CN=sun.strongswan.org"
+ auto=add
+
+conn host-host
+ left=%defaultroute
+ leftcert=moonCert.pem
+ right=200.200.200.20
+ rightid="C=CH, O=Linux strongSwan, CN=sun.strongswan.org"
+ auto=add
+
+conn rw
+ leftsubnet=192.168.1.0/24
+ right=%any
+ auto=add
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec_ikev1.conf.right b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec_ikev1.conf.right
new file mode 100644
index 00000000..479791ea
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/ipsec_ikev1.conf.right
@@ -0,0 +1,34 @@
+# /etc/ipsec.conf - strongSwan IPsec configuration file
+
+config setup
+ plutodebug=control
+ crlcheckinterval=180
+ strictcrlpolicy=no
+ charonstart=no
+
+conn %default
+ ikelifetime=60m
+ keylife=20m
+ rekeymargin=3m
+ keyingtries=1
+ keyexchange=ikev1
+ left=200.200.200.20
+ leftcert=sunCert.pem
+ leftid="C=CH, O=Linux strongSwan, CN=sun.strongswan.org"
+ leftfirewall=yes
+
+conn net-net
+ left=%defaultroute
+ leftsubnet=192.168.2.0/24
+ leftcert=sunCert.pem
+ right=200.200.200.10
+ rightsubnet=192.168.1.0/24
+ rightid="C=CH, O=Linux strongSwan, CN=moon.strongswan.org"
+ auto=add
+
+conn host-host
+ left=%defaultroute
+ leftcert=sunCert.pem
+ right=200.200.200.10
+ rightid="C=CH, O=Linux strongSwan, CN=moon.strongswan.org"
+ auto=add
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-md5-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-md5-transport
new file mode 100755
index 00000000..5422771b
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-md5-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.10
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-md5 authentication using 128 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-md5 0xd5f603abc8cd9d19319ca32fb955b10f;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-md5 0x1dd90b4c32dcbe9d37b555a23df5170e;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P in ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P out ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-md5-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-md5-tunnel
new file mode 100755
index 00000000..52bf9c3f
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-md5-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway A (eth0:192.168.1.130, eth1:200.200.200.10)
+#
+# Security policies
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-md5 authentication using 128 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-md5 0xd5f603abc8cd9d19319ca32fb955b10f;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-md5 0x1dd90b4c32dcbe9d37b555a23df5170e;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha1-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha1-transport
new file mode 100755
index 00000000..e5ee0054
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha1-transport
@@ -0,0 +1,22 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.10
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha1 authentication using 160 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha1 0xe9c43acd5e8d779b6e09c87347852708ab49bdd3;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha1 0xea6856479330dc9c17b8f6c37e2a895363d83f21;
+
+spdadd 200.200.200.20 200.200.200.10 any -P in ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P out ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha1-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha1-tunnel
new file mode 100755
index 00000000..eb2881db
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha1-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway A (eth0:192.168.1.130, eth1:200.200.200.10)
+#
+# Security policies
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha1 authentication using 160 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha1 0xe9c43acd5e8d779b6e09c87347852708ab49bdd3;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha1 0xea6856479330dc9c17b8f6c37e2a895363d83f21;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha256-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha256-transport
new file mode 100755
index 00000000..b5286320
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha256-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.10
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha2-256 authentication using 256 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha2-256 0x4de03bebf6beb4fdef5a67d349a09580466cc4e54503333b2a5fd34538c91198;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha2-256 0x5e01eb780b7ecc074ca2ca4fa4a5ea2ff841c977da0ce61c49d1fe767ea5452c;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P in ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P out ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha256-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha256-tunnel
new file mode 100755
index 00000000..e7726f08
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-3des-sha256-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway A (eth0:192.168.1.130, eth1:200.200.200.10)
+#
+# Security policies
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha2-256 authentication using 256 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513 -m tunnel
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha2-256 0x4de03bebf6beb4fdef5a67d349a09580466cc4e54503333b2a5fd34538c91198;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514 -m tunnel
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha2-256 0x5e01eb780b7ecc074ca2ca4fa4a5ea2ff841c977da0ce61c49d1fe767ea5452c;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-md5-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-md5-transport
new file mode 100755
index 00000000..96f57837
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-md5-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.10
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-md5 authentication using 128 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-md5 0xd5f603abc8cd9d19319ca32fb955b10f;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-md5 0x1dd90b4c32dcbe9d37b555a23df5170e;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P in ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P out ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-md5-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-md5-tunnel
new file mode 100755
index 00000000..b2cf84bf
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-md5-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway A (eth0:192.168.1.130, eth1:200.200.200.10)
+#
+# Security policies
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-md5 authentication using 128 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-md5 0xd5f603abc8cd9d19319ca32fb955b10f;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-md5 0x1dd90b4c32dcbe9d37b555a23df5170e;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha1-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha1-transport
new file mode 100755
index 00000000..f3ffaf5c
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha1-transport
@@ -0,0 +1,22 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.10
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha1 authentication using 160 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha1 0xe9c43acd5e8d779b6e09c87347852708ab49bdd3;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha1 0xea6856479330dc9c17b8f6c37e2a895363d83f21;
+
+spdadd 200.200.200.20 200.200.200.10 any -P in ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P out ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha1-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha1-tunnel
new file mode 100755
index 00000000..1ab7874f
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha1-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway A (eth0:192.168.1.130, eth1:200.200.200.10)
+#
+# Security policies
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha1 authentication using 160 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha1 0xe9c43acd5e8d779b6e09c87347852708ab49bdd3;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha1 0xea6856479330dc9c17b8f6c37e2a895363d83f21;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha256-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha256-transport
new file mode 100755
index 00000000..d2645d6f
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha256-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.10
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha2-256 authentication using 256 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha2-256 0x4de03bebf6beb4fdef5a67d349a09580466cc4e54503333b2a5fd34538c91198;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha2-256 0x5e01eb780b7ecc074ca2ca4fa4a5ea2ff841c977da0ce61c49d1fe767ea5452c;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P in ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P out ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha256-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha256-tunnel
new file mode 100755
index 00000000..8ed697d1
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-aes-sha256-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway A (eth0:192.168.1.130, eth1:200.200.200.10)
+#
+# Security policies
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha2-256 authentication using 256 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513 -m tunnel
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha2-256 0x4de03bebf6beb4fdef5a67d349a09580466cc4e54503333b2a5fd34538c91198;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514 -m tunnel
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha2-256 0x5e01eb780b7ecc074ca2ca4fa4a5ea2ff841c977da0ce61c49d1fe767ea5452c;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-null-null-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-null-null-transport
new file mode 100755
index 00000000..84275d07
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-null-null-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.10
+
+flush;
+spdflush;
+
+# ESP SAs doing null encryption
+# and null authentication
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E null
+ -A null;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E null
+ -A null;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P in ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P out ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-null-null-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-null-null-tunnel
new file mode 100755
index 00000000..478d14a8
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.conf-null-null-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway A (eth0:192.168.1.130, eth1:200.200.200.10)
+#
+# Security policies
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+
+# ESP SAs doing null encryption
+# and null authentication
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E null
+ -A null;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E null
+ -A null;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.ipv4 b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.ipv4
new file mode 100755
index 00000000..e219f2ad
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/left.ipv4
@@ -0,0 +1,2 @@
+set -v
+route add -net 192.168.2.0 netmask 255.255.255.0 gw 200.200.200.20
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/moonCert.pem b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/moonCert.pem
new file mode 100644
index 00000000..d5c970f4
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/moonCert.pem
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEIjCCAwqgAwIBAgIBFzANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDSDEZ
+MBcGA1UEChMQTGludXggc3Ryb25nU3dhbjEbMBkGA1UEAxMSc3Ryb25nU3dhbiBS
+b290IENBMB4XDTA5MDgyNzEwMDMzMloXDTE0MDgyNjEwMDMzMlowRjELMAkGA1UE
+BhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xHDAaBgNVBAMTE21vb24u
+c3Ryb25nc3dhbi5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDK
+L2M91Lu6BYYhWxWgMS9z9TMSTwszm5rhO7ZIsCtMRo4PAeYw+++SGXt3CPXb/+p+
+SWKGlm11rPE71eQ3ehgh2C3hAurfmWO0iQQaCw+fdreeIVCqOQIOP6UqZ327h5yY
+YpHk8VQv4vBJTpxclU1PqnWheqe1ZlLxsW773LRml/fQt/UgvJkCBTZZONLNMfK+
+7TDnYaVsAtncgvDN78nUNEe2qY92KK7SrBJ6SpUEg49m51F+XgsGcsgWVHS85on3
+Om/G48crLEVJjdu8CxewSRVgb+lPJWzHd8QsU0Vg/7vlqs3ZRMyNtNKrr4opSvVb
+A6agGlTXhDCreDiXU8KHAgMBAAGjggEaMIIBFjAJBgNVHRMEAjAAMAsGA1UdDwQE
+AwIDqDAdBgNVHQ4EFgQUapx00fiJeYn2WpTpifH6w2SdKS4wbQYDVR0jBGYwZIAU
+XafdcAZRMn7ntm2zteXgYOouTe+hSaRHMEUxCzAJBgNVBAYTAkNIMRkwFwYDVQQK
+ExBMaW51eCBzdHJvbmdTd2FuMRswGQYDVQQDExJzdHJvbmdTd2FuIFJvb3QgQ0GC
+AQAwHgYDVR0RBBcwFYITbW9vbi5zdHJvbmdzd2FuLm9yZzATBgNVHSUEDDAKBggr
+BgEFBQcDATA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3JsLnN0cm9uZ3N3YW4u
+b3JnL3N0cm9uZ3N3YW4uY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQCctXg2xeMozaTV
+jiBL1P8MY9uEH5JtU0EceQ1RbI5/2vGRdnECND9oADY5vamaaE2Mdq2Qh/vlXnML
+o3ii5ELjsQlYdTYZOcMOdcUUXYvbbFX1cwpkBhyBl1H25KptHcgQ/HnceKp3kOuq
+wYOYjgwePXulcpWXx0E2QtQCFQQZFPyEWeNJxH0oglg53QPXfHY9I2/Gukj5V0bz
+p7ME0Gs8KdnYdmbbDqzQgPsta96/m+HoJlsrVF+4Gqihj6BWMBQ2ybjPWZdG3oH9
+25cE8v60Ry98D0Z/tygbAUFnh5oOvaf642paVgc3aoA77I8U+UZjECxISoiHultY
+7QTufOwP
+-----END CERTIFICATE-----
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/moonKey.pem b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/moonKey.pem
new file mode 100644
index 00000000..4d99866f
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/moonKey.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAyi9jPdS7ugWGIVsVoDEvc/UzEk8LM5ua4Tu2SLArTEaODwHm
+MPvvkhl7dwj12//qfklihpZtdazxO9XkN3oYIdgt4QLq35ljtIkEGgsPn3a3niFQ
+qjkCDj+lKmd9u4ecmGKR5PFUL+LwSU6cXJVNT6p1oXqntWZS8bFu+9y0Zpf30Lf1
+ILyZAgU2WTjSzTHyvu0w52GlbALZ3ILwze/J1DRHtqmPdiiu0qwSekqVBIOPZudR
+fl4LBnLIFlR0vOaJ9zpvxuPHKyxFSY3bvAsXsEkVYG/pTyVsx3fELFNFYP+75arN
+2UTMjbTSq6+KKUr1WwOmoBpU14Qwq3g4l1PChwIDAQABAoIBACBFB/Xqajv6fbn9
+K6pxrz02uXwGmacXAtVIDoPzejWmXS4QA4l17HrJDmelSnhelDKry8nnYHkTrTz7
+mn0wQ4HDWy86o/okJUG/TKRLd6bf79aRQqqohqd3iQkHk43GyzuXH+oGioVKF0fc
+ACDWw4wfjL7FMNdHCZ4Bz9DrHO/ysHe9B6rvSYm3VZRhSxaneIkaLkkDadKpVx3f
+XNFlMxY4qKPJYYSoJZ61iMqrO7+rnA93tmyDDs8PKU3BtnpfNrdePgleJHhk8Zqy
+Ev2/NOCSUxbKE8NCtLpGTs+T0qjjnu4k3WPd3ZOBAan0uPDekHZeHB/aXGLhYcxx
+J5SurqECgYEA+F1gppkER5Jtoaudt/CUpdQ1sR9wxf75VBqJ4FiYABGQz9xlG4oj
+zL/o572s0iV3bwFpnQa+WuWrxGkP6ZuB/Z82npc0N/vLou/b4dxvg4n7K+eOOEf0
+8FMjsse2tqTIXKCqcmQnR0NPQ1jwuvEKsXP5w/JOlnRXAXnd4jxsJI0CgYEA0GaT
+61ySttUW9jC3mxuY6jkQy8TEQqR3nOFvWwmCXIWOpN/MTTPus+Telxp/pdKhU+mo
+PmX3Unyne5PvwleWDq3YzltX5ZDZGJ5UJlKuNnfGIzQ6OcHRbb7zBpQG6qSRPuug
+bgo688hTnb1L59nK88zWVK45euf6pyuoI+SwIGMCgYEA7yvE8knyhBXvezuv0z1b
+eGHmHp5/VDwY0DQKSEAoiBBiWrkLqLybgwXf/KJ8dZZc8En08aFX2GLJyYe/KiB1
+ys3ypEBJqgvRayP+o/9KZ+qNNRd0rqAksPXvL7ABNNt0kzapTSVDae3Yu6s/j1am
+DIL5qAeERIDedG5uDPpQzdUCgYB7MtjpP63ABhLv8XbpbBQnCxtByw3W89F+Xcrt
+v55gQdhE4cSuMzA/CuMH4vNpPS6AI9aBJNhj3CtKo/cOJachAGb1/wvkO5ALvLW0
+fhZdPstUTnDJain7vfF/hwzbs/PlhXgu9T9KlLfRvXFdG+Sd4g8mumRiozcLkoRw
+y6XPTwKBgDJP+s9wXmdG90HST/aqC7FKrVXLpB63dY5swNUfQP6sa0pFnON0r0JC
+h/YCsGFFIAebQ2uOkM3g3f9nkwTp7910ov+/5uThvRI2w2BBPy0mVuALPjyyF1Z2
+cb9zpyKiIuXoXRCf4sd8r1lR9bn0Fxx0Svpxf+fpMGSI5quHNBKY
+-----END RSA PRIVATE KEY-----
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/pingsizes.sh b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/pingsizes.sh
new file mode 100755
index 00000000..faefb245
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/pingsizes.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+#
+# Usage: ./pingsizes.sh 1440 20 (or greater)
+#
+
+PINGDEST=${PINGDEST:-200.200.200.10}
+k=$1
+lim="$((k+$2))"
+((k-=1))
+while [ "$k" != "$lim" ] ; do
+ echo -n "ping -s $((k+=1)) : "
+ ping -i 1000 -c 1 -s $k $PINGDEST | grep packets &
+ sleep 1
+ PID=`ps -eaf | grep 'ping -i' | grep -v grep | sed 's/[ ][ ]*/ /g' | cut -d " " -f 2`
+ if [ -n "$PID" ] ; then
+ echo "****************** killing $PID"
+ kill $PID > /dev/null
+ fi
+done
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/pingsizest.sh b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/pingsizest.sh
new file mode 100755
index 00000000..d5ff0f7d
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/pingsizest.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+#
+# Usage: ./pingsizes.sh 1440 20 (or greater)
+#
+
+PINGDEST=${PINGDEST:-200.200.200.10}
+k=$1
+lim="$((k+$2))"
+((k-=1))
+while [ "$k" != "$lim" ] ; do
+ echo ping -s $((k+=1))
+ ping -i 1000 -c 1 -s $k $PINGDEST &
+ sleep 1
+ PID=`ps -eaf | grep 'ping -i' | sed 's/[ ][ ]*/ /g' | cut -d " " -f 2`
+ if [ -n "$PID" ] ; then
+ echo "****************** killing $PID"
+ kill $PID
+ fi
+done
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/psk.txt b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/psk.txt
new file mode 100644
index 00000000..46c1ff41
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/psk.txt
@@ -0,0 +1,2 @@
+200.200.200.20 secretkeyracoon
+200.200.200.10 secretkeyracoon
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/racoon.conf b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/racoon.conf
new file mode 100644
index 00000000..cf561f51
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/racoon.conf
@@ -0,0 +1,22 @@
+path pre_shared_key "/test_setkey/psk.txt" ;
+
+ remote anonymous
+ {
+ exchange_mode main ;
+ lifetime time 1 hour ;
+ proposal {
+ encryption_algorithm 3des;
+ hash_algorithm sha1;
+ authentication_method pre_shared_key ;
+ dh_group 2 ;
+ }
+ }
+
+ sainfo anonymous
+ {
+ pfs_group 2;
+ lifetime time 1 hour ;
+ encryption_algorithm 3des ;
+ authentication_algorithm hmac_sha1 ;
+ compression_algorithm deflate ;
+ }
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-md5-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-md5-transport
new file mode 100755
index 00000000..7f82fb46
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-md5-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.20
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-md5 authentication using 128 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-md5 0xd5f603abc8cd9d19319ca32fb955b10f;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-md5 0x1dd90b4c32dcbe9d37b555a23df5170e;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P out ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P in ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-md5-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-md5-tunnel
new file mode 100755
index 00000000..5a752579
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-md5-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board B setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway B (eth0:192.168.2.130, eth1:200.200.200.20)
+#
+# Security policies
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-md5 authentication using 128 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-md5 0xd5f603abc8cd9d19319ca32fb955b10f;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-md5 0x1dd90b4c32dcbe9d37b555a23df5170e;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha1-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha1-transport
new file mode 100755
index 00000000..6ef885d4
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha1-transport
@@ -0,0 +1,22 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.20
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha1 authentication using 160 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha1 0xe9c43acd5e8d779b6e09c87347852708ab49bdd3;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha1 0xea6856479330dc9c17b8f6c37e2a895363d83f21;
+
+# Security policies
+spdadd 200.200.200.20 200.200.200.10 any -P out ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P in ipsec
+ esp/transport//require;
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha1-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha1-tunnel
new file mode 100755
index 00000000..16c31578
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha1-tunnel
@@ -0,0 +1,41 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board B setup
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway B (eth0:192.168.2.130, eth1:200.200.200.20)
+#
+# Security policies
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha1 authentication using 160 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha1 0xe9c43acd5e8d779b6e09c87347852708ab49bdd3;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha1 0xea6856479330dc9c17b8f6c37e2a895363d83f21;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha256-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha256-transport
new file mode 100755
index 00000000..b9772092
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha256-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.20
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha2-256 authentication using 256 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha2-256 0x4de03bebf6beb4fdef5a67d349a09580466cc4e54503333b2a5fd34538c91198;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha2-256 0x5e01eb780b7ecc074ca2ca4fa4a5ea2ff841c977da0ce61c49d1fe767ea5452c;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P out ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P in ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha256-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha256-tunnel
new file mode 100755
index 00000000..e7c5b4e6
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-3des-sha256-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway B (eth0:192.168.2.130, eth1:200.200.200.20)
+#
+# Security policies
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha2-256 authentication using 256 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513 -m tunnel
+ -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha2-256 0x4de03bebf6beb4fdef5a67d349a09580466cc4e54503333b2a5fd34538c91198;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514 -m tunnel
+ -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha2-256 0x5e01eb780b7ecc074ca2ca4fa4a5ea2ff841c977da0ce61c49d1fe767ea5452c;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-md5-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-md5-transport
new file mode 100755
index 00000000..5d55d001
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-md5-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.20
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-md5 authentication using 128 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-md5 0xd5f603abc8cd9d19319ca32fb955b10f;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-md5 0x1dd90b4c32dcbe9d37b555a23df5170e;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P out ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P in ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-md5-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-md5-tunnel
new file mode 100755
index 00000000..f49bd54a
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-md5-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board B setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway B (eth0:192.168.2.130, eth1:200.200.200.20)
+#
+# Security policies
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-md5 authentication using 128 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-md5 0xd5f603abc8cd9d19319ca32fb955b10f;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-md5 0x1dd90b4c32dcbe9d37b555a23df5170e;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha1-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha1-transport
new file mode 100755
index 00000000..d9c65a45
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha1-transport
@@ -0,0 +1,22 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.20
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha1 authentication using 160 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha1 0xe9c43acd5e8d779b6e09c87347852708ab49bdd3;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha1 0xea6856479330dc9c17b8f6c37e2a895363d83f21;
+
+# Security policies
+spdadd 200.200.200.20 200.200.200.10 any -P out ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P in ipsec
+ esp/transport//require;
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha1-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha1-tunnel
new file mode 100755
index 00000000..1f10136a
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha1-tunnel
@@ -0,0 +1,41 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board B setup
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway B (eth0:192.168.2.130, eth1:200.200.200.20)
+#
+# Security policies
+
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha1 authentication using 160 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha1 0xe9c43acd5e8d779b6e09c87347852708ab49bdd3;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha1 0xea6856479330dc9c17b8f6c37e2a895363d83f21;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha256-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha256-transport
new file mode 100755
index 00000000..817a8bd4
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha256-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.20
+
+flush;
+spdflush;
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha2-256 authentication using 256 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha2-256 0x4de03bebf6beb4fdef5a67d349a09580466cc4e54503333b2a5fd34538c91198;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha2-256 0x5e01eb780b7ecc074ca2ca4fa4a5ea2ff841c977da0ce61c49d1fe767ea5452c;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P out ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P in ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha256-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha256-tunnel
new file mode 100755
index 00000000..9bca18fb
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-aes-sha256-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board A setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway B (eth0:192.168.2.130, eth1:200.200.200.20)
+#
+# Security policies
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+
+# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)
+# and hmac-sha2-256 authentication using 256 bit long keys
+add 200.200.200.10 200.200.200.20 esp 0x10513 -m tunnel
+ -E aes-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831
+ -A hmac-sha2-256 0x4de03bebf6beb4fdef5a67d349a09580466cc4e54503333b2a5fd34538c91198;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514 -m tunnel
+ -E aes-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df
+ -A hmac-sha2-256 0x5e01eb780b7ecc074ca2ca4fa4a5ea2ff841c977da0ce61c49d1fe767ea5452c;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-null-null-transport b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-null-null-transport
new file mode 100755
index 00000000..26dfe2e1
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-null-null-transport
@@ -0,0 +1,23 @@
+#!/usr/sbin/setkey -f
+#I am 200.200.200.20
+
+flush;
+spdflush;
+
+# ESP SAs doing null encryption
+# and null authentication
+add 200.200.200.10 200.200.200.20 esp 0x10513
+ -E null
+ -A null;
+
+add 200.200.200.20 200.200.200.10 esp 0x10514
+ -E null
+ -A null;
+
+
+spdadd 200.200.200.20 200.200.200.10 any -P out ipsec
+ esp/transport//require;
+
+spdadd 200.200.200.10 200.200.200.20 any -P in ipsec
+ esp/transport//require;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-null-null-tunnel b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-null-null-tunnel
new file mode 100755
index 00000000..bc4f38eb
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.conf-null-null-tunnel
@@ -0,0 +1,42 @@
+#!/usr/sbin/setkey -f
+#
+#
+# Example ESP Tunnel for VPN.
+#
+# ========= ESP =========
+# | |
+# Network-A Gateway-A Gateway-B Network-B
+# 192.168.1.0/24 ---- 200.200.200.10 ------ 200.200.200.20 ---- 192.168.2.0/24
+#
+# ====== 83xx board A ====== ===== 83xx board B =====
+# | | | |
+# eth0 eth1 eth1 eth0
+# 192.168.1.130 200.200.200.10 200.200.200.20 192.168.2.130
+#
+#
+# Board B setup
+#
+# Flush the SAD and SPD
+flush;
+spdflush;
+
+# I am gateway B (eth0:192.168.2.130, eth1:200.200.200.20)
+#
+# Security policies
+spdadd 192.168.2.0/24 192.168.1.0/24 any -P out ipsec
+ esp/tunnel/200.200.200.20-200.200.200.10/require;
+
+spdadd 192.168.1.0/24 192.168.2.0/24 any -P in ipsec
+ esp/tunnel/200.200.200.10-200.200.200.20/require;
+
+
+# ESP SAs doing null encryption
+# and null authentication
+add 200.200.200.10 200.200.200.20 esp 0x201 -m tunnel
+ -E null
+ -A null;
+
+add 200.200.200.20 200.200.200.10 esp 0x301 -m tunnel
+ -E null
+ -A null;
+
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.ipv4 b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.ipv4
new file mode 100755
index 00000000..67cd1b2c
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/right.ipv4
@@ -0,0 +1,2 @@
+set -v
+route add -net 192.168.1.0 netmask 255.255.255.0 gw 200.200.200.10
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup
new file mode 100755
index 00000000..9e6fa7fa
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup
@@ -0,0 +1,47 @@
+# setup - quick setup for left or right side of ipsec test
+# see README for example use.
+
+SCRIPT_HOME=/test_setkey/
+cd $SCRIPT_HOME
+
+export PATH=$SCRIPT_HOME:$PATH
+
+if [ "$1" != "left" -a "$1" != "right" ] ; then
+ echo "Usage: $0 side [config] [driver]"
+ echo " where side is either left or right."
+ echo " where config is either"
+ echo " aes-sha1-tunnel (default)"
+ echo " or 3des-sha1-tunnel"
+ echo " if driver is supplied, script does 'modprobe driver'"
+ exit 1
+fi
+
+SIDE=$1
+POLICY_CFG=$SIDE.conf
+DEFAULT_POLICY=aes-sha1-tunnel
+
+if [ -n "$2" ] ; then
+ POLICY=$2
+else
+ POLICY=$DEFAULT_POLICY
+fi
+
+SETKEY_FILE=$POLICY_CFG-$POLICY
+
+if [ ! -f $SETKEY_FILE ] ; then
+ echo "Missing setkey command file: $SETKEY_FILE"
+ exit 1
+fi
+
+# modprobe any driver name given as last parameter
+if [ -n "$3" ] ; then
+ modprobe $3
+fi
+
+SETUP_CMD_FILE=./setup_$SIDE
+. $SETUP_CMD_FILE
+
+$SETKEY_FILE
+
+setkey -D
+setkey -D -P
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup_left b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup_left
new file mode 100755
index 00000000..da769099
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup_left
@@ -0,0 +1,13 @@
+# board on left setup
+set -v
+ifconfig eth0 down
+ifconfig eth0 hw ether 00:04:9F:11:22:33
+ifconfig eth0 192.168.1.130 netmask 255.255.255.0
+ifconfig eth0 up
+ifconfig eth1 down
+ifconfig eth1 hw ether 00:E0:0C:00:7D:FD
+ifconfig eth1 200.200.200.10 netmask 255.255.255.0
+ifconfig eth1 up
+arp -s 192.168.1.21 00:00:00:00:00:01
+route add default dev eth1
+echo 1 > /proc/sys/net/ipv4/ip_forward
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup_right b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup_right
new file mode 100755
index 00000000..f0e333ee
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/setup_right
@@ -0,0 +1,13 @@
+# board on right setup
+set -v
+ifconfig eth0 down
+ifconfig eth0 hw ether 00:E0:0C:00:01:FD
+ifconfig eth0 192.168.2.130 netmask 255.255.255.0
+ifconfig eth0 up
+ifconfig eth1 down
+ifconfig eth1 hw ether 00:E0:0C:00:00:FD
+ifconfig eth1 200.200.200.20 netmask 255.255.255.0
+ifconfig eth1 up
+arp -s 192.168.2.21 00:00:00:00:00:02
+route add default dev eth1
+echo 1 > /proc/sys/net/ipv4/ip_forward
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan.conf b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan.conf
new file mode 100644
index 00000000..1701f4ab
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan.conf
@@ -0,0 +1,19 @@
+# strongswan.conf - strongSwan configuration file
+
+charon {
+ load = curl aes des sha1 sha2 md5 pem pkcs1 gmp random x509 revocation hmac xcbc stroke kernel-netlink socket-raw updown
+ multiple_authentication = no
+}
+
+pluto {
+
+ # plugins to load in pluto
+ #load = aes des sha1 md5 sha2 hmac gmp random pubkey
+
+}
+
+libstrongswan {
+
+ # set to no, the DH exponent size is optimized
+ # dh_exponent_ansi_x9_42 = no
+}
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswanCert.pem b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswanCert.pem
new file mode 100644
index 00000000..0865ad22
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswanCert.pem
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDuDCCAqCgAwIBAgIBADANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDSDEZ
+MBcGA1UEChMQTGludXggc3Ryb25nU3dhbjEbMBkGA1UEAxMSc3Ryb25nU3dhbiBS
+b290IENBMB4XDTA0MDkxMDEwMDExOFoXDTE5MDkwNzEwMDExOFowRTELMAkGA1UE
+BhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xGzAZBgNVBAMTEnN0cm9u
+Z1N3YW4gUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL/y
+X2LqPVZuWLPIeknK86xhz6ljd3NNhC2z+P1uoCP3sBMuZiZQEjFzhnKcbXxCeo2f
+FnvhOOjrrisSuVkzuu82oxXD3fIkzuS7m9V4E10EZzgmKWIf+WuNRfbgAuUINmLc
+4YGAXBQLPyzpP4Ou48hhz/YQo58Bics6PHy5v34qCVROIXDvqhj91P8g+pS+F21/
+7P+CH2jRcVIEHZtG8M/PweTPQ95dPzpYd2Ov6SZ/U7EWmbMmT8VcUYn1aChxFmy5
+gweVBWlkH6MP+1DeE0/tL5c87xo5KCeGK8Tdqpe7sBRC4pPEEHDQciTUvkeuJ1Pr
+K+1LwdqRxo7HgMRiDw8CAwEAAaOBsjCBrzASBgNVHRMBAf8ECDAGAQH/AgEBMAsG
+A1UdDwQEAwIBBjAdBgNVHQ4EFgQUXafdcAZRMn7ntm2zteXgYOouTe8wbQYDVR0j
+BGYwZIAUXafdcAZRMn7ntm2zteXgYOouTe+hSaRHMEUxCzAJBgNVBAYTAkNIMRkw
+FwYDVQQKExBMaW51eCBzdHJvbmdTd2FuMRswGQYDVQQDExJzdHJvbmdTd2FuIFJv
+b3QgQ0GCAQAwDQYJKoZIhvcNAQELBQADggEBACOSmqEBtBLR9aV3UyCI8gmzR5in
+Lte9aUXXS+qis6F2h2Stf4sN+Nl6Gj7REC6SpfEH4wWdwiUL5J0CJhyoOjQuDl3n
+1Dw3dE4/zqMZdyDKEYTU75TmvusNJBdGsLkrf7EATAjoi/nrTOYPPhSUZvPp/D+Y
+vORJ9Ej51GXlK1nwEB5iA8+tDYniNQn6BD1MEgIejzK+fbiy7braZB1kqhoEr2Si
+7luBSnU912sw494E88a2EWbmMvg2TVHPNzCpVkpNk7kifCiwmw9VldkqYy9y/lCa
+Epyp7lTfKw7cbD04Vk8QJW782L6Csuxkl346b17wmOqn8AZips3tFsuAY3w=
+-----END CERTIFICATE-----
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan_left b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan_left
new file mode 100755
index 00000000..e55c3e42
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan_left
@@ -0,0 +1,10 @@
+#strongswan on left board
+set -v
+cp -rf ipsec.conf.left /etc/ipsec.conf
+cp -rf ipsec.secrets.left /etc/ipsec.secrets
+cp -rf strongswan.conf /etc/
+cp -rf strongswanCert.pem /etc/ipsec.d/cacerts/
+cp -rf moonCert.pem /etc/ipsec.d/certs/
+mkdir /etc/ipsec.d/private
+cp -rf sunKey.pem /etc/ipsec.d/private/
+cp -rf moonKey.pem /etc/ipsec.d/private/
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan_right b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan_right
new file mode 100755
index 00000000..bcdbb731
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/strongswan_right
@@ -0,0 +1,10 @@
+#strongswan on left board
+set -v
+cp -rf ipsec.conf.right /etc/ipsec.conf
+cp -rf ipsec.secrets.right /etc/ipsec.secrets
+cp -rf strongswan.conf /etc/
+cp -rf strongswanCert.pem /etc/ipsec.d/cacerts/
+cp -rf sunCert.pem /etc/ipsec.d/certs/
+mkdir /etc/ipsec.d/private
+cp -rf sunKey.pem /etc/ipsec.d/private/
+cp -rf moonKey.pem /etc/ipsec.d/private/
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/sunCert.pem b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/sunCert.pem
new file mode 100644
index 00000000..d0937bab
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/sunCert.pem
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEIDCCAwigAwIBAgIBFjANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDSDEZ
+MBcGA1UEChMQTGludXggc3Ryb25nU3dhbjEbMBkGA1UEAxMSc3Ryb25nU3dhbiBS
+b290IENBMB4XDTA5MDgyNzA5NTkwNFoXDTE0MDgyNjA5NTkwNFowRTELMAkGA1UE
+BhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xGzAZBgNVBAMTEnN1bi5z
+dHJvbmdzd2FuLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN+V
+VIpn6Q5jaU//EN6p6A5cSfUfhBK0mFa2laFFZh/Y0h66AXqqrQ3X917h7YNsSk68
+oowY9h9I3gOx7hNVBsJr2VjdYC+b0q5NTha09/A5mimv/prYj6o0yawxoPjoDs9Y
+h7D7Kf+F8fkgk0stlHJZX66J7dNrFXbg1xBld+Ep5Or2FbEZ9QWUpRQTuhdpNt/4
+9YuxQ59DemY9IRbwsrKCHH0mGrJsDdqeb0ap+8QvSXHjCt1fr9MNKWaAFAQLKQI4
+e0da1ntPCEQLeE833+NNRBgGufk0KqGT3eAXqrxa9AEIUJnVcPexQdqUMjcUpXFb
+8WNzRWB8Egh3BDK6FsECAwEAAaOCARkwggEVMAkGA1UdEwQCMAAwCwYDVR0PBAQD
+AgOoMB0GA1UdDgQWBBRW1p4v2qihzRlcI1PnxbZwluML+zBtBgNVHSMEZjBkgBRd
+p91wBlEyfue2bbO15eBg6i5N76FJpEcwRTELMAkGA1UEBhMCQ0gxGTAXBgNVBAoT
+EExpbnV4IHN0cm9uZ1N3YW4xGzAZBgNVBAMTEnN0cm9uZ1N3YW4gUm9vdCBDQYIB
+ADAdBgNVHREEFjAUghJzdW4uc3Ryb25nc3dhbi5vcmcwEwYDVR0lBAwwCgYIKwYB
+BQUHAwEwOQYDVR0fBDIwMDAuoCygKoYoaHR0cDovL2NybC5zdHJvbmdzd2FuLm9y
+Zy9zdHJvbmdzd2FuLmNybDANBgkqhkiG9w0BAQsFAAOCAQEAo37LYT9Awx0MK/nA
+FZpPJqUr0Ey+O5Ukcsdx7nd00SlmpiQRY8KmuRXCBQnDEgdLstd3slQjT0pJEgWF
+0pzxybnI6eOzYAhLfhart+X1hURiNGbXjggm2s4I5+K32bVIkNEqlsYnd/6F9oo5
+ZNO0/eTTruLZfkNe/zchBGKe/Z7MacVwlYWWCbMtBV4K1d5dGcRRgpQ9WivDlmat
+Nh9wlscDSgSGk3HJkbxnq695VN7zUbDWAUvWWhV5bIDjlAR/xyT9ApqIxiyVVRul
+fYrE7U05Hbt6GgAroAKLp6qJup9+TxQAKSjKIwJ0hf7OuYyQ8TZtVHS7AOhm+T/5
+G/jGGA==
+-----END CERTIFICATE-----
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/sunKey.pem b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/sunKey.pem
new file mode 100644
index 00000000..d8fad9aa
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo/test_setkey/sunKey.pem
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEA35VUimfpDmNpT/8Q3qnoDlxJ9R+EErSYVraVoUVmH9jSHroB
+eqqtDdf3XuHtg2xKTryijBj2H0jeA7HuE1UGwmvZWN1gL5vSrk1OFrT38DmaKa/+
+mtiPqjTJrDGg+OgOz1iHsPsp/4Xx+SCTSy2Ucllfront02sVduDXEGV34Snk6vYV
+sRn1BZSlFBO6F2k23/j1i7FDn0N6Zj0hFvCysoIcfSYasmwN2p5vRqn7xC9JceMK
+3V+v0w0pZoAUBAspAjh7R1rWe08IRAt4Tzff401EGAa5+TQqoZPd4BeqvFr0AQhQ
+mdVw97FB2pQyNxSlcVvxY3NFYHwSCHcEMroWwQIDAQABAoIBADH51hjN2zk9HVgl
+QmcTAWzcUie5cLMhrP+M9mtC8O3jcCwwFY6OwfnbMU8DHy0GMqHg5lB8b99UUVPw
+HLAzjDw/ESkc6pgZs4EEhJTsxJLsvTnePgHssEgyXnXf7gRVEqJkPohfy+Zy0UCH
+eIUQXiMlOQ7xg7iDMhwNa+UdWSt539DztSKilQn2xdPZjFnMT0/prvl4NA/8Zn54
+/SdWDq5yRdLWb6EK1V7yJ3687GXR1jzGtgy7TXuncUJVTYgX7RdP1Tn6gWD8YAQ/
+RfT0DdWYm4WHSgSb9/NW8lBZH2yy3hg+lNgofXEvTfBkO5QyW31LIr0tCV6zhJIc
+Y9MxaKUCgYEA9sktaXfhPLe0ECjdeQEOq5EKuDrCviSKCOuAV4BDSOsdw6+5LWfY
+Vb/oke8N70lL3RCblcj1pOKWUi2O/SpEJdDRduiw2gM9cXt3/bChSTHC4TsIxxN/
+Db9OGg72kZ4sRY5Au+zyAAQYBwXhFWux194Jk5qK0JblNG9J5QMqZDcCgYEA5+5h
+BgHUMEO+pdME5lAiSc5PcNTejpA6j+OikCh4/HFXy3C/dLx+Cs1+egw64c8iVaIv
+NEo7n7E9I0e3XqanPRXhMnBRrP+39OVsWPmZ18Li2Hi84KwJyi8Y11l3XJOqaYpF
+wMVUuZpxR0dfG5k/5GwT/tEkmQBglOgG3m2zUMcCgYEA4m3Vd9ahV5dp5AXKpzKc
+JjiPMFfhxJo7+FEz0ZUCp03qYljBu/Jy4MKS/grrqyiCLdQGHNlk4SNxLvdUId78
+5gGBnuuDEJU2dAAIKUE9yq2YlBUZSacOxStI2snt28/X6P3LUWHm7LLU5OS1D3Vf
+mKPF/6MlSJuas5CEqVZNN+MCgYBH9Qh7IaQgmVQUBKVXg3Mv7OduvUyTdKIGtHxi
+N3xZ7hxsDP4JjNWaKmlcGmFGX8pqQRheI83d3NJ4GK8GmbP3Wst0p65fezMqsudr
+r30QmPFicgs/tYCQDw6o+aPzwAi2F+VOSqrfrtAIaldSq7hL+VA21dKB+cD9UgOX
+jPd+TwKBgQCbKeg2QNS2qhPIG9eaqJDROuxmxb/07d7OBctgMgxVvKhqW9hW42Sy
+gJ59fyz5QjFBaSfcOdf4gkKyEawVo45/q6ymIQU37R4vF4CW9Z3CfaIbwJp7LcHV
+zH07so/HNsZua6GWCSCLJU5MeCRiZzk2RFiS9KIaLP4gZndv4lXOiQ==
+-----END RSA PRIVATE KEY-----
diff --git a/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo_0.1.bb b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo_0.1.bb
new file mode 100644
index 00000000..1a4ae6dd
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/networking-layer/recipes-connectivity/ipsec-demo/ipsec-demo_0.1.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Scripts and configuration files for ipsec demo"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+RDEPENDS_${PN} = "ipsec-tools bash"
+
+inherit allarch
+
+SRC_URI = "file://test_setkey"
+
+S = "${WORKDIR}"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install(){
+ install -d ${D}${datadir}
+ cp -a ${WORKDIR}/test_setkey ${D}${datadir}/
+ chown -R root:root ${D}${datadir}/test_setkey
+}
+
+FILES_${PN} = "${datadir}/*"
+
+COMPATIBLE_MACHINE = "(qoriq)"
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
diff --git a/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-benchmark/glmark2/glmark2_%.bbappend b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-benchmark/glmark2/glmark2_%.bbappend
new file mode 100644
index 00000000..b579028b
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-benchmark/glmark2/glmark2_%.bbappend
@@ -0,0 +1,4 @@
+PACKAGECONFIG_imxgpu3d = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland opengl', 'wayland-gles2', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11-gl x11-gles2', '', d), d)}"
+PACKAGECONFIG_imxgpu2d = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland opengl', '', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11-gl', '', d), d)}"
diff --git a/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-devtools/luajit/luajit/ppc-fixplt.patch b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-devtools/luajit/luajit/ppc-fixplt.patch
new file mode 100644
index 00000000..b9f17f4e
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-devtools/luajit/luajit/ppc-fixplt.patch
@@ -0,0 +1,105 @@
+Upstream-Status: Unknown
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+libluajit is having symbols that can't be
+resolved the reloc cannot accommodate an offset greater than 24 bits.
+
+Looking at libluajit with readelf -r, you see a bunch of entries that look like:
+ 000082f0 00003c0a R_PPC_REL24 00000000 sqrt + 0
+
+These should not occur when the code is compiled and linked with -fPIC.
+
+It turns out that libluajit *is* compiled and linked with -fPIC, however...
+There is one assembler file called lj_vm.s which is generated during the build.
+This file is missing the `@plt' qualifier from external references.
+
+This file is generated by a program called buildvm. This in turn uses tables
+in a file called buildvm_arch.h which is generated by dynasm.lua.
+
+Index: LuaJIT-2.0.1/src/host/buildvm.c
+===================================================================
+--- LuaJIT-2.0.1.orig/src/host/buildvm.c 2013-02-19 12:15:00.000000000 -0800
++++ LuaJIT-2.0.1/src/host/buildvm.c 2013-05-14 20:26:05.933444512 -0700
+@@ -107,12 +107,14 @@
+ #endif
+ sprintf(name, "%s%s%s", symprefix, prefix, suffix);
+ p = strchr(name, '@');
++#if 0
+ if (p) {
+ if (!LJ_64 && (ctx->mode == BUILD_coffasm || ctx->mode == BUILD_peobj))
+ name[0] = '@';
+ else
+ *p = '\0';
+ }
++#endif
+ p = (char *)malloc(strlen(name)+1); /* MSVC doesn't like strdup. */
+ strcpy(p, name);
+ return p;
+Index: LuaJIT-2.0.1/src/vm_ppcspe.dasc
+===================================================================
+--- LuaJIT-2.0.1.orig/src/vm_ppcspe.dasc 2013-02-19 12:15:00.000000000 -0800
++++ LuaJIT-2.0.1/src/vm_ppcspe.dasc 2013-05-14 20:26:05.937444512 -0700
+@@ -1390,7 +1390,7 @@
+ | checknum CARG2
+ | evmergehi CARG1, CARG2, CARG2
+ | checkfail ->fff_fallback
+- | bl extern func
++ | bl extern func@plt
+ | evmergelo CRET1, CRET1, CRET2
+ | b ->fff_restv
+ |.endmacro
+@@ -1405,7 +1405,7 @@
+ | checknum CARG1
+ | evmergehi CARG3, CARG4, CARG4
+ | checkanyfail ->fff_fallback
+- | bl extern func
++ | bl extern func@plt
+ | evmergelo CRET1, CRET1, CRET2
+ | b ->fff_restv
+ |.endmacro
+@@ -1437,7 +1437,7 @@
+ | checknum CARG2
+ | evmergehi CARG1, CARG2, CARG2
+ | checkfail ->fff_fallback
+- | bl extern log
++ | bl extern log@plt
+ | evmergelo CRET1, CRET1, CRET2
+ | b ->fff_restv
+ |
+@@ -1471,7 +1471,7 @@
+ | checknum CARG1
+ | checkanyfail ->fff_fallback
+ | efdctsi CARG3, CARG4
+- | bl extern ldexp
++ | bl extern ldexp@plt
+ | evmergelo CRET1, CRET1, CRET2
+ | b ->fff_restv
+ |
+@@ -1484,7 +1484,7 @@
+ | checkfail ->fff_fallback
+ | la CARG3, DISPATCH_GL(tmptv)(DISPATCH)
+ | lwz PC, FRAME_PC(BASE)
+- | bl extern frexp
++ | bl extern frexp@plt
+ | lwz TMP1, DISPATCH_GL(tmptv)(DISPATCH)
+ | evmergelo CRET1, CRET1, CRET2
+ | efdcfsi CRET2, TMP1
+@@ -1503,7 +1503,7 @@
+ | checkfail ->fff_fallback
+ | la CARG3, -8(BASE)
+ | lwz PC, FRAME_PC(BASE)
+- | bl extern modf
++ | bl extern modf@plt
+ | evmergelo CRET1, CRET1, CRET2
+ | la RA, -8(BASE)
+ | evstdd CRET1, 0(BASE)
+@@ -2399,7 +2399,7 @@
+ | checknum CARG1
+ | evmergehi CARG3, CARG4, CARG4
+ | checkanyfail ->vmeta_arith_vv
+- | bl extern pow
++ | bl extern pow@plt
+ | evmergelo CRET2, CRET1, CRET2
+ | evstddx CRET2, BASE, RA
+ | ins_next
diff --git a/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-devtools/luajit/luajit_%.bbappend b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-devtools/luajit/luajit_%.bbappend
new file mode 100644
index 00000000..8c6138c5
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-devtools/luajit/luajit_%.bbappend
@@ -0,0 +1,4 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
+
+SRC_URI_append_qoriq-ppc = " file://ppc-fixplt.patch "
+
diff --git a/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-dpaa/fmc/fmc_git.bb b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-dpaa/fmc/fmc_git.bb
new file mode 100644
index 00000000..cbf8e24f
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-dpaa/fmc/fmc_git.bb
@@ -0,0 +1,55 @@
+SUMMARY = "Frame Manager Configuration tool"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a504ab5a8ff235e67c7301214749346c"
+
+PR = "r2"
+
+DEPENDS = "libxml2 fmlib tclap"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/fmc;nobranch=1"
+SRCREV = "c7576ab7fb6fb09b68ebc40531e5452fc89e5cd5"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = 'FMD_USPACE_HEADER_PATH="${STAGING_INCDIR}/fmd" \
+ FMD_USPACE_LIB_PATH="${STAGING_LIBDIR}" LIBXML2_HEADER_PATH="${STAGING_INCDIR}/libxml2" \
+ TCLAP_HEADER_PATH="${STAGING_INCDIR}" '
+EXTRA_OEMAKE_virtclass-native = 'FMCHOSTMODE=1 FMD_USPACE_HEADER_PATH="${STAGING_INCDIR}/fmd" \
+ FMD_USPACE_LIB_PATH="${STAGING_LIBDIR}" LIBXML2_HEADER_PATH="${STAGING_INCDIR}/libxml2" \
+ TCLAP_HEADER_PATH="${STAGING_INCDIR}" '
+
+EXTRA_OEMAKE_PLATFORM ?= ""
+EXTRA_OEMAKE_PLATFORM_ls1043a = "ls1043"
+EXTRA_OEMAKE_PLATFORM_ls1046a = "ls1046"
+EXTRA_OEMAKE_PLATFORM_ls1088a = "ls1088"
+EXTRA_OEMAKE_PLATFORM_p1020 = "p4080ds"
+EXTRA_OEMAKE_PLATFORM_p2020 = "p4080ds"
+EXTRA_OEMAKE_PLATFORM_p2041 = "p4080ds"
+EXTRA_OEMAKE_PLATFORM_p3041 = "p4080ds"
+EXTRA_OEMAKE_PLATFORM_p4080 = "p4080ds"
+EXTRA_OEMAKE_PLATFORM_p5040 = "p4080ds"
+
+
+do_compile () {
+ oe_runmake MACHINE=${EXTRA_OEMAKE_PLATFORM} -C source
+}
+
+do_install () {
+ install -d ${D}/${bindir}
+ install -m 755 ${S}/source/fmc ${D}/${bindir}
+
+ install -d ${D}${sysconfdir}/fmc/config
+ install -m 644 ${S}${sysconfdir}/fmc/config/hxs_pdl_v3.xml ${D}${sysconfdir}/fmc/config
+
+ install -d ${D}/${includedir}/fmc
+ install ${S}/source/fmc.h ${D}/${includedir}/fmc
+
+ install -d ${D}/${libdir}
+ install ${S}/source/libfmc.a ${D}/${libdir}
+}
+
+PARALLEL_MAKE = ""
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-graphics/xserver-common/xserver-common/imx/0016-xserver-common-enable-iglx-module.patch b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-graphics/xserver-common/xserver-common/imx/0016-xserver-common-enable-iglx-module.patch
new file mode 100644
index 00000000..283a081b
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-graphics/xserver-common/xserver-common/imx/0016-xserver-common-enable-iglx-module.patch
@@ -0,0 +1,30 @@
+From 8ad045e5e664fe2d1bd9f88616d5bf83437aab4e Mon Sep 17 00:00:00 2001
+From: Yang Dong <b56112@freescale.com>
+Date: Wed, 9 Sep 2015 13:08:57 +0800
+Subject: [PATCH] xserver-common: enable iglx module
+
+Enable iglx module to pass indirect glx rendering test case.
+
+Upstream-Status: Inappropriate [imx specific]
+
+Date: Sep 9, 2015
+Signed-off-by Yang Dong <b56112@freescale.com>
+---
+ X11/xserver-common | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/X11/xserver-common b/X11/xserver-common
+index 4dc48c4..d19b858 100644
+--- a/X11/xserver-common
++++ b/X11/xserver-common
+@@ -44,6 +44,7 @@ SCREEN_SIZE=`fallback_screen_arg`
+ export USER=root
+ export XSERVER_DEFAULT_ORIENTATION=normal
+
++INPUT_EXTRA_ARGS="+iglx"
+ ARGS="-br -pn -nolisten tcp $INPUT_EXTRA_ARGS"
+ DPI="100"
+ MOUSE=""
+--
+1.9.1
+
diff --git a/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-graphics/xserver-common/xserver-common_%.bbappend b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-graphics/xserver-common/xserver-common_%.bbappend
new file mode 100644
index 00000000..f4f43504
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-graphics/xserver-common/xserver-common_%.bbappend
@@ -0,0 +1,8 @@
+# i.MX extra configuration
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_imxgpu3d = " \
+ file://0016-xserver-common-enable-iglx-module.patch \
+"
+
+PACKAGE_ARCH_imxgpu3d = "${MACHINE_SOCARCH}"
diff --git a/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv/0001-MGS-515-ccc-Opencv-app-can-t-run-on-imx6sx-with-cam.patch b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv/0001-MGS-515-ccc-Opencv-app-can-t-run-on-imx6sx-with-cam.patch
new file mode 100644
index 00000000..274fbe74
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv/0001-MGS-515-ccc-Opencv-app-can-t-run-on-imx6sx-with-cam.patch
@@ -0,0 +1,46 @@
+From 90f869763026e8ff18aeecde217d778f00e4f294 Mon Sep 17 00:00:00 2001
+From: Shawn Xiao <b49994@freescale.com>
+Date: Tue, 10 Feb 2015 16:11:59 +0800
+Subject: [PATCH] MGS-515 [#ccc] Opencv app can't run on imx6sx with cam
+
+This issue is caused by the no support of VIDIOC_QUERYCTRL ioctl
+item in latest cam driver.
+
+Modified the errno in check logic to compatible with new driver.
+
+Feb 10, 2015
+
+Upstream-Status: Pending
+
+Signed-off-by: Shawn Xiao <b49994@freescale.com>
+---
+ modules/highgui/src/cap_v4l.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/modules/highgui/src/cap_v4l.cpp b/modules/highgui/src/cap_v4l.cpp
+index c9fca05..8c46b6c 100644
+--- a/modules/highgui/src/cap_v4l.cpp
++++ b/modules/highgui/src/cap_v4l.cpp
+@@ -707,7 +707,8 @@ static void v4l2_scan_controls(CvCaptureCAM_V4L* capture)
+
+ } else {
+
+- if (errno == EINVAL)
++ if (errno == ENOTTY ||
++ errno == EINVAL)
+ continue;
+
+ perror ("VIDIOC_QUERYCTRL");
+@@ -774,7 +775,8 @@ static void v4l2_scan_controls(CvCaptureCAM_V4L* capture)
+
+ } else {
+
+- if (errno == EINVAL)
++ if (errno == ENOTTY ||
++ errno == EINVAL)
+ break;
+
+ perror ("VIDIOC_QUERYCTRL");
+--
+2.3.0
+
diff --git a/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv_3.4.%.bbappend b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv_3.4.%.bbappend
new file mode 100644
index 00000000..3c4c7f5e
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/opencv/opencv_3.4.%.bbappend
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_mx6sx = " file://0001-MGS-515-ccc-Opencv-app-can-t-run-on-imx6sx-with-cam.patch"
+
+PACKAGECONFIG_remove_imxgpu2d = "v4l"
diff --git a/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/sg3-utils/sg3-utils_%.bbappend b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/sg3-utils/sg3-utils_%.bbappend
new file mode 100644
index 00000000..608377e3
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/openembedded-layer/recipes-support/sg3-utils/sg3-utils_%.bbappend
@@ -0,0 +1 @@
+BBCLASSEXTEND = "native nativesdk"
diff --git a/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-embedded_%.bbappend b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-embedded_%.bbappend
new file mode 100644
index 00000000..14324ca1
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-embedded_%.bbappend
@@ -0,0 +1 @@
+include qt4-imx-support.inc
diff --git a/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-imx-support.inc b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-imx-support.inc
new file mode 100644
index 00000000..b7171ebc
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-imx-support.inc
@@ -0,0 +1,28 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/qt4:"
+
+python __anonymous () {
+ families = ['mx6']
+ cur_families = (d.getVar('MACHINEOVERRIDES', True) or '').split(':')
+ if any(map(lambda x: x in cur_families,
+ families)):
+ d.appendVarFlag('do_configure', 'depends', ' virtual/kernel:do_shared_workdir')
+}
+
+SRC_URI_append_imxgpu2d += " \
+ file://0001-Add-support-for-i.MX-codecs-to-phonon.patch \
+ file://0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch \
+ file://0003-i.MX6-force-egl-visual-ID-33.patch \
+"
+
+DEPENDS_append_imxgpu2d = " virtual/kernel virtual/libgles2"
+QT_GLFLAGS_imxgpu2d = "-opengl es2 -openvg"
+QT_CONFIG_FLAGS_append_imxgpu2d = " -I${STAGING_KERNEL_DIR}/include/uapi \
+ -I${STAGING_KERNEL_DIR}/include/ \
+ -DLINUX=1 -DEGL_API_FB=1 \
+ -DQT_QPA_EXPERIMENTAL_TOUCHEVENT=1"
+
+# The QT_CONFIG_FLAGS can pollute *.la files with -Dxxx
+do_compile_append_mx6 () {
+ find lib -name "*.la" | xargs -n1 sed -i 's/-D.*=1//g'
+}
+
diff --git a/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-x11-free_%.bbappend b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-x11-free_%.bbappend
new file mode 100644
index 00000000..14324ca1
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4-x11-free_%.bbappend
@@ -0,0 +1 @@
+include qt4-imx-support.inc
diff --git a/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0001-Add-support-for-i.MX-codecs-to-phonon.patch b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0001-Add-support-for-i.MX-codecs-to-phonon.patch
new file mode 100644
index 00000000..1213650c
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0001-Add-support-for-i.MX-codecs-to-phonon.patch
@@ -0,0 +1,468 @@
+From 2ff5682e42771519757756dedbf27b7a9e8e25d9 Mon Sep 17 00:00:00 2001
+From: Rogerio Pimentel <rogerio.pimentel@freescale.com>
+Date: Tue, 24 Jul 2012 13:47:01 -0300
+Subject: [PATCH] Add support for i.MX codecs to phonon
+
+Add support for i.MX codecs to phonon
+
+Signed-off-by: Daniele Dall'Acqua <daniele.d@freescale.com>
+Signed-off-by: Rogerio Pimentel <rogerio.pimentel@freescale.com>
+---
+ src/3rdparty/phonon/gstreamer/abstractrenderer.h | 1 +
+ src/3rdparty/phonon/gstreamer/mediaobject.cpp | 4 +
+ src/3rdparty/phonon/gstreamer/videowidget.cpp | 60 ++------
+ src/3rdparty/phonon/gstreamer/videowidget.h | 1 +
+ src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 169 ++++++++++++++--------
+ src/3rdparty/phonon/gstreamer/widgetrenderer.h | 17 ++-
+ src/3rdparty/phonon/gstreamer/x11renderer.cpp | 22 +---
+ 7 files changed, 141 insertions(+), 133 deletions(-)
+
+diff --git a/src/3rdparty/phonon/gstreamer/abstractrenderer.h b/src/3rdparty/phonon/gstreamer/abstractrenderer.h
+index 10a2822..fa0d87d 100644
+--- a/src/3rdparty/phonon/gstreamer/abstractrenderer.h
++++ b/src/3rdparty/phonon/gstreamer/abstractrenderer.h
+@@ -49,6 +49,7 @@ public:
+ virtual bool eventFilter(QEvent *) = 0;
+ virtual void handlePaint(QPaintEvent *) {}
+ virtual bool paintsOnWidget() { return true; } // Controls overlays
++ virtual void handleMove(QMoveEvent * event ) {};
+
+ protected:
+ VideoWidget *m_videoWidget;
+diff --git a/src/3rdparty/phonon/gstreamer/mediaobject.cpp b/src/3rdparty/phonon/gstreamer/mediaobject.cpp
+index 23a60c0..f806d64 100644
+--- a/src/3rdparty/phonon/gstreamer/mediaobject.cpp
++++ b/src/3rdparty/phonon/gstreamer/mediaobject.cpp
+@@ -515,6 +515,9 @@ void MediaObject::createPipeline()
+ // reduce buffer overruns as these are not gracefully handled at the moment.
+ m_audioPipe = gst_element_factory_make("queue", NULL);
+ g_object_set(G_OBJECT(m_audioPipe), "max-size-time", MAX_QUEUE_TIME, (const char*)NULL);
++ g_object_set(G_OBJECT(m_audioPipe), "max-size-time", 0, (const char*)NULL);
++ g_object_set(G_OBJECT(m_audioPipe), "max-size-buffers", 0, (const char*)NULL);
++ g_object_set(G_OBJECT(m_audioPipe), "max-size-bytes", 0, (const char*)NULL);
+ gst_bin_add(GST_BIN(m_audioGraph), m_audioPipe);
+ GstPad *audiopad = gst_element_get_pad (m_audioPipe, "sink");
+ gst_element_add_pad (m_audioGraph, gst_ghost_pad_new ("sink", audiopad));
+@@ -527,6 +530,7 @@ void MediaObject::createPipeline()
+
+ m_videoPipe = gst_element_factory_make("queue", NULL);
+ g_object_set(G_OBJECT(m_videoPipe), "max-size-time", MAX_QUEUE_TIME, (const char*)NULL);
++ g_object_set(G_OBJECT(m_videoPipe), "max-size-time", 33000, (const char*)NULL);
+ gst_bin_add(GST_BIN(m_videoGraph), m_videoPipe);
+ GstPad *videopad = gst_element_get_pad (m_videoPipe, "sink");
+ gst_element_add_pad (m_videoGraph, gst_ghost_pad_new ("sink", videopad));
+diff --git a/src/3rdparty/phonon/gstreamer/videowidget.cpp b/src/3rdparty/phonon/gstreamer/videowidget.cpp
+index a4c6f79..3682d3f 100644
+--- a/src/3rdparty/phonon/gstreamer/videowidget.cpp
++++ b/src/3rdparty/phonon/gstreamer/videowidget.cpp
+@@ -83,50 +83,16 @@ void VideoWidget::setupVideoBin()
+ Q_ASSERT(m_videoBin);
+ gst_object_ref (GST_OBJECT (m_videoBin)); //Take ownership
+ gst_object_sink (GST_OBJECT (m_videoBin));
+-
+- //The videoplug element is the final element before the pluggable videosink
+- m_videoplug = gst_element_factory_make ("identity", NULL);
+-
+- //Colorspace ensures that the output of the stream matches the input format accepted by our video sink
+- m_colorspace = gst_element_factory_make ("ffmpegcolorspace", NULL);
+-
+- //Video scale is used to prepare the correct aspect ratio and scale.
+- GstElement *videoScale = gst_element_factory_make ("videoscale", NULL);
+-
+- //We need a queue to support the tee from parent node
+- GstElement *queue = gst_element_factory_make ("queue", NULL);
+-
+- if (queue && m_videoBin && videoScale && m_colorspace && videoSink && m_videoplug) {
+- //Ensure that the bare essentials are prepared
+- gst_bin_add_many (GST_BIN (m_videoBin), queue, m_colorspace, m_videoplug, videoScale, videoSink, (const char*)NULL);
+- bool success = false;
+- //Video balance controls color/sat/hue in the YUV colorspace
+- m_videoBalance = gst_element_factory_make ("videobalance", NULL);
+- if (m_videoBalance) {
+- // For video balance to work we have to first ensure that the video is in YUV colorspace,
+- // then hand it off to the videobalance filter before finally converting it back to RGB.
+- // Hence we nede a videoFilter to convert the colorspace before and after videobalance
+- GstElement *m_colorspace2 = gst_element_factory_make ("ffmpegcolorspace", NULL);
+- gst_bin_add_many(GST_BIN(m_videoBin), m_videoBalance, m_colorspace2, (const char*)NULL);
+- success = gst_element_link_many(queue, m_colorspace, m_videoBalance, m_colorspace2, videoScale, m_videoplug, videoSink, (const char*)NULL);
+- } else {
+- //If video balance is not available, just connect to sink directly
+- success = gst_element_link_many(queue, m_colorspace, videoScale, m_videoplug, videoSink, (const char*)NULL);
+- }
+-
+- if (success) {
+- GstPad *videopad = gst_element_get_pad (queue, "sink");
+- gst_element_add_pad (m_videoBin, gst_ghost_pad_new ("sink", videopad));
+- gst_object_unref (videopad);
+-#ifndef Q_WS_QPA
+- QWidget *parentWidget = qobject_cast<QWidget*>(parent());
+- if (parentWidget)
+- parentWidget->winId(); // Due to some existing issues with alien in 4.4,
+- // we must currently force the creation of a parent widget.
+-#endif
+- m_isValid = true; //initialization ok, accept input
+- }
+- }
++ gst_bin_add_many (GST_BIN (m_videoBin), videoSink, NULL);
++ GstPad *videopad = gst_element_get_pad (videoSink,"sink");
++ gst_element_add_pad (m_videoBin, gst_ghost_pad_new ("sink", videopad));
++ gst_object_unref (videopad);
++ QWidget *parentWidget = qobject_cast<QWidget*>(parent());
++
++ if (parentWidget)
++ parentWidget->winId(); // Due to some existing issues with alien in 4.4,
++ // we must currently force the creation of a parent widget.
++ m_isValid = true; //initialization ok, accept input
+ }
+
+ void VideoWidget::paintEvent(QPaintEvent *event)
+@@ -135,6 +101,12 @@ void VideoWidget::paintEvent(QPaintEvent *event)
+ m_renderer->handlePaint(event);
+ }
+
++void VideoWidget::moveEvent(QMoveEvent * event )
++{
++ Q_ASSERT(m_renderer);
++ m_renderer->handleMove(event);
++}
++
+ void VideoWidget::setVisible(bool val) {
+ Q_ASSERT(m_renderer);
+
+diff --git a/src/3rdparty/phonon/gstreamer/videowidget.h b/src/3rdparty/phonon/gstreamer/videowidget.h
+index 8603f6a..38c7b17 100644
+--- a/src/3rdparty/phonon/gstreamer/videowidget.h
++++ b/src/3rdparty/phonon/gstreamer/videowidget.h
+@@ -65,6 +65,7 @@ public:
+ qreal saturation() const;
+ void setSaturation(qreal);
+ void setMovieSize(const QSize &size);
++ void moveEvent(QMoveEvent * event );
+ QSize sizeHint() const;
+ QRect scaleToAspect(QRect srcRect, int w, int h) const;
+ QRect calculateDrawFrameRect() const;
+diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
+index 423af9d..aa4925a 100644
+--- a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
++++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
+@@ -15,7 +15,9 @@
+ along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
++#include <QMouseEvent>
+ #include <QtGui/QPainter>
++#include <QPaintEvent>
+ #include <gst/gst.h>
+ #include "common.h"
+ #include "message.h"
+@@ -24,6 +26,18 @@
+ #include "widgetrenderer.h"
+ #include "qrgb.h"
+
++#include <stdio.h>
++#include <stdlib.h>
++#include <errno.h>
++#include <stdint.h>
++#include <fcntl.h>
++#include <sys/ioctl.h>
++#include <unistd.h>
++#include <linux/mxcfb.h>
++
++#define MXCFB_GBL_ALPHA 255
++#define MXCFB_CLR_KEY 0x00000000 // ARGB8888
++
+ // support old OpenGL installations (1.2)
+ // assume that if TEXTURE0 isn't defined, none are
+ #ifndef GL_TEXTURE0
+@@ -35,26 +49,6 @@
+ #ifndef QT_NO_PHONON_VIDEO
+ QT_BEGIN_NAMESPACE
+
+-static void frameRendered()
+-{
+- static QString displayFps = qgetenv("PHONON_GST_FPS");
+- if (displayFps.isEmpty())
+- return;
+-
+- static int frames = 0;
+- static QTime lastTime = QTime::currentTime();
+- QTime time = QTime::currentTime();
+-
+- int delta = lastTime.msecsTo(time);
+- if (delta > 2000) {
+- printf("FPS: %f\n", 1000.0 * frames / qreal(delta));
+- lastTime = time;
+- frames = 0;
+- }
+-
+- ++frames;
+-}
+-
+ namespace Phonon
+ {
+ namespace Gstreamer
+@@ -62,17 +56,11 @@ namespace Gstreamer
+
+ WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget)
+ : AbstractRenderer(videoWidget)
+- , m_width(0)
+- , m_height(0)
+ {
+- videoWidget->backend()->logMessage("Creating QWidget renderer");
+- if ((m_videoSink = GST_ELEMENT(g_object_new(get_type_RGB(), NULL)))) {
+- gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership
++ if ((m_videoSink = gst_element_factory_make("mfw_v4lsink", NULL)) && m_videoSink != NULL) {
++
++ gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership
+ gst_object_sink (GST_OBJECT (m_videoSink));
+-
+- QWidgetVideoSinkBase* sink = reinterpret_cast<QWidgetVideoSinkBase*>(m_videoSink);
+- // Let the videosink know which widget to direct frame updates to
+- sink->renderWidget = videoWidget;
+ }
+
+ // Clear the background with black by default
+@@ -84,67 +72,124 @@ WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget)
+ m_videoWidget->setAttribute(Qt::WA_PaintOnScreen, false);
+ }
+
+-void WidgetRenderer::setNextFrame(const QByteArray &array, int w, int h)
++WidgetRenderer::~WidgetRenderer()
+ {
+- if (m_videoWidget->root()->state() == Phonon::LoadingState)
+- return;
+-
+- m_frame = QImage();
+- {
+- m_frame = QImage((uchar *)array.constData(), w, h, QImage::Format_RGB32);
+- }
++ if (m_videoSink) {
++ gst_object_unref (GST_OBJECT (m_videoSink));
++ m_videoSink = 0;
++ }
++}
+
+- m_array = array;
+- m_width = w;
+- m_height = h;
++void WidgetRenderer::setVideoSize(void)
++{
+
+- m_videoWidget->update();
++ int adj_x;
++ int adj_y;
++
++ QSize wSize = m_videoWidget->size();
++ m_drawFrameRect = m_videoWidget->calculateDrawFrameRect();
++ framePos = m_videoWidget->mapToGlobal(QPoint(0,0));
++
++ //Center the video in the widget
++
++ adj_x = (wSize.width()/2) - (m_drawFrameRect.width()/2);
++ adj_y = (wSize.height()/2) - (m_drawFrameRect.height()/2);
++ g_object_set(G_OBJECT(m_videoSink), "axis-left",adj_x + framePos.x(),(const char*)NULL);
++ g_object_set(G_OBJECT(m_videoSink), "axis-top", adj_y + framePos.y(), (const char*)NULL);
++ g_object_set(G_OBJECT(m_videoSink), "disp-width", m_drawFrameRect.width(), (const char*)NULL);
++ g_object_set(G_OBJECT(m_videoSink), "disp-height", m_drawFrameRect.height(), (const char*)NULL);
++ g_object_set(G_OBJECT(m_videoSink), "setpara", 1, (const char*)NULL);
+ }
+
+ void WidgetRenderer::handleMediaNodeEvent(const MediaNodeEvent *event)
+ {
+ switch (event->type()) {
+- case MediaNodeEvent::SourceChanged:
+- {
+- clearFrame();
+- break;
+- }
+ default:
+ break;
+ }
+ }
+
+-void WidgetRenderer::clearFrame()
++void WidgetRenderer::handlePaint(QPaintEvent *event)
+ {
+- m_frame = QImage();
+- m_array = QByteArray();
+- m_videoWidget->update();
++ Q_UNUSED(event);
++ QPainter painter(m_videoWidget);
++ painter.fillRect(m_videoWidget->rect(), m_videoWidget->palette().background());
+ }
+
+-const QImage &WidgetRenderer::currentFrame() const
++int WidgetRenderer::setOverlay(void)
+ {
+- return m_frame;
++ struct mxcfb_color_key color_key;
++ struct mxcfb_gbl_alpha alpha;
++ int fd_fb;
++
++ if ((fd_fb = open("/dev/fb0", O_RDWR, 0)) < 0)
++ {
++ printf("Unable to open %s\n", "/dev/fb0");
++ return -1;
++
++ }
++
++ alpha.alpha = MXCFB_GBL_ALPHA;
++ alpha.enable = 1;
++
++ if (ioctl(fd_fb, MXCFB_SET_GBL_ALPHA, &alpha) < 0) {
++ printf("Error in applying Alpha\n");
++ }
++
++ color_key.color_key = MXCFB_CLR_KEY & 0x00FFFFFF;
++ color_key.enable = 1;
++ if ( ioctl(fd_fb, MXCFB_SET_CLR_KEY, &color_key) < 0) {
++
++ printf("Error in applying Color Key\n");
++ return -1;
++ }
++
++ close (fd_fb);
++
++ return 0;
+ }
+
+-void WidgetRenderer::handlePaint(QPaintEvent *event)
++void WidgetRenderer::handleMove( QMoveEvent * event)
+ {
+- Q_UNUSED(event);
+- QPainter painter(m_videoWidget);
+- m_drawFrameRect = m_videoWidget->calculateDrawFrameRect();
+- painter.drawImage(drawFrameRect(), currentFrame());
+- frameRendered();
++ Q_UNUSED(event);
++
++ if (framePos != m_videoWidget->mapToGlobal(QPoint(0,0)))
++ setVideoSize();
+ }
+
+ bool WidgetRenderer::eventFilter(QEvent * event)
+ {
+- if (event->type() == QEvent::User) {
+- NewFrameEvent *frameEvent= static_cast <NewFrameEvent *>(event);
+- setNextFrame(frameEvent->frame, frameEvent->width, frameEvent->height);
+- return true;
++ if (event->type() == QEvent::Show) {
++
++ setOverlay();
++ return true;
++
++ } else if (event->type() == QEvent::Resize) {
++
++ setVideoSize();
++ return true;
+ }
++ if (framePos != m_videoWidget->mapToGlobal(QPoint(0,0)))
++ setVideoSize();
+ return false;
+ }
+
++void WidgetRenderer::aspectRatioChanged(Phonon::VideoWidget::AspectRatio)
++{
++ setVideoSize();
++}
++
++void WidgetRenderer::scaleModeChanged(Phonon::VideoWidget::ScaleMode)
++{
++ setVideoSize();
++}
++
++void WidgetRenderer::movieSizeChanged(const QSize &movieSize)
++{
++ Q_UNUSED(movieSize);
++ setVideoSize();
++}
++
+ }
+ } //namespace Phonon::Gstreamer
+
+diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.h b/src/3rdparty/phonon/gstreamer/widgetrenderer.h
+index 03ee9c0..6de1a03 100644
+--- a/src/3rdparty/phonon/gstreamer/widgetrenderer.h
++++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.h
+@@ -40,20 +40,21 @@ class WidgetRenderer : public AbstractRenderer
+ {
+ public:
+ WidgetRenderer(VideoWidget *videoWidget);
++ ~WidgetRenderer(void);
+ bool eventFilter(QEvent * event);
+ void handlePaint(QPaintEvent *paintEvent);
+ void handleMediaNodeEvent(const MediaNodeEvent *event);
+- const QImage& currentFrame() const;
+ QRect drawFrameRect() const { return m_drawFrameRect; }
+- void setNextFrame(const QByteArray &array, int width, int height);
+- bool frameIsSet() { return !m_array.isNull(); }
+- void clearFrame();
++ void aspectRatioChanged(Phonon::VideoWidget::AspectRatio aspectRatio);
++ void scaleModeChanged(Phonon::VideoWidget::ScaleMode scaleMode);
++ void movieSizeChanged(const QSize &movieSize);
++ void setVideoSize(void);
++ int setOverlay(void);
++ void handleMove(QMoveEvent* event);
+ private:
+- mutable QImage m_frame;
+- QByteArray m_array;
+- int m_width;
+- int m_height;
++ void paintEvent ( QPaintEvent * event );
+ QRect m_drawFrameRect;
++ QPoint framePos;
+ };
+
+ }
+diff --git a/src/3rdparty/phonon/gstreamer/x11renderer.cpp b/src/3rdparty/phonon/gstreamer/x11renderer.cpp
+index 968f3a8..c4662e7 100644
+--- a/src/3rdparty/phonon/gstreamer/x11renderer.cpp
++++ b/src/3rdparty/phonon/gstreamer/x11renderer.cpp
+@@ -31,6 +31,8 @@
+ #include "mediaobject.h"
+ #include "message.h"
+
++#define FSL_GSTREAMER 1
++
+ QT_BEGIN_NAMESPACE
+
+ namespace Phonon
+@@ -78,31 +80,16 @@ X11Renderer::~X11Renderer()
+ {
+ m_renderWidget->setAttribute(Qt::WA_PaintOnScreen, false);
+ m_renderWidget->setAttribute(Qt::WA_NoSystemBackground, false);
++ if (m_videoSink) {
++ gst_object_unref (GST_OBJECT (m_videoSink));
++ }
+ delete m_renderWidget;
+ }
+
+ GstElement* X11Renderer::createVideoSink()
+ {
+- GstElement *videoSink = gst_element_factory_make ("xvimagesink", NULL);
+- if (videoSink) {
+- // Check if the xv sink is usable
+- if (gst_element_set_state(videoSink, GST_STATE_READY) != GST_STATE_CHANGE_SUCCESS) {
+- gst_object_unref(GST_OBJECT(videoSink));
+- videoSink = 0;
+- } else {
+- // Note that this should not really be necessary as these are
+- // default values, though under certain conditions values are retained
+- // even between application instances. (reproducible on 0.10.16/Gutsy)
+- g_object_set(G_OBJECT(videoSink), "brightness", 0, (const char*)NULL);
+- g_object_set(G_OBJECT(videoSink), "contrast", 0, (const char*)NULL);
+- g_object_set(G_OBJECT(videoSink), "hue", 0, (const char*)NULL);
+- g_object_set(G_OBJECT(videoSink), "saturation", 0, (const char*)NULL);
+- }
+- }
+-
+- if (!videoSink)
+- videoSink = gst_element_factory_make ("ximagesink", NULL);
+
++ GstElement *videoSink = gst_element_factory_make ("mfw_v4lsink", NULL);
+ gst_object_ref (GST_OBJECT (videoSink)); //Take ownership
+ gst_object_sink (GST_OBJECT (videoSink));
+
+--
+1.7.1
+
diff --git a/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch
new file mode 100644
index 00000000..0226db59
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0002-i.MX-video-renderer-Allow-v4l-device-from-environmen.patch
@@ -0,0 +1,46 @@
+From 023befba9aad60ef58177fd987a6aa40c357b2b2 Mon Sep 17 00:00:00 2001
+From: Eric Nelson <eric.nelson@boundarydevices.com>
+Date: Fri, 16 Aug 2013 11:42:23 -0700
+Subject: [PATCH] i.MX video renderer: Allow v4l device from environment
+
+The i.MX6 supports multiple IPUs and multiple V4L2 output
+devices for each.
+
+Devices are numbered starting with /dev/video16 and defined
+for each configured display. In general, /dev/video16 will
+correspond to the RGB (background) layer for /dev/fb0.
+If a display is the first on an IPU, an additional V4L2
+output will be defined that corresponds to the normally
+YUV overlay (foreground) layer.
+
+This patch allows association of the proper device for
+a particular session for use in multi-headed applications.
+The default is /dev/video17:
+ export v4lsinkdev=/dev/video17
+
+Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
+---
+ src/3rdparty/phonon/gstreamer/widgetrenderer.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
+index aa4925a..a502ccd 100644
+--- a/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
++++ b/src/3rdparty/phonon/gstreamer/widgetrenderer.cpp
+@@ -58,9 +58,12 @@ WidgetRenderer::WidgetRenderer(VideoWidget *videoWidget)
+ : AbstractRenderer(videoWidget)
+ {
+ if ((m_videoSink = gst_element_factory_make("mfw_v4lsink", NULL)) && m_videoSink != NULL) {
+-
++ char *videodev;
+ gst_object_ref (GST_OBJECT (m_videoSink)); //Take ownership
+ gst_object_sink (GST_OBJECT (m_videoSink));
++ videodev=getenv("v4lsinkdev");
++ if (videodev)
++ g_object_set (G_OBJECT (m_videoSink), "device", videodev, NULL);
+ }
+
+ // Clear the background with black by default
+--
+1.8.1.2
+
diff --git a/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0003-i.MX6-force-egl-visual-ID-33.patch b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0003-i.MX6-force-egl-visual-ID-33.patch
new file mode 100644
index 00000000..9aa158d7
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/0003-i.MX6-force-egl-visual-ID-33.patch
@@ -0,0 +1,35 @@
+From: Javier Viguera <javier.viguera@digi.com>
+Date: Mon, 3 Mar 2014 17:10:41 +0100
+Subject: [PATCH] i.MX6: force egl visual ID 33
+
+Workaround mismatch between EGL binary libraries and QT for FSL MX6
+based platforms.
+
+Error:
+Warning: EGL suggested using X Visual ID 33 (ARGB0888) for EGL config 28 (ARGB0444), but this is incompatable
+Unable to find an X11 visual which matches EGL config 28
+
+Patch adapted from:
+
+http://wiki.wandboard.org/index.php/Integrate_Qt5_into_yocto_sato_image_on_Wandboard
+
+Upstream-Status: Inappropriate [workaround]
+
+Signed-off-by: Javier Viguera <javier.viguera@digi.com>
+---
+ src/gui/egl/qegl_x11.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp
+index 196d0f77bf2d..8acf5a6c99d4 100644
+--- a/src/gui/egl/qegl_x11.cpp
++++ b/src/gui/egl/qegl_x11.cpp
+@@ -319,7 +319,7 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config)
+ }
+
+ qWarning("Unable to find an X11 visual which matches EGL config %d", configId);
+- return (VisualID)0;
++ return (VisualID)33;
+ }
+
+ void qt_set_winid_on_widget(QWidget* w, Qt::HANDLE id)
diff --git a/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/mx6/g++.conf b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/mx6/g++.conf
new file mode 100644
index 00000000..915ecba0
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/mx6/g++.conf
@@ -0,0 +1,40 @@
+#
+# qmake configuration for common gcc
+#
+
+QMAKE_COMPILER = gcc
+
+QMAKE_CC = $(OE_QMAKE_CC)
+QMAKE_CFLAGS += $(OE_QMAKE_CFLAGS) -DLINUX=1 -DEGL_API_FB=1
+QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $(OE_QMAKE_CFLAGS)
+QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
+
+QMAKE_CXX = $(OE_QMAKE_CXX)
+QMAKE_CXXFLAGS += $(OE_QMAKE_CXXFLAGS) -DLINUX=1 -DEGL_API_FB=1
+QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
+QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+QMAKE_LINK = $(OE_QMAKE_LINK)
+QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK)
+QMAKE_LINK_C = $(OE_QMAKE_LINK)
+QMAKE_LINK_C_SHLIB = $(OE_QMAKE_LINK)
+QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS)
+QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined
+QMAKE_LFLAGS_RPATH = -Wl,-rpath-link,
+
+QMAKE_PCH_OUTPUT_EXT = .gch
+
+# -Bsymbolic-functions (ld) support
+QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
+QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
+
+# do not depend on gdb
+CONFIG -= gdb_dwarf_index
+
+# some linking helper...
+CONFIG += rpath_libdirs
+
+# for the SDK
+isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $(OE_QMAKE_QT_CONFIG)
diff --git a/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/mx6/linux.conf b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/mx6/linux.conf
new file mode 100644
index 00000000..c644d8ba
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt4-layer/recipes-qt4/qt4/qt4/mx6/linux.conf
@@ -0,0 +1,66 @@
+#
+# qmake configuration for common linux
+#
+
+QMAKE_CFLAGS_THREAD += -D_REENTRANT
+QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
+
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT)
+QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT)
+QMAKE_INCDIR_OPENGL =
+QMAKE_LIBDIR_OPENGL =
+QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL
+QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL
+QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
+QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
+QMAKE_INCDIR_EGL =
+QMAKE_LIBDIR_EGL =
+QMAKE_INCDIR_OPENVG =
+QMAKE_LIBDIR_OPENVG =
+
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11)
+QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM)
+QMAKE_LIBS_NIS = -lnsl
+QMAKE_LIBS_EGL = -lEGL -lGAL -DLINUX=1 -DEGL_API_FB=1
+QMAKE_LIBS_OPENGL = -lGL
+QMAKE_LIBS_OPENGL_QT = -lGL
+QMAKE_LIBS_OPENGL_ES1 = -lGLES_CM
+QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -lGAL -lEGL -DLINUX=1 -DEGL_API_FB=1
+QMAKE_LIBS_OPENVG = -lOpenVG -lGAL -lEGL -DLINUX=1 -DEGL_API_FB=1
+QMAKE_LIBS_THREAD = -lpthread
+
+QMAKE_MOC = $(OE_QMAKE_MOC)
+QMAKE_UIC = $(OE_QMAKE_UIC)
+QMAKE_UIC3 = $(OE_QMAKE_UIC3)
+QMAKE_RCC = $(OE_QMAKE_RCC)
+QMAKE_QDBUSCPP2XML = $(OE_QMAKE_QDBUSCPP2XML)
+QMAKE_QDBUSXML2CPP = $(OE_QMAKE_QDBUSXML2CPP)
+
+QMAKE_AR = $(OE_QMAKE_AR) cqs
+QMAKE_OBJCOPY = objcopy
+QMAKE_RANLIB =
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $(COPY)
+QMAKE_COPY_DIR = $(COPY) -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_STRIP = $(OE_QMAKE_STRIP)
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+QMAKE_INSTALL_FILE = install -m 644 -p
+QMAKE_INSTALL_PROGRAM = install -m 755 -p
+
+include(unix.conf)
diff --git a/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0001-egl.prf-Fix-build-error-when-egl-headers-need-platfo.patch b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0001-egl.prf-Fix-build-error-when-egl-headers-need-platfo.patch
new file mode 100644
index 00000000..7e625fd1
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0001-egl.prf-Fix-build-error-when-egl-headers-need-platfo.patch
@@ -0,0 +1,32 @@
+From 3f9703fecd670b36030e1093466f6d11b370c19f Mon Sep 17 00:00:00 2001
+From: Yuqing Zhu <carol.zhu@nxp.com>
+Date: Mon, 27 Mar 2017 15:33:35 +0800
+Subject: [PATCH] egl.prf: Fix build error when egl headers need platform
+ definition
+
+Gain the value through pkg-config and pass it through QMAKE_CFLAGS_EGL.
+
+Upstream-Status: Pending
+
+Signed-off-by: Yuqing Zhu <carol.zhu@nxp.com>
+---
+ mkspecs/features/egl.prf | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/mkspecs/features/egl.prf b/mkspecs/features/egl.prf
+index 9fa0c9e..85d5852 100644
+--- a/mkspecs/features/egl.prf
++++ b/mkspecs/features/egl.prf
+@@ -1,3 +1,9 @@
++# egl headers need a definition
++PKG_CONFIG = $$pkgConfigExecutable()
++PKGCONFIG_CFLAGS = $$system($$PKG_CONFIG --cflags egl)
++PKGCONFIG_CFLAGS = $$find(PKGCONFIG_CFLAGS, ^-D.*)
++QMAKE_CFLAGS_EGL = $$PKGCONFIG_CFLAGS
++
+ INCLUDEPATH += $$QMAKE_INCDIR_EGL
+ LIBS_PRIVATE += $$QMAKE_LIBS_EGL
+ QMAKE_CFLAGS += $$QMAKE_CFLAGS_EGL
+--
+1.9.1
+
diff --git a/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0014-Add-IMX-GPU-support.patch b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0014-Add-IMX-GPU-support.patch
new file mode 100644
index 00000000..e86d9ed5
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0014-Add-IMX-GPU-support.patch
@@ -0,0 +1,14 @@
+Index: git/mkspecs/linux-oe-g++/qmake.conf
+===================================================================
+--- git.orig/mkspecs/linux-oe-g++/qmake.conf 2017-06-26 10:20:57.139653321 -0500
++++ git/mkspecs/linux-oe-g++/qmake.conf 2017-06-26 10:30:12.000000000 -0500
+@@ -39,5 +39,9 @@
+
+ include(../oe-device-extra.pri)
+
++QMAKE_LIBS_EGL += -lEGL
++QMAKE_LIBS_OPENGL_ES2 += -lEGL -lGLESv2
++QMAKE_LIBS_OPENVG += -lEGL -lOpenVG
++
+ load(device_config)
+ load(qt_config)
diff --git a/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0015-Add-eglfs-to-IMX-GPU.patch b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0015-Add-eglfs-to-IMX-GPU.patch
new file mode 100644
index 00000000..8e7129e3
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0015-Add-eglfs-to-IMX-GPU.patch
@@ -0,0 +1,13 @@
+Index: git/mkspecs/linux-oe-g++/qmake.conf
+===================================================================
+--- git.orig/mkspecs/linux-oe-g++/qmake.conf 2016-12-14 17:03:17.000000000 -0600
++++ git/mkspecs/linux-oe-g++/qmake.conf 2016-12-14 17:06:23.000000000 -0600
+@@ -37,6 +37,8 @@ QMAKE_LINK_C_SHLIB = $$(OE_QMAKE_LINK)
+ # for the SDK
+ isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $$(OE_QMAKE_QT_CONFIG)
+
++EGLFS_DEVICE_INTEGRATION = eglfs_viv
++
+ include(../oe-device-extra.pri)
+
+ QMAKE_LIBS_EGL += -lEGL
diff --git a/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0016-Configure-eglfs-with-egl-pkg-config.patch b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0016-Configure-eglfs-with-egl-pkg-config.patch
new file mode 100644
index 00000000..a245d79a
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase/0016-Configure-eglfs-with-egl-pkg-config.patch
@@ -0,0 +1,13 @@
+Index: git/src/plugins/platforms/eglfs/eglfs-plugin.pro
+===================================================================
+--- git.orig/src/plugins/platforms/eglfs/eglfs-plugin.pro 2017-01-04 16:54:05.000000000 -0600
++++ git/src/plugins/platforms/eglfs/eglfs-plugin.pro 2017-01-04 16:56:25.000000000 -0600
+@@ -2,6 +2,8 @@
+
+ QT += platformsupport-private eglfs_device_lib-private
+
++CONFIG += egl
++
+ SOURCES += $$PWD/qeglfsmain.cpp
+
+ OTHER_FILES += $$PWD/eglfs.json
diff --git a/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend
new file mode 100644
index 00000000..08a2cbe3
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtbase_%.bbappend
@@ -0,0 +1,32 @@
+# Copyright (C) 2013 Eric Bénard - Eukréa Electromatique
+# Copyright (C) 2016 Freescale Semiconductor
+# Copyright (C) 2016, 2017 O.S. Systems Software LTDA.
+# Copyright (C) 2017-2018 NXP
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_imxgpu2d = " \
+ file://0014-Add-IMX-GPU-support.patch \
+ file://0001-egl.prf-Fix-build-error-when-egl-headers-need-platfo.patch \
+"
+SRC_URI_APPEND_3D_NOT_X11 = " \
+ file://0015-Add-eglfs-to-IMX-GPU.patch \
+ file://0016-Configure-eglfs-with-egl-pkg-config.patch \
+"
+SRC_URI_append_imxgpu3d = " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '${SRC_URI_APPEND_3D_NOT_X11}', d)} \
+"
+
+PACKAGECONFIG_GL_imxpxp = "gles2"
+PACKAGECONFIG_GL_imxgpu2d = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', ' gl', '', d)}"
+PACKAGECONFIG_GL_imxgpu3d = "gles2"
+PACKAGECONFIG_GL_append_use-mainline-bsp = " gbm kms"
+
+PACKAGECONFIG_PLATFORM = ""
+PACKAGECONFIG_PLATFORM_imxgpu2d = "no-opengl linuxfb"
+PACKAGECONFIG_PLATFORM_imxgpu3d = " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', \
+ bb.utils.contains('DISTRO_FEATURES', 'wayland', '', \
+ 'eglfs', d), d)}"
+PACKAGECONFIG_PLATFORM_use-mainline-bsp = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'eglfs', d)}"
+PACKAGECONFIG += "${PACKAGECONFIG_PLATFORM}"
diff --git a/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend
new file mode 100644
index 00000000..7f61dc50
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/qt5-layer/recipes-qt/qt5/qtwayland_%.bbappend
@@ -0,0 +1,2 @@
+# etnaviv mesa does not have glx
+PACKAGECONFIG_remove_use-mainline-bsp = "xcomposite-glx"
diff --git a/bsp/meta-freescale/dynamic-layers/virtualization-layer/recipes-extended/libvirt/libvirt/qoriq-ppc/qemu.conf b/bsp/meta-freescale/dynamic-layers/virtualization-layer/recipes-extended/libvirt/libvirt/qoriq-ppc/qemu.conf
new file mode 100644
index 00000000..cc22fa13
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/virtualization-layer/recipes-extended/libvirt/libvirt/qoriq-ppc/qemu.conf
@@ -0,0 +1,465 @@
+# Master configuration file for the QEMU driver.
+# All settings described here are optional - if omitted, sensible
+# defaults are used.
+
+# VNC is configured to listen on 127.0.0.1 by default.
+# To make it listen on all public interfaces, uncomment
+# this next option.
+#
+# NB, strong recommendation to enable TLS + x509 certificate
+# verification when allowing public access
+#
+#vnc_listen = "0.0.0.0"
+
+# Enable this option to have VNC served over an automatically created
+# unix socket. This prevents unprivileged access from users on the
+# host machine, though most VNC clients do not support it.
+#
+# This will only be enabled for VNC configurations that do not have
+# a hardcoded 'listen' or 'socket' value. This setting takes preference
+# over vnc_listen.
+#
+#vnc_auto_unix_socket = 1
+
+# Enable use of TLS encryption on the VNC server. This requires
+# a VNC client which supports the VeNCrypt protocol extension.
+# Examples include vinagre, virt-viewer, virt-manager and vencrypt
+# itself. UltraVNC, RealVNC, TightVNC do not support this
+#
+# It is necessary to setup CA and issue a server certificate
+# before enabling this.
+#
+#vnc_tls = 1
+
+
+# Use of TLS requires that x509 certificates be issued. The
+# default it to keep them in /etc/pki/libvirt-vnc. This directory
+# must contain
+#
+# ca-cert.pem - the CA master certificate
+# server-cert.pem - the server certificate signed with ca-cert.pem
+# server-key.pem - the server private key
+#
+# This option allows the certificate directory to be changed
+#
+#vnc_tls_x509_cert_dir = "/etc/pki/libvirt-vnc"
+
+
+# The default TLS configuration only uses certificates for the server
+# allowing the client to verify the server's identity and establish
+# an encrypted channel.
+#
+# It is possible to use x509 certificates for authentication too, by
+# issuing a x509 certificate to every client who needs to connect.
+#
+# Enabling this option will reject any client who does not have a
+# certificate signed by the CA in /etc/pki/libvirt-vnc/ca-cert.pem
+#
+#vnc_tls_x509_verify = 1
+
+
+# The default VNC password. Only 8 letters are significant for
+# VNC passwords. This parameter is only used if the per-domain
+# XML config does not already provide a password. To allow
+# access without passwords, leave this commented out. An empty
+# string will still enable passwords, but be rejected by QEMU,
+# effectively preventing any use of VNC. Obviously change this
+# example here before you set this.
+#
+#vnc_password = "XYZ12345"
+
+
+# Enable use of SASL encryption on the VNC server. This requires
+# a VNC client which supports the SASL protocol extension.
+# Examples include vinagre, virt-viewer and virt-manager
+# itself. UltraVNC, RealVNC, TightVNC do not support this
+#
+# It is necessary to configure /etc/sasl2/qemu.conf to choose
+# the desired SASL plugin (eg, GSSPI for Kerberos)
+#
+#vnc_sasl = 1
+
+
+# The default SASL configuration file is located in /etc/sasl2/
+# When running libvirtd unprivileged, it may be desirable to
+# override the configs in this location. Set this parameter to
+# point to the directory, and create a qemu.conf in that location
+#
+#vnc_sasl_dir = "/some/directory/sasl2"
+
+
+# QEMU implements an extension for providing audio over a VNC connection,
+# though if your VNC client does not support it, your only chance for getting
+# sound output is through regular audio backends. By default, libvirt will
+# disable all QEMU sound backends if using VNC, since they can cause
+# permissions issues. Enabling this option will make libvirtd honor the
+# QEMU_AUDIO_DRV environment variable when using VNC.
+#
+#vnc_allow_host_audio = 0
+
+
+
+# SPICE is configured to listen on 127.0.0.1 by default.
+# To make it listen on all public interfaces, uncomment
+# this next option.
+#
+# NB, strong recommendation to enable TLS + x509 certificate
+# verification when allowing public access
+#
+#spice_listen = "0.0.0.0"
+
+
+# Enable use of TLS encryption on the SPICE server.
+#
+# It is necessary to setup CA and issue a server certificate
+# before enabling this.
+#
+#spice_tls = 1
+
+
+# Use of TLS requires that x509 certificates be issued. The
+# default it to keep them in /etc/pki/libvirt-spice. This directory
+# must contain
+#
+# ca-cert.pem - the CA master certificate
+# server-cert.pem - the server certificate signed with ca-cert.pem
+# server-key.pem - the server private key
+#
+# This option allows the certificate directory to be changed.
+#
+#spice_tls_x509_cert_dir = "/etc/pki/libvirt-spice"
+
+
+# The default SPICE password. This parameter is only used if the
+# per-domain XML config does not already provide a password. To
+# allow access without passwords, leave this commented out. An
+# empty string will still enable passwords, but be rejected by
+# QEMU, effectively preventing any use of SPICE. Obviously change
+# this example here before you set this.
+#
+#spice_password = "XYZ12345"
+
+
+# Enable use of SASL encryption on the SPICE server. This requires
+# a SPICE client which supports the SASL protocol extension.
+#
+# It is necessary to configure /etc/sasl2/qemu.conf to choose
+# the desired SASL plugin (eg, GSSPI for Kerberos)
+#
+#spice_sasl = 1
+
+# The default SASL configuration file is located in /etc/sasl2/
+# When running libvirtd unprivileged, it may be desirable to
+# override the configs in this location. Set this parameter to
+# point to the directory, and create a qemu.conf in that location
+#
+#spice_sasl_dir = "/some/directory/sasl2"
+
+
+# By default, if no graphical front end is configured, libvirt will disable
+# QEMU audio output since directly talking to alsa/pulseaudio may not work
+# with various security settings. If you know what you're doing, enable
+# the setting below and libvirt will passthrough the QEMU_AUDIO_DRV
+# environment variable when using nographics.
+#
+#nographics_allow_host_audio = 1
+
+
+# Override the port for creating both VNC and SPICE sessions (min).
+# This defaults to 5900 and increases for consecutive sessions
+# or when ports are occupied, until it hits the maximum.
+#
+# Minimum must be greater than or equal to 5900 as lower number would
+# result into negative vnc display number.
+#
+# Maximum must be less than 65536, because higher numbers do not make
+# sense as a port number.
+#
+#remote_display_port_min = 5900
+#remote_display_port_max = 65535
+
+# VNC WebSocket port policies, same rules apply as with remote display
+# ports. VNC WebSockets use similar display <-> port mappings, with
+# the exception being that ports starts from 5700 instead of 5900.
+#
+#remote_websocket_port_min = 5700
+#remote_websocket_port_max = 65535
+
+# The default security driver is SELinux. If SELinux is disabled
+# on the host, then the security driver will automatically disable
+# itself. If you wish to disable QEMU SELinux security driver while
+# leaving SELinux enabled for the host in general, then set this
+# to 'none' instead. It's also possible to use more than one security
+# driver at the same time, for this use a list of names separated by
+# comma and delimited by square brackets. For example:
+#
+# security_driver = [ "selinux", "apparmor" ]
+#
+# Notes: The DAC security driver is always enabled; as a result, the
+# value of security_driver cannot contain "dac". The value "none" is
+# a special value; security_driver can be set to that value in
+# isolation, but it cannot appear in a list of drivers.
+#
+#security_driver = "selinux"
+
+# If set to non-zero, then the default security labeling
+# will make guests confined. If set to zero, then guests
+# will be unconfined by default. Defaults to 1.
+#security_default_confined = 1
+
+# If set to non-zero, then attempts to create unconfined
+# guests will be blocked. Defaults to 0.
+#security_require_confined = 1
+
+# The user for QEMU processes run by the system instance. It can be
+# specified as a user name or as a user id. The qemu driver will try to
+# parse this value first as a name and then, if the name doesn't exist,
+# as a user id.
+#
+# Since a sequence of digits is a valid user name, a leading plus sign
+# can be used to ensure that a user id will not be interpreted as a user
+# name.
+#
+# Some examples of valid values are:
+#
+# user = "qemu" # A user named "qemu"
+# user = "+0" # Super user (uid=0)
+# user = "100" # A user named "100" or a user with uid=100
+#
+#user = "root"
+
+# The group for QEMU processes run by the system instance. It can be
+# specified in a similar way to user.
+#group = "root"
+
+# Whether libvirt should dynamically change file ownership
+# to match the configured user/group above. Defaults to 1.
+# Set to 0 to disable file ownership changes.
+#dynamic_ownership = 1
+
+
+# What cgroup controllers to make use of with QEMU guests
+#
+# - 'cpu' - use for schedular tunables
+# - 'devices' - use for device whitelisting
+# - 'memory' - use for memory tunables
+# - 'blkio' - use for block devices I/O tunables
+# - 'cpuset' - use for CPUs and memory nodes
+# - 'cpuacct' - use for CPUs statistics.
+#
+# NB, even if configured here, they won't be used unless
+# the administrator has mounted cgroups, e.g.:
+#
+# mkdir /dev/cgroup
+# mount -t cgroup -o devices,cpu,memory,blkio,cpuset none /dev/cgroup
+#
+# They can be mounted anywhere, and different controllers
+# can be mounted in different locations. libvirt will detect
+# where they are located.
+#
+#cgroup_controllers = [ "cpu", "devices", "memory", "blkio", "cpuset", "cpuacct" ]
+
+# This is the basic set of devices allowed / required by
+# all virtual machines.
+#
+# As well as this, any configured block backed disks,
+# all sound device, and all PTY devices are allowed.
+#
+# This will only need setting if newer QEMU suddenly
+# wants some device we don't already know about.
+#
+cgroup_device_acl = [
+ "/dev/null", "/dev/full", "/dev/zero",
+ "/dev/random", "/dev/urandom",
+ "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
+ "/dev/rtc", "/dev/hpet", "/dev/vfio/vfio", "/dev/net/tun"
+]
+
+
+# The default format for Qemu/KVM guest save images is raw; that is, the
+# memory from the domain is dumped out directly to a file. If you have
+# guests with a large amount of memory, however, this can take up quite
+# a bit of space. If you would like to compress the images while they
+# are being saved to disk, you can also set "lzop", "gzip", "bzip2", or "xz"
+# for save_image_format. Note that this means you slow down the process of
+# saving a domain in order to save disk space; the list above is in descending
+# order by performance and ascending order by compression ratio.
+#
+# save_image_format is used when you use 'virsh save' or 'virsh managedsave'
+# at scheduled saving, and it is an error if the specified save_image_format
+# is not valid, or the requested compression program can't be found.
+#
+# dump_image_format is used when you use 'virsh dump' at emergency
+# crashdump, and if the specified dump_image_format is not valid, or
+# the requested compression program can't be found, this falls
+# back to "raw" compression.
+#
+# snapshot_image_format specifies the compression algorithm of the memory save
+# image when an external snapshot of a domain is taken. This does not apply
+# on disk image format. It is an error if the specified format isn't valid,
+# or the requested compression program can't be found.
+#
+#save_image_format = "raw"
+#dump_image_format = "raw"
+#snapshot_image_format = "raw"
+
+# When a domain is configured to be auto-dumped when libvirtd receives a
+# watchdog event from qemu guest, libvirtd will save dump files in directory
+# specified by auto_dump_path. Default value is /var/lib/libvirt/qemu/dump
+#
+#auto_dump_path = "/var/lib/libvirt/qemu/dump"
+
+# When a domain is configured to be auto-dumped, enabling this flag
+# has the same effect as using the VIR_DUMP_BYPASS_CACHE flag with the
+# virDomainCoreDump API. That is, the system will avoid using the
+# file system cache while writing the dump file, but may cause
+# slower operation.
+#
+#auto_dump_bypass_cache = 0
+
+# When a domain is configured to be auto-started, enabling this flag
+# has the same effect as using the VIR_DOMAIN_START_BYPASS_CACHE flag
+# with the virDomainCreateWithFlags API. That is, the system will
+# avoid using the file system cache when restoring any managed state
+# file, but may cause slower operation.
+#
+#auto_start_bypass_cache = 0
+
+# If provided by the host and a hugetlbfs mount point is configured,
+# a guest may request huge page backing. When this mount point is
+# unspecified here, determination of a host mount point in /proc/mounts
+# will be attempted. Specifying an explicit mount overrides detection
+# of the same in /proc/mounts. Setting the mount point to "" will
+# disable guest hugepage backing.
+#
+# NB, within this mount point, guests will create memory backing files
+# in a location of $MOUNTPOINT/libvirt/qemu
+#
+#hugetlbfs_mount = "/dev/hugepages"
+
+
+# Path to the setuid helper for creating tap devices. This executable
+# is used to create <source type='bridge'> interfaces when libvirtd is
+# running unprivileged. libvirt invokes the helper directly, instead
+# of using "-netdev bridge", for security reasons.
+#bridge_helper = "/usr/libexec/qemu-bridge-helper"
+
+
+
+# If clear_emulator_capabilities is enabled, libvirt will drop all
+# privileged capabilities of the QEmu/KVM emulator. This is enabled by
+# default.
+#
+# Warning: Disabling this option means that a compromised guest can
+# exploit the privileges and possibly do damage to the host.
+#
+#clear_emulator_capabilities = 1
+
+
+# If enabled, libvirt will have QEMU set its process name to
+# "qemu:VM_NAME", where VM_NAME is the name of the VM. The QEMU
+# process will appear as "qemu:VM_NAME" in process listings and
+# other system monitoring tools. By default, QEMU does not set
+# its process title, so the complete QEMU command (emulator and
+# its arguments) appear in process listings.
+#
+#set_process_name = 1
+
+
+# If max_processes is set to a positive integer, libvirt will use
+# it to set the maximum number of processes that can be run by qemu
+# user. This can be used to override default value set by host OS.
+# The same applies to max_files which sets the limit on the maximum
+# number of opened files.
+#
+#max_processes = 0
+#max_files = 0
+
+
+
+# mac_filter enables MAC addressed based filtering on bridge ports.
+# This currently requires ebtables to be installed.
+#
+#mac_filter = 1
+
+
+# By default, PCI devices below non-ACS switch are not allowed to be assigned
+# to guests. By setting relaxed_acs_check to 1 such devices will be allowed to
+# be assigned to guests.
+#
+#relaxed_acs_check = 1
+
+
+# If allow_disk_format_probing is enabled, libvirt will probe disk
+# images to attempt to identify their format, when not otherwise
+# specified in the XML. This is disabled by default.
+#
+# WARNING: Enabling probing is a security hole in almost all
+# deployments. It is strongly recommended that users update their
+# guest XML <disk> elements to include <driver type='XXXX'/>
+# elements instead of enabling this option.
+#
+#allow_disk_format_probing = 1
+
+
+# To enable 'Sanlock' project based locking of the file
+# content (to prevent two VMs writing to the same
+# disk), uncomment this
+#
+#lock_manager = "sanlock"
+
+
+
+# Set limit of maximum APIs queued on one domain. All other APIs
+# over this threshold will fail on acquiring job lock. Specially,
+# setting to zero turns this feature off.
+# Note, that job lock is per domain.
+#
+#max_queued = 0
+
+###################################################################
+# Keepalive protocol:
+# This allows qemu driver to detect broken connections to remote
+# libvirtd during peer-to-peer migration. A keepalive message is
+# sent to the deamon after keepalive_interval seconds of inactivity
+# to check if the deamon is still responding; keepalive_count is a
+# maximum number of keepalive messages that are allowed to be sent
+# to the deamon without getting any response before the connection
+# is considered broken. In other words, the connection is
+# automatically closed approximately after
+# keepalive_interval * (keepalive_count + 1) seconds since the last
+# message received from the deamon. If keepalive_interval is set to
+# -1, qemu driver will not send keepalive requests during
+# peer-to-peer migration; however, the remote libvirtd can still
+# send them and source libvirtd will send responses. When
+# keepalive_count is set to 0, connections will be automatically
+# closed after keepalive_interval seconds of inactivity without
+# sending any keepalive messages.
+#
+#keepalive_interval = 5
+#keepalive_count = 5
+
+
+
+# Use seccomp syscall whitelisting in QEMU.
+# 1 = on, 0 = off, -1 = use QEMU default
+# Defaults to -1.
+#
+#seccomp_sandbox = 1
+
+
+
+# Override the listen address for all incoming migrations. Defaults to
+# 0.0.0.0 or :: in case if both host and qemu are capable of IPv6.
+#migration_address = "127.0.0.1"
+
+
+# Override the port range used for incoming migrations.
+#
+# Minimum must be greater than 0, however when QEMU is not running as root,
+# setting the minimum to be lower than 1024 will not work.
+#
+# Maximum must not be greater than 65535.
+#
+#migration_port_min = 49152
+#migration_port_max = 49215
diff --git a/bsp/meta-freescale/dynamic-layers/virtualization-layer/recipes-extended/libvirt/libvirt_%.bbappend b/bsp/meta-freescale/dynamic-layers/virtualization-layer/recipes-extended/libvirt/libvirt_%.bbappend
new file mode 100644
index 00000000..c7e6d32e
--- /dev/null
+++ b/bsp/meta-freescale/dynamic-layers/virtualization-layer/recipes-extended/libvirt/libvirt_%.bbappend
@@ -0,0 +1,9 @@
+PACKAGECONFIG_qoriq-ppc = "qemu yajl lxc test remote macvtap libvirtd netcf udev python"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
+SRC_URI_append_qoriq-ppc = " file://qemu.conf"
+
+do_install_append_qoriq-ppc() {
+ install -m 0644 ${WORKDIR}/qemu.conf ${D}${sysconfdir}/libvirt/qemu.conf
+}
+
diff --git a/bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state.bbappend b/bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state.bbappend
new file mode 100644
index 00000000..3a398b22
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state.bbappend
@@ -0,0 +1,10 @@
+# Append path for freescale layer to include alsa-state asound.conf
+FILESEXTRAPATHS_prepend_mx6 := "${THISDIR}/${PN}/imx:"
+FILESEXTRAPATHS_prepend_mx7 := "${THISDIR}/${PN}/imx:"
+FILESEXTRAPATHS_prepend_mx8 := "${THISDIR}/${PN}/imx:"
+FILESEXTRAPATHS_prepend_use-mainline-bsp := "${THISDIR}/${PN}/imx:"
+
+PACKAGE_ARCH_mx6 = "${MACHINE_ARCH}"
+PACKAGE_ARCH_mx7 = "${MACHINE_ARCH}"
+PACKAGE_ARCH_mx8 = "${MACHINE_ARCH}"
+PACKAGE_ARCH_use-mainline-bsp = "${MACHINE_ARCH}"
diff --git a/bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state/imx/asound.conf b/bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state/imx/asound.conf
new file mode 100644
index 00000000..c511018e
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state/imx/asound.conf
@@ -0,0 +1,459 @@
+defaults.pcm.rate_converter "linear"
+
+pcm.dmix_48000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.dmix_44100{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.dmix_32000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.dmix_24000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.dmix_22050{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.dmix_16000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.dmix_12000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.dmix_11025{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.dmix_8000{
+type dmix
+ipc_key 5678293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.!dsnoop_48000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 48000
+}
+}
+
+pcm.!dsnoop_44100{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 44100
+}
+}
+
+pcm.!dsnoop_32000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 32000
+}
+}
+
+pcm.!dsnoop_24000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 24000
+}
+}
+
+pcm.!dsnoop_22050{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 22050
+}
+}
+
+pcm.!dsnoop_16000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 16000
+}
+}
+
+pcm.!dsnoop_12000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 12000
+}
+}
+
+pcm.!dsnoop_11025{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 11025
+}
+}
+
+pcm.!dsnoop_8000{
+type dsnoop
+ipc_key 5778293
+ipc_key_add_uid yes
+slave{
+pcm "hw:0,0"
+period_time 40000
+format S16_LE
+rate 8000
+}
+}
+
+pcm.asymed{
+type asym
+playback.pcm "dmix_44100"
+capture.pcm "dsnoop_44100"
+}
+
+pcm.dsp0{
+type plug
+slave.pcm "asymed"
+}
+
+pcm.!default{
+type plug
+route_policy "average"
+slave.pcm "asymed"
+}
+
+ctl.!default{
+type hw
+card 0
+}
+
+ctl.mixer0{
+type hw
+card 0
+}
+
+pcm_slave.esai{
+ pcm "hw:0,0"
+ channels 8
+ rate 48000
+ period_time 40000
+}
+
+pcm.esaich1to6{
+ type dshare
+ ipc_key 5778293
+ slave esai
+ bindings.0 0
+ bindings.1 4
+ bindings.2 1
+ bindings.3 5
+ bindings.4 2
+ bindings.5 6
+}
+
+pcm.esaich78{
+ type dshare
+ ipc_key 5778293
+ slave esai
+ bindings.0 3
+ bindings.1 7
+}
+
+pcm_slave.sai5 {
+ pcm "hw:5,0"
+ channels 8
+}
+
+pcm.sai5_ch1to8 {
+ type dsnoop
+ ipc_key 5185558
+ slave sai5
+ bindings.0 0
+ bindings.1 4
+ bindings.2 1
+ bindings.3 5
+ bindings.4 2
+ bindings.5 6
+ bindings.6 3
+ bindings.7 7
+}
+
+pcm.sai5_ch1to6 {
+ type dsnoop
+ ipc_key 5165558
+ slave sai5
+ bindings.0 0
+ bindings.1 4
+ bindings.2 1
+ bindings.3 5
+ bindings.4 2
+ bindings.5 6
+}
+
+pcm.sai5_ch1to4 {
+ type dsnoop
+ ipc_key 5145558
+ slave sai5
+ bindings.0 0
+ bindings.1 4
+ bindings.2 1
+ bindings.3 5
+}
+
+pcm_slave.sai1{
+ pcm "hw:4,0"
+ channels 16
+}
+
+pcm.sai1to16{
+ type dshare
+ slave sai1
+ ipc_key 5144458
+ bindings.0 0
+ bindings.1 8
+ bindings.2 1
+ bindings.3 9
+ bindings.4 2
+ bindings.5 10
+ bindings.6 3
+ bindings.7 11
+ bindings.8 4
+ bindings.9 12
+ bindings.10 5
+ bindings.11 13
+ bindings.12 6
+ bindings.13 14
+ bindings.14 7
+ bindings.15 15
+}
+
+pcm.sai1to14{
+ type dshare
+ slave sai1
+ ipc_key 5144458
+ bindings.0 0
+ bindings.1 8
+ bindings.2 1
+ bindings.3 9
+ bindings.4 2
+ bindings.5 10
+ bindings.6 3
+ bindings.7 11
+ bindings.8 4
+ bindings.9 12
+ bindings.10 5
+ bindings.11 13
+ bindings.12 6
+ bindings.13 14
+}
+
+pcm.sai1to12{
+ type dshare
+ slave sai1
+ ipc_key 5144458
+ bindings.0 0
+ bindings.1 8
+ bindings.2 1
+ bindings.3 9
+ bindings.4 2
+ bindings.5 10
+ bindings.6 3
+ bindings.7 11
+ bindings.8 4
+ bindings.9 12
+ bindings.10 5
+ bindings.11 13
+}
+
+pcm.sai1to10{
+ type dshare
+ slave sai1
+ ipc_key 5144458
+ bindings.0 0
+ bindings.1 8
+ bindings.2 1
+ bindings.3 9
+ bindings.4 2
+ bindings.5 10
+ bindings.6 3
+ bindings.7 11
+ bindings.8 4
+ bindings.9 12
+}
+
+pcm.sai1to8{
+ type dshare
+ slave sai1
+ ipc_key 5144458
+ bindings.0 0
+ bindings.1 8
+ bindings.2 1
+ bindings.3 9
+ bindings.4 2
+ bindings.5 10
+ bindings.6 3
+ bindings.7 11
+}
+
+pcm.sai1to6{
+ type dshare
+ slave sai1
+ ipc_key 5144458
+ bindings.0 0
+ bindings.1 8
+ bindings.2 1
+ bindings.3 9
+ bindings.4 2
+ bindings.5 10
+}
+
+pcm.sai1to4{
+ type dshare
+ slave sai1
+ ipc_key 5144458
+ bindings.0 0
+ bindings.1 8
+ bindings.2 1
+ bindings.3 9
+}
+
+pcm.cdnhdmi4ch {
+ type dshare
+ slave {
+ pcm "hw:3,0"
+ channels 4
+ }
+ ipc_key 5144458
+ bindings.0 0
+ bindings.1 2
+ bindings.2 1
+ bindings.3 3
+}
+
+pcm.cdnhdmi8ch {
+ type dshare
+ slave {
+ pcm "hw:3,0"
+ channels 8
+ }
+ ipc_key 5144458
+ bindings.0 0
+ bindings.1 4
+ bindings.2 1
+ bindings.3 5
+ bindings.4 2
+ bindings.5 6
+ bindings.6 3
+ bindings.7 7
+}
diff --git a/bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state/imx/asound.state b/bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state/imx/asound.state
new file mode 100755
index 00000000..87f44994
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/alsa-state/alsa-state/imx/asound.state
@@ -0,0 +1,7092 @@
+state.wm8962audio {
+ control.1 {
+ iface MIXER
+ name 'Input Mixer Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'MIXINL IN2L Volume'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 0
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'MIXINL PGA Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'MIXINL IN3L Volume'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 0
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'MIXINR IN2R Volume'
+ value 5
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 0
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'MIXINR PGA Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'MIXINR IN3R Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 600
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'Digital Capture Volume'
+ value.0 108
+ value.1 108
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 127'
+ dbmin -9999999
+ dbmax 2325
+ dbvalue.0 900
+ dbvalue.1 900
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'Capture Volume'
+ value.0 40
+ value.1 40
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -2325
+ dbmax 2400
+ dbvalue.0 675
+ dbvalue.1 675
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'Capture Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'Capture ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'Capture HPF Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'Capture HPF Mode'
+ value Hi-fi
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Hi-fi
+ item.1 Application
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'Capture HPF Cutoff'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'Capture LHPF Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'Capture LHPF Mode'
+ value LPF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 LPF
+ item.1 HPF
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'Sidetone Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 12'
+ dbmin -3600
+ dbmax 0
+ dbvalue.0 -3600
+ dbvalue.1 -3600
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'Digital Playback Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 127'
+ dbmin -9999999
+ dbmax 2325
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'DAC High Performance Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'DAC L/R Swap Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'ADC L/R Swap Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'ADC High Performance Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'Beep Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ dbmin -9999999
+ dbmax -600
+ dbvalue.0 -9999999
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'Headphone Volume'
+ value.0 93
+ value.1 93
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 127'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -2800
+ dbvalue.1 -2800
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'Headphone Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'Headphone ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'Headphone Aux Volume'
+ value.0 7
+ value.1 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin -700
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'Headphone Mixer Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'HPMIXL IN4L Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 600
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'HPMIXL IN4R Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 600
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'HPMIXL MIXINL Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'HPMIXL MIXINR Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'HPMIXR IN4L Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 600
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'HPMIXR IN4R Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 600
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'HPMIXR MIXINL Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'HPMIXR MIXINR Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'Speaker Boost Volume'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin 0
+ dbmax 1200
+ dbvalue.0 450
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'EQ1 Volume'
+ value.0 12
+ value.1 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'EQ2 Volume'
+ value.0 12
+ value.1 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'EQ3 Volume'
+ value.0 12
+ value.1 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.42 {
+ iface MIXER
+ name 'EQ4 Volume'
+ value.0 12
+ value.1 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.43 {
+ iface MIXER
+ name 'EQ5 Volume'
+ value.0 12
+ value.1 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.44 {
+ iface MIXER
+ name 'EQL Coefficients'
+ value '0fca040000d81eb5f1450b7501c51c58f3730a540558168ef82907ad1103056405594000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 36
+ }
+ }
+ control.45 {
+ iface MIXER
+ name 'EQR Coefficients'
+ value '0fca040000d81eb5f1450b7501c51c58f3730a540558168ef82907ad1103056405594000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 36
+ }
+ }
+ control.46 {
+ iface MIXER
+ name '3D Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.47 {
+ iface MIXER
+ name '3D Coefficients'
+ value '0040000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 8
+ }
+ }
+ control.48 {
+ iface MIXER
+ name 'DF1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.49 {
+ iface MIXER
+ name 'DF1 Coefficients'
+ value '0000000000000000000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 14
+ }
+ }
+ control.50 {
+ iface MIXER
+ name 'DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.51 {
+ iface MIXER
+ name 'DRC Coefficients'
+ value '000c0925000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.52 {
+ iface MIXER
+ name 'VSS Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.53 {
+ iface MIXER
+ name 'VSS Coefficients'
+ value '008c020000350700003a4100008b7d00003a4100008cfee800780000003fb260002d18180020000000f1834000fb830000eeaec000fbac4000f17f8000f43b4000f5fb0000ea10c000fcc58000e275c00004b48000d4f9800004914000d8a48000023dc000cf7a8000dc060000f2dac000baf340000a7940001c068000fd2d00001ce840000ddc4000fc9d000009558000fe7e80000eab4000f99880000987c000fd2c400009480000035f400000870000fae4c000000b400004e18000011f4000f8b00000fbcbc00004f3800007df4000ff070000efd70000fbaf4000108a80001107c000e0080000d276000020cf400030234000fd69c0002835000006330000d9f6c000f33340000f420000040c8000fb3f8000f757c0000354000000c6c0000312c000fd8580'
+ comment {
+ access 'read write'
+ type BYTES
+ count 296
+ }
+ }
+ control.54 {
+ iface MIXER
+ name 'HPF1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.55 {
+ iface MIXER
+ name 'HPF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.56 {
+ iface MIXER
+ name 'HPF Coefficients'
+ value '0000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 2
+ }
+ }
+ control.57 {
+ iface MIXER
+ name 'HD Bass Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.58 {
+ iface MIXER
+ name 'HD Bass Coefficients'
+ value '0002bd12007c586c00538121003f8bd80032f52d0065ac8c006be08700721483007214830043352500066a4a0043607900080000000100000059999a'
+ comment {
+ access 'read write'
+ type BYTES
+ count 60
+ }
+ }
+ control.59 {
+ iface MIXER
+ name 'ALC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.60 {
+ iface MIXER
+ name ALC1
+ value '007b'
+ comment {
+ access 'read write'
+ type BYTES
+ count 2
+ }
+ }
+ control.61 {
+ iface MIXER
+ name ALC2
+ value '0000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 2
+ }
+ }
+ control.62 {
+ iface MIXER
+ name ALC3
+ value '1c32'
+ comment {
+ access 'read write'
+ type BYTES
+ count 2
+ }
+ }
+ control.63 {
+ iface MIXER
+ name 'Noise Gate'
+ value '3200'
+ comment {
+ access 'read write'
+ type BYTES
+ count 2
+ }
+ }
+ control.64 {
+ iface MIXER
+ name 'Speaker Volume'
+ value.0 114
+ value.1 114
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 127'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -700
+ dbvalue.1 -700
+ }
+ }
+ control.65 {
+ iface MIXER
+ name 'Speaker Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.66 {
+ iface MIXER
+ name 'Speaker ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.67 {
+ iface MIXER
+ name 'Speaker Mixer Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.68 {
+ iface MIXER
+ name 'SPKOUTL Mixer IN4L Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 600
+ }
+ }
+ control.69 {
+ iface MIXER
+ name 'SPKOUTL Mixer IN4R Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 600
+ }
+ }
+ control.70 {
+ iface MIXER
+ name 'SPKOUTL Mixer MIXINL Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.71 {
+ iface MIXER
+ name 'SPKOUTL Mixer MIXINR Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.72 {
+ iface MIXER
+ name 'SPKOUTL Mixer DACL Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 -600
+ }
+ }
+ control.73 {
+ iface MIXER
+ name 'SPKOUTL Mixer DACR Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 -600
+ }
+ }
+ control.74 {
+ iface MIXER
+ name 'SPKOUTR Mixer IN4L Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 600
+ }
+ }
+ control.75 {
+ iface MIXER
+ name 'SPKOUTR Mixer IN4R Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -1500
+ dbmax 600
+ dbvalue.0 600
+ }
+ }
+ control.76 {
+ iface MIXER
+ name 'SPKOUTR Mixer MIXINL Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.77 {
+ iface MIXER
+ name 'SPKOUTR Mixer MIXINR Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.78 {
+ iface MIXER
+ name 'SPKOUTR Mixer DACL Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 -600
+ }
+ }
+ control.79 {
+ iface MIXER
+ name 'SPKOUTR Mixer DACR Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 -600
+ }
+ }
+ control.80 {
+ iface MIXER
+ name 'SPKOUTR PGA'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Mixer
+ }
+ }
+ control.81 {
+ iface MIXER
+ name 'SPKOUTL PGA'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Mixer
+ }
+ }
+ control.82 {
+ iface MIXER
+ name 'SPKOUTR Mixer DACL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.83 {
+ iface MIXER
+ name 'SPKOUTR Mixer DACR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.84 {
+ iface MIXER
+ name 'SPKOUTR Mixer MIXINL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.85 {
+ iface MIXER
+ name 'SPKOUTR Mixer MIXINR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.86 {
+ iface MIXER
+ name 'SPKOUTR Mixer IN4L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.87 {
+ iface MIXER
+ name 'SPKOUTR Mixer IN4R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.88 {
+ iface MIXER
+ name 'SPKOUTL Mixer DACL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.89 {
+ iface MIXER
+ name 'SPKOUTL Mixer DACR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.90 {
+ iface MIXER
+ name 'SPKOUTL Mixer MIXINL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.91 {
+ iface MIXER
+ name 'SPKOUTL Mixer MIXINR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.92 {
+ iface MIXER
+ name 'SPKOUTL Mixer IN4L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.93 {
+ iface MIXER
+ name 'SPKOUTL Mixer IN4R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.94 {
+ iface MIXER
+ name 'HPOUTR PGA'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Mixer
+ }
+ }
+ control.95 {
+ iface MIXER
+ name 'HPOUTL PGA'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 DAC
+ item.1 Mixer
+ }
+ }
+ control.96 {
+ iface MIXER
+ name 'HPMIXR DACL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.97 {
+ iface MIXER
+ name 'HPMIXR DACR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.98 {
+ iface MIXER
+ name 'HPMIXR MIXINL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.99 {
+ iface MIXER
+ name 'HPMIXR MIXINR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.100 {
+ iface MIXER
+ name 'HPMIXR IN4L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.101 {
+ iface MIXER
+ name 'HPMIXR IN4R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.102 {
+ iface MIXER
+ name 'HPMIXL DACL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.103 {
+ iface MIXER
+ name 'HPMIXL DACR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.104 {
+ iface MIXER
+ name 'HPMIXL MIXINL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.105 {
+ iface MIXER
+ name 'HPMIXL MIXINR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.106 {
+ iface MIXER
+ name 'HPMIXL IN4L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.107 {
+ iface MIXER
+ name 'HPMIXL IN4R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.108 {
+ iface MIXER
+ name STR
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 Left
+ item.2 Right
+ }
+ }
+ control.109 {
+ iface MIXER
+ name STL
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 Left
+ item.2 Right
+ }
+ }
+ control.110 {
+ iface MIXER
+ name 'MIXINR IN2R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.111 {
+ iface MIXER
+ name 'MIXINR IN3R Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.112 {
+ iface MIXER
+ name 'MIXINR PGA Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.113 {
+ iface MIXER
+ name 'MIXINL IN2L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.114 {
+ iface MIXER
+ name 'MIXINL IN3L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.115 {
+ iface MIXER
+ name 'MIXINL PGA Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.116 {
+ iface MIXER
+ name 'INPGAR IN1R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.117 {
+ iface MIXER
+ name 'INPGAR IN2R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.118 {
+ iface MIXER
+ name 'INPGAR IN3R Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.119 {
+ iface MIXER
+ name 'INPGAR IN4R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.120 {
+ iface MIXER
+ name 'INPGAL IN1L Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.121 {
+ iface MIXER
+ name 'INPGAL IN2L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.122 {
+ iface MIXER
+ name 'INPGAL IN3L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.123 {
+ iface MIXER
+ name 'INPGAL IN4L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.124 {
+ iface CARD
+ name 'Headphone Jack'
+ value true
+ comment {
+ access read
+ type BOOLEAN
+ count 1
+ }
+ }
+}
+state.wm8960audio {
+ control.1 {
+ iface MIXER
+ name 'Capture Volume'
+ value.0 35
+ value.1 35
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -1725
+ dbmax 3000
+ dbvalue.0 900
+ dbvalue.1 900
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'Capture Volume ZC Switch'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 1'
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'Capture Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'Right Input Boost Mixer RINPUT3 Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'Right Input Boost Mixer RINPUT2 Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'Left Input Boost Mixer LINPUT3 Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'Left Input Boost Mixer LINPUT2 Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'Right Input Boost Mixer RINPUT1 Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 2900
+ dbvalue.0 0
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'Left Input Boost Mixer LINPUT1 Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 2900
+ dbvalue.0 0
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'Playback Volume'
+ value.0 235
+ value.1 235
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 -1000
+ dbvalue.1 -1000
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'Headphone Playback Volume'
+ value.0 101
+ value.1 101
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 127'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -2000
+ dbvalue.1 -2000
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'Headphone Playback ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'Speaker Playback Volume'
+ value.0 110
+ value.1 110
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 127'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -1100
+ dbvalue.1 -1100
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'Speaker Playback ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'Speaker DC Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 5'
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'Speaker AC Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 5'
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'PCM Playback -6dB Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'ADC Polarity'
+ value 'No Inversion'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'No Inversion'
+ item.1 'Left Inverted'
+ item.2 'Right Inverted'
+ item.3 'Stereo Inversion'
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'ADC High Pass Filter Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'DAC Polarity'
+ value 'No Inversion'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'No Inversion'
+ item.1 'Left Inverted'
+ item.2 'Right Inverted'
+ item.3 'Stereo Inversion'
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'DAC Deemphasis Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.22 {
+ iface MIXER
+ name '3D Filter Upper Cut-Off'
+ value High
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 High
+ item.1 Low
+ }
+ }
+ control.23 {
+ iface MIXER
+ name '3D Filter Lower Cut-Off'
+ value Low
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Low
+ item.1 High
+ }
+ }
+ control.24 {
+ iface MIXER
+ name '3D Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.25 {
+ iface MIXER
+ name '3D Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'ALC Function'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 Right
+ item.2 Left
+ item.3 Stereo
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'ALC Max Gain'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'ALC Target'
+ value 4
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'ALC Min Gain'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'ALC Hold Time'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'ALC Mode'
+ value ALC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ALC
+ item.1 Limiter
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'ALC Decay'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'ALC Attack'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'Noise Gate Threshold'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'ADC PCM Capture Volume'
+ value.0 195
+ value.1 195
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 3000
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'Left Output Mixer Boost Bypass Volume'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 -1500
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'Left Output Mixer LINPUT3 Volume'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 -1500
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'Right Output Mixer Boost Bypass Volume'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 -1500
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'Right Output Mixer RINPUT3 Volume'
+ value 2
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 -1500
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'ADC Data Output Select'
+ value 'Left Data = Left ADC; Right Data = Left ADC'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Left Data = Left ADC; Right Data = Right ADC'
+ item.1 'Left Data = Left ADC; Right Data = Left ADC'
+ item.2 'Left Data = Right ADC; Right Data = Right ADC'
+ item.3 'Left Data = Right ADC; Right Data = Left ADC'
+ }
+ }
+ control.42 {
+ iface MIXER
+ name 'Mono Output Mixer Left Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.43 {
+ iface MIXER
+ name 'Mono Output Mixer Right Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.44 {
+ iface MIXER
+ name 'Right Output Mixer PCM Playback Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.45 {
+ iface MIXER
+ name 'Right Output Mixer RINPUT3 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.46 {
+ iface MIXER
+ name 'Right Output Mixer Boost Bypass Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.47 {
+ iface MIXER
+ name 'Left Output Mixer PCM Playback Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.48 {
+ iface MIXER
+ name 'Left Output Mixer LINPUT3 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.49 {
+ iface MIXER
+ name 'Left Output Mixer Boost Bypass Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.50 {
+ iface MIXER
+ name 'Right Input Mixer Boost Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.51 {
+ iface MIXER
+ name 'Left Input Mixer Boost Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.52 {
+ iface MIXER
+ name 'Right Boost Mixer RINPUT2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.53 {
+ iface MIXER
+ name 'Right Boost Mixer RINPUT3 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.54 {
+ iface MIXER
+ name 'Right Boost Mixer RINPUT1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.55 {
+ iface MIXER
+ name 'Left Boost Mixer LINPUT2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.56 {
+ iface MIXER
+ name 'Left Boost Mixer LINPUT3 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.57 {
+ iface MIXER
+ name 'Left Boost Mixer LINPUT1 Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.58 {
+ iface CARD
+ name 'Headphone Jack'
+ value true
+ comment {
+ access read
+ type BOOLEAN
+ count 1
+ }
+ }
+}
+state.wm8958audio {
+ control.1 {
+ iface MIXER
+ name 'AIF1.1 DRC'
+ value '00980845000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'AIF1.2 DRC'
+ value '00980845000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'AIF2 DRC'
+ value '00980845000000000000'
+ comment {
+ access 'read write'
+ type BYTES
+ count 10
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'AIF1DAC1 EQ1 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'AIF1DAC1 EQ2 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'AIF1DAC1 EQ3 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'AIF1DAC1 EQ4 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'AIF1DAC1 EQ5 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'AIF1DAC2 EQ1 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'AIF1DAC2 EQ2 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'AIF1DAC2 EQ3 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'AIF1DAC2 EQ4 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'AIF1DAC2 EQ5 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'AIF2 EQ1 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'AIF2 EQ2 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'AIF2 EQ3 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'AIF2 EQ4 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'AIF2 EQ5 Volume'
+ value 12
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1200
+ dbmax 1900
+ dbvalue.0 0
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'IN1L Volume'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1650
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'IN1L Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'IN1L ZC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'IN1R Volume'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1650
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'IN1R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'IN1R ZC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'IN2L Volume'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1650
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'IN2L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'IN2L ZC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'IN2R Volume'
+ value 11
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 31'
+ dbmin -1650
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'IN2R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'IN2R ZC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'MIXINL IN2L Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'MIXINL IN1L Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'MIXINL Output Record Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'MIXINL IN1LP Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'MIXINL Direct Voice Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 6'
+ dbmin -9999999
+ dbmax 300
+ dbvalue.0 -9999999
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'MIXINR IN2R Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'MIXINR IN1R Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin 0
+ dbmax 3000
+ dbvalue.0 0
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'MIXINR Output Record Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'MIXINR IN1RP Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -9999999
+ dbmax 600
+ dbvalue.0 -9999999
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'MIXINR Direct Voice Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 6'
+ dbmin -9999999
+ dbmax 300
+ dbvalue.0 -9999999
+ }
+ }
+ control.41 {
+ iface MIXER
+ name 'Left Output Mixer IN2RN Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.42 {
+ iface MIXER
+ name 'Left Output Mixer IN2LN Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.43 {
+ iface MIXER
+ name 'Left Output Mixer IN2LP Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.44 {
+ iface MIXER
+ name 'Left Output Mixer IN1L Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.45 {
+ iface MIXER
+ name 'Left Output Mixer IN1R Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.46 {
+ iface MIXER
+ name 'Left Output Mixer Right Input Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.47 {
+ iface MIXER
+ name 'Left Output Mixer Left Input Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.48 {
+ iface MIXER
+ name 'Left Output Mixer DAC Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.49 {
+ iface MIXER
+ name 'Right Output Mixer IN2LN Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.50 {
+ iface MIXER
+ name 'Right Output Mixer IN2RN Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.51 {
+ iface MIXER
+ name 'Right Output Mixer IN1L Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.52 {
+ iface MIXER
+ name 'Right Output Mixer IN1R Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.53 {
+ iface MIXER
+ name 'Right Output Mixer IN2RP Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.54 {
+ iface MIXER
+ name 'Right Output Mixer Left Input Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.55 {
+ iface MIXER
+ name 'Right Output Mixer Right Input Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.56 {
+ iface MIXER
+ name 'Right Output Mixer DAC Volume'
+ value 7
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -2100
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.57 {
+ iface MIXER
+ name 'Output Volume'
+ value.0 57
+ value.1 57
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.58 {
+ iface MIXER
+ name 'Output Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.59 {
+ iface MIXER
+ name 'Output ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.60 {
+ iface MIXER
+ name 'Earpiece Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.61 {
+ iface MIXER
+ name 'Earpiece Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.62 {
+ iface MIXER
+ name 'SPKL Input Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.63 {
+ iface MIXER
+ name 'SPKL IN1LP Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.64 {
+ iface MIXER
+ name 'SPKL Output Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.65 {
+ iface MIXER
+ name 'SPKR Input Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.66 {
+ iface MIXER
+ name 'SPKR IN1RP Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.67 {
+ iface MIXER
+ name 'SPKR Output Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.68 {
+ iface MIXER
+ name 'Speaker Mixer Volume'
+ value.0 3
+ value.1 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 3'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.69 {
+ iface MIXER
+ name 'Speaker Volume'
+ value.0 60
+ value.1 60
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 300
+ dbvalue.1 300
+ }
+ }
+ control.70 {
+ iface MIXER
+ name 'Speaker Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.71 {
+ iface MIXER
+ name 'Speaker ZC Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.72 {
+ iface MIXER
+ name 'Speaker Boost Volume'
+ value.0 0
+ value.1 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 7'
+ dbmin 0
+ dbmax 1200
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.73 {
+ iface MIXER
+ name 'Speaker Reference'
+ value SPKVDD/2
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 SPKVDD/2
+ item.1 VMID
+ }
+ }
+ control.74 {
+ iface MIXER
+ name 'Speaker Mode'
+ value 'Class D'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Class D'
+ item.1 'Class AB'
+ }
+ }
+ control.75 {
+ iface MIXER
+ name 'Headphone Volume'
+ value.0 25
+ value.1 25
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 63'
+ dbmin -5700
+ dbmax 600
+ dbvalue.0 -3200
+ dbvalue.1 -3200
+ }
+ }
+ control.76 {
+ iface MIXER
+ name 'Headphone Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.77 {
+ iface MIXER
+ name 'Headphone ZC Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.78 {
+ iface MIXER
+ name 'LINEOUT1N Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.79 {
+ iface MIXER
+ name 'LINEOUT1P Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.80 {
+ iface MIXER
+ name 'LINEOUT1 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.81 {
+ iface MIXER
+ name 'LINEOUT2N Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.82 {
+ iface MIXER
+ name 'LINEOUT2P Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.83 {
+ iface MIXER
+ name 'LINEOUT2 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -600
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.84 {
+ iface MIXER
+ name 'AIF1ADC1 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 119'
+ dbmin -9999999
+ dbmax 1725
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.85 {
+ iface MIXER
+ name 'AIF1ADC2 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 119'
+ dbmin -9999999
+ dbmax 1725
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.86 {
+ iface MIXER
+ name 'AIF2ADC Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 119'
+ dbmin -9999999
+ dbmax 1725
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.87 {
+ iface MIXER
+ name 'AIF1ADCL Source'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.88 {
+ iface MIXER
+ name 'AIF1ADCR Source'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.89 {
+ iface MIXER
+ name 'AIF2ADCL Source'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.90 {
+ iface MIXER
+ name 'AIF2ADCR Source'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.91 {
+ iface MIXER
+ name 'AIF1DACL Source'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.92 {
+ iface MIXER
+ name 'AIF1DACR Source'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.93 {
+ iface MIXER
+ name 'AIF2DACL Source'
+ value Left
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.94 {
+ iface MIXER
+ name 'AIF2DACR Source'
+ value Right
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Left
+ item.1 Right
+ }
+ }
+ control.95 {
+ iface MIXER
+ name 'AIF1DAC1 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.96 {
+ iface MIXER
+ name 'AIF1DAC2 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.97 {
+ iface MIXER
+ name 'AIF2DAC Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.98 {
+ iface MIXER
+ name 'AIF1 Boost Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 1800
+ dbvalue.0 0
+ }
+ }
+ control.99 {
+ iface MIXER
+ name 'AIF2 Boost Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 1800
+ dbvalue.0 0
+ }
+ }
+ control.100 {
+ iface MIXER
+ name 'AIF1DAC1 EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.101 {
+ iface MIXER
+ name 'AIF1DAC2 EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.102 {
+ iface MIXER
+ name 'AIF2 EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.103 {
+ iface MIXER
+ name 'AIF1DAC1 DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.104 {
+ iface MIXER
+ name 'AIF1ADC1L DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.105 {
+ iface MIXER
+ name 'AIF1ADC1R DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.106 {
+ iface MIXER
+ name 'AIF1DAC2 DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.107 {
+ iface MIXER
+ name 'AIF1ADC2L DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.108 {
+ iface MIXER
+ name 'AIF1ADC2R DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.109 {
+ iface MIXER
+ name 'AIF2DAC DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.110 {
+ iface MIXER
+ name 'AIF2ADCL DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.111 {
+ iface MIXER
+ name 'AIF2ADCR DRC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.112 {
+ iface MIXER
+ name 'DAC1 Right Sidetone Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin -3600
+ dbmax 0
+ dbvalue.0 -3600
+ }
+ }
+ control.113 {
+ iface MIXER
+ name 'DAC1 Left Sidetone Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin -3600
+ dbmax 0
+ dbvalue.0 -3600
+ }
+ }
+ control.114 {
+ iface MIXER
+ name 'DAC2 Right Sidetone Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin -3600
+ dbmax 0
+ dbvalue.0 -3600
+ }
+ }
+ control.115 {
+ iface MIXER
+ name 'DAC2 Left Sidetone Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 12'
+ dbmin -3600
+ dbmax 0
+ dbvalue.0 -3600
+ }
+ }
+ control.116 {
+ iface MIXER
+ name 'Sidetone HPF Mux'
+ value '2.7kHz'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '2.7kHz'
+ item.1 '1.35kHz'
+ item.2 '675Hz'
+ item.3 '370Hz'
+ item.4 '180Hz'
+ item.5 '90Hz'
+ item.6 '45Hz'
+ }
+ }
+ control.117 {
+ iface MIXER
+ name 'Sidetone HPF Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.118 {
+ iface MIXER
+ name 'AIF1ADC1 HPF Mode'
+ value HiFi
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 HiFi
+ item.1 'Voice 1'
+ item.2 'Voice 2'
+ item.3 'Voice 3'
+ }
+ }
+ control.119 {
+ iface MIXER
+ name 'AIF1ADC1 HPF Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.120 {
+ iface MIXER
+ name 'AIF1ADC2 HPF Mode'
+ value HiFi
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 HiFi
+ item.1 'Voice 1'
+ item.2 'Voice 2'
+ item.3 'Voice 3'
+ }
+ }
+ control.121 {
+ iface MIXER
+ name 'AIF1ADC2 HPF Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.122 {
+ iface MIXER
+ name 'AIF2ADC HPF Mode'
+ value HiFi
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 HiFi
+ item.1 'Voice 1'
+ item.2 'Voice 2'
+ item.3 'Voice 3'
+ }
+ }
+ control.123 {
+ iface MIXER
+ name 'AIF2ADC HPF Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.124 {
+ iface MIXER
+ name 'ADC OSR'
+ value 'High Performance'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Low Power'
+ item.1 'High Performance'
+ }
+ }
+ control.125 {
+ iface MIXER
+ name 'DAC OSR'
+ value 'Low Power'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Low Power'
+ item.1 'High Performance'
+ }
+ }
+ control.126 {
+ iface MIXER
+ name 'DAC1 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.127 {
+ iface MIXER
+ name 'DAC1 Switch'
+ value.0 true
+ value.1 true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.128 {
+ iface MIXER
+ name 'DAC2 Volume'
+ value.0 96
+ value.1 96
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 96'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.129 {
+ iface MIXER
+ name 'DAC2 Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.130 {
+ iface MIXER
+ name 'SPKL DAC2 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.131 {
+ iface MIXER
+ name 'SPKL DAC1 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.132 {
+ iface MIXER
+ name 'SPKR DAC2 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.133 {
+ iface MIXER
+ name 'SPKR DAC1 Volume'
+ value 1
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ dbmin -300
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.134 {
+ iface MIXER
+ name 'AIF1DAC1 3D Stereo Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ dbmin -1600
+ dbmax 1145
+ dbvalue.0 -1600
+ }
+ }
+ control.135 {
+ iface MIXER
+ name 'AIF1DAC1 3D Stereo Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.136 {
+ iface MIXER
+ name 'AIF1DAC2 3D Stereo Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ dbmin -1600
+ dbmax 1145
+ dbvalue.0 -1600
+ }
+ }
+ control.137 {
+ iface MIXER
+ name 'AIF1DAC2 3D Stereo Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.138 {
+ iface MIXER
+ name 'AIF2DAC 3D Stereo Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 15'
+ dbmin -1600
+ dbmax 1145
+ dbvalue.0 -1600
+ }
+ }
+ control.139 {
+ iface MIXER
+ name 'AIF2DAC 3D Stereo Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.140 {
+ iface MIXER
+ name 'AIF3 Boost Volume'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 3'
+ dbmin 0
+ dbmax 1800
+ dbvalue.0 0
+ }
+ }
+ control.141 {
+ iface MIXER
+ name 'AIF1DAC1 Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.142 {
+ iface MIXER
+ name 'AIF1DAC1 Noise Gate Hold Time'
+ value '30ms'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '30ms'
+ item.1 '125ms'
+ item.2 '250ms'
+ item.3 '500ms'
+ }
+ }
+ control.143 {
+ iface MIXER
+ name 'AIF1DAC1 Noise Gate Threshold Volume'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -10200
+ dbmax -6000
+ dbvalue.0 -8400
+ }
+ }
+ control.144 {
+ iface MIXER
+ name 'AIF1DAC2 Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.145 {
+ iface MIXER
+ name 'AIF1DAC2 Noise Gate Hold Time'
+ value '30ms'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '30ms'
+ item.1 '125ms'
+ item.2 '250ms'
+ item.3 '500ms'
+ }
+ }
+ control.146 {
+ iface MIXER
+ name 'AIF1DAC2 Noise Gate Threshold Volume'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -10200
+ dbmax -6000
+ dbvalue.0 -8400
+ }
+ }
+ control.147 {
+ iface MIXER
+ name 'AIF2DAC Noise Gate Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.148 {
+ iface MIXER
+ name 'AIF2DAC Noise Gate Hold Time'
+ value '30ms'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '30ms'
+ item.1 '125ms'
+ item.2 '250ms'
+ item.3 '500ms'
+ }
+ }
+ control.149 {
+ iface MIXER
+ name 'AIF2DAC Noise Gate Threshold Volume'
+ value 3
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 7'
+ dbmin -10200
+ dbmax -6000
+ dbvalue.0 -8400
+ }
+ }
+ control.150 {
+ iface MIXER
+ name 'AIF1DAC1 MBC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.151 {
+ iface MIXER
+ name 'AIF1DAC2 MBC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.152 {
+ iface MIXER
+ name 'AIF2DAC MBC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.153 {
+ iface MIXER
+ name 'AIF1DAC1 VSS Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.154 {
+ iface MIXER
+ name 'AIF1DAC2 VSS Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.155 {
+ iface MIXER
+ name 'AIF2DAC VSS Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.156 {
+ iface MIXER
+ name 'AIF1DAC1 HPF1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.157 {
+ iface MIXER
+ name 'AIF1DAC2 HPF1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.158 {
+ iface MIXER
+ name 'AIF2DAC HPF1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.159 {
+ iface MIXER
+ name 'AIF1DAC1 HPF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.160 {
+ iface MIXER
+ name 'AIF1DAC2 HPF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.161 {
+ iface MIXER
+ name 'AIF2DAC HPF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.162 {
+ iface MIXER
+ name 'AIF1DAC1 Enhanced EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.163 {
+ iface MIXER
+ name 'AIF1DAC2 Enhanced EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.164 {
+ iface MIXER
+ name 'AIF2DAC Enhanced EQ Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.165 {
+ iface MIXER
+ name 'ADCR Mux'
+ value ADC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 DMIC
+ }
+ }
+ control.166 {
+ iface MIXER
+ name 'ADCL Mux'
+ value ADC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC
+ item.1 DMIC
+ }
+ }
+ control.167 {
+ iface MIXER
+ name 'Right Headphone Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Mixer
+ item.1 DAC
+ }
+ }
+ control.168 {
+ iface MIXER
+ name 'Left Headphone Mux'
+ value DAC
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Mixer
+ item.1 DAC
+ }
+ }
+ control.169 {
+ iface MIXER
+ name 'SPKR DAC2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.170 {
+ iface MIXER
+ name 'SPKR Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.171 {
+ iface MIXER
+ name 'SPKR IN1RP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.172 {
+ iface MIXER
+ name 'SPKR Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.173 {
+ iface MIXER
+ name 'SPKR DAC1 Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.174 {
+ iface MIXER
+ name 'SPKL DAC2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.175 {
+ iface MIXER
+ name 'SPKL Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.176 {
+ iface MIXER
+ name 'SPKL IN1LP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.177 {
+ iface MIXER
+ name 'SPKL Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.178 {
+ iface MIXER
+ name 'SPKL DAC1 Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.179 {
+ iface MIXER
+ name 'AIF3ADC Mux'
+ value AIF1ADCDAT
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF1ADCDAT
+ item.1 AIF2ADCDAT
+ item.2 AIF2DACDAT
+ item.3 'Mono PCM'
+ }
+ }
+ control.180 {
+ iface MIXER
+ name 'AIF2DACR Mux'
+ value AIF2
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF2
+ item.1 AIF3
+ }
+ }
+ control.181 {
+ iface MIXER
+ name 'AIF2DACL Mux'
+ value AIF2
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF2
+ item.1 AIF3
+ }
+ }
+ control.182 {
+ iface MIXER
+ name 'Mono PCM Out Mux'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 AIF2ADCL
+ item.2 AIF2ADCR
+ }
+ }
+ control.183 {
+ iface MIXER
+ name 'AIF2 Loopback'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 ADCDAT
+ }
+ }
+ control.184 {
+ iface MIXER
+ name 'AIF1 Loopback'
+ value None
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 None
+ item.1 ADCDAT
+ }
+ }
+ control.185 {
+ iface MIXER
+ name 'AIF2ADC Mux'
+ value AIF2ADCDAT
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF2ADCDAT
+ item.1 AIF3DACDAT
+ }
+ }
+ control.186 {
+ iface MIXER
+ name 'AIF2DAC Mux'
+ value AIF2DACDAT
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF2DACDAT
+ item.1 AIF3DACDAT
+ }
+ }
+ control.187 {
+ iface MIXER
+ name 'AIF1DAC Mux'
+ value AIF1DACDAT
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 AIF1DACDAT
+ item.1 AIF3DACDAT
+ }
+ }
+ control.188 {
+ iface MIXER
+ name 'DAC1R Mixer Right Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.189 {
+ iface MIXER
+ name 'DAC1R Mixer Left Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.190 {
+ iface MIXER
+ name 'DAC1R Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.191 {
+ iface MIXER
+ name 'DAC1R Mixer AIF1.2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.192 {
+ iface MIXER
+ name 'DAC1R Mixer AIF1.1 Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.193 {
+ iface MIXER
+ name 'DAC1L Mixer Right Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.194 {
+ iface MIXER
+ name 'DAC1L Mixer Left Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.195 {
+ iface MIXER
+ name 'DAC1L Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.196 {
+ iface MIXER
+ name 'DAC1L Mixer AIF1.2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.197 {
+ iface MIXER
+ name 'DAC1L Mixer AIF1.1 Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.198 {
+ iface MIXER
+ name 'Right Sidetone'
+ value ADC/DMIC1
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC/DMIC1
+ item.1 DMIC2
+ }
+ }
+ control.199 {
+ iface MIXER
+ name 'Left Sidetone'
+ value ADC/DMIC1
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 ADC/DMIC1
+ item.1 DMIC2
+ }
+ }
+ control.200 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer Right Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.201 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer Left Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.202 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.203 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer AIF1.2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.204 {
+ iface MIXER
+ name 'AIF2DAC2R Mixer AIF1.1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.205 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer Right Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.206 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer Left Sidetone Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.207 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.208 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer AIF1.2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.209 {
+ iface MIXER
+ name 'AIF2DAC2L Mixer AIF1.1 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.210 {
+ iface MIXER
+ name 'AIF1ADC2R Mixer DMIC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.211 {
+ iface MIXER
+ name 'AIF1ADC2R Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.212 {
+ iface MIXER
+ name 'AIF1ADC2L Mixer DMIC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.213 {
+ iface MIXER
+ name 'AIF1ADC2L Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.214 {
+ iface MIXER
+ name 'AIF1ADC1R Mixer ADC/DMIC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.215 {
+ iface MIXER
+ name 'AIF1ADC1R Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.216 {
+ iface MIXER
+ name 'AIF1ADC1L Mixer ADC/DMIC Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.217 {
+ iface MIXER
+ name 'AIF1ADC1L Mixer AIF2 Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.218 {
+ iface MIXER
+ name 'LINEOUT2P Mixer Right Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.219 {
+ iface MIXER
+ name 'LINEOUT2N Mixer Left Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.220 {
+ iface MIXER
+ name 'LINEOUT2N Mixer Right Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.221 {
+ iface MIXER
+ name 'LINEOUT1P Mixer Left Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.222 {
+ iface MIXER
+ name 'LINEOUT1N Mixer Left Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.223 {
+ iface MIXER
+ name 'LINEOUT1N Mixer Right Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.224 {
+ iface MIXER
+ name 'SPKR Boost Direct Voice Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.225 {
+ iface MIXER
+ name 'SPKR Boost SPKL Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.226 {
+ iface MIXER
+ name 'SPKR Boost SPKR Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.227 {
+ iface MIXER
+ name 'SPKL Boost Direct Voice Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.228 {
+ iface MIXER
+ name 'SPKL Boost SPKL Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.229 {
+ iface MIXER
+ name 'SPKL Boost SPKR Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.230 {
+ iface MIXER
+ name 'Earpiece Mixer Direct Voice Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.231 {
+ iface MIXER
+ name 'Earpiece Mixer Left Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.232 {
+ iface MIXER
+ name 'Earpiece Mixer Right Output Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.233 {
+ iface MIXER
+ name 'Right Output Mixer Left Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.234 {
+ iface MIXER
+ name 'Right Output Mixer Right Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.235 {
+ iface MIXER
+ name 'Right Output Mixer IN2LN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.236 {
+ iface MIXER
+ name 'Right Output Mixer IN2RN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.237 {
+ iface MIXER
+ name 'Right Output Mixer IN1L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.238 {
+ iface MIXER
+ name 'Right Output Mixer IN1R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.239 {
+ iface MIXER
+ name 'Right Output Mixer IN2RP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.240 {
+ iface MIXER
+ name 'Right Output Mixer DAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.241 {
+ iface MIXER
+ name 'Left Output Mixer Right Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.242 {
+ iface MIXER
+ name 'Left Output Mixer Left Input Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.243 {
+ iface MIXER
+ name 'Left Output Mixer IN2RN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.244 {
+ iface MIXER
+ name 'Left Output Mixer IN2LN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.245 {
+ iface MIXER
+ name 'Left Output Mixer IN2LP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.246 {
+ iface MIXER
+ name 'Left Output Mixer IN1R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.247 {
+ iface MIXER
+ name 'Left Output Mixer IN1L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.248 {
+ iface MIXER
+ name 'Left Output Mixer DAC Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.249 {
+ iface MIXER
+ name 'MIXINR IN2R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.250 {
+ iface MIXER
+ name 'MIXINR IN1R Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.251 {
+ iface MIXER
+ name 'MIXINL IN2L Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.252 {
+ iface MIXER
+ name 'MIXINL IN1L Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.253 {
+ iface MIXER
+ name 'IN2R PGA IN2RP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.254 {
+ iface MIXER
+ name 'IN2R PGA IN2RN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.255 {
+ iface MIXER
+ name 'IN2L PGA IN2LP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.256 {
+ iface MIXER
+ name 'IN2L PGA IN2LN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.257 {
+ iface MIXER
+ name 'IN1R PGA IN1RP Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.258 {
+ iface MIXER
+ name 'IN1R PGA IN1RN Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.259 {
+ iface MIXER
+ name 'IN1L PGA IN1LP Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.260 {
+ iface MIXER
+ name 'IN1L PGA IN1LN Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.261 {
+ iface CARD
+ name 'Headphone Jack'
+ value true
+ comment {
+ access read
+ type BOOLEAN
+ count 1
+ }
+ }
+}
+state.cs42888audio {
+ control.1 {
+ iface MIXER
+ name 'DAC1 Playback Volume'
+ value.0 255
+ value.1 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'DAC2 Playback Volume'
+ value.0 255
+ value.1 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'DAC3 Playback Volume'
+ value.0 255
+ value.1 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'DAC4 Playback Volume'
+ value.0 255
+ value.1 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'ADC1 Capture Volume'
+ value.0 128
+ value.1 128
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 176'
+ dbmin -6400
+ dbmax 2400
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'ADC2 Capture Volume'
+ value.0 128
+ value.1 128
+ comment {
+ access 'read write'
+ type INTEGER
+ count 2
+ range '0 - 176'
+ dbmin -6400
+ dbmax 2400
+ dbvalue.0 0
+ dbvalue.1 0
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'DAC1 Invert Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'DAC2 Invert Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'DAC3 Invert Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'DAC4 Invert Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'ADC1 Invert Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'ADC2 Invert Switch'
+ value.0 false
+ value.1 false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 2
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'ADC High-Pass Filter Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'DAC De-emphasis Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'ADC1 Single Ended Mode Switch'
+ value Differential
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Differential
+ item.1 Single-Ended
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'ADC2 Single Ended Mode Switch'
+ value Differential
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Differential
+ item.1 Single-Ended
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'DAC Single Volume Control Switch'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'DAC Soft Ramp & Zero Cross Control Switch'
+ value 'Immediate Change'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Immediate Change'
+ item.1 'Zero Cross'
+ item.2 'Soft Ramp'
+ item.3 'Soft Ramp on Zero Cross'
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'DAC Auto Mute Switch'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'Mute ADC Serial Port Switch'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'ADC Single Volume Control Switch'
+ value 0
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 1'
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'ADC Soft Ramp & Zero Cross Control Switch'
+ value 'Immediate Change'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Immediate Change'
+ item.1 'Zero Cross'
+ item.2 'Soft Ramp'
+ item.3 'Soft Ramp on Zero Cross'
+ }
+ }
+}
+state.imxhdmisoc {
+ control.1 {
+ iface MIXER
+ name 'IEC958 Playback Default'
+ value '0400020200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
+ comment {
+ access 'read write volatile'
+ type IEC958
+ count 1
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'HDMI Support Channels'
+ value 2
+ comment {
+ access 'read volatile'
+ type INTEGER
+ count 1
+ range '0 - 0'
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'HDMI Support Rates'
+ value.0 32000
+ value.1 44100
+ value.2 48000
+ comment {
+ access 'read volatile'
+ type INTEGER
+ count 3
+ range '0 - 0'
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'HDMI Support Formats'
+ value 16
+ comment {
+ access 'read volatile'
+ type INTEGER
+ count 1
+ range '0 - 0'
+ }
+ }
+}
+state.sii902xaudio {
+ control {
+ }
+}
+state.ak4458audio {
+ control.1 {
+ iface MIXER
+ name '0 AK4458 L1ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.2 {
+ iface MIXER
+ name '0 AK4458 R1ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.3 {
+ iface MIXER
+ name '0 AK4458 L2ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.4 {
+ iface MIXER
+ name '0 AK4458 R2ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.5 {
+ iface MIXER
+ name '0 AK4458 L3ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.6 {
+ iface MIXER
+ name '0 AK4458 R3ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.7 {
+ iface MIXER
+ name '0 AK4458 L4ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.8 {
+ iface MIXER
+ name '0 AK4458 R4ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.9 {
+ iface MIXER
+ name '0 AK4458 De-emphasis Response DAC1'
+ value OFF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '44.1kHz'
+ item.1 OFF
+ item.2 '48kHz'
+ item.3 '32kHz'
+ }
+ }
+ control.10 {
+ iface MIXER
+ name '0 AK4458 De-emphasis Response DAC2'
+ value OFF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '44.1kHz'
+ item.1 OFF
+ item.2 '48kHz'
+ item.3 '32kHz'
+ }
+ }
+ control.11 {
+ iface MIXER
+ name '0 AK4458 De-emphasis Response DAC3'
+ value OFF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '44.1kHz'
+ item.1 OFF
+ item.2 '48kHz'
+ item.3 '32kHz'
+ }
+ }
+ control.12 {
+ iface MIXER
+ name '0 AK4458 De-emphasis Response DAC4'
+ value OFF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '44.1kHz'
+ item.1 OFF
+ item.2 '48kHz'
+ item.3 '32kHz'
+ }
+ }
+ control.13 {
+ iface MIXER
+ name '0 AK4458 Digital Filter Setting'
+ value 'Sharp Roll-Off Filter'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Sharp Roll-Off Filter'
+ item.1 'Slow Roll-Off Filter'
+ item.2 'Short delay Sharp Roll-Off Filter'
+ item.3 'Short delay Slow Roll-Off Filter'
+ item.4 'Super Slow Roll-Off Filter'
+ }
+ }
+ control.14 {
+ iface MIXER
+ name '0 AK4458 Inverting Enable of DZFB'
+ value H
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 H
+ item.1 L
+ }
+ }
+ control.15 {
+ iface MIXER
+ name '0 AK4458 Sound Mode'
+ value 'Sound Mode 0'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Sound Mode 0'
+ item.1 'Sound Mode 1'
+ item.2 'Sound Mode 2'
+ }
+ }
+ control.16 {
+ iface MIXER
+ name '0 AK4458 SDS Setting'
+ value 'Setting 0'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Setting 0'
+ item.1 'Setting 1'
+ item.2 'Setting 2'
+ item.3 'Setting 3'
+ item.4 'Setting 4'
+ item.5 'Setting 5'
+ item.6 'Setting 6'
+ item.7 'Setting 7'
+ }
+ }
+ control.17 {
+ iface MIXER
+ name '0 AK4458 FIR Filter Mode Setting'
+ value 'Mode 0'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Mode 0'
+ item.1 'Mode 1'
+ item.2 'Mode 2'
+ item.3 'Mode 3'
+ item.4 'Mode 4'
+ item.5 'Mode 5'
+ item.6 'Mode 6'
+ item.7 'Mode 7'
+ }
+ }
+ control.18 {
+ iface MIXER
+ name '0 AK4458 TDM Mode Setting'
+ value 'Normal Mode'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Normal Mode'
+ item.1 'TDM128 Mode'
+ item.2 'TDM256 Mode'
+ item.3 'TDM512 Mode'
+ }
+ }
+ control.19 {
+ iface MIXER
+ name '0 AK4458 DAC1 LRch Setting'
+ value 'Lch In, Rch In'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Lch In, Rch In'
+ item.1 'Lch In, Rch In Invert'
+ item.2 'Lch In Invert, Rch In'
+ item.3 'Lch In Invert, Rch In Invert'
+ item.4 'Rch In, Lch In'
+ item.5 'Rch In, Lch In Invert'
+ item.6 'Rch In Invert, Lch In'
+ item.7 'Rch In Invert, Lch In Invert'
+ item.8 'Lch In, Lch In'
+ item.9 'Lch In, Lch In Invert'
+ item.10 'Lch In Invert, Lch In'
+ item.11 'Lch In Invert, Lch In Invert'
+ item.12 'Rch In, Rch In'
+ item.13 'Rch In, Rch In Invert'
+ item.14 'Rch In Invert, Rch In'
+ item.15 'Rch In Invert, Rch In Invert'
+ }
+ }
+ control.20 {
+ iface MIXER
+ name '0 AK4458 DAC2 LRch Setting'
+ value 'Lch In, Rch In'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Lch In, Rch In'
+ item.1 'Lch In, Rch In Invert'
+ item.2 'Lch In Invert, Rch In'
+ item.3 'Lch In Invert, Rch In Invert'
+ item.4 'Rch In, Lch In'
+ item.5 'Rch In, Lch In Invert'
+ item.6 'Rch In Invert, Lch In'
+ item.7 'Rch In Invert, Lch In Invert'
+ item.8 'Lch In, Lch In'
+ item.9 'Lch In, Lch In Invert'
+ item.10 'Lch In Invert, Lch In'
+ item.11 'Lch In Invert, Lch In Invert'
+ item.12 'Rch In, Rch In'
+ item.13 'Rch In, Rch In Invert'
+ item.14 'Rch In Invert, Rch In'
+ item.15 'Rch In Invert, Rch In Invert'
+ }
+ }
+ control.21 {
+ iface MIXER
+ name '0 AK4458 DAC3 LRch Setting'
+ value 'Lch In, Rch In'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Lch In, Rch In'
+ item.1 'Lch In, Rch In Invert'
+ item.2 'Lch In Invert, Rch In'
+ item.3 'Lch In Invert, Rch In Invert'
+ item.4 'Rch In, Lch In'
+ item.5 'Rch In, Lch In Invert'
+ item.6 'Rch In Invert, Lch In'
+ item.7 'Rch In Invert, Lch In Invert'
+ item.8 'Lch In, Lch In'
+ item.9 'Lch In, Lch In Invert'
+ item.10 'Lch In Invert, Lch In'
+ item.11 'Lch In Invert, Lch In Invert'
+ item.12 'Rch In, Rch In'
+ item.13 'Rch In, Rch In Invert'
+ item.14 'Rch In Invert, Rch In'
+ item.15 'Rch In Invert, Rch In Invert'
+ }
+ }
+ control.22 {
+ iface MIXER
+ name '0 AK4458 DAC4 LRch Setting'
+ value 'Lch In, Rch In'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Lch In, Rch In'
+ item.1 'Lch In, Rch In Invert'
+ item.2 'Lch In Invert, Rch In'
+ item.3 'Lch In Invert, Rch In Invert'
+ item.4 'Rch In, Lch In'
+ item.5 'Rch In, Lch In Invert'
+ item.6 'Rch In Invert, Lch In'
+ item.7 'Rch In Invert, Lch In Invert'
+ item.8 'Lch In, Lch In'
+ item.9 'Lch In, Lch In Invert'
+ item.10 'Lch In Invert, Lch In'
+ item.11 'Lch In Invert, Lch In Invert'
+ item.12 'Rch In, Rch In'
+ item.13 'Rch In, Rch In Invert'
+ item.14 'Rch In Invert, Rch In'
+ item.15 'Rch In Invert, Rch In Invert'
+ }
+ }
+ control.23 {
+ iface MIXER
+ name '0 AK4458 Attenuation transition Time Settin'
+ value '4080/fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '4080/fs'
+ item.1 '2040/fs'
+ item.2 '510/fs'
+ item.3 '255/fs'
+ }
+ }
+ control.24 {
+ iface MIXER
+ name '0 AK4458 BICK fs Setting'
+ value '64fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '32fs,48fs'
+ item.1 '64fs'
+ }
+ }
+ control.25 {
+ iface MIXER
+ name '1 AK4458 L1ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.26 {
+ iface MIXER
+ name '1 AK4458 R1ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.27 {
+ iface MIXER
+ name '1 AK4458 L2ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.28 {
+ iface MIXER
+ name '1 AK4458 R2ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.29 {
+ iface MIXER
+ name '1 AK4458 L3ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.30 {
+ iface MIXER
+ name '1 AK4458 R3ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.31 {
+ iface MIXER
+ name '1 AK4458 L4ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.32 {
+ iface MIXER
+ name '1 AK4458 R4ch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -9999999
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.33 {
+ iface MIXER
+ name '1 AK4458 De-emphasis Response DAC1'
+ value OFF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '44.1kHz'
+ item.1 OFF
+ item.2 '48kHz'
+ item.3 '32kHz'
+ }
+ }
+ control.34 {
+ iface MIXER
+ name '1 AK4458 De-emphasis Response DAC2'
+ value OFF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '44.1kHz'
+ item.1 OFF
+ item.2 '48kHz'
+ item.3 '32kHz'
+ }
+ }
+ control.35 {
+ iface MIXER
+ name '1 AK4458 De-emphasis Response DAC3'
+ value OFF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '44.1kHz'
+ item.1 OFF
+ item.2 '48kHz'
+ item.3 '32kHz'
+ }
+ }
+ control.36 {
+ iface MIXER
+ name '1 AK4458 De-emphasis Response DAC4'
+ value OFF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '44.1kHz'
+ item.1 OFF
+ item.2 '48kHz'
+ item.3 '32kHz'
+ }
+ }
+ control.37 {
+ iface MIXER
+ name '1 AK4458 Digital Filter Setting'
+ value 'Sharp Roll-Off Filter'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Sharp Roll-Off Filter'
+ item.1 'Slow Roll-Off Filter'
+ item.2 'Short delay Sharp Roll-Off Filter'
+ item.3 'Short delay Slow Roll-Off Filter'
+ item.4 'Super Slow Roll-Off Filter'
+ }
+ }
+ control.38 {
+ iface MIXER
+ name '1 AK4458 Inverting Enable of DZFB'
+ value H
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 H
+ item.1 L
+ }
+ }
+ control.39 {
+ iface MIXER
+ name '1 AK4458 Sound Mode'
+ value 'Sound Mode 0'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Sound Mode 0'
+ item.1 'Sound Mode 1'
+ item.2 'Sound Mode 2'
+ }
+ }
+ control.40 {
+ iface MIXER
+ name '1 AK4458 SDS Setting'
+ value 'Setting 0'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Setting 0'
+ item.1 'Setting 1'
+ item.2 'Setting 2'
+ item.3 'Setting 3'
+ item.4 'Setting 4'
+ item.5 'Setting 5'
+ item.6 'Setting 6'
+ item.7 'Setting 7'
+ }
+ }
+ control.41 {
+ iface MIXER
+ name '1 AK4458 FIR Filter Mode Setting'
+ value 'Mode 0'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Mode 0'
+ item.1 'Mode 1'
+ item.2 'Mode 2'
+ item.3 'Mode 3'
+ item.4 'Mode 4'
+ item.5 'Mode 5'
+ item.6 'Mode 6'
+ item.7 'Mode 7'
+ }
+ }
+ control.42 {
+ iface MIXER
+ name '1 AK4458 TDM Mode Setting'
+ value 'Normal Mode'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Normal Mode'
+ item.1 'TDM128 Mode'
+ item.2 'TDM256 Mode'
+ item.3 'TDM512 Mode'
+ }
+ }
+ control.43 {
+ iface MIXER
+ name '1 AK4458 DAC1 LRch Setting'
+ value 'Lch In, Rch In'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Lch In, Rch In'
+ item.1 'Lch In, Rch In Invert'
+ item.2 'Lch In Invert, Rch In'
+ item.3 'Lch In Invert, Rch In Invert'
+ item.4 'Rch In, Lch In'
+ item.5 'Rch In, Lch In Invert'
+ item.6 'Rch In Invert, Lch In'
+ item.7 'Rch In Invert, Lch In Invert'
+ item.8 'Lch In, Lch In'
+ item.9 'Lch In, Lch In Invert'
+ item.10 'Lch In Invert, Lch In'
+ item.11 'Lch In Invert, Lch In Invert'
+ item.12 'Rch In, Rch In'
+ item.13 'Rch In, Rch In Invert'
+ item.14 'Rch In Invert, Rch In'
+ item.15 'Rch In Invert, Rch In Invert'
+ }
+ }
+ control.44 {
+ iface MIXER
+ name '1 AK4458 DAC2 LRch Setting'
+ value 'Lch In, Rch In'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Lch In, Rch In'
+ item.1 'Lch In, Rch In Invert'
+ item.2 'Lch In Invert, Rch In'
+ item.3 'Lch In Invert, Rch In Invert'
+ item.4 'Rch In, Lch In'
+ item.5 'Rch In, Lch In Invert'
+ item.6 'Rch In Invert, Lch In'
+ item.7 'Rch In Invert, Lch In Invert'
+ item.8 'Lch In, Lch In'
+ item.9 'Lch In, Lch In Invert'
+ item.10 'Lch In Invert, Lch In'
+ item.11 'Lch In Invert, Lch In Invert'
+ item.12 'Rch In, Rch In'
+ item.13 'Rch In, Rch In Invert'
+ item.14 'Rch In Invert, Rch In'
+ item.15 'Rch In Invert, Rch In Invert'
+ }
+ }
+ control.45 {
+ iface MIXER
+ name '1 AK4458 DAC3 LRch Setting'
+ value 'Lch In, Rch In'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Lch In, Rch In'
+ item.1 'Lch In, Rch In Invert'
+ item.2 'Lch In Invert, Rch In'
+ item.3 'Lch In Invert, Rch In Invert'
+ item.4 'Rch In, Lch In'
+ item.5 'Rch In, Lch In Invert'
+ item.6 'Rch In Invert, Lch In'
+ item.7 'Rch In Invert, Lch In Invert'
+ item.8 'Lch In, Lch In'
+ item.9 'Lch In, Lch In Invert'
+ item.10 'Lch In Invert, Lch In'
+ item.11 'Lch In Invert, Lch In Invert'
+ item.12 'Rch In, Rch In'
+ item.13 'Rch In, Rch In Invert'
+ item.14 'Rch In Invert, Rch In'
+ item.15 'Rch In Invert, Rch In Invert'
+ }
+ }
+ control.46 {
+ iface MIXER
+ name '1 AK4458 DAC4 LRch Setting'
+ value 'Lch In, Rch In'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Lch In, Rch In'
+ item.1 'Lch In, Rch In Invert'
+ item.2 'Lch In Invert, Rch In'
+ item.3 'Lch In Invert, Rch In Invert'
+ item.4 'Rch In, Lch In'
+ item.5 'Rch In, Lch In Invert'
+ item.6 'Rch In Invert, Lch In'
+ item.7 'Rch In Invert, Lch In Invert'
+ item.8 'Lch In, Lch In'
+ item.9 'Lch In, Lch In Invert'
+ item.10 'Lch In Invert, Lch In'
+ item.11 'Lch In Invert, Lch In Invert'
+ item.12 'Rch In, Rch In'
+ item.13 'Rch In, Rch In Invert'
+ item.14 'Rch In Invert, Rch In'
+ item.15 'Rch In Invert, Rch In Invert'
+ }
+ }
+ control.47 {
+ iface MIXER
+ name '1 AK4458 Attenuation transition Time Settin'
+ value '4080/fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '4080/fs'
+ item.1 '2040/fs'
+ item.2 '510/fs'
+ item.3 '255/fs'
+ }
+ }
+ control.48 {
+ iface MIXER
+ name '1 AK4458 BICK fs Setting'
+ value '64fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '32fs,48fs'
+ item.1 '64fs'
+ }
+ }
+ control.49 {
+ iface MIXER
+ name '0 DAC1 to AOUTA'
+ value ON
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 OFF
+ item.1 ON
+ }
+ }
+ control.50 {
+ iface MIXER
+ name '0 DAC2 to AOUTB'
+ value ON
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 OFF
+ item.1 ON
+ }
+ }
+ control.51 {
+ iface MIXER
+ name '0 DAC3 to AOUTC'
+ value ON
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 OFF
+ item.1 ON
+ }
+ }
+ control.52 {
+ iface MIXER
+ name '0 DAC4 to AOUTD'
+ value ON
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 OFF
+ item.1 ON
+ }
+ }
+ control.53 {
+ iface MIXER
+ name '1 DAC1 to AOUTA'
+ value ON
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 OFF
+ item.1 ON
+ }
+ }
+ control.54 {
+ iface MIXER
+ name '1 DAC2 to AOUTB'
+ value ON
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 OFF
+ item.1 ON
+ }
+ }
+ control.55 {
+ iface MIXER
+ name '1 DAC3 to AOUTC'
+ value ON
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 OFF
+ item.1 ON
+ }
+ }
+ control.56 {
+ iface MIXER
+ name '1 DAC4 to AOUTD'
+ value ON
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 OFF
+ item.1 ON
+ }
+ }
+}
+state.ak5558audio {
+ control.1 {
+ iface MIXER
+ name 'AK5558 Monaural Mode'
+ value '8 Slot'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '8 Slot'
+ item.1 '2 Slot'
+ item.2 '4 Slot'
+ item.3 '1 Slot'
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'AK5558 TDM mode'
+ value Off
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 TDM128
+ item.2 TDM256
+ item.3 TDM512
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'AK5558 Digital Filter'
+ value 'Sharp Roll-Off'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Sharp Roll-Off'
+ item.1 'Show Roll-Off'
+ item.2 'Short Delay Sharp Roll-Off'
+ item.3 'Short Delay Show Roll-Off'
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'AK5558 DSD Mode'
+ value PCM
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 PCM
+ item.1 DSD
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'AK5558 Frequency of DCLK'
+ value '64fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '64fs'
+ item.1 '128fs'
+ item.2 '256fs'
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'AK5558 Polarity of DCLK'
+ value Falling
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Falling
+ item.1 Rising
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'AK5558 Master Clock Frequency at DSD Mode'
+ value '512fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '512fs'
+ item.1 '768fs'
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'AK5558 DSD Phase Modulation'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'AK5558 Ch1 Enable'
+ value On
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 On
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'AK5558 Ch2 Enable'
+ value On
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 On
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'AK5558 Ch3 Enable'
+ value On
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 On
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'AK5558 Ch4 Enable'
+ value On
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 On
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'AK5558 Ch5 Enable'
+ value On
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 On
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'AK5558 Ch6 Enable'
+ value On
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 On
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'AK5558 Ch7 Enable'
+ value On
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 On
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'AK5558 Ch8 Enable'
+ value On
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 On
+ }
+ }
+}
+state.ak4497audio {
+ control.1 {
+ iface MIXER
+ name 'AK4497 Lch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -12750
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.2 {
+ iface MIXER
+ name 'AK4497 Rch Digital Volume'
+ value 255
+ comment {
+ access 'read write'
+ type INTEGER
+ count 1
+ range '0 - 255'
+ dbmin -12750
+ dbmax 0
+ dbvalue.0 0
+ }
+ }
+ control.3 {
+ iface MIXER
+ name 'AK4497 EX DF I/F clock'
+ value '768kHz'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '768kHz'
+ item.1 '384kHz'
+ }
+ }
+ control.4 {
+ iface MIXER
+ name 'AK4497 De-emphasis Response'
+ value OFF
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '44.1kHz'
+ item.1 OFF
+ item.2 '48kHz'
+ item.3 '32kHz'
+ }
+ }
+ control.5 {
+ iface MIXER
+ name 'AK4497 Data Zero Detect Mode'
+ value Separated
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Separated
+ item.1 ANDed
+ }
+ }
+ control.6 {
+ iface MIXER
+ name 'AK4497 Data Selection at Mono Mode'
+ value Rch
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Rch
+ item.1 Lch
+ }
+ }
+ control.7 {
+ iface MIXER
+ name 'AK4497 Polarity of DCLK'
+ value Falling
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Falling
+ item.1 Rising
+ }
+ }
+ control.8 {
+ iface MIXER
+ name 'AK4497 DCKL Frequency'
+ value '512fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '512fs'
+ item.1 '768fs'
+ }
+ }
+ control.9 {
+ iface MIXER
+ name 'AK4497 DDSD Play Back Path'
+ value Normal
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Normal
+ item.1 'Volume Bypass'
+ }
+ }
+ control.10 {
+ iface MIXER
+ name 'AK4497 Sound control'
+ value 'Setting 1'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Setting 1'
+ item.1 'Setting 2'
+ item.2 'Setting 3'
+ }
+ }
+ control.11 {
+ iface MIXER
+ name 'AK4497 Cut Off of DSD Filter'
+ value '50kHz'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '50kHz'
+ item.1 '150kHz'
+ }
+ }
+ control.12 {
+ iface MIXER
+ name 'AK4497 DSD Data Stream'
+ value '64fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '64fs'
+ item.1 '128fs'
+ item.2 '256fs'
+ item.3 '512fs'
+ }
+ }
+ control.13 {
+ iface MIXER
+ name 'AK4497 BICK Frequency Select'
+ value '64fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '48fs'
+ item.1 '64fs'
+ }
+ }
+ control.14 {
+ iface MIXER
+ name 'AK4497 TDM Data Select'
+ value L1R1
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 L1R1
+ item.1 TDM128_L1R1
+ item.2 TDM128_L2R2
+ item.3 TDM256_L1R1
+ item.4 TDM256_L2R2
+ item.5 TDM256_L3R3
+ item.6 TDM256_L4R4
+ item.7 TDM512_L1R1
+ item.8 TDM512_L2R2
+ item.9 TDM512_L3R3
+ item.10 TDM512_L4R4
+ item.11 TDM512_L5R5
+ item.12 TDM512_L6R6
+ item.13 TDM512_L7R7
+ item.14 TDM512_L8R8
+ }
+ }
+ control.15 {
+ iface MIXER
+ name 'AK4497 External Digital Filter'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.16 {
+ iface MIXER
+ name 'AK4497 MCLK Frequency Auto Setting'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.17 {
+ iface MIXER
+ name 'AK4497 MCLK FS Auto Detect'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.18 {
+ iface MIXER
+ name 'AK4497 Soft Mute Control'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.19 {
+ iface MIXER
+ name 'AK4497 Short delay filter'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.20 {
+ iface MIXER
+ name 'AK4497 Data Zero Detect Enable'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.21 {
+ iface MIXER
+ name 'AK4497 Slow Roll-off Filter'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.22 {
+ iface MIXER
+ name 'AK4497 Invering Enable of DZF'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.23 {
+ iface MIXER
+ name 'AK4497 Mono Mode'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.24 {
+ iface MIXER
+ name 'AK4497 Super Slow Roll-off Filter'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.25 {
+ iface MIXER
+ name 'AK4497 AOUTR Phase Inverting'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.26 {
+ iface MIXER
+ name 'AK4497 AOUTL Phase Inverting'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.27 {
+ iface MIXER
+ name 'AK4497 DSD Mute Release'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.28 {
+ iface MIXER
+ name 'AK4497 DSD Mute Control Hold'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.29 {
+ iface MIXER
+ name 'AK4497 DSDR is detected'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.30 {
+ iface MIXER
+ name 'AK4497 DSDL is detected'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.31 {
+ iface MIXER
+ name 'AK4497 DSD Data Mute'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.32 {
+ iface MIXER
+ name 'AK4497 Synchronization Control'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.33 {
+ iface MIXER
+ name 'AK4497 Output Level'
+ value '2.8_2.8Vpp'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '2.8_2.8Vpp'
+ item.1 '2.8_2.5Vpp'
+ item.2 '2.5_2.5Vpp'
+ item.3 '3.75_3.75Vpp'
+ item.4 '3.75_2.5Vpp'
+ }
+ }
+ control.34 {
+ iface MIXER
+ name 'AK4497 High Sonud Quality Mode'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.35 {
+ iface MIXER
+ name 'AK4497 Heavy Load Mode'
+ value true
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.36 {
+ iface MIXER
+ name 'AK4497 DSD Data Input Pin'
+ value '3_4_5pin'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '16_17_19pin'
+ item.1 '3_4_5pin'
+ }
+ }
+ control.37 {
+ iface MIXER
+ name 'AK4497 Daisy Chain'
+ value false
+ comment {
+ access 'read write'
+ type BOOLEAN
+ count 1
+ }
+ }
+ control.38 {
+ iface MIXER
+ name 'AK4497 ATT Transit Time'
+ value '4080/fs'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 '4080/fs'
+ item.1 '2040/fs'
+ item.2 '510/fs'
+ item.3 '255/fs'
+ }
+ }
+ control.39 {
+ iface MIXER
+ name 'AK4497 Read FS Auto Detect Mode'
+ value 'Normal Speed Mode'
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 'Normal Speed Mode'
+ item.1 'Double Speed Mode'
+ item.2 'Quad Speed Mode'
+ item.3 'Quad Speed Mode'
+ item.4 'Oct Speed Mode'
+ item.5 'Hex Speed Mode'
+ item.6 'Oct Speed Mode'
+ item.7 'Hex Speed Mode'
+ }
+ }
+ control.40 {
+ iface MIXER
+ name 'AK4497 DAC Enable'
+ value On
+ comment {
+ access 'read write'
+ type ENUMERATED
+ count 1
+ item.0 Off
+ item.1 On
+ }
+ }
+}
diff --git a/bsp/meta-freescale/recipes-bsp/boot-format/boot-format/flags.patch b/bsp/meta-freescale/recipes-bsp/boot-format/boot-format/flags.patch
new file mode 100644
index 00000000..cddb34cd
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/boot-format/boot-format/flags.patch
@@ -0,0 +1,21 @@
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -3,14 +3,14 @@
+ INSTALL=install
+ PREFIX=/usr
+
+-CFLAGS=-Wall
++override CFLAGS+=-Wall
+
+ all: boot_format
+
+ boot_format.o: boot_format.c boot_format.h
+
+ boot_format: boot_format.o
+- $(CC) $< -o $@
++ $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
+
+ install: boot_format
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
diff --git a/bsp/meta-freescale/recipes-bsp/boot-format/boot-format_git.bb b/bsp/meta-freescale/recipes-bsp/boot-format/boot-format_git.bb
new file mode 100644
index 00000000..92ec8307
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/boot-format/boot-format_git.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Boot format utility for booting from eSDHC/eSPI"
+LICENSE = "GPLv2"
+PR = "r6"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/boot-format;nobranch=1 \
+ file://flags.patch"
+SRCREV = "4eb81a6797ef4e58bf7d9b2d58afb37a21c1f550"
+
+S = "${WORKDIR}/git"
+EXTRA_OEMAKE = 'CC="${CC}" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"'
+
+do_install(){
+ oe_runmake DESTDIR=${D} PREFIX=${prefix} install
+}
+
+PACKAGES =+ "${PN}-config"
+FILES_${PN}-config += "${datadir}/*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess.bb b/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess.bb
new file mode 100644
index 00000000..570ee3f6
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "provides the tcl script for endian swap"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = "file://byte_swap.tcl"
+
+S = "${WORKDIR}"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install () {
+ install -d ${D}/${bindir}
+ install -m 755 ${WORKDIR}/byte_swap.tcl ${D}/${bindir}
+}
+
+RDEPENDS_${PN} += "tcl"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl b/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl
new file mode 100755
index 00000000..c6222022
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl
@@ -0,0 +1,40 @@
+puts $argv
+set i_file [lindex $argv 0]
+set o_file [lindex $argv 1]
+set num_b [lindex $argv 2]
+puts ""
+
+set fileid_i [open $i_file "r"]
+set fileid_o [open $o_file "w+"]
+fconfigure $fileid_i -translation {binary binary}
+fconfigure $fileid_o -translation {binary binary}
+
+set old_bin [read $fileid_i]
+set new_bin {}
+set old_length [string length $old_bin]
+set old_rem [expr $old_length % $num_b]
+if {$old_rem != 0} {
+ for {set i 0} {$i< [expr $num_b - $old_rem]} {incr i 1} {
+ append old_bin y
+ }
+}
+for {set i 0} {$i<[expr $old_length-8]} {incr i $num_b} {
+ for {set j $num_b} {$j>0} {incr j -1} {
+ append new_bin [string index $old_bin [expr $i+($j-1)]]
+ }
+}
+
+for {set j 0} {$j<8} {incr j 1} {
+ append new_bin [string index $old_bin [expr $i+$j]]
+}
+
+for {set i 0} {$i<[string length $old_bin]} {incr i $num_b} {
+ set binValue [string range $old_bin [expr $i+0] [expr $i+($num_b-1)]]
+ binary scan $binValue H[expr $num_b*2] hexValue
+
+ set binValue [string range $new_bin [expr $i+0] [expr $i+($num_b-1)]]
+ binary scan $binValue H[expr $num_b*2] hexValue
+}
+
+puts -nonewline $fileid_o $new_bin
+close $fileid_o
diff --git a/bsp/meta-freescale/recipes-bsp/ddr-phy/ddr-phy_git.bb b/bsp/meta-freescale/recipes-bsp/ddr-phy/ddr-phy_git.bb
new file mode 100644
index 00000000..ebd68c26
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/ddr-phy/ddr-phy_git.bb
@@ -0,0 +1,29 @@
+SUMMARY = "DDR firmware repository"
+LICENSE = "NXP-Binary-EULA"
+LIC_FILES_CHKSUM = "file://NXP-Binary-EULA.txt;md5=89cc852481956e861228286ac7430d74"
+
+inherit deploy fsl-eula-unpack
+
+SRC_URI = "git://github.com/nxp/ddr-phy-binary.git;fsl-eula=true;nobranch=1"
+SRCREV = "14d03e6e748ed5ebb9440f264bb374f1280b061c"
+
+S = "${WORKDIR}/git"
+
+REGLEX_lx2160a = "lx2160a"
+
+do_install () {
+ install -d ${D}/boot
+ install -m 755 ${S}/${REGLEX}/* ${D}/boot
+}
+
+do_deploy () {
+ install -d ${DEPLOYDIR}/ddr-phy
+ install -m 755 ${S}/${REGLEX}/* ${DEPLOYDIR}/ddr-phy
+}
+addtask deploy before do_populate_sysroot after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/boot"
+
+COMPATIBLE_MACHINE = "(lx2160a)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-7.8.inc b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-7.8.inc
new file mode 100644
index 00000000..6da6736c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-7.8.inc
@@ -0,0 +1,18 @@
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Copyright (C) 2018 O.S. Systems Software LTDA.
+SECTION = "base"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db"
+
+SRCBRANCH ?= "master"
+SRC_URI = " \
+ ${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \
+"
+
+SRC_URI[md5sum] = "0967aa59b3fd8d80fcb98146a9aac91b"
+SRC_URI[sha256sum] = "910fbf866f61185adfd60c1704b2da41030cb175901d06e40402b49f9240bdee"
+
+S = "${WORKDIR}/firmware-imx-${PV}"
+
+inherit fsl-eula-unpack
diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8_7.8.bb b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8_7.8.bb
new file mode 100644
index 00000000..d99aa41b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8_7.8.bb
@@ -0,0 +1,25 @@
+# Copyright 2018 NXP
+SUMMARY = "Freescale i.MX firmware for 8 family"
+DESCRIPTION = "Freescale i.MX firmware for 8 family"
+
+require firmware-imx-${PV}.inc
+
+inherit deploy
+
+do_install[noexec] = "1"
+
+do_deploy() {
+ # Cadence HDMI
+ install -m 0644 ${S}/firmware/hdmi/cadence/hdmitxfw.bin ${DEPLOYDIR}
+ install -m 0644 ${S}/firmware/hdmi/cadence/hdmirxfw.bin ${DEPLOYDIR}
+ install -m 0644 ${S}/firmware/hdmi/cadence/dpfw.bin ${DEPLOYDIR}
+ # SECO
+ install -m 0644 ${S}/firmware/seco/mx8qm-ahab-container.img ${DEPLOYDIR}
+}
+addtask deploy after do_install before do_build
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
+COMPATIBLE_MACHINE = "(mx8)"
+COMPATIBLE_MACHINE_mx8m = "(^$)"
+COMPATIBLE_MACHINE_mx8x = "(^$)"
diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8m_7.8.bb b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8m_7.8.bb
new file mode 100644
index 00000000..a605d226
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8m_7.8.bb
@@ -0,0 +1,24 @@
+# Copyright 2018 NXP
+SUMMARY = "Freescale i.MX firmware for 8M and 8M Mini family"
+DESCRIPTION = "Freescale i.MX firmware for 8M and 8M Mini family"
+
+require firmware-imx-${PV}.inc
+
+inherit deploy
+
+do_install[noexec] = "1"
+
+do_deploy() {
+ # Synopsys DDR
+ for ddr_firmware in ${DDR_FIRMWARE_NAME}; do
+ install -m 0644 ${S}/firmware/ddr/synopsys/${ddr_firmware} ${DEPLOYDIR}
+ done
+ # Cadence DP and HDMI
+ install -m 0644 ${S}/firmware/hdmi/cadence/signed_dp_imx8m.bin ${DEPLOYDIR}
+ install -m 0644 ${S}/firmware/hdmi/cadence/signed_hdmi_imx8m.bin ${DEPLOYDIR}
+}
+addtask deploy after do_install before do_build
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
+COMPATIBLE_MACHINE = "(mx8m)"
diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8x_7.8.bb b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8x_7.8.bb
new file mode 100644
index 00000000..85d394a0
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8x_7.8.bb
@@ -0,0 +1,20 @@
+# Copyright 2018 NXP
+SUMMARY = "Freescale i.MX firmware for 8X family"
+DESCRIPTION = "Freescale i.MX firmware for 8X family"
+
+require firmware-imx-${PV}.inc
+
+inherit deploy
+
+do_install[noexec] = "1"
+
+do_deploy() {
+ # SECO
+ install -m 0644 ${S}/firmware/seco/mx8qx-ahab-container.img ${DEPLOYDIR}
+}
+
+addtask deploy after do_install before do_build
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
+COMPATIBLE_MACHINE = "(mx8x)"
diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx_7.8.bb b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx_7.8.bb
new file mode 100644
index 00000000..bf0fbc3f
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx_7.8.bb
@@ -0,0 +1,106 @@
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Copyright (C) 2018 O.S. Systems Software LTDA.
+SUMMARY = "Freescale i.MX firmware"
+DESCRIPTION = "Freescale i.MX firmware such as for the VPU"
+
+require firmware-imx-${PV}.inc
+
+PE = "1"
+
+SRC_URI += " \
+ git://github.com/NXP/imx-firmware.git;protocol=https;branch=${SRCBRANCH};destsuffix=${S}/git \
+"
+SRCREV = "8ce9046f5058fdd2c5271f86ccfc61bc5a248ae3"
+
+inherit allarch
+
+do_install() {
+ install -d ${D}${base_libdir}/firmware/imx
+ install -d ${D}${base_libdir}/firmware/bcm
+ install -d ${D}${sysconfdir}/firmware
+
+ cd firmware
+ for d in *; do
+ case $d in
+ ddr|hdmi|seco)
+ # These folders are for i.MX 8 and are included in the boot image via imx-boot
+ bbnote Excluding folder $d
+ ;;
+ *)
+ cp -rfv $d ${D}${base_libdir}/firmware
+ ;;
+ esac
+ done
+ cd -
+
+ #1BW_BCM43340
+ install -d ${D}${base_libdir}/firmware/bcm/1BW_BCM43340
+ cp -rfv git/brcm/1BW_BCM43340/*.bin ${D}${base_libdir}/firmware/bcm/1BW_BCM43340
+ cp -rfv git/brcm/1BW_BCM43340/*.cal ${D}${base_libdir}/firmware/bcm/1BW_BCM43340
+ cp -rfv git/brcm/1BW_BCM43340/*.hcd ${D}${sysconfdir}/firmware/
+
+ #1CX_BCM4356
+ install -d ${D}${base_libdir}/firmware/bcm/1CX_BCM4356
+ cp -rfv git/brcm/1CX_BCM4356/fw_bcmdhd.bin ${D}${base_libdir}/firmware/bcm/1CX_BCM4356
+
+ #1DX_BCM4343W
+ install -d ${D}${base_libdir}/firmware/bcm/1DX_BCM4343W
+ cp -rfv git/brcm/1DX_BCM4343W/*.bin ${D}${base_libdir}/firmware/bcm/1DX_BCM4343W
+ cp -rfv git/brcm/1DX_BCM4343W/*.cal ${D}${base_libdir}/firmware/bcm/1DX_BCM4343W
+ cp -rfv git/brcm/1DX_BCM4343W/*.hcd ${D}${sysconfdir}/firmware/
+
+ #1FD_BCM89359
+ install -d ${D}${base_libdir}/firmware/bcm/1FD_BCM89359
+ cp -rfv git/brcm/1FD_BCM89359/*.bin ${D}${base_libdir}/firmware/bcm/1FD_BCM89359
+ cp -rfv git/brcm/1FD_BCM89359/*.hcd ${D}${sysconfdir}/firmware/
+
+ #SN8000_BCM43362
+ install -d ${D}${base_libdir}/firmware/bcm/SN8000_BCM43362
+ cp -rfv git/brcm/SN8000_BCM43362/*.bin ${D}${base_libdir}/firmware/bcm/SN8000_BCM43362
+ cp -rfv git/brcm/SN8000_BCM43362/*.cal ${D}${base_libdir}/firmware/bcm/SN8000_BCM43362
+ cp -rfv git/brcm/1DX_BCM4343W/*.hcd ${D}${sysconfdir}/firmware/
+
+ #ZP_BCM4339
+ install -d ${D}${base_libdir}/firmware/bcm/ZP_BCM4339
+ cp -rfv git/brcm/ZP_BCM4339/*.bin ${D}${base_libdir}/firmware/bcm/ZP_BCM4339
+ cp -rfv git/brcm/ZP_BCM4339/*.cal ${D}${base_libdir}/firmware/bcm/ZP_BCM4339
+ cp -rfv git/brcm/ZP_BCM4339/*.hcd ${D}${sysconfdir}/firmware/
+
+ mv ${D}${base_libdir}/firmware/epdc/ ${D}${base_libdir}/firmware/imx/epdc/
+ mv ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw.nonrestricted ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw
+
+ find ${D}${base_libdir}/firmware -type f -exec chmod 644 '{}' ';'
+ find ${D}${base_libdir}/firmware -type f -exec chown root:root '{}' ';'
+
+ # Remove files not going to be installed
+ find ${D}${base_libdir}/firmware/ -name '*.mk' -exec rm '{}' ';'
+}
+
+python populate_packages_prepend() {
+ vpudir = bb.data.expand('${base_libdir}/firmware/vpu', d)
+ do_split_packages(d, vpudir, '^vpu_fw_([^_]*).*\.bin',
+ output_pattern='firmware-imx-vpu-%s',
+ description='Freescale IMX Firmware %s',
+ extra_depends='',
+ prepend=True)
+
+ sdmadir = bb.data.expand('${base_libdir}/firmware/sdma', d)
+ do_split_packages(d, sdmadir, '^sdma-([^-]*).*\.bin',
+ output_pattern='firmware-imx-sdma-%s',
+ description='Freescale IMX Firmware %s',
+ extra_depends='',
+ prepend=True)
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-*"
+
+PACKAGES =+ "${PN}-epdc ${PN}-brcm ${PN}-scfw"
+
+FILES_${PN}-epdc = "${base_libdir}/firmware/imx/epdc/"
+FILES_${PN}-brcm = "${base_libdir}/firmware/bcm/*/*.bin ${base_libdir}/firmware/bcm/*/*.cal ${sysconfdir}/firmware/"
+FILES_${PN}-scfw = "${base_libdir}/firmware/scfw/"
+
+COMPATIBLE_MACHINE = "(imx)"
diff --git a/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx51evk/machconfig b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx51evk/machconfig
new file mode 100644
index 00000000..3dbcc111
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx51evk/machconfig
@@ -0,0 +1,11 @@
+# Display options
+HAVE_TOUCHSCREEN=0
+HAVE_KEYBOARD=1
+
+#DISPLAY_CAN_ROTATE=0
+#DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=1024
+#DISPLAY_HEIGHT_PIXELS=720
+#DISPLAY_BPP=16
+#DISPLAY_DPI=150
+#DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx53ard/machconfig b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx53ard/machconfig
new file mode 100644
index 00000000..7f884fe8
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx53ard/machconfig
@@ -0,0 +1,13 @@
+# Display options
+HAVE_TOUCHSCREEN=1
+HAVE_KEYBOARD=0
+
+TSLIB_TSDEVICE="/dev/input/touchscreen0"
+
+#DISPLAY_CAN_ROTATE=0
+#DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=1024
+#DISPLAY_HEIGHT_PIXELS=720
+#DISPLAY_BPP=16
+#DISPLAY_DPI=150
+#DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx53qsb/machconfig b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx53qsb/machconfig
new file mode 100644
index 00000000..3dbcc111
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/imx53qsb/machconfig
@@ -0,0 +1,11 @@
+# Display options
+HAVE_TOUCHSCREEN=0
+HAVE_KEYBOARD=1
+
+#DISPLAY_CAN_ROTATE=0
+#DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=1024
+#DISPLAY_HEIGHT_PIXELS=720
+#DISPLAY_BPP=16
+#DISPLAY_DPI=150
+#DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6/machconfig b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6/machconfig
new file mode 100644
index 00000000..ded33a07
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6/machconfig
@@ -0,0 +1,11 @@
+# Display options
+#HAVE_TOUCHSCREEN=1
+HAVE_KEYBOARD=0
+
+#DISPLAY_CAN_ROTATE=0
+#DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=1024
+#DISPLAY_HEIGHT_PIXELS=720
+#DISPLAY_BPP=16
+#DISPLAY_DPI=150
+#DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6sll/machconfig b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6sll/machconfig
new file mode 100644
index 00000000..e3b99b7c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6sll/machconfig
@@ -0,0 +1,11 @@
+# Display options
+HAVE_TOUCHSCREEN=1
+HAVE_KEYBOARD=0
+
+#DISPLAY_CAN_ROTATE=0
+#DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=1024
+#DISPLAY_HEIGHT_PIXELS=720
+#DISPLAY_BPP=16
+#DISPLAY_DPI=150
+#DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6ul/machconfig b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6ul/machconfig
new file mode 100644
index 00000000..e3b99b7c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx6ul/machconfig
@@ -0,0 +1,11 @@
+# Display options
+HAVE_TOUCHSCREEN=1
+HAVE_KEYBOARD=0
+
+#DISPLAY_CAN_ROTATE=0
+#DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=1024
+#DISPLAY_HEIGHT_PIXELS=720
+#DISPLAY_BPP=16
+#DISPLAY_DPI=150
+#DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx7/machconfig b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx7/machconfig
new file mode 100644
index 00000000..e3b99b7c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx7/machconfig
@@ -0,0 +1,11 @@
+# Display options
+HAVE_TOUCHSCREEN=1
+HAVE_KEYBOARD=0
+
+#DISPLAY_CAN_ROTATE=0
+#DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=1024
+#DISPLAY_HEIGHT_PIXELS=720
+#DISPLAY_BPP=16
+#DISPLAY_DPI=150
+#DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx7ulp/machconfig b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx7ulp/machconfig
new file mode 100644
index 00000000..25b18f21
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor/mx7ulp/machconfig
@@ -0,0 +1,11 @@
+# Display options
+HAVE_TOUCHSCREEN=0
+HAVE_KEYBOARD=0
+
+#DISPLAY_CAN_ROTATE=0
+#DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=1024
+#DISPLAY_HEIGHT_PIXELS=720
+#DISPLAY_BPP=16
+#DISPLAY_DPI=150
+#DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/bsp/meta-freescale/recipes-bsp/formfactor/formfactor_%.bbappend b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor_%.bbappend
new file mode 100644
index 00000000..15f8f4e8
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/formfactor/formfactor_%.bbappend
@@ -0,0 +1,2 @@
+# Append path for i.MX custom matchconfig
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/bsp/meta-freescale/recipes-bsp/fsl-tlu/fsl-tlu_1.0.0.bb b/bsp/meta-freescale/recipes-bsp/fsl-tlu/fsl-tlu_1.0.0.bb
new file mode 100644
index 00000000..131bda55
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/fsl-tlu/fsl-tlu_1.0.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Freescale TLU(Table Lookup Unit) test package"
+DESCRIPTION = "This package includes the TLU(Table Lookup Unit) test scripts \
+and configuration files."
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8a71d0475d08eee76d8b6d0c6dbec543"
+
+SRC_URI = "git://git.freescale.com/ppc/sdk/fsl-tlu.git;branch=master"
+SRCREV = "8837cce3c86b30c0931c319e9e1a8ca622ae5354"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${sbindir}/fsl_tlu
+ find . -type f -exec cp {} ${D}${sbindir}/fsl_tlu/ \;
+}
+
+COMPATIBLE_MACHINE = "(e500mc)"
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
diff --git a/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf/0001-Allow-BUILD_STRING-to-be-set-in-.revision-file.patch b/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf/0001-Allow-BUILD_STRING-to-be-set-in-.revision-file.patch
new file mode 100644
index 00000000..be747789
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf/0001-Allow-BUILD_STRING-to-be-set-in-.revision-file.patch
@@ -0,0 +1,29 @@
+From 4123893a8a4d93362a0a36f72134f75436fee457 Mon Sep 17 00:00:00 2001
+From: Tom Hochstein <tom.hochstein@nxp.com>
+Date: Thu, 18 Oct 2018 18:03:46 -0500
+Subject: [PATCH] Allow BUILD_STRING to be set in .revision file.
+
+Upstream-Status: Pending
+
+Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
+---
+ Makefile | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/Makefile b/Makefile
+index 57c4a90..ec49397 100644
+--- a/Makefile
++++ b/Makefile
+@@ -97,6 +97,9 @@ endif
+
+ # Default build string (git branch and commit)
+ ifeq (${BUILD_STRING},)
++ BUILD_STRING := $(shell cat .revision 2> /dev/null)
++endif
++ifeq (${BUILD_STRING},)
+ BUILD_STRING := $(shell git describe --long --always --dirty --tags 2> /dev/null)
+ endif
+ VERSION_STRING := v${VERSION_MAJOR}.${VERSION_MINOR}(${BUILD_TYPE}):${BUILD_STRING}
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf_1.5.0.bb b/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf_1.5.0.bb
new file mode 100644
index 00000000..9d402dba
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf_1.5.0.bb
@@ -0,0 +1,47 @@
+# Copyright 2017-2018 NXP
+
+DESCRIPTION = "i.MX ARM Trusted Firmware"
+SECTION = "BSP"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+
+PV = "1.5.0+git${SRCPV}"
+
+SRCBRANCH = "imx_4.9.123_imx8mm_ga"
+SRC_URI = "git://source.codeaurora.org/external/imx/imx-atf.git;protocol=https;branch=${SRCBRANCH} \
+ file://0001-Allow-BUILD_STRING-to-be-set-in-.revision-file.patch \
+"
+SRCREV = "af3554fc6ea8c17710ffd37a14a25834fad19271"
+
+S = "${WORKDIR}/git"
+
+inherit deploy
+
+BOOT_TOOLS = "imx-boot-tools"
+
+PLATFORM ?= "INVALID"
+PLATFORM_mx8qm = "imx8qm"
+PLATFORM_mx8qxp = "imx8qxp"
+PLATFORM_mx8mq = "imx8mq"
+PLATFORM_mx8mm = "imx8mm"
+
+EXTRA_OEMAKE += " \
+ CROSS_COMPILE="${TARGET_PREFIX}" \
+ PLAT=${PLATFORM} \
+"
+
+do_compile() {
+ # Clear LDFLAGS to avoid the option -Wl recognize issue
+ unset LDFLAGS
+ oe_runmake bl31
+}
+
+do_install[noexec] = "1"
+
+do_deploy() {
+ install -Dm 0644 ${S}/build/${PLATFORM}/release/bl31.bin ${DEPLOYDIR}/${BOOT_TOOLS}/bl31-${PLATFORM}.bin
+}
+addtask deploy after do_compile
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+COMPATIBLE_MACHINE = "(mx8)"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs/0001-Add-missing-includes-as-pointed-out-by-musl.patch b/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs/0001-Add-missing-includes-as-pointed-out-by-musl.patch
new file mode 100644
index 00000000..9c86f074
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs/0001-Add-missing-includes-as-pointed-out-by-musl.patch
@@ -0,0 +1,33 @@
+From c183a648958ab4454247cfd88d01da7730a53d19 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 11 May 2017 00:59:07 -0700
+Subject: [PATCH] Add missing includes as pointed out by musl
+
+These headers are indrectly included when building with
+glibc, this is exposed when compiling with musl systems
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/mtd.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/mtd.h b/src/mtd.h
+index 6cb0ca2..0eaea48 100644
+--- a/src/mtd.h
++++ b/src/mtd.h
+@@ -25,9 +25,12 @@
+ #ifndef MTD_H
+ #define MTD_H
+
++#define _GNU_SOURCE
++#include <fcntl.h>
+ #include <mtd/mtd-user.h>
+ #include <endian.h>
+ #include <stdint.h>
++#include <stddef.h>
+
+ #include "BootControlBlocks.h"
+ #include "rom_nand_hamming_code_ecc.h"
+--
+2.12.2
+
diff --git a/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs_git.bb b/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs_git.bb
new file mode 100644
index 00000000..60fcc25d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs_git.bb
@@ -0,0 +1,19 @@
+# Copyright (C) 2013-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Copyright 2018 (C) O.S. Systems Software LTDA.
+
+SUMMARY = "Nand boot write source"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
+
+PV = "5.5+git${SRCPV}"
+SRC_URI = "git://github.com/NXPmicro/imx-kobs.git;protocol=https \
+ file://0001-Add-missing-includes-as-pointed-out-by-musl.patch \
+"
+SRCREV = "a0e9adce2fb7fcd57e794d7f9a5deba0f94f521b"
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+COMPATIBLE_MACHINE = "(imx)"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-lib/imx-lib_git.bb b/bsp/meta-freescale/recipes-bsp/imx-lib/imx-lib_git.bb
new file mode 100644
index 00000000..d94b2daa
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-lib/imx-lib_git.bb
@@ -0,0 +1,44 @@
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright (C) 2012-2018 O.S. Systems Software LTDA.
+# Copyright 2017 NXP
+
+DESCRIPTION = "Platform specific libraries for imx platform"
+LICENSE = "LGPLv2.1"
+SECTION = "multimedia"
+
+LIC_FILES_CHKSUM = "file://COPYING-LGPL-2.1;md5=fbc093901857fcd118f065f900982c24"
+
+PE = "1"
+
+PV = "5.8+${SRCPV}"
+
+SRCBRANCH = "master"
+SRC_URI = "git://source.codeaurora.org/external/imx/imx-lib.git;protocol=https;branch=${SRCBRANCH}"
+SRCREV = "3f777974c0c146817e2ff5cb0340ca66a1f99e57"
+
+S = "${WORKDIR}/git"
+
+inherit use-imx-headers
+
+PLATFORM_mx6q = "IMX6Q"
+PLATFORM_mx6dl = "IMX6Q"
+PLATFORM_mx6sl = "IMX6S"
+PLATFORM_mx6sll = "IMX6UL"
+PLATFORM_mx6sx = "IMX6S"
+PLATFORM_mx6ul = "IMX6UL"
+PLATFORM_mx7d = "IMX7"
+PLATFORM_mx7ulp = "IMX7"
+
+PARALLEL_MAKE="-j 1"
+EXTRA_OEMAKE = ""
+
+do_compile () {
+ INCLUDE_DIR="-I${STAGING_INCDIR_IMX}"
+ oe_runmake CROSS_COMPILE="${HOST_PREFIX}" PLATFORM="${PLATFORM}" INCLUDE="${INCLUDE_DIR}" all
+}
+
+do_install () {
+ oe_runmake PLATFORM="${PLATFORM}" DEST_DIR="${D}" install
+}
+
+COMPATIBLE_MACHINE = "(mx6|mx7)"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-boot_0.2.bb b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-boot_0.2.bb
new file mode 100644
index 00000000..68492a9b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-boot_0.2.bb
@@ -0,0 +1,176 @@
+# Copyright 2017-2018 NXP
+
+require imx-mkimage_git.inc
+
+DESCRIPTION = "Generate Boot Loader for i.MX 8 device"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+SECTION = "BSP"
+
+IMX_EXTRA_FIRMWARE = "firmware-imx-8 imx-sc-firmware"
+IMX_EXTRA_FIRMWARE_mx8m = "firmware-imx-8m"
+IMX_EXTRA_FIRMWARE_mx8x = "firmware-imx-8x imx-sc-firmware"
+DEPENDS += " \
+ u-boot \
+ firmware-imx \
+ ${IMX_EXTRA_FIRMWARE} \
+ imx-atf \
+"
+DEPENDS_append_mx8m = " dtc-native"
+BOOT_NAME = "imx-boot"
+PROVIDES = "${BOOT_NAME}"
+
+inherit deploy
+
+# Add CFLAGS with native INCDIR & LIBDIR for imx-mkimage build
+CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR_NATIVE} -L ${STAGING_LIBDIR_NATIVE}"
+
+# This package aggregates output deployed by other packages,
+# so set the appropriate dependencies
+do_compile[depends] += " \
+ virtual/bootloader:do_deploy \
+ ${@' '.join('%s:do_deploy' % r for r in '${IMX_EXTRA_FIRMWARE}'.split() )} \
+ imx-atf:do_deploy \
+"
+
+SC_FIRMWARE_NAME ?= "scfw_tcm.bin"
+
+ATF_MACHINE_NAME ?= "bl31-imx8qm.bin"
+ATF_MACHINE_NAME_mx8qm = "bl31-imx8qm.bin"
+ATF_MACHINE_NAME_mx8qxp = "bl31-imx8qxp.bin"
+ATF_MACHINE_NAME_mx8mq = "bl31-imx8mq.bin"
+ATF_MACHINE_NAME_mx8mm = "bl31-imx8mm.bin"
+ATF_MACHINE_NAME_append = "${@bb.utils.contains('COMBINED_FEATURES', 'optee', '-optee', '', d)}"
+
+DCD_NAME ?= "imx8qm_dcd.cfg.tmp"
+DCD_NAME_mx8qm = "imx8qm_dcd.cfg.tmp"
+DCD_NAME_mx8qxp = "imx8qx_dcd.cfg.tmp"
+
+UBOOT_NAME = "u-boot-${MACHINE}.bin-${UBOOT_CONFIG}"
+BOOT_CONFIG_MACHINE = "${BOOT_NAME}-${MACHINE}-${UBOOT_CONFIG}.bin"
+
+TOOLS_NAME ?= "mkimage_imx8"
+
+SOC_TARGET ?= "INVALID"
+SOC_TARGET_mx8qm = "iMX8QM"
+SOC_TARGET_mx8qxp = "iMX8QX"
+SOC_TARGET_mx8mq = "iMX8M"
+SOC_TARGET_mx8mm = "iMX8MM"
+
+IMXBOOT_TARGETS ?= \
+ "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi', \
+ bb.utils.contains('UBOOT_CONFIG', 'nand', 'flash_nand', \
+ 'flash flash_dcd', d), d)}"
+IMXBOOT_TARGETS_mx8qxp = \
+ "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi', \
+ bb.utils.contains('UBOOT_CONFIG', 'nand', 'flash_nand', \
+ 'flash', d), d)}"
+IMXBOOT_TARGETS_mx8qxpa0 = \
+ "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi_a0', \
+ bb.utils.contains('UBOOT_CONFIG', 'nand', 'flash_nand_a0', \
+ 'flash_a0 flash_dcd_a0', d), d)}"
+
+BOOT_STAGING = "${S}/${SOC_TARGET}"
+BOOT_STAGING_mx8mm = "${S}/iMX8M"
+
+SOC_FAMILY = "INVALID"
+SOC_FAMILY_mx8 = "mx8"
+SOC_FAMILY_mx8m = "mx8m"
+SOC_FAMILY_mx8x = "mx8x"
+
+compile_mx8m() {
+ bbnote 8MQ/8MM boot binary build
+ for ddr_firmware in ${DDR_FIRMWARE_NAME}; do
+ bbnote "Copy ddr_firmware: ${ddr_firmware} from ${DEPLOY_DIR_IMAGE} -> ${BOOT_STAGING} "
+ cp ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${BOOT_STAGING}
+ done
+ cp ${DEPLOY_DIR_IMAGE}/signed_*_imx8m.bin ${BOOT_STAGING}
+ cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ${BOOT_STAGING}/u-boot-spl.bin
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${UBOOT_DTB_NAME} ${BOOT_STAGING}
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/u-boot-nodtb.bin ${BOOT_STAGING}
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/mkimage_uboot ${BOOT_STAGING}
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin
+ cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin
+}
+compile_mx8() {
+ bbnote 8QM boot binary build
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME} ${BOOT_STAGING}/scfw_tcm.bin
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin
+ cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin
+ cp ${DEPLOY_DIR_IMAGE}/mx8qm-ahab-container.img ${BOOT_STAGING}
+}
+compile_mx8x() {
+ bbnote 8QX boot binary build
+ cp ${DEPLOY_DIR_IMAGE}/mx8qx-ahab-container.img ${BOOT_STAGING}
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME} ${BOOT_STAGING}/scfw_tcm.bin
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin
+ cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin
+}
+do_compile() {
+ compile_${SOC_FAMILY}
+ # mkimage for i.MX8
+ for target in ${IMXBOOT_TARGETS}; do
+ bbnote "building ${SOC_TARGET} - ${target}"
+ make SOC=${SOC_TARGET} ${target}
+ if [ -e "${BOOT_STAGING}/flash.bin" ]; then
+ cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE}-${target}
+ fi
+ done
+}
+
+do_install () {
+ install -d ${D}/boot
+ for target in ${IMXBOOT_TARGETS}; do
+ install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${target} ${D}/boot/
+ done
+}
+
+deploy_mx8m() {
+ install -d ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ${DEPLOYDIR}/${BOOT_TOOLS}
+ for ddr_firmware in ${DDR_FIRMWARE_NAME}; do
+ install -m 0644 ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${DEPLOYDIR}/${BOOT_TOOLS}
+ done
+ install -m 0644 ${DEPLOY_DIR_IMAGE}/signed_hdmi*.bin ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0755 ${BOOT_STAGING}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0755 ${BOOT_STAGING}/mkimage_fit_atf.sh ${DEPLOYDIR}/${BOOT_TOOLS}
+}
+deploy_mx8() {
+ install -d ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0644 ${BOOT_STAGING}/${DCD_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0644 ${BOOT_STAGING}/mx8qm-ahab-container.img ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
+}
+deploy_mx8x() {
+ install -d ${DEPLOYDIR}/${BOOT_TOOLS}
+ if [ "${MACHINE}" = "imx8qxpa0mek" ]; then
+ install -m 0644 ${BOOT_STAGING}/${DCD_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
+ fi
+ install -m 0644 ${BOOT_STAGING}/mx8qx-ahab-container.img ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
+}
+do_deploy() {
+ deploy_${SOC_FAMILY}
+ # copy the tool mkimage to deploy path and sc fw, dcd and uboot
+ install -m 0644 ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
+ # copy makefile (soc.mak) for reference
+ install -m 0644 ${BOOT_STAGING}/soc.mak ${DEPLOYDIR}/${BOOT_TOOLS}
+ # copy the generated boot image to deploy path
+ for target in ${IMXBOOT_TARGETS}; do
+ # Use first "target" as IMAGE_IMXBOOT_TARGET
+ if [ "$IMAGE_IMXBOOT_TARGET" = "" ]; then
+ IMAGE_IMXBOOT_TARGET="$target"
+ echo "Set boot target as $IMAGE_IMXBOOT_TARGET"
+ fi
+ install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${target} ${DEPLOYDIR}
+ done
+ cd ${DEPLOYDIR}
+ ln -sf ${BOOT_CONFIG_MACHINE}-${IMAGE_IMXBOOT_TARGET} ${BOOT_NAME}
+ cd -
+}
+addtask deploy before do_build after do_compile
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+FILES_${PN} = "/boot"
+
+COMPATIBLE_MACHINE = "(mx8)"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.bb b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.bb
new file mode 100644
index 00000000..5304ebf9
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.bb
@@ -0,0 +1,35 @@
+# Copyright (C) 2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+
+require imx-mkimage_git.inc
+
+DESCRIPTION = "i.MX make image"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+SECTION = "BSP"
+
+inherit native deploy
+
+CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR} -L ${STAGING_LIBDIR}"
+
+do_compile () {
+ cd ${S}
+ oe_runmake clean
+ oe_runmake bin
+ oe_runmake -C iMX8M -f soc.mak mkimage_imx8
+ oe_runmake -C iMX8QM -f soc.mak imx8qm_dcd.cfg.tmp
+ oe_runmake -C iMX8QX -f soc.mak imx8qx_dcd.cfg.tmp
+}
+
+do_install () {
+ cd ${S}
+ install -d ${D}${bindir}
+ install -m 0755 iMX8M/mkimage_imx8 ${D}${bindir}/mkimage_imx8m
+ install -m 0755 mkimage_imx8 ${D}${bindir}/mkimage_imx8
+}
+
+do_deploy () {
+ install -m 0644 ${S}/iMX8QM/imx8qm_dcd.cfg.tmp ${DEPLOYDIR}
+ install -m 0644 ${S}/iMX8QX/imx8qx_dcd.cfg.tmp ${DEPLOYDIR}
+}
+addtask deploy before do_build after do_install
diff --git a/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.inc b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.inc
new file mode 100644
index 00000000..a8cd930b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.inc
@@ -0,0 +1,11 @@
+# Copyright 2017-2018 NXP
+
+DEPENDS = "zlib-native openssl-native"
+
+SRCBRANCH = "imx_4.9.123_imx8mm_ga"
+SRC_URI = "git://source.codeaurora.org/external/imx/imx-mkimage.git;protocol=https;branch=${SRCBRANCH}"
+SRCREV = "9e289f314eddb9d38cab73780b936acb30bb88b4"
+S = "${WORKDIR}/git"
+
+BOOT_TOOLS = "imx-boot-tools"
+SYSROOT_DIRS += "/boot"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-sc-firmware/imx-sc-firmware_0.9.bb b/bsp/meta-freescale/recipes-bsp/imx-sc-firmware/imx-sc-firmware_0.9.bb
new file mode 100644
index 00000000..329d4dc1
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-sc-firmware/imx-sc-firmware_0.9.bb
@@ -0,0 +1,38 @@
+# Copyright (C) 2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+
+DESCRIPTION = "i.MX System Controller Firmware"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db"
+SECTION = "BSP"
+
+inherit fsl-eula-unpack deploy
+
+SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
+
+SRC_URI[md5sum] = "3246a44a242b68fae601561a80d5925c"
+SRC_URI[sha256sum] = "00024e0dd332b402df03b62eac9a515fabc903568d0ad7f30fabc7c98b494f15"
+
+BOARD_TYPE ?= "mek"
+SC_FIRMWARE_NAME ?= "mx8qm-mek-scfw-tcm.bin"
+SC_FIRMWARE_NAME_mx8qm = "mx8qm-${BOARD_TYPE}-scfw-tcm.bin"
+SC_FIRMWARE_NAME_mx8qxp = "mx8qx-${BOARD_TYPE}-scfw-tcm.bin"
+symlink_name = "scfw_tcm.bin"
+
+BOOT_TOOLS = "imx-boot-tools"
+
+do_compile[noexec] = "1"
+
+do_install[noexec] = "1"
+
+do_deploy() {
+ install -Dm 0644 ${S}/${SC_FIRMWARE_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME}
+ ln -sf ${SC_FIRMWARE_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}/${symlink_name}
+}
+addtask deploy after do_install
+
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+COMPATIBLE_MACHINE = "(mx8qm|mx8qxp)"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-test-Makefile-Add-include-path-to-CC-command.patch b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-test-Makefile-Add-include-path-to-CC-command.patch
new file mode 100644
index 00000000..8387a17c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-test-Makefile-Add-include-path-to-CC-command.patch
@@ -0,0 +1,27 @@
+From d289d905c64882c58e3b99f74f68e72f9100115e Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Tue, 12 Jun 2018 14:58:40 -0300
+Subject: [PATCH] test/Makefile: Add include path to CC command
+Organization: O.S. Systems Software LTDA.
+
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+---
+ test/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/Makefile b/test/Makefile
+index f1cfa2a..4f14d2c 100644
+--- a/test/Makefile
++++ b/test/Makefile
+@@ -12,7 +12,7 @@ ALL_OBJS :=
+
+ %.o: %.c
+ @echo " CC $@"
+- $(Q)$(CC) -c $(CFLAGS) $< -o $@
++ $(Q)$(CC) -c $(CFLAGS) $(INC) $< -o $@
+
+
+ # This creates the build and copy rules for one executable. Because we
+--
+2.17.1
+
diff --git a/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/memtool_profile b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/memtool_profile
new file mode 100644
index 00000000..97d6f614
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/memtool_profile
@@ -0,0 +1 @@
+complete -o nospace -C /unit_tests/memtool memtool
diff --git a/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_00.00.00.bb b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_00.00.00.bb
new file mode 100644
index 00000000..c29e6a62
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_00.00.00.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Dummy package for SoCs lacking imx-test package"
+DESCRIPTION = "Dummy package for SoCs lacking imx-test package"
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+ALLOW_EMPTY_${PN} = "1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE = "(mxs|mx5|mx6|vf50|vf60)"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_git.bb b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_git.bb
new file mode 100644
index 00000000..bf55f7df
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_git.bb
@@ -0,0 +1,86 @@
+# Copyright (C) 2012-2018 O.S. Systems Software LTDA.
+# Copyright (C) 2013-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+
+SUMMARY = "Test programs for i.MX BSP"
+DESCRIPTION = "Unit tests for the i.MX BSP"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+DEPENDS = "alsa-lib libdrm"
+DEPENDS_append_mx6 = " imx-lib"
+DEPENDS_append_mx7 = " imx-lib"
+DEPENDS_append_imxvpu = " virtual/imxvpu"
+
+PE = "1"
+PV = "7.0+${SRCPV}"
+
+SRCBRANCH = "imx_4.9.123_imx8mm_ga"
+SRC_URI = " \
+ git://source.codeaurora.org/external/imx/imx-test.git;protocol=https;branch=${SRCBRANCH} \
+ file://0001-test-Makefile-Add-include-path-to-CC-command.patch \
+ file://memtool_profile \
+"
+SRCREV = "2cc785f94e5ee8782083d941e6aef24952cc2a38"
+S = "${WORKDIR}/git"
+
+inherit module-base use-imx-headers
+
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+
+PLATFORM_mx6q = "IMX6Q"
+PLATFORM_mx6dl = "IMX6Q"
+PLATFORM_mx6sl = "IMX6SL"
+PLATFORM_mx6sll = "IMX6SL"
+PLATFORM_mx6sx = "IMX6SX"
+PLATFORM_mx6ul = "IMX6UL"
+PLATFORM_mx7d = "IMX7D"
+PLATFORM_mx7ulp = "IMX7D"
+PLATFORM_mx8 = "IMX8"
+
+PARALLEL_MAKE = "-j 1"
+EXTRA_OEMAKE += "${PACKAGECONFIG_CONFARGS}"
+
+PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG_append_imxvpu = " vpu"
+
+PACKAGECONFIG[x11] = ",,libx11 libxdamage libxrender libxrandr"
+PACKAGECONFIG[vpu] = "HAS_VPU=true,HAS_VPU=false,virtual/imxvpu"
+
+# FIXME: NXP should fix the possible string flaws from their code.
+SECURITY_STRINGFORMAT = ""
+
+do_compile() {
+ CFLAGS="${TOOLCHAIN_OPTIONS}"
+ oe_runmake V=1 VERBOSE='' \
+ CROSS_COMPILE=${TARGET_PREFIX} \
+ INC="-I${S}/include \
+ -I${STAGING_INCDIR} \
+ -I${STAGING_INCDIR_IMX}" \
+ CC="${CC} -L${STAGING_LIBDIR} ${LDFLAGS}" \
+ SDKTARGETSYSROOT=${STAGING_DIR_HOST} \
+ LINUXPATH=${STAGING_KERNEL_DIR} \
+ KBUILD_OUTPUT=${STAGING_KERNEL_BUILDDIR} \
+ PLATFORM=${PLATFORM}
+}
+
+do_install() {
+ oe_runmake DESTDIR=${D}/unit_tests \
+ PLATFORM=${PLATFORM} \
+ install
+
+ if [ -e ${WORKDIR}/clocks.sh ]; then
+ install -m 755 ${WORKDIR}/clocks.sh ${D}/unit_tests/clocks.sh
+ fi
+ install -d -m 0755 ${D}/home/root/
+ install -m 0644 ${WORKDIR}/memtool_profile ${D}/home/root/.profile
+}
+
+FILES_${PN} += "/unit_tests /home/root/.profile"
+RDEPENDS_${PN} = "bash"
+
+FILES_${PN}-dbg += "/unit_tests/.debug"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-uuc/imx-uuc_git.bb b/bsp/meta-freescale/recipes-bsp/imx-uuc/imx-uuc_git.bb
new file mode 100644
index 00000000..ddc55db3
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-uuc/imx-uuc_git.bb
@@ -0,0 +1,20 @@
+# Copyright (C) 2016 Freescale Semiconductor
+
+SUMMARY = "A Daemon wait for Freescale/NXP mfgtools host's command"
+SECTION = "base"
+DEPENDS = "dosfstools-native"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit autotools-brokensep
+
+PV = "0.5.1+git${SRCPV}"
+
+SRC_URI = "git://github.com/NXPmicro/imx-uuc.git;protocol=https"
+SRCREV = "e3fbdfef978abd150d9ea71c4d174daded9c8d33"
+
+S = "${WORKDIR}/git"
+
+FILES_${PN} += "/linuxrc /fat"
+
+COMPATIBLE_MACHINE = "(imx)"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0001-Get-i.MX-custom-headers-from-usr-include-imx.patch b/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0001-Get-i.MX-custom-headers-from-usr-include-imx.patch
new file mode 100644
index 00000000..a41641df
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0001-Get-i.MX-custom-headers-from-usr-include-imx.patch
@@ -0,0 +1,49 @@
+From a277191d6e7d775b1c081f8b25734f6f962ade14 Mon Sep 17 00:00:00 2001
+From: Tom Hochstein <tom.hochstein@nxp.com>
+Date: Thu, 4 Oct 2018 10:34:00 -0500
+Subject: [PATCH] Get i.MX custom headers from /usr/include/imx
+
+Upstream-Status: Pending
+
+Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
+---
+ Makefile_G1G2 | 5 ++---
+ Makefile_H1 | 3 +--
+ 2 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile_G1G2 b/Makefile_G1G2
+index caab40f..5b55a8b 100755
+--- a/Makefile_G1G2
++++ b/Makefile_G1G2
+@@ -6,12 +6,11 @@ SOURCE_ROOT = decoder_sw/software
+ OMX_ROOT = openmax_il
+
+ INCLUDE_HEADERS = -I./decoder_sw -I$(SOURCE_ROOT)/source/inc -I$(SOURCE_ROOT)/source/hevc \
+- -I$(SOURCE_ROOT)/source/config -I$(SOURCE_ROOT)/source/dwl -I$(SOURCE_ROOT)/source/common -I$(SOURCE_ROOT)/source/vp9 \
+- -I$(SDKTARGETSYSROOT)/usr/imx/include
++ -I$(SOURCE_ROOT)/source/config -I$(SOURCE_ROOT)/source/dwl -I$(SOURCE_ROOT)/source/common -I$(SOURCE_ROOT)/source/vp9
+
+ INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/memalloc
+ #INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/ldriver
+-INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include
++INCLUDE_HEADERS += -I$(SDKTARGETSYSROOT)/usr/include/imx
+
+ CFLAGS += -DDEC_MODULE_PATH=\"/dev/mxc_hantro\" -DUSE_FAKE_RFC_TABLE -DFIFO_DATATYPE=void* -DNDEBUG -DDOWN_SCALER \
+ -DUSE_EXTERNAL_BUFFER -DUSE_FAST_EC -DUSE_VP9_EC -DGET_FREE_BUFFER_NON_BLOCK \
+diff --git a/Makefile_H1 b/Makefile_H1
+index 9ca1aa9..237f53a 100755
+--- a/Makefile_H1
++++ b/Makefile_H1
+@@ -17,8 +17,7 @@ ENV += -DMEMALLOC_MODULE_PATH=\\\"/dev/ion\\\"
+ #ENV += -DSDRAM_LM_BASE=0x00000000
+ ENV += -DEWL_NO_HW_TIMEOUT
+ ENV += -DUSE_ION
+-ENV += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include
+-ENV += -I$(SDKTARGETSYSROOT)/usr/imx/include
++ENV += -I$(SDKTARGETSYSROOT)/usr/include/imx
+
+ LIBENCNAME = libcodec_enc
+ LIBSENC = -L./ -lhantro_h1 -lpthread
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb b/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb
new file mode 100644
index 00000000..a330c7b0
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb
@@ -0,0 +1,35 @@
+# Copyright 2017-2018 NXP
+
+DESCRIPTION = "i.MX Hantro VPU library"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db"
+
+PROVIDES = "virtual/imxvpu"
+
+SRC_URI = " \
+ ${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true \
+ file://0001-Get-i.MX-custom-headers-from-usr-include-imx.patch \
+"
+SRC_URI[md5sum] = "140796ddd6f1be47cffb7e5e2bfe0fb6"
+SRC_URI[sha256sum] = "c092a5b0f8897bae54154f58e47b6d2de033da01ee231a8cd779a51bbe962606"
+
+inherit fsl-eula-unpack use-imx-headers
+
+PARALLEL_MAKE="-j 1"
+
+PLATFORM_mx8mm = "IMX8MM"
+PLATFORM_mx8mq = "IMX8MQ"
+
+do_compile () {
+ oe_runmake CROSS_COMPILE="${HOST_PREFIX}" \
+ SDKTARGETSYSROOT="${STAGING_DIR_TARGET}" \
+ PLATFORM="${PLATFORM}" all
+}
+
+do_install () {
+ oe_runmake DEST_DIR="${D}" PLATFORM="${PLATFORM}" install
+}
+
+FILES_${PN} += "/unit_tests"
+
+COMPATIBLE_MACHINE = "(mx8m)"
diff --git a/bsp/meta-freescale/recipes-bsp/imx-vpu/imx-vpu_5.4.38.bb b/bsp/meta-freescale/recipes-bsp/imx-vpu/imx-vpu_5.4.38.bb
new file mode 100644
index 00000000..185bb3d1
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/imx-vpu/imx-vpu_5.4.38.bb
@@ -0,0 +1,31 @@
+# Copyright (C) 2013-2018 O.S. Systems Software LTDA.
+# Copyright (C) 2013-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+
+DESCRIPTION = "Freescale Chips&Media VPU library"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=75abe2fa1d16ca79f87cde926f05f72d"
+
+PROVIDES = "virtual/imxvpu"
+
+PE = "1"
+
+SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
+
+SRC_URI[md5sum] = "521d5f839829f8d1f2a6a0e60270243e"
+SRC_URI[sha256sum] = "34bed0ddf6c797f444bddfa5d5495adc751ff268b6431d8beb48129c89c9e47f"
+
+inherit fsl-eula-unpack use-imx-headers
+
+PLATFORM_mx6 = "IMX6Q"
+
+do_compile () {
+ INCLUDE_DIR="-I${STAGING_INCDIR_IMX}"
+ oe_runmake CROSS_COMPILE="${HOST_PREFIX}" PLATFORM="${PLATFORM}" INCLUDE="${INCLUDE_DIR}" all
+}
+
+do_install () {
+ oe_runmake PLATFORM="${PLATFORM}" DEST_DIR="${D}" install
+}
+
+COMPATIBLE_MACHINE = "(mx6q|mx6dl)"
diff --git a/bsp/meta-freescale/recipes-bsp/inphi/inphi_git.bb b/bsp/meta-freescale/recipes-bsp/inphi/inphi_git.bb
new file mode 100644
index 00000000..c0c8a776
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/inphi/inphi_git.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Firmwares and Standalone Applications"
+LICENSE = "NXP-Binary-EULA"
+LIC_FILES_CHKSUM = "file://EULA.txt;md5=86d76166990962fa552f840ff08e5798"
+
+inherit deploy fsl-eula-unpack
+
+SRC_URI = "git://github.com/nxp/qoriq-firmware-inphi.git;fsl-eula=true;nobranch=1"
+SRCREV = "f22e9ff3bfed8342da6efb699e473b11fbad5695"
+
+S = "${WORKDIR}/git"
+
+do_install () {
+ install -d ${D}/boot
+ cp -fr ${S}/in112525-phy-ucode.txt ${D}/boot
+}
+
+do_deploy () {
+ install -d ${DEPLOYDIR}/inphi
+ cp -fr ${S}/in112525-phy-ucode.txt ${DEPLOYDIR}/inphi
+}
+addtask deploy before do_build after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/boot"
+
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/bsp/meta-freescale/recipes-bsp/ls2-phy/ls2-phy_git.bb b/bsp/meta-freescale/recipes-bsp/ls2-phy/ls2-phy_git.bb
new file mode 100644
index 00000000..18a63b13
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/ls2-phy/ls2-phy_git.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Firmwares and Standalone Applications"
+LICENSE = "NXP-Binary-EULA"
+LIC_FILES_CHKSUM = "file://EULA.txt;md5=86d76166990962fa552f840ff08e5798"
+
+inherit deploy fsl-eula-unpack
+
+SRC_URI = "git://github.com/nxp/qoriq-firmware-cortina.git;fsl-eula=true;nobranch=1"
+SRCREV = "9143c2a3adede595966583c00ca4edc99ec698cf"
+
+S = "${WORKDIR}/git"
+
+do_install () {
+ install -d ${D}/boot
+ cp -fr ${S}/* ${D}/boot
+}
+
+do_deploy () {
+ install -d ${DEPLOYDIR}/ls2-phy
+ cp -fr ${S}/* ${DEPLOYDIR}/ls2-phy
+}
+addtask deploy before do_build after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/boot"
+
+COMPATIBLE_MACHINE = "(ls2080ardb|ls2088ardb|t2080|t4240|lx2160a)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/bsp/meta-freescale/recipes-bsp/mc-utils/mc-utils_git.bb b/bsp/meta-freescale/recipes-bsp/mc-utils/mc-utils_git.bb
new file mode 100644
index 00000000..430d6cd8
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/mc-utils/mc-utils_git.bb
@@ -0,0 +1,45 @@
+DESCRIPTION = "The Management Complex (MC) is a key component of DPAA"
+SECTION = "mc-utils"
+LICENSE = "BSD"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=386a6287daa6504b7e7e5014ddfb3987 \
+"
+
+DEPENDS += "dtc-native"
+
+inherit deploy
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/mc-utils;nobranch=1"
+SRCREV = "6aca560c630dc54afdef382c506f214b28f4985e"
+
+S = "${WORKDIR}/git"
+
+MC_CFG ?= ""
+MC_CFG_ls1088a = "ls1088a"
+MC_CFG_ls2088a = "ls2088a"
+MC_CFG_lx2160a = "lx2160a"
+
+do_install () {
+ oe_runmake -C config
+
+ install -d ${D}/boot/mc-utils
+ cp -r ${S}/config/${MC_CFG}/RDB/*.dtb ${D}/boot/mc-utils
+ if [ -d ${S}/config/${MC_CFG}/RDB/custom/ ]; then
+ install -d ${D}/boot/mc-utils/custom
+ cp -r ${S}/config/${MC_CFG}/RDB/custom/*.dtb ${D}/boot/mc-utils/custom
+ fi
+}
+
+do_deploy () {
+ install -d ${DEPLOYDIR}/mc-utils
+ cp -r ${S}/config/${MC_CFG}/RDB/*.dtb ${DEPLOYDIR}/mc-utils
+ if [ -d ${S}/config/${MC_CFG}/RDB/custom/ ]; then
+ install -d ${DEPLOYDIR}/mc-utils/custom
+ cp -r ${S}/config/${MC_CFG}/RDB/custom/*.dtb ${DEPLOYDIR}/mc-utils/custom
+ fi
+}
+addtask deploy after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/boot"
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
diff --git a/bsp/meta-freescale/recipes-bsp/mxsldr/mxsldr/0001-Do-not-ignore-OE-cflags-and-ldflags.patch b/bsp/meta-freescale/recipes-bsp/mxsldr/mxsldr/0001-Do-not-ignore-OE-cflags-and-ldflags.patch
new file mode 100644
index 00000000..c8c8413a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/mxsldr/mxsldr/0001-Do-not-ignore-OE-cflags-and-ldflags.patch
@@ -0,0 +1,28 @@
+From 2f2e1ca77b4459475e5d649bd22e6bc8c3873695 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 25 Sep 2018 01:23:02 -0700
+Subject: [PATCH] Do not ignore OE cflags and ldflags
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index afb4e32..d2763ed 100644
+--- a/Makefile
++++ b/Makefile
+@@ -3,8 +3,8 @@ prefix ?= "/usr/local"
+
+ all: mxsldr
+
+-CFLAGS = `pkg-config --cflags libusb-1.0`
+-LDFLAGS = `pkg-config --libs libusb-1.0`
++CFLAGS += `pkg-config --cflags libusb-1.0`
++LDFLAGS += `pkg-config --libs libusb-1.0`
+
+ mxsldr: mxsldr.c
+ $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ -lusb-1.0
+--
+2.19.0
+
diff --git a/bsp/meta-freescale/recipes-bsp/mxsldr/mxsldr_git.bb b/bsp/meta-freescale/recipes-bsp/mxsldr/mxsldr_git.bb
new file mode 100644
index 00000000..01e24993
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/mxsldr/mxsldr_git.bb
@@ -0,0 +1,26 @@
+# Copyright (C) 2012 O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "Freescale i.MX233/i.MX28 USB loader"
+DEPENDS = "libusb1"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRCREV = "c40d80472525e1d57dae5317c028b745968c0399"
+SRC_URI = "git://git.denx.de/mxsldr.git \
+ file://0001-Do-not-ignore-OE-cflags-and-ldflags.patch \
+ "
+
+PV = "0.0.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig
+
+do_compile() {
+ oe_runmake
+}
+do_install() {
+ oe_runmake install DESTDIR="${D}"
+}
+BBCLASSEXTEND = "native nativesdk"
diff --git a/bsp/meta-freescale/recipes-bsp/ppfe-firmware/ppfe-firmware_git.bb b/bsp/meta-freescale/recipes-bsp/ppfe-firmware/ppfe-firmware_git.bb
new file mode 100644
index 00000000..b94d88c4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/ppfe-firmware/ppfe-firmware_git.bb
@@ -0,0 +1,35 @@
+SUMMARY = "PPFE Linux firmware"
+LICENSE = "NXP-Binary-EULA"
+LIC_FILES_CHKSUM = "file://NXP-Binary-EULA.txt;md5=92723670f432558b9e2494ed177d2a85"
+
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+inherit deploy fsl-eula-unpack
+
+SRC_URI = "git://github.com/NXP/qoriq-engine-pfe-bin.git;fsl-eula=true;nobranch=1"
+SRCREV = "58aa0cac630528ed91fe5639700d6b571c0c07b5"
+
+S = "${WORKDIR}/git"
+
+do_install () {
+ install -d ${D}/lib/firmware
+ install -d ${D}/boot/engine-pfe-bin
+ install -m 644 ${S}/NXP-Binary-EULA.txt ${D}/lib/firmware
+ install -m 755 ${S}/ls1012a/slow_path/*.elf ${D}/lib/firmware
+ install -m 755 ${S}/ls1012a/u-boot/* ${D}/boot/engine-pfe-bin
+}
+
+do_deploy () {
+ install -d ${DEPLOYDIR}/engine-pfe-bin
+ cp -r ${D}/boot/engine-pfe-bin/* ${DEPLOYDIR}/engine-pfe-bin
+}
+
+addtask deploy after do_install
+
+FILES_${PN} += "/lib/firmware /boot/"
+INSANE_SKIP_${PN} += "arch already-stripped"
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_SYSROOT_STRIP = "1"
+
+COMPATIBLE_MACHINE = "(ls1012a)"
diff --git a/bsp/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb b/bsp/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb
new file mode 100644
index 00000000..1af630a6
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb
@@ -0,0 +1,38 @@
+DESCRIPTION = "qe microcode binary"
+SECTION = "qe-ucode"
+LICENSE = "NXP-Binary-EULA"
+LIC_FILES_CHKSUM = "file://NXP-Binary-EULA;md5=c62f8109b4df15ca37ceeb5e4943626c"
+
+inherit deploy fsl-eula-unpack
+
+SRC_URI = "git://github.com/NXP/qoriq-qe-ucode.git;fsl-eula=true;nobranch=1"
+SRCREV= "57401f6dff6507055558eaa6838116baa8a2fd46"
+
+S = "${WORKDIR}/git"
+
+python () {
+ if not d.getVar("QE_UCODE", True):
+ PN = d.getVar("PN", True)
+ FILE = os.path.basename(d.getVar("FILE", True))
+ bb.debug(1, "To build %s, see %s for instructions on \
+ setting up your qe-ucode" % (PN, FILE))
+ raise bb.parse.SkipRecipe("because QE_UCODE is not set")
+}
+
+do_install () {
+ install -d ${D}/boot
+ install -m 644 ${B}/${QE_UCODE} ${D}/boot
+}
+
+do_deploy () {
+ install -d ${DEPLOYDIR}/boot
+ install -m 644 ${B}/${QE_UCODE} ${DEPLOYDIR}/boot
+}
+addtask deploy before do_build after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/boot/*"
+
+COMPATIBLE_MACHINE = "(ls1021a|ls1043a|t1042|t1024)"
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
diff --git a/bsp/meta-freescale/recipes-bsp/rcw/rcw_git.bb b/bsp/meta-freescale/recipes-bsp/rcw/rcw_git.bb
new file mode 100644
index 00000000..c6bdad23
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/rcw/rcw_git.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Reset Configuration Word"
+DESCRIPTION = "Reset Configuration Word - hardware boot-time parameters for the QorIQ targets"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=45a017ee5f4cfe64b1cddf2eb06cffc7"
+
+DEPENDS += "change-file-endianess-native tcl-native"
+
+inherit deploy siteinfo
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/rcw;nobranch=1"
+SRCREV = "17254ac35250197877c6321f9d13e33b1f85388a"
+
+S = "${WORKDIR}/git"
+
+export PYTHON = "${USRBINPATH}/python2"
+
+M="${@d.getVar('MACHINE', True).replace('-64b','').replace('-32b','').replace('-${SITEINFO_ENDIANNESS}','')}"
+
+do_install () {
+ if [ ${M} = ls2088ardb ]; then
+ oe_runmake BOARDS=${M} DESTDIR=${D}/boot/rcw/ install
+ oe_runmake BOARDS=${M}_rev1.1 DESTDIR=${D}/boot/rcw/ install
+ elif [ ${M} = ls1088ardb-pb ]; then
+ oe_runmake BOARDS=ls1088ardb DESTDIR=${D}/boot/rcw/ install
+ else
+ oe_runmake BOARDS=${M} DESTDIR=${D}/boot/rcw/ install
+ fi
+}
+
+do_deploy () {
+ install -d ${DEPLOYDIR}/rcw
+ cp -r ${D}/boot/rcw/* ${DEPLOYDIR}/rcw/
+}
+addtask deploy after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/boot"
+
+COMPATIBLE_MACHINE = "(qoriq)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-common_2018.11.inc b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-common_2018.11.inc
new file mode 100644
index 00000000..53496b7b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-common_2018.11.inc
@@ -0,0 +1,18 @@
+# Copyright (C) 2012-2019 O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+inherit fsl-u-boot-localversion
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://Licenses/README;md5=30503fd321432fc713238f582193b78e"
+
+DEPENDS += "bison-native"
+
+SRC_URI = "git://github.com/Freescale/u-boot-fslc.git;branch=${SRCBRANCH}"
+
+SRCREV = "6e25ce6f3c8568b9618de6569794a29a05e1b7a4"
+SRCBRANCH = "2018.11+fslc"
+
+PV = "v2018.11+git${SRCPV}"
+
+S = "${WORKDIR}/git"
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-fw-utils_2018.11.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-fw-utils_2018.11.bb
new file mode 100644
index 00000000..a809a3f6
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-fw-utils_2018.11.bb
@@ -0,0 +1,45 @@
+require u-boot-fslc-common_${PV}.inc
+
+SUMMARY = "U-Boot bootloader fw_printenv/setenv utilities"
+DEPENDS += "mtd-utils"
+
+INSANE_SKIP_${PN} = "already-stripped"
+EXTRA_OEMAKE_class-target = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" V=1'
+EXTRA_OEMAKE_class-cross = 'ARCH=${TARGET_ARCH} CC="${CC} ${CFLAGS} ${LDFLAGS}" V=1'
+
+inherit uboot-config
+
+do_compile () {
+ oe_runmake ${UBOOT_MACHINE}
+ oe_runmake envtools
+}
+
+do_install () {
+ install -d ${D}${base_sbindir}
+ install -d ${D}${sysconfdir}
+ install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv
+ install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_setenv
+
+ if [ -e ${WORKDIR}/fw_env.config ]; then
+ install -m 0644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
+ else
+ install -m 0644 ${S}/tools/env/fw_env.config ${D}${sysconfdir}/fw_env.config
+ fi
+}
+
+do_install_class-cross () {
+ install -d ${D}${bindir_cross}
+ install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_printenv
+ install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_setenv
+}
+
+SYSROOT_PREPROCESS_FUNCS_class-cross = "uboot_fw_utils_cross"
+uboot_fw_utils_cross() {
+ sysroot_stage_dir ${D}${bindir_cross} ${SYSROOT_DESTDIR}${bindir_cross}
+}
+
+PROVIDES += "u-boot-fw-utils"
+RPROVIDES_${PN} += "u-boot-fw-utils"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+BBCLASSEXTEND = "cross"
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-mxsboot_2018.11.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-mxsboot_2018.11.bb
new file mode 100644
index 00000000..9123b331
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-mxsboot_2018.11.bb
@@ -0,0 +1,32 @@
+require u-boot-fslc-common_${PV}.inc
+
+DESCRIPTION = "U-boot bootloader mxsboot tool"
+SECTION = "bootloader"
+
+DEPENDS = "bison-native dtc openssl"
+
+PROVIDES = "u-boot-mxsboot"
+
+EXTRA_OEMAKE_class-target = 'CROSS_COMPILE="${TARGET_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1 CONFIG_MX28=y'
+EXTRA_OEMAKE_class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1 CONFIG_MX28=y'
+EXTRA_OEMAKE_class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1 CONFIG_MX28=y'
+
+do_compile () {
+ oe_runmake sandbox_defconfig
+
+ # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and
+ # generating it requires bin2header tool, which for target build
+ # is built with target tools and thus cannot be executed on host.
+ sed -i "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" .config
+
+ oe_runmake cross_tools NO_SDL=1
+}
+
+do_install () {
+ install -Dm 0755 tools/mxsboot ${D}${bindir}/uboot-mxsboot
+ ln -sf uboot-mxsboot ${D}${bindir}/mxsboot
+}
+
+COMPATIBLE_MACHINE_class-target = "(mxs|mx5|mx6|mx7|vf|use-mainline-bsp)"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc_2018.11.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc_2018.11.bb
new file mode 100644
index 00000000..5659e16c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc_2018.11.bb
@@ -0,0 +1,21 @@
+require recipes-bsp/u-boot/u-boot.inc
+require u-boot-fslc-common_${PV}.inc
+
+DESCRIPTION = "U-Boot based on mainline U-Boot used by FSL Community BSP in \
+order to provide support for some backported features and fixes, or because it \
+was submitted for revision and it takes some time to become part of a stable \
+version, or because it is not applicable for upstreaming."
+
+DEPENDS_append = " dtc-native"
+
+PROVIDES += "u-boot"
+
+# FIXME: Allow linking of 'tools' binaries with native libraries
+# used for generating the boot logo and other tools used
+# during the build process.
+EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CPPFLAGS}" \
+ HOSTLDFLAGS="${BUILD_LDFLAGS}" \
+ HOSTSTRIP=true'
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE = "(mxs|mx5|mx6|mx7|vf|use-mainline-bsp)"
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-mfgtool_2017.03.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-mfgtool_2017.03.bb
new file mode 100644
index 00000000..81799add
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-mfgtool_2017.03.bb
@@ -0,0 +1,6 @@
+# Copyright (C) 2014 O.S. Systems Software LTDA.
+# Copyright (C) 2014-2016 Freescale Semiconductor
+# Copyright 2017 NXP
+
+require u-boot-imx_${PV}.bb
+require u-boot-mfgtool.inc
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx_2017.03.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx_2017.03.bb
new file mode 100644
index 00000000..705ff164
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx_2017.03.bb
@@ -0,0 +1,48 @@
+# Copyright (C) 2013-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Copyright 2018 (C) O.S. Systems Software LTDA.
+
+DESCRIPTION = "i.MX U-Boot suppporting i.MX reference boards."
+require recipes-bsp/u-boot/u-boot.inc
+
+PROVIDES += "u-boot"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRCBRANCH = "imx_v2017.03_4.9.123_imx8mm_ga"
+SRC_URI = "git://source.codeaurora.org/external/imx/uboot-imx.git;protocol=https;branch=${SRCBRANCH}"
+SRCREV = "8be98e9322040c655b9e5c9fb2c494e002e3fad9"
+
+S = "${WORKDIR}/git"
+
+inherit dtc-145 fsl-u-boot-localversion
+
+LOCALVERSION ?= "-${SRCBRANCH}"
+
+BOOT_TOOLS = "imx-boot-tools"
+
+do_deploy_append_mx8m() {
+ # Deploy the mkimage, u-boot-nodtb.bin and fsl-imx8m*-XX.dtb for mkimage to generate boot binary
+ if [ -n "${UBOOT_CONFIG}" ]
+ then
+ for config in ${UBOOT_MACHINE}; do
+ i=$(expr $i + 1);
+ for type in ${UBOOT_CONFIG}; do
+ j=$(expr $j + 1);
+ if [ $j -eq $i ]
+ then
+ install -d ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0777 ${B}/${config}/arch/arm/dts/${UBOOT_DTB_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0777 ${B}/${config}/tools/mkimage ${DEPLOYDIR}/${BOOT_TOOLS}/mkimage_uboot
+ install -m 0777 ${B}/${config}/u-boot-nodtb.bin ${DEPLOYDIR}/${BOOT_TOOLS}/u-boot-nodtb.bin-${MACHINE}-${UBOOT_CONFIG}
+ fi
+ done
+ unset j
+ done
+ unset i
+ fi
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-mfgtool.inc b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-mfgtool.inc
new file mode 100644
index 00000000..91526ad7
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-mfgtool.inc
@@ -0,0 +1,21 @@
+# Produces a Manufacturing Tool compatible U-Boot
+#
+# This makes a separated binary set for Manufacturing Tool use
+# without clobbering the U-Boot used for normal use.
+#
+# This file must to be included after the original u-boot.inc file,
+# as it overrides the need values.
+#
+# Copyright (C) 2014 O.S. Systems Software LTDA.
+
+# Adjust provides
+PROVIDES = "u-boot-mfgtool"
+
+# Use 'mfgtool' config
+UBOOT_CONFIG = "mfgtool"
+
+# Add 'mfgtool' suffix
+UBOOT_IMAGE = "u-boot-${MACHINE}-mfgtool-${PV}-${PR}.${UBOOT_SUFFIX}"
+UBOOT_SYMLINK = "u-boot-${MACHINE}-mfgtool.${UBOOT_SUFFIX}"
+SPL_IMAGE = "${SPL_BINARY}-${MACHINE}-mfgtool-${PV}-${PR}"
+SPL_SYMLINK = "${SPL_BINARY}-mfgtool-${MACHINE}"
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.03.inc b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.03.inc
new file mode 100644
index 00000000..5be64e49
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.03.inc
@@ -0,0 +1,19 @@
+
+inherit fsl-u-boot-localversion
+
+LICENSE = "GPLv2 & BSD-3-Clause & BSD-2-Clause & LGPL-2.0 & LGPL-2.1"
+LIC_FILES_CHKSUM = " \
+ file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://Licenses/bsd-2-clause.txt;md5=6a31f076f5773aabd8ff86191ad6fdd5 \
+ file://Licenses/bsd-3-clause.txt;md5=4a1190eac56a9db675d58ebe86eaf50c \
+ file://Licenses/lgpl-2.0.txt;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+ file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b364516c \
+"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/u-boot;nobranch=1 \
+"
+SRCREV = "1e96fd8f464dfe23eb692a11018c20d70546783b"
+
+S = "${WORKDIR}/git"
+PV_append = "+fslgit"
+LOCALVERSION = "+fsl" \ No newline at end of file
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.09.inc b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.09.inc
new file mode 100644
index 00000000..a3a554cc
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.09.inc
@@ -0,0 +1,19 @@
+
+inherit fsl-u-boot-localversion
+
+LICENSE = "GPLv2 & BSD-3-Clause & BSD-2-Clause & LGPL-2.0 & LGPL-2.1"
+LIC_FILES_CHKSUM = " \
+ file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://Licenses/bsd-2-clause.txt;md5=6a31f076f5773aabd8ff86191ad6fdd5 \
+ file://Licenses/bsd-3-clause.txt;md5=4a1190eac56a9db675d58ebe86eaf50c \
+ file://Licenses/lgpl-2.0.txt;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+ file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b364516c \
+"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/u-boot;nobranch=1 \
+"
+SRCREV= "c08de7c3c92d45a824500ad936f4d72465c181ec"
+
+S = "${WORKDIR}/git"
+PV_append = "+fslgit"
+LOCALVERSION = "+fsl"
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-fw-utils_2018.03.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-fw-utils_2018.03.bb
new file mode 100644
index 00000000..ae47cb0d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-fw-utils_2018.03.bb
@@ -0,0 +1,45 @@
+require u-boot-qoriq-common_${PV}.inc
+
+SUMMARY = "U-Boot bootloader fw_printenv/setenv utilities"
+DEPENDS = "mtd-utils"
+
+INSANE_SKIP_${PN} = "already-stripped"
+EXTRA_OEMAKE_class-target = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" V=1'
+EXTRA_OEMAKE_class-cross = 'ARCH=${TARGET_ARCH} CC="${CC} ${CFLAGS} ${LDFLAGS}" V=1'
+
+inherit uboot-config
+
+do_compile () {
+ oe_runmake ${UBOOT_MACHINE}
+ oe_runmake envtools
+}
+
+do_install () {
+ install -d ${D}${base_sbindir}
+ install -d ${D}${sysconfdir}
+ install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv
+ install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_setenv
+
+ if [ -e ${WORKDIR}/fw_env.config ]; then
+ install -m 0644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
+ else
+ install -m 0644 ${S}/tools/env/fw_env.config ${D}${sysconfdir}/fw_env.config
+ fi
+}
+
+do_install_class-cross () {
+ install -d ${D}${bindir_cross}
+ install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_printenv
+ install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_setenv
+}
+
+SYSROOT_PREPROCESS_FUNCS_class-cross = "uboot_fw_utils_cross"
+uboot_fw_utils_cross() {
+ sysroot_stage_dir ${D}${bindir_cross} ${SYSROOT_DESTDIR}${bindir_cross}
+}
+
+PROVIDES += "u-boot-fw-utils"
+RPROVIDES_${PN} += "u-boot-fw-utils"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+BBCLASSEXTEND = "cross"
diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2018.09.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2018.09.bb
new file mode 100644
index 00000000..8438134d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2018.09.bb
@@ -0,0 +1,79 @@
+require recipes-bsp/u-boot/u-boot.inc
+require u-boot-qoriq-common_${PV}.inc
+
+DESCRIPTION = "U-Boot provided by Freescale with focus on QorIQ boards"
+PROVIDES += "u-boot"
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "libgcc virtual/${TARGET_PREFIX}gcc bison-native bc-native swig-native python-native"
+DEPENDS_append_qoriq-arm64 = " change-file-endianess-native dtc-native tcl-native"
+DEPENDS_append_qoriq-arm = " change-file-endianess-native dtc-native tcl-native"
+DEPENDS_append_qoriq-ppc = " boot-format-native"
+
+python () {
+ if d.getVar("TCMODE", True) == "external-fsl":
+ return
+
+ ml = d.getVar("MULTILIB_VARIANTS", True)
+ arch = d.getVar("OVERRIDES", True)
+
+ if "e5500-64b:" in arch or "e6500-64b:" in arch:
+ if not "lib32" in ml:
+ raise bb.parse.SkipPackage("Building the u-boot for this arch requires multilib to be enabled")
+ sys_multilib = d.getVar('TARGET_VENDOR') + 'mllib32-linux'
+ sys_original = d.getVar('TARGET_VENDOR') + '-' + d.getVar('TARGET_OS')
+ workdir = d.getVar('WORKDIR')
+ d.setVar('DEPENDS_append', ' lib32-gcc-cross-powerpc lib32-libgcc')
+ d.setVar('PATH_append', ':' + d.getVar('STAGING_BINDIR_NATIVE') + '/powerpc' + sys_multilib)
+ d.setVar('TOOLCHAIN_OPTIONS', '--sysroot=' + workdir + '/lib32-recipe-sysroot')
+ d.setVar("WRAP_TARGET_PREFIX", 'powerpc' + sys_multilib + '-')
+ elif "fsl-lsch2-32b:" in arch:
+ if not "lib64" in ml:
+ raise bb.parse.SkipRecipe("Building the u-boot for this arch requires multilib to be enabled")
+ sys_multilib = d.getVar('TARGET_VENDOR') + 'mllib64-linux'
+ sys_original = d.getVar('TARGET_VENDOR') + '-' + d.getVar('TARGET_OS')
+ workdir = d.getVar('WORKDIR')
+ d.setVar('DEPENDS_append', ' lib64-gcc-cross-aarch64 lib64-libgcc')
+ d.setVar('PATH_append', ':' + d.getVar('STAGING_BINDIR_NATIVE') + '/aarch64' + sys_multilib)
+ d.setVar('TOOLCHAIN_OPTIONS', '--sysroot=' + workdir + '/lib64-recipe-sysroot')
+ d.setVar("WRAP_TARGET_PREFIX", 'aarch64' + sys_multilib + '-')
+}
+
+LE_UBOOT_FOR_ARMBE_TARGET ?= "0"
+ENDIANNESS_GCC = "${@bb.utils.contains("LE_UBOOT_FOR_ARMBE_TARGET", "1", "-mlittle-endian", "", d)}"
+ENDIANNESS_LD = "${@bb.utils.contains("LE_UBOOT_FOR_ARMBE_TARGET", "1", "-EL", "", d)}"
+
+WRAP_TARGET_PREFIX ?= "${TARGET_PREFIX}"
+EXTRA_OEMAKE = 'CROSS_COMPILE=${WRAP_TARGET_PREFIX} CC="${WRAP_TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${ENDIANNESS_GCC}" LD="${WRAP_TARGET_PREFIX}ld ${ENDIANNESS_LD}" V=1'
+EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"'
+
+do_compile_append_qoriq() {
+ unset i j k
+ for config in ${UBOOT_MACHINE}; do
+ i=`expr $i + 1`;
+ for type in ${UBOOT_CONFIG}; do
+ j=`expr $j + 1`;
+ for binary in ${UBOOT_BINARIES}; do
+ k=`expr $k + 1`
+ if [ $j -eq $i ] && [ $k -eq $i ]; then
+ if [ -n "${BOOTFORMAT_CONFIG}" ] && echo "${type}" |grep -q spi;then
+ # regenerate spi binary if BOOTFORMAT_CONFIG is set
+ boot_format ${STAGING_DATADIR_NATIVE}/boot_format/${BOOTFORMAT_CONFIG} \
+ ${config}/u-boot-${type}.${UBOOT_SUFFIX} -spi ${config}/u-boot.format.bin
+ cp ${config}/u-boot.format.bin ${config}/u-boot-${type}.${UBOOT_SUFFIX}
+ elif [ "qspi" = "${type}" ];then
+ cp ${config}/${binary} ${config}/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
+ fi
+ fi
+ done
+ unset k
+ done
+ unset j
+ done
+ unset i
+}
+
+
+PACKAGES += "${PN}-images"
+FILES_${PN}-images += "/boot"
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-bsp/uefi/uefi_git.bb b/bsp/meta-freescale/recipes-bsp/uefi/uefi_git.bb
new file mode 100644
index 00000000..8b63f501
--- /dev/null
+++ b/bsp/meta-freescale/recipes-bsp/uefi/uefi_git.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Unified Extensible Firmware Interface"
+SECTION = "bootloaders"
+LICENSE = "NXP-Binary-EULA"
+LIC_FILES_CHKSUM = "file://NXP-Binary-EULA;md5=343ec8f06efc37467a6de53686fa6315"
+
+inherit deploy fsl-eula-unpack
+
+SRC_URI = "git://github.com/NXP/qoriq-uefi-binary.git;fsl-eula=true;nobranch=1"
+SRCREV= "5b259f75decbc478bcab0612d79a58562bef1838"
+
+S = "${WORKDIR}/git"
+
+do_install () {
+ if [ -d ${B}/${MACHINE} ]; then
+ install -d ${D}/uefi
+ cp -r ${B}/grub ${D}/uefi
+ cp -r ${B}/${MACHINE} ${D}/uefi
+ fi
+}
+
+do_deploy () {
+ if [ -d ${B}/${MACHINE} ]; then
+ install -d ${DEPLOYDIR}/uefi
+ cp -r ${B}/grub ${DEPLOYDIR}/uefi
+ cp -r ${B}/${MACHINE} ${DEPLOYDIR}/uefi
+ fi
+}
+addtask deploy before do_build after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/uefi/*"
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-connectivity/iproute2/iproute2_%.bbappend b/bsp/meta-freescale/recipes-connectivity/iproute2/iproute2_%.bbappend
new file mode 100644
index 00000000..4426eca5
--- /dev/null
+++ b/bsp/meta-freescale/recipes-connectivity/iproute2/iproute2_%.bbappend
@@ -0,0 +1,5 @@
+do_install_append () {
+ install -d ${D}/usr/include/tc
+ cp -a ${B}/include ${D}/usr/include
+ cp -a ${B}/tc/*.h ${D}/usr/include/tc
+}
diff --git a/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-Remove-test-that-requires-running-as-non-root.patch b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-Remove-test-that-requires-running-as-non-root.patch
new file mode 100644
index 00000000..736bb39a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-Remove-test-that-requires-running-as-non-root.patch
@@ -0,0 +1,49 @@
+From 3fdb1e2a16ea405c6731447a8994f222808ef7e6 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 7 Apr 2017 18:01:52 +0300
+Subject: [PATCH] Remove test that requires running as non-root
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ test/recipes/40-test_rehash.t | 17 +----------------
+ 1 file changed, 1 insertion(+), 16 deletions(-)
+
+diff --git a/test/recipes/40-test_rehash.t b/test/recipes/40-test_rehash.t
+index f902c23..c7567c1 100644
+--- a/test/recipes/40-test_rehash.t
++++ b/test/recipes/40-test_rehash.t
+@@ -23,7 +23,7 @@ setup("test_rehash");
+ plan skip_all => "test_rehash is not available on this platform"
+ unless run(app(["openssl", "rehash", "-help"]));
+
+-plan tests => 5;
++plan tests => 3;
+
+ indir "rehash.$$" => sub {
+ prepare();
+@@ -42,21 +42,6 @@ indir "rehash.$$" => sub {
+ 'Testing rehash operations on empty directory');
+ }, create => 1, cleanup => 1;
+
+-indir "rehash.$$" => sub {
+- prepare();
+- chmod 0500, curdir();
+- SKIP: {
+- if (!ok(!open(FOO, ">unwritable.txt"),
+- "Testing that we aren't running as a privileged user, such as root")) {
+- close FOO;
+- skip "It's pointless to run the next test as root", 1;
+- }
+- isnt(run(app(["openssl", "rehash", curdir()])), 1,
+- 'Testing rehash operations on readonly directory');
+- }
+- chmod 0700, curdir(); # make it writable again, so cleanup works
+-}, create => 1, cleanup => 1;
+-
+ sub prepare {
+ my @pemsourcefiles = sort glob(srctop_file('test', "*.pem"));
+ my @destfiles = ();
+--
+2.11.0
+
diff --git a/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-Take-linking-flags-from-LDFLAGS-env-var.patch b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-Take-linking-flags-from-LDFLAGS-env-var.patch
new file mode 100644
index 00000000..6ce4e47d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-Take-linking-flags-from-LDFLAGS-env-var.patch
@@ -0,0 +1,43 @@
+From 08face4353d80111973aba9c1304c92158cfad0e Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 28 Mar 2017 16:40:12 +0300
+Subject: [PATCH] Take linking flags from LDFLAGS env var
+
+This fixes "No GNU_HASH in the elf binary" issues.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ Configurations/unix-Makefile.tmpl | 2 +-
+ Configure | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
+index c029817..43b769b 100644
+--- a/Configurations/unix-Makefile.tmpl
++++ b/Configurations/unix-Makefile.tmpl
+@@ -173,7 +173,7 @@ CROSS_COMPILE= {- $config{cross_compile_prefix} -}
+ CC= $(CROSS_COMPILE){- $target{cc} -}
+ CFLAGS={- our $cflags2 = join(" ",(map { "-D".$_} @{$target{defines}}, @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $target{cflags} -} {- $config{cflags} -}
+ CFLAGS_Q={- $cflags2 =~ s|([\\"])|\\$1|g; $cflags2 -} {- $config{cflags} -}
+-LDFLAGS= {- $target{lflags} -}
++LDFLAGS= {- $target{lflags}." ".$ENV{'LDFLAGS'} -}
+ PLIB_LDFLAGS= {- $target{plib_lflags} -}
+ EX_LIBS= {- $target{ex_libs} -} {- $config{ex_libs} -}
+ LIB_CFLAGS={- $target{shared_cflag} || "" -}
+diff --git a/Configure b/Configure
+index aee7cc3..274d236 100755
+--- a/Configure
++++ b/Configure
+@@ -979,7 +979,7 @@ $config{build_file} = $target{build_file};
+ $config{defines} = [];
+ $config{cflags} = "";
+ $config{ex_libs} = "";
+-$config{shared_ldflag} = "";
++$config{shared_ldflag} = $ENV{'LDFLAGS'};
+
+ # Make sure build_scheme is consistent.
+ $target{build_scheme} = [ $target{build_scheme} ]
+--
+2.11.0
+
diff --git a/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-aes-asm-aes-armv4-bsaes-armv7-.pl-make-it-work-with-.patch b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-aes-asm-aes-armv4-bsaes-armv7-.pl-make-it-work-with-.patch
new file mode 100644
index 00000000..bb0a1689
--- /dev/null
+++ b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/0001-aes-asm-aes-armv4-bsaes-armv7-.pl-make-it-work-with-.patch
@@ -0,0 +1,88 @@
+From bcc096a50811bf0f0c4fd34b2993fed7a7015972 Mon Sep 17 00:00:00 2001
+From: Andy Polyakov <appro@openssl.org>
+Date: Fri, 3 Nov 2017 23:30:01 +0100
+Subject: [PATCH] aes/asm/{aes-armv4|bsaes-armv7}.pl: make it work with
+ binutils-2.29.
+
+It's not clear if it's a feature or bug, but binutils-2.29[.1]
+interprets 'adr' instruction with Thumb2 code reference differently,
+in a way that affects calculation of addresses of constants' tables.
+
+Upstream-Status: Backport
+
+Reviewed-by: Tim Hudson <tjh@openssl.org>
+Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
+Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
+(Merged from https://github.com/openssl/openssl/pull/4669)
+
+(cherry picked from commit b82acc3c1a7f304c9df31841753a0fa76b5b3cda)
+---
+ crypto/aes/asm/aes-armv4.pl | 6 +++---
+ crypto/aes/asm/bsaes-armv7.pl | 6 +++---
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/crypto/aes/asm/aes-armv4.pl b/crypto/aes/asm/aes-armv4.pl
+index 16d79aae53..c6474b8aad 100644
+--- a/crypto/aes/asm/aes-armv4.pl
++++ b/crypto/aes/asm/aes-armv4.pl
+@@ -200,7 +200,7 @@ AES_encrypt:
+ #ifndef __thumb2__
+ sub r3,pc,#8 @ AES_encrypt
+ #else
+- adr r3,AES_encrypt
++ adr r3,.
+ #endif
+ stmdb sp!,{r1,r4-r12,lr}
+ #ifdef __APPLE__
+@@ -450,7 +450,7 @@ _armv4_AES_set_encrypt_key:
+ #ifndef __thumb2__
+ sub r3,pc,#8 @ AES_set_encrypt_key
+ #else
+- adr r3,AES_set_encrypt_key
++ adr r3,.
+ #endif
+ teq r0,#0
+ #ifdef __thumb2__
+@@ -976,7 +976,7 @@ AES_decrypt:
+ #ifndef __thumb2__
+ sub r3,pc,#8 @ AES_decrypt
+ #else
+- adr r3,AES_decrypt
++ adr r3,.
+ #endif
+ stmdb sp!,{r1,r4-r12,lr}
+ #ifdef __APPLE__
+diff --git a/crypto/aes/asm/bsaes-armv7.pl b/crypto/aes/asm/bsaes-armv7.pl
+index 9f288660ef..a27bb4a179 100644
+--- a/crypto/aes/asm/bsaes-armv7.pl
++++ b/crypto/aes/asm/bsaes-armv7.pl
+@@ -744,7 +744,7 @@ $code.=<<___;
+ .type _bsaes_decrypt8,%function
+ .align 4
+ _bsaes_decrypt8:
+- adr $const,_bsaes_decrypt8
++ adr $const,.
+ vldmia $key!, {@XMM[9]} @ round 0 key
+ #ifdef __APPLE__
+ adr $const,.LM0ISR
+@@ -843,7 +843,7 @@ _bsaes_const:
+ .type _bsaes_encrypt8,%function
+ .align 4
+ _bsaes_encrypt8:
+- adr $const,_bsaes_encrypt8
++ adr $const,.
+ vldmia $key!, {@XMM[9]} @ round 0 key
+ #ifdef __APPLE__
+ adr $const,.LM0SR
+@@ -951,7 +951,7 @@ $code.=<<___;
+ .type _bsaes_key_convert,%function
+ .align 4
+ _bsaes_key_convert:
+- adr $const,_bsaes_key_convert
++ adr $const,.
+ vld1.8 {@XMM[7]}, [$inp]! @ load round 0 key
+ #ifdef __APPLE__
+ adr $const,.LM0
+--
+2.15.0
+
diff --git a/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/openssl-c_rehash.sh b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/openssl-c_rehash.sh
new file mode 100644
index 00000000..6620fdcb
--- /dev/null
+++ b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/openssl-c_rehash.sh
@@ -0,0 +1,222 @@
+#!/bin/sh
+#
+# Ben Secrest <blsecres@gmail.com>
+#
+# sh c_rehash script, scan all files in a directory
+# and add symbolic links to their hash values.
+#
+# based on the c_rehash perl script distributed with openssl
+#
+# LICENSE: See OpenSSL license
+# ^^acceptable?^^
+#
+
+# default certificate location
+DIR=/etc/openssl
+
+# for filetype bitfield
+IS_CERT=$(( 1 << 0 ))
+IS_CRL=$(( 1 << 1 ))
+
+
+# check to see if a file is a certificate file or a CRL file
+# arguments:
+# 1. the filename to be scanned
+# returns:
+# bitfield of file type; uses ${IS_CERT} and ${IS_CRL}
+#
+check_file()
+{
+ local IS_TYPE=0
+
+ # make IFS a newline so we can process grep output line by line
+ local OLDIFS=${IFS}
+ IFS=$( printf "\n" )
+
+ # XXX: could be more efficient to have two 'grep -m' but is -m portable?
+ for LINE in $( grep '^-----BEGIN .*-----' ${1} )
+ do
+ if echo ${LINE} \
+ | grep -q -E '^-----BEGIN (X509 |TRUSTED )?CERTIFICATE-----'
+ then
+ IS_TYPE=$(( ${IS_TYPE} | ${IS_CERT} ))
+
+ if [ $(( ${IS_TYPE} & ${IS_CRL} )) -ne 0 ]
+ then
+ break
+ fi
+ elif echo ${LINE} | grep -q '^-----BEGIN X509 CRL-----'
+ then
+ IS_TYPE=$(( ${IS_TYPE} | ${IS_CRL} ))
+
+ if [ $(( ${IS_TYPE} & ${IS_CERT} )) -ne 0 ]
+ then
+ break
+ fi
+ fi
+ done
+
+ # restore IFS
+ IFS=${OLDIFS}
+
+ return ${IS_TYPE}
+}
+
+
+#
+# use openssl to fingerprint a file
+# arguments:
+# 1. the filename to fingerprint
+# 2. the method to use (x509, crl)
+# returns:
+# none
+# assumptions:
+# user will capture output from last stage of pipeline
+#
+fingerprint()
+{
+ ${SSL_CMD} ${2} -fingerprint -noout -in ${1} | sed 's/^.*=//' | tr -d ':'
+}
+
+
+#
+# link_hash - create links to certificate files
+# arguments:
+# 1. the filename to create a link for
+# 2. the type of certificate being linked (x509, crl)
+# returns:
+# 0 on success, 1 otherwise
+#
+link_hash()
+{
+ local FINGERPRINT=$( fingerprint ${1} ${2} )
+ local HASH=$( ${SSL_CMD} ${2} -hash -noout -in ${1} )
+ local SUFFIX=0
+ local LINKFILE=''
+ local TAG=''
+
+ if [ ${2} = "crl" ]
+ then
+ TAG='r'
+ fi
+
+ LINKFILE=${HASH}.${TAG}${SUFFIX}
+
+ while [ -f ${LINKFILE} ]
+ do
+ if [ ${FINGERPRINT} = $( fingerprint ${LINKFILE} ${2} ) ]
+ then
+ echo "NOTE: Skipping duplicate file ${1}" >&2
+ return 1
+ fi
+
+ SUFFIX=$(( ${SUFFIX} + 1 ))
+ LINKFILE=${HASH}.${TAG}${SUFFIX}
+ done
+
+ echo "${3} => ${LINKFILE}"
+
+ # assume any system with a POSIX shell will either support symlinks or
+ # do something to handle this gracefully
+ ln -s ${3} ${LINKFILE}
+
+ return 0
+}
+
+
+# hash_dir create hash links in a given directory
+hash_dir()
+{
+ echo "Doing ${1}"
+
+ cd ${1}
+
+ ls -1 * 2>/dev/null | while read FILE
+ do
+ if echo ${FILE} | grep -q -E '^[[:xdigit:]]{8}\.r?[[:digit:]]+$' \
+ && [ -h "${FILE}" ]
+ then
+ rm ${FILE}
+ fi
+ done
+
+ ls -1 *.pem *.cer *.crt *.crl 2>/dev/null | while read FILE
+ do
+ REAL_FILE=${FILE}
+ # if we run on build host then get to the real files in rootfs
+ if [ -n "${SYSROOT}" -a -h ${FILE} ]
+ then
+ FILE=$( readlink ${FILE} )
+ # check the symlink is absolute (or dangling in other word)
+ if [ "x/" = "x$( echo ${FILE} | cut -c1 -)" ]
+ then
+ REAL_FILE=${SYSROOT}/${FILE}
+ fi
+ fi
+
+ check_file ${REAL_FILE}
+ local FILE_TYPE=${?}
+ local TYPE_STR=''
+
+ if [ $(( ${FILE_TYPE} & ${IS_CERT} )) -ne 0 ]
+ then
+ TYPE_STR='x509'
+ elif [ $(( ${FILE_TYPE} & ${IS_CRL} )) -ne 0 ]
+ then
+ TYPE_STR='crl'
+ else
+ echo "NOTE: ${FILE} does not contain a certificate or CRL: skipping" >&2
+ continue
+ fi
+
+ link_hash ${REAL_FILE} ${TYPE_STR} ${FILE}
+ done
+}
+
+
+# choose the name of an ssl application
+if [ -n "${OPENSSL}" ]
+then
+ SSL_CMD=$(which ${OPENSSL} 2>/dev/null)
+else
+ SSL_CMD=/usr/bin/openssl
+ OPENSSL=${SSL_CMD}
+ export OPENSSL
+fi
+
+# fix paths
+PATH=${PATH}:${DIR}/bin
+export PATH
+
+# confirm existance/executability of ssl command
+if ! [ -x ${SSL_CMD} ]
+then
+ echo "${0}: rehashing skipped ('openssl' program not available)" >&2
+ exit 0
+fi
+
+# determine which directories to process
+old_IFS=$IFS
+if [ ${#} -gt 0 ]
+then
+ IFS=':'
+ DIRLIST=${*}
+elif [ -n "${SSL_CERT_DIR}" ]
+then
+ DIRLIST=$SSL_CERT_DIR
+else
+ DIRLIST=${DIR}/certs
+fi
+
+IFS=':'
+
+# process directories
+for CERT_DIR in ${DIRLIST}
+do
+ if [ -d ${CERT_DIR} -a -w ${CERT_DIR} ]
+ then
+ IFS=$old_IFS
+ hash_dir ${CERT_DIR}
+ IFS=':'
+ fi
+done
diff --git a/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/run-ptest b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/run-ptest
new file mode 100644
index 00000000..65c6cc7b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq/run-ptest
@@ -0,0 +1,4 @@
+#!/bin/sh
+cd test
+OPENSSL_ENGINES=../engines BLDTOP=.. SRCTOP=.. perl run_tests.pl
+cd ..
diff --git a/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq_1.1.0g.bb b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq_1.1.0g.bb
new file mode 100644
index 00000000..7a4897fd
--- /dev/null
+++ b/bsp/meta-freescale/recipes-connectivity/openssl/openssl-qoriq_1.1.0g.bb
@@ -0,0 +1,186 @@
+SUMMARY = "Secure Socket Layer"
+DESCRIPTION = "Secure Socket Layer (SSL) binary and related cryptographic tools."
+HOMEPAGE = "http://www.openssl.org/"
+BUGTRACKER = "http://www.openssl.org/news/vulnerabilities.html"
+SECTION = "libs/network"
+
+DISABLE_STATIC = ""
+
+# "openssl | SSLeay" dual license
+LICENSE = "openssl"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cae6da10f4ffd9703214776d2aabce32"
+
+DEPENDS += "cryptodev-linux"
+DEPENDS_append_class-target = " openssl-native"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/openssl;nobranch=1 \
+ file://run-ptest \
+ file://openssl-c_rehash.sh \
+ file://0001-Take-linking-flags-from-LDFLAGS-env-var.patch \
+ file://0001-Remove-test-that-requires-running-as-non-root.patch \
+ file://0001-aes-asm-aes-armv4-bsaes-armv7-.pl-make-it-work-with-.patch \
+ "
+
+SRCREV = "c2300d1fdb30a439f555b07f228d3bce498238d5"
+
+PROVIDES = "openssl"
+
+python() {
+ pkgs = d.getVar('PACKAGES', True).split()
+ for p in pkgs:
+ if 'openssl-qoriq' in p:
+ d.appendVar("RPROVIDES_%s" % p, p.replace('openssl-qoriq', 'openssl'))
+ d.appendVar("RCONFLICTS_%s" % p, p.replace('openssl-qoriq', 'openssl'))
+ d.appendVar("RREPLACES_%s" % p, p.replace('openssl-qoriq', 'openssl'))
+}
+
+S = "${WORKDIR}/git"
+
+inherit lib_package multilib_header ptest
+
+do_configure () {
+ os=${HOST_OS}
+ case $os in
+ linux-uclibc |\
+ linux-uclibceabi |\
+ linux-gnueabi |\
+ linux-uclibcspe |\
+ linux-gnuspe |\
+ linux-musl*)
+ os=linux
+ ;;
+ *)
+ ;;
+ esac
+ target="$os-${HOST_ARCH}"
+ case $target in
+ linux-arm)
+ target=linux-armv4
+ ;;
+ linux-armeb)
+ target=linux-armv4
+ ;;
+ linux-aarch64*)
+ target=linux-aarch64
+ ;;
+ linux-sh3)
+ target=linux-generic32
+ ;;
+ linux-sh4)
+ target=linux-generic32
+ ;;
+ linux-i486)
+ target=linux-elf
+ ;;
+ linux-i586 | linux-viac3)
+ target=linux-elf
+ ;;
+ linux-i686)
+ target=linux-elf
+ ;;
+ linux-gnux32-x86_64)
+ target=linux-x32
+ ;;
+ linux-gnu64-x86_64)
+ target=linux-x86_64
+ ;;
+ linux-mips)
+ # specifying TARGET_CC_ARCH prevents openssl from (incorrectly) adding target architecture flags
+ target="linux-mips32 ${TARGET_CC_ARCH}"
+ ;;
+ linux-mipsel)
+ target="linux-mips32 ${TARGET_CC_ARCH}"
+ ;;
+ linux-gnun32-mips*)
+ target=linux-mips64
+ ;;
+ linux-*-mips64 | linux-mips64)
+ target=linux64-mips64
+ ;;
+ linux-*-mips64el | linux-mips64el)
+ target=linux64-mips64
+ ;;
+ linux-microblaze*|linux-nios2*)
+ target=linux-generic32
+ ;;
+ linux-powerpc)
+ target=linux-ppc
+ ;;
+ linux-powerpc64)
+ target=linux-ppc64
+ ;;
+ linux-riscv64)
+ target=linux-generic64
+ ;;
+ linux-riscv32)
+ target=linux-generic32
+ ;;
+ linux-supersparc)
+ target=linux-sparcv9
+ ;;
+ linux-sparc)
+ target=linux-sparcv9
+ ;;
+ darwin-i386)
+ target=darwin-i386-cc
+ ;;
+ esac
+ useprefix=${prefix}
+ if [ "x$useprefix" = "x" ]; then
+ useprefix=/
+ fi
+ libdirleaf="$(echo ${libdir} | sed s:$useprefix::)"
+ perl ./Configure -DHAVE_CRYPTODEV ${EXTRA_OECONF} --prefix=$useprefix --openssldir=${libdir}/ssl-1.1 --libdir=${libdirleaf} $target
+}
+
+#| engines/afalg/e_afalg.c: In function 'eventfd':
+#| engines/afalg/e_afalg.c:110:20: error: '__NR_eventfd' undeclared (first use in this function)
+#| return syscall(__NR_eventfd, n);
+#| ^~~~~~~~~~~~
+EXTRA_OECONF_aarch64 += "no-afalgeng"
+
+#| ./libcrypto.so: undefined reference to `getcontext'
+#| ./libcrypto.so: undefined reference to `setcontext'
+#| ./libcrypto.so: undefined reference to `makecontext'
+EXTRA_OECONF_libc-musl += "-DOPENSSL_NO_ASYNC"
+
+do_install () {
+ oe_runmake DESTDIR="${D}" MANDIR="${mandir}" MANSUFFIX=ssl install
+ oe_multilib_header openssl/opensslconf.h
+}
+
+do_install_append_class-native () {
+ # Install a custom version of c_rehash that can handle sysroots properly.
+ # This version is used for example when installing ca-certificates during
+ # image creation.
+ install -Dm 0755 ${WORKDIR}/openssl-c_rehash.sh ${D}${bindir}/c_rehash
+ sed -i -e 's,/etc/openssl,${sysconfdir}/ssl,g' ${D}${bindir}/c_rehash
+}
+
+do_install_ptest() {
+ cp -r * ${D}${PTEST_PATH}
+
+ # Putting .so files in ptest package will mess up the dependencies of the main openssl package
+ # so we rename them to .so.ptest and patch the test accordingly
+ mv ${D}${PTEST_PATH}/libcrypto.so ${D}${PTEST_PATH}/libcrypto.so.ptest
+ mv ${D}${PTEST_PATH}/libssl.so ${D}${PTEST_PATH}/libssl.so.ptest
+ sed -i 's/$target{shared_extension_simple}/".so.ptest"/' ${D}${PTEST_PATH}/test/recipes/90-test_shlibload.t
+}
+
+RDEPENDS_${PN}-ptest += "perl-module-file-spec-functions bash python"
+RRECOMMENDS_libcrypto += "openssl-conf"
+RDEPENDS_${PN}-bin = "perl"
+RDEPENDS_${PN}-misc = "perl"
+
+FILES_${PN} =+ " ${libdir}/ssl-1.1/*"
+
+PACKAGES =+ "libcrypto libssl openssl-conf ${PN}-engines ${PN}-misc"
+FILES_libcrypto = "${libdir}/libcrypto${SOLIBS}"
+FILES_libssl = "${libdir}/libssl${SOLIBS}"
+FILES_openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
+FILES_${PN}-engines = "${libdir}/engines-1.1"
+FILES_${PN}-misc = "${libdir}/ssl-1.1/misc"
+
+RPROVIDES_openssl-conf = "openssl10-conf"
+RREPLACES_openssl-conf = "openssl10-conf"
+RCONFLICTS_openssl-conf = "openssl10-conf"
diff --git a/bsp/meta-freescale/recipes-core/init-ifupdown/init-ifupdown/qoriq/interfaces b/bsp/meta-freescale/recipes-core/init-ifupdown/init-ifupdown/qoriq/interfaces
new file mode 100644
index 00000000..3737c8b2
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/init-ifupdown/init-ifupdown/qoriq/interfaces
@@ -0,0 +1,6 @@
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+
+# The loopback interface
+auto lo
+iface lo inet loopback
+
diff --git a/bsp/meta-freescale/recipes-core/init-ifupdown/init-ifupdown_%.bbappend b/bsp/meta-freescale/recipes-core/init-ifupdown/init-ifupdown_%.bbappend
new file mode 100644
index 00000000..00057874
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/init-ifupdown/init-ifupdown_%.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
+
diff --git a/bsp/meta-freescale/recipes-core/packagegroup/nativesdk-packagegroup-sdk-host.bbappend b/bsp/meta-freescale/recipes-core/packagegroup/nativesdk-packagegroup-sdk-host.bbappend
new file mode 100644
index 00000000..d0c26c2a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/packagegroup/nativesdk-packagegroup-sdk-host.bbappend
@@ -0,0 +1,6 @@
+RDEPENDS_${PN} += " \
+ nativesdk-mxsldr \
+ nativesdk-u-boot-mkimage \
+ nativesdk-imx-usb-loader \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'nativesdk-wayland', '', d)} \
+"
diff --git a/bsp/meta-freescale/recipes-core/udev/udev-rules-imx.bb b/bsp/meta-freescale/recipes-core/udev/udev-rules-imx.bb
new file mode 100644
index 00000000..163f2835
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/udev/udev-rules-imx.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "udev rules for Freescale i.MX SOCs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = " file://10-imx.rules"
+
+S = "${WORKDIR}"
+
+do_install () {
+ install -d ${D}${sysconfdir}/udev/rules.d
+ install -m 0644 ${WORKDIR}/10-imx.rules ${D}${sysconfdir}/udev/rules.d/
+}
diff --git a/bsp/meta-freescale/recipes-core/udev/udev-rules-imx/10-imx.rules b/bsp/meta-freescale/recipes-core/udev/udev-rules-imx/10-imx.rules
new file mode 100644
index 00000000..6afc1e8e
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/udev/udev-rules-imx/10-imx.rules
@@ -0,0 +1,23 @@
+# Create symlinks for i.mx keypads and touchscreens
+#SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name}=="mxckpd", SYMLINK+="input/keyboard0"
+#SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name}=="mxc_ts", SYMLINK+="input/ts0"
+#SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name}=="imx_adc_ts", SYMLINK+="input/ts0"
+#SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name}=="mpr084", SYMLINK+="input/keyboard0"
+#SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name}=="tsc2007", SYMLINK+="input/ts0"
+#SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name} =="STMP3XXX touchscreen", SYMLINK+="input/ts0"
+#SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name} =="MXS touchscreen", SYMLINK+="input/ts0"
+#SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name} =="HannStar P1003 Touchscreen", SYMLINK+="input/ts0"
+#SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name} =="eGalax Touch Screen", SYMLINK+="input/ts0"
+
+# The long class name gets cut off to be mc13783_connectiv in
+# /sys/class/mc13783_connectivity/mc13783_connectivit
+KERNEL=="mc13783_connectiv*", NAME="mc13783_connectivity"
+# Anyone has readonly permission to IIM device file
+KERNEL=="mxc_iim", MODE="0444", SYMLINK+="mxc_mem"
+KERNEL=="mxs_viim", MODE="0444", SYMLINK+="mxc_mem"
+KERNEL=="mxc_ipu", MODE="0666"
+KERNEL=="mxc_vpu", MODE="0666"
+SUBSYSTEM=="video", MODE="0660"
+KERNEL=="fb[0-9]", MODE="0660", GROUP="video"
+KERNEL=="gsl_kmod", MODE="0660", GROUP="video"
+KERNEL=="galcore", MODE="0660", GROUP="video"
diff --git a/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq.bb b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq.bb
new file mode 100644
index 00000000..deeedab8
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "udev rules for Freescale QorIQ SOCs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = "\
+ file://71-fsl-dpaa-persistent-networking.rules \
+ file://72-fsl-dpaa-persistent-networking.rules \
+ file://73-fsl-dpaa-persistent-networking.rules \
+ file://74-ls1046a-xfi2-networking.rules \
+"
+S = "${WORKDIR}"
+
+RULE = "71-fsl-dpaa-persistent-networking.rules"
+RULE_e6500 = "72-fsl-dpaa-persistent-networking.rules"
+RULE_e6500-64b = "72-fsl-dpaa-persistent-networking.rules"
+RULE_t1024 = "72-fsl-dpaa-persistent-networking.rules"
+RULE_ls1043a = "73-fsl-dpaa-persistent-networking.rules"
+RULE_ls1046a = "73-fsl-dpaa-persistent-networking.rules \
+ 74-ls1046a-xfi2-networking.rules \
+"
+RULE_ls1012a = ""
+RULE_ls2080a = ""
+
+do_install () {
+ install -d ${D}${sysconfdir}/udev/rules.d/
+ for r in ${RULE};do
+ install -m 0644 ${WORKDIR}/${r} ${D}${sysconfdir}/udev/rules.d/
+ done
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+COMPATIBLE_MACHINE = "(qoriq)"
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
diff --git a/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/71-fsl-dpaa-persistent-networking.rules b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/71-fsl-dpaa-persistent-networking.rules
new file mode 100644
index 00000000..6c6dc354
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/71-fsl-dpaa-persistent-networking.rules
@@ -0,0 +1,20 @@
+# Rules for handling naming the DPAA FMan ethernet ports in a consistent way
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e0000", NAME="fm1-gb0"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e2000", NAME="fm1-gb1"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e4000", NAME="fm1-gb2"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e6000", NAME="fm1-gb3"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e8000", NAME="fm1-gb4"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4f0000", NAME="fm1-10g"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e0000", NAME="fm2-gb0"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e2000", NAME="fm2-gb1"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e4000", NAME="fm2-gb2"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e6000", NAME="fm2-gb3"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e8000", NAME="fm2-gb4"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5f0000", NAME="fm2-10g"
+
+# P1023 has its Fman @ different offsets
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ff7e0000", NAME="fm1-gb0"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ff7e2000", NAME="fm1-gb1"
+
+# Rename macless0 port to "macless0"
+SUBSYSTEM=="net", ATTR{device_type}=="macless0", NAME="macless0"
diff --git a/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/72-fsl-dpaa-persistent-networking.rules b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/72-fsl-dpaa-persistent-networking.rules
new file mode 100644
index 00000000..d0eec9ce
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/72-fsl-dpaa-persistent-networking.rules
@@ -0,0 +1,24 @@
+# Rules for handling naming the DPAA FMan ethernet ports in a consistent way
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e0000", NAME="fm1-mac1"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e2000", NAME="fm1-mac2"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e4000", NAME="fm1-mac3"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e6000", NAME="fm1-mac4"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4e8000", NAME="fm1-mac5"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4ea000", NAME="fm1-mac6"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4ec000", NAME="fm1-mac7"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4ee000", NAME="fm1-mac8"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4f0000", NAME="fm1-mac9"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe4f2000", NAME="fm1-mac10"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e0000", NAME="fm2-mac1"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e2000", NAME="fm2-mac2"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e4000", NAME="fm2-mac3"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e6000", NAME="fm2-mac4"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5e8000", NAME="fm2-mac5"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5ea000", NAME="fm2-mac6"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5ec000", NAME="fm2-mac7"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5ee000", NAME="fm2-mac8"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5f0000", NAME="fm2-mac9"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="ffe5f2000", NAME="fm2-mac10"
+
+# Rename macless0 to "macless0"
+SUBSYSTEM=="net", ATTR{device_type}=="macless0", NAME="macless0"
diff --git a/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/73-fsl-dpaa-persistent-networking.rules b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/73-fsl-dpaa-persistent-networking.rules
new file mode 100644
index 00000000..a96b9458
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/73-fsl-dpaa-persistent-networking.rules
@@ -0,0 +1,11 @@
+# Rules for handling naming the DPAA FMan ethernet ports in a consistent way
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae0000", NAME="fm1-mac1"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae2000", NAME="fm1-mac2"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae4000", NAME="fm1-mac3"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae6000", NAME="fm1-mac4"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae8000", NAME="fm1-mac5"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1aea000", NAME="fm1-mac6"
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1af0000", NAME="fm1-mac9"
+
+# Rename macless0 to "macless0"
+SUBSYSTEM=="net", ATTR{device_type}=="macless0", NAME="macless0"
diff --git a/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/74-ls1046a-xfi2-networking.rules b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/74-ls1046a-xfi2-networking.rules
new file mode 100644
index 00000000..42931d47
--- /dev/null
+++ b/bsp/meta-freescale/recipes-core/udev/udev-rules-qoriq/74-ls1046a-xfi2-networking.rules
@@ -0,0 +1 @@
+SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1af2000", NAME="fm1-mac10"
diff --git a/bsp/meta-freescale/recipes-daemons/ptpd/ptpd-qoriq.bb b/bsp/meta-freescale/recipes-daemons/ptpd/ptpd-qoriq.bb
new file mode 100644
index 00000000..cb047fd2
--- /dev/null
+++ b/bsp/meta-freescale/recipes-daemons/ptpd/ptpd-qoriq.bb
@@ -0,0 +1,67 @@
+SUMMARY = "The PTP daemon (PTPd)"
+DESCRIPTION = "The PTP daemon (PTPd) implements the Precision Time protocol (PTP) as \
+defined by the relevant IEEE 1588 standard. PTP Version 1 implements IEEE-1588-2002, \
+and PTP Version 2 implements IEEE-1588-2008. PTP was developed to provide very precise \
+time coordination of LAN connected computers."
+HOMEPAGE = "http://sourceforge.net/projects/ptpd"
+SECTION = "net"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://README;md5=0733e1b3788ab2ebbc63bf33a020da1d"
+
+COMPATIBLE_MACHINE = "(qoriq)"
+
+DEPENDS = "libpcap"
+
+PROVIDES = "ptpd"
+
+inherit autotools pkgconfig systemd
+
+python() {
+ pkgs = d.getVar('PACKAGES', True).split()
+ for p in pkgs:
+ if 'ptpd-qoriq' in p:
+ d.appendVar("RPROVIDES_%s" % p, p.replace('ptpd-qoriq', 'ptpd'))
+ d.appendVar("RCONFLICTS_%s" % p, p.replace('ptpd-qoriq', 'ptpd'))
+ d.appendVar("RREPLACES_%s" % p, p.replace('ptpd-qoriq', 'ptpd'))
+}
+
+# return something like '1.2.3' or '1.2.3/rc1'
+#
+def get_sub(d):
+ parts = d.getVar('PV').split('-')
+ try:
+ return parts[0] + '/' + parts[1]
+ except:
+ return parts[0]
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/ptpd;nobranch=1 \
+ file://ptpd-use-pkgconfig.patch \
+"
+SRCREV = "ec34cdd10446619d036ac8d6a86b8276f0d4a81c"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = ""
+
+EXTRA_OECONF += "--disable-snmp --with-pcap-config=pkg-config"
+
+do_install() {
+ install -d ${D}${bindir} ${D}${mandir}/man8
+ install -m 0755 ${B}/src/ptpd2 ${D}${bindir}
+ install -m 0644 ${B}/src/ptpd2.8 ${D}${mandir}/man8
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/ptpd.service ${D}${systemd_unitdir}/system
+
+ sed -i -e 's#@SYSCONFDIR@#${sysconfdir}#g' ${D}${systemd_unitdir}/system/ptpd.service
+ sed -i -e 's#@BINDIR@#${bindir}#g' ${D}${systemd_unitdir}/system/ptpd.service
+
+ install -d ${D}${sysconfdir}/default/
+ install -m 0644 ${WORKDIR}/ptpd.conf ${D}${sysconfdir}/default/ptpd
+ fi
+}
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "ptpd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
diff --git a/bsp/meta-freescale/recipes-daemons/ptpd/ptpd-qoriq/ptpd-use-pkgconfig.patch b/bsp/meta-freescale/recipes-daemons/ptpd/ptpd-qoriq/ptpd-use-pkgconfig.patch
new file mode 100644
index 00000000..e4578dda
--- /dev/null
+++ b/bsp/meta-freescale/recipes-daemons/ptpd/ptpd-qoriq/ptpd-use-pkgconfig.patch
@@ -0,0 +1,35 @@
+From 4c850b92a1cf8cfa19677c66bcde2edfab1a4490 Mon Sep 17 00:00:00 2001
+From: Joe MacDonald <joe_macdonald@mentor.com>
+Date: Tue, 24 Feb 2015 23:02:14 -0500
+Subject: [PATCH] ptpd: use pkgconfig
+
+Yocto uses pkg-config for libpcap, rather than pcap-config, so use that
+instead as the source for libs and cflags.
+
+Upstream-status: Inappropriate [ embedded specific ]
+
+Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index dc9541f..288f547 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -112,10 +112,10 @@ case "$try_pcap" in
+ yes)
+ case "$PATH_PCAP_CONFIG" in
+ /*)
+- PCAP_LIBS=`$PATH_PCAP_CONFIG --libs`
++ PCAP_LIBS=`$PATH_PCAP_CONFIG --libs libpcap`
+ AC_SUBST([PCAP_LIBS])
+ # Separate CPPFLAGS and CFLAGS
+- foo=`$PATH_PCAP_CONFIG --cflags`
++ foo=`$PATH_PCAP_CONFIG --cflags libpcap`
+ PCAP_CPPFLAGS=
+ PCAP_CFLAGS=
+ for i in $foo; do
+--
+1.9.1
+
diff --git a/bsp/meta-freescale/recipes-devtools/cst/cst_git.bb b/bsp/meta-freescale/recipes-devtools/cst/cst_git.bb
new file mode 100644
index 00000000..05d2d4c7
--- /dev/null
+++ b/bsp/meta-freescale/recipes-devtools/cst/cst_git.bb
@@ -0,0 +1,27 @@
+SUMMARY = "utility for security boot"
+SECTION = "cst"
+LICENSE = "BSD"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e959d5d617e33779d0e90ce1d9043eff"
+
+DEPENDS += "openssl"
+RDEPENDS_${PN} = "bash"
+
+inherit kernel-arch
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/cst;nobranch=1 \
+"
+SRCREV = "f599f6126ae1a382a581dcd75e9ad2e34c79a183"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = 'CC="${CC}" LD="${CC}"'
+
+PARALLEL_MAKE = ""
+
+do_install () {
+ oe_runmake install DESTDIR=${D} BIN_DEST_DIR=${bindir}
+}
+
+FILES_${PN}-dbg += "${bindir}/cst/.debug"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/bsp/meta-freescale/recipes-devtools/devregs/devregs_git.bb b/bsp/meta-freescale/recipes-devtools/devregs/devregs_git.bb
new file mode 100644
index 00000000..3bac55a4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-devtools/devregs/devregs_git.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "i.MX Register tool"
+SECTION = "devel"
+LICENSE = "GPL-1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5003fa041d799dd5dd5f646b74e36924"
+
+SRCREV = "34ed402b92920864b89e0fd1e76bae3aa340baaa"
+SRC_URI = "git://github.com/boundarydevices/devregs.git;protocol=http"
+
+PV = "1.0+${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
diff --git a/bsp/meta-freescale/recipes-devtools/imx-usb-loader/imx-usb-loader_git.bb b/bsp/meta-freescale/recipes-devtools/imx-usb-loader/imx-usb-loader_git.bb
new file mode 100644
index 00000000..a1f9c4d8
--- /dev/null
+++ b/bsp/meta-freescale/recipes-devtools/imx-usb-loader/imx-usb-loader_git.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "i.MX/Vybrid recovery utility"
+SECTION = "devel"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "libusb1"
+
+SRCREV = "e5394615dd413c3823d5bd1de340933e16a8c07c"
+SRC_URI = "git://github.com/boundarydevices/imx_usb_loader.git;protocol=http"
+
+PV = "1.0+${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+do_install () {
+ oe_runmake DESTDIR=${D} install
+}
+
+inherit pkgconfig
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/memfd.patch b/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/memfd.patch
new file mode 100644
index 00000000..d9e7a455
--- /dev/null
+++ b/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/memfd.patch
@@ -0,0 +1,41 @@
+From d60ecdd94f4054aa0ec615824d5efdb4cebc7db9 Mon Sep 17 00:00:00 2001
+From: Ting Liu <ting.liu@nxp.com>
+Date: Thu, 19 Apr 2018 11:47:16 +0800
+Subject: [PATCH] memfd
+
+---
+ configure | 2 +-
+ util/memfd.c | 4 +---
+ 2 files changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/configure b/configure
+index be4d326..cb5197c 100755
+--- a/configure
++++ b/configure
+@@ -3735,7 +3735,7 @@ fi
+ # check if memfd is supported
+ memfd=no
+ cat > $TMPC << EOF
+-#include <sys/memfd.h>
++#include <sys/mman.h>
+
+ int main(void)
+ {
+diff --git a/util/memfd.c b/util/memfd.c
+index 4571d1a..412e94a 100644
+--- a/util/memfd.c
++++ b/util/memfd.c
+@@ -31,9 +31,7 @@
+
+ #include "qemu/memfd.h"
+
+-#ifdef CONFIG_MEMFD
+-#include <sys/memfd.h>
+-#elif defined CONFIG_LINUX
++#if defined CONFIG_LINUX && !defined CONFIG_MEMFD
+ #include <sys/syscall.h>
+ #include <asm/unistd.h>
+
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/powerpc_rom.bin b/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/powerpc_rom.bin
new file mode 100644
index 00000000..c4044296
--- /dev/null
+++ b/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/powerpc_rom.bin
Binary files differ
diff --git a/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/run-ptest b/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/run-ptest
new file mode 100644
index 00000000..2206b319
--- /dev/null
+++ b/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq/run-ptest
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+#This script is used to run qemu test suites
+#
+
+ptestdir=$(dirname "$(readlink -f "$0")")
+export SRC_PATH=$ptestdir
+
+cd $ptestdir/tests
+make -f Makefile.include -k runtest-TESTS | sed '/: OK/ s/^/PASS: /g'
diff --git a/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq_git.bb b/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq_git.bb
new file mode 100644
index 00000000..7423b542
--- /dev/null
+++ b/bsp/meta-freescale/recipes-devtools/qemu/qemu-qoriq_git.bb
@@ -0,0 +1,72 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+require recipes-devtools/qemu/qemu.inc
+
+inherit ptest
+
+RDEPENDS_${PN}-ptest = "bash make"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
+ file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/qemu;nobranch=1 \
+ file://powerpc_rom.bin \
+ file://run-ptest \
+ file://memfd.patch \
+ "
+
+SRCREV = "6c297a7ddd355d499ddd31353a763d57a092f851"
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST_mipsarchn32 = "null"
+COMPATIBLE_HOST_mipsarchn64 = "null"
+
+PROVIDES = "qemu"
+
+python() {
+ pkgs = d.getVar('PACKAGES', True).split()
+ for p in pkgs:
+ if 'qemu-qoriq' in p:
+ d.appendVar("RPROVIDES_%s" % p, p.replace('qemu-qoriq', 'qemu'))
+ d.appendVar("RCONFLICTS_%s" % p, p.replace('qemu-qoriq', 'qemu'))
+ d.appendVar("RREPLACES_%s" % p, p.replace('qemu-qoriq', 'qemu'))
+}
+
+PPC_OECONF = '--enable-fdt --enable-kvm --with-system-pixman --disable-werror'
+EXTRA_OECONF_qoriq-arm64 = "--prefix=${prefix} --target-list=aarch64-softmmu --enable-fdt --enable-kvm --with-system-pixman --disable-werror"
+EXTRA_OECONF_qoriq-arm = "--prefix=${prefix} --target-list=arm-softmmu --enable-fdt --enable-kvm --with-system-pixman --disable-werror"
+EXTRA_OECONF_e5500-64b = "--prefix=${prefix} --target-list=ppc64-softmmu ${PPC_OECONF}"
+EXTRA_OECONF_e6500-64b = "--prefix=${prefix} --target-list=ppc64-softmmu ${PPC_OECONF}"
+EXTRA_OECONF_e6500 = "--prefix=${prefix} --target-list=ppc64-softmmu ${PPC_OECONF}"
+EXTRA_OECONF_e5500 = "--prefix=${prefix} --target-list=ppc64-softmmu ${PPC_OECONF}"
+EXTRA_OECONF_e500v2 = "--prefix=${prefix} --target-list=ppc-softmmu ${PPC_OECONF}"
+EXTRA_OECONF_e500mc = "--prefix=${prefix} --target-list=ppc-softmmu ${PPC_OECONF}"
+
+DISABLE_STATIC = ""
+
+do_install_append() {
+ # Prevent QA warnings about installed ${localstatedir}/run
+ if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
+ install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
+}
+
+do_compile_ptest() {
+ make buildtest-TESTS
+}
+
+do_install_ptest() {
+ cp -rL ${B}/tests ${D}${PTEST_PATH}
+ find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcod]" | xargs -i rm -rf {}
+
+ cp ${S}/tests/Makefile.include ${D}${PTEST_PATH}/tests
+ # Don't check the file genreated by configure
+ sed -i -e '/wildcard config-host.mak/d' \
+ -e '$ {/endif/d}' ${D}${PTEST_PATH}/tests/Makefile.include
+}
+
+INSANE_SKIP_${PN} += "already-stripped"
+FILES_${PN} += "/usr/share/qemu/* /usr/var/*"
+
+# FIXME: Avoid WARNING due missing patch for native/nativesdk
+BBCLASSEXTEND = ""
diff --git a/bsp/meta-freescale/recipes-devtools/utp-com/utp-com_git.bb b/bsp/meta-freescale/recipes-devtools/utp-com/utp-com_git.bb
new file mode 100644
index 00000000..db2d7f08
--- /dev/null
+++ b/bsp/meta-freescale/recipes-devtools/utp-com/utp-com_git.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Tool used to send commands to hardware via NXP's UTP protocol"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8264535c0c4e9c6c335635c4026a8022"
+
+DEPENDS = "sg3-utils"
+
+SRCREV = "dee512ced1e9367d223d22f10797fbf9aeacfab6"
+SRC_URI = " \
+ git://github.com/Freescale/utp_com;protocol=https \
+"
+
+PV = "1.0+git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+do_configure[noexec] = "1"
+
+do_compile () {
+ oe_runmake
+}
+
+do_install () {
+ install -d -m 0755 ${D}${bindir}
+ install -m 0755 ${S}/utp_com ${D}${bindir}/utp_com
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/bsp/meta-freescale/recipes-dpaa/eth-config/eth-config_git.bb b/bsp/meta-freescale/recipes-dpaa/eth-config/eth-config_git.bb
new file mode 100644
index 00000000..5255bd02
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa/eth-config/eth-config_git.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Ethernet Configuration Files"
+SECTION = "eth-config"
+LICENSE = "BSD & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=47716bd5b656aa5e298a132a64d2d1e4"
+
+PR = "r2"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/eth-config;nobranch=1"
+SRCREV = "eefb06353c8c3db34d22c26825b66e921bce617d"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "D=${D}"
+
+do_install() {
+ oe_runmake install
+ chown -R root:root ${D}
+}
+
+CLEANBROKEN = "1"
diff --git a/bsp/meta-freescale/recipes-dpaa/flib/flib_git.bb b/bsp/meta-freescale/recipes-dpaa/flib/flib_git.bb
new file mode 100644
index 00000000..3ae05889
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa/flib/flib_git.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Foundation Library"
+SECTION = "flib"
+LICENSE = "BSD & GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9f6d1afdf6b0f6b3ba65c25ba589ee53"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/flib;nobranch=1"
+SRCREV = "cbb31427466649c07d2ac2739a41bb42f5f6be7c"
+
+S = "${WORKDIR}/git"
+
+do_install(){
+ oe_runmake install DESTDIR=${D}
+}
+
+ALLOW_EMPTY_${PN} = "1"
diff --git a/bsp/meta-freescale/recipes-dpaa/fm-ucode/fm-ucode_git.bb b/bsp/meta-freescale/recipes-dpaa/fm-ucode/fm-ucode_git.bb
new file mode 100644
index 00000000..1db1acd0
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa/fm-ucode/fm-ucode_git.bb
@@ -0,0 +1,43 @@
+DESCRIPTION = "Fman microcode binary"
+SECTION = "fm-ucode"
+LICENSE = "Freescale-Binary-EULA"
+LIC_FILES_CHKSUM = "file://Freescale-Binary-EULA;md5=b784c031868ba1bd5ebc5de372c823fa"
+
+PR = "r1"
+
+inherit deploy fsl-eula-unpack
+
+SRC_URI = "git://github.com/NXP/qoriq-fm-ucode.git;fsl-eula=true;nobranch=1"
+SRCREV = "c275e91392e2adab1ed22f3867b8269ca3c54014"
+
+S = "${WORKDIR}/git"
+
+REGLEX ?= "${MACHINE}"
+REGLEX_t1023 = "t1024"
+REGLEX_t1040 = "t1040"
+REGLEX_t1042 = "t1040"
+REGLEX_b4420 = "b4860"
+REGLEX_t4160 = "t4240"
+REGLEX_ls1043a = "ls1043"
+REGLEX_ls1046a = "ls1046"
+
+do_install () {
+ UCODE=`echo ${REGLEX} | sed -e 's,-.*$,,' -e 's,[a-zA-Z]*$,,'`
+ install -d ${D}/boot
+ install -m 644 ${B}/fsl_fman_ucode_${UCODE}*.bin ${D}/boot/
+}
+
+do_deploy () {
+ UCODE=`echo ${REGLEX} | sed -e 's,-.*$,,' -e 's,[a-zA-Z]*$,,'`
+ install -d ${DEPLOYDIR}/
+ install -m 644 ${B}/fsl_fman_ucode_${UCODE}*.bin ${DEPLOYDIR}
+}
+addtask deploy before do_build after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/boot"
+ALLOW_EMPTY_${PN} = "1"
+
+COMPATIBLE_MACHINE = "(e500mc|e5500|e5500-64b|e6500|e6500-64b|fsl-lsch2)"
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
diff --git a/bsp/meta-freescale/recipes-dpaa/fmlib/fmlib_git.bb b/bsp/meta-freescale/recipes-dpaa/fmlib/fmlib_git.bb
new file mode 100644
index 00000000..69768130
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa/fmlib/fmlib_git.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "Frame Manager User Space Library"
+SECTION = "fman"
+LICENSE = "BSD & GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=9c7bd5e45d066db084bdb3543d55b1ac"
+
+PR = "r1"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/fmlib;nobranch=1"
+SRCREV = "82d89adae917397324c5d74108305f6c9bae8d00"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "DESTDIR=${D} PREFIX=${prefix} LIB_DEST_DIR=${libdir} \
+ CROSS_COMPILE=${TARGET_PREFIX} KERNEL_SRC=${STAGING_KERNEL_DIR}"
+
+TARGET_ARCH_FMLIB = "${DEFAULTTUNE}"
+TARGET_ARCH_FMLIB_qoriq-arm = "arm"
+TARGET_ARCH_FMLIB_qoriq-arm64 = "arm"
+TARGET_ARCH_FMLIB_e5500 = "ppc32e5500"
+TARGET_ARCH_FMLIB_e6500 = "ppc32e6500"
+TARGET_ARCH_FMLIB_e500mc = "ppce500mc"
+TARGET_ARCH_FMLIB_e500v2 = "ppce500v2"
+
+FMLIB_TARGET = "libfm-${TARGET_ARCH_FMLIB}"
+FMLIB_TARGET_t1 = "libfm-${TARGET_ARCH_FMLIB}-fmv3l"
+
+do_compile () {
+ oe_runmake ${FMLIB_TARGET}.a
+}
+
+do_install () {
+ oe_runmake install-${FMLIB_TARGET}
+}
+
+do_compile[depends] += "virtual/kernel:do_shared_workdir"
+
+ALLOW_EMPTY_${PN} = "1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+COMPATIBLE_MACHINE ?= "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-dpaa2/aiopsl/aiopsl_git.bb b/bsp/meta-freescale/recipes-dpaa2/aiopsl/aiopsl_git.bb
new file mode 100644
index 00000000..9ba12816
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa2/aiopsl/aiopsl_git.bb
@@ -0,0 +1,32 @@
+DESCRIPTION = "DPAA2 Accelerated I/O Processing service layer"
+SECTION = "dpaa2"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=faf479bdc4702d8033049f97e153f876"
+
+BASEDEPENDS = ""
+
+S = "${WORKDIR}/git"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/aiopsl;nobranch=1"
+SRCREV = "ec0e50b9bfe794b78bf0d91789f2a77dc4e8ceb4"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+DEMOS_PATH_ls2088a = "LS2088A"
+DEMOS_PATH_ls1088a = "LS1088A"
+
+do_install () {
+ install -d ${D}/usr/aiop/bin
+ install -d ${D}/usr/aiop/scripts
+ install -d ${D}/usr/aiop/traffic_files
+ install -m 755 ${S}/demos/images/${DEMOS_PATH}/*.elf ${D}/usr/aiop/bin
+ install -m 755 ${S}/misc/setup/scripts/dynamic_aiop_*.sh ${D}/usr/aiop/scripts
+ install -m 644 ${S}/misc/setup/traffic_files/classifier.pcap ${D}/usr/aiop/traffic_files
+}
+
+FILES_${PN} += "/usr/aiop/*"
+INSANE_SKIP_${PN} += "arch"
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+COMPATIBLE_MACHINE = "(ls2088a|ls1088a)"
diff --git a/bsp/meta-freescale/recipes-dpaa2/dce/dce_git.bb b/bsp/meta-freescale/recipes-dpaa2/dce/dce_git.bb
new file mode 100644
index 00000000..7313ca73
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa2/dce/dce_git.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Decompression Compression Engine Userspace Utils"
+SECTION = "dpaa2"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=338308e2a663929309c9929ab9495bb5"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/dce;nobranch=1 \
+ git://source.codeaurora.org/external/qoriq/qoriq-components/qbman_userspace;nobranch=1;name=qbman;destsuffix=git/lib/qbman_userspace \
+"
+SRCREV = "49389aa57cc94e0503f53c6b33e4b358ccf42eb5"
+SRCREV_qbman = "383ceac0c09b1e38f2a8b1cf42822686b4cf15f3"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}"'
+
+do_install () {
+ oe_runmake install DESTDIR=${D}
+}
+
+INSANE_SKIP_${PN} = "ldflags"
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
diff --git a/bsp/meta-freescale/recipes-dpaa2/dpl-examples/dpl-examples_git.bb b/bsp/meta-freescale/recipes-dpaa2/dpl-examples/dpl-examples_git.bb
new file mode 100644
index 00000000..aca35a84
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa2/dpl-examples/dpl-examples_git.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Datapath layout examples"
+LICENSE = "Freescale-EULA"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=386a6287daa6504b7e7e5014ddfb3987"
+
+DEPENDS = "dtc-native"
+
+inherit deploy fsl-eula-unpack
+
+SRC_URI = "git://github.com/qoriq-open-source/dpl-examples.git;fsl-eula=true;nobranch=1"
+SRCREV = "a6c83759c0d9c02822eec89e86357a0998ef51d4"
+
+S = "${WORKDIR}/git"
+
+REGLEX_ls2088a = "ls2088a"
+REGLEX_ls1088a = "ls1088a"
+
+do_install () {
+ install -d ${D}/boot
+ install -m 644 ${S}/${REGLEX}/RDB/*.dtb ${D}/boot
+ install -m 644 ${S}/${REGLEX}/RDB/custom/*.dtb ${D}/boot
+}
+
+do_deploy () {
+ install -d ${DEPLOYDIR}/dpl-examples
+ install -m 644 ${S}/${REGLEX}/RDB/*.dtb ${DEPLOYDIR}/dpl-examples
+ install -m 644 ${S}/${REGLEX}/RDB/custom/*.dtb ${DEPLOYDIR}/dpl-examples
+}
+addtask deploy before do_build after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/boot"
+
+COMPATIBLE_MACHINE = "(ls2080ardb|ls2088a|ls1088a)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/bsp/meta-freescale/recipes-dpaa2/gpp-aioptool/gpp-aioptool/0001-remove-libio.h.patch b/bsp/meta-freescale/recipes-dpaa2/gpp-aioptool/gpp-aioptool/0001-remove-libio.h.patch
new file mode 100644
index 00000000..92b75f76
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa2/gpp-aioptool/gpp-aioptool/0001-remove-libio.h.patch
@@ -0,0 +1,27 @@
+From bb5ab9463db2f79c11c60808fdccd5d57d31fdac Mon Sep 17 00:00:00 2001
+From: Chunrong Guo <chunrong.guo@nxp.com>
+Date: Fri, 7 Sep 2018 14:54:30 +0800
+Subject: [PATCH] remove libio.h
+
+update for glibc libio.h removal in 2.28+
+
+Signed-off-by: BJ DevOps Team <bjdevops@NXP1.onmicrosoft.com>
+---
+ flib/mc/fsl_mc_sys.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/flib/mc/fsl_mc_sys.h b/flib/mc/fsl_mc_sys.h
+index b01db32..7ba8800 100644
+--- a/flib/mc/fsl_mc_sys.h
++++ b/flib/mc/fsl_mc_sys.h
+@@ -52,7 +52,6 @@ struct fsl_mc_io {
+ #else /* __linux_driver__ */
+
+ #include <stdio.h>
+-#include <libio.h>
+ #include <stdint.h>
+ #include <errno.h>
+ #include <sys/uio.h>
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-dpaa2/gpp-aioptool/gpp-aioptool_git.bb b/bsp/meta-freescale/recipes-dpaa2/gpp-aioptool/gpp-aioptool_git.bb
new file mode 100644
index 00000000..a9c3180f
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa2/gpp-aioptool/gpp-aioptool_git.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "AIOP Tool is a userspace application for performing operations \
+on an AIOP Tile using MC interfaces. This application enables the user to \
+fetch status of tile, load a valid ELF file and run it on a tile and get and set \
+time of day."
+SECTION = "dpaa2"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=386a6287daa6504b7e7e5014ddfb3987"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/gpp-aioptool;nobranch=1 \
+ file://0001-remove-libio.h.patch \
+"
+SRCREV = "6ead470dde043f3ca67f1ba19b313dd64ec199e1"
+
+S = "${WORKDIR}/git"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+EXTRA_OEMAKE = 'CC="${CC}" LD="${CC}" KERNEL_PATH="${STAGING_KERNEL_DIR}"'
+
+do_configure[depends] += "virtual/kernel:do_shared_workdir"
+
+do_install () {
+ oe_runmake install DESTDIR=${D}
+}
+
+COMPATIBLE_MACHINE = "(ls2088a|ls1088a)"
diff --git a/bsp/meta-freescale/recipes-dpaa2/management-complex/management-complex_10.12.0.bb b/bsp/meta-freescale/recipes-dpaa2/management-complex/management-complex_10.12.0.bb
new file mode 100644
index 00000000..6b5d0a87
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa2/management-complex/management-complex_10.12.0.bb
@@ -0,0 +1,40 @@
+SUMMARY = "DPAA2 Management Complex Firmware"
+LICENSE = "NXP-Binary-EULA"
+LIC_FILES_CHKSUM = "file://NXP-Binary-EULA.txt;md5=afcb1213054384820390d410ab62105f"
+
+inherit deploy fsl-eula-unpack
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+SRC_URI = "git://github.com/nxp/qoriq-mc-binary;fsl-eula=true;nobranch=1"
+SRCREV = "cdb5af4b25ec1ee3e9d26ece41efaa1556b28bac"
+
+S = "${WORKDIR}/git"
+
+REGLEX_ls2088a = "ls2088a"
+REGLEX_ls1088a = "ls1088a"
+REGLEX_lx2160a = "lx2160a"
+
+do_install () {
+ install -d ${D}/boot
+ install -m 755 ${S}/${REGLEX}/*.itb ${D}/boot
+}
+
+do_deploy () {
+ install -d ${DEPLOYDIR}/mc_app
+ install -m 755 ${S}/${REGLEX}/*.itb ${DEPLOYDIR}/mc_app
+ # make a symlink to the latest binary
+ for mc_binary in `ls ${DEPLOYDIR}/mc_app |sort`;do
+ ln -sfT ${mc_binary} ${DEPLOYDIR}/mc_app/mc.itb
+ done
+}
+addtask deploy before do_build after do_install
+
+PACKAGES += "${PN}-image"
+FILES_${PN}-image += "/boot"
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/bsp/meta-freescale/recipes-dpaa2/restool/restool/0001-restool-fix-build-error-with-gcc7.patch b/bsp/meta-freescale/recipes-dpaa2/restool/restool/0001-restool-fix-build-error-with-gcc7.patch
new file mode 100644
index 00000000..82ade02b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa2/restool/restool/0001-restool-fix-build-error-with-gcc7.patch
@@ -0,0 +1,24 @@
+From 895db76654c796a0edc6b2d329addde108b1755c Mon Sep 17 00:00:00 2001
+From: Chunrong Guo <chunrong.guo@nxp.com>
+Date: Wed, 19 Jul 2017 14:31:23 +0800
+Subject: [PATCH] restool: fix build error with gcc7
+
+---
+ Makefile | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 3976b66..df1e791 100644
+--- a/Makefile
++++ b/Makefile
+@@ -64,7 +64,6 @@ CFLAGS = ${EXTRA_CFLAGS} \
+ -Wmissing-prototypes \
+ -Wpointer-arith \
+ -Winline \
+- -Werror \
+ -Wundef \
+ -Icommon/
+
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-dpaa2/restool/restool_git.bb b/bsp/meta-freescale/recipes-dpaa2/restool/restool_git.bb
new file mode 100644
index 00000000..382e3144
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa2/restool/restool_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "DPAA2 Resource Manager Tool"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ec8d84e9cd4de287e290275d09db27f0"
+
+RDEPENDS_${PN} += "bash dtc"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/restool;nobranch=1 \
+ file://0001-restool-fix-build-error-with-gcc7.patch"
+
+SRCREV = "2b4dd211d5c584d5f81cfa530a3a93854dc1d490"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = 'CC="${CC}" EXTRA_CFLAGS="-Wno-missing-field-initializers -Wno-missing-braces"'
+
+do_install () {
+ oe_runmake install DESTDIR=${D}
+}
+
+COMPATIBLE_MACHINE = "(ls2080ardb|ls2088ardb|ls1088ardb|ls1043ardb|ls1046ardb)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/bsp/meta-freescale/recipes-dpaa2/spc/spc_git.bb b/bsp/meta-freescale/recipes-dpaa2/spc/spc_git.bb
new file mode 100644
index 00000000..eceabf91
--- /dev/null
+++ b/bsp/meta-freescale/recipes-dpaa2/spc/spc_git.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Soft Parser Configuration tool"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=163b09a1c249a6ff2b28da1ceca2e0a8"
+
+DEPENDS = "libxml2 fmlib tclap"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/spc;nobranch=1"
+SRCREV = "1a414247ad3228bf60bfb53995a28930a8a29acc"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = 'FMD_USPACE_HEADER_PATH="${STAGING_INCDIR}/fmd" \
+ FMD_USPACE_LIB_PATH="${STAGING_LIBDIR}" LIBXML2_HEADER_PATH="${STAGING_INCDIR}/libxml2" \
+ TCLAP_HEADER_PATH="${STAGING_INCDIR}" '
+EXTRA_OEMAKE_virtclass-native = 'FMCHOSTMODE=1 FMD_USPACE_HEADER_PATH="${STAGING_INCDIR}/fmd" \
+ FMD_USPACE_LIB_PATH="${STAGING_LIBDIR}" LIBXML2_HEADER_PATH="${STAGING_INCDIR}/libxml2" \
+ TCLAP_HEADER_PATH="${STAGING_INCDIR}" '
+
+EXTRA_OEMAKE_PLATFORM ?= ""
+
+do_compile () {
+ oe_runmake -C source
+}
+
+do_install () {
+ install -d ${D}/${bindir}
+ install -m 755 ${S}/source/spc ${D}/${bindir}
+
+ install -d ${D}${sysconfdir}/spc/config
+ install -m 644 ${S}${sysconfdir}/spc/config/* ${D}${sysconfdir}/spc/config
+
+}
+
+PARALLEL_MAKE = ""
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
diff --git a/bsp/meta-freescale/recipes-extended/dpdk/dpdk/0001-fix-gcc-8-build-error.patch b/bsp/meta-freescale/recipes-extended/dpdk/dpdk/0001-fix-gcc-8-build-error.patch
new file mode 100644
index 00000000..51987b53
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/dpdk/dpdk/0001-fix-gcc-8-build-error.patch
@@ -0,0 +1,51 @@
+From 7409d0b89f80a72d91e02dc9ec688a01723c3c66 Mon Sep 17 00:00:00 2001
+From: Chunrong Guo <chunrong.guo@nxp.com>
+Date: Wed, 4 Jul 2018 17:12:39 +0800
+Subject: [PATCH] fix gcc-8 build error
+
+Signed-off-by: Chunrong Guo <chunrong.guo@nxp.com>
+---
+ examples/ipsec-secgw/parser.c | 6 ++----
+ mk/toolchain/gcc/rte.vars.mk | 2 +-
+ 2 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/examples/ipsec-secgw/parser.c b/examples/ipsec-secgw/parser.c
+index 9d0ea46..b2b30e4 100644
+--- a/examples/ipsec-secgw/parser.c
++++ b/examples/ipsec-secgw/parser.c
+@@ -544,8 +544,7 @@ parse_cfg_file(const char *cfg_filename)
+ goto error_exit;
+ }
+
+- strncpy(str + strlen(str), oneline,
+- strlen(oneline));
++ strcpy(str + strlen(str), oneline);
+
+ continue;
+ }
+@@ -557,8 +556,7 @@ parse_cfg_file(const char *cfg_filename)
+ cfg_filename, line_num);
+ goto error_exit;
+ }
+- strncpy(str + strlen(str), oneline,
+- strlen(oneline));
++ strcpy(str + strlen(str), oneline);
+
+ str[strlen(str)] = '\n';
+ if (cmdline_parse(cl, str) < 0) {
+diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
+index 3b907e2..cc63da8 100644
+--- a/mk/toolchain/gcc/rte.vars.mk
++++ b/mk/toolchain/gcc/rte.vars.mk
+@@ -75,7 +75,7 @@ WERROR_FLAGS := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
+ WERROR_FLAGS += -Wmissing-declarations -Wold-style-definition -Wpointer-arith
+ WERROR_FLAGS += -Wcast-align -Wnested-externs -Wcast-qual
+ WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
+-WERROR_FLAGS += -Wundef -Wwrite-strings
++WERROR_FLAGS += -Wundef -Wwrite-strings -Wno-cast-function-type
+
+ ifeq ($(RTE_DEVEL_BUILD),y)
+ WERROR_FLAGS += -Werror
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-extended/dpdk/dpdk/add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch b/bsp/meta-freescale/recipes-extended/dpdk/dpdk/add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch
new file mode 100644
index 00000000..4657f070
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/dpdk/dpdk/add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch
@@ -0,0 +1,51 @@
+From 6c8d348190a8cf6c35111913cbf117ca98137e84 Mon Sep 17 00:00:00 2001
+From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+Date: Fri, 18 Dec 2015 18:30:47 +0800
+Subject: [PATCH] dpdk v2.2.0: add RTE_KERNELDIR_OUT to split kernel build
+ artifact
+
+Introduce RTE_KERNELDIR_OUT to be the path to which kernel build
+artifacts are located. This is for matching the workflow change
+since Yocto Project v1.8 onwards whereby tmp/work-shared contains
+separate directories for kernel source and kernel artifacts.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
+---
+ mk/rte.module.mk | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/mk/rte.module.mk b/mk/rte.module.mk
+index 53ed4fe..b7a014b 100644
+--- a/mk/rte.module.mk
++++ b/mk/rte.module.mk
+@@ -77,7 +77,7 @@ build: _postbuild
+ # build module
+ $(MODULE).ko: $(SRCS_LINKS)
+ @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
+- @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
++ @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
+ CC="$(KERNELCC)" CROSS_COMPILE=$(CROSS) V=$(if $V,1,0)
+
+ # install module in $(RTE_OUTPUT)/kmod
+@@ -88,7 +88,7 @@ $(RTE_OUTPUT)/kmod/$(MODULE).ko: $(MODULE).ko
+
+ # install module
+ modules_install:
+- @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
++ @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
+ modules_install
+
+ .PHONY: clean
+@@ -98,7 +98,7 @@ clean: _postclean
+ .PHONY: doclean
+ doclean:
+ @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
+- $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) clean
++ $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) clean
+ @$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\
+ if [ -h $(notdir $(FILE)) ]; then rm -f $(notdir $(FILE)) ; fi ;)
+ @if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi
+--
+1.9.1
diff --git a/bsp/meta-freescale/recipes-extended/dpdk/dpdk_17.11.bb b/bsp/meta-freescale/recipes-extended/dpdk/dpdk_17.11.bb
new file mode 100644
index 00000000..f9fe91e8
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/dpdk/dpdk_17.11.bb
@@ -0,0 +1,104 @@
+DESCRIPTION = "Data Plane Development Kit"
+HOMEPAGE = "http://dpdk.org"
+LICENSE = "BSD-3-Clause & LGPLv2 & GPLv2"
+LIC_FILES_CHKSUM = "file://license/README;md5=3383def2d4c82237df281174e981a492"
+
+DEPENDS += "virtual/kernel openssl"
+RDEPENDS_${PN} = "bash python"
+RDEPENDS_${PN}-examples = "bash python-core"
+
+inherit module
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/dpdk;nobranch=1 \
+ file://add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch \
+ file://0001-fix-gcc-8-build-error.patch \
+"
+SRCREV = "f451d2beff458833f4da6682694ebc5c03d595c6"
+
+S = "${WORKDIR}/git"
+
+DPAA_VER ?= "dpaa"
+export RTE_TARGET = "${ARCH}-${DPAA_VER}-linuxapp-gcc"
+export ETHTOOL_LIB_PATH = "${S}/examples/ethtool/lib/${RTE_TARGET}/"
+
+EXTRA_OEMAKE += 'ARCH="${ARCH}" CROSS="${TARGET_PREFIX}" \
+ CPU_CFLAGS="-fPIC --sysroot=${STAGING_DIR_HOST}" RTE_SDK="${S}" \
+ OPENSSL_PATH="${STAGING_DIR_HOST}" RTE_KERNELDIR="${STAGING_KERNEL_DIR}" \
+ RTE_KERNELDIR_OUT="${STAGING_KERNEL_BUILDDIR}" \
+'
+
+do_configure[noexec] = "1"
+
+do_compile[depends] += "virtual/kernel:do_shared_workdir"
+do_compile() {
+ oe_runmake O="${RTE_TARGET}" T="${RTE_TARGET}" config
+}
+
+do_install() {
+ unset LDFLAGS TARGET_LDFLAGS BUILD_LDFLAGS
+
+ oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" WERROR_FLAGS="-w" V=1 T="${RTE_TARGET}" DESTDIR="${D}" install CONFIG_RTE_EAL_IGB_UIO=n CONFIG_RTE_KNI_KMOD=y CONFIG_RTE_LIBRTE_PMD_OPENSSL=y
+
+ # Build and install the DPDK examples
+ for APP in examples/l2fwd examples/l3fwd examples/l2fwd-qdma examples/l2fwd-crypto examples/ipsec-secgw examples/kni examples/ip_fragmentation examples/ip_reassembly; do
+ temp=`basename ${APP}`
+ if [ ${temp} = "ipsec-secgw" ] || [ ${temp} = "l2fwd-crypto" ]; then
+ oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" -C ${APP} CONFIG_RTE_LIBRTE_PMD_OPENSSL=y
+ else
+ oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" EXTRA_CFLAGS="--sysroot=${STAGING_DIR_HOST} -I${STAGING_INCDIR}" -C ${APP}
+ fi
+
+ [ ! -d ${D}/${bindir}/dpdk-example ] && install -d 0644 ${D}/${bindir}/dpdk-example
+ install -m 0755 ${S}/examples/`basename ${APP}`/build/`basename ${APP}` \
+ ${D}/${bindir}/dpdk-example/
+ done
+ oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" -C examples/vhost
+ install -m 0755 ${S}/examples/vhost/build/vhost-switch ${D}/${bindir}/dpdk-example/
+ oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" -C examples/cmdif
+
+ install -d 0644 ${D}/usr/share/dpdk/cmdif/include
+ install -d 0644 ${D}/usr/share/dpdk/cmdif/lib
+ cp examples/cmdif/lib/client/fsl_cmdif_client.h examples/cmdif/lib/server/fsl_cmdif_server.h \
+ examples/cmdif/lib/shbp/fsl_shbp.h ${D}/usr/share/dpdk/cmdif/include
+ cp examples/cmdif/lib/${RTE_TARGET}/librte_cmdif.a ${D}/usr/share/dpdk/cmdif/lib
+
+ install -m 0755 ${S}/${RTE_TARGET}/app/testpmd ${D}/${bindir}/dpdk-example/
+ rm -fr ${D}/lib/modules/*
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/dpdk
+ install -m 0755 ${S}/${RTE_TARGET}/kmod/rte_kni.ko ${D}/lib/modules/${KERNEL_VERSION}/dpdk/
+ install -d ${D}/${bindir}/dpdk-example/extras
+ cp -rf ${S}/nxp/* ${D}/${bindir}/dpdk-example/extras/
+ rm ${D}/${datadir}/${RTE_TARGET}/app/dpdk-pmdinfogen
+
+ chown root:root -R ${D}
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+PACKAGES += "${PN}-examples"
+
+FILES_${PN} += "${datadir}/* ${bindir}/* ${sbindir}/* /usr/share/dpdk/cmdif/include/*"
+FILES_${PN}-dbg += "${bindir}/dpdk-example/.debug \
+ ${datadir}/examples/kni/build/.debug \
+ ${datadir}/examples/kni/build/app/.debug \
+ ${datadir}/examples/l2fwd/build/.debug \
+ ${datadir}/examples/l2fwd/build/app/.debug \
+ ${datadir}/examples/l2fwd-crypto/build/.debug \
+ ${datadir}/examples/l2fwd-crypto/build/app/.debug \
+ ${datadir}/examples/l3fwd/build/.debug \
+ ${datadir}/examples/l3fwd/build/app/.debug \
+ ${datadir}/examples/ipsec-secgw/build/.debug \
+ ${datadir}/examples/ipsec-secgw/build/app/.debug \
+ ${datadir}/examples/ip_fragmentation/build/.debug \
+ ${datadir}/examples/ip_fragmentation/build/app/.debug \
+ ${datadir}/examples/ip_reassembly/build/.debug \
+ ${datadir}/examples/ip_reassembly/build/app/.debug \
+"
+FILES_${PN}-dev += "${datadir}/mk ${datadir}/scripts \
+ ${datadir}/${RTE_TARGET} \
+ ${includedir} \
+"
+FILES_${PN}-examples += "${datadir}/examples"
+
+FILES_${PN}-staticdev += "/usr/share/dpdk/cmdif/lib/*.a"
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-extended/hyperrelay/hyperrelay_git.bb b/bsp/meta-freescale/recipes-extended/hyperrelay/hyperrelay_git.bb
new file mode 100644
index 00000000..29056c55
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/hyperrelay/hyperrelay_git.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "Userspace proxy agent for Code Warrrior HyperTrk"
+LICENSE = "Freescale-EULA"
+LIC_FILES_CHKSUM = "file://EULA;md5=c9ae442cf1f9dd6c13dfad64b0ffe73f"
+
+inherit fsl-eula-unpack
+
+SRC_URI = "git://git.freescale.com/ppc/sdk/hyperrelay.git;fsl-eula=true;branch=sdk-v2.0.x"
+SRCREV = "925af97359c2b86399561f1f97f2cb6ca0ccd344"
+
+S = "${WORKDIR}/git"
+
+CFLAGS += "\
+ -Wall \
+ -Wundef \
+ -Wstrict-prototypes \
+ -Wno-trigraphs \
+ -fno-strict-aliasing \
+ -fno-common \
+ -O2 \
+ -g \
+ -fmessage-length=0 \
+ -MMD \
+ -MP \
+ -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" \
+"
+
+LDFLAGS_prepend = " -lpthread "
+
+do_install() {
+ install -d ${D}${bindir}
+ oe_runmake install DESTDIR=${D}
+}
+
+COMPATIBLE_MACHINE = "(qoriq-ppc)"
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+INSANE_SKIP_${PN} = "ldflags"
diff --git a/bsp/meta-freescale/recipes-extended/ipc-ust/ipc-ust/Makefile-use-LDFLAGS-if-set.patch b/bsp/meta-freescale/recipes-extended/ipc-ust/ipc-ust/Makefile-use-LDFLAGS-if-set.patch
new file mode 100644
index 00000000..e991f70a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/ipc-ust/ipc-ust/Makefile-use-LDFLAGS-if-set.patch
@@ -0,0 +1,86 @@
+From 4c0accfce78610e21f5d9b75725a0b9fa2c6cfb9 Mon Sep 17 00:00:00 2001
+From: Ting Liu <ting.liu@nxp.com>
+Date: Fri, 12 Aug 2016 10:41:51 +0800
+Subject: [PATCH] Makefile: use LDFLAGS if set
+
+Signed-off-by: Ting Liu <ting.liu@nxp.com>
+---
+ dsp_boot/Makefile | 6 +++---
+ fsl_shm/Makefile | 4 ++--
+ ipc/Makefile | 14 +++++++-------
+ 3 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/dsp_boot/Makefile b/dsp_boot/Makefile
+index 8f30076..59eb648 100644
+--- a/dsp_boot/Makefile
++++ b/dsp_boot/Makefile
+@@ -20,12 +20,12 @@ endif
+ all: fsl_shm lib_dsp_boot dsp_bt
+ lib_dsp_boot:
+ $(CC) -c ./libdspboot.c $(CFLAGS) -o ./libdspboot.o
+- $(CC) -shared -fPIC ./libdspboot.o -o libdspboot.so
++ $(CC) -shared -fPIC $(LDFLAGS) ./libdspboot.o -o libdspboot.so
+ $(AR) rcs libdspboot.a ./libdspboot.o ../fsl_shm/lib/lg_shm.o
+ fsl_shm:
+- $(CC) -c $(CFLAGS) $(SOURCES_FSL_SHM)
++ $(CC) -c $(CFLAGS) $(LDFLAGS) $(SOURCES_FSL_SHM)
+ dsp_bt:
+- $(CC) $(CFLAGS) $(SOURCES) $(SOURCES_FSL_SHM) -L. -ldspboot -L../ipc -lipc -o $@
++ $(CC) $(CFLAGS) $(LDFLAGS) $(SOURCES) $(SOURCES_FSL_SHM) -L. -ldspboot -L../ipc -lipc -o $@
+ cp libdspboot.so ../ipc/ -v
+ clean:
+ rm -rf *.o dsp_bt libdspboot.so *.a
+diff --git a/fsl_shm/Makefile b/fsl_shm/Makefile
+index 0042055..0b9f581 100644
+--- a/fsl_shm/Makefile
++++ b/fsl_shm/Makefile
+@@ -4,11 +4,11 @@ CFLAGS=-fPIC -I ./lib -I ./include -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -W
+
+ all: lg_shm_lib lg_shm_test
+ lg_shm_lib:
+- $(CC) -c ./lib/lg_shm.c $(CFLAGS) -o ./lib/lg_shm.o
++ $(CC) -c ./lib/lg_shm.c $(CFLAGS) $(LDFLAGS) -o ./lib/lg_shm.o
+ $(AR) rcs liblg_shm.a ./lib/lg_shm.o
+
+ lg_shm_test:
+- $(CC) ./test/app.c $(CFLAGS) -L. -llg_shm -o app
++ $(CC) ./test/app.c $(CFLAGS) $(LDFLAGS) -L. -llg_shm -o app
+
+ clean:
+ rm -rf app ./lib/*.o *.a
+diff --git a/ipc/Makefile b/ipc/Makefile
+index 06599f6..cbb63d6 100644
+--- a/ipc/Makefile
++++ b/ipc/Makefile
+@@ -29,21 +29,21 @@ ipc_lib:
+ $(CC) -c ./lib/fsl_user_dma.c $(CFLAGS) -o ./lib/fsl_user_dma.o
+ $(CC) -c ./lib/fsl_ipc_lock.c $(CFLAGS) -o ./lib/fsl_ipc_lock.o
+ $(CC) -c ../dsp_boot/libdspboot.c $(CFLAGS2) -o ../dsp_boot/libdspboot.o
+- $(CC) -shared -fPIC -lpthread ./lib/fsl_user_dma.o ./lib/fsl_ipc_channel.o ./lib/fsl_ipc_lock.o ../dsp_boot/libdspboot.o -L../fsl_shm -llg_shm -o libipc.so
++ $(CC) -shared -fPIC -lpthread $(LDFLAGS) ./lib/fsl_user_dma.o ./lib/fsl_ipc_channel.o ./lib/fsl_ipc_lock.o ../dsp_boot/libdspboot.o -L../fsl_shm -llg_shm -o libipc.so
+ $(AR) rcs libipc.a ./lib/fsl_ipc_channel.o ./lib/fsl_ipc_lock.o ../dsp_boot/libdspboot.o ./lib/fsl_user_dma.o ../fsl_shm/lib/lg_shm.o
+
+ mem_lib:
+ $(CC) -c ./lib/fsl_usmmgr.c $(CFLAGS) -o ./lib/fsl_usmmgr.o
+ $(CC) -c ./lib/fsl_ipc_lock.c $(CFLAGS) -o ./lib/fsl_ipc_lock.o
+- $(CC) -shared -fPIC ./lib/fsl_usmmgr.o ./lib/fsl_ipc_lock.o -L../fsl_shm -llg_shm -o libmem.so
++ $(CC) -shared -fPIC $(LDFLAGS) ./lib/fsl_usmmgr.o ./lib/fsl_ipc_lock.o -L../fsl_shm -llg_shm -o libmem.so
+ $(AR) rcs libmem.a ./lib/fsl_usmmgr.o ./lib/fsl_ipc_lock.o ../fsl_shm/lib/lg_shm.o
+
+ ipc_test:
+- $(CC) ./test/ipc_test.c $(CFLAGS) -L. -lipc -lmem -o ipc_test
+- $(CC) ./test/ipc_test67.c $(CFLAGS) -L. -lipc -lmem -o ipc_test67
+- $(CC) ./test/dsp_recover.c $(CFLAGS) -L. -lipc -lmem -o dsp_recover
+- $(CC) ./test/l1_defense_app.c $(CFLAGS) -L. -lipc -lmem -o l1d_app
+- $(CC) ./test/fsl_dump_memory.c $(CFLAGS) -L. -lipc -lmem -o dump_mem
++ $(CC) ./test/ipc_test.c $(CFLAGS) $(LDFLAGS) -L. -lipc -lmem -o ipc_test
++ $(CC) ./test/ipc_test67.c $(CFLAGS) $(LDFLAGS) -L. -lipc -lmem -o ipc_test67
++ $(CC) ./test/dsp_recover.c $(CFLAGS) $(LDFLAGS) -L. -lipc -lmem -o dsp_recover
++ $(CC) ./test/l1_defense_app.c $(CFLAGS) $(LDFLAGS) -L. -lipc -lmem -o l1d_app
++ $(CC) ./test/fsl_dump_memory.c $(CFLAGS) $(LDFLAGS) -L. -lipc -lmem -o dump_mem
+
+ clean:
+ rm -rf dump_mem ipc_test ipc_test67 dsp_recover l1d_app ./lib/*.o *.a *.so
+--
+1.9.2
+
diff --git a/bsp/meta-freescale/recipes-extended/ipc-ust/ipc-ust_git.bb b/bsp/meta-freescale/recipes-extended/ipc-ust/ipc-ust_git.bb
new file mode 100644
index 00000000..df496c28
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/ipc-ust/ipc-ust_git.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Linux IPC Userspace Tool"
+DESCRIPTION = "DSP boot application and ipc test application"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fa38cd73d71527dc6efb546474f64d10"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/ipc;branch=nxp/sdk-v2.0.x \
+ file://Makefile-use-LDFLAGS-if-set.patch \
+"
+SRCREV = "74d662707558290f070f9589177db730444bc435"
+
+S = "${WORKDIR}/git"
+
+# workaround for issue of parallel build, required a actual fix in ipc source
+PARALLEL_MAKE = ""
+
+EXTRA_OEMAKE = 'CROSS_COMPILE="${TARGET_PREFIX}" CC="${CC}" AR="${AR}" B4860=1'
+
+do_install () {
+ install -d ${D}${bindir}
+ install -d ${D}${includedir}
+ install -d ${D}/ipc
+ install -m 755 ${S}/dsp_boot/dsp_bt ${D}/ipc
+ install -m 755 ${S}/ipc/ipc_test ${D}/ipc
+ install -m 755 ${S}/ipc/ipc_test67 ${D}/ipc
+ install -m 755 ${S}/ipc/l1d_app ${D}/ipc
+ install -m 755 ${S}/fsl_shm/app ${D}${bindir}/lg_shm_test
+ install -d ${D}${base_libdir}
+ install -m 755 ${S}/ipc/libipc.so ${D}${base_libdir}
+ install -m 755 ${S}/ipc/libmem.so ${D}${base_libdir}
+ install -m 755 ${S}/ipc/libdspboot.so ${D}${base_libdir}
+ install -d ${D}${includedir}/ipc
+ install -d ${D}${includedir}/ipc/ipc/include
+ install -d ${D}${includedir}/ipc/fsl_shm/lib
+ install ${S}/ipc/include/*.h ${D}${includedir}/ipc/ipc/include
+ install ${S}/dsp_boot/*.h ${D}${includedir}/ipc/ipc/include
+ install ${S}/kernel/fsl_ipc_types.h ${D}${includedir}/ipc/ipc/include
+ install ${S}/kernel/fsl_heterogeneous_common.h ${D}${includedir}/ipc/ipc/include
+ install ${S}/kernel/fsl_heterogeneous_l1_defense.h ${D}${includedir}/ipc/ipc/include
+ install ${S}/fsl_shm/include/*.h ${D}${includedir}/ipc/ipc/include
+ install ${S}/fsl_shm/lib/*.h ${D}${includedir}/ipc/fsl_shm/lib
+}
+
+FILES_${PN} += "${base_libdir}/*.so /ipc/*"
+FILES_${PN}-dev = "${includedir}"
+FILES_${PN}-dbg += "/ipc/.debug"
+
+INSANE_SKIP_${PN} += "file-rdeps"
+INSANE_SKIP_${PN}-dev += "dev-elf"
+
+COMPATIBLE_MACHINE = "(b4860qds|b4420qds)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/bsp/meta-freescale/recipes-extended/libpkcs11/libpkcs11_git.bb b/bsp/meta-freescale/recipes-extended/libpkcs11/libpkcs11_git.bb
new file mode 100644
index 00000000..2a579c7b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/libpkcs11/libpkcs11_git.bb
@@ -0,0 +1,37 @@
+DESCRIPTION = "PKCS library"
+LICENSE = "GPLv2 & BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=803852533e29eb1d6d5e55ad3078b625"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/libpkcs11;nobranch=1"
+SRCREV = "efd15b9fb6ecc453eb933ac28ef1741b989f842d"
+
+DEPENDS = "openssl secure-obj"
+
+S = "${WORKDIR}/git"
+
+WRAP_TARGET_PREFIX ?= "${TARGET_PREFIX}"
+export CROSS_COMPILE_HOST = "${CROSS_COMPILE}"
+export CROSS_COMPILE_TA = "${CROSS_COMPILE}"
+
+CFLAGS += "-fPIC"
+
+EXTRA_OEMAKE = 'CC="${CC}" LD="${CC}" CFLAGS="${CFLAGS}"'
+
+do_compile() {
+ export OPENSSL_PATH="${RECIPE_SYSROOT}/usr"
+ export CROSS_COMPILE="${WRAP_TARGET_PREFIX}"
+ oe_runmake all
+}
+
+do_install(){
+ mkdir -p ${D}/${libdir}
+ mkdir -p ${D}/${includedir} ${D}/${bindir}
+ cp ${S}/out/export/lib/libpkcs11.so ${D}/${libdir}
+ cp ${S}/out/export/include/*.h ${D}/${includedir}
+ cp ${S}/out/export/app/pkcs11_app ${D}/${bindir}
+}
+
+PARALLEL_MAKE = ""
+INSANE_SKIP_${PN} = "ldflags dev-deps"
+INSANE_SKIP_${PN}-dev = "ldflags dev-elf"
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
diff --git a/bsp/meta-freescale/recipes-extended/merge-files/merge-files/merge/README b/bsp/meta-freescale/recipes-extended/merge-files/merge-files/merge/README
new file mode 100644
index 00000000..8f0d85af
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/merge-files/merge-files/merge/README
@@ -0,0 +1,7 @@
+This package is used to merge specified files into rootfs.
+
+Steps:
+1> copy files to recipes-*/merge-files/merge-files/merge/
+2> add 'IMAGE_INSTALL += "merge-files"' into rootfs recipe
+3> bitbake <rootfs_image_type>
+
diff --git a/bsp/meta-freescale/recipes-extended/merge-files/merge-files_1.0.bb b/bsp/meta-freescale/recipes-extended/merge-files/merge-files_1.0.bb
new file mode 100644
index 00000000..6fe5b637
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/merge-files/merge-files_1.0.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Merge prebuilt/extra files into rootfs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+inherit allarch
+
+SRC_URI = "file://merge"
+S = "${WORKDIR}"
+
+MERGED_DST ?= "${ROOT_HOME}"
+do_install () {
+ install -d ${D}/${MERGED_DST}
+ find ${WORKDIR}/merge/ -maxdepth 1 -mindepth 1 -not -name README \
+ -exec cp -fr '{}' ${D}/${MERGED_DST}/ \;
+ find ${WORKDIR}/merge/ -maxdepth 1 -mindepth 1 -exec rm -fr '{}' \;
+}
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+FILES_${PN} = "/*"
+ALLOW_EMPTY_${PN} = "1"
+INSANE_SKIP_${PN} = "debug-files dev-so"
diff --git a/bsp/meta-freescale/recipes-extended/odp/odp-counters_git.bb b/bsp/meta-freescale/recipes-extended/odp/odp-counters_git.bb
new file mode 100644
index 00000000..860dd5fa
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/odp/odp-counters_git.bb
@@ -0,0 +1,14 @@
+require odp.inc
+
+inherit module
+
+do_compile_prepend () {
+ export KERNEL_PATH="${STAGING_KERNEL_DIR}"
+ export KERNEL_CFG_PATH="${STAGING_KERNEL_BUILDDIR}"
+ cd ${S}/test/debug/perf_counters
+}
+
+do_install () {
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/odp
+ install -m 755 ${S}/test/debug/perf_counters/odpfsl_perfcounters.ko ${D}/lib/modules/${KERNEL_VERSION}/odp
+}
diff --git a/bsp/meta-freescale/recipes-extended/odp/odp-module_git.bb b/bsp/meta-freescale/recipes-extended/odp/odp-module_git.bb
new file mode 100644
index 00000000..46b89654
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/odp/odp-module_git.bb
@@ -0,0 +1,16 @@
+require odp.inc
+
+inherit module
+
+do_compile_prepend () {
+ export KERNEL_PATH="${STAGING_KERNEL_DIR}"
+ export KERNEL_CFG_PATH="${STAGING_KERNEL_BUILDDIR}"
+ cd ${S}/kern
+}
+
+do_install () {
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/odp
+ install -m 755 ${S}/kern/odpfsl_kni.ko ${D}/lib/modules/${KERNEL_VERSION}/odp
+}
+
+PKG_${PN} = "kernel-module-${PN}"
diff --git a/bsp/meta-freescale/recipes-extended/odp/odp.inc b/bsp/meta-freescale/recipes-extended/odp/odp.inc
new file mode 100644
index 00000000..129f77ae
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/odp/odp.inc
@@ -0,0 +1,26 @@
+SUMMARY = "Open Data Plane Interface Implementation"
+DESCRIPTION = "OpenDataPlane (ODP) provides a data plane application programming \
+ environment that is easy to use, high performance, and portable between networking SoCs."
+HOMEPAGE = "http://www.opendataplane.org"
+SECTION = "console/network"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ca6103dc75397fb6bec596187d6b7829"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/odp:"
+
+SRC_URI = " \
+git://source.codeaurora.org/external/qoriq/qoriq-components/odp;nobranch=1 \
+git://source.codeaurora.org/external/qoriq/qoriq-components/qbman_userspace;nobranch=1;name=qbman;destsuffix=git/platform/linux-dpaa2/flib/qbman \
+git://source.codeaurora.org/external/qoriq/qoriq-components/flib;nobranch=1;name=rta;destsuffix=git/platform/linux-dpaa2/flib/rta \
+"
+
+SRC_URI += "file://0001-Fix-this-build-error.patch"
+
+SRCREV = "0bda2c9736a72ef41a411e193bc31487ecce6731"
+
+SRCREV_qbman = "75ff61a7ca6acdbdbb780161b053cbcbc990f1be"
+SRCREV_rta = "bbab28b03ae21c52ce913f8b052acf53bd24ff5d"
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_MACHINE = "(ls1043a|ls1046a|ls2080a|ls2088a|ls1088a)"
diff --git a/bsp/meta-freescale/recipes-extended/odp/odp/0001-Fix-this-build-error.patch b/bsp/meta-freescale/recipes-extended/odp/odp/0001-Fix-this-build-error.patch
new file mode 100644
index 00000000..fd276437
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/odp/odp/0001-Fix-this-build-error.patch
@@ -0,0 +1,28 @@
+From 9fb1642b38053de6e8098f6b608ad86ff45bf7f7 Mon Sep 17 00:00:00 2001
+From: Chunrong Guo <chunrong.guo@nxp.com>
+Date: Fri, 28 Jul 2017 14:59:22 +0800
+Subject: [PATCH] Fix this build error
+
+fix the below error:
+|error: 'SIGEV_THREAD' undeclared (first use in this function); did you mean 'CLONE_THREAD'?
+
+Signed-off-by: Chunrong Guo <B40290@freescale.com>
+---
+ example/lpm-ipfwd/app/odp_lpmfwd.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/example/lpm-ipfwd/app/odp_lpmfwd.c b/example/lpm-ipfwd/app/odp_lpmfwd.c
+index 57c5e82..f8507be 100644
+--- a/example/lpm-ipfwd/app/odp_lpmfwd.c
++++ b/example/lpm-ipfwd/app/odp_lpmfwd.c
+@@ -23,6 +23,7 @@
+ #include <errno.h>
+ #include <error.h>
+ #include <mqueue.h>
++#include <signal.h>
+
+ #include <example_debug.h>
+
+--
+1.8.3.2
+
diff --git a/bsp/meta-freescale/recipes-extended/odp/odp_git.bb b/bsp/meta-freescale/recipes-extended/odp/odp_git.bb
new file mode 100644
index 00000000..00575e24
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/odp/odp_git.bb
@@ -0,0 +1,63 @@
+require odp.inc
+
+inherit autotools-brokensep
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+DEPENDS = "openssl cunit libxml2"
+
+RDEPENDS_${PN} = "bash libcrypto libssl odp-module odp-counters"
+
+ODP_SOC ?= ""
+ODP_SOC_ls1043ardb = "LS1043"
+ODP_SOC_ls1046ardb = "LS1046"
+ODP_PLATFORM ?= "linux-dpaa2"
+ODP_BUILD_TYPE ?= "ls2088"
+ODP_BUILD_TYPE_ls1043ardb = "ls1043"
+ODP_BUILD_TYPE_ls1046ardb = "ls1046"
+ODP_BUILD_TYPE_ls2080ardb = "ls2080"
+ODP_BUILD_TYPE_ls1088ardb = "ls1088"
+
+EXTRA_OECONF = "--with-platform=${ODP_PLATFORM} \
+ --enable-test-vald \
+ --enable-test-perf \
+ --enable-test-cpp \
+"
+
+EXTRA_OEMAKE = "CROSS_COMPILE="${TARGET_PREFIX}" \
+ SYSROOT="${STAGING_DIR_TARGET}" \
+"
+
+CFLAGS += "-Wno-format-truncation -Wno-maybe-uninitialized -Wno-implicit-fallthrough -Wno-cpp -Wno-cast-function-type \
+ -Wno-stringop-truncation \
+"
+
+PACKAGECONFIG[perf] = "--enable-test-perf,,,"
+
+do_configure_prepend () {
+ export SOC=${ODP_SOC}
+ ${S}/bootstrap
+}
+
+do_compile_prepend () {
+ export SOC=${ODP_SOC}
+ export ARCH=${TUNE_ARCH}
+}
+
+do_install_append () {
+ install -d ${D}${includedir}/odp/kni
+ install -d ${D}${includedir}/odp/kern
+ install -d ${D}${includedir}/odp/flib/mc
+ install -d ${D}${includedir}/odp/flib/qbman/include/drivers
+
+ cp -rf ${S}/platform/linux-dpaa2/include/* ${D}${includedir}/odp/
+ cp -rf ${S}/platform/linux-dpaa2/kni/*.h ${D}${includedir}/odp/kni/
+ cp -rf ${S}/kern/*.h ${D}${includedir}/odp/kern/
+ cp -rf ${S}/platform/linux-dpaa2/flib/mc/*.h ${D}${includedir}/odp/flib/mc/
+
+ sed -i -e 's#platform/linux-dpaa2/##g' ${D}${includedir}/odp/kern/*.h
+}
+
+FILES_${PN}-staticdev += "${datadir}/opendataplane/*.la"
+FILES_${PN} += "/usr/odp/bin /usr/odp/scripts /usr/odp/debug /usr/odp/test/validation /usr/odp/test/performance /usr/odp/test/miscellaneous /usr/odp/test/api_test"
+FILES_${PN}-dbg += "/usr/odp/bin/.debug /usr/odp/debug/.debug /usr/odp/test/validation/.debug /usr/odp/test/performance/.debug /usr/odp/test/miscellaneous/.debug /usr/odp/test/api_test/.debug"
diff --git a/bsp/meta-freescale/recipes-extended/ofp/ofp_git.bb b/bsp/meta-freescale/recipes-extended/ofp/ofp_git.bb
new file mode 100644
index 00000000..c76eafd7
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/ofp/ofp_git.bb
@@ -0,0 +1,37 @@
+SUMMARY = "An open source user space fast path TCP/IP stack"
+DESCRIPTION = "openfastpath is used to enable accelerated routing/forwarding for IPv4 and IPv6, \
+ tunneling and termination for a variety of protocols."
+HOMEPAGE = "http://www.openfastpath.org"
+SECTION = "console/network"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fbe4957c430eed6cc20521d4eb429fae"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/ofp;nobranch=1"
+
+SRCREV = "fe66f4659f7d356f7aa73a8fb32fcf67c6cf1108"
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+DEPENDS = "odp"
+
+EXTRA_OECONF = " \
+ --prefix=/usr \
+ --libdir=${libdir} \
+ --host=${SIMPLE_TARGET_SYS} \
+ --with-odp=${STAGING_DIR_TARGET} \
+"
+
+do_configure () {
+ export SIMPLE_TARGET_SYS="$(echo ${TARGET_SYS} | sed s:${TARGET_VENDOR}::g)"
+
+ ${S}/bootstrap
+ ${S}/configure ${EXTRA_OECONF}
+}
+
+FILES_${PN} += "/usr/ofp/bin"
+FILES_${PN}-dbg += "/usr/ofp/bin/.debug"
+COMPATIBLE_MACHINE = "(ls2088a|ls1088a)"
diff --git a/bsp/meta-freescale/recipes-extended/ovs-dpdk/ovs-dpdk_2.9.bb b/bsp/meta-freescale/recipes-extended/ovs-dpdk/ovs-dpdk_2.9.bb
new file mode 100644
index 00000000..ab351f6c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/ovs-dpdk/ovs-dpdk_2.9.bb
@@ -0,0 +1,48 @@
+DESCRIPTION = "OVS DPDK"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=17b2c9d4c70853a09c0e143137754b35"
+
+DEPENDS = "dpdk python-six-native coreutils-native"
+RDEPENDS_${PN} = "bash libcrypto libssl python"
+
+inherit pythonnative
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/ovs-dpdk;nobranch=1"
+SRCREV = "24eec4133f03b0a5a8f903577bc87603577150c0"
+
+S = "${WORKDIR}/git"
+
+DPAA_VER ?= "dpaa"
+export RTE_TARGET = "${ARCH}-${DPAA_VER}-linuxapp-gcc"
+
+EXTRA_OEMAKE += 'ARCH="${ARCH}" CROSS="${TARGET_PREFIX}" \
+ CPU_CFLAGS="--sysroot=${STAGING_DIR_HOST}" RTE_SDK="${S}" \
+ OPENSSL_PATH="${STAGING_DIR_HOST}" RTE_KERNELDIR="${STAGING_KERNEL_DIR}" \
+ RTE_KERNELDIR_OUT="${STAGING_KERNEL_BUILDDIR}" \
+'
+
+do_configure() {
+ export SYSROOT_DPDK=${PKG_CONFIG_SYSROOT_DIR}
+ ${S}/boot.sh
+ ${S}/configure --host aarch64-fsl-linux --with-dpdk=${SYSROOT_DPDK}/usr/share/${RTE_TARGET} --with-openssl=${SYSROOT_DPDK}/usr CFLAGS="-g -Wno-cast-align -Ofast"
+}
+
+do_compile() {
+ oe_runmake O="${RTE_TARGET}" T="${RTE_TARGET}"
+}
+
+do_install() {
+ install -d ${D}${bindir}/ovs-dpdk
+ cp -rf ${S}/ovsdb/ovsdb-tool ${D}${bindir}/ovs-dpdk
+ cp -rf ${S}/ovsdb/ovsdb-server ${D}${bindir}/ovs-dpdk
+ cp -rf ${S}/vswitchd/vswitch.ovsschema ${D}${bindir}/ovs-dpdk
+ cp -rf ${S}/vswitchd/ovs-vswitchd ${D}${bindir}/ovs-dpdk
+ cp -rf ${S}/utilities/ovs-vsctl ${D}${bindir}/ovs-dpdk
+ cp -rf ${S}/utilities/ovs-ofctl ${D}${bindir}/ovs-dpdk
+ chmod 777 -R ${D}${bindir}/ovs-dpdk/*
+}
+
+ALLOW_EMPTY_${PN} = "1"
+INHIBIT_PACKAGE_STRIP = "1"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE = "(ls2080ardb|ls2084ardb|ls2088a|ls1043a|ls1046a|ls1088a)"
diff --git a/bsp/meta-freescale/recipes-extended/pktgen-dpdk/pktgen-dpdk_git.bb b/bsp/meta-freescale/recipes-extended/pktgen-dpdk/pktgen-dpdk_git.bb
new file mode 100644
index 00000000..0a6d97de
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/pktgen-dpdk/pktgen-dpdk_git.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "PKTGEN DPDK"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8120b89a783571da3cb492c35ac6b1f9"
+
+DEPENDS += "libpcap dpdk"
+
+SRC_URI = "git://dpdk.org/git/apps/pktgen-dpdk;protocol=http;nobranch=1"
+SRCREV = "ffbe7becf8dd75fd7d46b97b10374531878cb9c5"
+
+S = "${WORKDIR}/git"
+
+DPAA_VER ?= "dpaa"
+export RTE_TARGET = "arm64-${DPAA_VER}-linuxapp-gcc"
+export RTE_SDK = "${RECIPE_SYSROOT}/usr/share"
+
+EXTRA_OEMAKE += 'CC="${CC}" LD="${LD}" RTE_SDK="${RECIPE_SYSROOT}/usr/share" RTE_TARGET="arm64-${DPAA_VER}-linuxapp-gcc"'
+
+do_compile() {
+ unset LDFLAGS TARGET_LDFLAGS BUILD_LDFLAGS
+ oe_runmake
+}
+
+do_install() {
+ install -d ${D}${bindir}/
+ cp -f ${S}/app/arm64-dpaa-linuxapp-gcc/pktgen ${D}${bindir}/
+ cp -f ${S}/Pktgen.lua ${D}${bindir}/
+}
+
+INSANE_SKIP_${PN} = "ldflags"
+INHIBIT_PACKAGE_STRIP = "1"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+PARALLEL_MAKE = ""
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
diff --git a/bsp/meta-freescale/recipes-extended/procps/procps_%.bbappend b/bsp/meta-freescale/recipes-extended/procps/procps_%.bbappend
new file mode 100644
index 00000000..face0ccc
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/procps/procps_%.bbappend
@@ -0,0 +1,9 @@
+do_install_append_qoriq-ppc() {
+ for keyword in \
+ net.ipv4.conf.default.rp_filter \
+ net.ipv4.conf.all.rp_filter \
+ ; do
+ sed -i 's,'"$keyword"'=.*,'"$keyword"'=0,' ${D}${sysconfdir}/sysctl.conf
+ done
+}
+
diff --git a/bsp/meta-freescale/recipes-extended/secure-obj/secure-obj-module_git.bb b/bsp/meta-freescale/recipes-extended/secure-obj/secure-obj-module_git.bb
new file mode 100644
index 00000000..3866dde4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/secure-obj/secure-obj-module_git.bb
@@ -0,0 +1,11 @@
+require secure-obj.inc
+
+LIC_FILES_CHKSUM = "file://../README;md5=82b72e88f23cded9dd23f0fb1790b8d2"
+
+DEPENDS += "virtual/kernel"
+
+inherit module
+
+S = "${WORKDIR}/git/securekeydev"
+
+EXTRA_OEMAKE += 'KERNEL_SRC="${STAGING_KERNEL_DIR}"'
diff --git a/bsp/meta-freescale/recipes-extended/secure-obj/secure-obj.inc b/bsp/meta-freescale/recipes-extended/secure-obj/secure-obj.inc
new file mode 100644
index 00000000..20341261
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/secure-obj/secure-obj.inc
@@ -0,0 +1,28 @@
+DESCRIPTION = "Secure Object"
+LICENSE = "BSD"
+
+DEPENDS = "openssl optee-os-qoriq optee-client-qoriq"
+RDEPENDS_${PN} = "bash libcrypto libssl python"
+
+DEPENDS += "python-pycrypto-native"
+
+inherit pythonnative
+
+LDFLAGS += "${TOOLCHAIN_OPTIONS}"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/secure_obj;nobranch=1 \
+"
+SRCREV = "bc0553a3c7a02555eb6bf46803854f6b49227a26"
+
+WRAP_TARGET_PREFIX ?= "${TARGET_PREFIX}"
+export SECURE_STORAGE_PATH = "${S}/secure_storage_ta/ta/"
+export OPTEE_CLIENT_EXPORT = "${RECIPE_SYSROOT}/usr"
+
+EXTRA_OEMAKE = 'CC="${CC}" LD="${CC}"'
+
+ALLOW_EMPTY_${PN} = "1"
+INHIBIT_PACKAGE_STRIP = "1"
+PARALLEL_MAKE = ""
+INSANE_SKIP_${PN} = "ldflags"
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
+DEBUG_BUILD = "1"
diff --git a/bsp/meta-freescale/recipes-extended/secure-obj/secure-obj_git.bb b/bsp/meta-freescale/recipes-extended/secure-obj/secure-obj_git.bb
new file mode 100644
index 00000000..d85d7298
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/secure-obj/secure-obj_git.bb
@@ -0,0 +1,44 @@
+require secure-obj.inc
+
+LIC_FILES_CHKSUM = "file://README;md5=82b72e88f23cded9dd23f0fb1790b8d2"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_{PN} += "secure-obj-module"
+
+WRAP_TARGET_PREFIX ?= "${TARGET_PREFIX}"
+export SECURE_STORAGE_PATH = "${S}/secure_storage_ta/ta/"
+export OPTEE_CLIENT_EXPORT = "${RECIPE_SYSROOT}/usr"
+export CROSS_COMPILE_HOST = "${CROSS_COMPILE}"
+export CROSS_COMPILE_TA = "${CROSS_COMPILE}"
+ARCH_qoriq-arm64 = "aarch64"
+ARCH_qoriq-arm = "arm"
+
+do_compile() {
+ unset LDFLAGS
+ export TA_DEV_KIT_DIR="${RECIPE_SYSROOT}/usr/include/optee/export-user_ta"
+ export CROSS_COMPILE="${WRAP_TARGET_PREFIX}"
+ export OPENSSL_PATH="${RECIPE_SYSROOT}/usr"
+ for APP in secure_storage_ta securekey_lib secure_obj-openssl-engine; do
+ cd ${APP}
+ oe_runmake
+ cd ..
+ done
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -d ${D}${includedir}
+ install -d ${D}${base_libdir}/optee_armtz
+ install -d ${D}${libdir}/${ARCH}-linux-gnu/openssl-1.0.0/engines
+ cp ${S}/secure_storage_ta/ta/b05bcf48-9732-4efa-a9e0-141c7c888c34.ta ${D}${base_libdir}/optee_armtz
+ cp ${S}/securekey_lib/out/export/lib/libsecure_obj.so ${D}${libdir}
+ cp ${S}/secure_obj-openssl-engine/libeng_secure_obj.so ${D}${libdir}/${ARCH}-linux-gnu/openssl-1.0.0/engines
+ cp ${S}/securekey_lib/out/export/app/* ${D}${bindir}
+ cp ${S}/secure_obj-openssl-engine/app/sobj_eng_app ${D}${bindir}
+ cp ${S}/securekey_lib/out/export/include/* ${D}${includedir}
+}
+
+FILES_${PN} += "${base_libdir}/optee_armtz ${libdir}/${ARCH}-linux-gnu/openssl-1.0.0/engines"
+INSANE_SKIP_${PN} = "dev-deps ldflags"
+INSANE_SKIP_${PN}-dev = "ldflags dev-elf"
diff --git a/bsp/meta-freescale/recipes-extended/skmm-ep/skmm-ep/add-two-missing-header-files.patch b/bsp/meta-freescale/recipes-extended/skmm-ep/skmm-ep/add-two-missing-header-files.patch
new file mode 100644
index 00000000..2a7bb9f2
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/skmm-ep/skmm-ep/add-two-missing-header-files.patch
@@ -0,0 +1,660 @@
+add two missing header files
+
+Upstream-status: Pending
+
+---
+ include/linux/fsl_pci_ep_vfio.h | 79 ++++++
+ include/linux/vfio.h | 555 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 634 insertions(+)
+ create mode 100644 include/linux/fsl_pci_ep_vfio.h
+ create mode 100644 include/linux/vfio.h
+
+diff --git a/include/linux/fsl_pci_ep_vfio.h b/include/linux/fsl_pci_ep_vfio.h
+new file mode 100644
+index 0000000..8960157
+--- /dev/null
++++ b/include/linux/fsl_pci_ep_vfio.h
+@@ -0,0 +1,79 @@
++/*
++ * Copyright 2013 Freescale Semiconductor, Inc.
++ *
++ * Author: Minghuan Lian <Minghuan.Lian@freescale.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License, version 2, as
++ * published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++ *
++ */
++
++#ifndef _FSL_PCI_EP_VFIO_H
++#define _FSL_PCI_EP_VFIO_H
++
++#include <linux/vfio.h>
++
++enum {
++ PCI_EP_TYPE_PF,
++ PCI_EP_TYPE_VF,
++};
++
++enum PCI_EP_REGION_TYPE {
++ PCI_EP_REGION_IBWIN,
++ PCI_EP_REGION_OBWIN,
++ PCI_EP_REGION_VF_IBWIN,
++ PCI_EP_REGION_VF_OBWIN,
++ PCI_EP_REGION_REGS,
++ PCI_EP_REGION_CONFIG,
++ PCI_EP_REGION_MEM,
++ PCI_EP_REGION_MSIX_OBWIN
++};
++
++enum PCI_EP_REGION_INDEX {
++ PCI_EP_WIN0_INDEX,
++ PCI_EP_WIN1_INDEX,
++ PCI_EP_WIN2_INDEX,
++ PCI_EP_WIN3_INDEX,
++ PCI_EP_WIN4_INDEX,
++ PCI_EP_WIN5_INDEX,
++};
++
++#define PCI_EP_MSI_WIN_INDEX PCI_EP_WIN1_INDEX
++#define PCI_EP_CCSR_WIN_INDEX PCI_EP_WIN0_INDEX
++#define PCI_EP_DEFAULT_OW_INDEX PCI_EP_WIN0_INDEX
++
++struct pci_ep_win {
++ uint64_t pci_addr;
++ uint64_t cpu_addr;
++ uint64_t size;
++ uint64_t offset;
++ uint32_t attr;
++ uint32_t type;
++ uint32_t idx;
++};
++
++#define VFIO_DEVICE_SET_WIN_INFO _IO(VFIO_TYPE, VFIO_BASE + 20)
++#define VFIO_DEVICE_GET_WIN_INFO _IO(VFIO_TYPE, VFIO_BASE + 21)
++
++struct pci_ep_info {
++ uint32_t type;
++ uint32_t pf_idx;
++ uint32_t vf_idx;
++ uint32_t iw_num;
++ uint32_t ow_num;
++ uint32_t vf_iw_num;
++ uint32_t vf_ow_num;
++ bool msix_enable;
++};
++
++#endif
+diff --git a/include/linux/vfio.h b/include/linux/vfio.h
+new file mode 100644
+index 0000000..44578d2
+--- /dev/null
++++ b/include/linux/vfio.h
+@@ -0,0 +1,555 @@
++/*
++ * VFIO API definition
++ *
++ * Copyright (C) 2012 Red Hat, Inc. All rights reserved.
++ * Author: Alex Williamson <alex.williamson@redhat.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++#ifndef _UAPIVFIO_H
++#define _UAPIVFIO_H
++
++#include <linux/types.h>
++#include <linux/ioctl.h>
++
++#define VFIO_API_VERSION 0
++
++
++/* Kernel & User level defines for VFIO IOCTLs. */
++
++/* Extensions */
++
++#define VFIO_TYPE1_IOMMU 1
++#define VFIO_SPAPR_TCE_IOMMU 2
++#define VFIO_FSL_PAMU_IOMMU 1000
++#define VFIO_IOMMU_DUMMY 1001
++
++/*
++ * The IOCTL interface is designed for extensibility by embedding the
++ * structure length (argsz) and flags into structures passed between
++ * kernel and userspace. We therefore use the _IO() macro for these
++ * defines to avoid implicitly embedding a size into the ioctl request.
++ * As structure fields are added, argsz will increase to match and flag
++ * bits will be defined to indicate additional fields with valid data.
++ * It's *always* the caller's responsibility to indicate the size of
++ * the structure passed by setting argsz appropriately.
++ */
++
++#define VFIO_TYPE (';')
++#define VFIO_BASE 100
++
++/* -------- IOCTLs for VFIO file descriptor (/dev/vfio/vfio) -------- */
++
++/**
++ * VFIO_GET_API_VERSION - _IO(VFIO_TYPE, VFIO_BASE + 0)
++ *
++ * Report the version of the VFIO API. This allows us to bump the entire
++ * API version should we later need to add or change features in incompatible
++ * ways.
++ * Return: VFIO_API_VERSION
++ * Availability: Always
++ */
++#define VFIO_GET_API_VERSION _IO(VFIO_TYPE, VFIO_BASE + 0)
++
++/**
++ * VFIO_CHECK_EXTENSION - _IOW(VFIO_TYPE, VFIO_BASE + 1, __u32)
++ *
++ * Check whether an extension is supported.
++ * Return: 0 if not supported, 1 (or some other positive integer) if supported.
++ * Availability: Always
++ */
++#define VFIO_CHECK_EXTENSION _IO(VFIO_TYPE, VFIO_BASE + 1)
++
++/**
++ * VFIO_SET_IOMMU - _IOW(VFIO_TYPE, VFIO_BASE + 2, __s32)
++ *
++ * Set the iommu to the given type. The type must be supported by an
++ * iommu driver as verified by calling CHECK_EXTENSION using the same
++ * type. A group must be set to this file descriptor before this
++ * ioctl is available. The IOMMU interfaces enabled by this call are
++ * specific to the value set.
++ * Return: 0 on success, -errno on failure
++ * Availability: When VFIO group attached
++ */
++#define VFIO_SET_IOMMU _IO(VFIO_TYPE, VFIO_BASE + 2)
++
++/* -------- IOCTLs for GROUP file descriptors (/dev/vfio/$GROUP) -------- */
++
++/**
++ * VFIO_GROUP_GET_STATUS - _IOR(VFIO_TYPE, VFIO_BASE + 3,
++ * struct vfio_group_status)
++ *
++ * Retrieve information about the group. Fills in provided
++ * struct vfio_group_info. Caller sets argsz.
++ * Return: 0 on succes, -errno on failure.
++ * Availability: Always
++ */
++struct vfio_group_status {
++ __u32 argsz;
++ __u32 flags;
++#define VFIO_GROUP_FLAGS_VIABLE (1 << 0)
++#define VFIO_GROUP_FLAGS_CONTAINER_SET (1 << 1)
++};
++#define VFIO_GROUP_GET_STATUS _IO(VFIO_TYPE, VFIO_BASE + 3)
++
++/**
++ * VFIO_GROUP_SET_CONTAINER - _IOW(VFIO_TYPE, VFIO_BASE + 4, __s32)
++ *
++ * Set the container for the VFIO group to the open VFIO file
++ * descriptor provided. Groups may only belong to a single
++ * container. Containers may, at their discretion, support multiple
++ * groups. Only when a container is set are all of the interfaces
++ * of the VFIO file descriptor and the VFIO group file descriptor
++ * available to the user.
++ * Return: 0 on success, -errno on failure.
++ * Availability: Always
++ */
++#define VFIO_GROUP_SET_CONTAINER _IO(VFIO_TYPE, VFIO_BASE + 4)
++
++/**
++ * VFIO_GROUP_UNSET_CONTAINER - _IO(VFIO_TYPE, VFIO_BASE + 5)
++ *
++ * Remove the group from the attached container. This is the
++ * opposite of the SET_CONTAINER call and returns the group to
++ * an initial state. All device file descriptors must be released
++ * prior to calling this interface. When removing the last group
++ * from a container, the IOMMU will be disabled and all state lost,
++ * effectively also returning the VFIO file descriptor to an initial
++ * state.
++ * Return: 0 on success, -errno on failure.
++ * Availability: When attached to container
++ */
++#define VFIO_GROUP_UNSET_CONTAINER _IO(VFIO_TYPE, VFIO_BASE + 5)
++
++/**
++ * VFIO_GROUP_GET_DEVICE_FD - _IOW(VFIO_TYPE, VFIO_BASE + 6, char)
++ *
++ * Return a new file descriptor for the device object described by
++ * the provided string. The string should match a device listed in
++ * the devices subdirectory of the IOMMU group sysfs entry. The
++ * group containing the device must already be added to this context.
++ * Return: new file descriptor on success, -errno on failure.
++ * Availability: When attached to container
++ */
++#define VFIO_GROUP_GET_DEVICE_FD _IO(VFIO_TYPE, VFIO_BASE + 6)
++
++/* --------------- IOCTLs for DEVICE file descriptors --------------- */
++
++/**
++ * VFIO_DEVICE_GET_INFO - _IOR(VFIO_TYPE, VFIO_BASE + 7,
++ * struct vfio_device_info)
++ *
++ * Retrieve information about the device. Fills in provided
++ * struct vfio_device_info. Caller sets argsz.
++ * Return: 0 on success, -errno on failure.
++ */
++struct vfio_device_info {
++ __u32 argsz;
++ __u32 flags;
++#define VFIO_DEVICE_FLAGS_RESET (1 << 0) /* Device supports reset */
++#define VFIO_DEVICE_FLAGS_PCI (1 << 1) /* vfio-pci device */
++ __u32 num_regions; /* Max region index + 1 */
++ __u32 num_irqs; /* Max IRQ index + 1 */
++};
++#define VFIO_DEVICE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 7)
++
++/**
++ * VFIO_DEVICE_GET_REGION_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 8,
++ * struct vfio_region_info)
++ *
++ * Retrieve information about a device region. Caller provides
++ * struct vfio_region_info with index value set. Caller sets argsz.
++ * Implementation of region mapping is bus driver specific. This is
++ * intended to describe MMIO, I/O port, as well as bus specific
++ * regions (ex. PCI config space). Zero sized regions may be used
++ * to describe unimplemented regions (ex. unimplemented PCI BARs).
++ * Return: 0 on success, -errno on failure.
++ */
++struct vfio_region_info {
++ __u32 argsz;
++ __u32 flags;
++#define VFIO_REGION_INFO_FLAG_READ (1 << 0) /* Region supports read */
++#define VFIO_REGION_INFO_FLAG_WRITE (1 << 1) /* Region supports write */
++#define VFIO_REGION_INFO_FLAG_MMAP (1 << 2) /* Region supports mmap */
++ __u32 index; /* Region index */
++ __u32 resv; /* Reserved for alignment */
++ __u64 size; /* Region size (bytes) */
++ __u64 offset; /* Region offset from start of device fd */
++};
++#define VFIO_DEVICE_GET_REGION_INFO _IO(VFIO_TYPE, VFIO_BASE + 8)
++
++/**
++ * VFIO_DEVICE_GET_IRQ_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 9,
++ * struct vfio_irq_info)
++ *
++ * Retrieve information about a device IRQ. Caller provides
++ * struct vfio_irq_info with index value set. Caller sets argsz.
++ * Implementation of IRQ mapping is bus driver specific. Indexes
++ * using multiple IRQs are primarily intended to support MSI-like
++ * interrupt blocks. Zero count irq blocks may be used to describe
++ * unimplemented interrupt types.
++ *
++ * The EVENTFD flag indicates the interrupt index supports eventfd based
++ * signaling.
++ *
++ * The MASKABLE flags indicates the index supports MASK and UNMASK
++ * actions described below.
++ *
++ * AUTOMASKED indicates that after signaling, the interrupt line is
++ * automatically masked by VFIO and the user needs to unmask the line
++ * to receive new interrupts. This is primarily intended to distinguish
++ * level triggered interrupts.
++ *
++ * The NORESIZE flag indicates that the interrupt lines within the index
++ * are setup as a set and new subindexes cannot be enabled without first
++ * disabling the entire index. This is used for interrupts like PCI MSI
++ * and MSI-X where the driver may only use a subset of the available
++ * indexes, but VFIO needs to enable a specific number of vectors
++ * upfront. In the case of MSI-X, where the user can enable MSI-X and
++ * then add and unmask vectors, it's up to userspace to make the decision
++ * whether to allocate the maximum supported number of vectors or tear
++ * down setup and incrementally increase the vectors as each is enabled.
++ */
++struct vfio_irq_info {
++ __u32 argsz;
++ __u32 flags;
++#define VFIO_IRQ_INFO_EVENTFD (1 << 0)
++#define VFIO_IRQ_INFO_MASKABLE (1 << 1)
++#define VFIO_IRQ_INFO_AUTOMASKED (1 << 2)
++#define VFIO_IRQ_INFO_NORESIZE (1 << 3)
++ __u32 index; /* IRQ index */
++ __u32 count; /* Number of IRQs within this index */
++};
++#define VFIO_DEVICE_GET_IRQ_INFO _IO(VFIO_TYPE, VFIO_BASE + 9)
++
++/**
++ * VFIO_DEVICE_SET_IRQS - _IOW(VFIO_TYPE, VFIO_BASE + 10, struct vfio_irq_set)
++ *
++ * Set signaling, masking, and unmasking of interrupts. Caller provides
++ * struct vfio_irq_set with all fields set. 'start' and 'count' indicate
++ * the range of subindexes being specified.
++ *
++ * The DATA flags specify the type of data provided. If DATA_NONE, the
++ * operation performs the specified action immediately on the specified
++ * interrupt(s). For example, to unmask AUTOMASKED interrupt [0,0]:
++ * flags = (DATA_NONE|ACTION_UNMASK), index = 0, start = 0, count = 1.
++ *
++ * DATA_BOOL allows sparse support for the same on arrays of interrupts.
++ * For example, to mask interrupts [0,1] and [0,3] (but not [0,2]):
++ * flags = (DATA_BOOL|ACTION_MASK), index = 0, start = 1, count = 3,
++ * data = {1,0,1}
++ *
++ * DATA_EVENTFD binds the specified ACTION to the provided __s32 eventfd.
++ * A value of -1 can be used to either de-assign interrupts if already
++ * assigned or skip un-assigned interrupts. For example, to set an eventfd
++ * to be trigger for interrupts [0,0] and [0,2]:
++ * flags = (DATA_EVENTFD|ACTION_TRIGGER), index = 0, start = 0, count = 3,
++ * data = {fd1, -1, fd2}
++ * If index [0,1] is previously set, two count = 1 ioctls calls would be
++ * required to set [0,0] and [0,2] without changing [0,1].
++ *
++ * Once a signaling mechanism is set, DATA_BOOL or DATA_NONE can be used
++ * with ACTION_TRIGGER to perform kernel level interrupt loopback testing
++ * from userspace (ie. simulate hardware triggering).
++ *
++ * Setting of an event triggering mechanism to userspace for ACTION_TRIGGER
++ * enables the interrupt index for the device. Individual subindex interrupts
++ * can be disabled using the -1 value for DATA_EVENTFD or the index can be
++ * disabled as a whole with: flags = (DATA_NONE|ACTION_TRIGGER), count = 0.
++ *
++ * Note that ACTION_[UN]MASK specify user->kernel signaling (irqfds) while
++ * ACTION_TRIGGER specifies kernel->user signaling.
++ */
++struct vfio_irq_set {
++ __u32 argsz;
++ __u32 flags;
++#define VFIO_IRQ_SET_DATA_NONE (1 << 0) /* Data not present */
++#define VFIO_IRQ_SET_DATA_BOOL (1 << 1) /* Data is bool (u8) */
++#define VFIO_IRQ_SET_DATA_EVENTFD (1 << 2) /* Data is eventfd (s32) */
++#define VFIO_IRQ_SET_ACTION_MASK (1 << 3) /* Mask interrupt */
++#define VFIO_IRQ_SET_ACTION_UNMASK (1 << 4) /* Unmask interrupt */
++#define VFIO_IRQ_SET_ACTION_TRIGGER (1 << 5) /* Trigger interrupt */
++ __u32 index;
++ __u32 start;
++ __u32 count;
++ __u8 data[];
++};
++#define VFIO_DEVICE_SET_IRQS _IO(VFIO_TYPE, VFIO_BASE + 10)
++
++#define VFIO_IRQ_SET_DATA_TYPE_MASK (VFIO_IRQ_SET_DATA_NONE | \
++ VFIO_IRQ_SET_DATA_BOOL | \
++ VFIO_IRQ_SET_DATA_EVENTFD)
++#define VFIO_IRQ_SET_ACTION_TYPE_MASK (VFIO_IRQ_SET_ACTION_MASK | \
++ VFIO_IRQ_SET_ACTION_UNMASK | \
++ VFIO_IRQ_SET_ACTION_TRIGGER)
++/**
++ * VFIO_DEVICE_RESET - _IO(VFIO_TYPE, VFIO_BASE + 11)
++ *
++ * Reset a device.
++ */
++#define VFIO_DEVICE_RESET _IO(VFIO_TYPE, VFIO_BASE + 11)
++
++/*
++ * The VFIO-PCI bus driver makes use of the following fixed region and
++ * IRQ index mapping. Unimplemented regions return a size of zero.
++ * Unimplemented IRQ types return a count of zero.
++ */
++
++enum {
++ VFIO_PCI_BAR0_REGION_INDEX,
++ VFIO_PCI_BAR1_REGION_INDEX,
++ VFIO_PCI_BAR2_REGION_INDEX,
++ VFIO_PCI_BAR3_REGION_INDEX,
++ VFIO_PCI_BAR4_REGION_INDEX,
++ VFIO_PCI_BAR5_REGION_INDEX,
++ VFIO_PCI_ROM_REGION_INDEX,
++ VFIO_PCI_CONFIG_REGION_INDEX,
++ /*
++ * Expose VGA regions defined for PCI base class 03, subclass 00.
++ * This includes I/O port ranges 0x3b0 to 0x3bb and 0x3c0 to 0x3df
++ * as well as the MMIO range 0xa0000 to 0xbffff. Each implemented
++ * range is found at it's identity mapped offset from the region
++ * offset, for example 0x3b0 is region_info.offset + 0x3b0. Areas
++ * between described ranges are unimplemented.
++ */
++ VFIO_PCI_VGA_REGION_INDEX,
++ VFIO_PCI_NUM_REGIONS
++};
++
++enum {
++ VFIO_PCI_INTX_IRQ_INDEX,
++ VFIO_PCI_MSI_IRQ_INDEX,
++ VFIO_PCI_MSIX_IRQ_INDEX,
++ VFIO_PCI_ERR_IRQ_INDEX,
++ VFIO_PCI_NUM_IRQS
++};
++
++/**
++ * VFIO_DEVICE_GET_PCI_HOT_RESET_INFO - _IORW(VFIO_TYPE, VFIO_BASE + 12,
++ * struct vfio_pci_hot_reset_info)
++ *
++ * Return: 0 on success, -errno on failure:
++ * -enospc = insufficient buffer, -enodev = unsupported for device.
++ */
++struct vfio_pci_dependent_device {
++ __u32 group_id;
++ __u16 segment;
++ __u8 bus;
++ __u8 devfn; /* Use PCI_SLOT/PCI_FUNC */
++};
++
++struct vfio_pci_hot_reset_info {
++ __u32 argsz;
++ __u32 flags;
++ __u32 count;
++ struct vfio_pci_dependent_device devices[];
++};
++
++#define VFIO_DEVICE_GET_PCI_HOT_RESET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
++
++/**
++ * VFIO_DEVICE_PCI_HOT_RESET - _IOW(VFIO_TYPE, VFIO_BASE + 13,
++ * struct vfio_pci_hot_reset)
++ *
++ * Return: 0 on success, -errno on failure.
++ */
++struct vfio_pci_hot_reset {
++ __u32 argsz;
++ __u32 flags;
++ __u32 count;
++ __s32 group_fds[];
++};
++
++#define VFIO_DEVICE_PCI_HOT_RESET _IO(VFIO_TYPE, VFIO_BASE + 13)
++
++/* -------- API for Type1 VFIO IOMMU -------- */
++
++/**
++ * VFIO_IOMMU_GET_INFO - _IOR(VFIO_TYPE, VFIO_BASE + 12, struct vfio_iommu_info)
++ *
++ * Retrieve information about the IOMMU object. Fills in provided
++ * struct vfio_iommu_info. Caller sets argsz.
++ *
++ * XXX Should we do these by CHECK_EXTENSION too?
++ */
++struct vfio_iommu_type1_info {
++ __u32 argsz;
++ __u32 flags;
++#define VFIO_IOMMU_INFO_PGSIZES (1 << 0) /* supported page sizes info */
++ __u64 iova_pgsizes; /* Bitmap of supported page sizes */
++};
++
++#define VFIO_IOMMU_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
++
++/**
++ * VFIO_IOMMU_MAP_DMA - _IOW(VFIO_TYPE, VFIO_BASE + 13, struct vfio_dma_map)
++ *
++ * Map process virtual addresses to IO virtual addresses using the
++ * provided struct vfio_dma_map. Caller sets argsz. READ &/ WRITE required.
++ */
++struct vfio_iommu_type1_dma_map {
++ __u32 argsz;
++ __u32 flags;
++#define VFIO_DMA_MAP_FLAG_READ (1 << 0) /* readable from device */
++#define VFIO_DMA_MAP_FLAG_WRITE (1 << 1) /* writable from device */
++ __u64 vaddr; /* Process virtual address */
++ __u64 iova; /* IO virtual address */
++ __u64 size; /* Size of mapping (bytes) */
++};
++
++#define VFIO_IOMMU_MAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 13)
++
++/**
++ * VFIO_IOMMU_UNMAP_DMA - _IOWR(VFIO_TYPE, VFIO_BASE + 14,
++ * struct vfio_dma_unmap)
++ *
++ * Unmap IO virtual addresses using the provided struct vfio_dma_unmap.
++ * Caller sets argsz. The actual unmapped size is returned in the size
++ * field. No guarantee is made to the user that arbitrary unmaps of iova
++ * or size different from those used in the original mapping call will
++ * succeed.
++ */
++struct vfio_iommu_type1_dma_unmap {
++ __u32 argsz;
++ __u32 flags;
++ __u64 iova; /* IO virtual address */
++ __u64 size; /* Size of mapping (bytes) */
++};
++
++#define VFIO_IOMMU_UNMAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 14)
++
++/*********** APIs for VFIO_PAMU type only ****************/
++/*
++ * VFIO_IOMMU_PAMU_GET_ATTR - _IO(VFIO_TYPE, VFIO_BASE + 15,
++ * struct vfio_pamu_attr)
++ *
++ * Gets the iommu attributes for the current vfio container.
++ * Caller sets argsz and attribute. The ioctl fills in
++ * the provided struct vfio_pamu_attr based on the attribute
++ * value that was set.
++ * Return: 0 on success, -errno on failure
++ */
++struct vfio_pamu_attr {
++ __u32 argsz;
++ __u32 flags; /* no flags currently */
++#define VFIO_ATTR_GEOMETRY 0
++#define VFIO_ATTR_WINDOWS 1
++#define VFIO_ATTR_PAMU_STASH 2
++ __u32 attribute;
++
++ union {
++ /* VFIO_ATTR_GEOMETRY */
++ struct {
++ /* first addr that can be mapped */
++ __u64 aperture_start;
++ /* last addr that can be mapped */
++ __u64 aperture_end;
++ } attr;
++
++ /* VFIO_ATTR_WINDOWS */
++ __u32 windows; /* number of windows in the aperture
++ * initially this will be the max number
++ * of windows that can be set
++ */
++ /* VFIO_ATTR_PAMU_STASH */
++ struct {
++ __u32 cpu; /* CPU number for stashing */
++ __u32 cache; /* cache ID for stashing */
++ } stash;
++ } attr_info;
++};
++#define VFIO_IOMMU_PAMU_GET_ATTR _IO(VFIO_TYPE, VFIO_BASE + 15)
++
++/*
++ * VFIO_IOMMU_PAMU_SET_ATTR - _IO(VFIO_TYPE, VFIO_BASE + 16,
++ * struct vfio_pamu_attr)
++ *
++ * Sets the iommu attributes for the current vfio container.
++ * Caller sets struct vfio_pamu attr, including argsz and attribute and
++ * setting any fields that are valid for the attribute.
++ * Return: 0 on success, -errno on failure
++ */
++#define VFIO_IOMMU_PAMU_SET_ATTR _IO(VFIO_TYPE, VFIO_BASE + 16)
++
++/*
++ * VFIO_IOMMU_PAMU_GET_MSI_BANK_COUNT - _IO(VFIO_TYPE, VFIO_BASE + 17, __u32)
++ *
++ * Returns the number of MSI banks for this platform. This tells user space
++ * how many aperture windows should be reserved for MSI banks when setting
++ * the PAMU geometry and window count.
++ * Return: __u32 bank count on success, -errno on failure
++ */
++#define VFIO_IOMMU_PAMU_GET_MSI_BANK_COUNT _IO(VFIO_TYPE, VFIO_BASE + 17)
++
++/*
++ * VFIO_IOMMU_PAMU_MAP_MSI_BANK - _IO(VFIO_TYPE, VFIO_BASE + 18,
++ * struct vfio_pamu_msi_bank_map)
++ *
++ * Maps the MSI bank at the specified index and iova. User space must
++ * call this ioctl once for each MSI bank (count of banks is returned by
++ * VFIO_IOMMU_PAMU_GET_MSI_BANK_COUNT).
++ * Caller provides struct vfio_pamu_msi_bank_map with all fields set.
++ * Return: 0 on success, -errno on failure
++ */
++
++struct vfio_pamu_msi_bank_map {
++ __u32 argsz;
++ __u32 flags; /* no flags currently */
++ __u32 msi_bank_index; /* the index of the MSI bank */
++ __u64 iova; /* the iova the bank is to be mapped to */
++};
++#define VFIO_IOMMU_PAMU_MAP_MSI_BANK _IO(VFIO_TYPE, VFIO_BASE + 18)
++
++/*
++ * VFIO_IOMMU_PAMU_UNMAP_MSI_BANK - _IO(VFIO_TYPE, VFIO_BASE + 19,
++ * struct vfio_pamu_msi_bank_unmap)
++ *
++ * Unmaps the MSI bank at the specified iova.
++ * Caller provides struct vfio_pamu_msi_bank_unmap with all fields set.
++ * Operates on VFIO file descriptor (/dev/vfio/vfio).
++ * Return: 0 on success, -errno on failure
++ */
++
++struct vfio_pamu_msi_bank_unmap {
++ __u32 argsz;
++ __u32 flags; /* no flags currently */
++ __u64 iova; /* the iova to be unmapped to */
++};
++#define VFIO_IOMMU_PAMU_UNMAP_MSI_BANK _IO(VFIO_TYPE, VFIO_BASE + 19)
++
++/*
++ * IOCTLs to enable/disable IOMMU container usage.
++ * No parameters are supported.
++ */
++#define VFIO_IOMMU_ENABLE _IO(VFIO_TYPE, VFIO_BASE + 15)
++#define VFIO_IOMMU_DISABLE _IO(VFIO_TYPE, VFIO_BASE + 16)
++
++/* -------- Additional API for SPAPR TCE (Server POWERPC) IOMMU -------- */
++
++/*
++ * The SPAPR TCE info struct provides the information about the PCI bus
++ * address ranges available for DMA, these values are programmed into
++ * the hardware so the guest has to know that information.
++ *
++ * The DMA 32 bit window start is an absolute PCI bus address.
++ * The IOVA address passed via map/unmap ioctls are absolute PCI bus
++ * addresses too so the window works as a filter rather than an offset
++ * for IOVA addresses.
++ *
++ * A flag will need to be added if other page sizes are supported,
++ * so as defined here, it is always 4k.
++ */
++struct vfio_iommu_spapr_tce_info {
++ __u32 argsz;
++ __u32 flags; /* reserved for future use */
++ __u32 dma32_window_start; /* 32 bit window start (bytes) */
++ __u32 dma32_window_size; /* 32 bit window size (bytes) */
++};
++
++#define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
++
++/* ***************************************************************** */
++
++#endif /* _UAPIVFIO_H */
+--
+1.8.3.2
+
diff --git a/bsp/meta-freescale/recipes-extended/skmm-ep/skmm-ep_git.bb b/bsp/meta-freescale/recipes-extended/skmm-ep/skmm-ep_git.bb
new file mode 100644
index 00000000..94649477
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/skmm-ep/skmm-ep_git.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "SKMM application for PCIe endpoint"
+SECTION = "skmm-ep"
+LICENSE = "BSD & GPLv2"
+LIC_FILES_CHKSUM = "file://Makefile;endline=30;md5=39e58bedc879163c9338596e52df5b1f"
+
+DEPENDS = "libedit openssl virtual/kernel"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SRC_URI = "git://git.freescale.com/ppc/sdk/skmm-ep.git;branch=sdk-v2.0.x \
+ file://add-two-missing-header-files.patch \
+"
+SRCREV = "de6816c7d66129683bc62229b482ac3cf585d896"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = 'ARCH=${TARGET_ARCH} MACHINE=${MACHINE} EXTRA_LDFLAGS="${LDFLAGS}"'
+
+export LIBEDIT_CFLAGS = "`pkg-config --cflags libedit`"
+export LIBEDIT_LDFLAGS = "`pkg-config --libs --static libedit`"
+
+do_compile () {
+ oe_runmake
+}
+
+do_install () {
+ oe_runmake install DESTDIR=${D}
+}
+
+COMPATIBLE_MACHINE = "(p4080ds|t4240qds|c293pcie)"
diff --git a/bsp/meta-freescale/recipes-extended/testfloat/files/SoftFloat-powerpc-1.patch b/bsp/meta-freescale/recipes-extended/testfloat/files/SoftFloat-powerpc-1.patch
new file mode 100644
index 00000000..b6db2de2
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/testfloat/files/SoftFloat-powerpc-1.patch
@@ -0,0 +1,1427 @@
+This patch adds PowerPC support in SoftFloat.
+
+Signed-off-by: Ebony Zhu <ebony.zhu@freescale.com>
+Signed-off-by: Liu Yu <Yu.Liu@freescale.com>
+---
+ SoftFloat-2b/processors/powerpc-GCC.h | 87 ++++
+ SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile | 26 ++
+ SoftFloat-2b/softfloat/bits32/powerpc-GCC/milieu.h | 55 +++
+ .../bits32/powerpc-GCC/softfloat-specialize | 252 ++++++++++++
+ .../softfloat/bits32/powerpc-GCC/softfloat.h | 155 +++++++
+ SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile | 24 ++
+ SoftFloat-2b/softfloat/bits64/powerpc-GCC/milieu.h | 55 +++
+ .../bits64/powerpc-GCC/softfloat-specialize | 422 ++++++++++++++++++++
+ .../softfloat/bits64/powerpc-GCC/softfloat.h | 269 +++++++++++++
+ 9 files changed, 1345 insertions(+), 0 deletions(-)
+ create mode 100644 SoftFloat-2b/processors/powerpc-GCC.h
+ create mode 100644 SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile
+ create mode 100644 SoftFloat-2b/softfloat/bits32/powerpc-GCC/milieu.h
+ create mode 100644 SoftFloat-2b/softfloat/bits32/powerpc-GCC/softfloat-specialize
+ create mode 100644 SoftFloat-2b/softfloat/bits32/powerpc-GCC/softfloat.h
+ create mode 100644 SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile
+ create mode 100644 SoftFloat-2b/softfloat/bits64/powerpc-GCC/milieu.h
+ create mode 100644 SoftFloat-2b/softfloat/bits64/powerpc-GCC/softfloat-specialize
+ create mode 100644 SoftFloat-2b/softfloat/bits64/powerpc-GCC/softfloat.h
+
+diff --git a/SoftFloat-2b/processors/powerpc-GCC.h b/SoftFloat-2b/processors/powerpc-GCC.h
+new file mode 100644
+index 0000000..002a786
+--- /dev/null
++++ b/SoftFloat-2b/processors/powerpc-GCC.h
+@@ -0,0 +1,87 @@
++/*
++ * This file is derived from processors/386-gcc.h,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ *
++ * THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
++ * been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
++ * RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
++ * AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
++ * COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
++ * EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
++ * INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
++ * OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
++ */
++
++/*----------------------------------------------------------------------------
++| One of the macros `BIGENDIAN' or `LITTLEENDIAN' must be defined.
++*----------------------------------------------------------------------------*/
++#define BIGENDIAN
++
++/*----------------------------------------------------------------------------
++| The macro `BITS64' can be defined to indicate that 64-bit integer types are
++| supported by the compiler.
++*----------------------------------------------------------------------------*/
++#define BITS32
++
++/*----------------------------------------------------------------------------
++| Each of the following `typedef's defines the most convenient type that holds
++| integers of at least as many bits as specified. For example, `uint8' should
++| be the most convenient type that can hold unsigned integers of as many as
++| 8 bits. The `flag' type must be able to hold either a 0 or 1. For most
++| implementations of C, `flag', `uint8', and `int8' should all be `typedef'ed
++| to the same as `int'.
++*----------------------------------------------------------------------------*/
++typedef int flag;
++typedef int uint8;
++typedef int int8;
++typedef int uint16;
++typedef int int16;
++typedef unsigned int uint32;
++typedef signed int int32;
++#ifdef BITS64
++typedef unsigned long long int uint64;
++typedef signed long long int int64;
++#endif
++
++/*----------------------------------------------------------------------------
++| Each of the following `typedef's defines a type that holds integers
++| of _exactly_ the number of bits specified. For instance, for most
++| implementation of C, `bits16' and `sbits16' should be `typedef'ed to
++| `unsigned short int' and `signed short int' (or `short int'), respectively.
++*----------------------------------------------------------------------------*/
++typedef unsigned char bits8;
++typedef signed char sbits8;
++typedef unsigned short int bits16;
++typedef signed short int sbits16;
++typedef unsigned int bits32;
++typedef signed int sbits32;
++#ifdef BITS64
++typedef unsigned long long int bits64;
++typedef signed long long int sbits64;
++#endif
++
++#ifdef BITS64
++/*----------------------------------------------------------------------------
++| The `LIT64' macro takes as its argument a textual integer literal and
++| if necessary ``marks'' the literal as having a 64-bit integer type.
++| For example, the GNU C Compiler (`gcc') requires that 64-bit literals be
++| appended with the letters `LL' standing for `long long', which is `gcc's
++| name for the 64-bit integer type. Some compilers may allow `LIT64' to be
++| defined as the identity macro: `#define LIT64( a ) a'.
++*----------------------------------------------------------------------------*/
++#define LIT64( a ) a##LL
++#endif
++
++/*----------------------------------------------------------------------------
++| The macro `INLINE' can be used before functions that should be inlined. If
++| a compiler does not support explicit inlining, this macro should be defined
++| to be `static'.
++*----------------------------------------------------------------------------*/
++#define INLINE extern inline
++
+diff --git a/SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile
+new file mode 100644
+index 0000000..28f1e33
+--- /dev/null
++++ b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile
+@@ -0,0 +1,26 @@
++
++PROCESSOR_H = ../../../processors/powerpc-GCC.h
++SOFTFLOAT_MACROS = ../softfloat-macros
++
++OBJ = .o
++EXE =
++INCLUDES = -I. -I..
++COMPILE_C = $(COMPILE_PREFIX)gcc -msoft-float -c -o $@ $(INCLUDES) -I- -O2
++LINK = $(COMPILE_PREFIX)gcc -o $@
++
++ALL: softfloat$(OBJ) timesoftfloat$(EXE)
++
++milieu.h: $(PROCESSOR_H)
++ touch milieu.h
++
++softfloat$(OBJ): milieu.h softfloat.h softfloat-specialize $(SOFTFLOAT_MACROS) ../softfloat.c
++ $(COMPILE_C) ../softfloat.c
++
++timesoftfloat$(OBJ): milieu.h softfloat.h ../timesoftfloat.c
++ $(COMPILE_C) ../timesoftfloat.c
++
++timesoftfloat$(EXE): softfloat$(OBJ) timesoftfloat$(OBJ)
++ $(LINK) softfloat$(OBJ) timesoftfloat$(OBJ)
++
++clean:
++ rm -f *.o timesoftfloat$(EXE)
+diff --git a/SoftFloat-2b/softfloat/bits32/powerpc-GCC/milieu.h b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/milieu.h
+new file mode 100644
+index 0000000..d8b6012
+--- /dev/null
++++ b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/milieu.h
+@@ -0,0 +1,55 @@
++/*
++ * This file is derived from softfloat/bits32/386-Win32-GCC/milieu.h,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*============================================================================
++
++This C header file is part of the SoftFloat IEC/IEEE Floating-point Arithmetic
++Package, Release 2b.
++
++Written by John R. Hauser. This work was made possible in part by the
++International Computer Science Institute, located at Suite 600, 1947 Center
++Street, Berkeley, California 94704. Funding was partially provided by the
++National Science Foundation under grant MIP-9311980. The original version
++of this code was written as part of a project to build a fixed-point vector
++processor in collaboration with the University of California at Berkeley,
++overseen by Profs. Nelson Morgan and John Wawrzynek. More information
++is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
++arithmetic/SoftFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
++been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
++RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
++AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
++COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
++EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
++INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
++OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) the source code for the derivative work includes prominent notice that
++the work is derivative, and (2) the source code includes prominent notice with
++these four paragraphs for those parts of this code that are retained.
++
++=============================================================================*/
++
++/*----------------------------------------------------------------------------
++| Include common integer types and flags.
++*----------------------------------------------------------------------------*/
++#include "../../../processors/powerpc-GCC.h"
++
++/*----------------------------------------------------------------------------
++| Symbolic Boolean literals.
++*----------------------------------------------------------------------------*/
++enum {
++ FALSE = 0,
++ TRUE = 1
++};
++
+diff --git a/SoftFloat-2b/softfloat/bits32/powerpc-GCC/softfloat-specialize b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/softfloat-specialize
+new file mode 100644
+index 0000000..fd2caa4
+--- /dev/null
++++ b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/softfloat-specialize
+@@ -0,0 +1,252 @@
++/*
++ * This file is derived from softfloat/bits32/386-Win32-GCC/softfloat-specialize,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*============================================================================
++
++This C source fragment is part of the SoftFloat IEC/IEEE Floating-point
++Arithmetic Package, Release 2b.
++
++Written by John R. Hauser. This work was made possible in part by the
++International Computer Science Institute, located at Suite 600, 1947 Center
++Street, Berkeley, California 94704. Funding was partially provided by the
++National Science Foundation under grant MIP-9311980. The original version
++of this code was written as part of a project to build a fixed-point vector
++processor in collaboration with the University of California at Berkeley,
++overseen by Profs. Nelson Morgan and John Wawrzynek. More information
++is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
++arithmetic/SoftFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
++been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
++RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
++AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
++COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
++EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
++INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
++OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) the source code for the derivative work includes prominent notice that
++the work is derivative, and (2) the source code includes prominent notice with
++these four paragraphs for those parts of this code that are retained.
++
++=============================================================================*/
++
++/*----------------------------------------------------------------------------
++| Underflow tininess-detection mode, statically initialized to default value.
++| (The declaration in `softfloat.h' must match the `int8' type here.)
++*----------------------------------------------------------------------------*/
++int8 float_detect_tininess = float_tininess_after_rounding;
++
++/*----------------------------------------------------------------------------
++| Raises the exceptions specified by `flags'. Floating-point traps can be
++| defined here if desired. It is currently not possible for such a trap
++| to substitute a result value. If traps are not implemented, this routine
++| should be simply `float_exception_flags |= flags;'.
++*----------------------------------------------------------------------------*/
++
++void float_raise( int8 flags )
++{
++
++ float_exception_flags |= flags;
++
++}
++
++/*----------------------------------------------------------------------------
++| Internal canonical NaN format.
++*----------------------------------------------------------------------------*/
++typedef struct {
++ flag sign;
++ bits32 high, low;
++} commonNaNT;
++
++/*----------------------------------------------------------------------------
++| The pattern for a default generated single-precision NaN.
++*----------------------------------------------------------------------------*/
++enum {
++ float32_default_nan = 0xFFFFFFFF
++};
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the single-precision floating-point value `a' is a NaN;
++| otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float32_is_nan( float32 a )
++{
++
++ return ( 0xFF000000 < (bits32) ( a<<1 ) );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the single-precision floating-point value `a' is a signaling
++| NaN; otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float32_is_signaling_nan( float32 a )
++{
++
++ return ( ( ( a>>22 ) & 0x1FF ) == 0x1FE ) && ( a & 0x003FFFFF );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the single-precision floating-point NaN
++| `a' to the canonical NaN format. If `a' is a signaling NaN, the invalid
++| exception is raised.
++*----------------------------------------------------------------------------*/
++
++static commonNaNT float32ToCommonNaN( float32 a )
++{
++ commonNaNT z;
++
++ if ( float32_is_signaling_nan( a ) ) float_raise( float_flag_invalid );
++ z.sign = a>>31;
++ z.low = 0;
++ z.high = a<<9;
++ return z;
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the canonical NaN `a' to the single-
++| precision floating-point format.
++*----------------------------------------------------------------------------*/
++
++static float32 commonNaNToFloat32( commonNaNT a )
++{
++
++ return ( ( (bits32) a.sign )<<31 ) | 0x7FC00000 | ( a.high>>9 );
++
++}
++
++/*----------------------------------------------------------------------------
++| Takes two single-precision floating-point values `a' and `b', one of which
++| is a NaN, and returns the appropriate NaN result. If either `a' or `b' is a
++| signaling NaN, the invalid exception is raised.
++*----------------------------------------------------------------------------*/
++
++static float32 propagateFloat32NaN( float32 a, float32 b )
++{
++ flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN;
++
++ aIsNaN = float32_is_nan( a );
++ aIsSignalingNaN = float32_is_signaling_nan( a );
++ bIsNaN = float32_is_nan( b );
++ bIsSignalingNaN = float32_is_signaling_nan( b );
++ a |= 0x00400000;
++ b |= 0x00400000;
++ if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid );
++ if ( aIsNaN ) {
++ return ( aIsSignalingNaN & bIsNaN ) ? b : a;
++ }
++ else {
++ return b;
++ }
++
++}
++
++/*----------------------------------------------------------------------------
++| The pattern for a default generated double-precision NaN. The `high' and
++| `low' values hold the most- and least-significant bits, respectively.
++*----------------------------------------------------------------------------*/
++enum {
++ float64_default_nan_high = 0xFFFFFFFF,
++ float64_default_nan_low = 0xFFFFFFFF
++};
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the double-precision floating-point value `a' is a NaN;
++| otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float64_is_nan( float64 a )
++{
++
++ return
++ ( 0xFFE00000 <= (bits32) ( a.high<<1 ) )
++ && ( a.low || ( a.high & 0x000FFFFF ) );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the double-precision floating-point value `a' is a signaling
++| NaN; otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float64_is_signaling_nan( float64 a )
++{
++
++ return
++ ( ( ( a.high>>19 ) & 0xFFF ) == 0xFFE )
++ && ( a.low || ( a.high & 0x0007FFFF ) );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the double-precision floating-point NaN
++| `a' to the canonical NaN format. If `a' is a signaling NaN, the invalid
++| exception is raised.
++*----------------------------------------------------------------------------*/
++
++static commonNaNT float64ToCommonNaN( float64 a )
++{
++ commonNaNT z;
++
++ if ( float64_is_signaling_nan( a ) ) float_raise( float_flag_invalid );
++ z.sign = a.high>>31;
++ shortShift64Left( a.high, a.low, 12, &z.high, &z.low );
++ return z;
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the canonical NaN `a' to the double-
++| precision floating-point format.
++*----------------------------------------------------------------------------*/
++
++static float64 commonNaNToFloat64( commonNaNT a )
++{
++ float64 z;
++
++ shift64Right( a.high, a.low, 12, &z.high, &z.low );
++ z.high |= ( ( (bits32) a.sign )<<31 ) | 0x7FF80000;
++ return z;
++
++}
++
++/*----------------------------------------------------------------------------
++| Takes two double-precision floating-point values `a' and `b', one of which
++| is a NaN, and returns the appropriate NaN result. If either `a' or `b' is a
++| signaling NaN, the invalid exception is raised.
++*----------------------------------------------------------------------------*/
++
++static float64 propagateFloat64NaN( float64 a, float64 b )
++{
++ flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN;
++
++ aIsNaN = float64_is_nan( a );
++ aIsSignalingNaN = float64_is_signaling_nan( a );
++ bIsNaN = float64_is_nan( b );
++ bIsSignalingNaN = float64_is_signaling_nan( b );
++ a.high |= 0x00080000;
++ b.high |= 0x00080000;
++ if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid );
++ if ( aIsNaN ) {
++ return ( aIsSignalingNaN & bIsNaN ) ? b : a;
++ }
++ else {
++ return b;
++ }
++
++}
++
+diff --git a/SoftFloat-2b/softfloat/bits32/powerpc-GCC/softfloat.h b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/softfloat.h
+new file mode 100644
+index 0000000..0015b8e
+--- /dev/null
++++ b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/softfloat.h
+@@ -0,0 +1,155 @@
++/*
++ * This file is derived from softfloat/bits32/386-Win32-GCC/softfloat.h,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*============================================================================
++
++This C header file is part of the SoftFloat IEC/IEEE Floating-point Arithmetic
++Package, Release 2b.
++
++Written by John R. Hauser. This work was made possible in part by the
++International Computer Science Institute, located at Suite 600, 1947 Center
++Street, Berkeley, California 94704. Funding was partially provided by the
++National Science Foundation under grant MIP-9311980. The original version
++of this code was written as part of a project to build a fixed-point vector
++processor in collaboration with the University of California at Berkeley,
++overseen by Profs. Nelson Morgan and John Wawrzynek. More information
++is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
++arithmetic/SoftFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
++been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
++RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
++AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
++COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
++EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
++INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
++OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) the source code for the derivative work includes prominent notice that
++the work is derivative, and (2) the source code includes prominent notice with
++these four paragraphs for those parts of this code that are retained.
++
++=============================================================================*/
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE floating-point types.
++*----------------------------------------------------------------------------*/
++typedef bits32 float32;
++typedef struct {
++ bits32 high, low;
++} float64;
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE floating-point underflow tininess-detection mode.
++*----------------------------------------------------------------------------*/
++extern int8 float_detect_tininess;
++enum {
++ float_tininess_after_rounding = 0,
++ float_tininess_before_rounding = 1
++};
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE floating-point rounding mode.
++*----------------------------------------------------------------------------*/
++extern int8 float_rounding_mode;
++enum {
++ float_round_nearest_even = 0,
++ float_round_to_zero = 1,
++ float_round_up = 2,
++ float_round_down = 3
++};
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE floating-point exception flags.
++*----------------------------------------------------------------------------*/
++/*
++extern int8 float_exception_flags;
++enum {
++ float_flag_inexact = 1,
++ float_flag_underflow = 2,
++ float_flag_overflow = 4,
++ float_flag_divbyzero = 8,
++ float_flag_invalid = 16
++};
++*/
++
++extern int8 float_exception_flags;
++enum {
++ float_flag_inexact = 16,
++ float_flag_underflow = 2,
++ float_flag_overflow = 1,
++ float_flag_divbyzero = 4,
++ float_flag_invalid = 8
++};
++
++/*----------------------------------------------------------------------------
++| Routine to raise any or all of the software IEC/IEEE floating-point
++| exception flags.
++*----------------------------------------------------------------------------*/
++void float_raise( int8 );
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE integer-to-floating-point conversion routines.
++*----------------------------------------------------------------------------*/
++float32 int32_to_float32( int32 );
++float64 int32_to_float64( int32 );
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE single-precision conversion routines.
++*----------------------------------------------------------------------------*/
++int32 float32_to_int32( float32 );
++int32 float32_to_int32_round_to_zero( float32 );
++float64 float32_to_float64( float32 );
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE single-precision operations.
++*----------------------------------------------------------------------------*/
++float32 float32_round_to_int( float32 );
++float32 float32_add( float32, float32 );
++float32 float32_sub( float32, float32 );
++float32 float32_mul( float32, float32 );
++float32 float32_div( float32, float32 );
++float32 float32_rem( float32, float32 );
++float32 float32_sqrt( float32 );
++flag float32_eq( float32, float32 );
++flag float32_le( float32, float32 );
++flag float32_lt( float32, float32 );
++flag float32_eq_signaling( float32, float32 );
++flag float32_le_quiet( float32, float32 );
++flag float32_lt_quiet( float32, float32 );
++flag float32_is_signaling_nan( float32 );
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE double-precision conversion routines.
++*----------------------------------------------------------------------------*/
++int32 float64_to_int32( float64 );
++int32 float64_to_int32_round_to_zero( float64 );
++float32 float64_to_float32( float64 );
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE double-precision operations.
++*----------------------------------------------------------------------------*/
++float64 float64_round_to_int( float64 );
++float64 float64_add( float64, float64 );
++float64 float64_sub( float64, float64 );
++float64 float64_mul( float64, float64 );
++float64 float64_div( float64, float64 );
++float64 float64_rem( float64, float64 );
++float64 float64_sqrt( float64 );
++flag float64_eq( float64, float64 );
++flag float64_le( float64, float64 );
++flag float64_lt( float64, float64 );
++flag float64_eq_signaling( float64, float64 );
++flag float64_le_quiet( float64, float64 );
++flag float64_lt_quiet( float64, float64 );
++flag float64_is_signaling_nan( float64 );
++
+diff --git a/SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile
+new file mode 100644
+index 0000000..a5e2cc7
+--- /dev/null
++++ b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile
+@@ -0,0 +1,24 @@
++
++PROCESSOR_H = ../../../processors/powerpc-GCC.h
++SOFTFLOAT_MACROS = ../softfloat-macros
++
++OBJ = .o
++EXE =
++INCLUDES = -I. -I..
++COMPILE_C = $(COMPILE_PREFIX) -mcpu=8548 -mhard-float -mfloat-gprs=double -o $@ $(INCLUDES) -I- -O2
++LINK = $(COMPILE_PREFIX) -o $@
++
++ALL: softfloat$(OBJ) timesoftfloat$(EXE)
++
++milieu.h: $(PROCESSOR_H)
++ touch milieu.h
++
++softfloat$(OBJ): milieu.h softfloat.h softfloat-specialize $(SOFTFLOAT_MACROS) ../softfloat.c
++ $(COMPILE_C) ../softfloat.c
++
++timesoftfloat$(OBJ): milieu.h softfloat.h ../timesoftfloat.c
++ $(COMPILE_C) ../timesoftfloat.c
++
++timesoftfloat$(EXE): softfloat$(OBJ) timesoftfloat$(OBJ)
++ $(LINK) softfloat$(OBJ) timesoftfloat$(OBJ)
++
+diff --git a/SoftFloat-2b/softfloat/bits64/powerpc-GCC/milieu.h b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/milieu.h
+new file mode 100644
+index 0000000..1b66490
+--- /dev/null
++++ b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/milieu.h
+@@ -0,0 +1,55 @@
++/*
++ * This file is derived from softfloat/bits64/386-Win32-GCC/milieu.h,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*============================================================================
++
++This C header file is part of the SoftFloat IEC/IEEE Floating-point Arithmetic
++Package, Release 2b.
++
++Written by John R. Hauser. This work was made possible in part by the
++International Computer Science Institute, located at Suite 600, 1947 Center
++Street, Berkeley, California 94704. Funding was partially provided by the
++National Science Foundation under grant MIP-9311980. The original version
++of this code was written as part of a project to build a fixed-point vector
++processor in collaboration with the University of California at Berkeley,
++overseen by Profs. Nelson Morgan and John Wawrzynek. More information
++is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
++arithmetic/SoftFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
++been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
++RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
++AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
++COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
++EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
++INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
++OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) the source code for the derivative work includes prominent notice that
++the work is derivative, and (2) the source code includes prominent notice with
++these four paragraphs for those parts of this code that are retained.
++
++=============================================================================*/
++
++/*----------------------------------------------------------------------------
++| Include common integer types and flags.
++*----------------------------------------------------------------------------*/
++#include "../../../processors/SPARC-GCC.h"
++
++/*----------------------------------------------------------------------------
++| Symbolic Boolean literals.
++*----------------------------------------------------------------------------*/
++enum {
++ FALSE = 0,
++ TRUE = 1
++};
++
+diff --git a/SoftFloat-2b/softfloat/bits64/powerpc-GCC/softfloat-specialize b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/softfloat-specialize
+new file mode 100644
+index 0000000..b1d0bc8
+--- /dev/null
++++ b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/softfloat-specialize
+@@ -0,0 +1,422 @@
++/*
++ * This file is derived from softfloat/bits64/386-Win32-GCC/softfloat-specialize,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*============================================================================
++
++This C source fragment is part of the SoftFloat IEC/IEEE Floating-point
++Arithmetic Package, Release 2b.
++
++Written by John R. Hauser. This work was made possible in part by the
++International Computer Science Institute, located at Suite 600, 1947 Center
++Street, Berkeley, California 94704. Funding was partially provided by the
++National Science Foundation under grant MIP-9311980. The original version
++of this code was written as part of a project to build a fixed-point vector
++processor in collaboration with the University of California at Berkeley,
++overseen by Profs. Nelson Morgan and John Wawrzynek. More information
++is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
++arithmetic/SoftFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
++been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
++RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
++AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
++COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
++EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
++INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
++OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) the source code for the derivative work includes prominent notice that
++the work is derivative, and (2) the source code includes prominent notice with
++these four paragraphs for those parts of this code that are retained.
++
++=============================================================================*/
++
++/*----------------------------------------------------------------------------
++| Underflow tininess-detection mode, statically initialized to default value.
++| (The declaration in `softfloat.h' must match the `int8' type here.)
++*----------------------------------------------------------------------------*/
++int8 float_detect_tininess = float_tininess_before_rounding;
++
++/*----------------------------------------------------------------------------
++| Raises the exceptions specified by `flags'. Floating-point traps can be
++| defined here if desired. It is currently not possible for such a trap
++| to substitute a result value. If traps are not implemented, this routine
++| should be simply `float_exception_flags |= flags;'.
++*----------------------------------------------------------------------------*/
++
++void float_raise( int8 flags )
++{
++
++ float_exception_flags |= flags;
++
++}
++
++/*----------------------------------------------------------------------------
++| Internal canonical NaN format.
++*----------------------------------------------------------------------------*/
++typedef struct {
++ flag sign;
++ bits64 high, low;
++} commonNaNT;
++
++/*----------------------------------------------------------------------------
++| The pattern for a default generated single-precision NaN.
++*----------------------------------------------------------------------------*/
++#define float32_default_nan 0x7FFFFFFF
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the single-precision floating-point value `a' is a NaN;
++| otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float32_is_nan( float32 a )
++{
++
++ return ( 0xFF000000 < (bits32) ( a<<1 ) );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the single-precision floating-point value `a' is a signaling
++| NaN; otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float32_is_signaling_nan( float32 a )
++{
++
++ return ( ( ( a>>22 ) & 0x1FF ) == 0x1FE ) && ( a & 0x003FFFFF );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the single-precision floating-point NaN
++| `a' to the canonical NaN format. If `a' is a signaling NaN, the invalid
++| exception is raised.
++*----------------------------------------------------------------------------*/
++
++static commonNaNT float32ToCommonNaN( float32 a )
++{
++ commonNaNT z;
++
++ if ( float32_is_signaling_nan( a ) ) float_raise( float_flag_invalid );
++ z.sign = a>>31;
++ z.low = 0;
++ z.high = ( (bits64) a )<<41;
++ return z;
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the canonical NaN `a' to the single-
++| precision floating-point format.
++*----------------------------------------------------------------------------*/
++
++static float32 commonNaNToFloat32( commonNaNT a )
++{
++
++ return ( ( (bits32) a.sign )<<31 ) | 0x7FC00000 | ( a.high>>41 );
++
++}
++
++/*----------------------------------------------------------------------------
++| Takes two single-precision floating-point values `a' and `b', one of which
++| is a NaN, and returns the appropriate NaN result. If either `a' or `b' is a
++| signaling NaN, the invalid exception is raised.
++*----------------------------------------------------------------------------*/
++
++static float32 propagateFloat32NaN( float32 a, float32 b )
++{
++ flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN;
++
++ aIsNaN = float32_is_nan( a );
++ aIsSignalingNaN = float32_is_signaling_nan( a );
++ bIsNaN = float32_is_nan( b );
++ bIsSignalingNaN = float32_is_signaling_nan( b );
++ a |= 0x00400000;
++ b |= 0x00400000;
++ if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid );
++ return bIsSignalingNaN ? b : aIsSignalingNaN ? a : bIsNaN ? b : a;
++
++}
++
++/*----------------------------------------------------------------------------
++| The pattern for a default generated double-precision NaN.
++*----------------------------------------------------------------------------*/
++#define float64_default_nan LIT64( 0x7FFFFFFFFFFFFFFF )
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the double-precision floating-point value `a' is a NaN;
++| otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float64_is_nan( float64 a )
++{
++
++ return ( LIT64( 0xFFE0000000000000 ) < (bits64) ( a<<1 ) );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the double-precision floating-point value `a' is a signaling
++| NaN; otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float64_is_signaling_nan( float64 a )
++{
++
++ return
++ ( ( ( a>>51 ) & 0xFFF ) == 0xFFE )
++ && ( a & LIT64( 0x0007FFFFFFFFFFFF ) );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the double-precision floating-point NaN
++| `a' to the canonical NaN format. If `a' is a signaling NaN, the invalid
++| exception is raised.
++*----------------------------------------------------------------------------*/
++
++static commonNaNT float64ToCommonNaN( float64 a )
++{
++ commonNaNT z;
++
++ if ( float64_is_signaling_nan( a ) ) float_raise( float_flag_invalid );
++ z.sign = a>>63;
++ z.low = 0;
++ z.high = a<<12;
++ return z;
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the canonical NaN `a' to the double-
++| precision floating-point format.
++*----------------------------------------------------------------------------*/
++
++static float64 commonNaNToFloat64( commonNaNT a )
++{
++
++ return
++ ( ( (bits64) a.sign )<<63 )
++ | LIT64( 0x7FF8000000000000 )
++ | ( a.high>>12 );
++
++}
++
++/*----------------------------------------------------------------------------
++| Takes two double-precision floating-point values `a' and `b', one of which
++| is a NaN, and returns the appropriate NaN result. If either `a' or `b' is a
++| signaling NaN, the invalid exception is raised.
++*----------------------------------------------------------------------------*/
++
++static float64 propagateFloat64NaN( float64 a, float64 b )
++{
++ flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN;
++
++ aIsNaN = float64_is_nan( a );
++ aIsSignalingNaN = float64_is_signaling_nan( a );
++ bIsNaN = float64_is_nan( b );
++ bIsSignalingNaN = float64_is_signaling_nan( b );
++ a |= LIT64( 0x0008000000000000 );
++ b |= LIT64( 0x0008000000000000 );
++ if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid );
++ return bIsSignalingNaN ? b : aIsSignalingNaN ? a : bIsNaN ? b : a;
++
++}
++
++#ifdef FLOATX80
++
++/*----------------------------------------------------------------------------
++| The pattern for a default generated extended double-precision NaN. The
++| `high' and `low' values hold the most- and least-significant bits,
++| respectively.
++*----------------------------------------------------------------------------*/
++#define floatx80_default_nan_high 0x7FFF
++#define floatx80_default_nan_low LIT64( 0xFFFFFFFFFFFFFFFF )
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the extended double-precision floating-point value `a' is a
++| NaN; otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag floatx80_is_nan( floatx80 a )
++{
++
++ return ( ( a.high & 0x7FFF ) == 0x7FFF ) && (bits64) ( a.low<<1 );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the extended double-precision floating-point value `a' is a
++| signaling NaN; otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag floatx80_is_signaling_nan( floatx80 a )
++{
++ bits64 aLow;
++
++ aLow = a.low & ~ LIT64( 0x4000000000000000 );
++ return
++ ( ( a.high & 0x7FFF ) == 0x7FFF )
++ && (bits64) ( aLow<<1 )
++ && ( a.low == aLow );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the extended double-precision floating-
++| point NaN `a' to the canonical NaN format. If `a' is a signaling NaN, the
++| invalid exception is raised.
++*----------------------------------------------------------------------------*/
++
++static commonNaNT floatx80ToCommonNaN( floatx80 a )
++{
++ commonNaNT z;
++
++ if ( floatx80_is_signaling_nan( a ) ) float_raise( float_flag_invalid );
++ z.sign = a.high>>15;
++ z.low = 0;
++ z.high = a.low<<1;
++ return z;
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the canonical NaN `a' to the extended
++| double-precision floating-point format.
++*----------------------------------------------------------------------------*/
++
++static floatx80 commonNaNToFloatx80( commonNaNT a )
++{
++ floatx80 z;
++
++ z.low = LIT64( 0xC000000000000000 ) | ( a.high>>1 );
++ z.high = ( ( (bits16) a.sign )<<15 ) | 0x7FFF;
++ return z;
++
++}
++
++/*----------------------------------------------------------------------------
++| Takes two extended double-precision floating-point values `a' and `b', one
++| of which is a NaN, and returns the appropriate NaN result. If either `a' or
++| `b' is a signaling NaN, the invalid exception is raised.
++*----------------------------------------------------------------------------*/
++
++static floatx80 propagateFloatx80NaN( floatx80 a, floatx80 b )
++{
++ flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN;
++
++ aIsNaN = floatx80_is_nan( a );
++ aIsSignalingNaN = floatx80_is_signaling_nan( a );
++ bIsNaN = floatx80_is_nan( b );
++ bIsSignalingNaN = floatx80_is_signaling_nan( b );
++ a.low |= LIT64( 0xC000000000000000 );
++ b.low |= LIT64( 0xC000000000000000 );
++ if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid );
++ return bIsSignalingNaN ? b : aIsSignalingNaN ? a : bIsNaN ? b : a;
++
++}
++
++#endif
++
++#ifdef FLOAT128
++
++/*----------------------------------------------------------------------------
++| The pattern for a default generated quadruple-precision NaN. The `high' and
++| `low' values hold the most- and least-significant bits, respectively.
++*----------------------------------------------------------------------------*/
++#define float128_default_nan_high LIT64( 0x7FFFFFFFFFFFFFFF )
++#define float128_default_nan_low LIT64( 0xFFFFFFFFFFFFFFFF )
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the quadruple-precision floating-point value `a' is a NaN;
++| otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float128_is_nan( float128 a )
++{
++
++ return
++ ( LIT64( 0xFFFE000000000000 ) <= (bits64) ( a.high<<1 ) )
++ && ( a.low || ( a.high & LIT64( 0x0000FFFFFFFFFFFF ) ) );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns 1 if the quadruple-precision floating-point value `a' is a
++| signaling NaN; otherwise returns 0.
++*----------------------------------------------------------------------------*/
++
++flag float128_is_signaling_nan( float128 a )
++{
++
++ return
++ ( ( ( a.high>>47 ) & 0xFFFF ) == 0xFFFE )
++ && ( a.low || ( a.high & LIT64( 0x00007FFFFFFFFFFF ) ) );
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the quadruple-precision floating-point NaN
++| `a' to the canonical NaN format. If `a' is a signaling NaN, the invalid
++| exception is raised.
++*----------------------------------------------------------------------------*/
++
++static commonNaNT float128ToCommonNaN( float128 a )
++{
++ commonNaNT z;
++
++ if ( float128_is_signaling_nan( a ) ) float_raise( float_flag_invalid );
++ z.sign = a.high>>63;
++ shortShift128Left( a.high, a.low, 16, &z.high, &z.low );
++ return z;
++
++}
++
++/*----------------------------------------------------------------------------
++| Returns the result of converting the canonical NaN `a' to the quadruple-
++| precision floating-point format.
++*----------------------------------------------------------------------------*/
++
++static float128 commonNaNToFloat128( commonNaNT a )
++{
++ float128 z;
++
++ shift128Right( a.high, a.low, 16, &z.high, &z.low );
++ z.high |= ( ( (bits64) a.sign )<<63 ) | LIT64( 0x7FFF800000000000 );
++ return z;
++
++}
++
++/*----------------------------------------------------------------------------
++| Takes two quadruple-precision floating-point values `a' and `b', one of
++| which is a NaN, and returns the appropriate NaN result. If either `a' or
++| `b' is a signaling NaN, the invalid exception is raised.
++*----------------------------------------------------------------------------*/
++
++static float128 propagateFloat128NaN( float128 a, float128 b )
++{
++ flag aIsNaN, aIsSignalingNaN, bIsNaN, bIsSignalingNaN;
++
++ aIsNaN = float128_is_nan( a );
++ aIsSignalingNaN = float128_is_signaling_nan( a );
++ bIsNaN = float128_is_nan( b );
++ bIsSignalingNaN = float128_is_signaling_nan( b );
++ a.high |= LIT64( 0x0000800000000000 );
++ b.high |= LIT64( 0x0000800000000000 );
++ if ( aIsSignalingNaN | bIsSignalingNaN ) float_raise( float_flag_invalid );
++ return bIsSignalingNaN ? b : aIsSignalingNaN ? a : bIsNaN ? b : a;
++
++}
++
++#endif
++
+diff --git a/SoftFloat-2b/softfloat/bits64/powerpc-GCC/softfloat.h b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/softfloat.h
+new file mode 100644
+index 0000000..5b7cb1c
+--- /dev/null
++++ b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/softfloat.h
+@@ -0,0 +1,269 @@
++/*
++ * This file is derived from softfloat/bits64/386-Win32-GCC/softfloat.h,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*============================================================================
++
++This C header file is part of the SoftFloat IEC/IEEE Floating-point Arithmetic
++Package, Release 2b.
++
++Written by John R. Hauser. This work was made possible in part by the
++International Computer Science Institute, located at Suite 600, 1947 Center
++Street, Berkeley, California 94704. Funding was partially provided by the
++National Science Foundation under grant MIP-9311980. The original version
++of this code was written as part of a project to build a fixed-point vector
++processor in collaboration with the University of California at Berkeley,
++overseen by Profs. Nelson Morgan and John Wawrzynek. More information
++is available through the Web page `http://www.cs.berkeley.edu/~jhauser/
++arithmetic/SoftFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
++been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
++RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
++AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
++COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
++EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
++INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
++OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) the source code for the derivative work includes prominent notice that
++the work is derivative, and (2) the source code includes prominent notice with
++these four paragraphs for those parts of this code that are retained.
++
++=============================================================================*/
++
++/*----------------------------------------------------------------------------
++| The macro `FLOATX80' must be defined to enable the extended double-precision
++| floating-point format `floatx80'. If this macro is not defined, the
++| `floatx80' type will not be defined, and none of the functions that either
++| input or output the `floatx80' type will be defined. The same applies to
++| the `FLOAT128' macro and the quadruple-precision format `float128'.
++*----------------------------------------------------------------------------*/
++#define FLOATX80
++#define FLOAT128
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE floating-point types.
++*----------------------------------------------------------------------------*/
++typedef unsigned int float32;
++typedef unsigned long long float64;
++#ifdef FLOATX80
++typedef struct {
++ unsigned short high;
++ unsigned long long low;
++} floatx80;
++#endif
++#ifdef FLOAT128
++typedef struct {
++ unsigned long long high, low;
++} float128;
++#endif
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE floating-point underflow tininess-detection mode.
++*----------------------------------------------------------------------------*/
++extern int float_detect_tininess;
++enum {
++ float_tininess_after_rounding = 0,
++ float_tininess_before_rounding = 1
++};
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE floating-point rounding mode.
++*----------------------------------------------------------------------------*/
++extern int float_rounding_mode;
++enum {
++ float_round_nearest_even = 0,
++ float_round_to_zero = 1,
++ float_round_up = 2,
++ float_round_down = 3
++};
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE floating-point exception flags.
++*----------------------------------------------------------------------------*/
++extern int float_exception_flags;
++enum {
++ float_flag_inexact = 1,
++ float_flag_divbyzero = 2,
++ float_flag_underflow = 4,
++ float_flag_overflow = 8,
++ float_flag_invalid = 16
++};
++
++/*----------------------------------------------------------------------------
++| Routine to raise any or all of the software IEC/IEEE floating-point
++| exception flags.
++*----------------------------------------------------------------------------*/
++void float_raise( int );
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE integer-to-floating-point conversion routines.
++*----------------------------------------------------------------------------*/
++float32 int32_to_float32( int );
++float64 int32_to_float64( int );
++#ifdef FLOATX80
++floatx80 int32_to_floatx80( int );
++#endif
++#ifdef FLOAT128
++float128 int32_to_float128( int );
++#endif
++float32 int64_to_float32( long long );
++float64 int64_to_float64( long long );
++#ifdef FLOATX80
++floatx80 int64_to_floatx80( long long );
++#endif
++#ifdef FLOAT128
++float128 int64_to_float128( long long );
++#endif
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE single-precision conversion routines.
++*----------------------------------------------------------------------------*/
++int float32_to_int32( float32 );
++int float32_to_int32_round_to_zero( float32 );
++long long float32_to_int64( float32 );
++long long float32_to_int64_round_to_zero( float32 );
++float64 float32_to_float64( float32 );
++#ifdef FLOATX80
++floatx80 float32_to_floatx80( float32 );
++#endif
++#ifdef FLOAT128
++float128 float32_to_float128( float32 );
++#endif
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE single-precision operations.
++*----------------------------------------------------------------------------*/
++float32 float32_round_to_int( float32 );
++float32 float32_add( float32, float32 );
++float32 float32_sub( float32, float32 );
++float32 float32_mul( float32, float32 );
++float32 float32_div( float32, float32 );
++float32 float32_rem( float32, float32 );
++float32 float32_sqrt( float32 );
++int float32_eq( float32, float32 );
++int float32_le( float32, float32 );
++int float32_lt( float32, float32 );
++int float32_eq_signaling( float32, float32 );
++int float32_le_quiet( float32, float32 );
++int float32_lt_quiet( float32, float32 );
++int float32_is_signaling_nan( float32 );
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE double-precision conversion routines.
++*----------------------------------------------------------------------------*/
++int float64_to_int32( float64 );
++int float64_to_int32_round_to_zero( float64 );
++long long float64_to_int64( float64 );
++long long float64_to_int64_round_to_zero( float64 );
++float32 float64_to_float32( float64 );
++#ifdef FLOATX80
++floatx80 float64_to_floatx80( float64 );
++#endif
++#ifdef FLOAT128
++float128 float64_to_float128( float64 );
++#endif
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE double-precision operations.
++*----------------------------------------------------------------------------*/
++float64 float64_round_to_int( float64 );
++float64 float64_add( float64, float64 );
++float64 float64_sub( float64, float64 );
++float64 float64_mul( float64, float64 );
++float64 float64_div( float64, float64 );
++float64 float64_rem( float64, float64 );
++float64 float64_sqrt( float64 );
++int float64_eq( float64, float64 );
++int float64_le( float64, float64 );
++int float64_lt( float64, float64 );
++int float64_eq_signaling( float64, float64 );
++int float64_le_quiet( float64, float64 );
++int float64_lt_quiet( float64, float64 );
++int float64_is_signaling_nan( float64 );
++
++#ifdef FLOATX80
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE extended double-precision conversion routines.
++*----------------------------------------------------------------------------*/
++int floatx80_to_int32( floatx80 );
++int floatx80_to_int32_round_to_zero( floatx80 );
++long long floatx80_to_int64( floatx80 );
++long long floatx80_to_int64_round_to_zero( floatx80 );
++float32 floatx80_to_float32( floatx80 );
++float64 floatx80_to_float64( floatx80 );
++#ifdef FLOAT128
++float128 floatx80_to_float128( floatx80 );
++#endif
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE extended double-precision rounding precision. Valid
++| values are 32, 64, and 80.
++*----------------------------------------------------------------------------*/
++extern int floatx80_rounding_precision;
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE extended double-precision operations.
++*----------------------------------------------------------------------------*/
++floatx80 floatx80_round_to_int( floatx80 );
++floatx80 floatx80_add( floatx80, floatx80 );
++floatx80 floatx80_sub( floatx80, floatx80 );
++floatx80 floatx80_mul( floatx80, floatx80 );
++floatx80 floatx80_div( floatx80, floatx80 );
++floatx80 floatx80_rem( floatx80, floatx80 );
++floatx80 floatx80_sqrt( floatx80 );
++int floatx80_eq( floatx80, floatx80 );
++int floatx80_le( floatx80, floatx80 );
++int floatx80_lt( floatx80, floatx80 );
++int floatx80_eq_signaling( floatx80, floatx80 );
++int floatx80_le_quiet( floatx80, floatx80 );
++int floatx80_lt_quiet( floatx80, floatx80 );
++int floatx80_is_signaling_nan( floatx80 );
++
++#endif
++
++#ifdef FLOAT128
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE quadruple-precision conversion routines.
++*----------------------------------------------------------------------------*/
++int float128_to_int32( float128 );
++int float128_to_int32_round_to_zero( float128 );
++long long float128_to_int64( float128 );
++long long float128_to_int64_round_to_zero( float128 );
++float32 float128_to_float32( float128 );
++float64 float128_to_float64( float128 );
++#ifdef FLOATX80
++floatx80 float128_to_floatx80( float128 );
++#endif
++
++/*----------------------------------------------------------------------------
++| Software IEC/IEEE quadruple-precision operations.
++*----------------------------------------------------------------------------*/
++float128 float128_round_to_int( float128 );
++float128 float128_add( float128, float128 );
++float128 float128_sub( float128, float128 );
++float128 float128_mul( float128, float128 );
++float128 float128_div( float128, float128 );
++float128 float128_rem( float128, float128 );
++float128 float128_sqrt( float128 );
++int float128_eq( float128, float128 );
++int float128_le( float128, float128 );
++int float128_lt( float128, float128 );
++int float128_eq_signaling( float128, float128 );
++int float128_le_quiet( float128, float128 );
++int float128_lt_quiet( float128, float128 );
++int float128_is_signaling_nan( float128 );
++
++#endif
++
+--
+1.5.4
+
diff --git a/bsp/meta-freescale/recipes-extended/testfloat/files/TestFloat-powerpc-E500v2-SPE-1.patch b/bsp/meta-freescale/recipes-extended/testfloat/files/TestFloat-powerpc-E500v2-SPE-1.patch
new file mode 100644
index 00000000..c34421cf
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/testfloat/files/TestFloat-powerpc-E500v2-SPE-1.patch
@@ -0,0 +1,1644 @@
+This patch adds PowerPC E500v2 SPE support in TestFloat.
+And it disables the testing for hardware that can not trigger SPE interrupt.
+
+Signed-off-by: Ebony Zhu <ebony.zhu@freescale.com>
+Signed-off-by: Liu Yu <Yu.Liu@freescale.com>
+---
+ processors/POWERPC-gcc.h | 99 +++++
+ testfloat/powerpc-linux-gcc/Makefile | 83 +++++
+ testfloat/powerpc-linux-gcc/milieu.h | 71 ++++
+ testfloat/powerpc-linux-gcc/systflags.c | 107 ++++++
+ testfloat/powerpc-linux-gcc/systfloat.c | 595 +++++++++++++++++++++++++++++++
+ testfloat/powerpc-linux-gcc/systmodes.c | 67 ++++
+ testfloat/templates/Makefile | 18 +-
+ testfloat/templates/milieu.h | 2 +-
+ testfloat/testFunction.h | 2 +-
+ testfloat/testLoops.c | 216 +++++++++++
+ 10 files changed, 1252 insertions(+), 8 deletions(-)
+ create mode 100644 processors/POWERPC-gcc.h
+ create mode 100644 testfloat/powerpc-linux-gcc/Makefile
+ create mode 100644 testfloat/powerpc-linux-gcc/milieu.h
+ create mode 100644 testfloat/powerpc-linux-gcc/systflags.c
+ create mode 100644 testfloat/powerpc-linux-gcc/systfloat.c
+ create mode 100644 testfloat/powerpc-linux-gcc/systmodes.c
+
+diff --git a/processors/POWERPC-gcc.h b/processors/POWERPC-gcc.h
+new file mode 100644
+index 0000000..4201faa
+--- /dev/null
++++ b/processors/POWERPC-gcc.h
+@@ -0,0 +1,99 @@
++/*
++ * This file is derived from processors/i386-GCC.h,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ *
++ * THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort has
++ * been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT TIMES
++ * RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO PERSONS
++ * AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ALL LOSSES,
++ * COSTS, OR OTHER PROBLEMS THEY INCUR DUE TO THE SOFTWARE, AND WHO FURTHERMORE
++ * EFFECTIVELY INDEMNIFY JOHN HAUSER AND THE INTERNATIONAL COMPUTER SCIENCE
++ * INSTITUTE (possibly via similar legal warning) AGAINST ALL LOSSES, COSTS, OR
++ * OTHER PROBLEMS INCURRED BY THEIR CUSTOMERS AND CLIENTS DUE TO THE SOFTWARE.
++ */
++
++/*
++-------------------------------------------------------------------------------
++One of the macros `BIGENDIAN' or `LITTLEENDIAN' must be defined.
++-------------------------------------------------------------------------------
++*/
++#define BIGENDIAN
++
++/*
++-------------------------------------------------------------------------------
++The macro `BITS64' can be defined to indicate that 64-bit integer types are
++supported by the compiler.
++-------------------------------------------------------------------------------
++*/
++#undef BITS64
++
++/*
++-------------------------------------------------------------------------------
++Each of the following `typedef's defines the most convenient type that holds
++integers of at least as many bits as specified. For example, `uint8' should
++be the most convenient type that can hold unsigned integers of as many as
++8 bits. The `flag' type must be able to hold either a 0 or 1. For most
++implementations of C, `flag', `uint8', and `int8' should all be `typedef'ed
++to the same as `int'.
++-------------------------------------------------------------------------------
++*/
++typedef int flag;
++typedef int uint8;
++typedef int int8;
++typedef int uint16;
++typedef int int16;
++typedef unsigned int uint32;
++typedef signed int int32;
++#ifdef BITS64
++typedef unsigned long long int uint64;
++typedef signed long long int int64;
++#endif
++
++/*
++-------------------------------------------------------------------------------
++Each of the following `typedef's defines a type that holds integers
++of _exactly_ the number of bits specified. For instance, for most
++implementation of C, `bits16' and `sbits16' should be `typedef'ed to
++`unsigned short int' and `signed short int' (or `short int'), respectively.
++-------------------------------------------------------------------------------
++*/
++typedef unsigned char bits8;
++typedef signed char sbits8;
++typedef unsigned short int bits16;
++typedef signed short int sbits16;
++typedef unsigned int bits32;
++typedef signed int sbits32;
++#ifdef BITS64
++typedef unsigned long long int bits64;
++typedef signed long long int sbits64;
++#endif
++
++#ifdef BITS64
++/*
++-------------------------------------------------------------------------------
++The `LIT64' macro takes as its argument a textual integer literal and
++if necessary ``marks'' the literal as having a 64-bit integer type.
++For example, the GNU C Compiler (`gcc') requires that 64-bit literals be
++appended with the letters `LL' standing for `long long', which is `gcc's
++name for the 64-bit integer type. Some compilers may allow `LIT64' to be
++defined as the identity macro: `#define LIT64( a ) a'.
++-------------------------------------------------------------------------------
++*/
++#define LIT64( a ) a##LL
++#endif
++
++/*
++-------------------------------------------------------------------------------
++The macro `INLINE' can be used before functions that should be inlined. If
++a compiler does not support explicit inlining, this macro should be defined
++to be `static'.
++-------------------------------------------------------------------------------
++*/
++#define INLINE extern inline
++
+diff --git a/testfloat/powerpc-linux-gcc/Makefile b/testfloat/powerpc-linux-gcc/Makefile
+new file mode 100644
+index 0000000..de50aad
+--- /dev/null
++++ b/testfloat/powerpc-linux-gcc/Makefile
+@@ -0,0 +1,83 @@
++
++PROCESSOR_H = ../../processors/POWERPC-gcc.h
++SOFTFLOAT_VERSION = bits32
++TARGET = powerpc-GCC
++SOFTFLOAT_DIR = ../../SoftFloat-2b/softfloat/$(SOFTFLOAT_VERSION)/$(TARGET)
++
++OBJ = .o
++EXE =
++INCLUDES = -I. -I.. -I$(SOFTFLOAT_DIR)
++
++COMPILE_C = $(COMPILE_PREFIX)gcc -c -o $@ $(INCLUDES) -I- -O $(EXTRA_CFLAGS)
++
++COMPILE_C_HARD = $(COMPILE_PREFIX)gcc -c -te500v2 -o $@ $(INCLUDES)
++
++COMPILE_SLOWFLOAT_C = $(COMPILE_PREFIX)gcc -c -o $@ $(INCLUDES) -I- -O
++
++LINK = $(COMPILE_PREFIX)gcc -lm -o $@
++
++SOFTFLOAT_H = $(SOFTFLOAT_DIR)/softfloat.h
++SOFTFLOAT_OBJ = $(SOFTFLOAT_DIR)/softfloat$(OBJ)
++
++ALL: testsoftfloat$(EXE) testfloat$(EXE)
++
++systmodes$(OBJ): milieu.h systmodes.c
++ $(COMPILE_C) systmodes.c
++
++systflags$(OBJ): milieu.h ../systflags.h systflags.c
++ $(COMPILE_C) systflags.c
++
++systfloat$(OBJ): milieu.h $(SOFTFLOAT_H) ../systfloat.h systfloat.c
++ $(COMPILE_C_HARD) systfloat.c
++
++#------------------------------------------------------------------------------
++# Probably O.K. below here.
++#------------------------------------------------------------------------------
++
++milieu.h: $(PROCESSOR_H)
++ touch milieu.h
++
++fail$(OBJ): milieu.h ../fail.h
++ $(COMPILE_C) ../fail.c
++
++random$(OBJ): milieu.h ../random.h
++ $(COMPILE_C) ../random.c
++
++testCases$(OBJ): milieu.h ../fail.h ../random.h $(SOFTFLOAT_H) ../testCases.h ../testCases.c
++ $(COMPILE_C) ../testCases.c
++
++writeHex$(OBJ): milieu.h $(SOFTFLOAT_H) ../writeHex.h ../writeHex.c
++ $(COMPILE_C) ../writeHex.c
++
++testLoops$(OBJ): milieu.h $(SOFTFLOAT_H) ../testCases.h ../writeHex.h ../testLoops.h ../testLoops.c
++ $(COMPILE_C) ../testLoops.c
++
++slowfloat$(OBJ): milieu.h $(SOFTFLOAT_H) ../slowfloat.h ../slowfloat-32.c ../slowfloat-64.c ../slowfloat.c
++ $(COMPILE_SLOWFLOAT_C) ../slowfloat.c
++
++testsoftfloat$(OBJ): milieu.h ../fail.h $(SOFTFLOAT_H) ../testCases.h ../testLoops.h ../slowfloat.h ../testsoftfloat.c
++ $(COMPILE_C) ../testsoftfloat.c
++
++testsoftfloat$(EXE): fail$(OBJ) random$(OBJ) $(SOFTFLOAT_OBJ) testCases$(OBJ) writeHex$(OBJ) testLoops$(OBJ) slowfloat$(OBJ) testsoftfloat$(OBJ) systflags$(OBJ) systmodes$(OBJ)
++ $(LINK) fail$(OBJ) random$(OBJ) $(SOFTFLOAT_OBJ) testCases$(OBJ) writeHex$(OBJ) testLoops$(OBJ) slowfloat$(OBJ) testsoftfloat$(OBJ) systflags$(OBJ) systmodes$(OBJ)
++
++testFunction$(OBJ): milieu.h $(SOFTFLOAT_H) ../testCases.h ../testLoops.h ../systmodes.h ../systflags.h ../systfloat.h ../testFunction.h ../testFunction.c
++ $(COMPILE_C) ../testFunction.c
++
++testfloat$(OBJ): milieu.h ../fail.h $(SOFTFLOAT_H) ../testCases.h ../testLoops.h ../systflags.h ../testFunction.h ../testfloat.c
++ $(COMPILE_C) ../testfloat.c
++
++testfloat$(EXE): fail$(OBJ) random$(OBJ) $(SOFTFLOAT_OBJ) testCases$(OBJ) writeHex$(OBJ) testLoops$(OBJ) systmodes$(OBJ) systflags$(OBJ) systfloat$(OBJ) testFunction$(OBJ) testfloat$(OBJ)
++ $(LINK) fail$(OBJ) random$(OBJ) $(SOFTFLOAT_OBJ) testCases$(OBJ) writeHex$(OBJ) testLoops$(OBJ) systmodes$(OBJ) systflags$(OBJ) systfloat$(OBJ) testFunction$(OBJ) testfloat$(OBJ)
++
++$(SOFTFLOAT_OBJ):
++ make -C $(SOFTFLOAT_DIR)
++
++cp: ALL
++ cp testsoftfloat$(EXE) ../../test_softfloat$(EXE)
++ cp testfloat$(EXE) ../../test_float$(EXE)
++
++clean:
++ make -C $(SOFTFLOAT_DIR) clean
++ rm -f *.o testfloat$(EXE) testsoftfloat$(EXE)
++ rm -f ../../test_softfloat$(EXE) ../../test_float$(EXE)
+diff --git a/testfloat/powerpc-linux-gcc/milieu.h b/testfloat/powerpc-linux-gcc/milieu.h
+new file mode 100644
+index 0000000..29d2b18
+--- /dev/null
++++ b/testfloat/powerpc-linux-gcc/milieu.h
+@@ -0,0 +1,71 @@
++/*
++ * This file is derived from testfloat/386-Win32-gcc/milieu.h,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*
++===============================================================================
++
++This C header file is part of TestFloat, Release 2a, a package of programs
++for testing the correctness of floating-point arithmetic complying to the
++IEC/IEEE Standard for Floating-Point.
++
++Written by John R. Hauser. More information is available through the Web
++page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
++has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
++TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
++PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
++AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) they include prominent notice that the work is derivative, and (2) they
++include prominent notice akin to these four paragraphs for those parts of
++this code that are retained.
++
++===============================================================================
++*/
++
++/*
++-------------------------------------------------------------------------------
++Include common integer types and flags.
++-------------------------------------------------------------------------------
++*/
++#include "../../processors/POWERPC-gcc.h"
++/*
++-------------------------------------------------------------------------------
++If the `BITS64' macro is defined by the processor header file but the
++version of SoftFloat being used/tested is the 32-bit one (`bits32'), the
++`BITS64' macro must be undefined here.
++-------------------------------------------------------------------------------
++*/
++
++#undef BITS64
++/*
++-------------------------------------------------------------------------------
++The macro `LONG_DOUBLE_IS_FLOATX80' can be defined to indicate that the
++C compiler supports the type `long double' as an extended double-precision
++format. Alternatively, the macro `LONG_DOUBLE_IS_FLOAT128' can be defined
++to indicate that `long double' is a quadruple-precision format. If neither
++of these macros is defined, `long double' will be ignored.
++-------------------------------------------------------------------------------
++#define LONG_DOUBLE_IS_FLOATX80
++*/
++
++/*
++-------------------------------------------------------------------------------
++Symbolic Boolean literals.
++-------------------------------------------------------------------------------
++*/
++enum {
++ FALSE = 0,
++ TRUE = 1
++};
++
+diff --git a/testfloat/powerpc-linux-gcc/systflags.c b/testfloat/powerpc-linux-gcc/systflags.c
+new file mode 100644
+index 0000000..c382442
+--- /dev/null
++++ b/testfloat/powerpc-linux-gcc/systflags.c
+@@ -0,0 +1,107 @@
++/*
++ * This file is derived from testfloat/386-Win32-gcc/systflags.c,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*
++===============================================================================
++
++This C source file is part of TestFloat, Release 2a, a package of programs
++for testing the correctness of floating-point arithmetic complying to the
++IEC/IEEE Standard for Floating-Point.
++
++Written by John R. Hauser. More information is available through the Web
++page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
++has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
++TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
++PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
++AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) they include prominent notice that the work is derivative, and (2) they
++include prominent notice akin to these four paragraphs for those parts of
++this code that are retained.
++
++===============================================================================
++*/
++
++#include "milieu.h"
++#include "systflags.h"
++#include <fenv.h>
++#include <stdio.h>
++#include <math.h>
++#include <bits/nan.h>
++#include <bits/inf.h>
++
++#ifdef __SPE__
++
++#include <spe.h>
++
++
++#define SPE_FINV_ENABLE (1UL << 5)
++#define SPE_FDBZ_ENABLE (1UL << 4)
++#define SPE_FUNF_ENABLE (1UL << 3)
++#define SPE_FOVF_ENABLE (1UL << 2)
++
++#define SPE_FG (1UL << 13)
++#define SPE_FX (1UL << 12)
++#define SPE_FINV (1UL << 11)
++#define SPE_FDBZ (1UL << 10)
++#define SPE_FUNF (1UL << 9)
++#define SPE_FOVF (1UL << 8)
++
++#define SPE_FG_H (1UL << 29)
++#define SPE_FX_H (1UL << 28)
++#define SPE_FINV_H (1UL << 27)
++#define SPE_FDBZ_H (1UL << 26)
++#define SPE_FUNF_H (1UL << 25)
++#define SPE_FOVF_H (1UL << 24)
++
++static int is_soft_emu = 0;
++
++#endif
++/*
++-------------------------------------------------------------------------------
++Clears the system's IEC/IEEE floating-point exception flags. Returns the
++previous value of the flags.
++-------------------------------------------------------------------------------
++*/
++extern int rounding;
++unsigned int spefscr = 0;
++
++int8 syst_float_flags_clear( void )
++{
++#ifdef TEST_KERNEL_EMU
++ if( (spefscr & (SPE_FINV | SPE_FINV_H))
++ || (spefscr & (SPE_FDBZ | SPE_FDBZ_H))
++ || (spefscr & (SPE_FUNF | SPE_FUNF_H))
++ || (spefscr & (SPE_FOVF | SPE_FOVF_H))
++ || (spefscr & (SPE_FX | SPE_FG | SPE_FX_H | SPE_FG_H))){
++ is_soft_emu = 1;
++ } else {
++ is_soft_emu = 0;
++ }
++#endif
++ __builtin_spe_mtspefscr(0x3c|(rounding & 0x3));
++
++ return ((spefscr>>17) & 0x1f);
++}
++
++int syst_float_is_soft_emu(void)
++{
++ int ret = 0;
++#ifdef TEST_KERNEL_EMU
++ ret = is_soft_emu;
++#endif
++ return ret;
++}
++
++
+diff --git a/testfloat/powerpc-linux-gcc/systfloat.c b/testfloat/powerpc-linux-gcc/systfloat.c
+new file mode 100644
+index 0000000..8d06f9f
+--- /dev/null
++++ b/testfloat/powerpc-linux-gcc/systfloat.c
+@@ -0,0 +1,595 @@
++/*
++ * This file is derived from testfloat/systfloat.c,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*
++===============================================================================
++
++This C source file is part of TestFloat, Release 2a, a package of programs
++for testing the correctness of floating-point arithmetic complying to the
++IEC/IEEE Standard for Floating-Point.
++
++Written by John R. Hauser. More information is available through the Web
++page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
++has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
++TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
++PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
++AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) they include prominent notice that the work is derivative, and (2) they
++include prominent notice akin to these four paragraphs for those parts of
++this code that are retained.
++
++===============================================================================
++*/
++
++#include <math.h>
++#include "milieu.h"
++#include "softfloat.h"
++#include "systfloat.h"
++
++extern unsigned int spefscr;
++
++float32 syst_int32_to_float32( int32 a )
++{
++ float32 z;
++
++ *( (float *) &z ) = a;
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++float64 syst_int32_to_float64( int32 a )
++{
++ float64 z;
++
++ *( (double *) &z ) = a;
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
++
++floatx80 syst_int32_to_floatx80( int32 a )
++{
++ floatx80 z;
++
++ *( (long double *) &z ) = a;
++ return z;
++
++}
++
++#endif
++
++#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
++
++float128 syst_int32_to_float128( int32 a )
++{
++ float128 z;
++
++ *( (long double *) &z ) = a;
++ return z;
++
++}
++
++#endif
++
++#ifdef BITS64
++
++float32 syst_int64_to_float32( int64 a )
++{
++ float32 z;
++
++ *( (float *) &z ) = a;
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++float64 syst_int64_to_float64( int64 a )
++{
++ float64 z;
++
++ *( (double *) &z ) = a;
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
++
++floatx80 syst_int64_to_floatx80( int64 a )
++{
++ floatx80 z;
++
++ *( (long double *) &z ) = a;
++ return z;
++
++}
++
++#endif
++
++#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
++
++float128 syst_int64_to_float128( int64 a )
++{
++ float128 z;
++
++ *( (long double *) &z ) = a;
++ return z;
++
++}
++
++#endif
++
++#endif
++
++int32 syst_float32_to_int32_round_to_zero( float32 a )
++{
++ int32 z = *( (float *) &a );
++ spefscr = __builtin_spe_mfspefscr();
++
++ return z;
++
++}
++
++#ifdef BITS64
++
++int64 syst_float32_to_int64_round_to_zero( float32 a )
++{
++ int64 z = *( (float *) &a );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++#endif
++
++float64 syst_float32_to_float64( float32 a )
++{
++ float64 z;
++
++ *( (double *) &z ) = *( (float *) &a );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
++
++floatx80 syst_float32_to_floatx80( float32 a )
++{
++ floatx80 z;
++
++ *( (long double *) &z ) = *( (float *) &a );
++ return z;
++
++}
++
++#endif
++
++#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
++
++float128 syst_float32_to_float128( float32 a )
++{
++ float128 z;
++
++ *( (long double *) &z ) = *( (float *) &a );
++ return z;
++
++}
++
++#endif
++
++float32 syst_float32_add( float32 a, float32 b )
++{
++ float32 z;
++
++ *( (float *) &z ) = *( (float *) &a ) + *( (float *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++float32 syst_float32_sub( float32 a, float32 b )
++{
++ float32 z;
++
++ *( (float *) &z ) = *( (float *) &a ) - *( (float *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++float32 syst_float32_mul( float32 a, float32 b )
++{
++ float32 z;
++
++ *( (float *) &z ) = *( (float *) &a ) * *( (float *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++float32 syst_float32_div( float32 a, float32 b )
++{
++ float32 z;
++
++ *( (float *) &z ) = *( (float *) &a ) / *( (float *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++flag syst_float32_eq( float32 a, float32 b )
++{
++ flag f = ( *( (float *) &a ) == *( (float *) &b ) );
++ spefscr = __builtin_spe_mfspefscr();
++ return f;
++
++}
++
++flag syst_float32_le( float32 a, float32 b )
++{
++ flag f = ( *( (float *) &a ) <= *( (float *) &b ) );
++ spefscr = __builtin_spe_mfspefscr();
++ return f;
++
++}
++
++flag syst_float32_lt( float32 a, float32 b )
++{
++ flag f = ( *( (float *) &a ) < *( (float *) &b ) );
++ spefscr = __builtin_spe_mfspefscr();
++ return f;
++
++}
++
++int32 syst_float64_to_int32_round_to_zero( float64 a )
++{
++ int32 z = *( (double *) &a );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++#ifdef BITS64
++
++int64 syst_float64_to_int64_round_to_zero( float64 a )
++{
++ int64 z = *( (double *) &a );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++#endif
++
++float32 syst_float64_to_float32( float64 a )
++{
++ float32 z;
++
++ *( (float *) &z ) = *( (double *) &a );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
++
++floatx80 syst_float64_to_floatx80( float64 a )
++{
++ floatx80 z;
++
++ *( (long double *) &z ) = *( (double *) &a );
++ return z;
++
++}
++
++#endif
++
++#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
++
++float128 syst_float64_to_float128( float64 a )
++{
++ float128 z;
++
++ *( (long double *) &z ) = *( (double *) &a );
++ return z;
++
++}
++
++#endif
++
++float64 syst_float64_add( float64 a, float64 b )
++{
++ float64 z;
++
++ *( (double *) &z ) = *( (double *) &a ) + *( (double *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++float64 syst_float64_sub( float64 a, float64 b )
++{
++ float64 z;
++
++ *( (double *) &z ) = *( (double *) &a ) - *( (double *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++float64 syst_float64_mul( float64 a, float64 b )
++{
++ float64 z;
++
++ *( (double *) &z ) = *( (double *) &a ) * *( (double *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++float64 syst_float64_div( float64 a, float64 b )
++{
++ float64 z;
++
++ *( (double *) &z ) = *( (double *) &a ) / *( (double *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++float64 syst_float64_sqrt( float64 a )
++{
++ /* Ebony
++ float64 z;
++
++ *( (double *) &z ) = sqrt( *( (double *) &a ) );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++ */
++
++}
++
++flag syst_float64_eq( float64 a, float64 b )
++{
++ flag f = ( *( (double *) &a ) == *( (double *) &b ) );
++ spefscr = __builtin_spe_mfspefscr();
++ return f;
++
++}
++
++flag syst_float64_le( float64 a, float64 b )
++{
++ flag f = ( *( (double *) &a ) <= *( (double *) &b ) );
++ spefscr = __builtin_spe_mfspefscr();
++ return f;
++
++}
++
++flag syst_float64_lt( float64 a, float64 b )
++{
++ flag f = ( *( (double *) &a ) < *( (double *) &b ) );
++ spefscr = __builtin_spe_mfspefscr();
++ return f;
++
++}
++
++#if defined( FLOATX80 ) && defined( LONG_DOUBLE_IS_FLOATX80 )
++
++int32 syst_floatx80_to_int32_round_to_zero( floatx80 a )
++{
++
++ return *( (long double *) &a );
++
++}
++
++#ifdef BITS64
++
++int64 syst_floatx80_to_int64_round_to_zero( floatx80 a )
++{
++
++ return *( (long double *) &a );
++
++}
++
++#endif
++
++float32 syst_floatx80_to_float32( floatx80 a )
++{
++ float32 z;
++
++ *( (float *) &z ) = *( (long double *) &a );
++ return z;
++
++}
++
++float64 syst_floatx80_to_float64( floatx80 a )
++{
++ float64 z;
++
++ *( (double *) &z ) = *( (long double *) &a );
++ return z;
++
++}
++
++floatx80 syst_floatx80_add( floatx80 a, floatx80 b )
++{
++ floatx80 z;
++
++ *( (long double *) &z ) =
++ *( (long double *) &a ) + *( (long double *) &b );
++ return z;
++
++}
++
++floatx80 syst_floatx80_sub( floatx80 a, floatx80 b )
++{
++ floatx80 z;
++
++ *( (long double *) &z ) =
++ *( (long double *) &a ) - *( (long double *) &b );
++ return z;
++
++}
++
++floatx80 syst_floatx80_mul( floatx80 a, floatx80 b )
++{
++ floatx80 z;
++
++ *( (long double *) &z ) =
++ *( (long double *) &a ) * *( (long double *) &b );
++ return z;
++
++}
++
++floatx80 syst_floatx80_div( floatx80 a, floatx80 b )
++{
++ floatx80 z;
++
++ *( (long double *) &z ) =
++ *( (long double *) &a ) / *( (long double *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++flag syst_floatx80_eq( floatx80 a, floatx80 b )
++{
++
++ return ( *( (long double *) &a ) == *( (long double *) &b ) );
++
++}
++
++flag syst_floatx80_le( floatx80 a, floatx80 b )
++{
++
++ return ( *( (long double *) &a ) <= *( (long double *) &b ) );
++
++}
++
++flag syst_floatx80_lt( floatx80 a, floatx80 b )
++{
++
++ return ( *( (long double *) &a ) < *( (long double *) &b ) );
++
++}
++
++#endif
++
++#if defined( FLOAT128 ) && defined( LONG_DOUBLE_IS_FLOAT128 )
++
++int32 syst_float128_to_int32_round_to_zero( float128 a )
++{
++
++ return *( (long double *) &a );
++
++}
++
++#ifdef BITS64
++
++int64 syst_float128_to_int64_round_to_zero( float128 a )
++{
++
++ return *( (long double *) &a );
++
++}
++
++#endif
++
++float32 syst_float128_to_float32( float128 a )
++{
++ float32 z;
++
++ *( (float *) &z ) = *( (long double *) &a );
++ return z;
++
++}
++
++float64 syst_float128_to_float64( float128 a )
++{
++ float64 z;
++
++ *( (double *) &z ) = *( (long double *) &a );
++ return z;
++
++}
++
++float128 syst_float128_add( float128 a, float128 b )
++{
++ float128 z;
++
++ *( (long double *) &z ) =
++ *( (long double *) &a ) + *( (long double *) &b );
++ return z;
++
++}
++
++float128 syst_float128_sub( float128 a, float128 b )
++{
++ float128 z;
++
++ *( (long double *) &z ) =
++ *( (long double *) &a ) - *( (long double *) &b );
++ return z;
++
++}
++
++float128 syst_float128_mul( float128 a, float128 b )
++{
++ float128 z;
++
++ *( (long double *) &z ) =
++ *( (long double *) &a ) * *( (long double *) &b );
++ return z;
++
++}
++
++float128 syst_float128_div( float128 a, float128 b )
++{
++ float128 z;
++
++ *( (long double *) &z ) =
++ *( (long double *) &a ) / *( (long double *) &b );
++ spefscr = __builtin_spe_mfspefscr();
++ return z;
++
++}
++
++flag syst_float128_eq( float128 a, float128 b )
++{
++
++ return ( *( (long double *) &a ) == *( (long double *) &b ) );
++
++}
++
++flag syst_float128_le( float128 a, float128 b )
++{
++
++ return ( *( (long double *) &a ) <= *( (long double *) &b ) );
++
++}
++
++flag syst_float128_lt( float128 a, float128 b )
++{
++
++ return ( *( (long double *) &a ) < *( (long double *) &b ) );
++
++}
++
++#endif
++
+diff --git a/testfloat/powerpc-linux-gcc/systmodes.c b/testfloat/powerpc-linux-gcc/systmodes.c
+new file mode 100644
+index 0000000..143cdea
+--- /dev/null
++++ b/testfloat/powerpc-linux-gcc/systmodes.c
+@@ -0,0 +1,67 @@
++/*
++ * This file is derived from testfloat/386-Win32-gcc/systmodes.S,
++ * the copyright for that material belongs to the original owners.
++ *
++ * Additional material and changes where applicable is:
++ * Copyright (C) 2008 Freescale Semiconductor, Inc. All rights reserved.
++ *
++ * Author: Ebony Zhu, <ebony.zhu@freescale.com>
++ * Yu Liu, <yu.liu@freescale.com>
++ */
++
++/*
++===============================================================================
++
++This C source file is part of TestFloat, Release 2a, a package of programs
++for testing the correctness of floating-point arithmetic complying to the
++IEC/IEEE Standard for Floating-Point.
++
++Written by John R. Hauser. More information is available through the Web
++page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
++
++THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
++has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
++TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
++PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
++AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
++
++Derivative works are acceptable, even for commercial purposes, so long as
++(1) they include prominent notice that the work is derivative, and (2) they
++include prominent notice akin to these four paragraphs for those parts of
++this code that are retained.
++
++===============================================================================
++*/
++
++#include <fenv.h>
++#include "milieu.h"
++#include "systmodes.h"
++/*
++-------------------------------------------------------------------------------
++Sets the system's IEC/IEEE floating-point rounding mode. Also disables all
++system exception traps.
++-------------------------------------------------------------------------------
++*/
++int rounding;
++
++void syst_float_set_rounding_mode( int8 roundingMode )
++{
++ (void) fesetround ( roundingMode );
++ rounding = roundingMode;
++}
++
++/*
++-------------------------------------------------------------------------------
++Sets the rounding precision of subsequent extended double-precision
++operations. The `precision' argument should be one of 0, 32, 64, or 80.
++If `precision' is 32, the rounding precision is set equivalent to single
++precision; else if `precision' is 64, the rounding precision is set
++equivalent to double precision; else the rounding precision is set to full
++extended double precision.
++-------------------------------------------------------------------------------
++*/
++void syst_float_set_rounding_precision( int8 precision )
++{
++
++}
++
+diff --git a/testfloat/templates/Makefile b/testfloat/templates/Makefile
+index f5f3cde..18cffe0 100644
+--- a/testfloat/templates/Makefile
++++ b/testfloat/templates/Makefile
+@@ -1,15 +1,21 @@
+
+-PROCESSOR_H = ../../processors/!!!processor.h
++#PROCESSOR_H = ../../processors/!!!processor.h
++PROCESSOR_H = ../../processors/POWERPC-gcc.h
+ SOFTFLOAT_VERSION = bits64
+-TARGET = !!!target
+-SOFTFLOAT_DIR = ../../softfloat/$(SOFTFLOAT_VERSION)/$(TARGET)
++
++#TARGET = !!!target
++TARGET = powerpc-GCC
++SOFTFLOAT_DIR = ../../../SoftFloat-2b/softfloat/$(SOFTFLOAT_VERSION)/$(TARGET)
+
+ OBJ = .o
+ EXE =
+ INCLUDES = -I. -I.. -I$(SOFTFLOAT_DIR)
+-COMPILE_C = gcc -c -o $@ $(INCLUDES) -I- -O2
+-COMPILE_SLOWFLOAT_C = gcc -c -o $@ $(INCLUDES) -I- -O3
+-LINK = gcc -o $@
++#COMPILE_C = gcc -c -o $@ $(INCLUDES) -I- -O2
++#COMPILE_SLOWFLOAT_C = gcc -c -o $@ $(INCLUDES) -I- -O3
++#LINK = gcc -o $@
++COMPILE_C = /opt/mtwk/usr/local/gcc-3_4-e500-glibc-2.3.4-dp/powerpc-linux-gnuspe/bin/powerpc-linux-gnuspe-gcc -c -o $@ $(INCLUDES) -I- -O2
++COMPILE_SLOWFLOAT_C = /opt/mtwk/usr/local/gcc-3_4-e500-glibc-2.3.4-dp/powerpc-linux-gnuspe/bin/powerpc-linux-gnuspe-gcc -c -o $@ $(INCLUDES) -I- -O3
++LINK = /opt/mtwk/usr/local/gcc-3_4-e500-glibc-2.3.4-dp/powerpc-linux-gnuspe/bin/powerpc-linux-gnuspe-gcc -o $@
+
+ SOFTFLOAT_H = $(SOFTFLOAT_DIR)/softfloat.h
+ SOFTFLOAT_OBJ = $(SOFTFLOAT_DIR)/softfloat$(OBJ)
+diff --git a/testfloat/templates/milieu.h b/testfloat/templates/milieu.h
+index 56d3ac4..3214ca8 100644
+--- a/testfloat/templates/milieu.h
++++ b/testfloat/templates/milieu.h
+@@ -28,7 +28,7 @@ this code that are retained.
+ Include common integer types and flags.
+ -------------------------------------------------------------------------------
+ */
+-#include "../../processors/!!!processor.h"
++#include "../../processors/SPARC-gcc.h"
+
+ /*
+ -------------------------------------------------------------------------------
+diff --git a/testfloat/testFunction.h b/testfloat/testFunction.h
+index 04bf856..00139a7 100644
+--- a/testfloat/testFunction.h
++++ b/testfloat/testFunction.h
+@@ -126,8 +126,8 @@ extern const flag functionExists[ NUM_FUNCTIONS ];
+ enum {
+ ROUND_NEAREST_EVEN = 1,
+ ROUND_TO_ZERO,
+- ROUND_DOWN,
+ ROUND_UP,
++ ROUND_DOWN,
+ NUM_ROUNDINGMODES
+ };
+
+diff --git a/testfloat/testLoops.c b/testfloat/testLoops.c
+index 8ba92f3..ba05548 100644
+--- a/testfloat/testLoops.c
++++ b/testfloat/testLoops.c
+@@ -488,6 +488,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_int32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -539,6 +544,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_int32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -592,6 +602,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_int32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -647,6 +662,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_int32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -702,6 +722,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_int64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -753,6 +778,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_int64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -806,6 +836,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_int64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -861,6 +896,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_int64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -916,6 +956,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -973,6 +1018,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1030,6 +1080,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1087,6 +1142,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1146,6 +1206,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1203,6 +1268,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1260,6 +1330,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float32, testCases_b_float32 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1312,6 +1387,25 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float32, testCases_b_float32 );
+ testFlags = testFlagsFunctionPtr();
++
++if(testCases_a_float32 == 0x7ffffe && testCases_b_float32 == 0x3f7ffffe)
++{
++
++ writeErrorFound( 10000 - count );
++ writeInputs_ab_float32();
++ fputs( " ", stdout );
++ writeOutputs_z_float32( trueZ, trueFlags, testZ, testFlags );
++ fflush( stdout );
++ if (! syst_float_is_soft_emu()){
++ exit(-1);
++ }
++}
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
++
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1370,6 +1464,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1427,6 +1526,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1484,6 +1588,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1541,6 +1650,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1600,6 +1714,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1657,6 +1776,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1714,6 +1838,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float64, testCases_b_float64 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1766,6 +1895,13 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float64, testCases_b_float64 );
+ testFlags = testFlagsFunctionPtr();
++
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
++
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1826,6 +1962,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_floatx80 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1883,6 +2024,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_floatx80 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1940,6 +2086,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_floatx80 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -1995,6 +2146,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_floatx80 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2052,6 +2208,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_floatx80 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2109,6 +2270,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_floatx80 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2166,6 +2332,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_floatx80, testCases_b_floatx80 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2218,6 +2389,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_floatx80, testCases_b_floatx80 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2280,6 +2456,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float128 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2337,6 +2518,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float128 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2394,6 +2580,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float128 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2449,6 +2640,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float128 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2506,6 +2702,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float128 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2563,6 +2764,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float128 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2620,6 +2826,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float128, testCases_b_float128 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+@@ -2672,6 +2883,11 @@ void
+ (void) testFlagsFunctionPtr();
+ testZ = testFunction( testCases_a_float128, testCases_b_float128 );
+ testFlags = testFlagsFunctionPtr();
++#ifdef TEST_KERNEL_EMU
++ if (! syst_float_is_soft_emu()){
++ continue;
++ }
++#endif
+ --count;
+ if ( count == 0 ) {
+ checkEarlyExit();
+--
+1.5.4
+
diff --git a/bsp/meta-freescale/recipes-extended/testfloat/files/Yocto-replace-COMPILE_PREFIX-gcc.patch b/bsp/meta-freescale/recipes-extended/testfloat/files/Yocto-replace-COMPILE_PREFIX-gcc.patch
new file mode 100644
index 00000000..f2ff1c00
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/testfloat/files/Yocto-replace-COMPILE_PREFIX-gcc.patch
@@ -0,0 +1,67 @@
+From 6c7567e05c28b8cb6c7dc68c278950a32feb6f64 Mon Sep 17 00:00:00 2001
+From: Ting Liu <b28495@freescale.com>
+Date: Wed, 9 May 2012 02:42:57 -0500
+Subject: [PATCH] Yocto: replace $(COMPILE_PREFIX)gcc with $(CC) and remove -te500v2 flags
+
+Signed-off-by: Ting Liu <b28495@freescale.com>
+---
+ SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile | 4 ++--
+ SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile | 4 ++--
+ testfloat/powerpc-linux-gcc/Makefile | 8 ++++----
+ 3 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile
+index 28f1e33..4098048 100644
+--- a/SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile
++++ b/SoftFloat-2b/softfloat/bits32/powerpc-GCC/Makefile
+@@ -5,8 +5,8 @@ SOFTFLOAT_MACROS = ../softfloat-macros
+ OBJ = .o
+ EXE =
+ INCLUDES = -I. -I..
+-COMPILE_C = $(COMPILE_PREFIX)gcc -msoft-float -c -o $@ $(INCLUDES) -I- -O2
+-LINK = $(COMPILE_PREFIX)gcc -o $@
++COMPILE_C = $(CC) -msoft-float -c -o $@ $(INCLUDES) -I- -O2
++LINK = $(CC) -o $@
+
+ ALL: softfloat$(OBJ) timesoftfloat$(EXE)
+
+diff --git a/SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile
+index a5e2cc7..c34e16e 100644
+--- a/SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile
++++ b/SoftFloat-2b/softfloat/bits64/powerpc-GCC/Makefile
+@@ -5,8 +5,8 @@ SOFTFLOAT_MACROS = ../softfloat-macros
+ OBJ = .o
+ EXE =
+ INCLUDES = -I. -I..
+-COMPILE_C = $(COMPILE_PREFIX) -mcpu=8548 -mhard-float -mfloat-gprs=double -o $@ $(INCLUDES) -I- -O2
+-LINK = $(COMPILE_PREFIX) -o $@
++COMPILE_C = $(CC) -mcpu=8548 -mhard-float -mfloat-gprs=double -o $@ $(INCLUDES) -I- -O2
++LINK = $(CC) -o $@
+
+ ALL: softfloat$(OBJ) timesoftfloat$(EXE)
+
+diff --git a/testfloat/powerpc-linux-gcc/Makefile b/testfloat/powerpc-linux-gcc/Makefile
+index de50aad..1a8b5f7 100644
+--- a/testfloat/powerpc-linux-gcc/Makefile
++++ b/testfloat/powerpc-linux-gcc/Makefile
+@@ -8,13 +8,13 @@ OBJ = .o
+ EXE =
+ INCLUDES = -I. -I.. -I$(SOFTFLOAT_DIR)
+
+-COMPILE_C = $(COMPILE_PREFIX)gcc -c -o $@ $(INCLUDES) -I- -O $(EXTRA_CFLAGS)
++COMPILE_C = $(CC) -c -o $@ $(INCLUDES) -I- -O $(EXTRA_CFLAGS)
+
+-COMPILE_C_HARD = $(COMPILE_PREFIX)gcc -c -te500v2 -o $@ $(INCLUDES)
++COMPILE_C_HARD = $(CC) -c -o $@ $(INCLUDES)
+
+-COMPILE_SLOWFLOAT_C = $(COMPILE_PREFIX)gcc -c -o $@ $(INCLUDES) -I- -O
++COMPILE_SLOWFLOAT_C = $(CC) -c -o $@ $(INCLUDES) -I- -O
+
+-LINK = $(COMPILE_PREFIX)gcc -lm -o $@
++LINK = $(CC) -lm -o $@ ${LDFLAGS}
+
+ SOFTFLOAT_H = $(SOFTFLOAT_DIR)/softfloat.h
+ SOFTFLOAT_OBJ = $(SOFTFLOAT_DIR)/softfloat$(OBJ)
+--
+1.7.3.4
+
diff --git a/bsp/meta-freescale/recipes-extended/testfloat/testfloat_2a.bb b/bsp/meta-freescale/recipes-extended/testfloat/testfloat_2a.bb
new file mode 100644
index 00000000..800cef3d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/testfloat/testfloat_2a.bb
@@ -0,0 +1,45 @@
+DESCRIPTION = "A program for testing floating-point implementation"
+LICENSE = "TestFloat"
+
+LIC_FILES_CHKSUM = "file://testfloat/testfloat.txt;beginline=87;endline=95;md5=bdb2e8111838a48015c29bd97f5b6145"
+
+SRC_URI = " http://www.jhauser.us/arithmetic/TestFloat-2a.tar.Z;name=TestFloat \
+ http://www.jhauser.us/arithmetic/SoftFloat-2b.tar.Z;name=SoftFloat \
+ "
+SRC_URI_append_qoriq-ppc = " file://SoftFloat-powerpc-1.patch \
+ file://TestFloat-powerpc-E500v2-SPE-1.patch \
+ file://Yocto-replace-COMPILE_PREFIX-gcc.patch \
+ "
+SRC_URI[TestFloat.md5sum] = "4dc889319ae1e0c5381ec511f784553a"
+SRC_URI[TestFloat.sha256sum] = "84d14aa42adefbda2ec9708b42946f7fa59f93689b042684bd027863481f8e4e"
+SRC_URI[SoftFloat.md5sum] = "b4a58b5c941f1a2317e4c2500086e3fa"
+SRC_URI[SoftFloat.sha256sum] = "89d14b55113a2ba8cbda7011443ba1d298d381c89d939515d56c5f18f2febf81"
+
+S = "${WORKDIR}/TestFloat-2a"
+
+do_unpack2(){
+ mv ${WORKDIR}/SoftFloat-2b ${S}/SoftFloat-2b
+ cd ${S}
+ if [ -n "$(which fromdos)" ];then
+ find -type f -exec fromdos {} \;
+ elif [ -n "$(which dos2unix)" ];then
+ find -type f -exec dos2unix {} \;
+ else
+ echo -e "\nERROR: command dos2unix or fromdos not found\n" && return 1
+ fi
+}
+addtask do_unpack2 after do_unpack before do_patch
+
+do_compile(){
+ oe_runmake -C testfloat/powerpc-linux-gcc/ CC="${CC}" EXTRA_CFLAGS="-DTEST_KERNEL_EMU"
+}
+
+do_install(){
+ install -d ${D}/${bindir}
+ install testfloat/powerpc-linux-gcc/testfloat ${D}/${bindir}
+ install testfloat/powerpc-linux-gcc/testsoftfloat ${D}/${bindir}
+}
+
+COMPATIBLE_HOST_e500v2 = ".*"
+COMPATIBLE_HOST ?= "(none)"
+
diff --git a/bsp/meta-freescale/recipes-extended/vpp-core/files/0001-GCC-above-5.4-fails-when-we-specify-arch-funattribut.patch b/bsp/meta-freescale/recipes-extended/vpp-core/files/0001-GCC-above-5.4-fails-when-we-specify-arch-funattribut.patch
new file mode 100644
index 00000000..7f838476
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/vpp-core/files/0001-GCC-above-5.4-fails-when-we-specify-arch-funattribut.patch
@@ -0,0 +1,26 @@
+From 6dab3ad3f91ebcdb16eb9bbb37383718793b675a Mon Sep 17 00:00:00 2001
+From: babak sarashki <babak.sarashki@windriver.com>
+Date: Sat, 29 Sep 2018 09:57:05 -0700
+Subject: [PATCH] GCC above 5.4 fails when we specify arch funattribute.
+
+Here we are as a workaround setting target.
+---
+ src/vppinfra/cpu.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/vppinfra/cpu.h b/src/vppinfra/cpu.h
+index 110815c..618276c 100644
+--- a/src/vppinfra/cpu.h
++++ b/src/vppinfra/cpu.h
+@@ -27,7 +27,7 @@
+
+ #if __x86_64__ && CLIB_DEBUG == 0
+ #define foreach_march_variant(macro, x) \
+- macro(avx2, x, "arch=core-avx2")
++ macro(avx2, x, "avx2")
+ #else
+ #define foreach_march_variant(macro, x)
+ #endif
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-extended/vpp-core/files/0001-Link-vpp-api-with-shared-libs-if-static-is-disabled.patch b/bsp/meta-freescale/recipes-extended/vpp-core/files/0001-Link-vpp-api-with-shared-libs-if-static-is-disabled.patch
new file mode 100644
index 00000000..ae1c9cbc
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/vpp-core/files/0001-Link-vpp-api-with-shared-libs-if-static-is-disabled.patch
@@ -0,0 +1,28 @@
+From 7005c075cab39c8018d224c2fe56ad2e4f2db340 Mon Sep 17 00:00:00 2001
+From: babak sarashki <babak.sarashki@windriver.com>
+Date: Tue, 11 Sep 2018 14:08:51 -0700
+Subject: [PATCH] Link vpp-api with shared libs if static is disabled
+
+TODO: this is not complete
+---
+ src/vpp-api.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/vpp-api.am b/src/vpp-api.am
+index 553eafa..30dfe9d 100644
+--- a/src/vpp-api.am
++++ b/src/vpp-api.am
+@@ -23,8 +23,8 @@ libvppapiclient_la_LIBADD = \
+ -lpthread -lm -lrt
+
+ libvppapiclient_la_LDFLAGS = \
+- -Wl,-L$(top_builddir)/.libs,--whole-archive,-l:libsvm.a,-l:libvppinfra.a,-l:libvlibmemoryclient.a,--no-whole-archive \
+- -Wl,--version-script=$(srcdir)/vpp-api/client/libvppapiclient.map,-lrt
++ -L$(top_builddir)/.libs -lsvm -lvppinfra -lvlibmemoryclient \
++ -Wl,--version-script=$(srcdir)/vpp-api/client/libvppapiclient.map,-lrt
+
+ libvppapiclient_la_DEPENDENCIES = libvppinfra.la libvlibmemoryclient.la libsvm.la
+
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-extended/vpp-core/files/config.h b/bsp/meta-freescale/recipes-extended/vpp-core/files/config.h
new file mode 100644
index 00000000..2d617618
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/vpp-core/files/config.h
@@ -0,0 +1 @@
+#define __PRE_DATA_SIZE 128
diff --git a/bsp/meta-freescale/recipes-extended/vpp-core/vpp-core.bb b/bsp/meta-freescale/recipes-extended/vpp-core/vpp-core.bb
new file mode 100644
index 00000000..2bfbba88
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/vpp-core/vpp-core.bb
@@ -0,0 +1,65 @@
+DESCRIPTION = "Vector Packet Processing"
+
+S = "${WORKDIR}/git"
+PV = "18.01"
+
+LICENSE = "Apache-2.0"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=175792518e4ac015ab6696d16c4f607e"
+
+AUTOTOOLS_SCRIPT_PATH = "${S}/src"
+
+SRCREV = "d3111f07682585079069b91666afffbc73c79cd8"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/vpp;nobranch=1 \
+ file://0001-Link-vpp-api-with-shared-libs-if-static-is-disabled.patch \
+ file://0001-GCC-above-5.4-fails-when-we-specify-arch-funattribut.patch \
+ file://config.h \
+ "
+DEPENDS = "dpdk openssl numactl bison-native vpp-core-native"
+DEPENDS_class-native = "bison-native openssl-native"
+
+inherit autotools
+inherit pkgconfig
+inherit python-dir
+
+export ARCH="arm64"
+
+EXTRA_OECONF = " \
+ --disable-dependency-tracking \
+ --with-libtool-sysroot=${SYSROOT} \
+ --srcdir=${S}/src \
+ --enable-perftool \
+ --disable-papi \
+ --disable-japi \
+ --disable-static \
+ --with-pre-data=128 \
+ --disable-flowprobe-plugin --disable-ixge-plugin \
+ --disable-memif-plugin --disable-sixrd-plugin --disable-gtpu-plugin \
+ --disable-ioam-plugin --disable-lb-plugin --disable-ila-plugin \
+ --disable-nat-plugin --disable-l2e-plugin --disable-stn-plugin \
+ --disable-pppoe-plugin --disable-kubeproxy-plugin \
+ --disable-vom --disable-dpdk-plugin \
+"
+
+EXTRA_OECONF_append_class-native = " --disable-vlib"
+
+
+include vpp-pkgs.inc
+
+
+do_configure_append () {
+ ( cd ${B} && mkdir -p vppinfra vpp/app )
+ cp ${WORKDIR}/config.h ${S}/src/vlib/config.h
+}
+
+do_install_append() {
+ mkdir -p ${D}/etc/vpp
+ cp ${S}/src/vpp/conf/startup.conf ${D}/etc/vpp/startup.conf
+}
+
+
+BBCLASSEXTEND = "native nativesdk"
+
+COMPATIBLE_MACHINE_class-target = "(qoriq)"
+
diff --git a/bsp/meta-freescale/recipes-extended/vpp-core/vpp-pkgs.inc b/bsp/meta-freescale/recipes-extended/vpp-core/vpp-pkgs.inc
new file mode 100644
index 00000000..0dc76092
--- /dev/null
+++ b/bsp/meta-freescale/recipes-extended/vpp-core/vpp-pkgs.inc
@@ -0,0 +1,227 @@
+
+PACKAGES += "vpp-core-data vpp-core-plugin-igmp vpp-core-plugin-gtpu vpp-core-plugin-gbp \
+ vpp-core-plugin-lb vpp-core-plugin-avf vpp-core-plugin-cdp vpp-core-plugin-map vpp-core-plugin-srv6as \
+ vpp-core-plugin-l2e vpp-core-plugin-acl vpp-core-plugin-flowprobe vpp-core-plugin-abf \
+ vpp-core-plugin-pppoe vpp-core-plugin-lacp vpp-core-plugin-ioam vpp-core-plugin-memif \
+ vpp-core-plugin-stn vpp-core-plugin-srv6ad vpp-core-plugin-mactime vpp-core-plugin-unittest \
+ vpp-core-plugin-nat vpp-core-plugin-srv6am vpp-core-plugin-lb_test \
+ vpp-core-plugin-ioam_vxlan_gpe_test vpp-core-plugin-map_test vpp-core-plugin-avf_test \
+ vpp-core-plugin-mactime_test vpp-core-plugin-udp_ping_test vpp-core-plugin-ioam_trace_test \
+ vpp-core-plugin-lacp_test vpp-core-plugin-stn_test vpp-core-plugin-memif_test \
+ vpp-core-plugin-nat_test vpp-core-plugin-acl_test vpp-core-plugin-ioam_export_test \
+ vpp-core-plugin-flowprobe_test vpp-core-plugin-ioam_pot_test \
+ vpp-core-plugin-vxlan_gpe_ioam_export_test vpp-core-plugin-pppoe_test vpp-core-plugin-gtpu_test \
+ vpp-core-plugin-cdp_test vpp-core-plugin-dpdk vpp-core-plugin-dpdk_test vpp-core-test \
+ vpp-core-plugin-tlsopenssl vpp-core-plugin-ixge vpp-core-plugin-ila vpp-core-plugin-data \
+ "
+
+#vpp-core-python
+#FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR} \
+# ${PYTHON_SITEPACKAGES_DIR}/vpp_papi-1.6.1-py2.7.egg \
+# ${PYTHON_SITEPACKAGES_DIR}/vpp_papi-1.6.1-py2.7.egg-info \
+# ${PYTHON_SITEPACKAGES_DIR}/vpp_papi-1.6.1-py2.7.egg-info/requires.txt \
+# ${PYTHON_SITEPACKAGES_DIR}/vpp_papi-1.6.1-py2.7.egg-info/PKG-INFO \
+# ${PYTHON_SITEPACKAGES_DIR}/vpp_papi-1.6.1-py2.7.egg-info/top_level.txt \
+# ${PYTHON_SITEPACKAGES_DIR}/vpp_papi-1.6.1-py2.7.egg-info/dependency_links.txt \
+# ${PYTHON_SITEPACKAGES_DIR}/vpp_papi-1.6.1-py2.7.egg-info/zip-safe \
+# ${PYTHON_SITEPACKAGES_DIR}/vpp_papi-1.6.1-py2.7.egg-info/SOURCES.txt \
+# "
+
+FILES_${PN}-test = " ${bindir}/vpp_json_test "
+FILES_${PN}-plugin-igmp = " ${libdir}/vpp_plugins/igmp_plugin.so "
+FILES_${PN}-plugin-gtpu = " ${libdir}/vpp_plugins/gtpu_plugin.so "
+FILES_${PN}-plugin-gbp = " ${libdir}/vpp_plugins/gbp_plugin.so "
+FILES_${PN}-plugin-lb = " ${libdir}/vpp_plugins/lb_plugin.so "
+FILES_${PN}-plugin-avf = " ${libdir}/vpp_plugins/avf_plugin.so "
+FILES_${PN}-plugin-cdp = " ${libdir}/vpp_plugins/cdp_plugin.so "
+FILES_${PN}-plugin-map = " ${libdir}/vpp_plugins/map_plugin.so "
+FILES_${PN}-plugin-srv6as = " ${libdir}/vpp_plugins/srv6as_plugin.so "
+FILES_${PN}-plugin-tlsopenssl = " ${libdir}/vpp_plugins/tlsopenssl_plugin.so "
+FILES_${PN}-plugin-ixge = " ${libdir}/vpp_plugins/ixge_plugin.so "
+FILES_${PN}-plugin-l2e = " ${libdir}/vpp_plugins/l2e_plugin.so "
+FILES_${PN}-plugin-acl = " ${libdir}/vpp_plugins/acl_plugin.so "
+FILES_${PN}-plugin-flowprobe = " ${libdir}/vpp_plugins/flowprobe_plugin.so "
+FILES_${PN}-plugin-abf = " ${libdir}/vpp_plugins/abf_plugin.so "
+FILES_${PN}-plugin-pppoe = " ${libdir}/vpp_plugins/pppoe_plugin.so "
+FILES_${PN}-plugin-lacp = " ${libdir}/vpp_plugins/lacp_plugin.so "
+FILES_${PN}-plugin-ioam = " ${libdir}/vpp_plugins/ioam_plugin.so "
+FILES_${PN}-plugin-memif = " ${libdir}/vpp_plugins/memif_plugin.so "
+FILES_${PN}-plugin-stn = " ${libdir}/vpp_plugins/stn_plugin.so "
+FILES_${PN}-plugin-srv6ad = " ${libdir}/vpp_plugins/srv6ad_plugin.so "
+FILES_${PN}-plugin-mactime = " ${libdir}/vpp_plugins/mactime_plugin.so "
+FILES_${PN}-plugin-unittest = " ${libdir}/vpp_plugins/unittest_plugin.so "
+FILES_${PN}-plugin-nat = " ${libdir}/vpp_plugins/nat_plugin.so "
+FILES_${PN}-plugin-srv6am = " ${libdir}/vpp_plugins/srv6am_plugin.so "
+FILES_${PN}-plugin-dpdk = " ${libdir}/vpp_plugins/dpdk_plugin.so "
+FILES_${PN}-plugin-ila = " ${libdir}/vpp_plugins/ila_plugin.so "
+
+FILES_${PN}-plugin-lb_test = " ${libdir}/vpp_api_test_plugins/lb_test_plugin.so "
+FILES_${PN}-plugin-ioam_vxlan_gpe_test = " ${libdir}/vpp_api_test_plugins/ioam_vxlan_gpe_test_plugin.so "
+FILES_${PN}-plugin-map_test = " ${libdir}/vpp_api_test_plugins/map_test_plugin.so "
+FILES_${PN}-plugin-avf_test = " ${libdir}/vpp_api_test_plugins/avf_test_plugin.so "
+FILES_${PN}-plugin-mactime_test = " ${libdir}/vpp_api_test_plugins/mactime_test_plugin.so "
+FILES_${PN}-plugin-udp_ping_test = " ${libdir}/vpp_api_test_plugins/udp_ping_test_plugin.so "
+FILES_${PN}-plugin-ioam_trace_test = " ${libdir}/vpp_api_test_plugins/ioam_trace_test_plugin.so "
+FILES_${PN}-plugin-lacp_test = " ${libdir}/vpp_api_test_plugins/lacp_test_plugin.so "
+FILES_${PN}-plugin-stn_test = " ${libdir}/vpp_api_test_plugins/stn_test_plugin.so "
+FILES_${PN}-plugin-memif_test = " ${libdir}/vpp_api_test_plugins/memif_test_plugin.so "
+FILES_${PN}-plugin-nat_test = " ${libdir}/vpp_api_test_plugins/nat_test_plugin.so "
+FILES_${PN}-plugin-acl_test = " ${libdir}/vpp_api_test_plugins/acl_test_plugin.so "
+FILES_${PN}-plugin-ioam_export_test = " ${libdir}/vpp_api_test_plugins/ioam_export_test_plugin.so "
+FILES_${PN}-plugin-flowprobe_test = " ${libdir}/vpp_api_test_plugins/flowprobe_test_plugin.so "
+FILES_${PN}-plugin-ioam_pot_test = " ${libdir}/vpp_api_test_plugins/ioam_pot_test_plugin.so "
+FILES_${PN}-plugin-vxlan_gpe_ioam_export_test = " ${libdir}/vpp_api_test_plugins/vxlan_gpe_ioam_export_test_plugin.so "
+FILES_${PN}-plugin-pppoe_test = " ${libdir}/vpp_api_test_plugins/pppoe_test_plugin.so "
+FILES_${PN}-plugin-gtpu_test = " ${libdir}/vpp_api_test_plugins/gtpu_test_plugin.so "
+FILES_${PN}-plugin-cdp_test = " ${libdir}/vpp_api_test_plugins/cdp_test_plugin.so "
+FILES_${PN}-plugin-dpdk_test = " ${libdir}/vpp_api_test_plugins/dpdk_test_plugin.so "
+
+FILES_${PN}-data = " \
+ ${datadir}/vpp/api/core/sctp.api.json \
+ ${datadir}/vpp/api/core/sr.api.json \
+ ${datadir}/vpp/api/core/gre.api.json \
+ ${datadir}/vpp/api/core/lisp.api.json \
+ ${datadir}/vpp/api/core/netmap.api.json \
+ ${datadir}/vpp/api/core/tcp.api.json \
+ ${datadir}/vpp/api/core/ipsec_gre.api.json \
+ ${datadir}/vpp/api/core/bfd.api.json \
+ ${datadir}/vpp/api/core/tap.api.json \
+ ${datadir}/vpp/api/core/oam.api.json \
+ ${datadir}/vpp/api/core/vpe.api.json \
+ ${datadir}/vpp/api/core/bier.api.json \
+ ${datadir}/vpp/api/core/ipsec.api.json \
+ ${datadir}/vpp/api/core/af_packet.api.json \
+ ${datadir}/vpp/api/core/vxlan_gpe.api.json \
+ ${datadir}/vpp/api/core/session.api.json \
+ ${datadir}/vpp/api/core/one.api.json \
+ ${datadir}/vpp/api/core/sr_mpls.api.json \
+ ${datadir}/vpp/api/core/feature.api.json \
+ ${datadir}/vpp/api/core/p2p_ethernet.api.json \
+ ${datadir}/vpp/api/core/memclnt.api.json \
+ ${datadir}/vpp/api/core/pg.api.json \
+ ${datadir}/vpp/api/core/l2.api.json \
+ ${datadir}/vpp/api/core/punt.api.json \
+ ${datadir}/vpp/api/core/classify.api.json \
+ ${datadir}/vpp/api/core/policer.api.json \
+ ${datadir}/vpp/api/core/span.api.json \
+ ${datadir}/vpp/api/core/udp.api.json \
+ ${datadir}/vpp/api/core/vxlan.api.json \
+ ${datadir}/vpp/api/core/mpls.api.json \
+ ${datadir}/vpp/api/core/qos.api.json \
+ ${datadir}/vpp/api/core/ip.api.json \
+ ${datadir}/vpp/api/core/ipip.api.json \
+ ${datadir}/vpp/api/core/bond.api.json \
+ ${datadir}/vpp/api/core/dns.api.json \
+ ${datadir}/vpp/api/core/tapv2.api.json \
+ ${datadir}/vpp/api/core/pipe.api.json \
+ ${datadir}/vpp/api/core/dhcp6_pd_client_cp.api.json \
+ ${datadir}/vpp/api/core/l2tp.api.json \
+ ${datadir}/vpp/api/core/lisp_gpe.api.json \
+ ${datadir}/vpp/api/core/cop.api.json \
+ ${datadir}/vpp/api/core/geneve.api.json \
+ ${datadir}/vpp/api/core/stats.api.json \
+ ${datadir}/vpp/api/core/rd_cp.api.json \
+ ${datadir}/vpp/api/core/dhcp.api.json \
+ ${datadir}/vpp/api/core/lldp.api.json \
+ ${datadir}/vpp/api/core/dhcp6_ia_na_client_cp.api.json \
+ ${datadir}/vpp/api/core/ipfix_export.api.json \
+ ${datadir}/vpp/api/core/vhost_user.api.json \
+ ${datadir}/vpp/api/core/interface.api.json \
+ ${datadir}/vpp/C.py \
+ ${datadir}/vpp/api/core/flow.api.json \
+ ${datadir}/vpp/api/core/map.api.json \
+ ${datadir}/vpp/api/core/dpdk.api.json \
+ ${datadir}/vpp/JSON.py "
+
+
+FILES_${PN} = " \
+ ${sysconfdir}/vpp \
+ ${sysconfdir}/vpp/startup.conf \
+ ${sysconfdir}/vpp/startup.conf.dflt \
+ ${sysconfdir}/rc.local \
+ ${bindir}/svmdbtool \
+ ${bindir}/svmtool \
+ ${bindir}/vppapigen \
+ ${bindir}/elftool \
+ ${bindir}/cpelatency \
+ ${bindir}/cpelinreg \
+ ${bindir}/elog_merge \
+ ${bindir}/c2cpel \
+ ${bindir}/cpelstate \
+ ${bindir}/cpeldump \
+ ${bindir}/vpp \
+ ${bindir}/vpp_api_test \
+ ${bindir}/vpp_get_metrics \
+ ${bindir}/vpp_restart \
+ ${bindir}/vppctl \
+ ${libdir}/libcperf.so.0.0.0 \
+ ${libdir}/libcperf.so.0 \
+ ${libdir}/libsvm.so.0 \
+ ${libdir}/libsvm.so.0.0.0 \
+ ${libdir}/libsvmdb.so.0 \
+ ${libdir}/libsvmdb.so.0.0.0 \
+ ${libdir}/libvapiclient.so.0 \
+ ${libdir}/libvapiclient.so.0.0.0 \
+ ${libdir}/libvatplugin.so.0 \
+ ${libdir}/libvatplugin.so.0.0.0 \
+ ${libdir}/libvcl_ldpreload.so.0 \
+ ${libdir}/libvcl_ldpreload.so.0.0.0 \
+ ${libdir}/libvlib.so.0 \
+ ${libdir}/libvlib.so.0.0.0 \
+ ${libdir}/libvlibmemory.so.0 \
+ ${libdir}/libvlibmemory.so.0.0.0 \
+ ${libdir}/libvlibmemoryclient.so.0 \
+ ${libdir}/libvlibmemoryclient.so.0.0.0 \
+ ${libdir}/libvnet.so.0 \
+ ${libdir}/libvnet.so.0.0.0 \
+ ${libdir}/libvppapiclient.so.0 \
+ ${libdir}/libvppapiclient.so.0.0.0 \
+ ${libdir}/libvppcom.so.0 \
+ ${libdir}/libvppcom.so.0.0.0 \
+ ${libdir}/libvppinfra.so.0 \
+ ${libdir}/libvppinfra.so.0.0.0 \
+ "
+
+FILES_${PN}-plugin-data = " \
+ ${datadir}/vpp/api/plugins/pot.api.json \
+ ${datadir}/vpp/api/plugins/pppoe.api.json \
+ ${datadir}/vpp/api/plugins/igmp.api.json \
+ ${datadir}/vpp/api/plugins/avf.api.json \
+ ${datadir}/vpp/api/plugins/mactime.api.json \
+ ${datadir}/vpp/api/plugins/gbp.api.json \
+ ${datadir}/vpp/api/plugins/map.api.json \
+ ${datadir}/vpp/api/plugins/udp_ping.api.json \
+ ${datadir}/vpp/api/plugins/l2e.api.json \
+ ${datadir}/vpp/api/plugins/ioam_export.api.json \
+ ${datadir}/vpp/api/plugins/lb.api.json \
+ ${datadir}/vpp/api/plugins/vxlan_gpe_ioam_export.api.json \
+ ${datadir}/vpp/api/plugins/ioam_vxlan_gpe.api.json \
+ ${datadir}/vpp/api/plugins/acl.api.json \
+ ${datadir}/vpp/api/plugins/ioam_cache.api.json \
+ ${datadir}/vpp/api/plugins/stn.api.json \
+ ${datadir}/vpp/api/plugins/abf.api.json \
+ ${datadir}/vpp/api/plugins/nat.api.json \
+ ${datadir}/vpp/api/plugins/flowprobe.api.json \
+ ${datadir}/vpp/api/plugins/memif.api.json \
+ ${datadir}/vpp/api/plugins/lacp.api.json \
+ ${datadir}/vpp/api/plugins/gtpu.api.json \
+ ${datadir}/vpp/api/plugins/trace.api.json \
+ ${datadir}/vpp/api/plugins/dpdk.api.json \
+ ${datadir}/vpp/api/plugins/cdp.api.json "
+
+FILES_${PN}-dev = " \
+ ${includedir}/* \
+ ${libdir}/libvcl_ldpreload.so \
+ ${libdir}/libvppapiclient.so \
+ ${libdir}/libvppcom.so \
+ ${libdir}/libvlib.so \
+ ${libdir}/libsvm.so \
+ ${libdir}/libsvmdb.so \
+ ${libdir}/libvatplugin.so \
+ ${libdir}/libvlibmemory.so \
+ ${libdir}/libvapiclient.so \
+ ${libdir}/libvnet.so \
+ ${libdir}/libvppinfra.so \
+ ${libdir}/libcperf.so \
+ ${libdir}/libvlibmemoryclient.so "
+
diff --git a/bsp/meta-freescale/recipes-fsl/images/fsl-image-mfgtool-initramfs.bb b/bsp/meta-freescale/recipes-fsl/images/fsl-image-mfgtool-initramfs.bb
new file mode 100644
index 00000000..7d79d1ef
--- /dev/null
+++ b/bsp/meta-freescale/recipes-fsl/images/fsl-image-mfgtool-initramfs.bb
@@ -0,0 +1,8 @@
+# Copyright (C) 2014 O.S. Systems Software LTDA.
+
+DESCRIPTION = "Small image to be used with Manufacturing Tool \
+(mfg-tool) in a production environment."
+
+LICENSE = "MIT"
+
+inherit mfgtool-initramfs-image
diff --git a/bsp/meta-freescale/recipes-fsl/packagegroups/packagegroup-fsl-mfgtool.bb b/bsp/meta-freescale/recipes-fsl/packagegroups/packagegroup-fsl-mfgtool.bb
new file mode 100644
index 00000000..ab378cf5
--- /dev/null
+++ b/bsp/meta-freescale/recipes-fsl/packagegroups/packagegroup-fsl-mfgtool.bb
@@ -0,0 +1,49 @@
+# Copyright (C) 2014, 2015 O.S. Systems Software LTDA.
+
+SUMMARY = "Freescale Manufacturing Tool requirements"
+LICENSE = "MIT"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+inherit packagegroup
+
+PACKAGES = " \
+ ${PN}-base \
+ ${PN}-mtd \
+ ${PN}-extfs \
+"
+
+# The essential packages for device bootup that may be set in the
+# machine configuration file.
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= ""
+
+# Distro can override the following VIRTUAL-RUNTIME providers:
+VIRTUAL-RUNTIME_keymaps ?= "keymaps"
+
+RDEPENDS_${PN}-base = " \
+ bash \
+ imx-uuc \
+ util-linux \
+ coreutils \
+ dosfstools \
+ mmc-utils \
+ base-files \
+ base-passwd \
+ busybox \
+ ${@bb.utils.contains("MACHINE_FEATURES", "keyboard", "${VIRTUAL-RUNTIME_keymaps}", "", d)} \
+ ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS} \
+"
+
+RDEPENDS_${PN}-mtd = " \
+ ${PN}-base \
+ imx-kobs \
+ mtd-utils \
+ mtd-utils-ubifs \
+"
+
+RDEPENDS_${PN}-extfs = " \
+ ${PN}-base \
+ e2fsprogs-mke2fs \
+ e2fsprogs-e2fsck \
+"
+COMPATIBLE_MACHINE = "(imx)"
diff --git a/bsp/meta-freescale/recipes-graphics/cairo/cairo_%.bbappend b/bsp/meta-freescale/recipes-graphics/cairo/cairo_%.bbappend
new file mode 100644
index 00000000..5b1562ab
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/cairo/cairo_%.bbappend
@@ -0,0 +1,2 @@
+PACKAGECONFIG_append_imxgpu3d = " egl glesv2"
+PACKAGECONFIG_remove_imxgpu3d = "opengl"
diff --git a/bsp/meta-freescale/recipes-graphics/clutter/clutter-1.0_%.bbappend b/bsp/meta-freescale/recipes-graphics/clutter/clutter-1.0_%.bbappend
new file mode 100644
index 00000000..0b4c4861
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/clutter/clutter-1.0_%.bbappend
@@ -0,0 +1,5 @@
+PACKAGECONFIG_imxgpu3d ??= " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11', \
+ '', d), d)} \
+"
diff --git a/bsp/meta-freescale/recipes-graphics/cogl/cogl-1.0_%.bbappend b/bsp/meta-freescale/recipes-graphics/cogl/cogl-1.0_%.bbappend
new file mode 100644
index 00000000..afbaee43
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/cogl/cogl-1.0_%.bbappend
@@ -0,0 +1,5 @@
+PACKAGECONFIG_imxgpu3d ??= " \
+ cogl-pango gles2 \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'egl-wayland', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11', 'egl-x11', \
+ '', d), d)}"
diff --git a/bsp/meta-freescale/recipes-graphics/drm/libdrm-armada_git.bb b/bsp/meta-freescale/recipes-graphics/drm/libdrm-armada_git.bb
new file mode 100644
index 00000000..0a14e371
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/drm/libdrm-armada_git.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Userspace interface to kernel DRM services"
+SECTION = "x11/base"
+LICENSE = "GPLv2 & BSD"
+
+LIC_FILES_CHKSUM = "file://libdrm_lists.h;beginline=1;endline=25;md5=2af1df1026ba1d24c8e7c370e68ed198"
+
+DEPENDS = "libdrm"
+
+SRCREV = "6b461c163b0bd02c76b65d94cc2fb3767167bda8"
+PV = "0.1+git${SRCPV}"
+SRC_URI = "git://git.armlinux.org.uk/~rmk/libdrm-armada.git"
+
+inherit autotools pkgconfig
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_MACHINE ?= "(imx)"
diff --git a/bsp/meta-freescale/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch b/bsp/meta-freescale/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch
new file mode 100644
index 00000000..fa7b218e
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch
@@ -0,0 +1,54 @@
+From 9be904a70e6b7e6b3cc4e1b270bca02d14a4179b Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Mon, 5 Sep 2016 14:41:37 +0300
+Subject: [PATCH] configure.ac: Allow explicit enabling of cunit tests
+
+Add --with-cunit to make it easier to do reproducible builds. Default
+is still to probe cunit and build opportunistically.
+
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Upstream-Status: Submitted [mailing list]
+
+---
+ configure.ac | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 1341f51..bef46e0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -168,6 +168,12 @@ AC_ARG_ENABLE(install-test-programs,
+ [Install test programs (default: no)]),
+ [INSTALL_TESTS=$enableval], [INSTALL_TESTS=no])
+
++AC_ARG_WITH([cunit],
++ [AS_HELP_STRING([--with-cunit],
++ [Build tests that use cunit (default: auto)])],
++ [],
++ [with_cunit=auto])
++
+ dnl ===========================================================================
+ dnl check compiler flags
+ AC_DEFUN([LIBDRM_CC_TRY_FLAG], [
+@@ -416,7 +422,7 @@ else
+ AC_DEFINE(HAVE_RADEON, 0)
+ fi
+
+-if test "x$AMDGPU" != xno; then
++if test "x$with_cunit" != xno -a "x$AMDGPU" != xno; then
+ # Detect cunit library
+ PKG_CHECK_MODULES([CUNIT], [cunit >= 2.1], [have_cunit=yes], [have_cunit=no])
+ # If pkg-config does not find cunit, check it using AC_CHECK_LIB. We
+@@ -441,7 +447,11 @@ if test "x$AMDGPU" = xyes; then
+ AC_DEFINE(HAVE_AMDGPU, 1, [Have amdgpu support])
+
+ if test "x$have_cunit" = "xno"; then
+- AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests])
++ if test "x$with_cunit" = "xyes"; then
++ AC_MSG_ERROR([Could not find cunit library but --with-cunit was given])
++ elif test "x$with_cunit" = "xauto"; then
++ AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests])
++ fi
+ fi
+ else
+ AC_DEFINE(HAVE_AMDGPU, 0)
diff --git a/bsp/meta-freescale/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch b/bsp/meta-freescale/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch
new file mode 100644
index 00000000..4708bf1e
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch
@@ -0,0 +1,24 @@
+drmdevice.c: define _GNU_SOURCE
+
+Include config.h to fix this build error with uclibc:
+
+libdrm-2.4.66/tests/drmdevice.c: In function 'main':
+libdrm-2.4.66/tests/drmdevice.c:96:60: error:
+'O_CLOEXEC' undeclared (first use in this function)
+fd = open(devices[i]->nodes[j],O_RDONLY | O_CLOEXEC, 0);
+
+Upstream-Status: Pending
+
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+---
+diff -Naur libdrm-2.4.66-orig/tests/drmdevice.c libdrm-2.4.66/tests/drmdevice.c
+--- libdrm-2.4.66-orig/tests/drmdevice.c 2016-02-23 11:34:02.054904502 +0200
++++ libdrm-2.4.66/tests/drmdevice.c 2016-02-23 11:35:34.371750383 +0200
+@@ -21,6 +21,7 @@
+ *
+ */
+
++#include <config.h>
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
diff --git a/bsp/meta-freescale/recipes-graphics/drm/libdrm/installtests.patch b/bsp/meta-freescale/recipes-graphics/drm/libdrm/installtests.patch
new file mode 100644
index 00000000..ec1fb023
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/drm/libdrm/installtests.patch
@@ -0,0 +1,25 @@
+From 5c6eb43c2f6e7f2ee7c25c92e42f4e4403fa0527 Mon Sep 17 00:00:00 2001
+From: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Tue, 21 Feb 2017 14:37:52 +0200
+Subject: [PATCH] tests: also install test apps
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Yu Ke <ke.yu@intel.com>
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+---
+ tests/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 0355a92..b4882cd 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -45,3 +45,4 @@ TESTS = \
+ check_PROGRAMS = \
+ $(TESTS) \
+ drmdevice
++bin_PROGRAMS = $(check_PROGRAMS)
+--
+2.1.4
+
diff --git a/bsp/meta-freescale/recipes-graphics/drm/libdrm/mx6/drm-update-arm.patch b/bsp/meta-freescale/recipes-graphics/drm/libdrm/mx6/drm-update-arm.patch
new file mode 100644
index 00000000..1160cd10
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/drm/libdrm/mx6/drm-update-arm.patch
@@ -0,0 +1,35 @@
+Add ARM support into xf86arm.h. This provides support for Xorg interface.
+Without this the vivante samples will hang during close requiring a reboot
+
+Upstream-Status: Pending
+
+Signed-off-by: Lauren Post <lauren.post@freescale.com>
+Signed-off-by: Evan Kotara <evan.kotara@freescale.com>
+
+diff --git a/xf86drm.h b/xf86drm.h
+--- a/xf86drm.h
++++ b/xf86drm.h
+@@ -461,6 +461,23 @@ do { register unsigned int __old __asm("
+ : "cr0", "memory"); \
+ } while (0)
+
++#elif defined(__arm__)
++ #undef DRM_DEV_MODE
++ #define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
++
++ #define DRM_CAS(lock,old,new,__ret) \
++ do { \
++ __asm__ __volatile__ ( \
++ "1: ldrex %0, [%1]\n" \
++ " teq %0, %2\n" \
++ " ite eq\n" \
++ " strexeq %0, %3, [%1]\n" \
++ " movne %0, #1\n" \
++ : "=&r" (__ret) \
++ : "r" (lock), "r" (old), "r" (new) \
++ : "cc","memory"); \
++ } while (0)
++
+ #endif /* architecture */
+ #endif /* __GNUC__ >= 2 */
+
diff --git a/bsp/meta-freescale/recipes-graphics/drm/libdrm/mx7/drm-update-arm.patch b/bsp/meta-freescale/recipes-graphics/drm/libdrm/mx7/drm-update-arm.patch
new file mode 100644
index 00000000..1160cd10
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/drm/libdrm/mx7/drm-update-arm.patch
@@ -0,0 +1,35 @@
+Add ARM support into xf86arm.h. This provides support for Xorg interface.
+Without this the vivante samples will hang during close requiring a reboot
+
+Upstream-Status: Pending
+
+Signed-off-by: Lauren Post <lauren.post@freescale.com>
+Signed-off-by: Evan Kotara <evan.kotara@freescale.com>
+
+diff --git a/xf86drm.h b/xf86drm.h
+--- a/xf86drm.h
++++ b/xf86drm.h
+@@ -461,6 +461,23 @@ do { register unsigned int __old __asm("
+ : "cr0", "memory"); \
+ } while (0)
+
++#elif defined(__arm__)
++ #undef DRM_DEV_MODE
++ #define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
++
++ #define DRM_CAS(lock,old,new,__ret) \
++ do { \
++ __asm__ __volatile__ ( \
++ "1: ldrex %0, [%1]\n" \
++ " teq %0, %2\n" \
++ " ite eq\n" \
++ " strexeq %0, %3, [%1]\n" \
++ " movne %0, #1\n" \
++ : "=&r" (__ret) \
++ : "r" (lock), "r" (old), "r" (new) \
++ : "cc","memory"); \
++ } while (0)
++
+ #endif /* architecture */
+ #endif /* __GNUC__ >= 2 */
+
diff --git a/bsp/meta-freescale/recipes-graphics/drm/libdrm_%.bbappend b/bsp/meta-freescale/recipes-graphics/drm/libdrm_%.bbappend
new file mode 100644
index 00000000..97b6df92
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/drm/libdrm_%.bbappend
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_imxgpu2d = " file://drm-update-arm.patch"
+
+PACKAGE_ARCH_imxgpu2d = "${MACHINE_SOCARCH}"
diff --git a/bsp/meta-freescale/recipes-graphics/drm/libdrm_2.4.91.imx.bb b/bsp/meta-freescale/recipes-graphics/drm/libdrm_2.4.91.imx.bb
new file mode 100644
index 00000000..31f24d32
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/drm/libdrm_2.4.91.imx.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Userspace interface to the kernel DRM services"
+DESCRIPTION = "The runtime library for accessing the kernel DRM services. DRM \
+stands for \"Direct Rendering Manager\", which is the kernel portion of the \
+\"Direct Rendering Infrastructure\" (DRI). DRI is required for many hardware \
+accelerated OpenGL drivers."
+HOMEPAGE = "http://dri.freedesktop.org"
+SECTION = "x11/base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71"
+PROVIDES = "drm"
+DEPENDS = "libpthread-stubs libpciaccess"
+
+IMX_LIBDRM_SRC ?= "git://source.codeaurora.org/external/imx/libdrm-imx.git;protocol=https;nobranch=1"
+IMX_LIBDRM_BRANCH = "libdrm-imx-2.4.91"
+SRC_URI = "${IMX_LIBDRM_SRC};branch=${IMX_LIBDRM_BRANCH} \
+ file://installtests.patch \
+ file://fix_O_CLOEXEC_undeclared.patch \
+ file://0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch \
+ "
+SRC_URI_remove = "file://drm-update-arm.patch"
+SRCREV = "e8e9cf8a66be11508c39f1cc31b8a5e7eb758875"
+S = "${WORKDIR}/git"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit autotools pkgconfig manpages
+
+EXTRA_OECONF += "--disable-cairo-tests \
+ --without-cunit \
+ --enable-omap-experimental-api \
+ --enable-etnaviv-experimental-api \
+ --enable-install-test-programs \
+ --disable-valgrind \
+ "
+PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native"
+
+ALLOW_EMPTY_${PN}-drivers = "1"
+PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \
+ ${PN}-intel ${PN}-exynos ${PN}-kms ${PN}-freedreno ${PN}-amdgpu \
+ ${PN}-etnaviv"
+
+RRECOMMENDS_${PN}-drivers = "${PN}-radeon ${PN}-nouveau ${PN}-omap ${PN}-intel \
+ ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu \
+ ${PN}-etnaviv"
+
+FILES_${PN}-tests = "${bindir}/*"
+FILES_${PN}-radeon = "${libdir}/libdrm_radeon.so.*"
+FILES_${PN}-nouveau = "${libdir}/libdrm_nouveau.so.*"
+FILES_${PN}-omap = "${libdir}/libdrm_omap.so.*"
+FILES_${PN}-intel = "${libdir}/libdrm_intel.so.*"
+FILES_${PN}-exynos = "${libdir}/libdrm_exynos.so.*"
+FILES_${PN}-kms = "${libdir}/libkms*.so.*"
+FILES_${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*"
+FILES_${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.*"
+FILES_${PN}-etnaviv = "${libdir}/libdrm_etnaviv.so.*"
+
+EXTRA_OECONF_append_imxgpu = " --enable-vivante-experimental-api"
+
+PACKAGES_prepend_imxgpu = "${PN}-vivante "
+
+RRECOMMENDS_${PN}-drivers_append_imxgpu = " ${PN}-vivante"
+
+FILES_${PN}-vivante = "${libdir}/libdrm_vivante.so.*"
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
diff --git a/bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-fb/0001-Replace-vendor-specific-header-with-generic.patch b/bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-fb/0001-Replace-vendor-specific-header-with-generic.patch
new file mode 100644
index 00000000..7c315c83
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-fb/0001-Replace-vendor-specific-header-with-generic.patch
@@ -0,0 +1,28 @@
+From fdb3add3dfd53c539c3c79e4fbf9eedb1dc1e440 Mon Sep 17 00:00:00 2001
+From: Prabhu Sundararaj <prabhu.sundararaj@nxp.com>
+Date: Fri, 26 Feb 2016 11:29:54 -0600
+Subject: [PATCH] Use generic eglplatform.h rather than vendor specifc
+ (eglvivante.h) EGL headers.
+
+Upstream-Status: Pending
+
+---
+ wscript | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/wscript b/wscript
+index 195e247..d08bc29 100644
+--- a/wscript
++++ b/wscript
+@@ -219,7 +219,7 @@ def check_vivante_egl(conf, egl_extra_defines):
+ extra_defines += egl_extra_defines
+ extra_cxxflags = map(lambda x: conf.env['DEFINES_ST'] % x, extra_defines)
+ conf.env['CXXFLAGS'] += extra_cxxflags
+- conf.check_cxx(mandatory = 1, header_name = 'EGL/eglvivante.h', uselib_store = 'EGL')
++ conf.check_cxx(mandatory = 1, header_name = 'EGL/eglplatform.h', uselib_store = 'EGL')
+ conf.check_cxx(mandatory = 1, header_name = 'EGL/egl.h', uselib_store = 'EGL')
+ conf.env['CXXFLAGS_EGL'] += extra_cxxflags
+ conf.env['CXXFLAGS'] = old_cxxflags
+--
+2.7.0
+
diff --git a/bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend b/bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
new file mode 100644
index 00000000..f130d23c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-fb_%.bbappend
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_imxgpu3d = " \
+ file://0001-Replace-vendor-specific-header-with-generic.patch \
+"
+
+# Set i.MX specific dependencies and device type
+EGLINFO_DEVICE_imxgpu3d = "imx6"
diff --git a/bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend b/bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
new file mode 100644
index 00000000..7aa0e50f
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/eglinfo/eglinfo-x11_%.bbappend
@@ -0,0 +1,2 @@
+# Set i.MX specific dependencies and device type
+EGLINFO_DEVICE_imxgpu3d = "imx6"
diff --git a/bsp/meta-freescale/recipes-graphics/gtk+/gtk+3_%.bbappend b/bsp/meta-freescale/recipes-graphics/gtk+/gtk+3_%.bbappend
new file mode 100644
index 00000000..be2bac75
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/gtk+/gtk+3_%.bbappend
@@ -0,0 +1,5 @@
+DEPENDS_append_imxgpu2d = " virtual/egl"
+
+PACKAGECONFIG_remove_imxgpu2d = " \
+ ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "x11", "", d)} \
+"
diff --git a/bsp/meta-freescale/recipes-graphics/images/core-image-weston.bbappend b/bsp/meta-freescale/recipes-graphics/images/core-image-weston.bbappend
new file mode 100644
index 00000000..2a3cde69
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/images/core-image-weston.bbappend
@@ -0,0 +1,3 @@
+# FIXME: i.MX6SL cannot use mesa for Graphics and it lacks GL support,
+# so for now we skip it.
+CORE_IMAGE_BASE_INSTALL_remove_mx6sl = "clutter-1.0-examples"
diff --git a/bsp/meta-freescale/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.4.8.bb b/bsp/meta-freescale/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.4.8.bb
new file mode 100644
index 00000000..1e204b00
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/imx-dpu-g2d/imx-dpu-g2d_1.4.8.bb
@@ -0,0 +1,37 @@
+# Copyright (C) 2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "GPU G2D library and apps for i.MX with 2D GPU and DPU"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db"
+
+RDEPENDS_${PN} = "libgal-imx libdrm"
+
+PROVIDES += "virtual/libg2d"
+
+SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
+
+S="${WORKDIR}/${PN}-${PV}"
+
+inherit fsl-eula-unpack
+
+SRC_URI[md5sum] = "5a14e335d329dbc33edb89f675821d5a"
+SRC_URI[sha256sum] = "e8f27247b068f4f31e235e98f0eacf11eb0bb25cc6b710e5ca7f8f96d323004f"
+
+do_install () {
+
+ install -d ${D}${libdir}
+ install -d ${D}${includedir}
+
+ cp -r ${S}/g2d/usr/lib/*.so* ${D}${libdir}
+ cp -Pr ${S}/g2d/usr/include/* ${D}${includedir}
+ cp -r ${S}/gpu-demos/opt ${D}
+}
+
+INSANE_SKIP_${PN} += "ldflags"
+
+FILES_${PN} = "${libdir}/libg2d* /opt"
+FILES_${PN}-dev = "${libdir}/libg2d${SOLIBSDEV} ${includedir}"
+
+COMPATIBLE_MACHINE = "(imxdpu)"
diff --git a/bsp/meta-freescale/recipes-graphics/imx-gpu-apitrace/imx-gpu-apitrace_7.1.0.bb b/bsp/meta-freescale/recipes-graphics/imx-gpu-apitrace/imx-gpu-apitrace_7.1.0.bb
new file mode 100644
index 00000000..a5a9cdfe
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/imx-gpu-apitrace/imx-gpu-apitrace_7.1.0.bb
@@ -0,0 +1,37 @@
+# Copyright 2018 (C) O.S. Systems Software LTDA.
+SUMMARY = "Samples for OpenGL ES"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aeb969185a143c3c25130bc2c3ef9a50"
+DEPENDS = "imx-gpu-viv zlib libpng procps"
+
+SRC_URI = "git://source.codeaurora.org/external/imx/apitrace-imx.git;protocol=https;branch=imx_7.1"
+SRCREV = "438c29f7b43c8dd82275f2bac00075f77b9e9699"
+
+S = "${WORKDIR}/git"
+
+inherit cmake lib_package pkgconfig perlnative pythonnative
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG_append = \
+ "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11', ' x11', \
+ '', d), d)}"
+PACKAGECONFIG_append_imxgpu2d = " vivante"
+# For 8M, which has 3D but no 2D, eglretrace is not available
+# on Wayland except through X11 and waffle.
+PACKAGECONFIG_IMXGPU3D = \
+ "${@bb.utils.contains('DISTRO_FEATURES', 'wayland x11', ' waffle x11 x11-egl', '', d)}"
+PACKAGECONFIG_IMXGPU3D_imxgpu2d = ""
+PACKAGECONFIG_append_imxgpu3d = "${PACKAGECONFIG_IMXGPU3D}"
+
+PACKAGECONFIG[multiarch] = "-DENABLE_MULTIARCH=ON,-DENABLE_MULTIARCH=OFF"
+PACKAGECONFIG[waffle] = "-DENABLE_WAFFLE=ON,-DENABLE_WAFFLE=OFF,waffle"
+PACKAGECONFIG[x11] = "-DENABLE_X11=ON,-DENABLE_X11=OFF"
+PACKAGECONFIG[x11-egl] = "-Dwaffle_has_x11_egl=ON,-Dwaffle_has_x11_egl=OFF"
+PACKAGECONFIG[vivante] = "-DENABLE_VIVANTE=ON,-DENABLE_VIVANTE=OFF,virtual/libg2d"
+
+FILES_${PN} = "${bindir} ${libdir}"
+FILES_${PN}-dbg += "${libdir}/*/*/.debug"
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+COMPATIBLE_MACHINE = "(imxgpu)"
diff --git a/bsp/meta-freescale/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p1.8.bb b/bsp/meta-freescale/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p1.8.bb
new file mode 100644
index 00000000..ab712377
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/imx-gpu-g2d/imx-gpu-g2d_6.2.4.p1.8.bb
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Copyright 2018 (C) O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "GPU G2D library and apps for i.MX with 2D GPU and no DPU"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db"
+
+DEPENDS += "libgal-imx"
+PROVIDES += "virtual/libg2d"
+
+# FIXME: arm packages are mis-labeled with aarch32 suffix
+FSLBIN_NAME = "${PN}-${PV}-${TARGET_ARCH}"
+FSLBIN_NAME_arm = "${PN}-${PV}-aarch32"
+
+SRC_URI = "${FSL_MIRROR}/${FSLBIN_NAME}.bin;name=${TARGET_ARCH};fsl-eula=true"
+SRC_URI[arm.md5sum] = "ab7e43c997d3a84764fc3cc72d3b397c"
+SRC_URI[arm.sha256sum] = "88b3af3dd109e7c9c457d19441dbb668e7c395d29340d724db3cc42dc04ae87b"
+SRC_URI[aarch64.md5sum] = "287f2de4bd407b2eb484d332ae6de157"
+SRC_URI[aarch64.sha256sum] = "77f191135f2be6052eabc8cca50b4ea7b5eaec015488cc108fb3f9656a3a1367"
+
+S = "${WORKDIR}/${FSLBIN_NAME}"
+
+inherit fsl-eula-unpack
+
+do_install () {
+ install -d ${D}${libdir}
+ install -d ${D}${includedir}
+ cp ${S}/g2d/usr/lib/*.so* ${D}${libdir}
+ cp -Pr ${S}/g2d/usr/include/* ${D}${includedir}
+ cp -r ${S}/gpu-demos/opt ${D}
+}
+
+FILES_${PN} = "${libdir}/libg2d* /opt"
+FILES_${PN}-dev = "${includedir}"
+INSANE_SKIP_${PN} = "ldflags"
+
+RDEPENDS_${PN} = "libgal-imx"
+
+COMPATIBLE_MACHINE = "(imxgpu2d)"
diff --git a/bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc b/bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc
new file mode 100644
index 00000000..8348c1b4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc
@@ -0,0 +1,370 @@
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright (C) 2012-2018 O.S. Systems Software LTDA.
+# Copyright 2017-2018 NXP
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "GPU driver and apps for i.MX"
+SECTION = "libs"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db"
+
+DEPENDS += " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes', \
+ '', d), d)} \
+"
+DEPENDS += " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxcb libxshmfence libxxf86vm', \
+ '', d)} \
+"
+DEPENDS_append_imxdrm = " libdrm wayland"
+
+# imx-gpu-viv does not provide everything it needs to for virtual/libgl
+# on x11 backend or on Wayland backend with XWayland support.
+# We depend on mesa to fill in what is missing.
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'mesa', '', d)}"
+
+EXTRA_PROVIDES = ""
+EXTRA_PROVIDES_append_imxgpu3d = " \
+ virtual/libgl \
+ virtual/libgles1 \
+ virtual/libgles2 \
+"
+EXTRA_PROVIDES_append_mx8 = " \
+ virtual/libgbm \
+"
+EXTRA_PROVIDES_append_mx8qm = " \
+ virtual/libopenvx \
+"
+PROVIDES += " \
+ imx-gpu-viv \
+ libgal-imx \
+ opencl-headers \
+ virtual/egl \
+ virtual/libopenvg \
+ virtual/opencl-headers \
+ virtual/opencl-icd \
+ ${EXTRA_PROVIDES} \
+"
+
+RPROVIDES_${PN}_imxgpu3d += "imx-gpu-viv"
+
+PE = "1"
+
+inherit fsl-eula-unpack distro_features_check
+
+REQUIRED_DISTRO_FEATURES_mx8 = "wayland"
+
+SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
+
+# Note : If you add a package here, to prevent a naming conflict see the python_anonymous() futher below
+IMX_PACKAGES_GBM = ""
+IMX_PACKAGES_GBM_mx8 = "libgbm-imx libgbm-imx-dev"
+PACKAGES =+ "libclc-imx libclc-imx-dev \
+ libgl-imx libgl-imx-dev \
+ libgles-imx libgles-imx-dev \
+ libgles2-imx libgles2-imx-dev \
+ libgles3-imx-dev \
+ libglslc-imx libglslc-imx-dev \
+ libopencl-imx libopencl-imx-dev \
+ libopenvg-imx libopenvg-imx-dev \
+ libvdk-imx libvdk-imx-dev \
+ libegl-imx libegl-imx-dev \
+ libgal-imx libgal-imx-dev \
+ libvivante-dri-imx \
+ libvsc-imx \
+ ${IMX_PACKAGES_GBM} \
+ libwayland-viv-imx libwayland-viv-imx-dev \
+ libgc-wayland-protocol-imx libgc-wayland-protocol-imx-dev \
+ imx-gpu-viv-tools \
+ imx-gpu-viv-demos \
+ libvulkan-imx libvulkan-imx-dev \
+ libopenvx-imx libopenvx-imx-dev \
+"
+python __anonymous () {
+ has_vivante_kernel_driver_support = (d.getVar('MACHINE_HAS_VIVANTE_KERNEL_DRIVER_SUPPORT', True) or '0')
+ if has_vivante_kernel_driver_support != '1':
+ raise bb.parse.SkipPackage('The kernel of machine needs to have Vivante kernel driver support for this recipe to be used.')
+}
+
+USE_X11 = "${@bb.utils.contains("DISTRO_FEATURES", "x11", "yes", "no", d)}"
+USE_WL = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "yes", "no", d)}"
+
+# Inhibit warnings about files being stripped.
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+
+# FIXME: The provided binary doesn't provide soname. If in future BSP
+# release the libraries are fixed, we can drop this hack.
+REALSOLIBS := "${SOLIBS}"
+SOLIBS = "${SOLIBSDEV}"
+
+python __anonymous() {
+ # FIXME: All binaries lack GNU_HASH in elf binary but as we don't have
+ # the source we cannot fix it. Disable the insane check for now.
+ packages = d.getVar('PACKAGES', True).split()
+ for p in packages:
+ d.appendVar("INSANE_SKIP_%s" % p, " ldflags")
+
+ # For the packages that make up the OpenGL interfaces, inject variables so that
+ # they don't get Debian-renamed (which would remove the -imx suffix).
+ for p in (("libegl", "libegl1"), ("libgl", "libgl1"),
+ ("libgles1", "libglesv1-cm1"), ("libgles2", "libglesv2-2"),
+ ("libgles3",) , ("libvulkan",)):
+ fullp = p[0] + "-imx"
+ pkgs = " ".join(p)
+ d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
+ d.appendVar("RREPLACES_" + fullp, pkgs)
+ d.appendVar("RPROVIDES_" + fullp, pkgs)
+ d.appendVar("RCONFLICTS_" + fullp, pkgs)
+
+ # For -dev, the first element is both the Debian and original name
+ fullp += "-dev"
+ pkgs = p[0] + "-dev"
+ d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
+ d.appendVar("RREPLACES_" + fullp, pkgs)
+ d.appendVar("RPROVIDES_" + fullp, pkgs)
+ d.appendVar("RCONFLICTS_" + fullp, pkgs)
+}
+
+IS_MX6SL = "0"
+IS_MX6SL_mx6sl = "1"
+
+IS_MX8 = "0"
+IS_MX8_mx8 = "1"
+
+PACKAGE_FP_TYPE = "hardfp"
+
+HAS_GBM = "false"
+HAS_GBM_mx8 = "true"
+
+GLES3_HEADER_REMOVALS = "gl31.h gl32.h"
+GLES3_HEADER_REMOVALS_mx8mq = "gl32.h"
+GLES3_HEADER_REMOVALS_mx8qxp = "gl32.h"
+GLES3_HEADER_REMOVALS_mx8qm = ""
+
+do_install () {
+ install -d ${D}${libdir}
+ install -d ${D}${includedir}
+ install -d ${D}${bindir}
+
+ cp -P ${S}/gpu-core/usr/lib/*.so* ${D}${libdir}
+ cp -r ${S}/gpu-core/usr/include/* ${D}${includedir}
+ cp -r ${S}/gpu-demos/opt ${D}
+ cp -r ${S}/gpu-tools/gmem-info/usr/bin/* ${D}${bindir}
+
+ # Use vulkan header from vulkan recipe to support vkmark
+ rm -rf ${D}${includedir}/vulkan/
+
+ install -d ${D}${libdir}/pkgconfig
+ if ${HAS_GBM}; then
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/gbm.pc ${D}${libdir}/pkgconfig/gbm.pc
+ fi
+
+ # The preference order, based in DISTRO_FEATURES, is Wayland (with or without X11), X11 and fb
+ if [ "${USE_WL}" = "yes" ]; then
+
+ backend=wl
+
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_wayland.pc ${D}${libdir}/pkgconfig/egl.pc
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/vg.pc ${D}${libdir}/pkgconfig/vg.pc
+
+ if [ "${USE_X11}" = "yes" ]; then
+
+ cp -r ${S}/gpu-core/usr/lib/dri ${D}${libdir}
+
+ fi
+
+ elif [ "${USE_X11}" = "yes" ]; then
+
+ cp -r ${S}/gpu-core/usr/lib/dri ${D}${libdir}
+
+ backend=x11
+
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/gl_x11.pc ${D}${libdir}/pkgconfig/gl.pc
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_x11.pc ${D}${libdir}/pkgconfig/egl.pc
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv1_cm_x11.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv2_x11.pc ${D}${libdir}/pkgconfig/glesv2.pc
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/vg_x11.pc ${D}${libdir}/pkgconfig/vg.pc
+
+ else
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/vg.pc ${D}${libdir}/pkgconfig/vg.pc
+
+ # Regular framebuffer
+ install -m 0644 ${S}/gpu-core/usr/lib/pkgconfig/egl_linuxfb.pc ${D}${libdir}/pkgconfig/egl.pc
+
+ backend=fb
+
+ fi
+
+ # Install Vendor ICDs for OpenCL's installable client driver loader (ICDs Loader)
+ install -d ${D}${sysconfdir}/OpenCL/vendors/
+ install -m 0644 ${S}/gpu-core/etc/Vivante.icd ${D}${sysconfdir}/OpenCL/vendors/Vivante.icd
+
+ # We'll only have one backend here so we rename it to generic name
+ # and avoid rework in other packages, when possible
+ mv ${D}${libdir}/libGL.so.1.2 ${D}${libdir}/libGL.so.1.2.0
+ ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so.1.2
+ ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so.1
+ ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so
+ mv ${D}${libdir}/libEGL-${backend}.so ${D}${libdir}/libEGL.so.1.0
+ ln -sf libEGL.so.1.0 ${D}${libdir}/libEGL.so.1
+ ln -sf libEGL.so.1.0 ${D}${libdir}/libEGL.so
+ mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so
+ if [ "${USE_WL}" = "yes" ]; then
+ # Special case for libVDK on Wayland backend, deliver fb library as well.
+ # Need to rename the libraries to avoid the code below that will remove
+ # *-fb.so and *-wl.so
+ mv ${D}${libdir}/libVDK-fb.so ${D}${libdir}/libVDK-framebuffer.so
+ mv ${D}${libdir}/libVDK-wl.so ${D}${libdir}/libVDK-wayland.so
+ ln -sf libVDK-wayland.so ${D}${libdir}/libVDK.so
+ else
+ mv ${D}${libdir}/libVDK-${backend}.so ${D}${libdir}/libVDK.so
+ fi
+
+ # update libglesv2 as backend dependent
+ rm -rf ${D}${libdir}/libGLESv2*
+ cp ${S}/gpu-core/usr/lib/libGLESv2-${backend}.so ${D}${libdir}/libGLESv2.so.2.0.0
+ ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so.2
+ ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so
+
+ if [ "${IS_MX8}" = "1" ]; then
+ # Install the vulkan driver in a sub-folder. When installed in the same
+ # folder as the vulkan loader layer library, an incorrect linkage is
+ # created from libvulkan.so.1 to our library instead of the loader
+ # layer library.
+ install -d ${D}${libdir}/vulkan
+ mv ${D}${libdir}/libvulkan-${backend}.so ${D}${libdir}/vulkan/libvulkan_VSI.so
+ fi
+ for header in ${GLES3_HEADER_REMOVALS}; do
+ rm -f ${D}${includedir}/GLES3/${header}
+ done
+
+ # skip packaging wayland libraries if no support is requested
+ if [ "${USE_WL}" = "no" ]; then
+ find ${D}${libdir} -name "libgc_wayland_protocol.*" -exec rm '{}' ';'
+ find ${D}${libdir} -name "libwayland-viv.*" -exec rm '{}' ';'
+ fi
+
+ for i in wl x11 fb dri; do
+ find ${D}${libdir} -name "*-$i.so" -exec rm '{}' ';'
+ find ${D}${libdir} -name "*.$i.so" -exec rm '{}' ';'
+ done
+
+ # FIXME: MX6SL does not have 3D support; hack it for now
+ if [ "${IS_MX6SL}" = "1" ]; then
+ rm -rf ${D}${libdir}/libCLC* ${D}${includedir}/CL \
+ \
+ ${D}${libdir}/libGL* ${D}${includedir}/GL* ${D}${libdir}/pkgconfig/gl.pc \
+ \
+ ${D}${libdir}/libGLES* ${D}${libdir}/pkgconfig/gles*.pc \
+ \
+ ${D}${libdir}/libOpenCL* ${D}${includedir}/CL \
+ \
+ ${D}${libdir}/libOpenVG.3d.so \
+ \
+ ${D}${libdir}/libVivanteOpenCL.so \
+ \
+ ${D}/opt/viv_samples/vdk \
+ ${D}/opt/viv_samples/es20 ${D}/opt/viv_samples/cl11
+
+ ln -sf libOpenVG.2d.so ${D}${libdir}/libOpenVG.so
+ fi
+
+ find ${D}${libdir} -type f -exec chmod 644 {} \;
+ find ${D}${includedir} -type f -exec chmod 644 {} \;
+
+ chown -R root:root "${D}"
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+# FIXME: Remove the following lines after adding libopenvx package
+INSANE_SKIP_imx-gpu-viv-dev += "dev-elf"
+INSANE_SKIP_libclc-imx += "dev-deps"
+
+FILES_libclc-imx = "${libdir}/libCLC${SOLIBS}"
+FILES_libclc-imx-dev = "${includedir}/CL ${libdir}/libCLC${SOLIBSDEV}"
+
+# libEGL.so is used by some demo apps from Freescale
+INSANE_SKIP_libegl-imx += "dev-so"
+FILES_libegl-imx = "${libdir}/libEGL${REALSOLIBS} ${libdir}/libEGL${SOLIBSDEV} "
+FILES_libegl-imx-dev = "${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
+
+FILES_libgal-imx = "${libdir}/libGAL${SOLIBS} ${libdir}/libGAL_egl${SOLIBS}"
+FILES_libgal-imx-dev = "${libdir}/libGAL${SOLIBSDEV} ${includedir}/HAL"
+RDEPENDS_libgal-imx += "kernel-module-imx-gpu-viv"
+RPROVIDES_libgal-imx += "libgal-imx"
+INSANE_SKIP_libgal-imx += "build-deps"
+
+FILES_libvsc-imx = "${libdir}/libVSC${SOLIBS}"
+
+FILES_libgbm-imx_mx8 = "${libdir}/libgbm${SOLIBS} ${libdir}/gbm_viv${SOLIBS}"
+FILES_libgbm-imx-dev_mx8 = "${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h ${libdir}/libgbm${SOLIBSDEV}"
+RDEPENDS_libgbm-imx_append_mx8 = " libdrm"
+
+FILES_libvulkan-imx = "${libdir}/vulkan/libvulkan_VSI${SOLIBS}"
+FILES_libvulkan-imx-dev = "${includedir}/vulkan ${libdir}/vulkan/libvulkan_VSI${SOLIBSDEV}"
+INSANE_SKIP_libvulkan-imx += "dev-deps dev-so"
+
+FILES_libopenvx-imx = "${libdir}/libOpenVX${SOLIBS} ${libdir}/libOpenVXC${SOLIBS} ${libdir}/libOpenVXU${SOLIBS}"
+FILES_libopenvx-imx-dev = "${includedir}/VX ${libdir}/libopenVX${SOLIBSDEV}"
+
+FILES_libgl-imx = "${libdir}/libGL${REALSOLIBS}"
+FILES_libgl-imx-dev = "${libdir}/libGL${SOLIBSDEV} ${includedir}/GL"
+
+# libEGL needs to open libGLESv1.so
+INSANE_SKIP_libgles-imx += "dev-so"
+FILES_libgles-imx = "${libdir}/libGLESv1*${REALSOLIBS} ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${REALSOLIBS} ${libdir}/libGLES_*${SOLIBS}"
+FILES_libgles-imx-dev = "${includedir}/GLES ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${SOLIBSDEV} ${libdir}/pkgconfig/glesv1_cm.pc"
+
+# libEGL needs to open libGLESv2.so
+INSANE_SKIP_libgles2-imx += "dev-so"
+FILES_libgles2-imx = "${libdir}/libGLESv2${REALSOLIBS} ${libdir}/libGLESv2${SOLIBS}"
+FILES_libgles2-imx-dev = "${includedir}/GLES2 ${libdir}/libGLESv2${SOLIBSDEV} ${libdir}/pkgconfig/glesv2.pc"
+RDEPENDS_libgles2-imx = "libglslc-imx"
+
+FILES_libgles3-imx-dev = "${includedir}/GLES3"
+# as long as there is no libgles3: ship libgles3-dev along with
+# libgles2-dev - otherwise GLES3 headers have to be added manually
+RDEPENDS_libgles2-imx-dev += "libgles3-imx-dev"
+
+FILES_libglslc-imx = "${libdir}/libGLSLC${SOLIBS}"
+FILES_libglslc-imx-dev = "${includedir}/CL ${libdir}/libGLSLC${SOLIBSDEV}"
+
+FILES_libopencl-imx = "${libdir}/libOpenCL${SOLIBS} \
+ ${libdir}/libVivanteOpenCL${SOLIBS} \
+ ${sysconfdir}/OpenCL/vendors/Vivante.icd"
+FILES_libopencl-imx-dev = "${includedir}/CL ${libdir}/libOpenCL${SOLIBSDEV}"
+RDEPENDS_libopencl-imx= "libclc-imx"
+
+INSANE_SKIP_libopenvg-imx += "dev-so"
+FILES_libopenvg-imx = "${libdir}/libOpenVG*${SOLIBS}"
+FILES_libopenvg-imx-dev = "${includedir}/VG ${libdir}/libOpenVG*${SOLIBSDEV} ${libdir}/pkgconfig/vg.pc"
+
+FILES_libvdk-imx = "${libdir}/libVDK*${SOLIBS}"
+FILES_libvdk-imx-dev = "${includedir}/*vdk*.h ${libdir}/libVDK${SOLIBSDEV}"
+INSANE_SKIP_libvdk-imx += "dev-so"
+
+FILES_libvivante-dri-imx = "${libdir}/dri/vivante_dri.so"
+RDEPENDS_libvivante-dri-imx = "libdrm"
+
+INSANE_SKIP_libwayland-viv-imx += "dev-so"
+FILES_libwayland-viv-imx = "${libdir}/libwayland-viv${REALSOLIBS} ${libdir}/libwayland-viv${SOLIBS}"
+FILES_libwayland-viv-imx-dev = "${includedir}/wayland-viv ${libdir})/libwayland-viv${SOLIBSDEV} ${libdir}/pkgconfig/wayland-viv.pc"
+RPROVIDES_libwayland-viv-imx += "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'xf86-video-imx-vivante', '', d)}"
+
+INSANE_SKIP_libgc-wayland-protocol-imx += "dev-so"
+FILES_libgc-wayland-protocol-imx = "${libdir}/libgc_wayland_protocol${REALSOLIBS} ${libdir}/libgc_wayland_protocol${SOLIBS}"
+FILES_libgc-wayland-protocol-imx-dev = "${libdir}/libgc_wayland_protocol${SOLIBSDEV} ${libdir}/pkgconfig/gc_wayland_protocol.pc"
+
+FILES_imx-gpu-viv-tools = "${bindir}/gmem_info"
+
+FILES_imx-gpu-viv-demos = "/opt"
+INSANE_SKIP_imx-gpu-viv-demos += "rpaths dev-deps"
+
+# COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx8)"
diff --git a/bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p1.8-aarch32.bb b/bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p1.8-aarch32.bb
new file mode 100644
index 00000000..3564aab0
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p1.8-aarch32.bb
@@ -0,0 +1,11 @@
+# Copyright (C) 2013-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+require recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc
+SRC_URI[md5sum] = "ef9e0b5fcb140c72b63dcf8b8da0be6b"
+SRC_URI[sha256sum] = "7c31d1c7b45309ff7ca667b4d69b7c3b5fa320dcdcd90f2eb895f66f826f422b"
+
+PACKAGE_FP_TYPE = "hardfp"
+
+COMPATIBLE_MACHINE = "(mx6q|mx6dl|mx6sx|mx6sl|mx7ulp)"
diff --git a/bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p1.8-aarch64.bb b/bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p1.8-aarch64.bb
new file mode 100644
index 00000000..004cdcb2
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv_6.2.4.p1.8-aarch64.bb
@@ -0,0 +1,6 @@
+require imx-gpu-viv-6.inc
+
+SRC_URI[md5sum] = "89cd1ad71128bc1b200c18a5a8db95b0"
+SRC_URI[sha256sum] = "bf27b753b45777e90a158819d80d91f5226b34d71dc4ec4eea40f2c10c46159a"
+
+COMPATIBLE_MACHINE = "(mx8)"
diff --git a/bsp/meta-freescale/recipes-graphics/libepoxy/libepoxy_1.5.%.bbappend b/bsp/meta-freescale/recipes-graphics/libepoxy/libepoxy_1.5.%.bbappend
new file mode 100644
index 00000000..5b82b3f4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/libepoxy/libepoxy_1.5.%.bbappend
@@ -0,0 +1,5 @@
+# Append EGL_CFLAGS to CFLAGS
+CFLAGS_append_imxgpu = " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_API_FB', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '-DWL_EGL_PLATFORM', '', d)} \
+"
diff --git a/bsp/meta-freescale/recipes-graphics/libsdl2/libsdl2_%.bbappend b/bsp/meta-freescale/recipes-graphics/libsdl2/libsdl2_%.bbappend
new file mode 100644
index 00000000..303ea63a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/libsdl2/libsdl2_%.bbappend
@@ -0,0 +1,8 @@
+# what vivante driver does libsdl2 mean? Anyway it fails with missing functions as
+# VIVANTE_Create VIVANTE_GLES_GetProcAddress VIVANTE_GLES_UnloadLibrary ...
+EXTRA_OECONF_append_imxgpu2d = " --disable-video-vivante"
+
+CFLAGS_append_imxgpu = " -DLINUX \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_API_FB', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '-DWL_EGL_PLATFORM', '', d)} \
+"
diff --git a/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Add-OpenVG-demos-to-support-wayland.patch b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Add-OpenVG-demos-to-support-wayland.patch
new file mode 100644
index 00000000..19bcca98
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Add-OpenVG-demos-to-support-wayland.patch
@@ -0,0 +1,84 @@
+From 8aba54422d9a77383c150f9f70240b18b6e1918e Mon Sep 17 00:00:00 2001
+From: Prabhu Sundararaj <prabhu.sundararaj@freescale.com>
+Date: Thu, 9 Apr 2015 15:47:21 -0500
+Subject: [PATCH] Add OpenVG demos to support wayland.
+
+Upstream-Status: Pending
+
+Signed-off-by: Prabhu Sundararaj <prabhu.sundararaj@freescale.com>
+---
+ src/egl/Makefile.am | 6 +++---
+ src/egl/openvg/Makefile.am | 33 +++++++++++++++++++++++++++++----
+ 2 files changed, 32 insertions(+), 7 deletions(-)
+
+Index: mesa-demos-8.2.0/src/egl/Makefile.am
+===================================================================
+--- mesa-demos-8.2.0.orig/src/egl/Makefile.am 2016-05-09 11:45:51.479100180 -0500
++++ mesa-demos-8.2.0/src/egl/Makefile.am 2016-05-09 11:45:51.475100160 -0500
+@@ -26,10 +26,10 @@
+ eglut \
+ opengles1 \
+ opengles2 \
+- oes_vg
++ oes_vg \
++ openvg
+
+ if HAVE_GLU
+ SUBDIRS += \
+- opengl \
+- openvg
++ opengl
+ endif
+Index: mesa-demos-8.2.0/src/egl/openvg/Makefile.am
+===================================================================
+--- mesa-demos-8.2.0.orig/src/egl/openvg/Makefile.am 2016-05-09 11:45:51.479100180 -0500
++++ mesa-demos-8.2.0/src/egl/openvg/Makefile.am 2016-05-09 12:39:30.000000000 -0500
+@@ -47,13 +47,26 @@
+ endif
+ endif
+
++if HAVE_WAYLAND
++EGL_WL_DEMOS = \
++ lion_wayland \
++ sp_wayland
++
++if HAVE_FREETYPE2
++EGL_WL_DEMOS += \
++ vgtext_wayland
++endif
++endif
++
+ if HAVE_EGL
+ if HAVE_VG
+ bin_PROGRAMS = \
+- $(EGL_X11_DEMOS)
++ $(EGL_X11_DEMOS) \
++ $(EGL_WL_DEMOS)
+ endif
+ endif
+
++if HAVE_X11
+ lion_x11_SOURCES = lion.c lion-render.c lion-render.h
+ sp_x11_SOURCES = sp.c
+
+@@ -63,6 +76,20 @@
+ text_SOURCES = text.c
+ text_CFLAGS = $(AM_CFLAGS) @FREETYPE2_CFLAGS@
+ text_LDADD = @FREETYPE2_LIBS@ ../eglut/libeglut_x11.la
++endif
++
++if HAVE_WAYLAND
++lion_wayland_SOURCES = lion.c lion-render.c lion-render.h
++lion_wayland_LDADD = ../eglut/libeglut_wayland.la
++
++sp_wayland_SOURCES = sp.c
++sp_wayland_LDADD = ../eglut/libeglut_wayland.la
++
++vgtext_wayland_SOURCES = text.c
++vgtext_wayland_CFLAGS = $(AM_CFLAGS) @FREETYPE2_CFLAGS@
++vgtext_wayland_LDADD = @FREETYPE2_LIBS@ ../eglut/libeglut_wayland.la
++
++endif
+
+ SUBDIRS = \
+ trivial
diff --git a/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Additional-eglSwapBuffer-calling-makes-wrong-throttl.patch b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Additional-eglSwapBuffer-calling-makes-wrong-throttl.patch
new file mode 100644
index 00000000..180a9d84
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Additional-eglSwapBuffer-calling-makes-wrong-throttl.patch
@@ -0,0 +1,28 @@
+From 010af1952d935352764389636b7165283e6c9e3f Mon Sep 17 00:00:00 2001
+From: Prabhu Sundararaj <prabhu.sundararaj@freescale.com>
+Date: Tue, 7 Apr 2015 17:58:45 -0500
+Subject: [PATCH] Additional eglSwapBuffer calling makes wrong throttling
+
+Upstream Status: Pending
+
+Signed-off-by: Prabhu Sundararaj <prabhu.sundararaj@freescale.com>
+---
+ src/egl/eglut/eglut_wayland.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/egl/eglut/eglut_wayland.c b/src/egl/eglut/eglut_wayland.c
+index 968b33f..5664d35 100644
+--- a/src/egl/eglut/eglut_wayland.c
++++ b/src/egl/eglut/eglut_wayland.c
+@@ -155,7 +155,7 @@ draw(void *data, struct wl_callback *callback, uint32_t time)
+
+ if (win->display_cb)
+ win->display_cb();
+- eglSwapBuffers(_eglut->dpy, win->surface);
++ /*eglSwapBuffers(_eglut->dpy, win->surface);*/
+
+ if (callback)
+ wl_callback_destroy(callback);
+--
+2.3.5
+
diff --git a/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch
new file mode 100644
index 00000000..d899540f
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch
@@ -0,0 +1,355 @@
+From 757649a766f90e745f24df1d191caeef15c71399 Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Tue, 4 Jun 2013 09:28:51 -0300
+Subject: [PATCH] Replace glWindowPos2iARB calls with glWindowPos2i
+
+Vivante libGL does not provide the glWindowPos2iARB symbol, but
+glWindowPos2i. Use this instead.
+
+Upstream-Status: Inapropriate [embedded specific]
+
+Reported-by: Jeremy Stashluk <jstashluk@dekaresearch.com>
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ src/demos/copypix.c | 4 ++--
+ src/demos/engine.c | 2 +-
+ src/demos/fogcoord.c | 4 ++--
+ src/glsl/shadow_sampler.c | 2 +-
+ src/tests/auxbuffer.c | 2 +-
+ src/tests/copypixrate.c | 2 +-
+ src/tests/drawbuffers.c | 2 +-
+ src/tests/drawbuffers2.c | 2 +-
+ src/tests/fbotest1.c | 2 +-
+ src/tests/fbotest2.c | 4 ++--
+ src/tests/fbotest3.c | 2 +-
+ src/tests/readrate.c | 10 +++++-----
+ src/tests/viewmemory.c | 2 +-
+ src/trivial/clear-fbo-scissor.c | 2 +-
+ src/trivial/clear-fbo-tex.c | 2 +-
+ src/trivial/clear-fbo.c | 2 +-
+ src/trivial/readpixels.c | 2 +-
+ src/trivial/tri-fbo.c | 2 +-
+ src/xdemos/glxsnoop.c | 2 +-
+ src/xdemos/wincopy.c | 4 ++--
+ 20 files changed, 28 insertions(+), 28 deletions(-)
+
+diff --git a/src/demos/copypix.c b/src/demos/copypix.c
+index 286c5a9..041b567 100644
+--- a/src/demos/copypix.c
++++ b/src/demos/copypix.c
+@@ -54,7 +54,7 @@ static void Display( void )
+ glClear( GL_COLOR_BUFFER_BIT );
+
+ /* draw original image */
+- glWindowPos2iARB(dx, dy);
++ glWindowPos2i(dx, dy);
+ glDrawPixels(ImgWidth, ImgHeight, ImgFormat, GL_UNSIGNED_BYTE, Image);
+
+ if (Scissor)
+@@ -71,7 +71,7 @@ static void Display( void )
+
+ /* draw copy */
+ glPixelZoom(Xzoom, Yzoom);
+- glWindowPos2iARB(Xpos, Ypos);
++ glWindowPos2i(Xpos, Ypos);
+ glCopyPixels(dx, dy, ImgWidth, ImgHeight, GL_COLOR);
+ glPixelZoom(1, 1);
+
+diff --git a/src/demos/engine.c b/src/demos/engine.c
+index 928fcbb..beace4c 100644
+--- a/src/demos/engine.c
++++ b/src/demos/engine.c
+@@ -971,7 +971,7 @@ Draw(void)
+ glDisable(GL_LIGHTING);
+ glDisable(GL_TEXTURE_2D);
+ glColor3f(1, 1 , 1);
+- glWindowPos2iARB(10, 10);
++ glWindowPos2i(10, 10);
+ PrintString(s);
+ if (lit)
+ glEnable(GL_LIGHTING);
+diff --git a/src/demos/fogcoord.c b/src/demos/fogcoord.c
+index 567eec0..e833009 100644
+--- a/src/demos/fogcoord.c
++++ b/src/demos/fogcoord.c
+@@ -68,14 +68,14 @@ PrintInfo(void)
+
+ sprintf(s, "Mode(m): %s Start(s/S): %g End(e/E): %g Density(d/D): %g",
+ ModeStr, fogStart, fogEnd, fogDensity);
+- glWindowPos2iARB(5, 20);
++ glWindowPos2i(5, 20);
+ PrintString(s);
+
+ sprintf(s, "Arrays(a): %s glFogCoord(c): %s EyeZ(z/z): %g",
+ (Arrays ? "Yes" : "No"),
+ (fogCoord ? "Yes" : "No"),
+ camz);
+- glWindowPos2iARB(5, 5);
++ glWindowPos2i(5, 5);
+ PrintString(s);
+ }
+
+diff --git a/src/glsl/shadow_sampler.c b/src/glsl/shadow_sampler.c
+index b830030..eb82d8b 100644
+--- a/src/glsl/shadow_sampler.c
++++ b/src/glsl/shadow_sampler.c
+@@ -85,7 +85,7 @@ Redisplay(void)
+ glPopMatrix();
+
+ glUseProgram(0);
+- glWindowPos2iARB(80, 20);
++ glWindowPos2i(80, 20);
+ PrintString("white black white black");
+
+ {
+diff --git a/src/tests/auxbuffer.c b/src/tests/auxbuffer.c
+index 5fa399a..0cd5f47 100644
+--- a/src/tests/auxbuffer.c
++++ b/src/tests/auxbuffer.c
+@@ -419,7 +419,7 @@ event_loop(Display *dpy, Window win)
+ /* Copy aux buffer image to back color buffer */
+ glReadBuffer(GL_AUX0);
+ glDrawBuffer(GL_BACK);
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glDisable(GL_DEPTH_TEST);
+ glCopyPixels(0, 0, WinWidth, WinHeight, GL_COLOR);
+ glEnable(GL_DEPTH_TEST);
+diff --git a/src/tests/copypixrate.c b/src/tests/copypixrate.c
+index 2f64e0a..df1f9b0 100644
+--- a/src/tests/copypixrate.c
++++ b/src/tests/copypixrate.c
+@@ -91,7 +91,7 @@ BlitOne(void)
+ else
+ #endif
+ {
+- glWindowPos2iARB(x, y);
++ glWindowPos2i(x, y);
+ glCopyPixels(0, 0, ImgWidth, ImgHeight, GL_COLOR);
+ }
+ }
+diff --git a/src/tests/drawbuffers.c b/src/tests/drawbuffers.c
+index fa2f8a7..cd5033f 100644
+--- a/src/tests/drawbuffers.c
++++ b/src/tests/drawbuffers.c
+@@ -88,7 +88,7 @@ Display(void)
+ glUseProgram(0);
+ glDisable(GL_DEPTH_TEST);
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+ free(buffer);
+diff --git a/src/tests/drawbuffers2.c b/src/tests/drawbuffers2.c
+index 5bcf0b2..84d444b 100644
+--- a/src/tests/drawbuffers2.c
++++ b/src/tests/drawbuffers2.c
+@@ -112,7 +112,7 @@ Display(void)
+ glUseProgram(0);
+ glDisable(GL_DEPTH_TEST);
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+ free(buffer);
+diff --git a/src/tests/fbotest1.c b/src/tests/fbotest1.c
+index 161903c..5930a6d 100644
+--- a/src/tests/fbotest1.c
++++ b/src/tests/fbotest1.c
+@@ -61,7 +61,7 @@ Display( void )
+
+ /* draw to window */
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+ free(buffer);
+diff --git a/src/tests/fbotest2.c b/src/tests/fbotest2.c
+index 6ef7f12..11c867e 100644
+--- a/src/tests/fbotest2.c
++++ b/src/tests/fbotest2.c
+@@ -72,7 +72,7 @@ Display( void )
+
+ glDisable(GL_DEPTH_TEST); /* in case window has depth buffer */
+
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glCopyPixels(0, 0, Width, Height, GL_COLOR);
+ }
+ else if (blitPix) {
+@@ -95,7 +95,7 @@ Display( void )
+ /* draw to window */
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ glDisable(GL_DEPTH_TEST); /* in case window has depth buffer */
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+ free(buffer);
+diff --git a/src/tests/fbotest3.c b/src/tests/fbotest3.c
+index 19f684d..e6d7710 100644
+--- a/src/tests/fbotest3.c
++++ b/src/tests/fbotest3.c
+@@ -79,7 +79,7 @@ Display( void )
+ /* draw to window */
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ glDisable(GL_DEPTH_TEST); /* in case window has depth buffer */
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+ free(buffer);
+diff --git a/src/tests/readrate.c b/src/tests/readrate.c
+index 3859cf4..81eb8a3 100644
+--- a/src/tests/readrate.c
++++ b/src/tests/readrate.c
+@@ -85,7 +85,7 @@ MeasureFormat(struct format_type *fmt, GLint width, GLint height, GLuint pbo)
+ glEnd();
+
+ #if DRAW
+- glWindowPos2iARB(0,0);
++ glWindowPos2i(0,0);
+ glDrawPixels(width, height,
+ fmt->Format, fmt->Type, Buffer);
+ glFinish();
+@@ -137,21 +137,21 @@ Draw(void)
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+- glWindowPos2iARB(10, y);
++ glWindowPos2i(10, y);
+ sprintf(str, "ReadPixels size: %d x %d", width, height);
+ PrintString(str);
+ y -= 14;
+
+- glWindowPos2iARB(10, y);
++ glWindowPos2i(10, y);
+ PrintString("Press up/down/left/right to change image size.");
+ y -= 14;
+
+- glWindowPos2iARB(10, y);
++ glWindowPos2i(10, y);
+ PrintString("Press 'b' to run benchmark test.");
+ y -= 14;
+
+ if (Benchmark) {
+- glWindowPos2iARB(10, y);
++ glWindowPos2i(10, y);
+ PrintString("Testing...");
+ }
+
+diff --git a/src/tests/viewmemory.c b/src/tests/viewmemory.c
+index 16044b9..3584c33 100644
+--- a/src/tests/viewmemory.c
++++ b/src/tests/viewmemory.c
+@@ -95,7 +95,7 @@ Draw(void)
+
+ glDisable(GL_TEXTURE_2D);
+ glColor3f(0, 1, 0);
+- glWindowPos2iARB(10, 10);
++ glWindowPos2i(10, 10);
+ PrintString(s);
+
+ glutSwapBuffers();
+diff --git a/src/trivial/clear-fbo-scissor.c b/src/trivial/clear-fbo-scissor.c
+index a30935c..5c15200 100644
+--- a/src/trivial/clear-fbo-scissor.c
++++ b/src/trivial/clear-fbo-scissor.c
+@@ -182,7 +182,7 @@ Draw(void)
+
+ /* draw to window */
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+ free(buffer);
+diff --git a/src/trivial/clear-fbo-tex.c b/src/trivial/clear-fbo-tex.c
+index de84f98..f0fbdf6 100644
+--- a/src/trivial/clear-fbo-tex.c
++++ b/src/trivial/clear-fbo-tex.c
+@@ -140,7 +140,7 @@ static void Draw( void )
+ glClearColor(0.8, 0.8, 0, 0.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+- glWindowPos2iARB(30, 30);
++ glWindowPos2i(30, 30);
+ glDrawPixels(Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+ free(buffer);
+diff --git a/src/trivial/clear-fbo.c b/src/trivial/clear-fbo.c
+index 10d830b..3fee3e3 100644
+--- a/src/trivial/clear-fbo.c
++++ b/src/trivial/clear-fbo.c
+@@ -116,7 +116,7 @@ Draw(void)
+ glClearColor(0.8, 0.8, 0, 0.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+- glWindowPos2iARB(30, 30);
++ glWindowPos2i(30, 30);
+ glDrawPixels(Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+ free(buffer);
+diff --git a/src/trivial/readpixels.c b/src/trivial/readpixels.c
+index ccce4ed..74e0546 100644
+--- a/src/trivial/readpixels.c
++++ b/src/trivial/readpixels.c
+@@ -71,7 +71,7 @@ static void Draw(void)
+ printf("Pixel(0,0) = %f, %f, %f, %f\n",
+ image[0], image[1], image[2], image[3]);
+ /* draw to right half of window */
+- glWindowPos2iARB(Width, 0);
++ glWindowPos2i(Width, 0);
+ glPixelZoom(Zoom, Zoom);
+ glDrawPixels(Width, Height, GL_RGBA, GL_FLOAT, image);
+ free(image);
+diff --git a/src/trivial/tri-fbo.c b/src/trivial/tri-fbo.c
+index d5800b2..dd1f21a 100644
+--- a/src/trivial/tri-fbo.c
++++ b/src/trivial/tri-fbo.c
+@@ -119,7 +119,7 @@ static void Draw( void )
+ glClearColor(0.8, 0.8, 0, 0.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+- glWindowPos2iARB(30, 30);
++ glWindowPos2i(30, 30);
+ glDrawPixels(Width-60, Height-60, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
+
+
+diff --git a/src/xdemos/glxsnoop.c b/src/xdemos/glxsnoop.c
+index 2215cfd..13d2b2d 100644
+--- a/src/xdemos/glxsnoop.c
++++ b/src/xdemos/glxsnoop.c
+@@ -91,7 +91,7 @@ redraw(Display *dpy, Window srcWin, Window dstWin )
+ }
+
+ glXMakeCurrent(dpy, dstWin, Context);
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glDrawBuffer(GL_FRONT);
+ glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, image);
+ glFlush();
+diff --git a/src/xdemos/wincopy.c b/src/xdemos/wincopy.c
+index f670983..d010085 100644
+--- a/src/xdemos/wincopy.c
++++ b/src/xdemos/wincopy.c
+@@ -156,11 +156,11 @@ Redraw(void)
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ if (TestClipping) {
+- glWindowPos2iARB(-2, -2);
++ glWindowPos2i(-2, -2);
+ glCopyPixels(-2, -2, Width[0] + 4, Height[0] + 4, GL_COLOR);
+ }
+ else {
+- glWindowPos2iARB(0, 0);
++ glWindowPos2i(0, 0);
+ glCopyPixels(0, 0, Width[0], Height[0], GL_COLOR);
+ }
+
+--
+1.8.1
+
diff --git a/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/fix-clear-build-break.patch b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/fix-clear-build-break.patch
new file mode 100644
index 00000000..eb541d65
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos/fix-clear-build-break.patch
@@ -0,0 +1,17 @@
+mesa-demos: Add extension header to fix build break now that gl1 is removed
+
+Upstream Status: Pending
+
+diff --git a/src/egl/opengles1/clear.c b/src/egl/opengles1/clear.c
+index 9fe1b5291e1905fd6fe572063ed707d59ce45a81..ca9954a21b5f475709dbdef07f90b900962fcbc7 100644
+--- a/src/egl/opengles1/clear.c
++++ b/src/egl/opengles1/clear.c
+@@ -34,7 +34,7 @@
+ #include <stdio.h>
+ #include <EGL/egl.h>
+ #include <GLES/gl.h>
+-
++#include <GLES/glext.h>
+ #include "eglut.h"
+
+ typedef void (GL_APIENTRY *type_ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
diff --git a/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos_%.bbappend b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos_%.bbappend
new file mode 100644
index 00000000..94db4157
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/mesa/mesa-demos_%.bbappend
@@ -0,0 +1,22 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI_append_imxgpu = " file://Replace-glWindowPos2iARB-calls-with-glWindowPos2i.patch \
+ file://fix-clear-build-break.patch \
+ file://Additional-eglSwapBuffer-calling-makes-wrong-throttl.patch \
+ file://Add-OpenVG-demos-to-support-wayland.patch"
+
+PACKAGECONFIG_IMX_TO_REMOVE_GLES = ""
+PACKAGECONFIG_IMX_TO_REMOVE_GLES_imxgpu2d = "gles1 gles2"
+PACKAGECONFIG_IMX_TO_REMOVE_GLES_imxgpu3d = ""
+PACKAGECONFIG_IMX_TO_REMOVE = "${PACKAGECONFIG_IMX_TO_REMOVE_GLES}"
+PACKAGECONFIG_IMX_TO_REMOVE_append_imxgpu = " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'glu x11', '', d)} \
+"
+PACKAGECONFIG_remove = "${PACKAGECONFIG_IMX_TO_REMOVE}"
+
+PACKAGECONFIG_IMX_TO_APPEND = ""
+PACKAGECONFIG_IMX_TO_APPEND_append_imxgpu = " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland vg', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glut', '', d)} \
+"
+PACKAGECONFIG_append = "${PACKAGECONFIG_IMX_TO_APPEND}"
diff --git a/bsp/meta-freescale/recipes-graphics/mesa/mesa-gl_%.bbappend b/bsp/meta-freescale/recipes-graphics/mesa/mesa-gl_%.bbappend
new file mode 100644
index 00000000..465c8932
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/mesa/mesa-gl_%.bbappend
@@ -0,0 +1 @@
+COMPATIBLE_MACHINE_imxgpu2d = "(-)"
diff --git a/bsp/meta-freescale/recipes-graphics/mesa/mesa_%.bbappend b/bsp/meta-freescale/recipes-graphics/mesa/mesa_%.bbappend
new file mode 100644
index 00000000..5ead6251
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/mesa/mesa_%.bbappend
@@ -0,0 +1,40 @@
+PROVIDES_remove_imxgpu = "virtual/egl"
+PROVIDES_remove_imxgpu3d = "virtual/libgl virtual/libgles1 virtual/libgles2"
+
+PACKAGECONFIG_remove_imxgpu = "egl gbm"
+PACKAGECONFIG_remove_imxgpu3d = "gles"
+
+# FIXME: mesa should support 'x11-no-tls' option
+python () {
+ overrides = d.getVar("OVERRIDES", True).split(":")
+ if "imxgpu2d" not in overrides:
+ return
+
+ x11flag = d.getVarFlag("PACKAGECONFIG", "x11", False)
+ d.setVarFlag("PACKAGECONFIG", "x11", x11flag.replace("--enable-glx-tls", "--enable-glx"))
+}
+
+# Enable Etnaviv support
+PACKAGECONFIG_append_use-mainline-bsp = " gallium"
+GALLIUMDRIVERS_append_use-mainline-bsp = ",etnaviv,imx"
+
+BACKEND = \
+ "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', \
+ 'fb', d), d)}"
+
+# FIXME: Dirty hack to allow use of Vivante GPU libGL binary
+do_install_append_imxgpu3d () {
+ rm -f ${D}${libdir}/libGL.* \
+ ${D}${includedir}/GL/gl.h \
+ ${D}${includedir}/GL/glext.h \
+ ${D}${includedir}/GL/glx.h \
+ ${D}${includedir}/GL/glxext.h
+ if [ "${BACKEND}" = "x11" ]; then
+ rm -f ${D}${libdir}/pkgconfig/gl.pc
+ fi
+}
+
+do_install_append_imxgpu () {
+ rm -rf ${D}${includedir}/KHR
+}
diff --git a/bsp/meta-freescale/recipes-graphics/waffle/waffle_%.bbappend b/bsp/meta-freescale/recipes-graphics/waffle/waffle_%.bbappend
new file mode 100644
index 00000000..9a9de0ed
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/waffle/waffle_%.bbappend
@@ -0,0 +1,7 @@
+PACKAGECONFIG_X11 = ""
+PACKAGECONFIG_X11_append_imxgpu3d = " x11-egl glx"
+PACKAGECONFIG_imxgpu = " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gbm', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11', '${PACKAGECONFIG_X11}', \
+ '', d), d)} \
+"
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols/0001-unstable-Add-alpha-compositing-protocol.patch b/bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols/0001-unstable-Add-alpha-compositing-protocol.patch
new file mode 100644
index 00000000..10dc2198
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols/0001-unstable-Add-alpha-compositing-protocol.patch
@@ -0,0 +1,195 @@
+From b4be5e338be2301f83f4dfdc0cbb740f0a783464 Mon Sep 17 00:00:00 2001
+From: Haihua Hu <jared.hu@nxp.com>
+Date: Thu, 14 Jun 2018 13:54:08 +0800
+Subject: [PATCH 1/2] unstable: Add alpha-compositing protocol
+
+It's based on the Chromium Wayland protocol of the same name ([1])
+and Alexandros's modified version ([2])with a few changes
+made to the blending_equation enumeration.
+
+Add one more blending_equation "src_alpha / src_alpha"
+
+[1] https://chromium.googlesource.com/chromium/src/+/master/third_party/wayland-protocols/unstable/alpha-compositing/alpha-compositing-unstable-v1.xml
+[2] https://lists.freedesktop.org/archives/wayland-devel/2017-August/034741.html
+
+Upstream-Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Haihua Hu <jared.hu@nxp.com>
+---
+ Makefile.am | 1 +
+ unstable/alpha-compositing/README | 6 +
+ .../alpha-compositing-unstable-v1.xml | 136 +++++++++++++++++++++
+ 3 files changed, 143 insertions(+)
+ create mode 100644 unstable/alpha-compositing/README
+ create mode 100644 unstable/alpha-compositing/alpha-compositing-unstable-v1.xml
+
+diff --git a/Makefile.am b/Makefile.am
+index 4b9a901..e6c44ec 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -17,6 +17,7 @@ unstable_protocols = \
+ unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml \
+ unstable/xdg-output/xdg-output-unstable-v1.xml \
+ unstable/input-timestamps/input-timestamps-unstable-v1.xml \
++ unstable/alpha-compositing/alpha-compositing-unstable-v1.xml \
+ $(NULL)
+
+ stable_protocols = \
+diff --git a/unstable/alpha-compositing/README b/unstable/alpha-compositing/README
+new file mode 100644
+index 0000000..d874156
+--- /dev/null
++++ b/unstable/alpha-compositing/README
+@@ -0,0 +1,6 @@
++Alpha compositing protocol
++
++Maintainers:
++David Reveman <reveman at chromium.org>
++Alexandros Frantzis <alexandros.frantzis at collabora.com>
++Jared Hu <Jared Hu at nxp.com>
+diff --git a/unstable/alpha-compositing/alpha-compositing-unstable-v1.xml b/unstable/alpha-compositing/alpha-compositing-unstable-v1.xml
+new file mode 100644
+index 0000000..0844b3f
+--- /dev/null
++++ b/unstable/alpha-compositing/alpha-compositing-unstable-v1.xml
+@@ -0,0 +1,136 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<protocol name="alpha_compositing_unstable_v1">
++
++ <copyright>
++ Copyright 2016 The Chromium Authors.
++ Copyright 2017 Collabora Ltd
++ Copyright 2018 NXP
++
++ Permission is hereby granted, free of charge, to any person obtaining a
++ copy of this software and associated documentation files (the "Software"),
++ to deal in the Software without restriction, including without limitation
++ the rights to use, copy, modify, merge, publish, distribute, sublicense,
++ and/or sell copies of the Software, and to permit persons to whom the
++ Software is furnished to do so, subject to the following conditions:
++
++ The above copyright notice and this permission notice (including the next
++ paragraph) shall be included in all copies or substantial portions of the
++ Software.
++
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++ DEALINGS IN THE SOFTWARE.
++ </copyright>
++
++ <description summary="Protocol for more advanced compositing and blending">
++ This protocol specifies a set of interfaces used to control the alpha
++ compositing and blending of surface contents.
++
++ Warning! The protocol described in this file is experimental and backward
++ incompatible changes may be made. Backward compatible changes may be added
++ together with the corresponding interface version bump. Backward
++ incompatible changes are done by bumping the version number in the protocol
++ and interface names and resetting the interface version. Once the protocol
++ is to be declared stable, the 'z' prefix and the version number in the
++ protocol and interface names are removed and the interface version number is
++ reset.
++ </description>
++
++ <interface name="zwp_alpha_compositing_v1" version="1">
++ <description summary="alpha_compositing">
++ The global interface exposing compositing and blending capabilities is
++ used to instantiate an interface extension for a wl_surface object.
++ This extended interface will then allow the client to specify the
++ blending equation and alpha value used for compositing the wl_surface.
++ </description>
++
++ <request name="destroy" type="destructor">
++ <description summary="unbind from the blending interface">
++ Informs the server that the client will not be using this
++ protocol object anymore. This does not affect any other objects,
++ blending objects included.
++ </description>
++ </request>
++
++ <enum name="error">
++ <entry name="blending_exists" value="0"
++ summary="the surface already has a blending object associated"/>
++ </enum>
++
++ <request name="get_blending">
++ <description summary="extend surface interface for blending">
++ Instantiate an interface extension for the given wl_surface to
++ provide surface blending. If the given wl_surface already has
++ a blending object associated, the blending_exists protocol error
++ is raised.
++ </description>
++
++ <arg name="id" type="new_id" interface="zwp_blending_v1"
++ summary="the new blending interface id"/>
++ <arg name="surface" type="object" interface="wl_surface"
++ summary="the surface"/>
++ </request>
++ </interface>
++
++ <interface name="zwp_blending_v1" version="1">
++ <description summary="blending interface to a wl_surface">
++ An additional interface to a wl_surface object, which allows the
++ client to specify the blending equation used for compositing and
++ an alpha value applied to the whole surface.
++
++ When the blending object is created its blending equation is
++ 'none' and its alpha is 1.0, i.e., it's inactive by default. Clients
++ can activate it by setting the blending equation and alpha value.
++
++ If the wl_surface associated with the blending object is destroyed,
++ the blending object becomes inert.
++
++ If the blending object is destroyed, the blending state is removed
++ from the wl_surface. The change will be applied on the next
++ wl_surface.commit.
++ </description>
++
++ <request name="destroy" type="destructor">
++ <description summary="remove blending from the surface">
++ The associated wl_surface's blending state is removed.
++ The change is applied on the next wl_surface.commit.
++ </description>
++ </request>
++
++ <enum name="blending_equation">
++ <description summary="different blending equations for compositing">
++ Blending equations that can be used when compositing a surface.
++ </description>
++ <entry name="none" value="0" summary="blending object is inactive"/>
++ <entry name="opaque" value="1" summary="(one, zero)"/>
++ <entry name="premultiplied" value="2" summary="(one, one_minus_src_alpha)"/>
++ <entry name="straight" value="3" summary="(src_alpha, one_minus_src_alpha)" />
++ <entry name="fromsource" value="4" summary="(src_alpha, src_alpha)" />
++ </enum>
++
++ <request name="set_blending">
++ <description summary="set the blending equation">
++ Set the blending equation for compositing the wl_surface.
++
++ The blending equation state is double-buffered state,
++ and will be applied on the next wl_surface.commit.
++ </description>
++ <arg name="equation" type="uint" summary="the new blending equation"/>
++ </request>
++
++ <request name="set_alpha">
++ <description summary="set the alpha value">
++ Set the alpha value applied to the whole surface for compositing.
++
++ The alpha value state is double-buffered state,
++ and will be applied on the next wl_surface.commit.
++ </description>
++ <arg name="value" type="fixed" summary="the new alpha value"/>
++ </request>
++ </interface>
++
++</protocol>
+\ No newline at end of file
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols/0002-unstable-Add-hdr10-metadata-protocol.patch b/bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols/0002-unstable-Add-hdr10-metadata-protocol.patch
new file mode 100644
index 00000000..654e8b09
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols/0002-unstable-Add-hdr10-metadata-protocol.patch
@@ -0,0 +1,134 @@
+From 54e847c10a75ec7bd6fbb8fbdd700d085145cdce Mon Sep 17 00:00:00 2001
+From: Haihua Hu <jared.hu@nxp.com>
+Date: Tue, 26 Jun 2018 15:30:18 +0800
+Subject: [PATCH 2/2] unstable: Add hdr10-metadata protocol
+
+this protocol is used to support hdr10 video playback.
+HDR10 metadata is passed to compositor via this interface
+
+Upstream-Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Haihua Hu <jared.hu@nxp.com>
+---
+ Makefile.am | 1 +
+ unstable/hdr10-metadata/README | 4 ++
+ .../hdr10-metadata/hdr10-metadata-unstable-v1.xml | 84 ++++++++++++++++++++++
+ 3 files changed, 89 insertions(+)
+ create mode 100644 unstable/hdr10-metadata/README
+ create mode 100644 unstable/hdr10-metadata/hdr10-metadata-unstable-v1.xml
+
+diff --git a/Makefile.am b/Makefile.am
+index e6c44ec..b8206c7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -18,6 +18,7 @@ unstable_protocols = \
+ unstable/xdg-output/xdg-output-unstable-v1.xml \
+ unstable/input-timestamps/input-timestamps-unstable-v1.xml \
+ unstable/alpha-compositing/alpha-compositing-unstable-v1.xml \
++ unstable/hdr10-metadata/hdr10-metadata-unstable-v1.xml \
+ $(NULL)
+
+ stable_protocols = \
+diff --git a/unstable/hdr10-metadata/README b/unstable/hdr10-metadata/README
+new file mode 100644
+index 0000000..58a82f8
+--- /dev/null
++++ b/unstable/hdr10-metadata/README
+@@ -0,0 +1,4 @@
++hdr10 metadata protocol
++
++Maintainers:
++Jared Hu <Jared Hu at nxp.com>
+diff --git a/unstable/hdr10-metadata/hdr10-metadata-unstable-v1.xml b/unstable/hdr10-metadata/hdr10-metadata-unstable-v1.xml
+new file mode 100644
+index 0000000..5b1bac4
+--- /dev/null
++++ b/unstable/hdr10-metadata/hdr10-metadata-unstable-v1.xml
+@@ -0,0 +1,84 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<protocol name="hdr10_metadata_unstable_v1">
++
++ <copyright>
++ Copyright 2018 NXP
++
++ Permission is hereby granted, free of charge, to any person obtaining a
++ copy of this software and associated documentation files (the "Software"),
++ to deal in the Software without restriction, including without limitation
++ the rights to use, copy, modify, merge, publish, distribute, sublicense,
++ and/or sell copies of the Software, and to permit persons to whom the
++ Software is furnished to do so, subject to the following conditions:
++
++ The above copyright notice and this permission notice (including the next
++ paragraph) shall be included in all copies or substantial portions of the
++ Software.
++
++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++ DEALINGS IN THE SOFTWARE.
++ </copyright>
++
++ <description summary="Protocol for sending hdr10 metadata to compositor">
++ This protocol specifies a set of interfaces used to set and control
++ hdr10 metadata of video contents.
++
++ Warning! The protocol described in this file is experimental and backward
++ incompatible changes may be made. Backward compatible changes may be added
++ together with the corresponding interface version bump. Backward
++ incompatible changes are done by bumping the version number in the protocol
++ and interface names and resetting the interface version. Once the protocol
++ is to be declared stable, the 'z' prefix and the version number in the
++ protocol and interface names are removed and the interface version number is
++ reset.
++ </description>
++
++ <interface name="zwp_hdr10_metadata_v1" version="1">
++ <description summary="hdr10_metadata">
++ The global interface exposing hdr10 metadata capabilities is
++ used to instantiate an interface extension for compositor.
++ This extended interface will then allow the client to pass hdr10 metadata
++ to compositor and send to display driver if supported.
++ </description>
++
++ <request name="destroy" type="destructor">
++ <description summary="unbind from the hdr10 metadata interface">
++ Informs the server that the client will not be using this
++ protocol object anymore. This does not affect any other objects.
++ </description>
++ </request>
++
++ <enum name="error">
++ <entry name="sending_meta_error" value="0"
++ summary="error occurs when compositor handle metadata"/>
++ </enum>
++
++ <request name="set_metadata">
++ <description summary="interface of setting and controling hdr10 metadata">
++ client can use this interface pass hdr10 metadata to server. Server need
++ use the recived metadata to enable hdr mode.
++ </description>
++
++ <arg name="eotf" type="uint" summary="supported eotf"/>
++ <arg name="type" type="uint" summary="supported type"/>
++ <arg name="display_primaries_red" type="uint"
++ summary="display primaries of red, high 16bits for x, and low 16bits for y"/>
++ <arg name="display_primaries_green" type="uint"
++ summary="display primaries of green, high 16bits for x, and low 16bits for y"/>
++ <arg name="display_primaries_blue" type="uint"
++ summary="display primaries of blue, high 16bits for x, and low 16bits for y"/>
++ <arg name="white_point" type="uint"
++ summary="white point, high 16bits for x, and low 16bits for blue"/>
++ <arg name="mastering_display_luminance" type="uint"
++ summary="max and min mastering display luminance, high 16 bits for max, and low 16 bits for min"/>
++ <arg name="max_cll" type="uint" summary="max content light level"/>
++ <arg name="max_fall" type="uint" summary="max frame average light level"/>
++ </request>
++ </interface>
++
++</protocol>
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols_1.13.imx.bb b/bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols_1.13.imx.bb
new file mode 100644
index 00000000..9e087432
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/wayland-protocols_1.13.imx.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Collection of additional Wayland protocols"
+DESCRIPTION = "Wayland protocols that add functionality not \
+available in the Wayland core protocol. Such protocols either add \
+completely new functionality, or extend the functionality of some other \
+protocol either in Wayland core, or some other protocol in \
+wayland-protocols."
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
+ file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
+
+ARCHIVE_NAME = "${BPN}-1.13"
+SRC_URI = "https://wayland.freedesktop.org/releases/${ARCHIVE_NAME}.tar.xz \
+ file://0001-unstable-Add-alpha-compositing-protocol.patch \
+ file://0002-unstable-Add-hdr10-metadata-protocol.patch"
+SRC_URI[md5sum] = "29312149dafcd4a0e739ba94995a574d"
+SRC_URI[sha256sum] = "0758bc8008d5332f431b2a84fea7de64d971ce270ed208206a098ff2ebc68f38"
+S = "${WORKDIR}/${ARCHIVE_NAME}"
+
+inherit autotools pkgconfig
+
+PACKAGES = "${PN}"
+FILES_${PN} += "${datadir}/pkgconfig/wayland-protocols.pc"
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+COMPATIBLE_MACHINE = "(imxfbdev|imxgpu)"
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston-init.bbappend b/bsp/meta-freescale/recipes-graphics/wayland/weston-init.bbappend
new file mode 100644
index 00000000..76aadf94
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston-init.bbappend
@@ -0,0 +1,25 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+# OpenGL is not required for parts with GPU support for 2D but not 3D
+IMX_REQUIRED_DISTRO_FEATURES_REMOVE = ""
+IMX_REQUIRED_DISTRO_FEATURES_REMOVE_imxgpu2d = "opengl"
+IMX_REQUIRED_DISTRO_FEATURES_REMOVE_imxgpu3d = ""
+REQUIRED_DISTRO_FEATURES_remove = "${IMX_REQUIRED_DISTRO_FEATURES_REMOVE}"
+
+SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd wayland x11', 'file://weston.config', '', d)}"
+
+HAS_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}"
+HAS_XWAYLAND = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland x11', 'true', 'false', d)}"
+
+do_install_append() {
+ if ${HAS_SYSTEMD}; then
+ sed -i \
+ -e 's,/usr/bin,${bindir},g' \
+ -e 's,/etc,${sysconfdir},g' \
+ -e 's,/var,${localstatedir},g' \
+ ${D}${systemd_system_unitdir}/weston.service
+ if ${HAS_XWAYLAND}; then
+ install -Dm0755 ${WORKDIR}/weston.config ${D}${sysconfdir}/default/weston
+ fi
+ fi
+}
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston-init/imxdrm/weston.config b/bsp/meta-freescale/recipes-graphics/wayland/weston-init/imxdrm/weston.config
new file mode 100644
index 00000000..5693d6cb
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston-init/imxdrm/weston.config
@@ -0,0 +1,3 @@
+#!/bin/sh
+OPTARGS="--xwayland"
+DESKTOP_SHELL_WINDOW=1920x1080
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston-init/mx8mm/weston.config b/bsp/meta-freescale/recipes-graphics/wayland/weston-init/mx8mm/weston.config
new file mode 100644
index 00000000..eb990e40
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston-init/mx8mm/weston.config
@@ -0,0 +1,3 @@
+#!/bin/sh
+OPTARGS="--xwayland --use-g2d=1"
+DESKTOP_SHELL_WINDOW=1920x1080
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston-init/weston.config b/bsp/meta-freescale/recipes-graphics/wayland/weston-init/weston.config
new file mode 100644
index 00000000..7c92cf11
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston-init/weston.config
@@ -0,0 +1,2 @@
+#!/bin/sh
+OPTARGS="--xwayland"
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston-init/weston.service b/bsp/meta-freescale/recipes-graphics/wayland/weston-init/weston.service
new file mode 100644
index 00000000..44c5a82f
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston-init/weston.service
@@ -0,0 +1,38 @@
+[Unit]
+Description=Weston Wayland Compositor (on tty7)
+RequiresMountsFor=/run
+Conflicts=getty@tty7.service plymouth-quit.service
+After=systemd-user-sessions.service getty@tty7.service plymouth-quit-wait.service
+
+[Service]
+User=root
+PermissionsStartOnly=true
+
+# Log us in via PAM so we get our XDG & co. environment and
+# are treated as logged in so we can use the tty:
+PAMName=login
+
+# Grab tty7
+UtmpIdentifier=tty7
+TTYPath=/dev/tty7
+TTYReset=yes
+TTYVHangup=yes
+TTYVTDisallocate=yes
+
+# stderr to journal so our logging doesn't get thrown into /dev/null
+StandardOutput=tty
+StandardInput=tty
+StandardError=journal
+
+EnvironmentFile=-/etc/default/weston
+
+# Weston does not successfully change VT, nor does systemd place us on
+# the VT it just activated for us. Switch manually:
+ExecStartPre=/usr/bin/chvt 7
+ExecStart=/usr/bin/weston-launch -- --log=/var/log/weston.log $OPTARGS
+
+IgnoreSIGPIPE=no
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston/0001-g2d-renderer-Fix-open-function-build-break.patch b/bsp/meta-freescale/recipes-graphics/wayland/weston/0001-g2d-renderer-Fix-open-function-build-break.patch
new file mode 100644
index 00000000..6f676048
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston/0001-g2d-renderer-Fix-open-function-build-break.patch
@@ -0,0 +1,33 @@
+From 7857e5aa2459b2746e062ae59ae0240c4af7af5d Mon Sep 17 00:00:00 2001
+From: Tom Hochstein <tom.hochstein@nxp.com>
+Date: Mon, 29 Oct 2018 21:40:32 +0000
+Subject: [PATCH] g2d-renderer: Fix open function build break
+
+| from ../git/libweston/g2d-renderer.c:40:
+| In function 'open',
+| inlined from 'g2d_renderer_create' at ../git/libweston/g2d-renderer.c:1629:2:
+| /home/r60874/upstream/fsl-xwayland/tmp/work/cortexa9t2hf-neon-mx6qdl-fsl-linux-gnueabi/weston/4.0.0.imx-r0/recipe- sysroot/usr/include/bits/fcntl2.h:50:4: error: call to '__open_missing_mode' declared with attribute error: open wit h O_CREAT or O_TMPFILE in second argument needs 3 arguments
+| __open_missing_mode ();
+| ^~~~~~~~~~~~~~~~~~~~~~
+| Makefile:5266: recipe for target 'libweston/g2d_renderer_la-g2d-renderer.lo' failed
+
+Upstream-Status: Inappropriate [i.MX-specific]
+
+Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
+---
+ libweston/g2d-renderer.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: git/libweston/g2d-renderer.c
+===================================================================
+--- git.orig/libweston/g2d-renderer.c
++++ git/libweston/g2d-renderer.c
+@@ -1626,7 +1626,7 @@ g2d_renderer_create(struct weston_compos
+ path = malloc(strlen(dir) + 40);
+ strcpy(path, dir);
+ strcat(path, "/use-g2d-renderer");
+- close(open(path, O_CREAT | O_RDWR));
++ close(open(path, O_CREAT | O_RDWR, 0600));
+ free(path);
+
+ return 0;
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston/0001-make-error-portable.patch b/bsp/meta-freescale/recipes-graphics/wayland/weston/0001-make-error-portable.patch
new file mode 100644
index 00000000..09ec1559
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston/0001-make-error-portable.patch
@@ -0,0 +1,78 @@
+From ad1d2161c811cff25d1684c33611f300adb753bc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 29 May 2015 20:56:00 -0700
+Subject: [PATCH] make error() portable
+
+error() is not posix but gnu extension so may not be available on all
+kind of systemsi e.g. musl.
+
+Upstream-Status: Submitted
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ configure.ac | 2 ++
+ libweston/weston-error.h | 20 ++++++++++++++++++++
+ libweston/weston-launch.c | 2 +-
+ 3 files changed, 23 insertions(+), 1 deletion(-)
+ create mode 100644 libweston/weston-error.h
+
+diff --git a/configure.ac b/configure.ac
+index 7aebbdb..dc9c802 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -109,6 +109,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[],
+ [[#include <time.h>]])
+ AC_CHECK_HEADERS([execinfo.h])
+
++AC_CHECK_HEADERS([error.h])
++
+ AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
+
+ # check for libdrm as a build-time dependency only
+diff --git a/libweston/weston-error.h b/libweston/weston-error.h
+new file mode 100644
+index 0000000..2089d02
+--- /dev/null
++++ b/libweston/weston-error.h
+@@ -0,0 +1,20 @@
++#ifndef _WESTON_ERROR_H
++#define _WESTON_ERROR_H
++
++#if defined(HAVE_ERROR_H)
++#include <error.h>
++#else
++#include <err.h>
++#include <string.h>
++#define _weston_error(S, E, F, ...) do { \
++ if (E) \
++ err(S, F ": %s", ##__VA_ARGS__, strerror(E)); \
++ else \
++ err(S, F, ##__VA_ARGS__); \
++} while(0)
++
++#define error _weston_error
++#endif
++
++#endif
++
+diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
+index 1adcf21..166bf3b 100644
+--- a/libweston/weston-launch.c
++++ b/libweston/weston-launch.c
+@@ -33,7 +33,6 @@
+ #include <poll.h>
+ #include <errno.h>
+
+-#include <error.h>
+ #include <getopt.h>
+
+ #include <sys/types.h>
+@@ -59,6 +58,7 @@
+ #endif
+
+ #include "weston-launch.h"
++#include "weston-error.h"
+
+ #define DRM_MAJOR 226
+
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/bsp/meta-freescale/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
new file mode 100644
index 00000000..d648538b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
@@ -0,0 +1,173 @@
+From b98b9dbda902225cdd972b5bff6a641c36cc7e90 Mon Sep 17 00:00:00 2001
+From: Tom Hochstein <tom.hochstein@nxp.com>
+Date: Wed, 22 Feb 2017 15:53:30 +0200
+Subject: [PATCH] weston-launch: Provide a default version that doesn't require PAM
+
+weston-launch requires PAM for starting weston as a non-root user.
+
+Since starting weston as root is a valid use case by itself, if
+PAM is not available, provide a default version of weston-launch
+without non-root-user support.
+
+Upstream-Status: Pending
+
+Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
+Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Signed-off-by: Denys Dmytriyenko <denys@ti.com>
+
+---
+ configure.ac | 9 +++++++--
+ libweston/weston-launch.c | 20 ++++++++++++++++++++
+ 2 files changed, 27 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index dc9c802..48cf5cb 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -451,13 +451,17 @@ AC_ARG_ENABLE(resize-optimization,
+ AS_IF([test "x$enable_resize_optimization" = "xyes"],
+ [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])])
+
++AC_ARG_WITH(pam,
++ AS_HELP_STRING([--with-pam], [Use PAM]),
++ [use_pam=$withval], [use_pam=yes])
+ AC_ARG_ENABLE(weston-launch, [ --enable-weston-launch],, enable_weston_launch=yes)
+ AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch = xyes)
+-if test x$enable_weston_launch = xyes; then
++if test x$enable_weston_launch = xyes -a x$use_pam = xyes; then
+ WESTON_SEARCH_LIBS([PAM], [pam], [pam_open_session], [have_pam=yes], [have_pam=no])
+ if test x$have_pam = xno; then
+- AC_ERROR([weston-launch requires pam])
++ AC_ERROR([PAM support is explicitly requested, but libpam couldn't be found])
+ fi
++ AC_DEFINE([HAVE_PAM], [1], [Define if PAM is available])
+ fi
+
+ AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes")
+@@ -702,6 +706,7 @@ AC_MSG_RESULT([
+ Enable developer documentation ${enable_devdocs}
+
+ weston-launch utility ${enable_weston_launch}
++ PAM support ${use_pam}
+ systemd-login support ${have_systemd_login}
+ systemd notify support ${enable_systemd_notify}
+
+diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
+index 166bf3b..6fb9232 100644
+--- a/libweston/weston-launch.c
++++ b/libweston/weston-launch.c
+@@ -51,7 +51,9 @@
+
+ #include <pwd.h>
+ #include <grp.h>
++#ifdef HAVE_PAM
+ #include <security/pam_appl.h>
++#endif
+
+ #ifdef HAVE_SYSTEMD_LOGIN
+ #include <systemd/sd-login.h>
+@@ -101,8 +103,10 @@ drmSetMaster(int drm_fd)
+ #endif
+
+ struct weston_launch {
++#ifdef HAVE_PAM
+ struct pam_conv pc;
+ pam_handle_t *ph;
++#endif
+ int tty;
+ int ttynr;
+ int sock[2];
+@@ -189,6 +193,7 @@ weston_launch_allowed(struct weston_launch *wl)
+ return false;
+ }
+
++#ifdef HAVE_PAM
+ static int
+ pam_conversation_fn(int msg_count,
+ const struct pam_message **messages,
+@@ -229,6 +234,7 @@ setup_pam(struct weston_launch *wl)
+
+ return 0;
+ }
++#endif
+
+ static int
+ setup_launcher_socket(struct weston_launch *wl)
+@@ -422,6 +428,7 @@ quit(struct weston_launch *wl, int status)
+ close(wl->signalfd);
+ close(wl->sock[0]);
+
++#ifdef HAVE_PAM
+ if (wl->new_user) {
+ err = pam_close_session(wl->ph, 0);
+ if (err)
+@@ -429,6 +436,7 @@ quit(struct weston_launch *wl, int status)
+ err, pam_strerror(wl->ph, err));
+ pam_end(wl->ph, err);
+ }
++#endif
+
+ if (ioctl(wl->tty, KDSKBMUTE, 0) &&
+ ioctl(wl->tty, KDSKBMODE, wl->kb_mode))
+@@ -608,6 +616,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
+ setenv("HOME", wl->pw->pw_dir, 1);
+ setenv("SHELL", wl->pw->pw_shell, 1);
+
++#ifdef HAVE_PAM
+ env = pam_getenvlist(wl->ph);
+ if (env) {
+ for (i = 0; env[i]; ++i) {
+@@ -616,6 +625,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
+ }
+ free(env);
+ }
++#endif
+
+ /*
+ * We open a new session, so it makes sense
+@@ -683,8 +693,10 @@ static void
+ help(const char *name)
+ {
+ fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name);
++#ifdef HAVE_PAM
+ fprintf(stderr, " -u, --user Start session as specified username,\n"
+ " e.g. -u joe, requires root.\n");
++#endif
+ fprintf(stderr, " -t, --tty Start session on alternative tty,\n"
+ " e.g. -t /dev/tty4, requires -u option.\n");
+ fprintf(stderr, " -v, --verbose Be verbose\n");
+@@ -698,7 +710,9 @@ main(int argc, char *argv[])
+ int i, c;
+ char *tty = NULL;
+ struct option opts[] = {
++#ifdef HAVE_PAM
+ { "user", required_argument, NULL, 'u' },
++#endif
+ { "tty", required_argument, NULL, 't' },
+ { "verbose", no_argument, NULL, 'v' },
+ { "help", no_argument, NULL, 'h' },
+@@ -710,9 +724,13 @@ main(int argc, char *argv[])
+ while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) {
+ switch (c) {
+ case 'u':
++#ifdef HAVE_PAM
+ wl.new_user = optarg;
+ if (getuid() != 0)
+ error(1, 0, "Permission denied. -u allowed for root only");
++#else
++ error(1, 0, "-u is unsupported in this weston-launch build");
++#endif
+ break;
+ case 't':
+ tty = optarg;
+@@ -753,8 +771,10 @@ main(int argc, char *argv[])
+ if (setup_tty(&wl, tty) < 0)
+ exit(EXIT_FAILURE);
+
++#ifdef HAVE_PAM
+ if (wl.new_user && setup_pam(&wl) < 0)
+ exit(EXIT_FAILURE);
++#endif
+
+ if (setup_launcher_socket(&wl) < 0)
+ exit(EXIT_FAILURE);
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston/imx/weston.ini b/bsp/meta-freescale/recipes-graphics/wayland/weston/imx/weston.ini
new file mode 100644
index 00000000..d6ad40df
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston/imx/weston.ini
@@ -0,0 +1,20 @@
+[core]
+# i.MX: Disable idle timeout
+idle-time=0
+
+#[output]
+#name=HDMI-A-1
+#mode=1920x1080@60
+#transform=90
+
+#[output]
+#name=HDMI-A-2
+#mode=off
+# WIDTHxHEIGHT Resolution size width and height in pixels
+# off Disables the output
+# preferred Uses the preferred mode
+# current Uses the current crt controller mode
+#transform=90
+
+[screen-share]
+command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston/mx8mq/weston.ini b/bsp/meta-freescale/recipes-graphics/wayland/weston/mx8mq/weston.ini
new file mode 100644
index 00000000..d1597a42
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston/mx8mq/weston.ini
@@ -0,0 +1,24 @@
+[core]
+# i.MX: Disable idle timeout
+idle-time=0
+gbm-format=argb8888
+
+#[output]
+#name=HDMI-A-1
+#mode=1920x1080@60
+#transform=90
+
+[shell]
+size=1920x1080
+
+#[output]
+#name=HDMI-A-2
+#mode=off
+# WIDTHxHEIGHT Resolution size width and height in pixels
+# off Disables the output
+# preferred Uses the preferred mode
+# current Uses the current crt controller mode
+#transform=90
+
+[screen-share]
+command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston/weston.desktop b/bsp/meta-freescale/recipes-graphics/wayland/weston/weston.desktop
new file mode 100644
index 00000000..1086ae8b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston/weston.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=Application
+Name=Weston
+Comment=Wayland Compostitor
+Exec=weston
+Icon=weston
+Terminal=false
+Categories=Utility;
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston/weston.png b/bsp/meta-freescale/recipes-graphics/wayland/weston/weston.png
new file mode 100644
index 00000000..ea8b7e0e
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston/weston.png
Binary files differ
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston/xwayland.weston-start b/bsp/meta-freescale/recipes-graphics/wayland/weston/xwayland.weston-start
new file mode 100644
index 00000000..b483c97c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston/xwayland.weston-start
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if type Xwayland >/dev/null 2>/dev/null; then
+ mkdir -p /tmp/.X11-unix
+
+ add_weston_argument "--modules=xwayland.so"
+fi
diff --git a/bsp/meta-freescale/recipes-graphics/wayland/weston_4.0.0.imx.bb b/bsp/meta-freescale/recipes-graphics/wayland/weston_4.0.0.imx.bb
new file mode 100644
index 00000000..e8d74fd4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/wayland/weston_4.0.0.imx.bb
@@ -0,0 +1,144 @@
+SUMMARY = "Weston, a Wayland compositor, i.MX fork"
+DESCRIPTION = "Weston is the reference implementation of a Wayland compositor"
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
+ file://libweston/compositor.c;endline=26;md5=e342df749174a8ee11065583157c7a38"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRCBRANCH = "weston-imx-4.0"
+SRC_URI = "git://source.codeaurora.org/external/imx/weston-imx.git;protocol=https;branch=${SRCBRANCH} \
+ file://weston.ini \
+ file://weston.png \
+ file://weston.desktop \
+ file://0001-make-error-portable.patch \
+ file://xwayland.weston-start \
+ file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
+ file://0001-g2d-renderer-Fix-open-function-build-break.patch \
+"
+SRCREV = "866072b52751e5023651dd9322baa513e1f74fe6"
+S = "${WORKDIR}/git"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+
+inherit autotools pkgconfig useradd distro_features_check
+
+# Disable OpenGL for parts with GPU support for 2D but not 3D
+REQUIRED_DISTRO_FEATURES = "opengl"
+REQUIRED_DISTRO_FEATURES_imxgpu2d = ""
+REQUIRED_DISTRO_FEATURES_imxgpu3d = "opengl"
+PACKAGECONFIG_OPENGL = "opengl"
+PACKAGECONFIG_OPENGL_imxgpu2d = ""
+PACKAGECONFIG_OPENGL_imxgpu3d = "opengl"
+
+DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg"
+DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native"
+
+WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}"
+
+EXTRA_OECONF = "--enable-setuid-install \
+ --disable-rdp-compositor \
+ "
+EXTRA_OECONF_append_qemux86 = " \
+ WESTON_NATIVE_BACKEND=fbdev-backend.so \
+ "
+EXTRA_OECONF_append_qemux86-64 = " \
+ WESTON_NATIVE_BACKEND=fbdev-backend.so \
+ "
+EXTRA_OECONF_append_imxfbdev = " \
+ WESTON_NATIVE_BACKEND=fbdev-backend.so \
+ "
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', '${PACKAGECONFIG_OPENGL} pam systemd x11', d)} \
+ clients launch"
+PACKAGECONFIG_remove_imxfbdev = "kms"
+PACKAGECONFIG_append_imxgpu = " imxgpu"
+PACKAGECONFIG_append_imxgpu2d = " imxg2d"
+PACKAGECONFIG_append_imxgpu3d = " cairo-glesv2"
+#
+# Compositor choices
+#
+# Weston on KMS
+PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa mtdev"
+# Weston on Wayland (nested Weston)
+PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa"
+# Weston on X11
+PACKAGECONFIG[x11] = "--enable-x11-compositor,--disable-x11-compositor,virtual/libx11 libxcb libxcb libxcursor cairo"
+# Headless Weston
+PACKAGECONFIG[headless] = "--enable-headless-compositor,--disable-headless-compositor"
+# Weston on framebuffer
+PACKAGECONFIG[fbdev] = "--enable-fbdev-compositor,--disable-fbdev-compositor,udev mtdev"
+# weston-launch
+PACKAGECONFIG[launch] = "--enable-weston-launch,--disable-weston-launch,drm"
+# VA-API desktop recorder
+PACKAGECONFIG[vaapi] = "--enable-vaapi-recorder,--disable-vaapi-recorder,libva"
+# Weston with EGL support
+PACKAGECONFIG[egl] = "--enable-egl --enable-simple-egl-clients,--disable-egl --disable-simple-egl-clients,virtual/egl"
+# Weston with cairo glesv2 support
+PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo"
+# Weston with lcms support
+PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms"
+# Weston with webp support
+PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp"
+# Weston with systemd-login support
+PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus"
+# Weston with Xwayland support (requires X11 and Wayland)
+PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland"
+# colord CMS support
+PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord"
+# Clients support
+PACKAGECONFIG[clients] = "--enable-clients --enable-simple-clients --enable-demo-clients-install,--disable-clients --disable-simple-clients"
+# Weston with PAM support
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
+# Weston with i.MX GPU support
+PACKAGECONFIG[imxgpu] = "--enable-imxgpu,--disable-imxgpu"
+# Weston with i.MX G2D renderer
+PACKAGECONFIG[imxg2d] = "--enable-imxg2d,--disable-imxg2d,virtual/libg2d"
+# Weston with OpenGL support
+PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl"
+
+do_install_append() {
+ # Weston doesn't need the .la files to load modules, so wipe them
+ rm -f ${D}/${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.la
+
+ # If X11, ship a desktop file to launch it
+ if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then
+ install -d ${D}${datadir}/applications
+ install ${WORKDIR}/weston.desktop ${D}${datadir}/applications
+
+ install -d ${D}${datadir}/icons/hicolor/48x48/apps
+ install ${WORKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps
+ fi
+
+ if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then
+ install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland
+ fi
+
+ # install default weston.ini
+ install -D -m 0644 ${WORKDIR}/weston.ini ${D}${sysconfdir}/xdg/weston/weston.ini
+}
+
+PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \
+ libweston-${WESTON_MAJOR_VERSION} ${PN}-examples"
+
+FILES_${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so ${datadir} ${sysconfdir}/xdg/weston"
+
+FILES_libweston-${WESTON_MAJOR_VERSION} = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.so"
+SUMMARY_libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wayland window managers'."
+
+FILES_${PN}-examples = "${bindir}/*"
+
+FILES_${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so"
+RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland"
+
+RDEPENDS_${PN} += "xkeyboard-config"
+RRECOMMENDS_${PN} = "liberation-fonts"
+RRECOMMENDS_${PN}-dev += "wayland-protocols"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM_${PN} = "--system weston-launch"
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+COMPATIBLE_MACHINE = "(imxfbdev|imxgpu)"
diff --git a/bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput/imx28evk/pointercal.xinput b/bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput/imx28evk/pointercal.xinput
new file mode 100644
index 00000000..59f76300
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput/imx28evk/pointercal.xinput
@@ -0,0 +1,2 @@
+xinput set-int-prop "MXS touchscreen" "Evdev Axis Calibration" 32 194 3938 301 3878
+xinput set-int-prop "MXS touchscreen" "Evdev Axes Swap" 8 1
diff --git a/bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput/mx6/pointercal.xinput b/bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput/mx6/pointercal.xinput
new file mode 100644
index 00000000..ba34b89f
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput/mx6/pointercal.xinput
@@ -0,0 +1,2 @@
+xinput set-int-prop "EETI eGalax Touch Screen" "Evdev Axis Calibration" 42060 2062 -8 -783544 1 1549 65536
+xinput set-int-prop "EETI eGalax Touch Screen" "Evdev Axes Swap" 8 0
diff --git a/bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput_%.bbappend b/bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput_%.bbappend
new file mode 100644
index 00000000..a9c60f3e
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xinput-calibrator/pointercal-xinput_%.bbappend
@@ -0,0 +1,2 @@
+# Append path for freescale layer to include bsp pointercal.xinput
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-armada_git.bb b/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-armada_git.bb
new file mode 100644
index 00000000..30372eff
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-armada_git.bb
@@ -0,0 +1,48 @@
+SUMMARY = "X.org graphics driver for KMS based systems with pluggable GPU backend"
+DESCRIPTION = "The xf86-video-armada module is a 2D graphics driver for the X Window \
+System as implemented by X.org, supporting these DRM KMS drivers: \
+\
+ Freescale i.MX \
+ Marvell Armada 510 (Dove) \
+\
+and GPU drivers: \
+ Vivante libGAL (Armada only) \
+ Etnaviv (Armada and i.MX) with galcore kernel driver \
+ Etnaviv (Armada and i.MX) with etnaviv DRM kernel driver \
+"
+LICENSE = "BSD"
+
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+
+DEPENDS += "libdrm-armada"
+
+LIC_FILES_CHKSUM = " \
+ file://README;md5=d5271074fb6ad959b7b6cfa68b4adaf0 \
+ file://../etna_viv/LICENSE;md5=9d4853905d85f044ed013e75def30a76 \
+ "
+
+SRCREV_armada = "78e7116a5bc6cdd9f93cbf1552d342933623ab59"
+SRCREV_etna = "8478eef32fd911ebb300c970071e22227afa1896"
+SRCREV_FORMAT = "armada_etna"
+
+PV = "0.1+git${SRCPV}"
+
+SRC_URI = " \
+ git://git.arm.linux.org.uk/cgit/xf86-video-armada.git;branch=unstable-devel;protocol=http;name=armada \
+ git://github.com/etnaviv/etna_viv.git;protocol=https;name=etna;destsuffix=etna_viv \
+ "
+
+S = "${WORKDIR}/git"
+
+RDEPENDS_${PN} = "xserver-xorg-module-exa \
+ xserver-xorg-extension-dri \
+ xserver-xorg-extension-dri2 \
+ xserver-xorg-extension-glx \
+ "
+
+EXTRA_OECONF = "--disable-etnaviv \
+ --disable-vivante \
+ --with-etnaviv-source=${WORKDIR}/etna_viv \
+ "
+
+COMPATIBLE_MACHINE = "(imx)"
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-fbdev_0.4.2.bb b/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-fbdev_0.4.2.bb
new file mode 100644
index 00000000..996a9c7f
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-fbdev_0.4.2.bb
@@ -0,0 +1,11 @@
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8cbd99fff773f92e844948f74ef0df8"
+
+DESCRIPTION = "X.Org X server -- fbdev display driver"
+PE = "1"
+PR = "${INC_PR}.1"
+
+DEPENDS += "virtual/xserver"
+
+SRC_URI[md5sum] = "53a533d9e0c2da50962282526bace074"
+SRC_URI[sha256sum] = "93b271b4b41d7e5ca108849a583b9523e96c51813d046282285355b7001f82d5"
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-imx-vivante/rc.autohdmi b/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-imx-vivante/rc.autohdmi
new file mode 100644
index 00000000..8c16a1d7
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-imx-vivante/rc.autohdmi
@@ -0,0 +1,42 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: rc.autohdmi
+# Required-Start: $all
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop:
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# Source function library.
+. /etc/init.d/functions
+
+case "$1" in
+ start)
+ echo -n "Starting autohdmi: "
+ export DISPLAY=:0
+ autohdmi &
+ echo
+ exit 0
+ ;;
+ reload|force-reload)
+ echo "Error: argument '$1' not supported" >&2
+ exit 3
+ ;;
+ stop)
+ echo -n "Shutting down autohdmi: "
+ killproc autohdmi
+ echo
+ ;;
+ restart)
+ echo -n "Restarting autohdmi: "
+ $0 stop
+ $0 start
+ echo
+ ;;
+ *)
+ echo "Usage: $0 start|stop" >&2
+ exit 3
+ ;;
+esac
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p1.8.bb b/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p1.8.bb
new file mode 100644
index 00000000..670ade64
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-driver/xf86-video-imx-vivante_6.2.4.p1.8.bb
@@ -0,0 +1,65 @@
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright (C) 2012-2018 O.S. Systems Software LTDA.
+# Copyright 2017-2018 NXP
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+
+PE = "3"
+
+inherit autotools-brokensep update-rc.d pkgconfig
+
+DEPENDS += "virtual/xserver virtual/libx11 libgal-imx imx-gpu-viv virtual/libg2d pixman"
+
+LIC_FILES_CHKSUM = "file://COPYING-MIT;md5=b5e9d9f5c02ea831ab3ecf802bb7c4f3"
+
+SRCREV = "b765c3ffc0dcc4246afa659aa0d59f78a6736b08"
+SRCBRANCH = "imx_exa_viv6_g2d"
+SRC_URI = "git://source.codeaurora.org/external/imx/xf86-video-imx-vivante.git;protocol=https;branch=${SRCBRANCH} \
+ file://rc.autohdmi"
+
+S = "${WORKDIR}/git/"
+
+INITSCRIPT_PACKAGES = "xserver-xorg-extension-viv-autohdmi"
+INITSCRIPT_NAME = "rc.autohdmi"
+INITSCRIPT_PARAMS = "start 99 2 3 4 5 ."
+
+EXTRA_OEMAKE += "prefix=${exec_prefix} \
+ sysroot=${STAGING_DIR_TARGET} \
+ SDKTARGETSYSROOT=${STAGING_DIR_HOST} \
+ BUSID_HAS_NUMBER=1 \
+ BUILD_IN_YOCTO=1 \
+ XSERVER_GREATER_THAN_13=1"
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+PACKAGES =+ "xserver-xorg-extension-viv-autohdmi"
+
+do_install_append () {
+ install -d ${D}${includedir}
+ cp -axr ${S}/EXA/src/vivante_gal/vivante_priv.h ${D}${includedir}
+ cp -axr ${S}/EXA/src/vivante_gal/vivante_gal.h ${D}${includedir}
+
+ install -d ${D}/${sysconfdir}/init.d
+ install -m 755 ${WORKDIR}/rc.autohdmi ${D}/${sysconfdir}/init.d/rc.autohdmi
+
+ find ${D}${includedir} -type f -exec chmod 660 {} \;
+}
+
+RDEPENDS_${PN} += "libvivante-dri-imx \
+ xserver-xorg-module-exa \
+ mesa-driver-swrast \
+ xserver-xorg-extension-dri \
+ xserver-xorg-extension-dri2 \
+ xserver-xorg-extension-glx"
+
+REALSOLIBS := "${SOLIBS}"
+SOLIBS = "${SOLIBSDEV}"
+
+FILES_${PN} = "${libdir}/*/*/*/vivante_drv${SOLIBS}"
+FILES_${PN}-dev = "${includedir} /usr/src ${libdir}/libfsl_x11_ext${SOLIBSDEV}"
+FILES_${PN}-dbg = "${libdir}/*/*/*/.debug ${libdir}/.debug/libfsl_x11_ext${SOLIBS} ${exec_prefix}/bin/.debug/autohdmi"
+
+FILES_xserver-xorg-extension-viv-autohdmi = " ${libdir}/libfsl_x11_ext${SOLIBS} ${exec_prefix}/bin/autohdmi ${sysconfdir}/init.d/rc.autohdmi"
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+COMPATIBLE_MACHINE = "(mx6|mx7ulp)"
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx5/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx5/xorg.conf
new file mode 100644
index 00000000..a99e6f24
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx5/xorg.conf
@@ -0,0 +1,16 @@
+Section "Device"
+ Identifier "i.MX Accelerated Framebuffer Device"
+ Driver "imx"
+ Option "fbdev" "/dev/fb0"
+ # This option only recognized when "mxc_epdc_fb" frame buffer driver in
+ # use. Values are "RGB565" (default, 16-bit RGB), "Y8" (8-bit gray),
+ # and "Y8INV" (8-bit gray inverted).
+ Option "FormatEPDC" "Y8INV"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6/xorg.conf
new file mode 100644
index 00000000..b89bed60
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6/xorg.conf
@@ -0,0 +1,14 @@
+Section "Device"
+ Identifier "i.MX Accelerated Framebuffer Device"
+ Driver "vivante"
+ Option "fbdev" "/dev/fb0"
+ Option "vivante_fbdev" "/dev/fb0"
+ Option "HWcursor" "false"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sl/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sl/xorg.conf
new file mode 100644
index 00000000..de3905ab
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sl/xorg.conf
@@ -0,0 +1,15 @@
+Section "Device"
+ Identifier "i.MX Accelerated Framebuffer Device"
+ Driver "vivante"
+ Option "fbdev" "/dev/fb0"
+ Option "vivante_fbdev" "/dev/fb0"
+ Option "HWcursor" "false"
+ Option "DisplayEngine" "pxp"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sll/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sll/xorg.conf
new file mode 100755
index 00000000..79b6c0fc
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sll/xorg.conf
@@ -0,0 +1,12 @@
+Section "Device"
+ Identifier "Kernel Framebuffer Device"
+ Driver "fbdev"
+ Option "fbdev" "/dev/fb0"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sx/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sx/xorg.conf
new file mode 100644
index 00000000..de3905ab
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6sx/xorg.conf
@@ -0,0 +1,15 @@
+Section "Device"
+ Identifier "i.MX Accelerated Framebuffer Device"
+ Driver "vivante"
+ Option "fbdev" "/dev/fb0"
+ Option "vivante_fbdev" "/dev/fb0"
+ Option "HWcursor" "false"
+ Option "DisplayEngine" "pxp"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6ul/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6ul/xorg.conf
new file mode 100644
index 00000000..79b6c0fc
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx6ul/xorg.conf
@@ -0,0 +1,12 @@
+Section "Device"
+ Identifier "Kernel Framebuffer Device"
+ Driver "fbdev"
+ Option "fbdev" "/dev/fb0"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx7/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx7/xorg.conf
new file mode 100644
index 00000000..79b6c0fc
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx7/xorg.conf
@@ -0,0 +1,12 @@
+Section "Device"
+ Identifier "Kernel Framebuffer Device"
+ Driver "fbdev"
+ Option "fbdev" "/dev/fb0"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx7ulp/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx7ulp/xorg.conf
new file mode 100755
index 00000000..de6307a3
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mx7ulp/xorg.conf
@@ -0,0 +1,15 @@
+Section "Device"
+ Identifier "i.MX Accelerated Framebuffer Device"
+ Driver "vivante"
+ Option "fbdev" "/dev/fb0"
+ Option "vivante_fbdev" "/dev/fb0"
+ Option "HWcursor" "false"
+ Option "VivCacheMem" "false"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mxs/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mxs/xorg.conf
new file mode 100644
index 00000000..79b6c0fc
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/mxs/xorg.conf
@@ -0,0 +1,12 @@
+Section "Device"
+ Identifier "Kernel Framebuffer Device"
+ Driver "fbdev"
+ Option "fbdev" "/dev/fb0"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/p1022ds/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/p1022ds/xorg.conf
new file mode 100644
index 00000000..57f284e8
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/p1022ds/xorg.conf
@@ -0,0 +1,27 @@
+Section "Screen"
+ Identifier "Builtin Default fbdev Screen 0"
+ Device "Builtin Default fbdev Device 0"
+EndSection
+
+Section "ServerLayout"
+ Identifier "Builtin Default Layout"
+ Screen "Builtin Default fbdev Screen 0"
+EndSection
+
+Section "ServerFlags"
+ Option "DontZap" "0"
+EndSection
+
+Section "InputClass"
+ Identifier "keyboard-all"
+ Driver "evdev"
+ MatchIsKeyboard "on"
+EndSection
+
+
+Section "InputClass"
+ Identifier "mouse-all"
+ Driver "evdev"
+ MatchIsPointer "on"
+EndSection
+
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/use-mainline-bsp/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/use-mainline-bsp/xorg.conf
new file mode 100644
index 00000000..b6f83469
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/use-mainline-bsp/xorg.conf
@@ -0,0 +1,28 @@
+Section "Device"
+ Identifier "Driver0"
+ Screen 0
+ Driver "armada"
+
+# Support hotplugging displays?
+ Option "Hotplug" "TRUE"
+
+# Support hardware cursor if available?
+ Option "HWCursor" "TRUE"
+
+# Use GPU acceleration?
+ Option "UseGPU" "TRUE"
+
+# Provide Xv interfaces?
+ Option "XvAccel" "TRUE"
+
+# Prefer overlay for Xv (TRUE for armada-drm, FALSE for imx-drm)
+ Option "XvPreferOverlay" "TRUE"
+
+# Which accelerator module to load (automatically found if commented out)
+ Option "AccelModule" "etnadrm_gpu"
+ Option "AccelModule" "etnaviv_gpu"
+
+# Support DRI2 interfaces?
+ Option "DRI" "TRUE"
+EndSection
+
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/vf/xorg.conf b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/vf/xorg.conf
new file mode 100644
index 00000000..b4ee82a9
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config/vf/xorg.conf
@@ -0,0 +1,12 @@
+Section "Device"
+ Identifier "DCU DRM/KMS using Modesetting"
+ Driver "modesetting"
+ Option "kmsdev" "/dev/dri/card0"
+EndSection
+
+Section "ServerFlags"
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+EndSection
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config_%.bbappend b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config_%.bbappend
new file mode 100644
index 00000000..ceb438e3
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xf86-config_%.bbappend
@@ -0,0 +1,2 @@
+# Append path for freescale layer to include bsp xorg.conf
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
new file mode 100644
index 00000000..e3c59040
--- /dev/null
+++ b/bsp/meta-freescale/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
@@ -0,0 +1,5 @@
+IMX_OPENGL_PKGCONFIGS_REMOVE = ""
+IMX_OPENGL_PKGCONFIGS_REMOVE_imxgpu = "glamor"
+OPENGL_PKGCONFIGS_remove_mx6 = "${IMX_OPENGL_PKGCONFIGS_REMOVE}"
+OPENGL_PKGCONFIGS_remove_mx7 = "${IMX_OPENGL_PKGCONFIGS_REMOVE}"
+OPENGL_PKGCONFIGS_remove_mx8 = "${IMX_OPENGL_PKGCONFIGS_REMOVE}"
diff --git a/bsp/meta-freescale/recipes-kernel/ceetm/ceetm_git.bb b/bsp/meta-freescale/recipes-kernel/ceetm/ceetm_git.bb
new file mode 100644
index 00000000..57fbbe42
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/ceetm/ceetm_git.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "CEETM TC QDISC"
+LICENSE = "GPLv2 & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bac620b9883d38a84dfb73ca7122d915"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/ceetm;nobranch=1"
+SRCREV = "6a7f2ec2091df2f4380cb8d25a36c399aed5af1b"
+
+DEPENDS = "iproute2"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = 'CC="${CC}" LD="${CC}" IPROUTE2_DIR="{STAGING_DIR_TARGET}"'
+
+do_install(){
+ mkdir -p ${D}/${libdir}/tc
+ cp ${S}/q_ceetm.so ${D}/${libdir}/tc/
+}
+
+FILES_${PN} += "${libdir}/tc"
+INHIBIT_PACKAGE_STRIP = "1"
+
+COMPATIBLE_MACHINE = "(qoriq)"
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
diff --git a/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-linux_1.9.bb b/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-linux_1.9.bb
new file mode 100644
index 00000000..58db5053
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-linux_1.9.bb
@@ -0,0 +1,16 @@
+require cryptodev-qoriq_${PV}.inc
+
+SUMMARY = "A /dev/crypto device driver header file"
+
+PROVIDES = "cryptodev-linux"
+
+do_compile[noexec] = "1"
+
+# Just install cryptodev.h which is the only header file needed to be exported
+do_install() {
+ install -D ${S}/crypto/cryptodev.h ${D}${includedir}/crypto/cryptodev.h
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-module_1.9.bb b/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-module_1.9.bb
new file mode 100644
index 00000000..412bb0e5
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-module_1.9.bb
@@ -0,0 +1,21 @@
+require cryptodev-qoriq_${PV}.inc
+
+SUMMARY = "A /dev/crypto device driver kernel module"
+
+PROVIDES = "cryptodev-module"
+
+inherit module qoriq_build_64bit_kernel
+
+# Header file provided by a separate package
+DEPENDS += "cryptodev-linux"
+
+EXTRA_OEMAKE='KERNEL_DIR="${STAGING_KERNEL_DIR}" DESTDIR="${D}"'
+
+SRC_URI_append = " \
+file://0001-Disable-installing-header-file-provided-by-another-p.patch \
+"
+
+RCONFLICTS_${PN} = "ocf-linux"
+RREPLACES_${PN} = "ocf-linux"
+
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-tests_1.9.bb b/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-tests_1.9.bb
new file mode 100644
index 00000000..f7d0b61b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq-tests_1.9.bb
@@ -0,0 +1,26 @@
+require cryptodev-qoriq_${PV}.inc
+
+SUMMARY = "A test suite for /dev/crypto device driver"
+
+DEPENDS = "openssl"
+
+PROVIDES = "cryptodev-tests"
+
+EXTRA_OEMAKE='KERNEL_DIR="${STAGING_EXECPREFIXDIR}" DESTDIR="${D}"'
+
+SRC_URI_append = " \
+file://0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch \
+"
+
+do_compile() {
+ oe_runmake testprogs
+}
+
+do_install() {
+ oe_runmake install_tests
+}
+
+FILES_${PN}-dbg += "${bindir}/tests_cryptodev/.debug"
+FILES_${PN} = "${bindir}/tests_cryptodev/*"
+
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq_1.9.inc b/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq_1.9.inc
new file mode 100644
index 00000000..0d7249fd
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/cryptodev/cryptodev-qoriq_1.9.inc
@@ -0,0 +1,26 @@
+HOMEPAGE = "http://cryptodev-linux.org/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+python() {
+ pkgs = d.getVar('PACKAGES', True).split()
+ for p in pkgs:
+ if 'cryptodev-qoriq' in p:
+ d.appendVar("RPROVIDES_%s" % p, p.replace('cryptodev-qoriq', 'cryptodev'))
+ d.appendVar("RCONFLICTS_%s" % p, p.replace('cryptodev-qoriq', 'cryptodev'))
+ d.appendVar("RREPLACES_%s" % p, p.replace('cryptodev-qoriq', 'cryptodev'))
+}
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/yocto_patches:"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/cryptodev-linux;nobranch=1"
+SRCREV = "479e6e7f071e252c0c37ea38d38fdb4cd808f496"
+
+# NOTE: remove this patch and all traces of DISTRO_FEATURE c29x_pkc
+# if pkc-host does not need customized cryptodev patches anymore
+#SRC_URI_append = "${@bb.utils.contains('DISTRO_FEATURES', 'c29x_pkc', ' file://0001-don-t-advertise-RSA-keygen.patch', '', d)}"
+
+S = "${WORKDIR}/git"
+
+CLEANBROKEN = "1"
diff --git a/bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch b/bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch
new file mode 100644
index 00000000..1e7f5843
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch
@@ -0,0 +1,50 @@
+From 03257bf2aff37b78496ccc1b58a87e7baaea042a Mon Sep 17 00:00:00 2001
+From: Cristian Stoica <cristian.stoica@nxp.com>
+Date: Mon, 22 Feb 2016 12:17:52 +0200
+Subject: [PATCH 2/2] Add the compile and install rules for cryptodev tests
+
+(original patch Signed-off-by: Yu Zongchun <b40527@freescale.com>)
+Signed-off-by: Cristian Stoica <cristian.stoica@nxp.com>
+
+Upstream-Status: Inappropriate [ OE specific ]
+---
+ Makefile | 6 ++++++
+ tests/Makefile | 4 ++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 06202bd..a598b12 100644
+--- a/Makefile
++++ b/Makefile
+@@ -42,6 +42,12 @@ clean:
+ check:
+ CFLAGS=$(CRYPTODEV_CFLAGS) KERNEL_DIR=$(KERNEL_DIR) $(MAKE) -C tests check
+
++testprogs:
++ KERNEL_DIR=$(KERNEL_DIR) $(MAKE) -C tests all
++
++install_tests:
++ $(MAKE) -C tests install
++
+ CPOPTS =
+ ifneq ($(SHOW_TYPES),)
+ CPOPTS += --show-types
+diff --git a/tests/Makefile b/tests/Makefile
+index 5e3111d..cda971c 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -35,9 +35,9 @@ check: $(hostprogs)
+ ./cipher-aead
+
+ install:
+- install -d $(DESTDIR)/$(bindir)
++ install -d $(DESTDIR)/$(bindir)/tests_cryptodev
+ for prog in $(hostprogs); do \
+- install -m 755 $$prog $(DESTDIR)/$(bindir); \
++ install -m 755 $$prog $(DESTDIR)/$(bindir)/tests_cryptodev/; \
+ done
+
+ clean:
+--
+2.7.0
+
diff --git a/bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0001-Disable-installing-header-file-provided-by-another-p.patch b/bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0001-Disable-installing-header-file-provided-by-another-p.patch
new file mode 100644
index 00000000..35aad600
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0001-Disable-installing-header-file-provided-by-another-p.patch
@@ -0,0 +1,22 @@
+From eedfa57953d2d6255d53cb098c3f81cbde9187f7 Mon Sep 17 00:00:00 2001
+From: Cristian Stoica <cristian.stoica@nxp.com>
+Date: Mon, 22 Feb 2016 11:47:27 +0200
+Subject: [PATCH 1/2] Disable installing header file provided by another
+ package
+
+(original patch Signed-off-by: Denys Dmytriyenko <denys@ti.com>)
+Signed-off-by: Cristian Stoica <cristian.stoica@nxp.com>
+
+Upstream-Status: Inappropriate [ OE specific ]
+
+
+--- a/Makefileold 2017-04-18 14:54:40.588438842 +0800
++++ b/Makefile 2017-04-18 14:55:40.308436774 +0800
+@@ -33,7 +33,6 @@
+
+ modules_install:
+ $(MAKE) $(KERNEL_MAKE_OPTS) modules_install
+- install -m 644 -D crypto/cryptodev.h $(DESTDIR)/$(includedir)/crypto/cryptodev.h
+
+ clean:
+ $(MAKE) $(KERNEL_MAKE_OPTS) clean
diff --git a/bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0003-update-the-install-path-for-cryptodev-tests.patch b/bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0003-update-the-install-path-for-cryptodev-tests.patch
new file mode 100644
index 00000000..4f92dbab
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/cryptodev/yocto_patches/0003-update-the-install-path-for-cryptodev-tests.patch
@@ -0,0 +1,28 @@
+From 5b0d2cf5abaaa3bffb4a9e874dba88bdab15b69d Mon Sep 17 00:00:00 2001
+From: Ting Liu <ting.liu@nxp.com>
+Date: Mon, 20 Feb 2017 22:43:00 +0800
+Subject: [PATCH] update the install path for cryptodev tests
+
+Signed-off-by: Ting Liu <ting.liu@nxp.com>
+---
+ tests/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tests/Makefile b/tests/Makefile
+index dd7d5ff..e1c5039 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -37,8 +37,8 @@ install:
+ for prog in $(hostprogs); do \
+ install -m 755 $$prog $(DESTDIR)/$(bindir)/tests_cryptodev/; \
+ done
+- install -m 755 speed_multi.sh $(DESTDIR)/$(bindir)
+- install -m 755 run_crypto_tests.sh $(DESTDIR)/$(bindir)
++ install -m 755 speed_multi.sh $(DESTDIR)/$(bindir)/tests_cryptodev/
++ install -m 755 run_crypto_tests.sh $(DESTDIR)/$(bindir)/tests_cryptodev/
+
+ clean:
+ rm -f *.o *~ $(hostprogs)
+--
+1.9.2
+
diff --git a/bsp/meta-freescale/recipes-kernel/dtc/dtc-145_git.bb b/bsp/meta-freescale/recipes-kernel/dtc/dtc-145_git.bb
new file mode 100644
index 00000000..2d4097bb
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/dtc/dtc-145_git.bb
@@ -0,0 +1,20 @@
+require recipes-kernel/dtc/dtc.inc
+
+LIC_FILES_CHKSUM = " \
+ file://GPL;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://libfdt/libfdt.h;beginline=3;endline=52;md5=fb360963151f8ec2d6c06b055bcbb68c \
+"
+
+SRCREV = "22a65c5331c22979d416738eb756b9541672e00d"
+
+SRC_URI += "file://0001-Fix-compiler-warnings-seen-with-musl.patch \
+ "
+S = "${WORKDIR}/git"
+
+# only install the dtc binary renamed to dtc-145
+do_install () {
+ install -d ${D}/${bindir}
+ install -m 755 dtc ${D}/${bindir}/dtc-145
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/bsp/meta-freescale/recipes-kernel/dtc/files/0001-Fix-compiler-warnings-seen-with-musl.patch b/bsp/meta-freescale/recipes-kernel/dtc/files/0001-Fix-compiler-warnings-seen-with-musl.patch
new file mode 100644
index 00000000..418a6498
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/dtc/files/0001-Fix-compiler-warnings-seen-with-musl.patch
@@ -0,0 +1,55 @@
+From 50034ca2600ae07203f397af6d78e2e9ff16bc02 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Oct 2018 18:12:23 -0700
+Subject: [PATCH] Fix compiler warnings seen with musl
+
+Fixes
+
+checks.c:975:16: error: format '%ld' expects argument of type 'long
+int', but argument 6 has type 'unsigned int' [-Werror=format=]
+ FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple
+of %ld in node %s",
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ prop->name, prop->val.len, sizeof(cell_t), node->fullpath);
+ ~~~~~~~~~~~~~~
+checks.c:96:23: note: in definition of macro 'FAIL'
+ check_msg((c), dti, __VA_ARGS__); \
+ ^~~~~~~~~~~
+checks.c: In function 'check_interrupts_property':
+checks.c:1166:16: error: format '%ld' expects argument of type 'long
+int', but argument 6 has type 'unsigned int' [-Werror=format=]
+ FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple
+of %ld in node %s",
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ irq_prop->name, irq_prop->val.len, sizeof(cell_t),
+ ~~~~~~~~~~~~~~
+
+Upstream-Status: Backport [adapted from an upstream fix]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ checks.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/checks.c b/checks.c
+index 902f2e3..08a3a29 100644
+--- a/checks.c
++++ b/checks.c
+@@ -972,7 +972,7 @@ static void check_property_phandle_args(struct check *c,
+ int cell, cellsize = 0;
+
+ if (prop->val.len % sizeof(cell_t)) {
+- FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %ld in node %s",
++ FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %zu in node %s",
+ prop->name, prop->val.len, sizeof(cell_t), node->fullpath);
+ return;
+ }
+@@ -1163,7 +1163,7 @@ static void check_interrupts_property(struct check *c,
+ return;
+
+ if (irq_prop->val.len % sizeof(cell_t))
+- FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %ld in node %s",
++ FAIL(c, dti, "property '%s' size (%d) is invalid, expected multiple of %zu in node %s",
+ irq_prop->name, irq_prop->val.len, sizeof(cell_t),
+ node->fullpath);
+
diff --git a/bsp/meta-freescale/recipes-kernel/dtc/files/make_install.patch b/bsp/meta-freescale/recipes-kernel/dtc/files/make_install.patch
new file mode 100644
index 00000000..ccf17b38
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/dtc/files/make_install.patch
@@ -0,0 +1,17 @@
+Upstream-Status: Inappropriate [configuration]
+
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -168,8 +168,8 @@ install-bin: all $(SCRIPTS)
+ install-lib: all
+ @$(VECHO) INSTALL-LIB
+ $(INSTALL) -d $(DESTDIR)$(LIBDIR)
+- $(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
+- ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
++ $(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
++ ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/$(notdir $(LIBFDT_lib))
+ ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/libfdt.$(SHAREDLIB_EXT)
+ $(INSTALL) -m 644 $(LIBFDT_archive) $(DESTDIR)$(LIBDIR)
+
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ar_git.bb b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ar_git.bb
new file mode 100644
index 00000000..feddc8fa
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ar_git.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Auto Response Control Module"
+LICENSE = "GPLv2 & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b5881ecf398da8a03a3f4c501e29d287"
+
+inherit module
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/auto-resp;branch=nxp/sdk-v2.0.x"
+SRCREV = "9a74743167dcfcfbca5056eedbff9a52337c9712"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX} SYSROOT=${STAGING_DIR_TARGET}"
+export KERNEL_PATH
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+do_compile_prepend() {
+ sed -i -e 's,EXTRA_CFLAGS += -I$(PWD),EXTRA_CFLAGS += -I${S},' ${S}/armodule/source/Makefile
+}
+
+do_install(){
+ install -d ${D}/lib/modules/${KERNEL_VERSION}
+ install -d ${D}${bindir}
+ install -m 644 ${B}/bin/ar.ko ${D}/lib/modules/${KERNEL_VERSION}/
+ cp -f ${S}/bin/ar_* ${D}${bindir}/
+}
+
+FILES_${PN} += "${bindir}/"
+INSANE_SKIP_${PN} = "ldflags"
+COMPATIBLE_MACHINE = "(t1040|t1042)"
+
+CLEANBROKEN = "1"
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv/Add-makefile.patch b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv/Add-makefile.patch
new file mode 100644
index 00000000..63f408c5
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv/Add-makefile.patch
@@ -0,0 +1,326 @@
+Index: git/Makefile
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/Makefile 2017-06-27 12:07:11.931698672 -0500
+@@ -0,0 +1,17 @@
++obj-m := galcore.o
++
++SRC := $(shell pwd)
++
++all:
++ $(MAKE) -C $(KERNEL_SRC) M=$(SRC)/src AQROOT=${PWD}/src
++ cp $(SRC)/src/Module.symvers $(PWD)
++ cp $(SRC)/src/modules.order $(PWD)
++
++modules_install:
++ $(MAKE) -C $(KERNEL_SRC) M=$(SRC)/src modules_install
++
++clean:
++ find . -name '*.o' -delete
++ rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
++ rm -f Module.markers Module.symvers modules.order
++ rm -rf .tmp_versions Modules.symvers
+Index: git/src/hal/kernel/arch/makefile.linux
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/src/hal/kernel/arch/makefile.linux 2017-06-27 11:44:06.004826232 -0500
+@@ -0,0 +1,91 @@
++##############################################################################
++#
++# The MIT License (MIT)
++#
++# Copyright (c) 2014 - 2017 Vivante Corporation
++#
++# Permission is hereby granted, free of charge, to any person obtaining a
++# copy of this software and associated documentation files (the "Software"),
++# to deal in the Software without restriction, including without limitation
++# the rights to use, copy, modify, merge, publish, distribute, sublicense,
++# and/or sell copies of the Software, and to permit persons to whom the
++# Software is furnished to do so, subject to the following conditions:
++#
++# The above copyright notice and this permission notice shall be included in
++# all copies or substantial portions of the Software.
++#
++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++# DEALINGS IN THE SOFTWARE.
++#
++##############################################################################
++#
++# The GPL License (GPL)
++#
++# Copyright (C) 2014 - 2017 Vivante Corporation
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++#
++##############################################################################
++#
++# Note: This software is released under dual MIT and GPL licenses. A
++# recipient may use this file under the terms of either the MIT license or
++# GPL License. If you wish to use only one license not the other, you can
++# indicate your decision by deleting one of the above license notices in your
++# version of this file.
++#
++##############################################################################
++
++
++#
++# Linux build file for architecture dependent kernel HAL layer.
++#
++
++################################################################################
++# Include common definitions.
++
++include $(AQROOT)/makefile.linux.def
++
++################################################################################
++# Define a shortcut for the main target.
++
++STATIC = 1
++TARGET_NAME = libhalarchkernel.a
++
++################################################################################
++# Supply additional include directories.
++
++INCLUDE += -I$(AQROOT)/hal/kernel/inc
++INCLUDE += -I$(AQROOT)/hal/kernel/inc
++INCLUDE += -I$(AQROOT)/hal/kernel
++INCLUDE += -I$(AQROOT)/hal/kernel/arch
++ifeq ($(VIVANTE_ENABLE_VG),1)
++INCLUDE += -I$(AQROOT)/hal/kernel/archvg
++endif
++
++CFLAGS += $(INCLUDE) -Werror -ansi
++
++
++################################################################################
++# Describe object files.
++
++OBJECTS = $(OBJ_DIR)/gc_hal_kernel_context.o \
++ $(OBJ_DIR)/gc_hal_kernel_hardware.o
++
++include $(AQROOT)/common.target
+Index: git/src/hal/kernel/archvg/makefile.linux
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/src/hal/kernel/archvg/makefile.linux 2017-06-27 11:44:06.004826232 -0500
+@@ -0,0 +1,91 @@
++##############################################################################
++#
++# The MIT License (MIT)
++#
++# Copyright (c) 2014 - 2017 Vivante Corporation
++#
++# Permission is hereby granted, free of charge, to any person obtaining a
++# copy of this software and associated documentation files (the "Software"),
++# to deal in the Software without restriction, including without limitation
++# the rights to use, copy, modify, merge, publish, distribute, sublicense,
++# and/or sell copies of the Software, and to permit persons to whom the
++# Software is furnished to do so, subject to the following conditions:
++#
++# The above copyright notice and this permission notice shall be included in
++# all copies or substantial portions of the Software.
++#
++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++# DEALINGS IN THE SOFTWARE.
++#
++##############################################################################
++#
++# The GPL License (GPL)
++#
++# Copyright (C) 2014 - 2017 Vivante Corporation
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++#
++##############################################################################
++#
++# Note: This software is released under dual MIT and GPL licenses. A
++# recipient may use this file under the terms of either the MIT license or
++# GPL License. If you wish to use only one license not the other, you can
++# indicate your decision by deleting one of the above license notices in your
++# version of this file.
++#
++##############################################################################
++
++
++#
++# Linux build file for architecture dependent kernel HAL layer.
++#
++
++################################################################################
++# Include common definitions.
++
++include $(AQROOT)/makefile.linux.def
++
++################################################################################
++# Define a shortcut for the main target.
++
++STATIC = 1
++
++TARGET_NAME = libhalarchkernelvg.a
++
++################################################################################
++# Supply additional include directories.
++
++INCLUDE += -I$(AQROOT)/hal/inc
++INCLUDE += -I$(AQROOT)/hal/user
++INCLUDE += -I$(AQROOT)/hal/kernel
++INCLUDE += -I$(AQROOT)/hal/kernel/arch
++ifeq ($(VIVANTE_ENABLE_VG), 1)
++INCLUDE += -I$(AQROOT)/hal/kernel/archvg
++endif
++
++CFLAGS += $(INCLUDE) -Werror -ansi
++
++################################################################################
++# Describe object files.
++
++OBJECTS = $(OBJ_DIR)/gc_hal_kernel_hardware_vg.o \
++ $(OBJ_DIR)/gc_hal_kernel_hardware_command_vg.o
++
++include $(AQROOT)/common.target
+Index: git/src/hal/kernel/makefile.linux
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/src/hal/kernel/makefile.linux 2017-06-27 11:44:06.004826232 -0500
+@@ -0,0 +1,107 @@
++##############################################################################
++#
++# The MIT License (MIT)
++#
++# Copyright (c) 2014 - 2017 Vivante Corporation
++#
++# Permission is hereby granted, free of charge, to any person obtaining a
++# copy of this software and associated documentation files (the "Software"),
++# to deal in the Software without restriction, including without limitation
++# the rights to use, copy, modify, merge, publish, distribute, sublicense,
++# and/or sell copies of the Software, and to permit persons to whom the
++# Software is furnished to do so, subject to the following conditions:
++#
++# The above copyright notice and this permission notice shall be included in
++# all copies or substantial portions of the Software.
++#
++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
++# DEALINGS IN THE SOFTWARE.
++#
++##############################################################################
++#
++# The GPL License (GPL)
++#
++# Copyright (C) 2014 - 2017 Vivante Corporation
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version 2
++# of the License, or (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software Foundation,
++# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++#
++##############################################################################
++#
++# Note: This software is released under dual MIT and GPL licenses. A
++# recipient may use this file under the terms of either the MIT license or
++# GPL License. If you wish to use only one license not the other, you can
++# indicate your decision by deleting one of the above license notices in your
++# version of this file.
++#
++##############################################################################
++
++
++#
++# Linux build file for architecture dependent kernel HAL layer.
++#
++#
++
++
++################################################################################
++# Include common definitions.
++
++include $(AQROOT)/makefile.linux.def
++
++################################################################################
++# Define a shortcut for the main target.
++
++STATIC = 1
++TARGET_NAME = libhalkernel.a
++
++################################################################################
++# Supply additional include directories.
++
++INCLUDE += -I$(AQROOT)/hal/kernel/inc
++INCLUDE += -I$(AQROOT)/hal/kernel/inc
++INCLUDE += -I$(AQROOT)/hal/kernel/arch
++INCLUDE += -I$(AQROOT)/hal/kernel
++ifeq ($(VIVANTE_ENABLE_VG),1)
++INCLUDE += -I$(AQROOT)/hal/kernel/archvg
++endif
++INCLUDE += -I$(AQROOT)/hal/os/linux/kernel
++CFLAGS += $(INCLUDE) -Werror -ansi
++
++
++################################################################################
++# Describe object files.
++
++OBJECTS = $(OBJ_DIR)/gc_hal_kernel_command.o \
++ $(OBJ_DIR)/gc_hal_kernel_db.o \
++ $(OBJ_DIR)/gc_hal_kernel_debug.o \
++ $(OBJ_DIR)/gc_hal_kernel_event.o \
++ $(OBJ_DIR)/gc_hal_kernel_heap.o \
++ $(OBJ_DIR)/gc_hal_kernel.o \
++ $(OBJ_DIR)/gc_hal_kernel_mmu.o \
++ $(OBJ_DIR)/gc_hal_kernel_video_memory.o
++
++ifeq ($(VIVANTE_ENABLE_VG),1)
++OBJECTS += \
++ $(OBJ_DIR)/gc_hal_kernel_command_vg.o \
++ $(OBJ_DIR)/gc_hal_kernel_interrupt_vg.o \
++ $(OBJ_DIR)/gc_hal_kernel_mmu_vg.o \
++ $(OBJ_DIR)/gc_hal_kernel_vg.o
++endif
++
++include $(AQROOT)/common.target
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.4.p1.2+fslc.bb b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.4.p1.2+fslc.bb
new file mode 100644
index 00000000..f9307fb4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.4.p1.2+fslc.bb
@@ -0,0 +1,20 @@
+# Copyright (C) 2015-2018 O.S. Systems Software LTDA.
+# Copyright (C) 2015-2016 Freescale Semiconductor
+
+SUMMARY = "Kernel loadable module for Vivante GPU"
+DESCRIPTION = "This package uses an exact copy of the GPU kernel driver source code of \
+the same version as base and include fixes and improvements developed by FSL Community"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
+
+PV .= "+git${SRCPV}"
+
+SRCREV = "86354002bea77acd9ce1812712e9d8485b377ec8"
+SRC_URI = "git://github.com/Freescale/kernel-module-imx-gpu-viv.git;protocol=https"
+
+S = "${WORKDIR}/git"
+
+inherit module
+
+KERNEL_MODULE_AUTOLOAD = "galcore"
+COMPATIBLE_MACHINE = "(imx)"
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.4.p1.8.bb b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.4.p1.8.bb
new file mode 100644
index 00000000..9201dd27
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv_6.2.4.p1.8.bb
@@ -0,0 +1,26 @@
+# Copyright (C) 2015-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+
+SUMMARY = "Kernel loadable module for Vivante GPU"
+DESCRIPTION = "Builds the Vivante GPU kernel driver as a loadable kernel module, \
+allowing flexibility to use a newer graphics release with an older kernel."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+SRCBRANCH = "imx_4.9.123_imx8mm_ga"
+LOCALVERSION = "-${SRCBRANCH}"
+KERNEL_SRC ?= "git://source.codeaurora.org/external/imx/linux-imx.git;protocol=https"
+SRC_URI = " \
+ ${KERNEL_SRC};branch=${SRCBRANCH};subpath=drivers/mxc/gpu-viv;destsuffix=git/src \
+ file://Add-makefile.patch \
+"
+SRCREV = "6a71cbc089755afd6a86c005c22a1af6eab24a70"
+
+S = "${WORKDIR}/git"
+
+inherit module
+
+EXTRA_OEMAKE += "CONFIG_MXC_GPU_VIV=m"
+
+KERNEL_MODULE_AUTOLOAD = "galcore"
+COMPATIBLE_MACHINE = "(imx)"
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc-multi_git.bb b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc-multi_git.bb
new file mode 100644
index 00000000..74e01bd9
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc-multi_git.bb
@@ -0,0 +1,13 @@
+require kernel-module-ipc.inc
+
+EXTRA_OEMAKE ="KERNEL_DIR=${STAGING_KERNEL_DIR} B4860=1 CONFIG_MULTI_RAT=1"
+
+do_install(){
+ install -d ${D}/usr/driver/IPC/multi_rat
+ install -m 755 ${S}/kernel/*.ko ${D}/usr/driver/IPC/multi_rat
+}
+
+FILES_${PN} += "/usr/driver/IPC/multi_rat/*.ko"
+FILES_${PN}-dbg += "/usr/driver/IPC/multi_rat/.debug"
+
+COMPATIBLE_MACHINE = "(b4860qds|b4420qds)"
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc-single_git.bb b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc-single_git.bb
new file mode 100644
index 00000000..86155423
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc-single_git.bb
@@ -0,0 +1,13 @@
+require kernel-module-ipc.inc
+
+EXTRA_OEMAKE ="KERNEL_DIR=${STAGING_KERNEL_DIR} B4860=1"
+
+do_install(){
+ install -d ${D}/usr/driver/IPC/single_rat
+ install -m 755 ${S}/kernel/*.ko ${D}/usr/driver/IPC/single_rat
+}
+
+FILES_${PN} += "/usr/driver/IPC/single_rat/*.ko"
+FILES_${PN}-dbg += "/usr/driver/IPC/single_rat/.debug"
+
+COMPATIBLE_MACHINE = "(b4860qds|b4420qds)"
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc.inc b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc.inc
new file mode 100644
index 00000000..e3c92f3a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ipc.inc
@@ -0,0 +1,18 @@
+SUMMARY = "Linux IPC KERNEL MODULE "
+DESCRIPTION = "DSP boot application and ipc test application"
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fa38cd73d71527dc6efb546474f64d10"
+
+inherit module qoriq_build_64bit_kernel
+
+SRC_URI = "git://git.freescale.com/ppc/sdk/ipc.git;branch=sdk-v2.0.x"
+SRCREV = "74d662707558290f070f9589177db730444bc435"
+
+S = "${WORKDIR}/git"
+
+do_configure[depends] += "virtual/kernel:do_shared_workdir"
+do_compile_prepend () {
+ cd ${S}/kernel
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ls-debug_git.bb b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ls-debug_git.bb
new file mode 100644
index 00000000..cad18b69
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-ls-debug_git.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Layerscape Debug File System Module"
+DESCRIPTION = "This package is the kernel module which is used for \
+ls102xa targets debug."
+SECTION = "ls-debug"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94263f12f9416f9fd0493c8f9e8085a3"
+
+inherit module autotools-brokensep
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/ls-dbg;branch=nxp/master"
+SRCREV = "40501f6659e880d38508cdd34a4df2d348d1c68e"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF += "--with-linux=${STAGING_KERNEL_DIR}"
+EXTRA_OEMAKE += 'SYSROOT="${D}"'
+
+COMPATIBLE_MACHINE = "(ls102xa)"
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-perf-qoriq_0.8.2.bb b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-perf-qoriq_0.8.2.bb
new file mode 100644
index 00000000..4a31f1e3
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-perf-qoriq_0.8.2.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "QorIQ extension to Perf for supporting non core counters"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e29234dd5d40dc352cc60cc0c93437ba"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/qoriq-perf;branch=nxp/master"
+SRCREV = "7beb3783edac66bab00c85d99a7b073f569af7fd"
+
+S = "${WORKDIR}/git"
+
+inherit module autotools-brokensep qoriq_build_64bit_kernel
+
+PROCESSOR_REV ?= "B4860_R1"
+EXTRA_OECONF += "--with-linux=${STAGING_KERNEL_DIR} \
+ --with-processor=${PROCESSOR_REV}"
+
+EXTRA_OEMAKE += 'SYSROOT="${D}"'
+
+COMPATIBLE_MACHINE = "(b4860qds)"
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-scatter-gather_git.bb b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-scatter-gather_git.bb
new file mode 100644
index 00000000..20d894ed
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-scatter-gather_git.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Scatter-gather logic for multiple tables"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e9605a22ea50467bd2bfe4cdd66e69ae"
+
+inherit module
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/scatter-gather;branch=nxp/master"
+SRCREV = "97db173d08a70abe2b9a6fa928299a117f3febc2"
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_MACHINE = "(ls1021a)"
diff --git a/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-uio-seville_0.1.bb b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-uio-seville_0.1.bb
new file mode 100644
index 00000000..f7beed21
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/kernel-modules/kernel-module-uio-seville_0.1.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "UIO driver for T1040 L2 Switch"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/l2switch-uio;branch=nxp/sdk-v2.0.x"
+SRCREV = "0f31fbcbe9ab1ab9c424da34f70c82314b16f8de"
+
+inherit module
+
+S = "${WORKDIR}/git/uio-driver"
+
+COMPATIBLE_MACHINE = "(t1040|t1042)"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0001-fix-build.patch b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0001-fix-build.patch
new file mode 100644
index 00000000..4be4066d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0001-fix-build.patch
@@ -0,0 +1,71 @@
+Fix build errors when RT patch is applied
+
+Upstream-Status: Inappropriate [other]
+Freescale does not support the RT patch
+
+Signed-off-by: Jacob Kroon <jacob.kroon@mikrodidakt.se>
+Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de> [updated for 3.14.28]
+
+diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
+index 2ec98dc..5d0b7df 100644
+--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
++++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
+@@ -7344,7 +7344,7 @@ gckOS_WaitSignal(
+
+ might_sleep();
+
+- spin_lock_irq(&signal->obj.wait.lock);
++ raw_spin_lock_irq(&signal->obj.wait.lock);
+
+ if (signal->obj.done)
+ {
+@@ -7366,9 +7366,8 @@ gckOS_WaitSignal(
+ ? MAX_SCHEDULE_TIMEOUT
+ : Wait * HZ / 1000;
+
+- DECLARE_WAITQUEUE(wait, current);
+- wait.flags |= WQ_FLAG_EXCLUSIVE;
+- __add_wait_queue_tail(&signal->obj.wait, &wait);
++ DEFINE_SWAITER(wait);
++ swait_prepare_locked(&signal->obj.wait, &wait);
+
+ while (gcvTRUE)
+ {
+@@ -7380,9 +7379,9 @@ gckOS_WaitSignal(
+ }
+
+ __set_current_state(TASK_INTERRUPTIBLE);
+- spin_unlock_irq(&signal->obj.wait.lock);
++ raw_spin_unlock_irq(&signal->obj.wait.lock);
+ timeout = schedule_timeout(timeout);
+- spin_lock_irq(&signal->obj.wait.lock);
++ raw_spin_lock_irq(&signal->obj.wait.lock);
+
+ if (signal->obj.done)
+ {
+@@ -7403,10 +7402,10 @@ gckOS_WaitSignal(
+ }
+ }
+
+- __remove_wait_queue(&signal->obj.wait, &wait);
++ swait_finish_locked(&signal->obj.wait, &wait);
+ }
+
+- spin_unlock_irq(&signal->obj.wait.lock);
++ raw_spin_unlock_irq(&signal->obj.wait.lock);
+
+ OnError:
+ /* Return status. */
+diff --git a/include/linux/imx_sema4.h b/include/linux/imx_sema4.h
+index 9787980..3586199 100644
+--- a/include/linux/imx_sema4.h
++++ b/include/linux/imx_sema4.h
+@@ -9,6 +9,8 @@
+ #ifndef __LINUX_IMX_SEMA4_H__
+ #define __LINUX_IMX_SEMA4_H__
+
++#include <linux/wait.h>
++
+ #define SEMA4_NUM_DEVICES 1
+ #define SEMA4_NUM_GATES 16
+
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0002-no-split-ptlocks.patch b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0002-no-split-ptlocks.patch
new file mode 100644
index 00000000..40c012a5
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0002-no-split-ptlocks.patch
@@ -0,0 +1,85 @@
+Work around the oops below by disabling split ptlocks
+
+Upstream-Status: Inappropriate [disable feature]
+
+Signed-off-by: Jacob Kroon <jacob.kroon@mikrodidakt.se>
+Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de> [updated for 3.14.28]
+
+Unable to handle kernel NULL pointer dereference at virtual address 00000000
+pgd = ac5a8000
+[00000000] *pgd=3c8db831, *pte=00000000, *ppte=00000000
+Internal error: Oops: 17 [#1] PREEMPT SMP ARM
+Modules linked in:
+CPU: 1 PID: 277 Comm: test-qt5 Not tainted 3.10.17-rt12-monkey+gec1af9f #2
+task: ac65df80 ti: ac968000 task.ti: ac968000
+PC is at _raw_spin_lock+0x10/0x4c
+LR is at get_parent_ip+0x10/0x2c
+pc : [<80623fd4>] lr : [<8004ef18>] psr: 60010013
+sp : ac969c38 ip : 80c44404 fp : 00000000
+r10: ac65df80 r9 : ac969cd8 r8 : 00000000
+r7 : 00000054 r6 : afffe000 r5 : 00000000 r4 : 00000000
+r3 : ac65df80 r2 : 00000001 r1 : 00000000 r0 : 00000000
+Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
+Control: 10c53c7d Table: 3c5a804a DAC: 00000015
+Process test-qt5 (pid: 277, stack limit = 0xac968238)
+Stack: (0xac969c38 to 0xac96a000)
+9c20: b00549a8 806235e0
+9c40: 00000000 ac968000 812f9a00 80017cec ac969c74 fffffffe 00000000 00005000
+9c60: 00000000 80017e6c ac968000 ac65df80 00000000 00000000 00000001 ac968001
+9c80: ac65df80 b00549a8 00000000 afffe000 00000054 00000000 ac969cd8 afffe150
+9ca0: b0054bf8 8044e540 ac969cd8 b00549a8 ac0b8180 00000230 ac8fd000 00000230
+9cc0: 00000000 8044f6f4 ac155700 ac969cf4 ac155700 804605b8 ac155700 ac969d8c
+9ce0: 00000002 ac969d24 b0054bf8 804607f4 7ef1fcd0 80450078 ac0b8180 ac155700
+9d00: ac969d8c 00000002 ac8fd000 8045f1a0 ac969d24 00000000 ac8fd01c b00549a8
+9d20: b0050000 00000008 ac969d98 ac0b8300 ac969d8c 00000115 ac969d98 ac969e00
+9d40: ac155600 ac3985f0 7ef1fcd0 8045661c 00000115 00000000 00000001 00000000
+9d60: 00007530 80454144 80c32e18 00000001 81518e18 806237dc 00000001 ac968038
+9d80: 00000000 00000000 00000000 00000000 00000115 806237dc ac6f5688 ac968018
+9da0: 812e1640 00000000 00000001 ac968000 ac969dc4 8004efe4 ac968008 ac39a000
+9dc0: ac744400 ac968020 00007530 ac968000 ac968000 ac3985f0 7ef1fcd0 8044d374
+9de0: 7ef1fd20 00000000 000000f8 00000000 7ef1fd20 00000000 000000f8 00000000
+9e00: 00000028 00000002 00000000 6437d1dd 7ef1fddc 76f9c030 7ef1fd88 76fb9abc
+9e20: 00000320 00005007 e02c7eca c1399eff 020fb2db 00000000 00000000 00000000
+9e40: 00000001 00000040 00000400 00000004 00000010 00000400 00000002 00000100
+9e60: 00000100 00000008 00000008 00000000 ffffffff 00000000 7588e180 76fb1000
+9e80: 08000000 00000000 00000000 76fb11b8 000000af 760b6cd8 ffffffff 7431d4c0
+9ea0: 000cb1ac 75889000 00000000 00000001 000000b0 00000000 00000000 76fa0da0
+9ec0: 00000000 00000001 00000001 00000000 00000000 7588cb40 00000001 75957ecc
+9ee0: 00000001 7ef1fe7c 75953e94 7ef1fedc 00000002 76fa789c 00007530 ac6813c0
+9f00: 00000000 7ef1fcd0 ac6813c0 ac968000 ac3985f0 800d68fc 00000001 ac968000
+9f20: ac969f34 8004efe4 ac4f71d4 6c31d000 00000000 80623fd4 00000000 80623578
+9f40: ac4f71d4 800a3d40 00000001 00000000 ac969f5c 00000003 ac6813c8 00000000
+9f60: 00000001 00007530 00000003 00000000 7ef1fcd0 ac6813c0 ac968000 00000000
+9f80: 00000000 800d6afc ac4f7180 00000000 00002710 00007530 75957e40 00000036
+9fa0: 8000e2c4 8000e140 00002710 00007530 00000003 00007530 7ef1fcd0 01bc3008
+9fc0: 00002710 00007530 75957e40 00000036 01bd2e70 00000001 7ef1fd20 00000000
+9fe0: 759540c4 7ef1fcbc 7593f698 760a0ccc 20010010 00000003 00000000 00000000
+[<80623fd4>] (_raw_spin_lock+0x10/0x4c) from [<806235e0>] (rt_spin_lock_slowlock+0x34/0x29c)
+[<806235e0>] (rt_spin_lock_slowlock+0x34/0x29c) from [<8044e540>] (_QueryProcessPageTable+0x8c/0xdc)
+[<8044e540>] (_QueryProcessPageTable+0x8c/0xdc) from [<8044f6f4>] (gckOS_GetPhysicalAddress+0x20/0x58)
+[<8044f6f4>] (gckOS_GetPhysicalAddress+0x20/0x58) from [<804605b8>] (gckHARDWARE_ConvertLogical+0x2c/0x90)
+[<804605b8>] (gckHARDWARE_ConvertLogical+0x2c/0x90) from [<804607f4>] (gckHARDWARE_Link+0x60/0x104)
+[<804607f4>] (gckHARDWARE_Link+0x60/0x104) from [<8045f1a0>] (gckCONTEXT_Construct+0x264/0x2bc)
+[<8045f1a0>] (gckCONTEXT_Construct+0x264/0x2bc) from [<8045661c>] (gckCOMMAND_Attach+0x44/0x88)
+[<8045661c>] (gckCOMMAND_Attach+0x44/0x88) from [<80454144>] (gckKERNEL_Dispatch+0x358/0x12c8)
+[<80454144>] (gckKERNEL_Dispatch+0x358/0x12c8) from [<8044d374>] (drv_ioctl+0x120/0x284)
+[<8044d374>] (drv_ioctl+0x120/0x284) from [<800d68fc>] (do_vfs_ioctl+0x408/0x5d0)
+[<800d68fc>] (do_vfs_ioctl+0x408/0x5d0) from [<800d6afc>] (SyS_ioctl+0x38/0x64)
+[<800d6afc>] (SyS_ioctl+0x38/0x64) from [<8000e140>] (ret_fast_syscall+0x0/0x30)
+Code: e92d4010 e1a04000 e3a00001 ebe8abd7 (e1943f9f)
+---[ end trace 0000000000000002 ]---
+note: test-qt5[277] exited with preempt_count 1
+
+diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
+index 6c1dc6c..8c00faf 100644
+--- a/include/linux/mm_types.h
++++ b/include/linux/mm_types.h
+@@ -24,7 +24,7 @@
+
+ struct address_space;
+
+-#define USE_SPLIT_PTE_PTLOCKS (NR_CPUS >= CONFIG_SPLIT_PTLOCK_CPUS)
++#define USE_SPLIT_PTE_PTLOCKS (0)
+ #define USE_SPLIT_PMD_PTLOCKS (USE_SPLIT_PTE_PTLOCKS && \
+ IS_ENABLED(CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK))
+ #define ALLOC_SPLIT_PTLOCKS (SPINLOCK_SIZE > BITS_PER_LONG/8)
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch
new file mode 100644
index 00000000..93200c62
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch
@@ -0,0 +1,126 @@
+From f7cba8d49a980909cea48c5b9dcfefc6e13fef0b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= <dominic.sacre@gmx.de>
+Date: Fri, 29 Apr 2016 15:48:40 +0200
+Subject: [PATCH] Work around CPU stalls in the imx-sdma driver
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Replace spinlocks with raw spinlocks. This prevents preemption during
+the spinlock's critical section, as is the case on non PREEMPT_RT kernels.
+
+Without this patch, the following error can occur, for example when
+using the audio codec on an i.MX6Q SabreSD board:
+
+INFO: rcu_preempt self-detected stall on CPU { 0} (t=2100 jiffies g=106 c=105 q=93)
+CPU: 0 PID: 120 Comm: irq/34-sdma Not tainted 3.14.28-rt25-1.0.0_ga+g91cf351 #1
+[<80014a8c>] (unwind_backtrace) from [<8001173c>] (show_stack+0x10/0x14)
+[<8001173c>] (show_stack) from [<806ee750>] (dump_stack+0x7c/0xc8)
+[<806ee750>] (dump_stack) from [<800771c8>] (rcu_check_callbacks+0x454/0x888)
+[<800771c8>] (rcu_check_callbacks) from [<80037f28>] (update_process_times+0x40/0x5c)
+[<80037f28>] (update_process_times) from [<80082230>] (tick_sched_timer+0x4c/0x78)
+[<80082230>] (tick_sched_timer) from [<8004bf30>] (__run_hrtimer.isra.34+0x74/0x124)
+[<8004bf30>] (__run_hrtimer.isra.34) from [<8004cbb0>] (hrtimer_interrupt+0x154/0x3ac)
+[<8004cbb0>] (hrtimer_interrupt) from [<80014464>] (twd_handler+0x30/0x38)
+[<80014464>] (twd_handler) from [<8006fa2c>] (handle_percpu_devid_irq+0x6c/0x84)
+[<8006fa2c>] (handle_percpu_devid_irq) from [<8006bc64>] (generic_handle_irq+0x2c/0x3c)
+[<8006bc64>] (generic_handle_irq) from [<8000ed8c>] (handle_IRQ+0x40/0x90)
+[<8000ed8c>] (handle_IRQ) from [<8000856c>] (gic_handle_irq+0x2c/0x5c)
+[<8000856c>] (gic_handle_irq) from [<80012240>] (__irq_svc+0x40/0x84)
+Exception stack(0xa840feb8 to 0xa840ff00)
+fea0: a8007a28 00000002
+fec0: 00000001 0000a6a6 a80079c0 a8007a28 a83ea080 00000000 a80079c0 a83ea080
+fee0: 285190f0 00000000 00000000 a840ff00 8006d04c 806f3070 20030113 ffffffff
+[<80012240>] (__irq_svc) from [<806f3070>] (_raw_spin_unlock_irq+0x20/0x60)
+[<806f3070>] (_raw_spin_unlock_irq) from [<8006d04c>] (irq_finalize_oneshot.part.37+0x70/0xcc)
+[<8006d04c>] (irq_finalize_oneshot.part.37) from [<8006d148>] (irq_forced_thread_fn+0x60/0x64)
+[<8006d148>] (irq_forced_thread_fn) from [<8006d3dc>] (irq_thread+0x138/0x1a4)
+[<8006d3dc>] (irq_thread) from [<8004913c>] (kthread+0xbc/0xd4)
+[<8004913c>] (kthread) from [<8000e538>] (ret_from_fork+0x14/0x3c)
+
+Upstream-Status: Pending
+
+Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de>
+---
+ drivers/dma/imx-sdma.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
+index 31b7fed..bb7d6aa 100644
+--- a/drivers/dma/imx-sdma.c
++++ b/drivers/dma/imx-sdma.c
+@@ -408,7 +408,7 @@ struct sdma_engine {
+ struct dma_device dma_device;
+ struct clk *clk_ipg;
+ struct clk *clk_ahb;
+- spinlock_t channel_0_lock;
++ raw_spinlock_t channel_0_lock;
+ u32 script_number;
+ struct sdma_script_start_addrs *script_addrs;
+ const struct sdma_driver_data *drvdata;
+@@ -700,7 +700,7 @@ static int sdma_load_script(struct sdma_engine *sdma, void *buf, int size,
+ return -ENOMEM;
+ }
+
+- spin_lock_irqsave(&sdma->channel_0_lock, flags);
++ raw_spin_lock_irqsave(&sdma->channel_0_lock, flags);
+
+ bd0->mode.command = C0_SETPM;
+ bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD;
+@@ -712,7 +712,7 @@ static int sdma_load_script(struct sdma_engine *sdma, void *buf, int size,
+
+ ret = sdma_run_channel0(sdma);
+
+- spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
++ raw_spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
+
+ if (use_iram)
+ gen_pool_free(sdma->iram_pool, (unsigned long)buf_virt, size);
+@@ -979,7 +979,7 @@ static int sdma_load_context(struct sdma_channel *sdmac)
+ dev_dbg(sdma->dev, "event_mask0 = 0x%08x\n", (u32)sdmac->event_mask[0]);
+ dev_dbg(sdma->dev, "event_mask1 = 0x%08x\n", (u32)sdmac->event_mask[1]);
+
+- spin_lock_irqsave(&sdma->channel_0_lock, flags);
++ raw_spin_lock_irqsave(&sdma->channel_0_lock, flags);
+
+ memset(context, 0, sizeof(*context));
+ context->channel_state.pc = load_address;
+@@ -1005,7 +1005,7 @@ static int sdma_load_context(struct sdma_channel *sdmac)
+ bd0->ext_buffer_addr = 2048 + (sizeof(*context) / 4) * channel;
+ ret = sdma_run_channel0(sdma);
+
+- spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
++ raw_spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
+
+ sdmac->context_loaded = true;
+
+@@ -1019,7 +1019,7 @@ static int sdma_save_restore_context(struct sdma_engine *sdma, bool save)
+ unsigned long flags;
+ int ret;
+
+- spin_lock_irqsave(&sdma->channel_0_lock, flags);
++ raw_spin_lock_irqsave(&sdma->channel_0_lock, flags);
+
+ if (save)
+ bd0->mode.command = C0_GETDM;
+@@ -1032,7 +1032,7 @@ static int sdma_save_restore_context(struct sdma_engine *sdma, bool save)
+ bd0->ext_buffer_addr = 2048;
+ ret = sdma_run_channel0(sdma);
+
+- spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
++ raw_spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
+
+ return ret;
+ }
+@@ -2152,7 +2152,7 @@ static int sdma_probe(struct platform_device *pdev)
+ if (!sdma)
+ return -ENOMEM;
+
+- spin_lock_init(&sdma->channel_0_lock);
++ raw_spin_lock_init(&sdma->channel_0_lock);
+
+ sdma->dev = &pdev->dev;
+ sdma->drvdata = drvdata;
+--
+2.8.1
+
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0004-export-swait-locked-functions.patch b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0004-export-swait-locked-functions.patch
new file mode 100644
index 00000000..1a616aa3
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/0004-export-swait-locked-functions.patch
@@ -0,0 +1,31 @@
+From 2460dd985b0cf477f74396de92d1bc5df496abdc Mon Sep 17 00:00:00 2001
+From: Julio Cruz <jcsistemas2001@gmail.com>
+Date: Wed, 20 Jan 2016 19:26:44 +0800
+Subject: [PATCH] Export symbols for iMX-GPU-VIV module
+
+---
+ kernel/sched/wait-simple.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/kernel/sched/wait-simple.c b/kernel/sched/wait-simple.c
+index 7dfa86d..a3776ee 100644
+--- a/kernel/sched/wait-simple.c
++++ b/kernel/sched/wait-simple.c
+@@ -40,6 +40,7 @@ void swait_prepare_locked(struct swait_head *head, struct swaiter *w)
+ if (list_empty(&w->node))
+ __swait_enqueue(head, w);
+ }
++EXPORT_SYMBOL(swait_prepare_locked);
+
+ void swait_prepare(struct swait_head *head, struct swaiter *w, int state)
+ {
+@@ -58,6 +59,7 @@ void swait_finish_locked(struct swait_head *head, struct swaiter *w)
+ if (w->task)
+ __swait_dequeue(w);
+ }
++EXPORT_SYMBOL(swait_finish_locked);
+
+ void swait_finish(struct swait_head *head, struct swaiter *w)
+ {
+--
+2.1.0
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/defconfig b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/defconfig
new file mode 100644
index 00000000..34ee14d1
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt/defconfig
@@ -0,0 +1,439 @@
+CONFIG_LOCALVERSION="-fslc"
+CONFIG_KERNEL_LZO=y
+CONFIG_SYSVIPC=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_CGROUPS=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_ARCH_MXC=y
+CONFIG_SOC_IMX50=y
+CONFIG_SOC_IMX53=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_SOC_IMX6SL=y
+CONFIG_SOC_IMX6SX=y
+CONFIG_SOC_IMX6ULL=y
+CONFIG_SOC_IMX7D=y
+CONFIG_SOC_VF610=y
+# CONFIG_SWP_EMULATE is not set
+CONFIG_SMP=y
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PREEMPT_RT_FULL=y
+CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+CONFIG_CMA=y
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_ARM_IMX6Q_CPUFREQ=y
+CONFIG_ARM_IMX7D_CPUFREQ=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_BINFMT_MISC=m
+CONFIG_PM_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+CONFIG_IPV6=y
+CONFIG_VLAN_8021Q=y
+CONFIG_LLC2=y
+CONFIG_CAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_CAN_M_CAN=y
+CONFIG_BT=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+CONFIG_BT_HCIBTUSB=y
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIBCM203X=y
+CONFIG_BT_ATH3K=y
+CONFIG_CFG80211=y
+CONFIG_MAC80211=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+CONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=0
+CONFIG_IMX_WEIM=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_PHYSMAP_OF=y
+CONFIG_MTD_DATAFLASH=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SST25L=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_NAND_MXC=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_SPI_FSL_QUADSPI=y
+CONFIG_MTD_UBI=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_SENSORS_FXOS8700=y
+CONFIG_SENSORS_FXAS2100X=y
+CONFIG_EEPROM_AT24=y
+CONFIG_EEPROM_AT25=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+CONFIG_PATA_IMX=y
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_BROADCOM is not set
+CONFIG_CS89x0=y
+CONFIG_CS89x0_PLATFORM=y
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_SMC91X=y
+CONFIG_SMC911X=y
+CONFIG_SMSC911X=y
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_MICREL_PHY=y
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_BCMDHD=y
+CONFIG_BCMDHD_SDIO=y
+CONFIG_BCMDHD_FW_PATH="/lib/firmware/bcm/ZP_BCM4339/fw_bcmdhd.bin"
+CONFIG_BCMDHD_NVRAM_PATH="/lib/firmware/bcm/ZP_BCM4339/bcmdhd.ZP.OOB.cal"
+# CONFIG_RTL_CARDS is not set
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_IMX=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_ELAN_TS=y
+CONFIG_TOUCHSCREEN_MAX11801=y
+CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
+CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_TOUCHSCREEN_TSC2007=y
+CONFIG_TOUCHSCREEN_STMPE=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_MMA8450=y
+CONFIG_INPUT_MPL3115=y
+CONFIG_SENSOR_FXLS8471=y
+CONFIG_INPUT_ISL29023=y
+CONFIG_SERIO_SERPORT=m
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_FSL_OTP=y
+CONFIG_HW_RANDOM_IMX_RNG=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_GPIO=y
+CONFIG_SPI_IMX=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_MAX732X=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_74X164=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_SABRESD_MAX8903=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_SENSORS_MAX17135=y
+CONFIG_SENSORS_MAG3110=y
+CONFIG_THERMAL=y
+CONFIG_CPU_THERMAL=y
+CONFIG_IMX_THERMAL=y
+CONFIG_DEVICE_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_DA9052_I2C=y
+CONFIG_MFD_MC13XXX_SPI=y
+CONFIG_MFD_MC13XXX_I2C=y
+CONFIG_MFD_MAX17135=y
+CONFIG_MFD_SI476X_CORE=y
+CONFIG_MFD_STMPE=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_DA9052=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_MAX17135=y
+CONFIG_REGULATOR_MC13783=y
+CONFIG_REGULATOR_MC13892=y
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+CONFIG_MEDIA_RC_SUPPORT=y
+CONFIG_RC_DEVICES=y
+CONFIG_IR_GPIO_CIR=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_MXC_OUTPUT=y
+CONFIG_VIDEO_MXC_CAPTURE=m
+CONFIG_MXC_CAMERA_OV5640=m
+CONFIG_MXC_CAMERA_OV5642=m
+CONFIG_MXC_CAMERA_OV5640_MIPI=m
+CONFIG_MXC_TVIN_ADV7180=m
+CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
+CONFIG_VIDEO_MXC_IPU_OUTPUT=y
+CONFIG_VIDEO_MXC_PXP_V4L2=y
+CONFIG_VIDEO_MXC_CSI_CAMERA=m
+CONFIG_MXC_VADC=m
+CONFIG_MXC_MIPI_CSI=m
+CONFIG_MXC_CAMERA_OV5647_MIPI=m
+CONFIG_SOC_CAMERA=y
+CONFIG_VIDEO_MX3=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_CODA=y
+CONFIG_RADIO_SI476X=y
+CONFIG_SOC_CAMERA_OV2640=y
+CONFIG_DRM=y
+CONFIG_DRM_VIVANTE=y
+CONFIG_FB=y
+CONFIG_FB_MXS=y
+CONFIG_FB_MXC_SYNC_PANEL=y
+CONFIG_FB_MXC_MIPI_DSI=y
+CONFIG_FB_MXC_MIPI_DSI_SAMSUNG=y
+CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y
+CONFIG_FB_MXC_TRULY_PANEL_TFT3P5079E=y
+CONFIG_FB_MXC_TRULY_PANEL_TFT3P5581E=y
+CONFIG_FB_MXC_LDB=y
+CONFIG_FB_MXC_HDMI=y
+CONFIG_FB_MXS_SII902X=y
+CONFIG_FB_MXC_DCIC=m
+CONFIG_HANNSTAR_CABC=y
+CONFIG_FB_MXC_EINK_PANEL=y
+CONFIG_FB_MXC_EINK_V2_PANEL=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_L4F00242T03=y
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_EUKREA_TLV320=y
+CONFIG_SND_SOC_IMX_WM8960=y
+CONFIG_SND_SOC_IMX_SII902X=y
+CONFIG_SND_SOC_IMX_WM8958=y
+CONFIG_SND_SOC_IMX_CS42888=y
+CONFIG_SND_SOC_IMX_WM8962=y
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_SND_SOC_IMX_MQS=y
+CONFIG_SND_SOC_IMX_SPDIF=y
+CONFIG_SND_SOC_IMX_MC13783=y
+CONFIG_SND_SOC_IMX_SI476X=y
+CONFIG_SND_SOC_IMX_HDMI=y
+CONFIG_SND_SIMPLE_CARD=y
+CONFIG_USB=y
+CONFIG_USB_OTG_WHITELIST=y
+CONFIG_USB_OTG_FSM=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_MXC=y
+CONFIG_USB_HCD_TEST_MODE=y
+CONFIG_USB_ACM=m
+CONFIG_USB_STORAGE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_EHSET_TEST_FIXTURE=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_CONFIGFS=m
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_G_NCM=m
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_V3_PRE=y
+CONFIG_MXC_GPU_VIV=y
+CONFIG_MXC_SIM=y
+CONFIG_MXC_MIPI_CSI2=y
+CONFIG_MXC_HDMI_CEC=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_MC13XXX=y
+CONFIG_RTC_DRV_MXC=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_DMADEVICES=y
+CONFIG_MXC_PXP_V2=y
+CONFIG_MXC_PXP_V3=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+CONFIG_DMATEST=m
+CONFIG_STAGING=y
+CONFIG_STAGING_MEDIA=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_IIO=y
+CONFIG_IMX7D_ADC=y
+CONFIG_VF610_ADC=y
+CONFIG_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=y
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_JFFS2_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_UTF8=y
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_FTRACE is not set
+CONFIG_SECURITYFS=y
+CONFIG_CRYPTO_USER=y
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_RMD128=y
+CONFIG_CRYPTO_RMD160=y
+CONFIG_CRYPTO_RMD256=y
+CONFIG_CRYPTO_RMD320=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_TWOFISH=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
+CONFIG_CRYPTO_DEV_MXS_DCP=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt_4.1-2.0.x.bb b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt_4.1-2.0.x.bb
new file mode 100644
index 00000000..621023b4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx-rt_4.1-2.0.x.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Realtime version of the FSL Community BSP i.MX6 Linux kernel with backported features and fixes"
+DESCRIPTION = "Linux kernel based on NXP 4.1-2.0.0 GA release, used by FSL Community BSP in order to \
+provide support for i.MX6 based platforms and include official Linux kernel stable updates, backported \
+features and fixes coming from the vendors, kernel community or FSL Community itself. \
+In addition, this kernel has the realtime patch (PREEMPT_RT) applied."
+
+include linux-fslc.inc
+
+PV .= "+git${SRCPV}"
+
+SRCBRANCH = "4.1-2.0.x-imx"
+SRCREV = "ee67fc7e072df596577e3a4e4fce7b51816d4b0a"
+
+SRC_URI += " \
+ ${KERNELORG_MIRROR}/linux/kernel/projects/rt/4.1/older/patch-4.1.38-rt45.patch.gz;name=rt-patch \
+ file://0001-fix-build.patch \
+ file://0002-no-split-ptlocks.patch \
+ file://0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch \
+ file://0004-export-swait-locked-functions.patch \
+"
+
+SRC_URI[rt-patch.md5sum] = "6e86714997e190a45fb5b9c951d2c179"
+SRC_URI[rt-patch.sha256sum] = "12aa4947ee656fa724e17d8971dcb3634a058c18afe59a472adfcd6f11d17f67"
+
+
+COMPATIBLE_MACHINE = "(mx6|mx7)"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx/defconfig b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx/defconfig
new file mode 100644
index 00000000..f9e53a6a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx/defconfig
@@ -0,0 +1,426 @@
+CONFIG_KERNEL_LZO=y
+CONFIG_SYSVIPC=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_CGROUPS=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_ARCH_MXC=y
+CONFIG_SOC_IMX50=y
+CONFIG_SOC_IMX53=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_SOC_IMX6SL=y
+CONFIG_SOC_IMX6SX=y
+CONFIG_SOC_IMX6ULL=y
+CONFIG_SOC_IMX7D=y
+CONFIG_SOC_IMX6SLL=y
+CONFIG_SOC_VF610=y
+# CONFIG_SWP_EMULATE is not set
+CONFIG_SMP=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+CONFIG_CMA=y
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
+CONFIG_ARM_IMX6Q_CPUFREQ=y
+CONFIG_ARM_IMX7D_CPUFREQ=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_BINFMT_MISC=m
+CONFIG_PM_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+CONFIG_VLAN_8021Q=y
+CONFIG_LLC2=y
+CONFIG_CAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_CAN_M_CAN=y
+CONFIG_BT=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+CONFIG_BT_HCIBTUSB=y
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIBCM203X=y
+CONFIG_BT_ATH3K=y
+CONFIG_CFG80211=y
+CONFIG_MAC80211=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+CONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=0
+CONFIG_IMX_WEIM=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_PHYSMAP_OF=y
+CONFIG_MTD_DATAFLASH=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SST25L=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_NAND_MXC=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_SPI_FSL_QUADSPI=y
+CONFIG_MTD_UBI=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_SENSORS_FXOS8700=y
+CONFIG_SENSORS_FXAS2100X=y
+CONFIG_EEPROM_AT24=y
+CONFIG_EEPROM_AT25=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+CONFIG_PATA_IMX=y
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_BROADCOM is not set
+CONFIG_CS89x0=y
+CONFIG_CS89x0_PLATFORM=y
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_SMC91X=y
+CONFIG_SMC911X=y
+CONFIG_SMSC911X=y
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_MICREL_PHY=y
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_BCMDHD=y
+CONFIG_BCMDHD_SDIO=y
+CONFIG_BCMDHD_FW_PATH="/lib/firmware/bcm/ZP_BCM4339/fw_bcmdhd.bin"
+CONFIG_BCMDHD_NVRAM_PATH="/lib/firmware/bcm/ZP_BCM4339/bcmdhd.ZP.OOB.cal"
+# CONFIG_RTL_CARDS is not set
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_IMX=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_ELAN_TS=y
+CONFIG_TOUCHSCREEN_MAX11801=y
+CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
+CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_TOUCHSCREEN_TSC2007=y
+CONFIG_TOUCHSCREEN_STMPE=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_MMA8450=y
+CONFIG_INPUT_MPL3115=y
+CONFIG_SENSOR_FXLS8471=y
+CONFIG_INPUT_ISL29023=y
+CONFIG_SERIO_SERPORT=m
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_FSL_OTP=y
+CONFIG_HW_RANDOM_IMX_RNG=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_GPIO=y
+CONFIG_SPI_IMX=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_MAX732X=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_74X164=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_SABRESD_MAX8903=y
+CONFIG_SENSORS_MAX17135=y
+CONFIG_SENSORS_MAG3110=y
+CONFIG_THERMAL=y
+CONFIG_CPU_THERMAL=y
+CONFIG_IMX_THERMAL=y
+CONFIG_DEVICE_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_DA9052_I2C=y
+CONFIG_MFD_MC13XXX_SPI=y
+CONFIG_MFD_MC13XXX_I2C=y
+CONFIG_MFD_MAX17135=y
+CONFIG_MFD_SI476X_CORE=y
+CONFIG_MFD_STMPE=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_DA9052=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_MAX17135=y
+CONFIG_REGULATOR_MC13783=y
+CONFIG_REGULATOR_MC13892=y
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+CONFIG_MEDIA_RC_SUPPORT=y
+CONFIG_RC_DEVICES=y
+CONFIG_IR_GPIO_CIR=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_MXC_OUTPUT=y
+CONFIG_VIDEO_MXC_CAPTURE=m
+CONFIG_MXC_CAMERA_OV5640=m
+CONFIG_MXC_CAMERA_OV5642=m
+CONFIG_MXC_CAMERA_OV5640_MIPI=m
+CONFIG_MXC_TVIN_ADV7180=m
+CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
+CONFIG_VIDEO_MXC_IPU_OUTPUT=y
+CONFIG_VIDEO_MXC_PXP_V4L2=y
+CONFIG_VIDEO_MXC_CSI_CAMERA=m
+CONFIG_MXC_VADC=m
+CONFIG_MXC_MIPI_CSI=m
+CONFIG_MXC_CAMERA_OV5647_MIPI=m
+CONFIG_SOC_CAMERA=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_CODA=y
+CONFIG_RADIO_SI476X=y
+CONFIG_SOC_CAMERA_OV2640=y
+CONFIG_DRM=y
+CONFIG_DRM_VIVANTE=y
+CONFIG_FB_MXS=y
+CONFIG_FB_MXC_SYNC_PANEL=y
+CONFIG_FB_MXC_MIPI_DSI=y
+CONFIG_FB_MXC_MIPI_DSI_SAMSUNG=y
+CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y
+CONFIG_FB_MXC_TRULY_PANEL_TFT3P5079E=y
+CONFIG_FB_MXC_TRULY_PANEL_TFT3P5581E=y
+CONFIG_FB_MXC_LDB=y
+CONFIG_FB_MXC_HDMI=y
+CONFIG_FB_MXS_SII902X=y
+CONFIG_FB_MXC_DCIC=m
+CONFIG_HANNSTAR_CABC=y
+CONFIG_FB_MXC_EINK_PANEL=y
+CONFIG_FB_MXC_EINK_V2_PANEL=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_L4F00242T03=y
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_EUKREA_TLV320=y
+CONFIG_SND_SOC_IMX_WM8960=y
+CONFIG_SND_SOC_IMX_SII902X=y
+CONFIG_SND_SOC_IMX_WM8958=y
+CONFIG_SND_SOC_IMX_CS42888=y
+CONFIG_SND_SOC_IMX_WM8962=y
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_SND_SOC_IMX_MQS=y
+CONFIG_SND_SOC_IMX_SPDIF=y
+CONFIG_SND_SOC_IMX_MC13783=y
+CONFIG_SND_SOC_IMX_SI476X=y
+CONFIG_SND_SOC_IMX_HDMI=y
+CONFIG_SND_SIMPLE_CARD=y
+CONFIG_USB=y
+CONFIG_USB_OTG_WHITELIST=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_MXC=y
+CONFIG_USB_HCD_TEST_MODE=y
+CONFIG_USB_ACM=m
+CONFIG_USB_STORAGE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_EHSET_TEST_FIXTURE=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_CONFIGFS=m
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_G_NCM=m
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_V3_PRE=y
+CONFIG_MXC_GPU_VIV=y
+CONFIG_MXC_SIM=y
+CONFIG_MXC_MIPI_CSI2=y
+CONFIG_MXC_HDMI_CEC=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_MC13XXX=y
+CONFIG_RTC_DRV_MXC=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_DMADEVICES=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+CONFIG_MXC_PXP_V2=y
+CONFIG_MXC_PXP_V3=y
+CONFIG_DMATEST=m
+CONFIG_STAGING=y
+CONFIG_STAGING_MEDIA=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_IIO=y
+CONFIG_IMX7D_ADC=y
+CONFIG_VF610_ADC=y
+CONFIG_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=y
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_JFFS2_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_UTF8=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FUNCTION_TRACER=y
+CONFIG_SECURITYFS=y
+CONFIG_CRYPTO_USER=y
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_RMD128=y
+CONFIG_CRYPTO_RMD160=y
+CONFIG_CRYPTO_RMD256=y
+CONFIG_CRYPTO_RMD320=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
+CONFIG_CRYPTO_DEV_MXS_DCP=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx_4.9-1.0.x.bb b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx_4.9-1.0.x.bb
new file mode 100644
index 00000000..aff27bbf
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc-imx_4.9-1.0.x.bb
@@ -0,0 +1,16 @@
+# Copyright (C) 2015, 2017 O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "FSL Community BSP i.MX Linux kernel with backported features and fixes"
+DESCRIPTION = "Linux kernel based on NXP 4.9.11-1.0.0 GA release, used by FSL Community BSP in order to \
+provide support for i.MX based platforms and include official Linux kernel stable updates, backported \
+features and fixes coming from the vendors, kernel community or FSL Community itself."
+
+include linux-fslc.inc
+
+PV .= "+git${SRCPV}"
+
+SRCBRANCH = "4.9-1.0.x-imx"
+SRCREV = "953c6e30c9701fda69ef08e2476c541dc4fb1453"
+
+COMPATIBLE_MACHINE = "(mx6|mx7)"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc.inc b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc.inc
new file mode 100644
index 00000000..f6d04d59
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc.inc
@@ -0,0 +1,10 @@
+# Copyright (C) 2012-2015 O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+require recipes-kernel/linux/linux-imx.inc
+
+DEPENDS += "lzop-native bc-native"
+
+SRC_URI = "git://github.com/Freescale/linux-fslc.git;branch=${SRCBRANCH} \
+ file://defconfig"
+LOCALVERSION = "-fslc"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc/defconfig b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc/defconfig
new file mode 100644
index 00000000..6985d61e
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc/defconfig
@@ -0,0 +1,444 @@
+CONFIG_KERNEL_LZO=y
+CONFIG_SYSVIPC=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_CGROUPS=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_ARCH_MULTI_V6=y
+CONFIG_ARCH_MXC=y
+CONFIG_MACH_MX31LILLY=y
+CONFIG_MACH_MX31LITE=y
+CONFIG_MACH_PCM037=y
+CONFIG_MACH_PCM037_EET=y
+CONFIG_MACH_MX31_3DS=y
+CONFIG_MACH_MX31MOBOARD=y
+CONFIG_MACH_QONG=y
+CONFIG_MACH_ARMADILLO5X0=y
+CONFIG_MACH_KZM_ARM11_01=y
+CONFIG_MACH_IMX31_DT=y
+CONFIG_MACH_IMX35_DT=y
+CONFIG_MACH_PCM043=y
+CONFIG_MACH_MX35_3DS=y
+CONFIG_MACH_VPR200=y
+CONFIG_SOC_IMX50=y
+CONFIG_SOC_IMX51=y
+CONFIG_SOC_IMX53=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_SOC_IMX6SL=y
+CONFIG_SOC_IMX6SLL=y
+CONFIG_SOC_IMX6SX=y
+CONFIG_SOC_IMX6UL=y
+CONFIG_SOC_IMX7D=y
+CONFIG_SOC_VF610=y
+CONFIG_PCI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_IMX6=y
+CONFIG_SMP=y
+CONFIG_ARM_PSCI=y
+CONFIG_HIGHMEM=y
+CONFIG_FORCE_MAX_ZONEORDER=14
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+CONFIG_KEXEC=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPUFREQ_DT=y
+CONFIG_ARM_IMX6Q_CPUFREQ=y
+CONFIG_CPU_IDLE=y
+CONFIG_ARM_CPUIDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_BINFMT_MISC=m
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+CONFIG_NETFILTER=y
+CONFIG_CAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_BT=y
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_CFG80211=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+CONFIG_RFKILL=y
+CONFIG_RFKILL_INPUT=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+CONFIG_FW_LOADER_USER_HELPER=y
+CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+CONFIG_CMA_SIZE_MBYTES=64
+CONFIG_IMX_WEIM=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_PHYSMAP_OF=y
+CONFIG_MTD_DATAFLASH=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SST25L=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_NAND_VF610_NFC=y
+CONFIG_MTD_NAND_MXC=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_SPI_FSL_QUADSPI=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_FASTMAP=y
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_EEPROM_AT24=y
+CONFIG_EEPROM_AT25=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+CONFIG_PATA_IMX=y
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_BROADCOM is not set
+CONFIG_CS89x0=y
+CONFIG_CS89x0_PLATFORM=y
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_SMC91X=y
+CONFIG_SMC911X=y
+CONFIG_SMSC911X=y
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_AT803X_PHY=y
+CONFIG_MICREL_PHY=y
+CONFIG_SMSC_PHY=y
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=y
+CONFIG_USB_LAN78XX=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_SMSC95XX=y
+CONFIG_USB_NET_MCS7830=y
+CONFIG_BRCMFMAC=m
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+CONFIG_WLCORE_SDIO=m
+# CONFIG_WILINK_PLATFORM_DATA is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_SNVS_PWRKEY=y
+CONFIG_KEYBOARD_IMX=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_MAX11801=y
+CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
+CONFIG_TOUCHSCREEN_EDT_FT5X06=y
+CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_TOUCHSCREEN_TSC2004=y
+CONFIG_TOUCHSCREEN_TSC2007=y
+CONFIG_TOUCHSCREEN_STMPE=y
+CONFIG_TOUCHSCREEN_SX8654=y
+CONFIG_TOUCHSCREEN_COLIBRI_VF50=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_MMA8450=y
+CONFIG_SERIO_SERPORT=m
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_SERIAL_DEV_BUS=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX=y
+CONFIG_I2C_MUX_GPIO=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+CONFIG_I2C_GPIO=y
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_GPIO=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_FSL_DSPI=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_MAX732X=y
+CONFIG_GPIO_MC9S08DZ60=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_STMPE=y
+CONFIG_GPIO_74X164=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_SENSORS_MC13783_ADC=y
+CONFIG_SENSORS_GPIO_FAN=y
+CONFIG_SENSORS_IIO_HWMON=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_CPU_THERMAL=y
+CONFIG_IMX_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_DA9062_WATCHDOG=y
+CONFIG_RN5T618_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_DA9052_I2C=y
+CONFIG_MFD_DA9062=y
+CONFIG_MFD_MC13XXX_SPI=y
+CONFIG_MFD_MC13XXX_I2C=y
+CONFIG_MFD_RN5T618=y
+CONFIG_MFD_STMPE=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_DA9052=y
+CONFIG_REGULATOR_DA9062=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_MC13783=y
+CONFIG_REGULATOR_MC13892=y
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_REGULATOR_RN5T618=y
+CONFIG_RC_CORE=y
+CONFIG_RC_DEVICES=y
+CONFIG_IR_GPIO_CIR=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_CONTROLLER=y
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_MUX=y
+CONFIG_SOC_CAMERA=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_CODA=m
+# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
+CONFIG_VIDEO_ADV7180=m
+CONFIG_VIDEO_OV5640=m
+CONFIG_IMX_IPUV3_CORE=y
+CONFIG_DRM=y
+CONFIG_DRM_PANEL_LVDS=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_DRM_PANEL_SEIKO_43WVF1G=y
+CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
+CONFIG_DRM_DW_HDMI_CEC=y
+CONFIG_DRM_IMX=y
+CONFIG_DRM_IMX_PARALLEL_DISPLAY=y
+CONFIG_DRM_IMX_TVE=y
+CONFIG_DRM_IMX_LDB=y
+CONFIG_DRM_IMX_HDMI=y
+CONFIG_DRM_ETNAVIV=y
+CONFIG_DRM_MXSFB=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_L4F00242T03=y
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_BACKLIGHT_GPIO=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_SOC=y
+CONFIG_SND_SOC_FSL_ASRC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_PHYCORE_AC97=y
+CONFIG_SND_SOC_EUKREA_TLV320=y
+CONFIG_SND_SOC_IMX_ES8328=y
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_SND_SOC_IMX_SPDIF=y
+CONFIG_SND_SOC_IMX_MC13783=y
+CONFIG_SND_SOC_FSL_ASOC_CARD=y
+CONFIG_SND_SOC_AC97_CODEC=y
+CONFIG_SND_SOC_CS42XX8_I2C=y
+CONFIG_SND_SOC_TLV320AIC3X=y
+CONFIG_SND_SOC_WM8960=y
+CONFIG_SND_SOC_WM8962=y
+CONFIG_SND_SIMPLE_CARD=y
+CONFIG_HID_MULTITOUCH=y
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_MXC=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_TEST=m
+CONFIG_USB_EHSET_TEST_FIXTURE=m
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_FSL_USB2=y
+CONFIG_USB_CONFIGFS=m
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_UAC1=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_CONFIGFS_F_UVC=y
+CONFIG_USB_CONFIGFS_F_PRINTER=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_AUDIO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_G_NCM=m
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FUNCTIONFS=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_PWM=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_PCF8523=y
+CONFIG_RTC_DRV_PCF8563=y
+CONFIG_RTC_DRV_M41T80=y
+CONFIG_RTC_DRV_DA9063=y
+CONFIG_RTC_DRV_MC13XXX=y
+CONFIG_RTC_DRV_MXC=y
+CONFIG_RTC_DRV_MXC_V2=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_DMADEVICES=y
+CONFIG_FSL_EDMA=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+CONFIG_DMATEST=m
+CONFIG_STAGING=y
+CONFIG_STAGING_MEDIA=y
+CONFIG_VIDEO_IMX_MEDIA=y
+CONFIG_COMMON_CLK_PWM=y
+CONFIG_IIO=y
+CONFIG_MMA8452=y
+CONFIG_IMX7D_ADC=y
+CONFIG_VF610_ADC=y
+CONFIG_SENSORS_ISL29018=y
+CONFIG_MAG3110=y
+CONFIG_MPL3115=y
+CONFIG_PWM=y
+CONFIG_PWM_FSL_FTM=y
+CONFIG_PWM_IMX=y
+CONFIG_NVMEM_IMX_OCOTP=y
+CONFIG_NVMEM_VF610_OCOTP=y
+CONFIG_TEE=y
+CONFIG_OPTEE=y
+CONFIG_MUX_MMIO=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=y
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_JFFS2_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_UTF8=y
+CONFIG_SECURITYFS=y
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_SAHARA=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_PRINTK_TIME=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_SCHED_DEBUG is not set
+CONFIG_PROVE_LOCKING=y
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_FTRACE is not set
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc/mx25/defconfig b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc/mx25/defconfig
new file mode 100644
index 00000000..8661dd9b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc/mx25/defconfig
@@ -0,0 +1,187 @@
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_CGROUPS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_SLAB=y
+CONFIG_PROFILING=y
+CONFIG_ARCH_MULTI_V4T=y
+CONFIG_ARCH_MULTI_V5=y
+# CONFIG_ARCH_MULTI_V7 is not set
+CONFIG_ARCH_MXC=y
+CONFIG_MACH_MX21ADS=y
+CONFIG_MACH_MX27ADS=y
+CONFIG_MACH_MX27_3DS=y
+CONFIG_MACH_IMX27_VISSTRIM_M10=y
+CONFIG_MACH_PCA100=y
+CONFIG_MACH_IMX27_DT=y
+CONFIG_SOC_IMX1=y
+CONFIG_SOC_IMX25=y
+CONFIG_AEABI=y
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_PM_DEBUG=y
+CONFIG_OPROFILE=y
+CONFIG_KPROBES=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_IPV6 is not set
+CONFIG_NETFILTER=y
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_IMX_WEIM=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+# CONFIG_MTD_CFI_I2 is not set
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_MXC=y
+CONFIG_MTD_UBI=y
+CONFIG_EEPROM_AT24=y
+CONFIG_EEPROM_AT25=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_ATA=y
+CONFIG_PATA_IMX=y
+CONFIG_NETDEVICES=y
+CONFIG_CS89x0=y
+CONFIG_CS89x0_PLATFORM=y
+CONFIG_DM9000=y
+CONFIG_SMC91X=y
+CONFIG_SMC911X=y
+CONFIG_SMSC911X=y
+CONFIG_SMSC_PHY=y
+CONFIG_INPUT_EVDEV=y
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_IMX=y
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=m
+CONFIG_TOUCHSCREEN_MX25=y
+CONFIG_TOUCHSCREEN_MC13783=y
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+# CONFIG_HW_RANDOM is not set
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_W1=y
+CONFIG_W1_MASTER_MXC=y
+CONFIG_W1_SLAVE_THERM=y
+CONFIG_HWMON=m
+CONFIG_SENSORS_MC13783_ADC=m
+CONFIG_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_MC13XXX_SPI=y
+CONFIG_MFD_MX25_TSADC=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_MC13783=y
+CONFIG_REGULATOR_MC13892=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_SOC_CAMERA=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_CODA=y
+CONFIG_FB=y
+CONFIG_FB_IMX=y
+CONFIG_LCD_L4F00242T03=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+# CONFIG_SND_ARM is not set
+# CONFIG_SND_SPI is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_MX27VIS_AIC32X4=y
+CONFIG_SND_SOC_PHYCORE_AC97=y
+CONFIG_SND_SOC_EUKREA_TLV320=y
+CONFIG_SND_SOC_IMX_MC13783=y
+CONFIG_SND_SOC_FSL_ASOC_CARD=y
+CONFIG_SND_SOC_SGTL5000=y
+CONFIG_USB_HID=m
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_MXC=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_ETH=m
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MMC_MXC=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_MC13783=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_PCF8563=y
+CONFIG_RTC_DRV_IMXDI=y
+CONFIG_RTC_DRV_MC13XXX=y
+CONFIG_RTC_DRV_MXC=y
+CONFIG_DMADEVICES=y
+CONFIG_IMX_DMA=y
+CONFIG_IMX_SDMA=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_IIO=y
+CONFIG_FSL_MX25_ADC=y
+CONFIG_EXT4_FS=y
+# CONFIG_DNOTIFY is not set
+CONFIG_VFAT_FS=y
+# CONFIG_PROC_PAGE_MONITOR is not set
+CONFIG_TMPFS=y
+CONFIG_JFFS2_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_NFS_FS=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=m
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc/mxs/defconfig b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc/mxs/defconfig
new file mode 100644
index 00000000..38480596
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc/mxs/defconfig
@@ -0,0 +1,177 @@
+CONFIG_SYSVIPC=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT_VOLUNTARY=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_CGROUPS=y
+# CONFIG_UTS_NS is not set
+# CONFIG_IPC_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_NET_NS is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_ARCH_MULTI_V7 is not set
+CONFIG_ARCH_MXS=y
+CONFIG_AEABI=y
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_BLK_DEV_INTEGRITY=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_IPV6 is not set
+CONFIG_CAN=m
+CONFIG_CAN_FLEXCAN=m
+# CONFIG_WIRELESS is not set
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_DATAFLASH=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SST25L=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_UBI=y
+# CONFIG_BLK_DEV is not set
+CONFIG_EEPROM_AT24=y
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_NETDEVICES=y
+CONFIG_ENC28J60=y
+CONFIG_ICPLUS_PHY=y
+CONFIG_MICREL_PHY=y
+CONFIG_REALTEK_PHY=y
+CONFIG_SMSC_PHY=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_SMSC95XX=y
+# CONFIG_WLAN is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_MXS_LRADC=y
+CONFIG_TOUCHSCREEN_TSC2007=m
+# CONFIG_SERIO is not set
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_MXS_AUART=y
+# CONFIG_HW_RANDOM is not set
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MXS=y
+CONFIG_SPI=y
+CONFIG_SPI_GPIO=m
+CONFIG_SPI_MXS=y
+CONFIG_GPIO_SYSFS=y
+# CONFIG_HWMON is not set
+CONFIG_WATCHDOG=y
+CONFIG_STMP3XXX_RTC_WATCHDOG=y
+CONFIG_MFD_MXS_LRADC=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_DRM=y
+CONFIG_DRM_PANEL_SEIKO_43WVF1G=y
+CONFIG_DRM_MXSFB=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_SOC=y
+CONFIG_SND_MXS_SOC=y
+CONFIG_SND_SOC_MXS_SGTL5000=y
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_ETH=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_MMC=y
+CONFIG_MMC_MXS=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_STMP=y
+CONFIG_DMADEVICES=y
+CONFIG_MXS_DMA=y
+CONFIG_IIO=y
+CONFIG_MXS_LRADC_ADC=y
+CONFIG_IIO_SYSFS_TRIGGER=y
+CONFIG_PWM=y
+CONFIG_PWM_MXS=y
+CONFIG_NVMEM_MXS_OCOTP=y
+CONFIG_EXT4_FS=y
+# CONFIG_DNOTIFY is not set
+CONFIG_FSCACHE=m
+CONFIG_FSCACHE_STATS=y
+CONFIG_CACHEFILES=m
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RUBIN=y
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_CRYPTO_DEV_MXS_DCP=y
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC7=m
+CONFIG_FONTS=y
+CONFIG_PRINTK_TIME=y
+CONFIG_DEBUG_INFO=y
+CONFIG_FRAME_WARN=2048
+CONFIG_UNUSED_SYMBOLS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_PROVE_LOCKING=y
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_STRICT_DEVMEM=y
+CONFIG_DEBUG_USER=y
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-fslc_4.20.bb b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc_4.20.bb
new file mode 100644
index 00000000..d7bf4b7a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-fslc_4.20.bb
@@ -0,0 +1,19 @@
+# Copyright (C) 2012-2019 O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "FSL Community BSP Linux mainline based kernel with backported features and fixes"
+DESCRIPTION = "Linux kernel based on mainline kernel used by FSL Community BSP in order to \
+provide support for some backported features and fixes, or because it was applied in linux-next \
+and takes some time to become part of a stable version, or because it is not applicable for \
+upstreaming."
+
+include linux-fslc.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+
+PV = "4.20+git${SRCPV}"
+
+SRCBRANCH = "4.20.x+fslc"
+SRCREV = "bf414f71d71348bf549d320fa6518b04738dbaa1"
+
+COMPATIBLE_MACHINE = "(mxs|mx5|mx6|vf|use-mainline-bsp)"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-imx-4.9.123/imx/defconfig b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-4.9.123/imx/defconfig
new file mode 100644
index 00000000..85410638
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-4.9.123/imx/defconfig
@@ -0,0 +1,466 @@
+CONFIG_KERNEL_LZO=y
+CONFIG_SYSVIPC=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_CGROUPS=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_ARCH_MXC=y
+CONFIG_SOC_IMX50=y
+CONFIG_SOC_IMX53=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_SOC_IMX6SL=y
+CONFIG_SOC_IMX6SX=y
+CONFIG_SOC_IMX6ULL=y
+CONFIG_SOC_IMX7D=y
+CONFIG_SOC_IMX6SLL=y
+CONFIG_SOC_IMX7ULP=y
+CONFIG_SOC_VF610=y
+# CONFIG_SWP_EMULATE is not set
+CONFIG_SMP=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_ARM_PSCI=y
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+CONFIG_CMA=y
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
+CONFIG_ARM_IMX6Q_CPUFREQ=y
+CONFIG_ARM_IMX7D_CPUFREQ=y
+CONFIG_ARM_IMX7ULP_CPUFREQ=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_BINFMT_MISC=m
+CONFIG_PM_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+CONFIG_VLAN_8021Q=y
+CONFIG_LLC2=y
+CONFIG_CAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_CAN_M_CAN=y
+CONFIG_BT=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+CONFIG_BT_HCIBTUSB=y
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIBCM203X=y
+CONFIG_BT_ATH3K=y
+CONFIG_CFG80211=y
+CONFIG_NL80211_TESTMODE=y
+CONFIG_CFG80211_INTERNAL_REGDB=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+CONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=0
+CONFIG_IMX_WEIM=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_PHYSMAP_OF=y
+CONFIG_MTD_DATAFLASH=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SST25L=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_NAND_MXC=y
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
+CONFIG_SPI_FSL_QUADSPI=y
+CONFIG_MTD_UBI=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_SENSORS_FXOS8700=y
+CONFIG_SENSORS_FXAS2100X=y
+CONFIG_EEPROM_AT24=y
+CONFIG_EEPROM_AT25=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+CONFIG_PATA_IMX=y
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_BROADCOM is not set
+CONFIG_CS89x0=y
+CONFIG_CS89x0_PLATFORM=y
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_SMC91X=y
+CONFIG_SMC911X=y
+CONFIG_SMSC911X=y
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_MICREL_PHY=y
+CONFIG_USB_KAWETH=y
+CONFIG_USB_PEGASUS=y
+CONFIG_USB_RTL8150=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_BCMDHD=y
+CONFIG_BCMDHD_SDIO=y
+CONFIG_BCMDHD_FW_PATH="/lib/firmware/bcm/ZP_BCM4339/fw_bcmdhd.bin"
+CONFIG_BCMDHD_NVRAM_PATH="/lib/firmware/bcm/ZP_BCM4339/bcmdhd.ZP.OOB.cal"
+CONFIG_HOSTAP=y
+# CONFIG_RTL_CARDS is not set
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_RPMSG=y
+CONFIG_KEYBOARD_PF1550_ONKEY=y
+CONFIG_KEYBOARD_IMX=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_ELAN_TS=y
+CONFIG_TOUCHSCREEN_MAX11801=y
+CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
+CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_TOUCHSCREEN_TSC2007=y
+CONFIG_TOUCHSCREEN_STMPE=y
+CONFIG_TOUCHSCREEN_FTS=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_MMA8450=y
+CONFIG_INPUT_MPL3115=y
+CONFIG_SENSOR_FXLS8471=y
+CONFIG_SENSOR_IMX_RPMSG=y
+CONFIG_INPUT_ISL29023=y
+CONFIG_SERIO_SERPORT=m
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_FSL_OTP=y
+CONFIG_HW_RANDOM_IMX_RNG=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+CONFIG_I2C_IMX=y
+CONFIG_I2C_IMX_LPI2C=y
+CONFIG_SPI=y
+CONFIG_SPI_GPIO=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_FSL_LPSPI=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_IMX_RPMSG=y
+CONFIG_GPIO_MAX732X=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_74X164=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_CHARGER_PF1550=y
+CONFIG_SABRESD_MAX8903=y
+CONFIG_SENSORS_MAX17135=y
+CONFIG_SENSORS_MAG3110=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_CPU_THERMAL=y
+CONFIG_IMX_THERMAL=y
+CONFIG_DEVICE_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_IMX7ULP_WDT=y
+CONFIG_MFD_DA9052_I2C=y
+CONFIG_MFD_MC13XXX_SPI=y
+CONFIG_MFD_MC13XXX_I2C=y
+CONFIG_MFD_PF1550=y
+CONFIG_MFD_MAX17135=y
+CONFIG_MFD_SI476X_CORE=y
+CONFIG_MFD_STMPE=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_DA9052=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_MAX17135=y
+CONFIG_REGULATOR_MC13783=y
+CONFIG_REGULATOR_MC13892=y
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_REGULATOR_PF1550=y
+CONFIG_REGULATOR_PF1550_RPMSG=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+CONFIG_MEDIA_RC_SUPPORT=y
+CONFIG_RC_DEVICES=y
+CONFIG_IR_GPIO_CIR=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_MXC_OUTPUT=y
+CONFIG_VIDEO_MXC_CAPTURE=m
+CONFIG_VIDEO_MXC_CSI_CAMERA=m
+CONFIG_MXC_VADC=m
+CONFIG_MXC_MIPI_CSI=m
+CONFIG_MXC_CAMERA_OV5640=m
+CONFIG_MXC_CAMERA_OV5640_V2=m
+CONFIG_MXC_CAMERA_OV5642=m
+CONFIG_MXC_CAMERA_OV5640_MIPI=m
+CONFIG_MXC_CAMERA_OV5640_MIPI_V2=m
+CONFIG_MXC_CAMERA_OV5647_MIPI=m
+CONFIG_MXC_TVIN_ADV7180=m
+CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
+CONFIG_VIDEO_MXC_IPU_OUTPUT=y
+CONFIG_VIDEO_MXC_PXP_V4L2=y
+CONFIG_SOC_CAMERA=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_CODA=y
+CONFIG_RADIO_SI476X=y
+CONFIG_SOC_CAMERA_OV2640=y
+CONFIG_DRM=y
+CONFIG_DRM_VIVANTE=y
+CONFIG_FB_MXS=y
+CONFIG_FB_MXC_SYNC_PANEL=y
+CONFIG_FB_MXC_OVERLAY=y
+CONFIG_FB_MXC_MIPI_DSI=y
+CONFIG_FB_MXC_MIPI_DSI_SAMSUNG=y
+CONFIG_FB_MXC_MIPI_DSI_NORTHWEST=y
+CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y
+CONFIG_FB_MXC_TRULY_PANEL_TFT3P5079E=y
+CONFIG_FB_MXC_TRULY_PANEL_TFT3P5581E=y
+CONFIG_FB_MXC_LDB=y
+CONFIG_FB_MXC_HDMI=y
+CONFIG_FB_MXS_SII902X=y
+CONFIG_FB_MXC_DCIC=m
+CONFIG_FB_MXC_ADV7535=y
+CONFIG_HANNSTAR_CABC=y
+CONFIG_FB_MXC_EINK_PANEL=y
+CONFIG_FB_MXC_EINK_V2_PANEL=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_L4F00242T03=y
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_BACKLIGHT_GPIO=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_EUKREA_TLV320=y
+CONFIG_SND_SOC_IMX_WM8960=y
+CONFIG_SND_SOC_IMX_SII902X=y
+CONFIG_SND_SOC_IMX_WM8958=y
+CONFIG_SND_SOC_IMX_CS42888=y
+CONFIG_SND_SOC_IMX_WM8962=y
+CONFIG_SND_SOC_IMX_RPMSG=y
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_SND_SOC_IMX_MQS=y
+CONFIG_SND_SOC_IMX_SPDIF=y
+CONFIG_SND_SOC_IMX_MC13783=y
+CONFIG_SND_SOC_IMX_SI476X=y
+CONFIG_SND_SOC_IMX_HDMI=y
+CONFIG_USB=y
+CONFIG_USB_OTG_WHITELIST=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_MXC=y
+CONFIG_USB_HCD_TEST_MODE=y
+CONFIG_USB_ACM=m
+CONFIG_USB_STORAGE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_TEST=m
+CONFIG_USB_EHSET_TEST_FIXTURE=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_CONFIGFS=y
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_FSL_UTP=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_G_NCM=m
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_V3_PRE=y
+CONFIG_MXC_MIPI_CSI2=y
+CONFIG_MXC_HDMI_CEC=y
+CONFIG_MXC_SIM=y
+CONFIG_MXC_SIMv2=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_MC13XXX=y
+CONFIG_RTC_DRV_MXC=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_RTC_DRV_IMX_RPMSG=y
+CONFIG_DMADEVICES=y
+CONFIG_FSL_EDMA=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+CONFIG_MXC_PXP_V2=y
+CONFIG_MXC_PXP_V3=y
+CONFIG_DMATEST=m
+CONFIG_STAGING=y
+CONFIG_STAGING_MEDIA=y
+CONFIG_ION=y
+CONFIG_ION_MXC=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_EXTCON_USB_GPIO=y
+CONFIG_IIO=y
+CONFIG_IMX7D_ADC=y
+CONFIG_VF610_ADC=y
+CONFIG_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_PWM_TPM=y
+CONFIG_TEE=y
+CONFIG_OPTEE=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=y
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_JFFS2_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_UTF8=y
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_FTRACE is not set
+CONFIG_SECURITYFS=y
+CONFIG_CRYPTO_USER=y
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_RMD128=y
+CONFIG_CRYPTO_RMD160=y
+CONFIG_CRYPTO_RMD256=y
+CONFIG_CRYPTO_RMD320=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
+CONFIG_CRYPTO_DEV_MXS_DCP=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-imx-4.9.123/mx8/defconfig b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-4.9.123/mx8/defconfig
new file mode 100644
index 00000000..f7df110b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-4.9.123/mx8/defconfig
@@ -0,0 +1,679 @@
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_AUDIT=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_MEMCG=y
+CONFIG_MEMCG_SWAP=y
+CONFIG_BLK_CGROUP=y
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_HUGETLB=y
+CONFIG_CPUSETS=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+CONFIG_NAMESPACES=y
+CONFIG_USER_NS=y
+CONFIG_SCHED_AUTOGROUP=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+CONFIG_KALLSYMS_ALL=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_PROFILING=y
+CONFIG_JUMP_LABEL=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_IOSCHED_DEADLINE is not set
+CONFIG_ARCH_SUNXI=y
+CONFIG_ARCH_ALPINE=y
+CONFIG_ARCH_BCM_IPROC=y
+CONFIG_ARCH_BERLIN=y
+CONFIG_ARCH_EXYNOS=y
+CONFIG_ARCH_LAYERSCAPE=y
+CONFIG_ARCH_LG1K=y
+CONFIG_ARCH_HISI=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_ARCH_MESON=y
+CONFIG_ARCH_MVEBU=y
+CONFIG_ARCH_QCOM=y
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_ARCH_SEATTLE=y
+CONFIG_ARCH_RENESAS=y
+CONFIG_ARCH_R8A7795=y
+CONFIG_ARCH_R8A7796=y
+CONFIG_ARCH_STRATIX10=y
+CONFIG_ARCH_TEGRA=y
+CONFIG_ARCH_SPRD=y
+CONFIG_ARCH_THUNDER=y
+CONFIG_ARCH_UNIPHIER=y
+CONFIG_ARCH_VEXPRESS=y
+CONFIG_ARCH_VULCAN=y
+CONFIG_ARCH_XGENE=y
+CONFIG_ARCH_ZX=y
+CONFIG_ARCH_ZYNQMP=y
+CONFIG_ARCH_FSL_IMX8QM=y
+CONFIG_ARCH_FSL_IMX8QP=y
+CONFIG_ARCH_FSL_IMX8QXP=y
+CONFIG_ARCH_FSL_IMX8MQ=y
+CONFIG_ARCH_FSL_IMX8MM=y
+CONFIG_PCI=y
+CONFIG_PCI_IOV=y
+CONFIG_PCI_AARDVARK=y
+CONFIG_PCI_IMX6=y
+CONFIG_PCIE_RCAR=y
+CONFIG_PCI_HOST_GENERIC=y
+CONFIG_PCI_XGENE=y
+CONFIG_PCI_HISI=y
+CONFIG_ARM64_VA_BITS_48=y
+CONFIG_SCHED_MC=y
+CONFIG_PREEMPT=y
+CONFIG_KSM=y
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_CMA=y
+CONFIG_SECCOMP=y
+CONFIG_KEXEC=y
+CONFIG_XEN=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_COMPAT=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_ARM_CPUIDLE=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
+CONFIG_CPUFREQ_DT=y
+CONFIG_ARM_BIG_LITTLE_CPUFREQ=y
+CONFIG_ARM_IMX8_CPUFREQ=y
+CONFIG_ARM_IMX8MQ_CPUFREQ=y
+CONFIG_ARM_SCPI_CPUFREQ=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IPV6=m
+CONFIG_NETFILTER=y
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_NAT=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+CONFIG_BRIDGE=m
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_VLAN_8021Q_MVRP=y
+CONFIG_LLC2=y
+CONFIG_BPF_JIT=y
+CONFIG_CAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_BT=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+CONFIG_BT_LEDS=y
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIUART_BCM=y
+CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIVHCI=y
+CONFIG_CFG80211=y
+CONFIG_NL80211_TESTMODE=y
+CONFIG_CFG80211_INTERNAL_REGDB=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+CONFIG_MAC80211_LEDS=y
+CONFIG_NET_9P=y
+CONFIG_NET_9P_VIRTIO=y
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=320
+CONFIG_ARM_CCI400_PMU=y
+CONFIG_ARM_CCI5xx_PMU=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_RAM=y
+CONFIG_MTD_DATAFLASH=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SLRAM=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
+CONFIG_SPI_FSL_QUADSPI=y
+CONFIG_SPI_FSL_FLEXSPI=y
+CONFIG_MTD_UBI=y
+CONFIG_OF_OVERLAY=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_NBD=m
+CONFIG_XEN_BLKDEV_BACKEND=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_SENSORS_FXOS8700=y
+CONFIG_SENSORS_FXAS2100X=y
+CONFIG_SRAM=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_HISI_SAS=y
+CONFIG_ATA=y
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+CONFIG_AHCI_CEVA=y
+CONFIG_AHCI_MVEBU=y
+CONFIG_AHCI_XGENE=y
+CONFIG_AHCI_QORIQ=y
+CONFIG_SATA_SIL24=y
+CONFIG_SATA_RCAR=y
+CONFIG_PATA_PLATFORM=y
+CONFIG_PATA_OF_PLATFORM=y
+CONFIG_NETDEVICES=y
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+CONFIG_TUN=y
+CONFIG_VETH=m
+CONFIG_VIRTIO_NET=y
+CONFIG_AMD_XGBE=y
+CONFIG_NET_XGENE=y
+CONFIG_MACB=y
+CONFIG_HNS_DSAF=y
+CONFIG_HNS_ENET=y
+CONFIG_E1000E=y
+CONFIG_IGB=y
+CONFIG_IGBVF=y
+CONFIG_SKY2=y
+CONFIG_RAVB=y
+CONFIG_SMC91X=y
+CONFIG_SMSC911X=y
+CONFIG_STMMAC_ETH=m
+CONFIG_AT803X_PHY=y
+CONFIG_MICREL_PHY=y
+CONFIG_NXP_TJA110X_PHY=y
+CONFIG_REALTEK_PHY=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SR9800=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_WLAN_VENDOR_ATH is not set
+CONFIG_BCMDHD_1363=y
+CONFIG_BCMDHD_PCIE=y
+CONFIG_HOSTAP=y
+CONFIG_RTL_CARDS=m
+# CONFIG_WLAN_VENDOR_TI is not set
+CONFIG_XEN_NETDEV_BACKEND=m
+CONFIG_IVSHMEM_NET=y
+CONFIG_INPUT_POLLDEV=y
+CONFIG_INPUT_EVDEV=y
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_IMX_SC_PWRKEY=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_I2C=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PM8941_PWRKEY=y
+CONFIG_INPUT_HISI_POWERKEY=y
+CONFIG_INPUT_MPL3115=y
+CONFIG_INPUT_ISL29023=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_AMBAKMI=y
+CONFIG_LEGACY_PTY_COUNT=16
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_8250_MT6577=y
+CONFIG_SERIAL_8250_UNIPHIER=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_MESON=y
+CONFIG_SERIAL_MESON_CONSOLE=y
+CONFIG_SERIAL_SAMSUNG=y
+CONFIG_SERIAL_SAMSUNG_CONSOLE=y
+CONFIG_SERIAL_TEGRA=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_SH_SCI=y
+CONFIG_SERIAL_SH_SCI_NR_UARTS=11
+CONFIG_SERIAL_SH_SCI_CONSOLE=y
+CONFIG_SERIAL_MSM=y
+CONFIG_SERIAL_MSM_CONSOLE=y
+CONFIG_SERIAL_XILINX_PS_UART=y
+CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_SERIAL_MVEBU_UART=y
+CONFIG_VIRTIO_CONSOLE=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX_PCA954x=y
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_I2C_IMX=y
+CONFIG_I2C_IMX_LPI2C=y
+CONFIG_I2C_MESON=y
+CONFIG_I2C_MV64XXX=y
+CONFIG_I2C_QUP=y
+CONFIG_I2C_TEGRA=y
+CONFIG_I2C_UNIPHIER_F=y
+CONFIG_I2C_RCAR=y
+CONFIG_I2C_CROS_EC_TUNNEL=y
+CONFIG_SPI=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_FSL_LPSPI=y
+CONFIG_SPI_MESON_SPIFC=m
+CONFIG_SPI_ORION=y
+CONFIG_SPI_PL022=y
+CONFIG_SPI_QUP=y
+CONFIG_SPI_S3C64XX=y
+CONFIG_SPI_SPIDEV=m
+CONFIG_SPMI=y
+CONFIG_PINCTRL_SINGLE=y
+CONFIG_PINCTRL_MAX77620=y
+CONFIG_PINCTRL_MSM8916=y
+CONFIG_PINCTRL_MSM8996=y
+CONFIG_PINCTRL_QDF2XXX=y
+CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_DWAPB=y
+CONFIG_GPIO_PL061=y
+CONFIG_GPIO_RCAR=y
+CONFIG_GPIO_XGENE=y
+CONFIG_GPIO_MAX732X=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_GPIO_MAX77620=y
+CONFIG_POWER_AVS=y
+CONFIG_ROCKCHIP_IODOMAIN=y
+CONFIG_POWER_RESET_MSM=y
+CONFIG_POWER_RESET_XGENE=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_BATTERY_BQ27XXX=y
+CONFIG_SENSORS_ARM_SCPI=y
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_INA2XX=m
+# CONFIG_MXC_MMA8451 is not set
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
+CONFIG_CPU_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_IMX8M_THERMAL=y
+CONFIG_IMX8MM_THERMAL=y
+CONFIG_IMX_SC_THERMAL=y
+CONFIG_DEVICE_THERMAL=y
+CONFIG_EXYNOS_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_S3C2410_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_IMX8_WDT=y
+CONFIG_MESON_GXBB_WATCHDOG=m
+CONFIG_MESON_WATCHDOG=m
+CONFIG_RENESAS_WDT=y
+CONFIG_MFD_CROS_EC=y
+CONFIG_MFD_CROS_EC_I2C=y
+CONFIG_MFD_HI655X_PMIC=y
+CONFIG_MFD_MAX77620=y
+CONFIG_MFD_SPMI_PMIC=y
+CONFIG_MFD_SEC_CORE=y
+CONFIG_MFD_BD71837=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_HI655X=y
+CONFIG_REGULATOR_MAX77620=y
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_REGULATOR_PWM=y
+CONFIG_REGULATOR_QCOM_SMD_RPM=y
+CONFIG_REGULATOR_QCOM_SPMI=y
+CONFIG_REGULATOR_S2MPS11=y
+CONFIG_REGULATOR_BD71837=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_CONTROLLER=y
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_MXC_CAPTURE=y
+CONFIG_VIDEO_MX8_CAPTURE=y
+CONFIG_GMSL_MAX9286=y
+CONFIG_VIDEO_MXC_CSI_CAMERA=y
+CONFIG_MXC_MIPI_CSI=y
+CONFIG_MXC_CAMERA_OV5640_MIPI_V2=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_IMX_DPU_CORE=y
+CONFIG_IMX_DCSS_CORE=y
+CONFIG_IMX_LCDIF_CORE=y
+CONFIG_DRM=y
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_VIVANTE=m
+CONFIG_DRM_MSM=m
+CONFIG_DRM_TEGRA=m
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_DRM_PANEL_RAYDIUM_RM67191=y
+CONFIG_DRM_I2C_ADV7511=y
+CONFIG_DRM_ITE_IT6263=y
+CONFIG_DRM_IMX_PARALLEL_DISPLAY=y
+CONFIG_DRM_IMX_TVE=y
+CONFIG_DRM_IMX_LDB=y
+CONFIG_DRM_IMX_HDMI=y
+CONFIG_DRM_IMX_NWL_DSI=y
+CONFIG_DRM_IMX_SEC_DSIM=y
+CONFIG_DRM_IMX_HDP=y
+CONFIG_IMX_HDP_CEC=y
+CONFIG_DRM_HISI_KIRIN=m
+CONFIG_DRM_MXSFB=y
+CONFIG_FB_IMX64=y
+CONFIG_FB_IMX64_DEBUG=y
+CONFIG_FB_ARMCLCD=y
+CONFIG_FB_MXC_DISP_FRAMEWORK=y
+CONFIG_BACKLIGHT_GENERIC=m
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_BACKLIGHT_LP855X=m
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_SOC=y
+CONFIG_SND_SOC_FSL_ACM=y
+CONFIG_SND_SOC_FSL_DSP=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_IMX_AK4458=y
+CONFIG_SND_SOC_IMX_AK5558=y
+CONFIG_SND_SOC_IMX_AK4497=y
+CONFIG_SND_SOC_IMX_WM8960=y
+CONFIG_SND_SOC_IMX_WM8524=y
+CONFIG_SND_SOC_IMX_CS42888=y
+CONFIG_SND_SOC_IMX_WM8962=y
+CONFIG_SND_SOC_IMX_MICFIL=y
+CONFIG_SND_SOC_IMX_RPMSG=y
+CONFIG_SND_SOC_IMX_MQS=y
+CONFIG_SND_SOC_IMX_SPDIF=y
+CONFIG_SND_SOC_IMX_AMIX=y
+CONFIG_SND_SOC_IMX_CDNHDMI=y
+CONFIG_SND_SOC_SAMSUNG=y
+CONFIG_SND_SOC_RCAR=y
+CONFIG_SND_SOC_AK4613=y
+CONFIG_HID_A4TECH=y
+CONFIG_HID_APPLE=y
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+CONFIG_HID_CYPRESS=y
+CONFIG_HID_EZKEY=y
+CONFIG_HID_KENSINGTON=y
+CONFIG_HID_LOGITECH=y
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+CONFIG_HID_MULTITOUCH=y
+CONFIG_USB=y
+CONFIG_USB_OTG=y
+CONFIG_USB_OTG_WHITELIST=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_TEGRA=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_MSM=y
+CONFIG_USB_EHCI_EXYNOS=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_EXYNOS=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
+CONFIG_USB_HCD_TEST_MODE=y
+CONFIG_USB_RENESAS_USBHS=m
+CONFIG_USB_ACM=m
+CONFIG_USB_STORAGE=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC2=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_ISP1760=y
+CONFIG_USB_ISP1760_HOST_ROLE=y
+CONFIG_USB_CDNS3=y
+CONFIG_USB_CDNS3_GADGET=y
+CONFIG_USB_CDNS3_HOST=y
+CONFIG_USB_TEST=m
+CONFIG_USB_EHSET_TEST_FIXTURE=y
+CONFIG_USB_HSIC_USB3503=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_GPIO_VBUS=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_ULPI=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_RENESAS_USBHS_UDC=m
+CONFIG_USB_CONFIGFS=y
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_FSL_UTP=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_UAC1=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_AUDIO=m
+CONFIG_GADGET_UAC1=y
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_EEM=y
+CONFIG_USB_G_NCM=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_CDC_COMPOSITE=m
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK_MINORS=32
+CONFIG_MMC_ARMMMCI=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_ACPI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+# CONFIG_MMC_SDHCI_IPROC is not set
+CONFIG_MMC_SPI=y
+CONFIG_MMC_SDHI=y
+CONFIG_MXC_SIM=y
+CONFIG_MXC_EMVSIM=y
+CONFIG_MXC_MLB150=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_PWM=y
+CONFIG_LEDS_SYSCON=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_MAX77686=y
+CONFIG_RTC_DRV_S5M=y
+CONFIG_RTC_DRV_DS3232=y
+CONFIG_RTC_DRV_EFI=y
+CONFIG_RTC_DRV_S3C=y
+CONFIG_RTC_DRV_PL031=y
+CONFIG_RTC_DRV_TEGRA=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_RTC_DRV_IMX_SC=y
+CONFIG_RTC_DRV_XGENE=y
+CONFIG_DMADEVICES=y
+CONFIG_FSL_EDMA_V3=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+CONFIG_PL330_DMA=y
+CONFIG_TEGRA20_APB_DMA=y
+CONFIG_QCOM_BAM_DMA=y
+CONFIG_QCOM_HIDMA_MGMT=y
+CONFIG_QCOM_HIDMA=y
+CONFIG_RCAR_DMAC=y
+CONFIG_UIO=y
+CONFIG_UIO_PCI_GENERIC=y
+CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_BALLOON=y
+CONFIG_VIRTIO_MMIO=y
+CONFIG_XEN_GNTDEV=y
+CONFIG_XEN_GRANT_DEV_ALLOC=y
+CONFIG_STAGING=y
+CONFIG_STAGING_MEDIA=y
+CONFIG_MEDIA_CEC=y
+CONFIG_ION=y
+CONFIG_ION_MXC=y
+CONFIG_TYPEC_TCPM=y
+CONFIG_TYPEC_TCPCI=y
+CONFIG_COMMON_CLK_SCPI=y
+CONFIG_COMMON_CLK_CS2000_CP=y
+CONFIG_COMMON_CLK_S2MPS11=y
+CONFIG_CLK_QORIQ=y
+CONFIG_COMMON_CLK_QCOM=y
+CONFIG_MSM_GCC_8916=y
+CONFIG_MSM_MMCC_8996=y
+CONFIG_HWSPINLOCK_QCOM=y
+CONFIG_CLKSRC_IMX_SYS_CNT=y
+CONFIG_MAILBOX=y
+CONFIG_ARM_MHU=y
+CONFIG_HI6220_MBOX=y
+CONFIG_ARM_SMMU=y
+CONFIG_ARCH_MXC_ARM64=y
+CONFIG_QCOM_SMEM=y
+CONFIG_QCOM_SMD=y
+CONFIG_QCOM_SMD_RPM=y
+CONFIG_ARCH_TEGRA_132_SOC=y
+CONFIG_ARCH_TEGRA_210_SOC=y
+CONFIG_EXTCON_PTN5150=y
+CONFIG_IIO=y
+CONFIG_EXYNOS_ADC=y
+CONFIG_IMX8QXP_ADC=y
+CONFIG_PWM=y
+CONFIG_PWM_FSL_FTM=y
+CONFIG_PWM_IMX=y
+CONFIG_PWM_SAMSUNG=y
+CONFIG_PWM_TEGRA=m
+CONFIG_PHY_HI6220_USB=y
+CONFIG_PHY_XGENE=y
+CONFIG_PHY_TEGRA_XUSB=y
+CONFIG_IMX8_DDR_PERF=y
+CONFIG_NVMEM=y
+CONFIG_NVMEM_IMX_OCOTP=y
+CONFIG_NVMEM_IMX_SCU_OCOTP=y
+CONFIG_TEE=y
+CONFIG_OPTEE=y
+CONFIG_ARM_SCPI_PROTOCOL=y
+CONFIG_ACPI=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
+CONFIG_QUOTA=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_OVERLAY_FS=m
+CONFIG_VFAT_FS=y
+CONFIG_HUGETLBFS=y
+CONFIG_EFIVAR_FS=y
+CONFIG_JFFS2_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_SQUASHFS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
+CONFIG_ROOT_NFS=y
+CONFIG_9P_FS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_KVM=y
+CONFIG_PRINTK_TIME=y
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_LOCKUP_DETECTOR=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_FTRACE is not set
+CONFIG_MEMTEST=y
+CONFIG_SECURITY=y
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_CHACHA20POLY1305=y
+CONFIG_CRYPTO_ECHAINIV=y
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_RMD128=y
+CONFIG_CRYPTO_RMD160=y
+CONFIG_CRYPTO_RMD256=y
+CONFIG_CRYPTO_RMD320=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_SHA3=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_CAST5=y
+CONFIG_CRYPTO_CAST6=y
+CONFIG_CRYPTO_SERPENT=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_ANSI_CPRNG=y
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
+CONFIG_ARM64_CRYPTO=y
+CONFIG_CRYPTO_SHA1_ARM64_CE=y
+CONFIG_CRYPTO_SHA2_ARM64_CE=y
+CONFIG_CRYPTO_GHASH_ARM64_CE=y
+CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
+CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
+CONFIG_CRYPTO_CRC32_ARM64=y
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-imx-headers-4.9.123/0001-uapi-Install-custom-headers.patch b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-headers-4.9.123/0001-uapi-Install-custom-headers.patch
new file mode 100644
index 00000000..fd842bf1
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-headers-4.9.123/0001-uapi-Install-custom-headers.patch
@@ -0,0 +1,40 @@
+From 33c85073a35e697e080583ca8edb31400b45de60 Mon Sep 17 00:00:00 2001
+From: Tom Hochstein <tom.hochstein@nxp.com>
+Date: Wed, 3 Oct 2018 18:02:43 -0500
+Subject: [PATCH] uapi: Install custom headers
+
+Upstream-Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
+---
+ include/uapi/linux/Kbuild | 2 ++
+ 1 file changed, 2 insertions(+)
+
+Index: git/include/uapi/linux/Kbuild
+===================================================================
+--- git.orig/include/uapi/linux/Kbuild
++++ git/include/uapi/linux/Kbuild
+@@ -104,6 +104,7 @@ header-y += dlm_device.h
+ header-y += dlm.h
+ header-y += dlm_netlink.h
+ header-y += dlm_plock.h
++header-y += dma-buf.h
+ header-y += dm-ioctl.h
+ header-y += dm-log-userspace.h
+ header-y += dn.h
+@@ -144,6 +145,7 @@ header-y += gigaset_dev.h
+ header-y += gpio.h
+ header-y += gsmmux.h
+ header-y += gtp.h
++header-y += hantrodec.h
+ header-y += hdlcdrv.h
+ header-y += hdlc.h
+ header-y += hdreg.h
+@@ -152,6 +154,7 @@ header-y += hid.h
+ header-y += hidraw.h
+ header-y += hpet.h
+ header-y += hsr_netlink.h
++header-y += hx280enc.h
+ header-y += hyperv.h
+ header-y += hysdn_if.h
+ header-y += i2c-dev.h
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-imx-headers_4.9.123.bb b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-headers_4.9.123.bb
new file mode 100644
index 00000000..44bce42a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-headers_4.9.123.bb
@@ -0,0 +1,59 @@
+# Copyright 2017-2018 NXP
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Installs i.MX-specific kernel headers"
+DESCRIPTION = "Installs i.MX-specific kernel headers to userspace. \
+New headers are installed in ${includedir}/imx."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+SRCBRANCH = "imx_4.9.123_imx8mm_ga"
+LOCALVERSION = "-imx"
+SRC_URI = "git://source.codeaurora.org/external/imx/linux-imx.git;protocol=https;branch=${SRCBRANCH} \
+ file://0001-uapi-Install-custom-headers.patch"
+SRCREV = "6a71cbc089755afd6a86c005c22a1af6eab24a70"
+
+S = "${WORKDIR}/git"
+
+do_compile[noexec] = "1"
+
+IMX_UAPI_HEADERS = " \
+ dma-buf.h \
+ hantrodec.h \
+ hx280enc.h \
+ ion.h \
+ ipu.h \
+ isl29023.h \
+ mxc_asrc.h \
+ mxc_dcic.h \
+ mxc_mlb.h \
+ mxc_sim_interface.h \
+ mxc_v4l2.h \
+ mxcfb.h \
+ pxp_device.h \
+ pxp_dma.h \
+ version.h \
+ videodev2.h \
+"
+
+do_install() {
+ # We install all headers inside of B so we can copy only the
+ # whitelisted ones, and there is no risk of a new header to be
+ # installed by mistake.
+ oe_runmake headers_install INSTALL_HDR_PATH=${B}${exec_prefix}
+
+ # FIXME: The ion.h is still on staging so "promote" it for now
+ cp ${S}/drivers/staging/android/uapi/ion.h ${B}${includedir}/linux
+
+ # Install whitelisted headers only
+ for h in ${IMX_UAPI_HEADERS}; do
+ install -D -m 0644 ${B}${includedir}/linux/$h \
+ ${D}${includedir}/imx/linux/$h
+ done
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+COMPATIBLE_HOST_imx = ".*"
+COMPATIBLE_HOST ?= "(none)"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-imx-mfgtool-4.9.123/defconfig b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-mfgtool-4.9.123/defconfig
new file mode 100644
index 00000000..85410638
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-mfgtool-4.9.123/defconfig
@@ -0,0 +1,466 @@
+CONFIG_KERNEL_LZO=y
+CONFIG_SYSVIPC=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_CGROUPS=y
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_ARCH_MXC=y
+CONFIG_SOC_IMX50=y
+CONFIG_SOC_IMX53=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_SOC_IMX6SL=y
+CONFIG_SOC_IMX6SX=y
+CONFIG_SOC_IMX6ULL=y
+CONFIG_SOC_IMX7D=y
+CONFIG_SOC_IMX6SLL=y
+CONFIG_SOC_IMX7ULP=y
+CONFIG_SOC_VF610=y
+# CONFIG_SWP_EMULATE is not set
+CONFIG_SMP=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_ARM_PSCI=y
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+CONFIG_CMA=y
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
+CONFIG_ARM_IMX6Q_CPUFREQ=y
+CONFIG_ARM_IMX7D_CPUFREQ=y
+CONFIG_ARM_IMX7ULP_CPUFREQ=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_BINFMT_MISC=m
+CONFIG_PM_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+CONFIG_VLAN_8021Q=y
+CONFIG_LLC2=y
+CONFIG_CAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_CAN_M_CAN=y
+CONFIG_BT=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+CONFIG_BT_HCIBTUSB=y
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIBCM203X=y
+CONFIG_BT_ATH3K=y
+CONFIG_CFG80211=y
+CONFIG_NL80211_TESTMODE=y
+CONFIG_CFG80211_INTERNAL_REGDB=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+CONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=0
+CONFIG_IMX_WEIM=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_CFI_INTELEXT=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_PHYSMAP_OF=y
+CONFIG_MTD_DATAFLASH=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SST25L=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_NAND_MXC=y
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
+CONFIG_SPI_FSL_QUADSPI=y
+CONFIG_MTD_UBI=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_SENSORS_FXOS8700=y
+CONFIG_SENSORS_FXAS2100X=y
+CONFIG_EEPROM_AT24=y
+CONFIG_EEPROM_AT25=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+CONFIG_PATA_IMX=y
+CONFIG_NETDEVICES=y
+# CONFIG_NET_VENDOR_BROADCOM is not set
+CONFIG_CS89x0=y
+CONFIG_CS89x0_PLATFORM=y
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+CONFIG_SMC91X=y
+CONFIG_SMC911X=y
+CONFIG_SMSC911X=y
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_MICREL_PHY=y
+CONFIG_USB_KAWETH=y
+CONFIG_USB_PEGASUS=y
+CONFIG_USB_RTL8150=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_BCMDHD=y
+CONFIG_BCMDHD_SDIO=y
+CONFIG_BCMDHD_FW_PATH="/lib/firmware/bcm/ZP_BCM4339/fw_bcmdhd.bin"
+CONFIG_BCMDHD_NVRAM_PATH="/lib/firmware/bcm/ZP_BCM4339/bcmdhd.ZP.OOB.cal"
+CONFIG_HOSTAP=y
+# CONFIG_RTL_CARDS is not set
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=m
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_RPMSG=y
+CONFIG_KEYBOARD_PF1550_ONKEY=y
+CONFIG_KEYBOARD_IMX=y
+CONFIG_MOUSE_PS2=m
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_ELAN_TS=y
+CONFIG_TOUCHSCREEN_MAX11801=y
+CONFIG_TOUCHSCREEN_IMX6UL_TSC=y
+CONFIG_TOUCHSCREEN_MC13783=y
+CONFIG_TOUCHSCREEN_TSC2007=y
+CONFIG_TOUCHSCREEN_STMPE=y
+CONFIG_TOUCHSCREEN_FTS=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_MMA8450=y
+CONFIG_INPUT_MPL3115=y
+CONFIG_SENSOR_FXLS8471=y
+CONFIG_SENSOR_IMX_RPMSG=y
+CONFIG_INPUT_ISL29023=y
+CONFIG_SERIO_SERPORT=m
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_FSL_OTP=y
+CONFIG_HW_RANDOM_IMX_RNG=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+CONFIG_I2C_IMX=y
+CONFIG_I2C_IMX_LPI2C=y
+CONFIG_SPI=y
+CONFIG_SPI_GPIO=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_FSL_LPSPI=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_IMX_RPMSG=y
+CONFIG_GPIO_MAX732X=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_74X164=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_CHARGER_PF1550=y
+CONFIG_SABRESD_MAX8903=y
+CONFIG_SENSORS_MAX17135=y
+CONFIG_SENSORS_MAG3110=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_CPU_THERMAL=y
+CONFIG_IMX_THERMAL=y
+CONFIG_DEVICE_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_IMX7ULP_WDT=y
+CONFIG_MFD_DA9052_I2C=y
+CONFIG_MFD_MC13XXX_SPI=y
+CONFIG_MFD_MC13XXX_I2C=y
+CONFIG_MFD_PF1550=y
+CONFIG_MFD_MAX17135=y
+CONFIG_MFD_SI476X_CORE=y
+CONFIG_MFD_STMPE=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_DA9052=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_MAX17135=y
+CONFIG_REGULATOR_MC13783=y
+CONFIG_REGULATOR_MC13892=y
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_REGULATOR_PF1550=y
+CONFIG_REGULATOR_PF1550_RPMSG=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+CONFIG_MEDIA_RC_SUPPORT=y
+CONFIG_RC_DEVICES=y
+CONFIG_IR_GPIO_CIR=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_MXC_OUTPUT=y
+CONFIG_VIDEO_MXC_CAPTURE=m
+CONFIG_VIDEO_MXC_CSI_CAMERA=m
+CONFIG_MXC_VADC=m
+CONFIG_MXC_MIPI_CSI=m
+CONFIG_MXC_CAMERA_OV5640=m
+CONFIG_MXC_CAMERA_OV5640_V2=m
+CONFIG_MXC_CAMERA_OV5642=m
+CONFIG_MXC_CAMERA_OV5640_MIPI=m
+CONFIG_MXC_CAMERA_OV5640_MIPI_V2=m
+CONFIG_MXC_CAMERA_OV5647_MIPI=m
+CONFIG_MXC_TVIN_ADV7180=m
+CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
+CONFIG_VIDEO_MXC_IPU_OUTPUT=y
+CONFIG_VIDEO_MXC_PXP_V4L2=y
+CONFIG_SOC_CAMERA=y
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_VIDEO_CODA=y
+CONFIG_RADIO_SI476X=y
+CONFIG_SOC_CAMERA_OV2640=y
+CONFIG_DRM=y
+CONFIG_DRM_VIVANTE=y
+CONFIG_FB_MXS=y
+CONFIG_FB_MXC_SYNC_PANEL=y
+CONFIG_FB_MXC_OVERLAY=y
+CONFIG_FB_MXC_MIPI_DSI=y
+CONFIG_FB_MXC_MIPI_DSI_SAMSUNG=y
+CONFIG_FB_MXC_MIPI_DSI_NORTHWEST=y
+CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y
+CONFIG_FB_MXC_TRULY_PANEL_TFT3P5079E=y
+CONFIG_FB_MXC_TRULY_PANEL_TFT3P5581E=y
+CONFIG_FB_MXC_LDB=y
+CONFIG_FB_MXC_HDMI=y
+CONFIG_FB_MXS_SII902X=y
+CONFIG_FB_MXC_DCIC=m
+CONFIG_FB_MXC_ADV7535=y
+CONFIG_HANNSTAR_CABC=y
+CONFIG_FB_MXC_EINK_PANEL=y
+CONFIG_FB_MXC_EINK_V2_PANEL=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_L4F00242T03=y
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_BACKLIGHT_GPIO=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_EUKREA_TLV320=y
+CONFIG_SND_SOC_IMX_WM8960=y
+CONFIG_SND_SOC_IMX_SII902X=y
+CONFIG_SND_SOC_IMX_WM8958=y
+CONFIG_SND_SOC_IMX_CS42888=y
+CONFIG_SND_SOC_IMX_WM8962=y
+CONFIG_SND_SOC_IMX_RPMSG=y
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_SND_SOC_IMX_MQS=y
+CONFIG_SND_SOC_IMX_SPDIF=y
+CONFIG_SND_SOC_IMX_MC13783=y
+CONFIG_SND_SOC_IMX_SI476X=y
+CONFIG_SND_SOC_IMX_HDMI=y
+CONFIG_USB=y
+CONFIG_USB_OTG_WHITELIST=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_MXC=y
+CONFIG_USB_HCD_TEST_MODE=y
+CONFIG_USB_ACM=m
+CONFIG_USB_STORAGE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_TEST=m
+CONFIG_USB_EHSET_TEST_FIXTURE=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_CONFIGFS=y
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_FSL_UTP=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_G_NCM=m
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_V3_PRE=y
+CONFIG_MXC_MIPI_CSI2=y
+CONFIG_MXC_HDMI_CEC=y
+CONFIG_MXC_SIM=y
+CONFIG_MXC_SIMv2=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_MC13XXX=y
+CONFIG_RTC_DRV_MXC=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_RTC_DRV_IMX_RPMSG=y
+CONFIG_DMADEVICES=y
+CONFIG_FSL_EDMA=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+CONFIG_MXC_PXP_V2=y
+CONFIG_MXC_PXP_V3=y
+CONFIG_DMATEST=m
+CONFIG_STAGING=y
+CONFIG_STAGING_MEDIA=y
+CONFIG_ION=y
+CONFIG_ION_MXC=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_EXTCON_USB_GPIO=y
+CONFIG_IIO=y
+CONFIG_IMX7D_ADC=y
+CONFIG_VF610_ADC=y
+CONFIG_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_PWM_TPM=y
+CONFIG_TEE=y
+CONFIG_OPTEE=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=y
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_JFFS2_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_UTF8=y
+CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_FTRACE is not set
+CONFIG_SECURITYFS=y
+CONFIG_CRYPTO_USER=y
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_RMD128=y
+CONFIG_CRYPTO_RMD160=y
+CONFIG_CRYPTO_RMD256=y
+CONFIG_CRYPTO_RMD320=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_TWOFISH=y
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y
+CONFIG_CRYPTO_DEV_MXS_DCP=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC7=m
+CONFIG_LIBCRC32C=m
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-imx-mfgtool_4.9.123.bb b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-mfgtool_4.9.123.bb
new file mode 100644
index 00000000..f7ead721
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-imx-mfgtool_4.9.123.bb
@@ -0,0 +1,13 @@
+# Copyright (C) 2014-2018 O.S. Systems Software LTDA.
+# Copyright (C) 2014-2016 Freescale Semiconductor
+
+SUMMARY = "Produces a Manufacturing Tool compatible Linux Kernel"
+DESCRIPTION = "Linux Kernel provided and supported by Freescale that produces a \
+Manufacturing Tool compatible Linux Kernel to be used in updater environment"
+
+require linux-imx_${PV}.bb
+require linux-mfgtool.inc
+
+KERNEL_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
+MODULE_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
+do_package[vardepsexclude] = "DATETIME"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-imx.inc b/bsp/meta-freescale/recipes-kernel/linux/linux-imx.inc
new file mode 100644
index 00000000..9a8a035f
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-imx.inc
@@ -0,0 +1,22 @@
+# Copyright (C) 2012, 2015 O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+inherit kernel fsl-kernel-localversion fsl-vivante-kernel-driver-handler
+
+# Put a local version until we have a true SRCREV to point to
+LOCALVERSION ?= ""
+SCMVERSION ?= "y"
+SRCBRANCH ?= ""
+
+SRC_URI = "git://source.codeaurora.org/external/imx/linux-imx;protocol=https;branch=${SRCBRANCH} \
+ file://defconfig \
+"
+
+S = "${WORKDIR}/git"
+
+# We need to pass it as param since kernel might support more then one
+# machine, with different entry points
+KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-imx_4.9.123.bb b/bsp/meta-freescale/recipes-kernel/linux/linux-imx_4.9.123.bb
new file mode 100644
index 00000000..bc47f2db
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-imx_4.9.123.bb
@@ -0,0 +1,20 @@
+# Copyright (C) 2013-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Copyright 2018 (C) O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Linux Kernel provided and supported by NXP"
+DESCRIPTION = "Linux Kernel provided and supported by NXP with focus on \
+i.MX Family Reference Boards. It includes support for many IPs such as GPU, VPU and IPU."
+
+require recipes-kernel/linux/linux-imx.inc
+
+DEPENDS += "lzop-native bc-native"
+
+SRCBRANCH = "imx_4.9.123_imx8mm_ga"
+LOCALVERSION = "-imx"
+SRCREV = "6a71cbc089755afd6a86c005c22a1af6eab24a70"
+
+DEFAULT_PREFERENCE = "1"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-mfgtool.inc b/bsp/meta-freescale/recipes-kernel/linux/linux-mfgtool.inc
new file mode 100644
index 00000000..7ff370e4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-mfgtool.inc
@@ -0,0 +1,7 @@
+# Produces a Manufacturing Tool compatible Linux Kernel
+#
+# Copyright (C) 2014, 2015, 2018 O.S. Systems Software LTDA.
+
+PROVIDES = "linux-mfgtool"
+
+KERNEL_PACKAGE_NAME = "mfgtool"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq/0001-Makefile-fix-gcc-8-build-error.patch b/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq/0001-Makefile-fix-gcc-8-build-error.patch
new file mode 100644
index 00000000..b4c4aed8
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq/0001-Makefile-fix-gcc-8-build-error.patch
@@ -0,0 +1,25 @@
+From 5066b8f46b0f2348881923491b93825ac04d13d2 Mon Sep 17 00:00:00 2001
+From: Chunrong Guo <chunrong.guo@nxp.com>
+Date: Sat, 29 Sep 2018 14:12:34 +0800
+Subject: [PATCH] Makefile: fix gcc-8 build error
+
+Signed-off-by: BJ DevOps Team <bjdevops@NXP1.onmicrosoft.com>
+---
+ Makefile | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile b/Makefile
+index 53d57ac..b7c5fd4 100644
+--- a/Makefile
++++ b/Makefile
+@@ -395,6 +395,7 @@ LINUXINCLUDE += $(filter-out $(LINUXINCLUDE),$(USERINCLUDE))
+ KBUILD_AFLAGS := -D__ASSEMBLY__
+ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+ -fno-strict-aliasing -fno-common \
++ -Wno-packed-not-aligned -Wno-tautological-compare \
+ -Werror-implicit-function-declaration \
+ -Wno-format-security \
+ -std=gnu89
+--
+1.8.3.1
+
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq/0001-fix-gcc8-build-error.patch b/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq/0001-fix-gcc8-build-error.patch
new file mode 100644
index 00000000..3cd25014
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq/0001-fix-gcc8-build-error.patch
@@ -0,0 +1,25 @@
+From 844ce11967bca7b7f68c6cb459e02c9a10f32574 Mon Sep 17 00:00:00 2001
+From: BJ DevOps Team <bjdevops@NXP1.onmicrosoft.com>
+Date: Tue, 3 Jul 2018 15:06:29 +0800
+Subject: [PATCH] fix gcc8 build error
+
+---
+ Makefile | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/Makefile b/Makefile
+index d6db01a..85d9d6c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -422,6 +422,8 @@ LINUXINCLUDE := \
+ KBUILD_AFLAGS := -D__ASSEMBLY__
+ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
+ -fno-strict-aliasing -fno-common -fshort-wchar \
++ -Wno-packed-not-aligned \
++ -Wno-tautological-compare \
+ -Werror-implicit-function-declaration \
+ -Wno-format-security \
+ -std=gnu89
+--
+1.8.3.1
+
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq_4.14.bb b/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq_4.14.bb
new file mode 100644
index 00000000..cb06ae43
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq_4.14.bb
@@ -0,0 +1,70 @@
+inherit kernel qoriq_build_64bit_kernel siteinfo
+inherit fsl-kernel-localversion
+
+SUMMARY = "Linux Kernel for NXP QorIQ platforms"
+SECTION = "kernel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/linux;nobranch=1 \
+ file://0001-fix-gcc8-build-error.patch \
+"
+SRCREV = "7e0006ca696756b867abbeb7a4ed97ffe9caf725"
+
+S = "${WORKDIR}/git"
+
+DEPENDS_append = " libgcc"
+# not put Images into /boot of rootfs, install kernel-image if needed
+RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
+
+KERNEL_CC_append = " ${TOOLCHAIN_OPTIONS}"
+KERNEL_LD_append = " ${TOOLCHAIN_OPTIONS}"
+KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}"
+
+ZIMAGE_BASE_NAME = "zImage-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+ZIMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
+
+SCMVERSION ?= "y"
+LOCALVERSION = ""
+DELTA_KERNEL_DEFCONFIG ?= ""
+DELTA_KERNEL_DEFCONFIG_prepend_qoriq-arm64 = "lsdk.config "
+DELTA_KERNEL_DEFCONFIG_prepend_fsl-lsch2-32b = "multi_v7_lpae.config multi_v8.config lsdk.config "
+DELTA_KERNEL_DEFCONFIG_prepend_ls102xa = "multi_v7_lpae.config lsdk.config "
+
+do_merge_delta_config[dirs] = "${B}"
+
+do_merge_delta_config() {
+ # create config with make config
+ oe_runmake -C ${S} O=${B} ${KERNEL_DEFCONFIG}
+
+ # check if bigendian is enabled
+ if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then
+ echo "CONFIG_CPU_BIG_ENDIAN=y" >> .config
+ echo "CONFIG_MTD_CFI_BE_BYTE_SWAP=y" >> .config
+ fi
+
+ # add config fragments
+ for deltacfg in ${DELTA_KERNEL_DEFCONFIG}; do
+ if [ -f ${S}/arch/${ARCH}/configs/${deltacfg} ]; then
+ oe_runmake -C ${S} O=${B} ${deltacfg}
+ elif [ -f "${WORKDIR}/${deltacfg}" ]; then
+ ${S}/scripts/kconfig/merge_config.sh -m .config ${WORKDIR}/${deltacfg}
+ elif [ -f "${deltacfg}" ]; then
+ ${S}/scripts/kconfig/merge_config.sh -m .config ${deltacfg}
+ fi
+ done
+ cp .config ${WORKDIR}/defconfig
+}
+addtask merge_delta_config before do_preconfigure after do_patch
+
+# The link of dts folder is needed for 32b compile of aarch64 targets(e.g. ls1043ardb-32b)
+do_compile_prepend_fsl-lsch2-32b() {
+ ln -sfT ${STAGING_KERNEL_DIR}/arch/arm64/boot/dts/freescale ${STAGING_KERNEL_DIR}/arch/arm/boot/dts/freescale
+}
+
+do_install_prepend_fsl-lsch2-32b() {
+ rm -f ${STAGING_KERNEL_DIR}/arch/arm/boot/dts/freescale
+}
+
+FILES_${KERNEL_PACKAGE_NAME}-image += "/boot/zImage*"
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq_4.9.bb b/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq_4.9.bb
new file mode 100644
index 00000000..04ff7b96
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/linux/linux-qoriq_4.9.bb
@@ -0,0 +1,71 @@
+inherit kernel qoriq_build_64bit_kernel siteinfo
+inherit fsl-kernel-localversion
+
+SUMMARY = "Linux Kernel for Freescale QorIQ platforms"
+SECTION = "kernel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/linux;nobranch=1 \
+ file://0001-Makefile-fix-gcc-8-build-error.patch \
+"
+SRCREV = "e8b01fb24fb8eb1adee9667eba2cae702b5892e9"
+
+S = "${WORKDIR}/git"
+
+DEPENDS_append = " libgcc"
+# not put Images into /boot of rootfs, install kernel-image if needed
+RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
+
+KERNEL_CC_append = " ${TOOLCHAIN_OPTIONS}"
+KERNEL_LD_append = " ${TOOLCHAIN_OPTIONS}"
+KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_ENTRYPOINT}"
+
+ZIMAGE_BASE_NAME = "zImage-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
+ZIMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
+
+SCMVERSION ?= "y"
+LOCALVERSION = ""
+DELTA_KERNEL_DEFCONFIG ?= ""
+DELTA_KERNEL_DEFCONFIG_prepend_qoriq-arm64 = "lsdk.config "
+DELTA_KERNEL_DEFCONFIG_prepend_fsl-lsch2-32b = "multi_v7_lpae.config multi_v8.config lsdk.config "
+DELTA_KERNEL_DEFCONFIG_prepend_ls102xa = "multi_v7_lpae.config lsdk.config "
+
+do_merge_delta_config[dirs] = "${B}"
+
+do_merge_delta_config() {
+ # create .config with make config
+ oe_runmake -C ${S} O=${B} ${KERNEL_DEFCONFIG}
+
+ # check if bigendian is enabled
+ if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then
+ echo "CONFIG_CPU_BIG_ENDIAN=y" >> .config
+ echo "CONFIG_MTD_CFI_BE_BYTE_SWAP=y" >> .config
+ fi
+
+ # add config fragments
+ for deltacfg in ${DELTA_KERNEL_DEFCONFIG}; do
+ if [ -f ${S}/arch/${ARCH}/configs/${deltacfg} ]; then
+ oe_runmake -C ${S} O=${B} ${deltacfg}
+ elif [ -f "${WORKDIR}/${deltacfg}" ]; then
+ ${S}/scripts/kconfig/merge_config.sh -m .config ${WORKDIR}/${deltacfg}
+ elif [ -f "${deltacfg}" ]; then
+ ${S}/scripts/kconfig/merge_config.sh -m .config ${deltacfg}
+ fi
+ done
+ cp .config ${WORKDIR}/defconfig
+}
+addtask merge_delta_config before do_preconfigure after do_patch
+
+# The link of dts folder is needed for 32b compile of aarch64 targets(e.g. ls1043ardb-32b)
+do_compile_prepend_fsl-lsch2-32b() {
+ ln -sfT ${STAGING_KERNEL_DIR}/arch/arm64/boot/dts/freescale ${STAGING_KERNEL_DIR}/arch/arm/boot/dts/freescale
+}
+
+do_install_append_qoriq-arm() {
+ install -m 0644 arch/${ARCH}/boot/zImage ${D}/boot/zImage-${KERNEL_VERSION}
+ ln -sf zImage-${KERNEL_VERSION} ${D}/boot/zImage
+}
+
+FILES_${KERNEL_PACKAGE_NAME}-image += "/boot/zImage*"
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-kernel/lttng/lttng-modules_%.bbappend b/bsp/meta-freescale/recipes-kernel/lttng/lttng-modules_%.bbappend
new file mode 100644
index 00000000..5ff765d4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/lttng/lttng-modules_%.bbappend
@@ -0,0 +1,2 @@
+inherit qoriq_build_64bit_kernel
+
diff --git a/bsp/meta-freescale/recipes-kernel/skmm-host/skmm-host_git.bb b/bsp/meta-freescale/recipes-kernel/skmm-host/skmm-host_git.bb
new file mode 100644
index 00000000..4c7a371a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-kernel/skmm-host/skmm-host_git.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "skmm host driver offload data to PCIe EP and push the data en-decrypted back to application"
+SECTION = "c293-skmm-host"
+LICENSE = "BSD & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=99803d8e9a595c0bdb45ca710f353813"
+
+inherit module qoriq_build_64bit_kernel
+
+SRC_URI = "git://git.freescale.com/ppc/sdk/skmm-host.git;branch=sdk-v2.0.x"
+SRCREV = "d5912ebdb8d3b29b1e2df52710e8821d1ce3eb80"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE='KERNEL_DIR="${STAGING_KERNEL_DIR}" PREFIX="${D}"'
+
+FILES_${PN} += "/etc/skmm/ /usr/bin/"
+
+COMPATIBLE_MACHINE = "(p4080ds|t4240qds)"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+CLEANBROKEN = "1"
diff --git a/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0001-add-conf-for-multichannel-support-in-imx.patch b/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0001-add-conf-for-multichannel-support-in-imx.patch
new file mode 100644
index 00000000..747b62c5
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0001-add-conf-for-multichannel-support-in-imx.patch
@@ -0,0 +1,221 @@
+From cc06048dcd722049f92ab17958760bd798fb4781 Mon Sep 17 00:00:00 2001
+From: Shengjiu Wang <b02247@freescale.com>
+Date: Thu, 5 Jun 2014 17:37:47 +0800
+Subject: [PATCH] add conf for multichannel support in imx
+
+Upstream Status: Inappropriate [platform specific]
+
+Signed-off-by: Shengjiu Wang <b02247@freescale.com>
+---
+ src/conf/cards/CS42888.conf | 94 ++++++++++++++++++++++++++++++++++++++++++++
+ src/conf/cards/IMX-HDMI.conf | 67 +++++++++++++++++++++++++++++++
+ src/conf/cards/Makefile.am | 4 +-
+ src/conf/cards/aliases.conf | 2 +
+ 4 files changed, 166 insertions(+), 1 deletion(-)
+ create mode 100644 src/conf/cards/CS42888.conf
+ create mode 100644 src/conf/cards/IMX-HDMI.conf
+
+diff --git a/src/conf/cards/CS42888.conf b/src/conf/cards/CS42888.conf
+new file mode 100644
+index 0000000..671a284
+--- /dev/null
++++ b/src/conf/cards/CS42888.conf
+@@ -0,0 +1,94 @@
++#
++# Configuration for the CS42888 chip
++#
++
++# default with dmix & dsnoop
++CS42888.pcm.default {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type asym
++ playback.pcm {
++ type plug
++ slave.pcm {
++ @func concat
++ strings [ "dmix:" $CARD ",FORMAT=S32_LE" ]
++ }
++ }
++ capture.pcm {
++ type plug
++ slave.pcm {
++ @func concat
++ strings [ "dsnoop:" $CARD ",FORMAT=S32_LE" ]
++ }
++ }
++}
++
++<confdir:pcm/surround40.conf>
++
++CS42888.pcm.surround40.0 {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type plug
++ slave.pcm {
++ type hw
++ card $CARD
++ }
++ slave.channels 4
++ ttable.0.0 1
++ ttable.1.2 1
++ ttable.2.1 1
++ ttable.3.3 1
++}
++
++
++<confdir:pcm/surround41.conf>
++<confdir:pcm/surround50.conf>
++<confdir:pcm/surround51.conf>
++
++CS42888.pcm.surround51.0 {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type plug
++ slave.pcm {
++ type hw
++ card $CARD
++ }
++ slave.channels 6
++ ttable.0.0 1
++ ttable.1.3 1
++ ttable.2.1 1
++ ttable.3.4 1
++ ttable.4.2 1
++ ttable.5.5 1
++}
++
++<confdir:pcm/surround71.conf>
++
++CS42888.pcm.surround71.0 {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type plug
++ slave.pcm {
++ type hw
++ card $CARD
++ }
++ slave.channels 8
++ ttable.0.0 1
++ ttable.1.4 1
++ ttable.2.1 1
++ ttable.3.5 1
++ ttable.4.2 1
++ ttable.5.6 1
++ ttable.6.3 1
++ ttable.7.7 1
++}
++
++# vim: ft=alsaconf
+diff --git a/src/conf/cards/IMX-HDMI.conf b/src/conf/cards/IMX-HDMI.conf
+new file mode 100644
+index 0000000..a51509e
+--- /dev/null
++++ b/src/conf/cards/IMX-HDMI.conf
+@@ -0,0 +1,67 @@
++#
++# Configuration for the CS42888 chip
++#
++
++# default with dmix & dsnoop
++IMX-HDMI.pcm.default {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type asym
++ playback.pcm {
++ type plug
++ slave.pcm {
++ @func concat
++ strings [ "dmix:" $CARD ",FORMAT=S32_LE" ]
++ }
++ }
++ capture.pcm {
++ type plug
++ slave.pcm {
++ @func concat
++ strings [ "dsnoop:" $CARD ",FORMAT=S32_LE" ]
++ }
++ }
++}
++
++<confdir:pcm/surround40.conf>
++
++IMX-HDMI.pcm.surround40.0 {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type hw
++ card $CARD
++ channels 4
++}
++
++
++<confdir:pcm/surround41.conf>
++<confdir:pcm/surround50.conf>
++<confdir:pcm/surround51.conf>
++
++IMX-HDMI.pcm.surround51.0 {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type hw
++ card $CARD
++ channels 6
++}
++
++<confdir:pcm/surround71.conf>
++
++IMX-HDMI.pcm.surround71.0 {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type hw
++ card $CARD
++ channels 8
++}
++
++# vim: ft=alsaconf
+diff --git a/src/conf/cards/Makefile.am b/src/conf/cards/Makefile.am
+index 00999f0..fbf0697 100644
+--- a/src/conf/cards/Makefile.am
++++ b/src/conf/cards/Makefile.am
+@@ -58,7 +58,9 @@ cfg_files = aliases.conf \
+ VIA8237.conf \
+ VX222.conf \
+ VXPocket.conf \
+- VXPocket440.conf
++ VXPocket440.conf \
++ CS42888.conf \
++ IMX-HDMI.conf
+
+ if BUILD_ALISP
+ cfg_files += aliases.alisp
+diff --git a/src/conf/cards/aliases.conf b/src/conf/cards/aliases.conf
+index 18a920f..2c422ee 100644
+--- a/src/conf/cards/aliases.conf
++++ b/src/conf/cards/aliases.conf
+@@ -57,6 +57,8 @@ CMI8786 cards.CMI8788
+ CMI8787 cards.CMI8788
+ pistachio cards.pistachio-card
+ VC4-HDMI cards.vc4-hdmi
++cs42888-audio cards.CS42888
++imx-hdmi-soc cards.IMX-HDMI
+
+ <confdir:pcm/default.conf>
+ <confdir:pcm/dmix.conf>
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0004-pcm-Don-t-store-the-state-for-SND_PCM_STATE_SUSPENDE.patch b/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0004-pcm-Don-t-store-the-state-for-SND_PCM_STATE_SUSPENDE.patch
new file mode 100755
index 00000000..4d28a77f
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0004-pcm-Don-t-store-the-state-for-SND_PCM_STATE_SUSPENDE.patch
@@ -0,0 +1,69 @@
+From 93607819d90ddf9bbdad8bbbe4af5d917ca572dc Mon Sep 17 00:00:00 2001
+From: Shengjiu Wang <shengjiu.wang@freescale.com>
+Date: Tue, 10 May 2016 15:09:26 +0800
+Subject: [PATCH 2/2] pcm: Don't store the state for SND_PCM_STATE_SUSPENDED
+
+The resume function don't update the dmix->state, if store SUSPENDED
+state in snd_pcm_dmix_state, the write function after resume will
+return error -ESTRPIPE, because the snd_pcm_write_areas() will check
+the state of the pcm device.
+This patch remove the store SND_PCM_STATE_SUSPENDED state operation
+for dmix,dshare,dsnoop.
+
+Upstream-Status: Pending
+
+Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
+---
+ src/pcm/pcm_dmix.c | 2 +-
+ src/pcm/pcm_dshare.c | 2 +-
+ src/pcm/pcm_dsnoop.c | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c
+index a6a8f3a..89c07d1 100644
+--- a/src/pcm/pcm_dmix.c
++++ b/src/pcm/pcm_dmix.c
+@@ -466,9 +466,9 @@ static snd_pcm_state_t snd_pcm_dmix_state(snd_pcm_t *pcm)
+ snd_pcm_state_t state;
+ state = snd_pcm_state(dmix->spcm);
+ switch (state) {
+- case SND_PCM_STATE_SUSPENDED:
+ case SND_PCM_STATE_DISCONNECTED:
+ dmix->state = state;
++ case SND_PCM_STATE_SUSPENDED:
+ return state;
+ case SND_PCM_STATE_XRUN:
+ if ((err = snd_pcm_direct_slave_recover(dmix)) < 0)
+diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c
+index 7cdfea2..e0b4ea7 100644
+--- a/src/pcm/pcm_dshare.c
++++ b/src/pcm/pcm_dshare.c
+@@ -261,9 +261,9 @@ static snd_pcm_state_t snd_pcm_dshare_state(snd_pcm_t *pcm)
+ snd_pcm_state_t state;
+ state = snd_pcm_state(dshare->spcm);
+ switch (state) {
+- case SND_PCM_STATE_SUSPENDED:
+ case SND_PCM_STATE_DISCONNECTED:
+ dshare->state = state;
++ case SND_PCM_STATE_SUSPENDED:
+ return state;
+ case SND_PCM_STATE_XRUN:
+ if ((err = snd_pcm_direct_slave_recover(dshare)) < 0)
+diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c
+index 539b671..03df6ff 100644
+--- a/src/pcm/pcm_dsnoop.c
++++ b/src/pcm/pcm_dsnoop.c
+@@ -212,9 +212,9 @@ static snd_pcm_state_t snd_pcm_dsnoop_state(snd_pcm_t *pcm)
+ snd_pcm_state_t state;
+ state = snd_pcm_state(dsnoop->spcm);
+ switch (state) {
+- case SND_PCM_STATE_SUSPENDED:
+ case SND_PCM_STATE_DISCONNECTED:
+ dsnoop->state = state;
++ case SND_PCM_STATE_SUSPENDED:
+ return state;
+ case SND_PCM_STATE_XRUN:
+ if ((err = snd_pcm_direct_slave_recover(dsnoop)) < 0)
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0005-add-ak4458-conf-for-multichannel-support.patch b/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0005-add-ak4458-conf-for-multichannel-support.patch
new file mode 100644
index 00000000..a07f60d6
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib/0005-add-ak4458-conf-for-multichannel-support.patch
@@ -0,0 +1,123 @@
+From 1641ce8c724018365d7fa598f9a70c6492e7c271 Mon Sep 17 00:00:00 2001
+From: Shengjiu Wang <shengjiu.wang@nxp.com>
+Date: Wed, 31 Jan 2018 15:06:53 +0800
+Subject: [PATCH] add ak4458 conf for multichannel support
+
+one limitation is that ALSA and pulseaudio only support
+maximum 8 channels, but ak4458 may support 16 channels
+
+Upstream-Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
+---
+ src/conf/cards/AK4458.conf | 74 +++++++++++++++++++++++++++++++++++++++++++++
+ src/conf/cards/Makefile.am | 3 +-
+ src/conf/cards/aliases.conf | 1 +
+ 3 files changed, 77 insertions(+), 1 deletion(-)
+ create mode 100644 src/conf/cards/AK4458.conf
+
+Index: alsa-lib-1.1.6/src/conf/cards/AK4458.conf
+===================================================================
+--- /dev/null
++++ alsa-lib-1.1.6/src/conf/cards/AK4458.conf
+@@ -0,0 +1,74 @@
++#
++# Configuration for the AK4458 chip
++#
++
++# default with dmix & dsnoop
++AK4458.pcm.default {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type asym
++ playback.pcm {
++ type plug
++ slave.pcm {
++ @func concat
++ strings [ "dmix:" $CARD ",FORMAT=S32_LE" ]
++ }
++ }
++ capture.pcm {
++ type plug
++ slave.pcm {
++ @func concat
++ strings [ "dsnoop:" $CARD ",FORMAT=S32_LE" ]
++ }
++ }
++}
++
++<confdir:pcm/surround40.conf>
++
++AK4458.pcm.surround40.0 {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type plug
++ slave.pcm {
++ type hw
++ card $CARD
++ }
++ slave.channels 4
++}
++
++
++<confdir:pcm/surround41.conf>
++<confdir:pcm/surround50.conf>
++<confdir:pcm/surround51.conf>
++
++AK4458.pcm.surround51.0 {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type plug
++ slave.pcm {
++ type hw
++ card $CARD
++ }
++ slave.channels 6
++}
++
++<confdir:pcm/surround71.conf>
++
++AK4458.pcm.surround71.0 {
++ @args [ CARD ]
++ @args.CARD {
++ type string
++ }
++ type plug
++ slave.pcm {
++ type hw
++ card $CARD
++ }
++ slave.channels 8
++}
+Index: alsa-lib-1.1.6/src/conf/cards/Makefile.am
+===================================================================
+--- alsa-lib-1.1.6.orig/src/conf/cards/Makefile.am
++++ alsa-lib-1.1.6/src/conf/cards/Makefile.am
+@@ -60,7 +60,8 @@ cfg_files = aliases.conf \
+ VXPocket.conf \
+ VXPocket440.conf \
+ CS42888.conf \
+- IMX-HDMI.conf
++ IMX-HDMI.conf \
++ AK4458.conf
+
+ if BUILD_ALISP
+ cfg_files += aliases.alisp
+Index: alsa-lib-1.1.6/src/conf/cards/aliases.conf
+===================================================================
+--- alsa-lib-1.1.6.orig/src/conf/cards/aliases.conf
++++ alsa-lib-1.1.6/src/conf/cards/aliases.conf
+@@ -59,6 +59,7 @@ pistachio cards.pistachio-card
+ VC4-HDMI cards.vc4-hdmi
+ cs42888-audio cards.CS42888
+ imx-hdmi-soc cards.IMX-HDMI
++ak4458-audio cards.AK4458
+
+ <confdir:pcm/default.conf>
+ <confdir:pcm/dmix.conf>
diff --git a/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib_%.bbappend b/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib_%.bbappend
new file mode 100644
index 00000000..3bf3abff
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/alsa/alsa-lib_%.bbappend
@@ -0,0 +1,10 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+IMX_PATCH = " \
+ file://0001-add-conf-for-multichannel-support-in-imx.patch \
+ file://0004-pcm-Don-t-store-the-state-for-SND_PCM_STATE_SUSPENDE.patch \
+ file://0005-add-ak4458-conf-for-multichannel-support.patch \
+"
+SRC_URI_append_imx = "${IMX_PATCH}"
+
+PACKAGE_ARCH_imx = "${MACHINE_SOCARCH}"
diff --git a/bsp/meta-freescale/recipes-multimedia/alsa/imx-alsa-plugins_1.0.26.bb b/bsp/meta-freescale/recipes-multimedia/alsa/imx-alsa-plugins_1.0.26.bb
new file mode 100644
index 00000000..94c3f4a7
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/alsa/imx-alsa-plugins_1.0.26.bb
@@ -0,0 +1,36 @@
+# Copyright (C) 2013-2016 Freescale Semiconductor
+# Copyright (C) 2017-2019 NXP
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "Freescale alsa-lib plugins"
+LICENSE = "GPLv2"
+SECTION = "multimedia"
+DEPENDS = "alsa-lib"
+
+# For backwards compatibility
+PROVIDES += "fsl-alsa-plugins"
+RREPLACES_${PN} = "fsl-alsa-plugins"
+RPROVIDES_${PN} = "fsl-alsa-plugins"
+RCONFLICTS_${PN} = "fsl-alsa-plugins"
+
+LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit autotools pkgconfig use-imx-headers
+
+SRCBRANCH = "nxp/master"
+SRC_URI = "git://source.codeaurora.org/external/imx/imx-alsa-plugins.git;protocol=https;branch=${SRCBRANCH}"
+SRCREV = "9a63071e7734bd164017f3761b8d1944c017611f"
+
+S = "${WORKDIR}/git"
+
+INCLUDE_DIR = "-I${STAGING_INCDIR_IMX}"
+
+EXTRA_OECONF = "CFLAGS="${INCLUDE_DIR}""
+
+INSANE_SKIP_${PN} = "dev-so"
+
+FILES_${PN} += "${libdir}/alsa-lib/libasound_*.so"
+FILES_${PN}-dbg += "${libdir}/alsa-lib/.debug"
+FILES_${PN}-dev += "${libdir}/alsa-lib/*.la"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch
new file mode 100644
index 00000000..67a872cd
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/files/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch
@@ -0,0 +1,35 @@
+From a1d7c582392c8bc87fa9411af77b20e011944357 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 25 Jan 2018 17:55:02 +0200
+Subject: [PATCH] gst/gstpluginloader.c: when env var is set do not fall
+ through to system plugin scanner
+
+If we set a custom GST_PLUGIN_SCANNER env var, then we probably want to use that and only that.
+
+Falling through to the one installed on the system is problamatic in cross-compilation
+environemnts, regardless of whether one pointed to by the env var succeeded or failed.
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gst/gstpluginloader.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/gst/gstpluginloader.c b/gst/gstpluginloader.c
+index 430829d..3a75731 100644
+--- a/gst/gstpluginloader.c
++++ b/gst/gstpluginloader.c
+@@ -471,9 +471,7 @@ gst_plugin_loader_spawn (GstPluginLoader * loader)
+ helper_bin = g_strdup (env);
+ res = gst_plugin_loader_try_helper (loader, helper_bin);
+ g_free (helper_bin);
+- }
+-
+- if (!res) {
++ } else {
+ GST_LOG ("Trying installed plugin scanner");
+
+ #ifdef G_OS_WIN32
+--
+2.15.1
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch
new file mode 100644
index 00000000..2cab87f9
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/files/0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch
@@ -0,0 +1,42 @@
+From 90916f96262fa7b27a0a99788c69f9fd6df11000 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 24 Nov 2015 16:46:27 +0200
+Subject: [PATCH] introspection.m4: prefix pkgconfig paths with
+ PKG_CONFIG_SYSROOT_DIR
+
+We can't use our tweaked introspection.m4 from gobject-introspection tarball
+because gstreamer also defines INTROSPECTION_INIT in its introspection.m4, which
+is later supplied to g-ir-scanner.
+
+Upstream-Status: Pending [review on oe-core list]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ common/m4/introspection.m4 | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/common/m4/introspection.m4 b/common/m4/introspection.m4
+index 162be57..217a6ae 100644
+--- a/common/m4/introspection.m4
++++ b/common/m4/introspection.m4
+@@ -54,14 +54,14 @@ m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
+ INTROSPECTION_GIRDIR=
+ INTROSPECTION_TYPELIBDIR=
+ if test "x$found_introspection" = "xyes"; then
+- INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+- INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+- INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
++ INTROSPECTION_SCANNER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
++ INTROSPECTION_COMPILER=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
++ INTROSPECTION_GENERATE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+ INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+ INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
+ INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+ INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+- INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
++ INTROSPECTION_MAKEFILE=$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+ INTROSPECTION_INIT="extern void gst_init(gint*,gchar**); gst_init(NULL,NULL);"
+ fi
+ AC_SUBST(INTROSPECTION_SCANNER)
+--
+2.6.2
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch
new file mode 100644
index 00000000..d86c78d7
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/files/gtk-doc-tweaks.patch
@@ -0,0 +1,47 @@
+From 7018ca1c4bf26c8317e7fcd2e7e4e648195f42ca Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Wed, 20 Dec 2017 13:03:03 +0000
+Subject: [PATCH] gstreamer: use a patch instead of sed to fix gtk-doc
+
+Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient
+binaries instead of libtool wrapper or running them directly.
+
+Also substitute a bogus plugin scanner, as trying to run the real one is causing
+issues during build on x86_64.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+---
+ common/gtk-doc.mak | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak
+index 3f83491..e5cb0d1 100644
+--- a/common/gtk-doc.mak
++++ b/common/gtk-doc.mak
+@@ -6,11 +6,11 @@
+ if GTK_DOC_USE_LIBTOOL
+ GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+-GTKDOC_RUN = $(LIBTOOL) --mode=execute
++GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper
+ else
+ GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+-GTKDOC_RUN =
++GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper
+ endif
+
+ # We set GPATH here; this gives us semantics for GNU make
+@@ -101,6 +101,7 @@ scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ GST_PLUGIN_PATH_1_0= \
+ GST_REGISTRY_1_0=doc-registry.xml \
+ $(GTKDOC_EXTRA_ENVIRONMENT) \
++ GST_PLUGIN_SCANNER_1_0="$(top_builddir)/libs/gst/helpers/gst-plugin-scanner-dummy" \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" \
+ CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" \
+ LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \
+--
+2.15.1
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad-1.14.imx/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad-1.14.imx/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
new file mode 100644
index 00000000..355341e4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad-1.14.imx/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
@@ -0,0 +1,45 @@
+From c890afb8a542a272acb398e8fc289b790afa08e4 Mon Sep 17 00:00:00 2001
+From: Yuqing Zhu <carol.zhu@nxp.com>
+Date: Sat, 21 Apr 2018 00:51:12 +0800
+Subject: [PATCH] Makefile.am: don't hardcode libtool name when running
+ introspection tools
+
+Do refine base on commit: 7592e793b3906355d76ca9a59f8fea2749ea2a4e
+
+Upstream-Status: Pending [review on oe-core list]
+
+Signed-off-by: Yuqing Zhu <carol.zhu@nxp.com>
+---
+ gst-libs/gst/insertbin/Makefile.am | 2 +-
+ gst-libs/gst/mpegts/Makefile.am | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gst-libs/gst/insertbin/Makefile.am b/gst-libs/gst/insertbin/Makefile.am
+index 1f8ea30..4b98ef6 100644
+--- a/gst-libs/gst/insertbin/Makefile.am
++++ b/gst-libs/gst/insertbin/Makefile.am
+@@ -45,7 +45,7 @@ GstInsertBin-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstinsertbin-@GS
+ --library=libgstinsertbin-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-base-@GST_API_VERSION@ \
+ --pkg-export gstreamer-insertbin-@GST_API_VERSION@ \
+diff --git a/gst-libs/gst/mpegts/Makefile.am b/gst-libs/gst/mpegts/Makefile.am
+index f264e33..9934a4d 100644
+--- a/gst-libs/gst/mpegts/Makefile.am
++++ b/gst-libs/gst/mpegts/Makefile.am
+@@ -82,7 +82,7 @@ GstMpegts-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstmpegts-@GST_API_
+ --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-@GST_API_VERSION@` \
+ --library=libgstmpegts-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-video-@GST_API_VERSION@ \
+ --pkg-export gstreamer-mpegts-@GST_API_VERSION@ \
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad-1.14.imx/configure-allow-to-disable-libssh2.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad-1.14.imx/configure-allow-to-disable-libssh2.patch
new file mode 100644
index 00000000..ad863298
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad-1.14.imx/configure-allow-to-disable-libssh2.patch
@@ -0,0 +1,61 @@
+From f59c5269f92d59a5296cbfeeb682d42095cd88ad Mon Sep 17 00:00:00 2001
+From: Wenzong Fan <wenzong.fan@windriver.com>
+Date: Thu, 18 Sep 2014 02:24:07 -0400
+Subject: [PATCH] gstreamer1.0-plugins-bad: allow to disable libssh2
+
+libssh2 is automatically linked to if present, this undetermined
+dependency may cause build errors like:
+
+ .../x86_64-poky-linux/4.9.0/ld: cannot find -lssh2
+
+libssh2 isn't an oe-core recipe, so allow to disable it from
+configure.
+
+Upstream-Status: Pending
+
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+---
+ configure.ac | 23 +++++++++++++++++------
+ 1 file changed, 17 insertions(+), 6 deletions(-)
+
+Index: gst-plugins-bad-1.12.3/configure.ac
+===================================================================
+--- gst-plugins-bad-1.12.3.orig/configure.ac
++++ gst-plugins-bad-1.12.3/configure.ac
+@@ -2139,6 +2139,15 @@ AG_GST_CHECK_FEATURE(CHROMAPRINT, [chrom
+ ])
+
+ dnl *** Curl ***
++AC_ARG_ENABLE([libssh2],
++ [ --enable-libssh2 enable LIBSSH2 support @<:@default=auto@:>@],
++ [case "${enableval}" in
++ yes) NEED_SSH2=yes ;;
++ no) NEED_SSH2=no ;;
++ auto) NEED_SSH2=auto ;;
++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-libssh2]) ;;
++ esac],[NEED_SSH2=auto])
++
+ translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true)
+ AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [
+ PKG_CHECK_MODULES(CURL, libcurl >= 7.35.0, [
+@@ -2161,12 +2170,14 @@ AG_GST_CHECK_FEATURE(CURL, [Curl plugin]
+ ])
+ AC_SUBST(CURL_CFLAGS)
+ AC_SUBST(CURL_LIBS)
+- PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [
+- HAVE_SSH2="yes"
+- AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available])
+- ], [
+- HAVE_SSH2="no"
+- ])
++ if test "x$NEED_SSH2" != "xno"; then
++ PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [
++ HAVE_SSH2="yes"
++ AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available])
++ ], [
++ HAVE_SSH2="no"
++ ])
++ fi
+ AM_CONDITIONAL(USE_SSH2, test "x$HAVE_SSH2" = "xyes")
+ AC_SUBST(SSH2_CFLAGS)
+ AC_SUBST(SSH2_LIBS)
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-opencv-fix-build-for-opencv-3-4-2.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-opencv-fix-build-for-opencv-3-4-2.patch
new file mode 100644
index 00000000..5c53e8e5
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-opencv-fix-build-for-opencv-3-4-2.patch
@@ -0,0 +1,63 @@
+From c247745faaf885fd3fa094198fc0ea288e295dbf Mon Sep 17 00:00:00 2001
+From: Thibault Saunier <tsaunier@igalia.com>
+Date: Fri, 13 Jul 2018 14:42:28 -0400
+Subject: [PATCH] opencv: Fix build for opencv >= 3.4.2
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The `CV_RGB` macro is now in `imgproc.hpp`.
+
+Fixes:
+
+ ../subprojects/gst-plugins-bad/ext/opencv/gsthanddetect.cpp:497:40: error: ‘CV_RGB’ was not declared in this scope
+ cvCircle (img, center, radius, CV_RGB (0, 0, 200), 1, 8, 0);
+ ^~~~~~
+---
+ ext/opencv/MotionCells.cpp | 3 +++
+ ext/opencv/gsthanddetect.cpp | 3 +++
+ ext/opencv/gsttemplatematch.cpp | 3 +++
+ 3 files changed, 9 insertions(+)
+
+diff --git a/ext/opencv/MotionCells.cpp b/ext/opencv/MotionCells.cpp
+index f85989e117..175ec901b2 100644
+--- a/ext/opencv/MotionCells.cpp
++++ b/ext/opencv/MotionCells.cpp
+@@ -51,6 +51,9 @@
+
+ #include <errno.h>
+ #include "MotionCells.h"
++#if (CV_MAJOR_VERSION >= 3)
++#include <opencv2/imgproc.hpp>
++#endif
+ #include <opencv2/imgproc/imgproc_c.h>
+
+ MotionCells::MotionCells ()
+diff --git a/ext/opencv/gsthanddetect.cpp b/ext/opencv/gsthanddetect.cpp
+index 60fd5be72b..47203fd0ea 100644
+--- a/ext/opencv/gsthanddetect.cpp
++++ b/ext/opencv/gsthanddetect.cpp
+@@ -62,6 +62,9 @@
+
+ /* element header */
+ #include "gsthanddetect.h"
++#if (CV_MAJOR_VERSION >= 3)
++#include <opencv2/imgproc.hpp>
++#endif
+ #include <opencv2/imgproc/imgproc_c.h>
+
+ GST_DEBUG_CATEGORY_STATIC (gst_handdetect_debug);
+diff --git a/ext/opencv/gsttemplatematch.cpp b/ext/opencv/gsttemplatematch.cpp
+index f39208dc28..ec0b56af88 100644
+--- a/ext/opencv/gsttemplatematch.cpp
++++ b/ext/opencv/gsttemplatematch.cpp
+@@ -63,6 +63,9 @@
+
+ #include "../../gst-libs/gst/gst-i18n-plugin.h"
+ #include "gsttemplatematch.h"
++#if (CV_MAJOR_VERSION >= 3)
++#include <opencv2/imgproc.hpp>
++#endif
+ #include <opencv2/imgproc/imgproc_c.h>
+
+ GST_DEBUG_CATEGORY_STATIC (gst_template_match_debug);
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb
new file mode 100644
index 00000000..2e3f3469
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.14.imx.bb
@@ -0,0 +1,174 @@
+require recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \
+ file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 "
+
+DEPENDS_append_imxgpu2d = " virtual/libg2d"
+DEPENDS_append_mx8 = " libdrm"
+
+PACKAGECONFIG_append_mx6q = " opencv"
+PACKAGECONFIG_append_mx6qp = " opencv"
+PACKAGECONFIG_append_mx8 = " opencv kms"
+
+PACKAGECONFIG[wayland] = "--enable-wayland --disable-x11,--disable-wayland,wayland-native wayland wayland-protocols libdrm"
+
+# Disable introspection to fix [GstGL-1.0.gir] Error
+EXTRA_OECONF_append = " --disable-introspection"
+
+
+GST1.0-PLUGINS-BAD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-bad.git;protocol=https"
+SRCBRANCH = "MM_04.04.02_1808_L4.9.123_MX8MM_GA"
+
+SRC_URI = " \
+ ${GST1.0-PLUGINS-BAD_SRC};branch=${SRCBRANCH} \
+ file://configure-allow-to-disable-libssh2.patch \
+ file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch \
+ file://0001-opencv-fix-build-for-opencv-3-4-2.patch \
+"
+
+SRCREV = "03e6ef6a371a0578a9629abde8e9c83e66f34b11"
+
+DEFAULT_PREFERENCE = "-1"
+
+# This remove "--exclude=autopoint" option from autoreconf argument to avoid
+# configure.ac:30: error: required file './ABOUT-NLS' not found
+EXTRA_AUTORECONF = ""
+
+# include fragment shaders
+FILES_${PN}-opengl += "/usr/share/*.fs"
+
+PACKAGE_ARCH_imxpxp = "${MACHINE_SOCARCH}"
+PACKAGE_ARCH_mx8 = "${MACHINE_SOCARCH}"
+
+S = "${WORKDIR}/git"
+
+LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
+
+DEPENDS += "gstreamer1.0-plugins-base jpeg"
+
+inherit gettext bluetooth
+
+PACKAGECONFIG ??= " \
+ ${GSTREAMER_ORC} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \
+ bz2 curl dash dtls hls rsvg sbc smoothstreaming sndfile ttml uvch264 webp \
+"
+
+# the gl packageconfig enables OpenGL elements that haven't been ported
+# to -base yet. They depend on the gstgl library in -base, so we do
+# not add GL dependencies here, since these are taken care of in -base.
+
+PACKAGECONFIG[assrender] = "--enable-assrender,--disable-assrender,libass"
+PACKAGECONFIG[bluez] = "--enable-bluez,--disable-bluez,${BLUEZ}"
+PACKAGECONFIG[bz2] = "--enable-bz2,--disable-bz2,bzip2"
+PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl"
+PACKAGECONFIG[dash] = "--enable-dash,--disable-dash,libxml2"
+PACKAGECONFIG[dc1394] = "--enable-dc1394,--disable-dc1394,libdc1394"
+PACKAGECONFIG[directfb] = "--enable-directfb,--disable-directfb,directfb"
+PACKAGECONFIG[dtls] = "--enable-dtls,--disable-dtls,openssl"
+PACKAGECONFIG[faac] = "--enable-faac,--disable-faac,faac"
+PACKAGECONFIG[faad] = "--enable-faad,--disable-faad,faad2"
+PACKAGECONFIG[flite] = "--enable-flite,--disable-flite,flite-alsa"
+PACKAGECONFIG[fluidsynth] = "--enable-fluidsynth,--disable-fluidsynth,fluidsynth"
+PACKAGECONFIG[hls] = "--enable-hls --with-hls-crypto=nettle,--disable-hls,nettle"
+PACKAGECONFIG[gl] = "--enable-gl,--disable-gl,"
+PACKAGECONFIG[kms] = "--enable-kms,--disable-kms,libdrm"
+PACKAGECONFIG[libde265] = "--enable-libde265,--disable-libde265,libde265"
+PACKAGECONFIG[libmms] = "--enable-libmms,--disable-libmms,libmms"
+PACKAGECONFIG[libssh2] = "--enable-libssh2,--disable-libssh2,libssh2"
+PACKAGECONFIG[modplug] = "--enable-modplug,--disable-modplug,libmodplug"
+PACKAGECONFIG[neon] = "--enable-neon,--disable-neon,neon"
+PACKAGECONFIG[openal] = "--enable-openal,--disable-openal,openal-soft"
+PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv"
+PACKAGECONFIG[openh264] = "--enable-openh264,--disable-openh264,openh264"
+PACKAGECONFIG[openjpeg] = "--enable-openjpeg,--disable-openjpeg,openjpeg"
+# the opus encoder/decoder elements are now in the -base package,
+# but the opus parser remains in -bad
+PACKAGECONFIG[opusparse] = "--enable-opus,--disable-opus,libopus"
+PACKAGECONFIG[resindvd] = "--enable-resindvd,--disable-resindvd,libdvdread libdvdnav"
+PACKAGECONFIG[rsvg] = "--enable-rsvg,--disable-rsvg,librsvg"
+PACKAGECONFIG[rtmp] = "--enable-rtmp,--disable-rtmp,rtmpdump"
+PACKAGECONFIG[sbc] = "--enable-sbc,--disable-sbc,sbc"
+PACKAGECONFIG[smoothstreaming] = "--enable-smoothstreaming,--disable-smoothstreaming,libxml2"
+PACKAGECONFIG[sndfile] = "--enable-sndfile,--disable-sndfile,libsndfile1"
+PACKAGECONFIG[srtp] = "--enable-srtp,--disable-srtp,libsrtp"
+PACKAGECONFIG[tinyalsa] = "--enable-tinyalsa,--disable-tinyalsa,tinyalsa"
+PACKAGECONFIG[ttml] = "--enable-ttml,--disable-ttml,libxml2 pango cairo"
+PACKAGECONFIG[uvch264] = "--enable-uvch264,--disable-uvch264,libusb1 libgudev"
+PACKAGECONFIG[voaacenc] = "--enable-voaacenc,--disable-voaacenc,vo-aacenc"
+PACKAGECONFIG[voamrwbenc] = "--enable-voamrwbenc,--disable-voamrwbenc,vo-amrwbenc"
+PACKAGECONFIG[vulkan] = "--enable-vulkan,--disable-vulkan,vulkan"
+PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland wayland-protocols libdrm"
+PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp"
+PACKAGECONFIG[webrtc] = "--enable-webrtc,--disable-webrtc,libnice"
+PACKAGECONFIG[webrtcdsp] = "--enable-webrtcdsp,--disable-webrtcdsp,webrtc-audio-processing"
+
+# these plugins have no corresponding library in OE-core or meta-openembedded:
+# openni2 winks direct3d directsound winscreencap acm apple_media iqa
+# android_media avc bs2b chromaprint daala dts fdkaac gme gsm kate ladspa
+# lv2 mpeg2enc mplex msdk musepack nvenc ofa openmpt opensles soundtouch
+# spandsp spc teletextdec vdpau wasapi x265 zbar
+
+EXTRA_OECONF += " \
+ --enable-decklink \
+ --enable-dvb \
+ --enable-fbdev \
+ --enable-ipcpipeline \
+ --enable-netsim \
+ --enable-shm \
+ --enable-vcd \
+ --disable-acm \
+ --disable-android_media \
+ --disable-aom \
+ --disable-apple_media \
+ --disable-avc \
+ --disable-bs2b \
+ --disable-chromaprint \
+ --disable-daala \
+ --disable-direct3d \
+ --disable-directsound \
+ --disable-dts \
+ --disable-fdk_aac \
+ --disable-gme \
+ --disable-gsm \
+ --disable-iqa \
+ --disable-kate \
+ --disable-ladspa \
+ --disable-lv2 \
+ --disable-mpeg2enc \
+ --disable-mplex \
+ --disable-msdk \
+ --disable-musepack \
+ --disable-nvenc \
+ --disable-ofa \
+ --disable-openexr \
+ --disable-openmpt \
+ --disable-openni2 \
+ --disable-opensles \
+ --disable-soundtouch \
+ --disable-spandsp \
+ --disable-spc \
+ --disable-srt \
+ --disable-teletextdec \
+ --disable-vdpau \
+ --disable-wasapi \
+ --disable-wildmidi \
+ --disable-winks \
+ --disable-winscreencap \
+ --disable-x265 \
+ --disable-zbar \
+ ${@bb.utils.contains("TUNE_FEATURES", "mx32", "--disable-yadif", "", d)} \
+"
+export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}"
+
+ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET_armv5 = "arm"
+
+FILES_${PN}-freeverb += "${datadir}/gstreamer-${LIBV}/presets/GstFreeverb.prs"
+FILES_${PN}-opencv += "${datadir}/gst-plugins-bad/${LIBV}/opencv*"
+FILES_${PN}-voamrwbenc += "${datadir}/gstreamer-${LIBV}/presets/GstVoAmrwbEnc.prs"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
new file mode 100644
index 00000000..a1cc7d3d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch
@@ -0,0 +1,171 @@
+From a049bb15839557594713cb32e7d6bfe0e2127392 Mon Sep 17 00:00:00 2001
+From: Yuqing Zhu <carol.zhu@nxp.com>
+Date: Fri, 20 Apr 2018 22:46:46 +0800
+Subject: [PATCH] Makefile.am: don't hardcode libtool name when running
+ introspection tools
+
+Do patch refine basing on commit: f1d9652351e7754c63003104eceb526af424c7e0
+
+Upstream-Status: Pending [review on oe-core maillist]
+
+Signed-off-by: Yuqing Zhu <carol.zhu@nxp.com>
+---
+ gst-libs/gst/allocators/Makefile.am | 2 +-
+ gst-libs/gst/app/Makefile.am | 2 +-
+ gst-libs/gst/audio/Makefile.am | 2 +-
+ gst-libs/gst/gl/Makefile.am | 2 +-
+ gst-libs/gst/pbutils/Makefile.am | 2 +-
+ gst-libs/gst/riff/Makefile.am | 2 +-
+ gst-libs/gst/rtp/Makefile.am | 2 +-
+ gst-libs/gst/rtsp/Makefile.am | 2 +-
+ gst-libs/gst/sdp/Makefile.am | 2 +-
+ gst-libs/gst/tag/Makefile.am | 2 +-
+ gst-libs/gst/video/Makefile.am | 2 +-
+ 11 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makefile.am
+index 0edc0ae..d0d425d 100644
+--- a/gst-libs/gst/allocators/Makefile.am
++++ b/gst-libs/gst/allocators/Makefile.am
+@@ -58,7 +58,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@
+ --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+ --library=libgstallocators-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg-export gstreamer-allocators-@GST_API_VERSION@ \
+ --output $@ \
+diff --git a/gst-libs/gst/app/Makefile.am b/gst-libs/gst/app/Makefile.am
+index 52f6ad3..5bfd606 100644
+--- a/gst-libs/gst/app/Makefile.am
++++ b/gst-libs/gst/app/Makefile.am
+@@ -56,7 +56,7 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO
+ --library=libgstapp-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-base-@GST_API_VERSION@ \
+ --pkg-export gstreamer-app-@GST_API_VERSION@ \
+diff --git a/gst-libs/gst/audio/Makefile.am b/gst-libs/gst/audio/Makefile.am
+index 2922245..7fb65f2 100644
+--- a/gst-libs/gst/audio/Makefile.am
++++ b/gst-libs/gst/audio/Makefile.am
+@@ -184,7 +184,7 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+ --include=GstTag-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-base-@GST_API_VERSION@ \
+ --pkg-export gstreamer-audio-@GST_API_VERSION@ \
+diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
+index b04187f..576bf1c 100644
+--- a/gst-libs/gst/gl/Makefile.am
++++ b/gst-libs/gst/gl/Makefile.am
+@@ -205,7 +205,7 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+ --include=GstVideo-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-base-@GST_API_VERSION@ \
+ --pkg gstreamer-video-@GST_API_VERSION@ \
+diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am
+index ae51993..35a6e44 100644
+--- a/gst-libs/gst/pbutils/Makefile.am
++++ b/gst-libs/gst/pbutils/Makefile.am
+@@ -103,7 +103,7 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP
+ --include=GstTag-@GST_API_VERSION@ \
+ --include=GstVideo-@GST_API_VERSION@ \
+ --include=GstAudio-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-tag-@GST_API_VERSION@ \
+ --pkg gstreamer-video-@GST_API_VERSION@ \
+diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am
+index fb53f06..e66ef4f 100644
+--- a/gst-libs/gst/riff/Makefile.am
++++ b/gst-libs/gst/riff/Makefile.am
+@@ -49,7 +49,7 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
+ # --include=GstAudio-@GST_API_VERSION@ \
+ # --include=GstTag-@GST_API_VERSION@ \
+ # --include=Gst-@GST_API_VERSION@ \
+-# --libtool="$(top_builddir)/libtool" \
++# --libtool="$(LIBTOOL)" \
+ # --pkg gstreamer-@GST_API_VERSION@ \
+ # --pkg gstreamer-tag-@GST_API_VERSION@ \
+ # --pkg gstreamer-audio-@GST_API_VERSION@ \
+diff --git a/gst-libs/gst/rtp/Makefile.am b/gst-libs/gst/rtp/Makefile.am
+index a6f971d..77ebeeb 100644
+--- a/gst-libs/gst/rtp/Makefile.am
++++ b/gst-libs/gst/rtp/Makefile.am
+@@ -69,7 +69,7 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO
+ --library=libgstrtp-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-base-@GST_API_VERSION@ \
+ --pkg-export gstreamer-rtp-@GST_API_VERSION@ \
+diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am
+index ceb07f4..db9d0fd 100644
+--- a/gst-libs/gst/rtsp/Makefile.am
++++ b/gst-libs/gst/rtsp/Makefile.am
+@@ -76,7 +76,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
+ --include=Gio-2.0 \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstSdp-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gio-2.0 \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-sdp-@GST_API_VERSION@ \
+diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am
+index e197e9b..6e05cc7 100644
+--- a/gst-libs/gst/sdp/Makefile.am
++++ b/gst-libs/gst/sdp/Makefile.am
+@@ -34,7 +34,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO
+ --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+ --library=libgstsdp-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg-export gstreamer-sdp-@GST_API_VERSION@ \
+ --output $@ \
+diff --git a/gst-libs/gst/tag/Makefile.am b/gst-libs/gst/tag/Makefile.am
+index 0247c33..c86515b 100644
+--- a/gst-libs/gst/tag/Makefile.am
++++ b/gst-libs/gst/tag/Makefile.am
+@@ -66,7 +66,7 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO
+ --library=libgsttag-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-base-@GST_API_VERSION@ \
+ --pkg-export gstreamer-tag-@GST_API_VERSION@ \
+diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am
+index 1b74f37..0f7c07e 100644
+--- a/gst-libs/gst/video/Makefile.am
++++ b/gst-libs/gst/video/Makefile.am
+@@ -126,7 +126,7 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE
+ --library=libgstvideo-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+- --libtool="$(top_builddir)/libtool" \
++ --libtool="$(LIBTOOL)" \
+ --pkg gstreamer-@GST_API_VERSION@ \
+ --pkg gstreamer-base-@GST_API_VERSION@ \
+ --pkg-export gstreamer-video-@GST_API_VERSION@ \
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0001-gstreamer1.0-plugins-base-Fix-ion.h-header-inclusion.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0001-gstreamer1.0-plugins-base-Fix-ion.h-header-inclusion.patch
new file mode 100644
index 00000000..d3822cfc
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0001-gstreamer1.0-plugins-base-Fix-ion.h-header-inclusion.patch
@@ -0,0 +1,45 @@
+From 84f693a70e6f3084ca67063a6336aaf3287abb49 Mon Sep 17 00:00:00 2001
+From: Yuqing Zhu <carol.zhu@nxp.com>
+Date: Thu, 27 Sep 2018 13:53:49 +0800
+Subject: [PATCH] gstreamer1.0-plugins-base: Fix ion.h header inclusion to be
+ standard
+
+NXP "solution" was to manually copy the header to include/linux.
+Let's point the Makefile to the proper (mainline) location instead:
+https://elixir.bootlin.com/linux/v4.17/source/drivers/staging/android/uapi/ion.h
+
+Signed-off-by: Yuqing Zhu <carol.zhu@nxp.com>
+---
+ configure.ac | 2 +-
+ gst-libs/gst/allocators/gstionmemory.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 51272df..4bea0dd 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -678,7 +678,7 @@ AG_GST_CHECK_FEATURE(CDPARANOIA, [CDParanoia], cdparanoia, [
+ dnl check for ion
+ translit(dnm, m, l) AM_CONDITIONAL(USE_ION, true)
+ AG_GST_CHECK_FEATURE(ION, [ion], ion, [
+- AC_CHECK_HEADER(linux/ion.h, HAVE_ION="yes", HAVE_ION="no")
++ AC_CHECK_HEADER(ion.h, HAVE_ION="yes", HAVE_ION="no")
+ ])
+
+ dnl FIXME : add second check somehow if that is necessary
+diff --git a/gst-libs/gst/allocators/gstionmemory.c b/gst-libs/gst/allocators/gstionmemory.c
+index 5e0455c..a285f09 100644
+--- a/gst-libs/gst/allocators/gstionmemory.c
++++ b/gst-libs/gst/allocators/gstionmemory.c
+@@ -26,7 +26,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+ #include <sys/types.h>
+-#include <linux/ion.h>
++#include <ion.h>
+ #include <linux/dma-buf.h>
+ #include <linux/version.h>
+
+--
+1.9.1
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
new file mode 100644
index 00000000..4b6cfdd6
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch
@@ -0,0 +1,289 @@
+From e3f28d15e38f7633d8ed4023fe883b8377c0597e Mon Sep 17 00:00:00 2001
+From: Yuqing Zhu <carol.zhu@nxp.com>
+Date: Fri, 20 Apr 2018 02:03:57 +0800
+Subject: [PATCH] Makefile.am: prefix calls to pkg-config with
+ PKG_CONFIG_SYSROOT_DIR
+
+Do patch refine base on commit: 990b653c7b6de1937ec759019982d6c5f15770f7
+
+Upstream-Status: Pending [review on oe-core maillist]
+
+Signed-off-by: Yuqing Zhu <carol.zhu@nxp.com>
+---
+ gst-libs/gst/allocators/Makefile.am | 4 ++--
+ gst-libs/gst/app/Makefile.am | 8 ++++----
+ gst-libs/gst/audio/Makefile.am | 12 ++++++------
+ gst-libs/gst/pbutils/Makefile.am | 12 ++++++------
+ gst-libs/gst/riff/Makefile.am | 8 ++++----
+ gst-libs/gst/rtp/Makefile.am | 8 ++++----
+ gst-libs/gst/rtsp/Makefile.am | 4 ++--
+ gst-libs/gst/sdp/Makefile.am | 4 ++--
+ gst-libs/gst/tag/Makefile.am | 8 ++++----
+ gst-libs/gst/video/Makefile.am | 8 ++++----
+ 10 files changed, 38 insertions(+), 38 deletions(-)
+
+diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makefile.am
+index c4412a1..9f9d14d 100644
+--- a/gst-libs/gst/allocators/Makefile.am
++++ b/gst-libs/gst/allocators/Makefile.am
+@@ -59,7 +59,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@
+ --c-include "gst/allocators/allocators.h" \
+ -I$(top_srcdir)/gst-libs \
+ -I$(top_builddir)/gst-libs \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+ --library=libgstallocators-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --libtool="$(LIBTOOL)" \
+@@ -83,7 +83,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+ $(INTROSPECTION_COMPILER) \
+ --includedir=$(srcdir) \
+ --includedir=$(builddir) \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+ $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+
+ CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
+diff --git a/gst-libs/gst/app/Makefile.am b/gst-libs/gst/app/Makefile.am
+index 5bfd606..c231267 100644
+--- a/gst-libs/gst/app/Makefile.am
++++ b/gst-libs/gst/app/Makefile.am
+@@ -51,8 +51,8 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO
+ --c-include "gst/app/app.h" \
+ -I$(top_srcdir)/gst-libs \
+ -I$(top_builddir)/gst-libs \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ --library=libgstapp-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+@@ -79,8 +79,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+ $(INTROSPECTION_COMPILER) \
+ --includedir=$(srcdir) \
+ --includedir=$(builddir) \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+
+ CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
+diff --git a/gst-libs/gst/audio/Makefile.am b/gst-libs/gst/audio/Makefile.am
+index 7fb65f2..5379f79 100644
+--- a/gst-libs/gst/audio/Makefile.am
++++ b/gst-libs/gst/audio/Makefile.am
+@@ -174,12 +174,12 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE
+ -I$(top_srcdir)/gst-libs \
+ -I$(top_builddir)/gst-libs \
+ --c-include "gst/audio/audio.h" \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ --add-include-path="$(top_builddir)/gst-libs/gst/tag/" \
+ --library=libgstaudio-@GST_API_VERSION@.la \
+- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \
+- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \
++ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \
++ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \
+ --library-path="$(top_builddir)/gst-libs/gst/tag/" \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+@@ -208,8 +208,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+ --includedir=$(srcdir) \
+ --includedir=$(builddir) \
+ --includedir="$(top_builddir)/gst-libs/gst/tag/" \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+ $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+
+ CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
+diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am
+index 35a6e44..49d6894 100644
+--- a/gst-libs/gst/pbutils/Makefile.am
++++ b/gst-libs/gst/pbutils/Makefile.am
+@@ -88,14 +88,14 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP
+ --c-include "gst/pbutils/pbutils.h" \
+ -I$(top_srcdir)/gst-libs \
+ -I$(top_builddir)/gst-libs \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ --add-include-path="$(top_builddir)/gst-libs/gst/tag/" \
+ --add-include-path="$(top_builddir)/gst-libs/gst/video/" \
+ --add-include-path="$(top_builddir)/gst-libs/gst/audio/" \
+ --library=libgstpbutils-@GST_API_VERSION@.la \
+- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \
+- --library-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \
++ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-@GST_API_VERSION@` \
++ --library-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=libdir gstreamer-base-@GST_API_VERSION@` \
+ --library-path="$(top_builddir)/gst-libs/gst/tag/" \
+ --library-path="$(top_builddir)/gst-libs/gst/video/" \
+ --library-path="$(top_builddir)/gst-libs/gst/audio/" \
+@@ -128,8 +128,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+ $(INTROSPECTION_COMPILER) \
+ --includedir=$(srcdir) \
+ --includedir=$(builddir) \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ --includedir="$(top_builddir)/gst-libs/gst/tag/" \
+ --includedir="$(top_builddir)/gst-libs/gst/video/" \
+ --includedir="$(top_builddir)/gst-libs/gst/audio/" \
+diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am
+index e66ef4f..c8c588a 100644
+--- a/gst-libs/gst/riff/Makefile.am
++++ b/gst-libs/gst/riff/Makefile.am
+@@ -43,8 +43,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
+ # --c-include "gst/riff/riff.h" \
+ # --add-include-path=$(builddir)/../tag \
+ # --add-include-path=$(builddir)/../audio \
+-# --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+-# --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++# --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++# --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ # --library=libgstriff-@GST_API_VERSION@.la \
+ # --include=GstAudio-@GST_API_VERSION@ \
+ # --include=GstTag-@GST_API_VERSION@ \
+@@ -75,8 +75,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
+ # --includedir=$(builddir) \
+ # --includedir=$(builddir)/../tag \
+ # --includedir=$(builddir)/../audio \
+-# --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+-# --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++# --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++# --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ # $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+ #
+ #CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
+diff --git a/gst-libs/gst/rtp/Makefile.am b/gst-libs/gst/rtp/Makefile.am
+index 77ebeeb..9aee788 100644
+--- a/gst-libs/gst/rtp/Makefile.am
++++ b/gst-libs/gst/rtp/Makefile.am
+@@ -64,8 +64,8 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO
+ --c-include "gst/rtp/rtp.h" \
+ -I$(top_builddir)/gst-libs \
+ -I$(top_srcdir)/gst-libs \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ --library=libgstrtp-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+@@ -92,8 +92,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+ $(INTROSPECTION_COMPILER) \
+ --includedir=$(srcdir) \
+ --includedir=$(builddir) \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+
+ CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
+diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am
+index db9d0fd..79027cb 100644
+--- a/gst-libs/gst/rtsp/Makefile.am
++++ b/gst-libs/gst/rtsp/Makefile.am
+@@ -71,7 +71,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
+ -I$(top_builddir)/gst-libs \
+ -I$(top_srcdir)/gst-libs \
+ --add-include-path=$(builddir)/../sdp \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+ --library=libgstrtsp-@GST_API_VERSION@.la \
+ --include=Gio-2.0 \
+ --include=Gst-@GST_API_VERSION@ \
+@@ -101,7 +101,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+ --includedir=$(srcdir) \
+ --includedir=$(builddir) \
+ --includedir=$(builddir)/../sdp \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+ $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+
+ CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
+diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am
+index 6e05cc7..c7cf514 100644
+--- a/gst-libs/gst/sdp/Makefile.am
++++ b/gst-libs/gst/sdp/Makefile.am
+@@ -31,7 +31,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO
+ --warn-all \
+ --c-include "gst/sdp/sdp.h" \
+ -I$(top_srcdir)/gst-libs \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+ --library=libgstsdp-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --libtool="$(LIBTOOL)" \
+@@ -55,7 +55,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+ $(INTROSPECTION_COMPILER) \
+ --includedir=$(srcdir) \
+ --includedir=$(builddir) \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+ $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+
+ CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
+diff --git a/gst-libs/gst/tag/Makefile.am b/gst-libs/gst/tag/Makefile.am
+index c86515b..363e6d2 100644
+--- a/gst-libs/gst/tag/Makefile.am
++++ b/gst-libs/gst/tag/Makefile.am
+@@ -61,8 +61,8 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO
+ --c-include "gst/tag/tag.h" \
+ -I$(top_srcdir)/gst-libs \
+ -I$(top_builddir)/gst-libs \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ --library=libgsttag-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+@@ -89,8 +89,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+ $(INTROSPECTION_COMPILER) \
+ --includedir=$(srcdir) \
+ --includedir=$(builddir) \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+
+ CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
+diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am
+index 0f7c07e..d642267 100644
+--- a/gst-libs/gst/video/Makefile.am
++++ b/gst-libs/gst/video/Makefile.am
+@@ -121,8 +121,8 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE
+ --c-include "gst/video/video.h" \
+ -I$(top_srcdir)/gst-libs \
+ -I$(top_builddir)/gst-libs \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ --library=libgstvideo-@GST_API_VERSION@.la \
+ --include=Gst-@GST_API_VERSION@ \
+ --include=GstBase-@GST_API_VERSION@ \
+@@ -149,8 +149,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+ $(INTROSPECTION_COMPILER) \
+ --includedir=$(srcdir) \
+ --includedir=$(builddir) \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+- --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
++ --includedir=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
+ $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+
+ CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0003-riff-add-missing-include-directories-when-calling-in.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0003-riff-add-missing-include-directories-when-calling-in.patch
new file mode 100644
index 00000000..9b66f7f4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0003-riff-add-missing-include-directories-when-calling-in.patch
@@ -0,0 +1,28 @@
+From 3c2c2d5dd08aa30ed0e8acd8566ec99412bb8209 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 26 Oct 2015 17:29:37 +0200
+Subject: [PATCH 3/4] riff: add missing include directories when calling
+ introspection scanner
+
+Upstream-Status: Pending [review on oe-core maillist]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gst-libs/gst/riff/Makefile.am | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/gst-libs/gst/riff/Makefile.am b/gst-libs/gst/riff/Makefile.am
+index 0a115cc..5057a58 100644
+--- a/gst-libs/gst/riff/Makefile.am
++++ b/gst-libs/gst/riff/Makefile.am
+@@ -39,6 +39,8 @@ libgstriff_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS)
+ # --strip-prefix=Gst \
+ # --warn-all \
+ # --c-include "gst/riff/riff.h" \
++# -I$(top_srcdir)/gst-libs \
++# -I$(top_builddir)/gst-libs \
+ # --add-include-path=$(builddir)/../tag \
+ # --add-include-path=$(builddir)/../audio \
+ # --add-include-path=$(PKG_CONFIG_SYSROOT_DIR)`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
+--
+2.6.2
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
new file mode 100644
index 00000000..4adf6054
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch
@@ -0,0 +1,27 @@
+From 4330915d88dc4dd46eb4c28d756482b767c2747f Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 26 Oct 2015 17:30:14 +0200
+Subject: [PATCH 4/4] rtsp: drop incorrect reference to gstreamer-sdp in
+ Makefile.am
+
+Upstream-Status: Pending [review on oe-core maillist]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gst-libs/gst/rtsp/Makefile.am | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am
+index 4f6d9f8..0afa370 100644
+--- a/gst-libs/gst/rtsp/Makefile.am
++++ b/gst-libs/gst/rtsp/Makefile.am
+@@ -75,7 +75,6 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS
+ --libtool="$(LIBTOOL)" \
+ --pkg gio-2.0 \
+ --pkg gstreamer-@GST_API_VERSION@ \
+- --pkg gstreamer-sdp-@GST_API_VERSION@ \
+ --pkg-export gstreamer-rtsp-@GST_API_VERSION@ \
+ --add-init-section="$(INTROSPECTION_INIT)" \
+ --output $@ \
+--
+2.6.2
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/make-gio_unix_2_0-dependency-configurable.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/make-gio_unix_2_0-dependency-configurable.patch
new file mode 100644
index 00000000..23950b67
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base-1.14.imx/make-gio_unix_2_0-dependency-configurable.patch
@@ -0,0 +1,45 @@
+From 7ffa6e3d00e1d8a060f3f4c2bb9a72691af05d79 Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Wed, 20 Jan 2016 13:00:00 -0800
+Subject: [PATCH] make gio_unix_2_0 dependency configurable
+
+Prior to 1.7.1, gst-plugins-base accepted a configure option to
+disable gio_unix_2_0, however it was implemented incorrectly using
+AG_GST_CHECK_FEATURE. That was fixed in 1.7.1 by making the
+dependency unconditional.
+
+ http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=aadefefba88afe4acbe64454650f24e7ce7c8d70
+
+To make builds deterministic, re-instate support for
+--disable-gio_unix_2_0, but implement it using the AC_ARG_ENABLE
+instead of AG_GST_CHECK_FEATURE.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+
+---
+ configure.ac | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 12807bc..35a0bf3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -806,9 +806,16 @@ AM_CONDITIONAL(HAVE_PNG, test "x$HAVE_PNG" = "xyes")
+ AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes")
+
+ dnl *** gio-unix-2.0 for tests/check/pipelines/tcp.c ***
++AC_ARG_ENABLE([gio_unix_2_0],
++ [AS_HELP_STRING([--disable-gio_unix_2_0],[disable use of gio_unix_2_0])],
++ [],
++ [enable_gio_unix_2_0=yes])
++
++if test "x${enable_gio_unix_2_0}" != "xno"; then
+ PKG_CHECK_MODULES(GIO_UNIX_2_0, gio-unix-2.0 >= 2.24,
+ HAVE_GIO_UNIX_2_0="yes",
+ HAVE_GIO_UNIX_2_0="no")
++fi
+ AM_CONDITIONAL(USE_GIO_UNIX_2_0, test "x$HAVE_GIO_UNIX_2_0" = "xyes")
+
+ dnl *** finalize CFLAGS, LDFLAGS, LIBS
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.%.bbappend b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.%.bbappend
new file mode 100644
index 00000000..8565c6a5
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.%.bbappend
@@ -0,0 +1,3 @@
+PACKAGECONFIG_GL_imxgpu2d = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'opengl', '', d)}"
+PACKAGECONFIG_GL_imxgpu3d = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}"
+PACKAGECONFIG_GL_use-mainline-bsp = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}"
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb
new file mode 100644
index 00000000..0da9a2ea
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.14.imx.bb
@@ -0,0 +1,76 @@
+require recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \
+ file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \
+ file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607"
+
+DEPENDS += "iso-codes util-linux"
+
+GST1.0-PLUGINS-BASE_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-base.git;protocol=https"
+SRCBRANCH = "MM_04.04.02_1808_L4.9.123_MX8MM_GA"
+
+SRC_URI = " \
+ ${GST1.0-PLUGINS-BASE_SRC};branch=${SRCBRANCH} \
+ file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
+ file://make-gio_unix_2_0-dependency-configurable.patch \
+ file://0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch \
+ file://0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch \
+ file://0003-riff-add-missing-include-directories-when-calling-in.patch \
+ file://0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch \
+"
+SRCREV = "e1f90437939b147658efed4d86c3f99d5e606968"
+
+DEFAULT_PREFERENCE = "-1"
+
+EXTRA_AUTORECONF = ""
+
+S = "${WORKDIR}/git"
+
+# Enable pango lib
+PACKAGECONFIG_append = " pango "
+
+# Disable introspection to fix [GstGL-1.0.gir] Error
+EXTRA_OECONF_append = " --disable-introspection --disable-opengl --enable-wayland"
+
+inherit gettext use-imx-headers
+
+PACKAGES_DYNAMIC =+ "^libgst.*"
+
+PACKAGECONFIG ??= " \
+ ${GSTREAMER_ORC} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \
+ ogg pango theora vorbis \
+"
+
+X11DEPENDS = "virtual/libx11 libsm libxrender libxv"
+X11ENABLEOPTS = "--enable-x --enable-xvideo --enable-xshm"
+X11DISABLEOPTS = "--disable-x --disable-xvideo --disable-xshm"
+
+PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
+PACKAGECONFIG[cdparanoia] = "--enable-cdparanoia,--disable-cdparanoia,cdparanoia"
+PACKAGECONFIG[ivorbis] = "--enable-ivorbis,--disable-ivorbis,tremor"
+PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libogg"
+PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus"
+PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango"
+PACKAGECONFIG[theora] = "--enable-theora,--disable-theora,libtheora"
+PACKAGECONFIG[visual] = "--enable-libvisual,--disable-libvisual,libvisual"
+PACKAGECONFIG[vorbis] = "--enable-vorbis,--disable-vorbis,libvorbis"
+PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
+
+EXTRA_OECONF += " \
+ --enable-zlib \
+ CPPFLAGS="-I${STAGING_INCDIR_IMX}" \
+"
+
+CACHED_CONFIGUREVARS_append_x86 = " ac_cv_header_emmintrin_h=no ac_cv_header_xmmintrin_h=no"
+
+FILES_${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict"
+
+do_compile_prepend() {
+ export GIR_EXTRA_LIBS_PATH="${B}/gst-libs/gst/tag/.libs:${B}/gst-libs/gst/video/.libs:${B}/gst-libs/gst/audio/.libs:${B}/gst-libs/gst/rtp/.libs"
+}
+
+FILES_${PN} += "${libdir}/gstreamer-1.0/include"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.%.bbappend b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.%.bbappend
new file mode 100644
index 00000000..8565c6a5
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.%.bbappend
@@ -0,0 +1,3 @@
+PACKAGECONFIG_GL_imxgpu2d = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'opengl', '', d)}"
+PACKAGECONFIG_GL_imxgpu3d = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}"
+PACKAGECONFIG_GL_use-mainline-bsp = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}"
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb
new file mode 100644
index 00000000..d527073b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.14.imx.bb
@@ -0,0 +1,71 @@
+require recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc
+
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+ file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607 \
+ file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
+
+GST1.0-PLUGINS-GOOD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-good.git;protocol=https"
+SRCBRANCH = "MM_04.04.02_1808_L4.9.123_MX8MM_GA"
+
+SRC_URI = " \
+ ${GST1.0-PLUGINS-GOOD_SRC};branch=${SRCBRANCH} \
+"
+SRCREV = "f25cda9043fee159197898bb810d6e64f2a11140"
+
+DEFAULT_PREFERENCE = "-1"
+
+EXTRA_AUTORECONF = ""
+
+S = "${WORKDIR}/git"
+
+DEPENDS += "gstreamer1.0-plugins-base libcap zlib bzip2"
+RPROVIDES_${PN}-soup += "${PN}-souphttpsrc"
+
+inherit gettext
+
+PACKAGECONFIG ??= " \
+ ${GSTREAMER_ORC} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \
+ cairo flac gdk-pixbuf gudev jpeg libpng soup speex taglib v4l2 \
+"
+
+X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage"
+
+PACKAGECONFIG[cairo] = "--enable-cairo,--disable-cairo,cairo"
+PACKAGECONFIG[dv1394] = "--enable-dv1394,--disable-dv1394,libiec61883 libavc1394 libraw1394"
+PACKAGECONFIG[flac] = "--enable-flac,--disable-flac,flac"
+PACKAGECONFIG[gdk-pixbuf] = "--enable-gdk_pixbuf,--disable-gdk_pixbuf,gdk-pixbuf"
+PACKAGECONFIG[gudev] = "--with-gudev,--without-gudev,libgudev"
+PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
+PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
+PACKAGECONFIG[libpng] = "--enable-libpng,--disable-libpng,libpng"
+PACKAGECONFIG[libv4l2] = "--with-libv4l2,--without-libv4l2,v4l-utils"
+PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio"
+PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,libsoup-2.4"
+PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex"
+PACKAGECONFIG[taglib] = "--enable-taglib,--disable-taglib,taglib"
+PACKAGECONFIG[v4l2] = "--enable-gst_v4l2 --enable-v4l2-probe,--disable-gst_v4l2,libdrm"
+PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx,libvpx"
+PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack"
+PACKAGECONFIG[x11] = "--enable-x,--disable-x,${X11DEPENDS}"
+
+EXTRA_OECONF += " \
+ --enable-bz2 \
+ --enable-oss \
+ --enable-zlib \
+ --disable-aalib \
+ --disable-aalibtest \
+ --disable-directsound \
+ --disable-libcaca \
+ --disable-libdv \
+ --disable-oss4 \
+ --disable-osx_audio \
+ --disable-osx_video \
+ --disable-shout2 \
+ --disable-waveform \
+"
+
+FILES_${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_git.bb b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_git.bb
new file mode 100644
index 00000000..a74ff64b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_git.bb
@@ -0,0 +1,71 @@
+# Copyright (C) 2018 O.S. Systems Software LTDA.
+DESCRIPTION = "GStreamer 1.0 plugins for i.MX platforms"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=55ca817ccb7d5b5b66355690e9abc605"
+SECTION = "multimedia"
+# gstreamer1.0-plugins-bad is in DEPENDS because the build script scans for the
+# GstPhotography headers and libraries
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
+# add the audioparsers and the videoparsersbad plugins as RDEPENDS ; audioparsers
+# for the uniaudio decoder, videoparsersbad for the VPU video decoder
+# the gstreamer1.0-plugins-imx RDEPENDS is necessary to ensure the -good recipe is
+# build (it is not a compile-time dependency however, hence RDEPENDS and not DEPENDS)
+RDEPENDS_gstreamer1.0-plugins-imx = "gstreamer1.0-plugins-good"
+RDEPENDS_gstreamer1.0-plugins-imx-imxaudio = "gstreamer1.0-plugins-good-audioparsers"
+RDEPENDS_gstreamer1.0-plugins-imx-imxvpu = "gstreamer1.0-plugins-bad-videoparsersbad"
+
+PV = "0.13.0+git${SRCPV}"
+
+SRCBRANCH ?= "master"
+SRCREV = "963aea60b135d40236411357eb0b2de15eac9af5"
+SRC_URI = "git://github.com/Freescale/gstreamer-imx.git;branch=${SRCBRANCH}"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig waf use-imx-headers
+
+# configure the eglvivsink element to use the appropriate EGL platform code
+# Wayland if 'wayland' is present in DISTRO_FEATURES, if not,
+# X11 if x11 is present in DISTRO_FEATURES,
+# Framebuffer otherwise
+EGLVIVSINK_PLATFORM = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', \
+ 'fb', d),d)}"
+
+EGL_PLATFORM_CONF = "--egl-platform=${EGLVIVSINK_PLATFORM}"
+
+EXTRA_OECONF = "--kernel-headers=${STAGING_INCDIR_IMX} ${PACKAGECONFIG_CONFARGS}"
+
+EGLVIVSINK_DEPENDS = " \
+ virtual/egl virtual/libgles2 \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \
+ bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11', \
+ '', d), d)} \
+"
+
+PACKAGECONFIG ?= "uniaudiodec mp3encoder v4l2src v4l2sink"
+PACKAGECONFIG_append_imxgpu3d = " eglvivsink"
+PACKAGECONFIG_append_imxgpu2d = " g2d g2dpango"
+PACKAGECONFIG_append_imxipu = " ipu"
+PACKAGECONFIG_append_imxvpu = " vpu"
+PACKAGECONFIG_append_imxpxp = " pxp"
+
+PACKAGECONFIG[g2d] = ",--disable-g2d,imx-gpu-viv"
+PACKAGECONFIG[g2dpango] = ",--disable-g2dpango,imx-gpu-viv pango"
+PACKAGECONFIG[pxp] = ",--disable-pxp,"
+PACKAGECONFIG[ipu] = ",--disable-ipu,"
+PACKAGECONFIG[vpu] = ",--disable-vpu,libimxvpuapi"
+PACKAGECONFIG[eglvivsink] = "${EGL_PLATFORM_CONF},--disable-eglvivsink,${EGLVIVSINK_DEPENDS}"
+PACKAGECONFIG[v4l2src] = ",--disable-imxv4l2videosrc,"
+PACKAGECONFIG[v4l2sink] = ",--disable-imxv4l2videosink,"
+PACKAGECONFIG[uniaudiodec] = ",--disable-uniaudiodec,imx-codec"
+PACKAGECONFIG[mp3encoder] = ",--disable-mp3encoder,imx-codec"
+
+# LIBV is used by gst-plugins-package.inc to specify the GStreamer version (0.10 vs 1.0)
+LIBV = "1.0"
+require recipes-multimedia/gstreamer/gst-plugins-package.inc
+
+# the following line is required to produce one package for each plugin
+PACKAGES_DYNAMIC = "^${PN}-.*"
+
+COMPATIBLE_MACHINE = "(mx6dl|mx6q|mx6sl|mx6sx|mx6ul|mx6ull|mx7d)"
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb
new file mode 100644
index 00000000..30a6c03a
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/gstreamer1.0_1.14.imx.bb
@@ -0,0 +1,76 @@
+SUMMARY = "GStreamer 1.0 multimedia framework"
+DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \
+It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime."
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
+SECTION = "multimedia"
+LICENSE = "LGPLv2+"
+
+DEPENDS = "glib-2.0 glib-2.0-native libcap libxml2 bison-native flex-native elfutils"
+
+inherit autotools pkgconfig gettext upstream-version-is-even gobject-introspection gtk-doc
+
+# This way common/m4/introspection.m4 will come first
+# (it has a custom INTROSPECTION_INIT macro, and so must be used instead of our common introspection.m4 file)
+acpaths = "-I ${S}/common/m4 -I ${S}/m4"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
+ file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
+
+# Use i.MX fork of GST for customizations
+GST1.0_SRC ?= "gitsm://source.codeaurora.org/external/imx/gstreamer.git;protocol=https"
+SRCBRANCH = "MM_04.04.02_1808_L4.9.123_MX8MM_GA"
+
+SRC_URI = " \
+ ${GST1.0_SRC};branch=${SRCBRANCH} \
+ file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_CON.patch \
+ file://gtk-doc-tweaks.patch \
+ file://0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \
+"
+SRCREV = "f4e127a5e9a1eb977e023532d6636d939c8ccbc8"
+
+DEFAULT_PREFERENCE = "-1"
+
+EXTRA_AUTORECONF = ""
+
+PACKAGECONFIG ??= ""
+
+PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
+PACKAGECONFIG[tests] = "--enable-tests,--disable-tests"
+PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind,"
+PACKAGECONFIG[gst-tracer-hooks] = "--enable-gst-tracer-hooks,--disable-gst-tracer-hooks,"
+
+EXTRA_OECONF = " \
+ --disable-dependency-tracking \
+ --disable-examples \
+"
+
+CACHED_CONFIGUREVARS += "ac_cv_header_valgrind_valgrind_h=no"
+
+# musl libc generates warnings if <sys/poll.h> is included directly
+CACHED_CONFIGUREVARS += "ac_cv_header_sys_poll_h=no"
+
+PACKAGES += "${PN}-bash-completion"
+
+FILES_${PN} += "${libdir}/gstreamer-1.0/*.so"
+FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la ${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include"
+FILES_${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*"
+
+RRECOMMENDS_${PN}_qemux86 += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi"
+RRECOMMENDS_${PN}_qemux86-64 += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi"
+
+delete_pkg_m4_file() {
+ # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection
+ rm "${S}/common/m4/pkg.m4" || true
+ rm -f "${S}/common/m4/gtk-doc.m4"
+}
+
+do_configure[prefuncs] += "delete_pkg_m4_file"
+
+do_compile_prepend() {
+ export GIR_EXTRA_LIBS_PATH="${B}/gst/.libs:${B}/libs/gst/base/.libs"
+}
+
+S = "${WORKDIR}/git"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-imx-gst1.0-plugin-Fix-ion.h-header-inclusion-to-be-s.patch b/bsp/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-imx-gst1.0-plugin-Fix-ion.h-header-inclusion-to-be-s.patch
new file mode 100644
index 00000000..4e861a5d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-imx-gst1.0-plugin-Fix-ion.h-header-inclusion-to-be-s.patch
@@ -0,0 +1,44 @@
+From e4c96421700ecd008814bceceaf03f0ee9323c02 Mon Sep 17 00:00:00 2001
+From: Yuqing Zhu <carol.zhu@nxp.com>
+Date: Thu, 27 Sep 2018 16:00:55 +0800
+Subject: [PATCH] imx-gst1.0-plugin: Fix ion.h header inclusion to be standard
+
+NXP "solution" was to manually copy the header to include/linux.
+Let's point the Makefile to the proper (mainline) location instead:
+https://elixir.bootlin.com/linux/v4.17/source/drivers/staging/android/uapi/ion.h
+
+Signed-off-by: Yuqing Zhu <carol.zhu@nxp.com>
+---
+ configure.ac | 2 +-
+ libs/gstimxcommon.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 7b2709d..d94e3a8 100755
+--- a/configure.ac
++++ b/configure.ac
+@@ -216,7 +216,7 @@ dnl check ion allocator headfile
+ old_CFLAGS=$CFLAGS
+ PKG_CHECK_MODULES(GST, gstreamer-$GST_MAJORMINOR >= 1.14, CFLAGS="$CFLAGS `$PKG_CONFIG --cflags gstreamer-allocators-1.0`",\
+ CFLAGS="$CFLAGS `$PKG_CONFIG --cflags gstreamer-bad-allocators-1.0`")
+-AC_CHECK_HEADERS([linux/ion.h gst/allocators/gstionmemory.h], HAVE_ION="yes", HAVE_ION="no")
++AC_CHECK_HEADERS([ion.h gst/allocators/gstionmemory.h], HAVE_ION="yes", HAVE_ION="no")
+ AM_CONDITIONAL(USE_ION, test "x$HAVE_ION" = "xyes")
+ CFLAGS=$old_CFLAGS
+
+diff --git a/libs/gstimxcommon.c b/libs/gstimxcommon.c
+index eb808b9..c02ab5f 100644
+--- a/libs/gstimxcommon.c
++++ b/libs/gstimxcommon.c
+@@ -26,7 +26,7 @@
+ #include <linux/version.h>
+ #include <linux/dma-buf.h>
+ #ifdef USE_ION
+-#include <linux/ion.h>
++#include <ion.h>
+ #endif
+ const char *dev_ion = "/dev/ion";
+
+--
+1.9.1
+
diff --git a/bsp/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.2.bb b/bsp/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.2.bb
new file mode 100644
index 00000000..986d4a1d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.4.2.bb
@@ -0,0 +1,83 @@
+# Copyright (C) 2014,2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Copyright (C) 2012-2015 O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "Gstreamer freescale plugins"
+LICENSE = "GPLv2 & LGPLv2 & LGPLv2.1"
+SECTION = "multimedia"
+
+DEPENDS = "imx-codec imx-parser gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
+DEPENDS_append_mx6 = " imx-lib"
+DEPENDS_append_mx7 = " imx-lib"
+DEPENDS_append_imxvpu = " imx-vpuwrap libdrm"
+
+# For backwards compatibility
+RREPLACES_${PN} = "gst1.0-fsl-plugin"
+RPROVIDES_${PN} = "gst1.0-fsl-plugin"
+RCONFLICTS_${PN} = "gst1.0-fsl-plugin"
+
+LIC_FILES_CHKSUM = "file://COPYING-LGPL-2;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+ file://COPYING-LGPL-2.1;md5=fbc093901857fcd118f065f900982c24"
+
+IMXGST_SRC ?= "git://source.codeaurora.org/external/imx/imx-gst1.0-plugin.git;protocol=https"
+SRCBRANCH = "MM_04.04.02_1808_L4.9.123_MX8MM_GA"
+
+SRC_URI = "${IMXGST_SRC};branch=${SRCBRANCH}"
+SRCREV = "23dd0315c7087e1c8eba836b9a458d7906187c7e"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig use-imx-headers
+
+PLATFORM_mx6 = "MX6"
+PLATFORM_mx6sl = "MX6SL"
+PLATFORM_mx6sx = "MX6SX"
+PLATFORM_mx6ul = "MX6UL"
+PLATFORM_mx6sll = "MX6SLL"
+PLATFORM_mx7= "MX7D"
+PLATFORM_mx7ulp= "MX7ULP"
+PLATFORM_mx8 = "MX8"
+
+# Todo add a mechanism to map possible build targets
+EXTRA_OECONF = "PLATFORM=${PLATFORM} \
+ CPPFLAGS="-I${STAGING_INCDIR_IMX}" \
+ CROSS_ROOT=${PKG_CONFIG_SYSROOT_DIR} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', bb.utils.contains('DISTRO_FEATURES', 'x11', '--disable-x11', '', d), '', d)}"
+
+PACKAGES =+ "${PN}-gplay ${PN}-libgplaycore ${PN}-libgstfsl ${PN}-grecorder ${PN}-librecorder-engine ${PN}-libplayengine"
+
+# Add codec list that the beep plugin run-time depended
+BEEP_RDEPENDS = "imx-codec-aac imx-codec-mp3 imx-codec-oggvorbis"
+RDEPENDS_${PN} += "imx-parser ${BEEP_RDEPENDS} gstreamer1.0-plugins-good-id3demux "
+
+# overlaysink rely on G2D,
+# cannot be supported on i.MX6SLL & i.MX6UL & i.MX6ULL & i.MX7D
+PACKAGECONFIG ?= ""
+PACKAGECONFIG_imxgpu2d = "overlaysink"
+
+
+# FIXME: Add all features
+# feature from excluded mm packages
+PACKAGECONFIG[ac3] += ",,imx-ac3codec,imx-ac3codec"
+# feature from special mm packages
+PACKAGECONFIG[aacp] += ",,imx-aacpcodec,imx-aacpcodec"
+MSDEPENDS = "imx-msparser imx-mscodec"
+PACKAGECONFIG[wma10dec] += ",,${MSDEPENDS},${MSDEPENDS}"
+PACKAGECONFIG[wma8enc] += "--enable-wma8enc,--disable-wma8enc,${MSDEPENDS},${MSDEPENDS}"
+OVDEPENDS = "virtual/libg2d"
+PACKAGECONFIG[overlaysink] += "--enable-overlaysink,--disable-overlaysink, ${OVDEPENDS}"
+
+FILES_${PN} = "${libdir}/gstreamer-1.0/*.so ${datadir}"
+
+FILES_${PN}-dbg += "${libdir}/gstreamer-1.0/.debug"
+FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la ${libdir}/pkgconfig/*.pc"
+FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
+FILES_${PN}-gplay = "${bindir}/gplay-1.0"
+FILES_${PN}-libgplaycore = "${libdir}/libgplaycore-1.0${SOLIBS}"
+FILES_${PN}-libgstfsl = "${libdir}/libgstfsl-1.0${SOLIBS}"
+FILES_${PN}-grecorder = "${bindir}/grecorder-1.0"
+FILES_${PN}-librecorder-engine = "${libdir}/librecorder_engine-1.0${SOLIBS}"
+FILES_${PN}-libplayengine = "${libdir}/libplayengine-1.0${SOLIBS}"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-multimedia/imx-codec/imx-codec_4.4.2.bb b/bsp/meta-freescale/recipes-multimedia/imx-codec/imx-codec_4.4.2.bb
new file mode 100644
index 00000000..60a3717e
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/imx-codec/imx-codec_4.4.2.bb
@@ -0,0 +1,119 @@
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright 2017 NXP
+# Copyright 2018 (C) O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+DESCRIPTION = "Freescale Multimedia codec libs"
+LICENSE = "Proprietary"
+SECTION = "multimedia"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db"
+
+# Backward compatibility
+PROVIDES += "libfslcodec"
+
+SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
+SRC_URI[md5sum] = "6087fbac97002b7d8c5dd061e6b36417"
+SRC_URI[sha256sum] = "f225968d8efcdb8f1843adae162360df04166e91acea2c32388cf699f410bdda"
+
+inherit fsl-eula-unpack autotools pkgconfig
+
+# Choose between 32-bit and 64-bit binaries and between Soft Float-Point and Hard Float-Point
+EXTRA_OECONF = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '--enable-armv8', \
+ bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--enable-fhw', '', d), d)}"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG_imxvpu = "vpu"
+
+PACKAGECONFIG[vpu] = "--enable-vpu,--disable-vpu,virtual/imxvpu"
+
+do_install_append() {
+ # FIXME: This link points to nowhere
+ if [ -e ${D}${libdir}/imx-mm/audio-codec/lib_src_ppp_arm11_elinux.so ]; then
+ rm ${D}${libdir}/imx-mm/audio-codec/lib_src_ppp_arm11_elinux.so
+ fi
+
+ # LTIB move the files around or gst-fsl-plugin won't find them
+ for p in $(find ${D}${libdir}/imx-mm -mindepth 2 -maxdepth 2 -not -type d); do
+ mv $p ${D}${libdir}
+ done
+ rmdir ${D}${libdir}/imx-mm/video-codec
+
+}
+
+python __set_insane_skip() {
+ # Ensure we have PACKAGES expanded
+ bb.build.exec_func("read_subpackage_metadata", d)
+
+ for p in d.getVar('PACKAGES', True).split():
+ # Even though we are packaging libraries those are plugins so we
+ # shouldn't rename the packages to follow its sonames.
+ d.setVar("DEBIAN_NOAUTONAME_%s" % p, "1")
+
+ # FIXME: All binaries lack GNU_HASH in elf binary but as we don't have
+ # the source we cannot fix it. Disable the insane check for now.
+ if p == 'imx-codec-test-bin':
+ # FIXME: includes the DUT .so files so we need to deploy those
+ d.setVar("INSANE_SKIP_%s" % p, "ldflags textrel libdir file-rdeps")
+ else:
+ d.setVar("INSANE_SKIP_%s" % p, "ldflags textrel")
+}
+
+do_package_qa[prefuncs] += "__set_insane_skip"
+
+python __split_libfslcodec_plugins() {
+ codecdir = bb.data.expand('${libdir}', d)
+ do_split_packages(d, codecdir, '^lib_([^_]*).*_arm.*_elinux\.so\..*',
+ aux_files_pattern='${libdir}/imx-mm/audio-codec/wrap/lib_%sd_wrap_arm*_elinux.so.*',
+ output_pattern='imx-codec-%s',
+ description='Freescale i.MX Codec (%s)',
+ extra_depends='')
+ pkgs = d.getVar('PACKAGES', True).split()
+ for pkg in pkgs:
+ meta = pkg[10:]
+ if meta != '':
+ d.setVar('RREPLACES_%s' % pkg, ' libfslcodec-%s' % meta)
+ d.setVar('RPROVIDES_%s' % pkg, ' libfslcodec-%s' % meta)
+ d.setVar('RCONFLICTS_%s' % pkg, ' libfslcodec-%s' % meta)
+ else :
+ d.setVar('RREPLACES_%s' % pkg, ' libfslcodec')
+ d.setVar('RPROVIDES_%s' % pkg, ' libfslcodec')
+ d.setVar('RCONFLICTS_%s' % pkg, ' libfslcodec')
+}
+
+python __set_metapkg_rdepends() {
+ # Allow addition of all codecs in a image; useful specially for
+ # debugging.
+ codec_pkgs = oe.utils.packages_filter_out_system(d)
+ codec_pkgs = filter(lambda x: x not in ['imx-codec-test-bin', 'imx-codec-test-source'],
+ codec_pkgs)
+ d.appendVar('RDEPENDS_imx-codec-meta', ' ' + ' '.join(codec_pkgs))
+}
+
+PACKAGESPLITFUNCS =+ "__split_libfslcodec_plugins __set_metapkg_rdepends"
+
+PACKAGES_DYNAMIC = "${PN}-*"
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+
+PACKAGES += "${PN}-meta ${PN}-test-bin ${PN}-test-source"
+
+ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY_${PN}-meta = "1"
+
+# Ensure we get warnings if we miss something
+FILES_${PN} = ""
+
+FILES_${PN}-dev += "${libdir}/imx-mm/*/*${SOLIBSDEV} \
+ ${libdir}/imx-mm/*/*/*${SOLIBSDEV} \
+ ${libdir}/pkgconfig/*.pc ${includedir}/imx-mm/*"
+
+FILES_${PN}-test-bin += "${datadir}/imx-mm/*/examples/*/bin"
+
+FILES_${PN}-test-source += "${datadir}/imx-mm/*"
+
+# FIXME: The wrap and lib names does not match
+FILES_${PN}-oggvorbis += "${libdir}/imx-mm/audio-codec/wrap/lib_vorbisd_wrap_arm*_elinux.so.*"
+FILES_${PN}-nb += "${libdir}/imx-mm/audio-codec/wrap/lib_nbamrd_wrap_arm*_elinux.so.*"
+FILES_${PN}-wb += "${libdir}/imx-mm/audio-codec/wrap/lib_wbamrd_wrap_arm*_elinux.so.*"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-multimedia/imx-parser/imx-parser_4.4.2.bb b/bsp/meta-freescale/recipes-multimedia/imx-parser/imx-parser_4.4.2.bb
new file mode 100644
index 00000000..492ab893
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/imx-parser/imx-parser_4.4.2.bb
@@ -0,0 +1,46 @@
+# Copyright (C) 2012-2018 O.S. Systems Software LTDA.
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright 2017 NXP
+# Released under the MIT license (see COPYING.MIT for the terms)
+DESCRIPTION = "Freescale Multimedia parser libs"
+LICENSE = "Proprietary"
+SECTION = "multimedia"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db"
+
+# For backwards compatibility
+PROVIDES += "libfslparser"
+RREPLACES_${PN} = "libfslparser"
+RPROVIDES_${PN} = "libfslparser"
+RCONFLICTS_${PN} = "libfslparser"
+
+SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
+SRC_URI[md5sum] = "0e425e143900f980c6fe7f735a679829"
+SRC_URI[sha256sum] = "21d1066dcdc6f0eb7efc56910ee9b116883456a013837506a0632153baedcbf3"
+
+inherit fsl-eula-unpack autotools pkgconfig
+
+# Choose between 32-bit and 64-bit binaries and between Soft Float-Point and Hard Float-Point
+EXTRA_OECONF = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '--enable-armv8', \
+ bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', '--enable-fhw', '--enable-fsw', d), d)}"
+
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+
+python __set_insane_skip() {
+ # FIXME: All binaries lack GNU_HASH in elf binary but as we don't have
+ # the source we cannot fix it. Disable the insane check for now.
+ # FIXME: gst-fsl-plugin looks for the .so files so we need to deploy those
+ for p in d.getVar('PACKAGES', True).split():
+ d.setVar("INSANE_SKIP_%s" % p, "ldflags dev-so textrel")
+}
+
+do_package_qa[prefuncs] += "__set_insane_skip"
+
+# FIXME: gst-fsl-plugin looks for the .so files so we need to deploy those
+FILES_${PN} += "${libdir}/imx-mm/*/*${SOLIBS} ${libdir}/imx-mm/*/*${SOLIBSDEV}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+INHIBIT_SYSROOT_STRIP = "1"
+
+COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"
diff --git a/bsp/meta-freescale/recipes-multimedia/imx-vpuwrap/imx-vpuwrap_4.4.2.bb b/bsp/meta-freescale/recipes-multimedia/imx-vpuwrap/imx-vpuwrap_4.4.2.bb
new file mode 100644
index 00000000..c23c7fc9
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/imx-vpuwrap/imx-vpuwrap_4.4.2.bb
@@ -0,0 +1,32 @@
+# Copyright (C) 2013-2016 Freescale Semiconductor
+# Copyright 2017 NXP
+# Copyright 2018 (C) O.S. Systems Software LTDA.
+# Released under the MIT license (see COPYING.MIT for the terms)
+DESCRIPTION = "Freescale Multimedia VPU wrapper"
+DEPENDS = "virtual/imxvpu"
+LICENSE = "Proprietary"
+SECTION = "multimedia"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db"
+
+# For backwards compatibility
+PROVIDES += "libfslvpuwrap"
+RREPLACES_${PN} = "libfslvpuwrap"
+RPROVIDES_${PN} = "libfslvpuwrap"
+RCONFLICTS_${PN} = "libfslvpuwrap"
+
+SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
+
+SRC_URI[md5sum] = "86d1829ef62ab51e187479bfea686874"
+SRC_URI[sha256sum] = "85f01ebdf55e4bd7a7cc21eb5203dfcaa7b663f03ecdb8d5e54fbb995e3dc761"
+
+inherit fsl-eula-unpack autotools pkgconfig
+
+do_install_append() {
+ # FIXME: Drop examples for now
+ rm -r ${D}${datadir}
+}
+
+INSANE_SKIP_imx-vpuwrap = "file-rdeps"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE = "(imxvpu)"
diff --git a/bsp/meta-freescale/recipes-multimedia/libimxvpuapi/libimxvpuapi_git.bb b/bsp/meta-freescale/recipes-multimedia/libimxvpuapi/libimxvpuapi_git.bb
new file mode 100644
index 00000000..540565f6
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/libimxvpuapi/libimxvpuapi_git.bb
@@ -0,0 +1,21 @@
+# Copyright 2018 (C) O.S. Systems Software LTDA.
+DESCRIPTION = "frontend for the i.MX6 VPU hardware video engine"
+HOMEPAGE = "https://github.com/Freescale/libimxvpuapi"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=38fa42a5a6425b26d2919b17b1527324"
+SECTION = "multimedia"
+DEPENDS = "imx-vpu"
+
+PV = "0.10.3+${SRCPV}"
+
+SRCBRANCH ?= "master"
+SRCREV = "4afb52f97e28c731c903a8538bf99e4a6d155b42"
+SRC_URI = "git://github.com/Freescale/libimxvpuapi.git;branch=${SRCBRANCH}"
+
+S = "${WORKDIR}/git"
+
+inherit waf pkgconfig
+
+COMPATIBLE_MACHINE = "(mx6q|mx6dl)"
+
+EXTRA_OECONF = "--libdir=${libdir}"
diff --git a/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/daemon.conf b/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/daemon.conf
new file mode 100644
index 00000000..9eb954bb
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/daemon.conf
@@ -0,0 +1,87 @@
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA.
+
+## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
+## more information. Default values are commented out. Use either ; or # for
+## commenting.
+
+; daemonize = no
+; fail = yes
+; allow-module-loading = yes
+; allow-exit = yes
+; use-pid-file = yes
+; system-instance = no
+; local-server-type = user
+; enable-shm = yes
+; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
+; lock-memory = no
+; cpu-limit = no
+
+; high-priority = yes
+; nice-level = -11
+
+; realtime-scheduling = yes
+; realtime-priority = 5
+
+exit-idle-time = -1
+; scache-idle-time = 20
+
+; dl-search-path = (depends on architecture)
+
+; load-default-script-file = yes
+; default-script-file = /etc/pulse/default.pa
+
+; log-target = auto
+; log-level = notice
+; log-meta = no
+; log-time = no
+; log-backtrace = 0
+
+resample-method = ffmpeg
+; enable-remixing = yes
+; enable-lfe-remixing = no
+
+flat-volumes = no
+
+; rlimit-fsize = -1
+; rlimit-data = -1
+; rlimit-stack = -1
+; rlimit-core = -1
+; rlimit-as = -1
+; rlimit-rss = -1
+; rlimit-nproc = -1
+; rlimit-nofile = 256
+; rlimit-memlock = -1
+; rlimit-locks = -1
+; rlimit-sigpending = -1
+; rlimit-msgqueue = -1
+; rlimit-nice = 31
+; rlimit-rtprio = 9
+rlimit-rttime = 4000000
+
+; default-sample-format = s16le
+; default-sample-rate = 44100
+; alternate-sample-rate = 48000
+; default-sample-channels = 2
+; default-channel-map = front-left,front-right
+
+; default-fragments = 4
+; default-fragment-size-msec = 25
+
+; enable-deferred-volume = yes
+; deferred-volume-safety-margin-usec = 8000
+; deferred-volume-extra-delay-usec = 0
diff --git a/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/default.pa b/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/default.pa
new file mode 100644
index 00000000..83a6ba8d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/default.pa
@@ -0,0 +1,170 @@
+#!/usr/bin/pulseaudio -nF
+#
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+# This startup script is used only if PulseAudio is started per-user
+# (i.e. not in system mode)
+
+.nofail
+
+### Load something into the sample cache
+#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
+#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
+
+.fail
+
+### Automatically restore the volume of streams and devices
+load-module module-device-restore
+load-module module-stream-restore
+load-module module-card-restore
+
+### Automatically augment property information from .desktop files
+### stored in /usr/share/application
+load-module module-augment-properties
+
+### Should be after module-*-restore but before module-*-detect
+load-module module-switch-on-port-available
+
+### Load audio drivers statically
+### (it's probably better to not load these drivers manually, but instead
+### use module-udev-detect -- see below -- for doing this automatically)
+#load-module module-alsa-sink
+#load-module module-alsa-source device=hw:1,0
+#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
+#load-module module-null-sink
+#load-module module-pipe-sink
+
+### Automatically load driver modules depending on the hardware available
+.ifexists module-udev-detect.so
+load-module module-udev-detect tsched=0
+.else
+### Use the static hardware detection module (for systems that lack udev support)
+load-module module-detect
+.endif
+
+### Automatically connect sink and source if JACK server is present
+.ifexists module-jackdbus-detect.so
+.nofail
+load-module module-jackdbus-detect channels=2
+.fail
+.endif
+
+### Automatically load driver modules for Bluetooth hardware
+.ifexists module-bluetooth-policy.so
+load-module module-bluetooth-policy
+.endif
+
+.ifexists module-bluetooth-discover.so
+load-module module-bluetooth-discover
+.endif
+
+### Load several protocols
+.ifexists module-esound-protocol-unix.so
+load-module module-esound-protocol-unix
+.endif
+load-module module-native-protocol-unix
+
+### Network access (may be configured with paprefs, so leave this commented
+### here if you plan to use paprefs)
+#load-module module-esound-protocol-tcp
+#load-module module-native-protocol-tcp
+#load-module module-zeroconf-publish
+
+### Load the RTP receiver module (also configured via paprefs, see above)
+#load-module module-rtp-recv
+
+### Load the RTP sender module (also configured via paprefs, see above)
+#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
+#load-module module-rtp-send source=rtp.monitor
+
+### Load additional modules from GConf settings. This can be configured with the paprefs tool.
+### Please keep in mind that the modules configured by paprefs might conflict with manually
+### loaded modules.
+.ifexists module-gconf.so
+.nofail
+load-module module-gconf
+.fail
+.endif
+
+### Automatically restore the default sink/source when changed by the user
+### during runtime
+### NOTE: This should be loaded as early as possible so that subsequent modules
+### that look up the default sink/source get the right value
+load-module module-default-device-restore
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Make sure we always have a sink around, even if it is a null sink.
+load-module module-always-sink
+
+### Honour intended role device property
+load-module module-intended-roles
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### If autoexit on idle is enabled we want to make sure we only quit
+### when no local session needs us anymore.
+.ifexists module-console-kit.so
+load-module module-console-kit
+.endif
+.ifexists module-systemd-login.so
+load-module module-systemd-login
+.endif
+
+### Enable positioned event sounds
+load-module module-position-event-sounds
+
+### Cork music/video streams when a phone stream is active
+load-module module-role-cork
+
+### Modules to allow autoloading of filters (such as echo cancellation)
+### on demand. module-filter-heuristics tries to determine what filters
+### make sense, and module-filter-apply does the heavy-lifting of
+### loading modules and rerouting streams.
+load-module module-filter-heuristics
+load-module module-filter-apply
+
+### Load DBus protocol
+.ifexists module-dbus-protocol.so
+load-module module-dbus-protocol
+.endif
+
+# X11 modules should not be started from default.pa so that one daemon
+# can be shared by multiple sessions.
+
+### Load X11 bell module
+#load-module module-x11-bell sample=bell-windowing-system
+
+### Register ourselves in the X11 session manager
+#load-module module-x11-xsmp
+
+### Publish connection data in the X11 root window
+#.ifexists module-x11-publish.so
+#.nofail
+#load-module module-x11-publish
+#.fail
+#.endif
+
+### Make some devices default
+#set-default-sink output
+#set-default-source input
diff --git a/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/pulseaudio-remove-the-control-for-speaker-headphone-widge.patch b/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/pulseaudio-remove-the-control-for-speaker-headphone-widge.patch
new file mode 100644
index 00000000..019f9ba4
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio/imx/pulseaudio-remove-the-control-for-speaker-headphone-widge.patch
@@ -0,0 +1,73 @@
+From 015e048d3662b9f82e9aa5cd04d7c9de4eadb68d Mon Sep 17 00:00:00 2001
+From: Shengjiu Wang <shengjiu.wang@freescale.com>
+Date: Mon, 30 Mar 2015 10:26:14 +0800
+Subject: [PATCH] pulseaudio: remove the control for speaker/headphone widget
+
+In imx7d-sdb, there is no headphone jack, the jack detection is done
+by the codec itself. When headphone plugin, pulseaudio can't detect
+the headphone jack status, so it will set the heaphone volume to zero.
+Here fix this issue by remove the control in configuration.
+
+Upstream-Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
+---
+ .../alsa/mixer/paths/analog-output-headphones.conf | 8 ++++----
+ .../alsa/mixer/paths/analog-output-speaker.conf | 8 ++++----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/modules/alsa/mixer/paths/analog-output-headphones.conf b/src/modules/alsa/mixer/paths/analog-output-headphones.conf
+index b6ee70b..a617976 100644
+--- a/src/modules/alsa/mixer/paths/analog-output-headphones.conf
++++ b/src/modules/alsa/mixer/paths/analog-output-headphones.conf
+@@ -81,8 +81,8 @@ override-map.2 = all-left,all-right
+
+ [Element Headphone]
+ required-any = any
+-switch = mute
+-volume = merge
++switch = on
++volume = ignore
+ override-map.1 = all
+ override-map.2 = all-left,all-right
+
+@@ -105,8 +105,8 @@ switch = mute
+ volume = zero
+
+ [Element Speaker]
+-switch = off
+-volume = off
++switch = on
++volume = ignore
+
+ [Element Desktop Speaker]
+ switch = off
+diff --git a/src/modules/alsa/mixer/paths/analog-output-speaker.conf b/src/modules/alsa/mixer/paths/analog-output-speaker.conf
+index 39193dd..34bbb85 100644
+--- a/src/modules/alsa/mixer/paths/analog-output-speaker.conf
++++ b/src/modules/alsa/mixer/paths/analog-output-speaker.conf
+@@ -73,8 +73,8 @@ volume = off
+ ; This profile path is intended to control the speaker, let's mute headphones
+ ; else there will be a spike when plugging in headphones
+ [Element Headphone]
+-switch = off
+-volume = off
++switch = on
++volume = ignore
+
+ [Element Headphone2]
+ switch = off
+@@ -93,8 +93,8 @@ override-map.2 = all-left,all-right
+
+ [Element Speaker]
+ required-any = any
+-switch = mute
+-volume = merge
++switch = on
++volume = ignore
+ override-map.1 = all
+ override-map.2 = all-left,all-right
+
+--
+1.7.9.5
+
diff --git a/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend b/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend
new file mode 100644
index 00000000..78a17864
--- /dev/null
+++ b/bsp/meta-freescale/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend
@@ -0,0 +1,21 @@
+
+CACHED_CONFIGUREVARS_append_mx6 = " ax_cv_PTHREAD_PRIO_INHERIT=no"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}/imx:"
+
+SRC_URI_append_mx6 = " file://daemon.conf file://default.pa"
+SRC_URI_append_mx7 = " file://daemon.conf file://default.pa \
+ file://pulseaudio-remove-the-control-for-speaker-headphone-widge.patch \
+"
+SRC_URI_append_mx8 = " file://daemon.conf file://default.pa"
+
+do_install_append() {
+ if [ -e "${WORKDIR}/daemon.conf" ] && [ -e "${WORKDIR}/default.pa" ]; then
+ install -m 0644 ${WORKDIR}/daemon.conf ${D}${sysconfdir}/pulse/daemon.conf
+ install -m 0644 ${WORKDIR}/default.pa ${D}${sysconfdir}/pulse/default.pa
+ fi
+}
+
+PACKAGE_ARCH_mx6 = "${MACHINE_SOCARCH}"
+PACKAGE_ARCH_mx7 = "${MACHINE_SOCARCH}"
+PACKAGE_ARCH_mx8 = "${MACHINE_SOCARCH}"
diff --git a/bsp/meta-freescale/recipes-security/optee/optee-client-qoriq.bb b/bsp/meta-freescale/recipes-security/optee/optee-client-qoriq.bb
new file mode 100644
index 00000000..6aaf714c
--- /dev/null
+++ b/bsp/meta-freescale/recipes-security/optee/optee-client-qoriq.bb
@@ -0,0 +1,31 @@
+SUMMARY = "OPTEE Client"
+HOMEPAGE = "https://github.com/qoriq-open-source/optee_client"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=69663ab153298557a59c67a60a743e5b"
+
+inherit pythonnative systemd
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/optee_client;nobranch=1 \
+ file://0001-GCC-8-format-truncation-error.patch \
+ file://0001-flags-CFLAGS-add-Wno-cpp.patch \
+"
+S = "${WORKDIR}/git"
+
+SRCREV = "ab3c79ccd3ea9323e236d30037977c0a19944dbd"
+
+EXTRA_OEMAKE = "ARCH=arm64"
+
+do_install() {
+ oe_runmake install
+
+ install -D -p -m0755 ${S}/out/export/bin/tee-supplicant ${D}${bindir}/tee-supplicant
+
+ install -D -p -m0644 ${S}/out/export/lib/libteec.so.1.0 ${D}${libdir}/libteec.so.1.0
+ ln -sf libteec.so.1.0 ${D}${libdir}/libteec.so
+ ln -sf libteec.so.1.0 ${D}${libdir}/libteec.so.1
+
+ cp -a ${S}/out/export/include ${D}/usr/
+}
+
+COMPATIBLE_MACHINE = "(qoriq)"
diff --git a/bsp/meta-freescale/recipes-security/optee/optee-client-qoriq/0001-GCC-8-format-truncation-error.patch b/bsp/meta-freescale/recipes-security/optee/optee-client-qoriq/0001-GCC-8-format-truncation-error.patch
new file mode 100644
index 00000000..f58590c3
--- /dev/null
+++ b/bsp/meta-freescale/recipes-security/optee/optee-client-qoriq/0001-GCC-8-format-truncation-error.patch
@@ -0,0 +1,35 @@
+From 05f741c1e6263bec2977901abe61463b7f8175ad Mon Sep 17 00:00:00 2001
+From: Chunrong Guo <chunrong.guo@nxp.com>
+Date: Fri, 22 Jun 2018 11:58:09 +0800
+Subject: [PATCH] GCC 8 format-truncation error
+
+Signed-off-by: BJ DevOps Team <bjdevops@NXP1.onmicrosoft.com>
+---
+ libteec/src/teec_trace.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libteec/src/teec_trace.c b/libteec/src/teec_trace.c
+index 78b79d6..7901deb 100644
+--- a/libteec/src/teec_trace.c
++++ b/libteec/src/teec_trace.c
+@@ -73,7 +73,7 @@ int _dprintf(const char *function, int flen, int line, int level,
+ const char *prefix, const char *fmt, ...)
+ {
+ char raw[MAX_PRINT_SIZE];
+- char prefixed[MAX_PRINT_SIZE];
++ char prefixed[MAX_PRINT_SIZE + 10];
+ char *to_print = NULL;
+ const char *func;
+ int err;
+@@ -106,7 +106,7 @@ int _dprintf(const char *function, int flen, int line, int level,
+ */
+ int thread_id = syscall(SYS_gettid); /* perf issue ? */
+
+- snprintf(prefixed, MAX_PRINT_SIZE,
++ snprintf(prefixed, MAX_PRINT_SIZE + 10,
+ "%s [%d] %s:%s:%d: %s",
+ trace_level_strings[level], thread_id, prefix, func,
+ line, raw);
+--
+1.8.3.1
+
diff --git a/bsp/meta-freescale/recipes-security/optee/optee-client-qoriq/0001-flags-CFLAGS-add-Wno-cpp.patch b/bsp/meta-freescale/recipes-security/optee/optee-client-qoriq/0001-flags-CFLAGS-add-Wno-cpp.patch
new file mode 100644
index 00000000..09e4490d
--- /dev/null
+++ b/bsp/meta-freescale/recipes-security/optee/optee-client-qoriq/0001-flags-CFLAGS-add-Wno-cpp.patch
@@ -0,0 +1,28 @@
+From f2ebda1d85b10fd008c21974a0f7aa4e805d0e5c Mon Sep 17 00:00:00 2001
+From: Chunrong Guo <chunrong.guo@nxp.com>
+Date: Tue, 11 Sep 2018 11:40:55 +0800
+Subject: [PATCH] flags: CFLAGS add -Wno-cpp
+
+*fix build with FORTIFY_SOURCES
+
+Signed-off-by: BJ DevOps Team <bjdevops@NXP1.onmicrosoft.com>
+---
+ flags.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/flags.mk b/flags.mk
+index 71f3d18..43c18f0 100644
+--- a/flags.mk
++++ b/flags.mk
+@@ -14,7 +14,7 @@ CFLAGS := -Wall -Wbad-function-cast -Wcast-align \
+ -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs \
+ -Wpointer-arith -Wshadow -Wstrict-prototypes \
+ -Wswitch-default -Wunsafe-loop-optimizations \
+- -Wwrite-strings -Werror
++ -Wwrite-strings -Werror -Wno-cpp
+ CFLAGS += -c -fPIC
+
+ DEBUG ?= 0
+--
+2.7.4
+
diff --git a/bsp/meta-freescale/recipes-security/optee/optee-os-qoriq/0001-allow-setting-sysroot-for-libgcc-lookup.patch b/bsp/meta-freescale/recipes-security/optee/optee-os-qoriq/0001-allow-setting-sysroot-for-libgcc-lookup.patch
new file mode 100644
index 00000000..17127d0b
--- /dev/null
+++ b/bsp/meta-freescale/recipes-security/optee/optee-os-qoriq/0001-allow-setting-sysroot-for-libgcc-lookup.patch
@@ -0,0 +1,13 @@
+diff --git a/mk/gcc.mk b/mk/gcc.mk
+index fc38c4d..77b8d74 100644
+--- a/mk/gcc.mk
++++ b/mk/gcc.mk
+@@ -12,7 +12,7 @@ nostdinc$(sm) := -nostdinc -isystem $(shell $(CC$(sm)) \
+ -print-file-name=include 2> /dev/null)
+
+ # Get location of libgcc from gcc
+-libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) $(comp-cflags$(sm)) \
++libgcc$(sm) := $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) $(comp-cflags$(sm)) \
+ -print-libgcc-file-name 2> /dev/null)
+
+ # Define these to something to discover accidental use
diff --git a/bsp/meta-freescale/recipes-security/optee/optee-os-qoriq_git.bb b/bsp/meta-freescale/recipes-security/optee/optee-os-qoriq_git.bb
new file mode 100644
index 00000000..c8ebe2bf
--- /dev/null
+++ b/bsp/meta-freescale/recipes-security/optee/optee-os-qoriq_git.bb
@@ -0,0 +1,75 @@
+SUMMARY = "OP-TEE Trusted OS"
+DESCRIPTION = "OPTEE OS"
+
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=69663ab153298557a59c67a60a743e5b"
+
+DEPENDS = "python-pycrypto-native"
+
+inherit deploy pythonnative
+
+SRCREV = "e93f053213c574ec1b97f9e56b2f31692cd3723c"
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/optee_os;nobranch=1 \
+ file://0001-allow-setting-sysroot-for-libgcc-lookup.patch \
+ "
+S = "${WORKDIR}/git"
+
+OPTEEMACHINE ?= "${MACHINE}"
+
+EXTRA_OEMAKE = "PLATFORM=ls-${OPTEEMACHINE} CFG_ARM64_core=y \
+ ARCH=arm \
+ CROSS_COMPILE_core=${HOST_PREFIX} \
+ CROSS_COMPILE_ta_arm64=${HOST_PREFIX} \
+ NOWERROR=1 \
+ LDFLAGS= \
+ LIBGCC_LOCATE_CFLAGS=--sysroot=${STAGING_DIR_HOST} \
+ "
+
+OPTEE_ARCH_armv7a = "arm32"
+OPTEE_ARCH_aarch64 = "arm64"
+
+do_compile() {
+ unset LDFLAGS
+ oe_runmake all CFG_TEE_TA_LOG_LEVEL=0
+ ${OBJCOPY} -v -O binary ${B}/out/arm-plat-ls/core/tee.elf ${B}/out/arm-plat-ls/core/tee.bin
+
+ if [ ${MACHINE} = ls1012afrwy ]; then
+ mv ${B}/out/arm-plat-ls/core/tee.bin ${B}/out/arm-plat-ls/core/tee_512mb.bin
+ oe_runmake CFG_DRAM0_SIZE=0x40000000 all CFG_TEE_TA_LOG_LEVEL=0
+ ${OBJCOPY} -v -O binary ${B}/out/arm-plat-ls/core/tee.elf ${B}/out/arm-plat-ls/core/tee.bin
+ fi
+}
+
+do_install() {
+ #install core on boot directory
+ install -d ${D}/lib/firmware/
+ if [ ${MACHINE} = ls1012afrwy ]; then
+ install -m 644 ${B}/out/arm-plat-ls/core/tee_512mb.bin ${D}/lib/firmware/tee_${MACHINE}_512mb.bin
+ fi
+ install -m 644 ${B}/out/arm-plat-ls/core/tee.bin ${D}/lib/firmware/tee_${MACHINE}.bin
+ #install TA devkit
+ install -d ${D}/usr/include/optee/export-user_ta/
+
+ for f in ${B}/out/arm-plat-ls/export-ta_${OPTEE_ARCH}/* ; do
+ cp -aR $f ${D}/usr/include/optee/export-user_ta/
+ done
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+do_deploy() {
+ install -d ${DEPLOYDIR}/optee
+ for f in ${D}/lib/firmware/*; do
+ cp $f ${DEPLOYDIR}/optee/
+ done
+}
+
+addtask deploy before do_build after do_install
+
+FILES_${PN} = "/lib/firmware/"
+FILES_${PN}-dev = "/usr/include/optee"
+
+INSANE_SKIP_${PN}-dev = "staticdev"
+
+INHIBIT_PACKAGE_STRIP = "1"
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
diff --git a/bsp/meta-freescale/recipes-security/optee/optee-test-qoriq/0001-fix-build-failure-with-GCC-8.patch b/bsp/meta-freescale/recipes-security/optee/optee-test-qoriq/0001-fix-build-failure-with-GCC-8.patch
new file mode 100644
index 00000000..bad7c5e0
--- /dev/null
+++ b/bsp/meta-freescale/recipes-security/optee/optee-test-qoriq/0001-fix-build-failure-with-GCC-8.patch
@@ -0,0 +1,40 @@
+From d877fddcef79e856193b9b0a3a3089c22151047f Mon Sep 17 00:00:00 2001
+From: Chunrong Guo <chunrong.guo@nxp.com>
+Date: Fri, 29 Jun 2018 15:49:34 +0800
+Subject: [PATCH] fix build failure with GCC 8
+
+Signed-off-by: BJ DevOps Team <bjdevops@NXP1.onmicrosoft.com>
+---
+ host/xtest/Makefile | 2 ++
+ host/xtest/adbg/src/adbg_run.c | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/host/xtest/Makefile b/host/xtest/Makefile
+index 832cba2..d95899d 100644
+--- a/host/xtest/Makefile
++++ b/host/xtest/Makefile
+@@ -139,6 +139,8 @@ CFLAGS += -Wall -Wcast-align -Werror \
+ -Wmissing-prototypes -Wnested-externs -Wpointer-arith \
+ -Wshadow -Wstrict-prototypes -Wswitch-default \
+ -Wwrite-strings \
++ -Wno-stringop-overflow \
++ -Wno-array-bounds \
+ -Wno-missing-field-initializers -Wno-format-zero-length
+ endif
+
+diff --git a/host/xtest/adbg/src/adbg_run.c b/host/xtest/adbg/src/adbg_run.c
+index 406e429..3b57bbb 100644
+--- a/host/xtest/adbg/src/adbg_run.c
++++ b/host/xtest/adbg/src/adbg_run.c
+@@ -100,7 +100,7 @@ int Do_ADBG_AppendToSuite(
+ snprintf(p, size, "%s+%s", Dest_p->SuiteID_p,
+ Source_p->SuiteID_p);
+ else
+- strncpy(p, Source_p->SuiteID_p, size);
++ memcpy(p, Source_p->SuiteID_p, size);
+ free((void *)Dest_p->SuiteID_p);
+ Dest_p->SuiteID_p = p;
+
+--
+1.8.3.1
+
diff --git a/bsp/meta-freescale/recipes-security/optee/optee-test-qoriq_git.bb b/bsp/meta-freescale/recipes-security/optee/optee-test-qoriq_git.bb
new file mode 100644
index 00000000..a9aaffc7
--- /dev/null
+++ b/bsp/meta-freescale/recipes-security/optee/optee-test-qoriq_git.bb
@@ -0,0 +1,49 @@
+SUMMARY = "OP-TEE sanity testsuite"
+HOMEPAGE = "https://github.com/qoriq-open-source/optee_test"
+
+LICENSE = "BSD & GPLv2"
+LIC_FILES_CHKSUM = "file://${S}/LICENSE.md;md5=daa2bcccc666345ab8940aab1315a4fa"
+
+DEPENDS = "optee-client-qoriq optee-os-qoriq python-pycrypto-native"
+
+inherit pythonnative
+
+SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/optee_test;nobranch=1 \
+ file://0001-fix-build-failure-with-GCC-8.patch \
+"
+S = "${WORKDIR}/git"
+
+SRCREV = "83c87d9b368c33545688c7aad27432ff9a22868f"
+
+OPTEE_CLIENT_EXPORT = "${STAGING_DIR_HOST}${prefix}"
+TEEC_EXPORT = "${STAGING_DIR_HOST}${prefix}"
+TA_DEV_KIT_DIR = "${STAGING_INCDIR}/optee/export-user_ta"
+
+EXTRA_OEMAKE = " TA_DEV_KIT_DIR=${TA_DEV_KIT_DIR} \
+ OPTEE_CLIENT_EXPORT=${OPTEE_CLIENT_EXPORT} \
+ CFG_ARM64=y \
+ CROSS_COMPILE_HOST=${TARGET_PREFIX} \
+ CROSS_COMPILE_TA=${TARGET_PREFIX} \
+ V=1 \
+ "
+
+do_compile() {
+ # Top level makefile doesn't seem to handle parallel make gracefully
+ oe_runmake xtest
+ oe_runmake ta
+}
+
+do_install () {
+ install -D -p -m0755 ${S}/out/xtest/xtest ${D}${bindir}/xtest
+
+ # install path should match the value set in optee-client/tee-supplicant
+ # default TEEC_LOAD_PATH is /lib
+ mkdir -p ${D}/lib/optee_armtz/
+ install -D -p -m0444 ${S}/out/ta/*/*.ta ${D}/lib/optee_armtz/
+}
+
+FILES_${PN} += "/lib/optee_armtz/"
+
+# Imports machine specific configs from staging to build
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE = "(qoriq-arm64)"
diff --git a/bsp/meta-freescale/scripts/get-maintainer b/bsp/meta-freescale/scripts/get-maintainer
new file mode 100755
index 00000000..071cdf60
--- /dev/null
+++ b/bsp/meta-freescale/scripts/get-maintainer
@@ -0,0 +1,107 @@
+#!/bin/sh
+# -*- mode: shell-script; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+#
+# Copyright (C) 2014 O.S. Systems Software LTDA.
+# Authored-by: Otavio Salvador <otavio@ossystems.com.br>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+usage() {
+ cat<<EOF
+Usage:
+
+ $0 [ --machine=<machine> ] <path> ...
+
+ <path>
+ Directory(ies) where to look for machine definition files.
+
+ Options:
+
+ --machine=<machine>
+ Optional param to restrict the printing for a specific machine name.
+
+ --dump
+ Generate output in a format which is easier to parse. Columns
+ are separated by TAB. Empty cells for the "Maintainer" column
+ represent "no maintainer".
+
+EOF
+}
+
+path=
+specific_machine=
+dump_mode=
+
+for opt in ${*}; do
+ if [ "`echo $opt | cut -b-10`" = "--machine=" ]; then
+ specific_machine="`echo $opt | cut -b11-`"
+ elif [ "$opt" = "--dump" ]; then
+ dump_mode=1
+ else
+ path="$path $opt"
+ fi
+done
+
+if [ -z "$path" ]; then
+ usage
+ exit 1
+fi
+
+maintained=`mktemp`
+orphan=`mktemp`
+
+machines=`find $path -wholename '*/conf/machine/*.conf'`
+for m in $machines; do
+ machine=`basename $m | sed 's,\.conf$,,g'`
+ if [ -n "$specific_machine" ] && [ "$machine" != "$specific_machine" ]; then
+ continue
+ fi
+
+ name=`sed -n 's,#@NAME:\s*\(.*\)\s*,\1,p' $m`
+ maint=`sed -n 's,#@MAINTAINER:\s*\(.*\)\s*,\1,p' $m`
+
+ if [ -n "$dump_mode" ]; then
+ if [ -n "$maint" ]; then
+ printf "${machine}\t${name}\t${maint}\n" >> $maintained
+ else
+ printf "${machine}\t${name}\n" >> $orphan
+ fi
+ else
+ if [ -n "$maint" ]; then
+ printf "%-25s %-50s %-50s\n" "$machine" "$name" "$maint" >> $maintained
+ else
+ printf "%-25s %-50s %-50s\n" "$machine" "$name" "Orphan" >> $orphan
+ fi
+ fi
+done
+
+display() {
+ sort -u -k 2 $maintained | grep -v $^
+ sort -u -k 2 $orphan | grep -v $^
+}
+
+if [ -n "$dump_mode" ]; then
+ display
+else
+ cat <<EOF
+========================= ================================================== ==================================================
+ Machine Name Maintainer
+========================= ================================================== ==================================================
+EOF
+ display
+ cat <<EOF
+========================= ================================================== ==================================================
+EOF
+fi
+rm $maintained $orphan
diff --git a/bsp/meta-freescale/wic/imx-imx-boot-bootpart.wks.in b/bsp/meta-freescale/wic/imx-imx-boot-bootpart.wks.in
new file mode 100644
index 00000000..601b9340
--- /dev/null
+++ b/bsp/meta-freescale/wic/imx-imx-boot-bootpart.wks.in
@@ -0,0 +1,21 @@
+# short-description: Create SD card image with a boot partition
+# long-description:
+# Create an image that can be written onto a SD card using dd for use
+# with i.MX SoC family
+# It uses u-boot + other binaries gathered together on imx-boot file
+#
+# The disk layout used is:
+# - ---------- -------------- --------------
+# | | imx-boot | boot | rootfs |
+# - ---------- -------------- --------------
+# ^ ^ ^ ^
+# | | | |
+# 0 | 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
+# ${IMX_BOOT_SEEK} 32 or 33kiB, see reference manual
+#
+part u-boot --source rawcopy --sourceparams="file=imx-boot" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK}
+part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16
+part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
+
+bootloader --ptable msdos
+
diff --git a/bsp/meta-freescale/wic/imx-uboot-bootpart.wks b/bsp/meta-freescale/wic/imx-uboot-bootpart.wks
new file mode 100644
index 00000000..a5e0137b
--- /dev/null
+++ b/bsp/meta-freescale/wic/imx-uboot-bootpart.wks
@@ -0,0 +1,19 @@
+# short-description: Create SD card image with a boot partition
+# long-description:
+# Create an image that can be written onto a SD card using dd for use
+# with i.MX SoC family
+# It uses u-boot
+#
+# The disk layout used is:
+# - --------- -------------- --------------
+# | | u-boot | boot | rootfs |
+# - --------- -------------- --------------
+# ^ ^ ^ ^
+# | | | |
+# 0 1kiB 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
+#
+part u-boot --source rawcopy --sourceparams="file=u-boot.imx" --ondisk mmcblk --no-table --align 1
+part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16
+part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
+
+bootloader --ptable msdos
diff --git a/bsp/meta-freescale/wic/imx-uboot-mxs-bootpart.wks.in b/bsp/meta-freescale/wic/imx-uboot-mxs-bootpart.wks.in
new file mode 100644
index 00000000..01eb88cc
--- /dev/null
+++ b/bsp/meta-freescale/wic/imx-uboot-mxs-bootpart.wks.in
@@ -0,0 +1,19 @@
+# short-description: Create SD card image with a boot partition
+# long-description:
+# Create an image that can be written onto a SD card using dd for use
+# with i.MX SoC family
+# It uses u-boot
+#
+# The disk layout used is:
+# - --------- -------------- --------------
+# | | u-boot | boot | rootfs |
+# - --------- -------------- --------------
+# ^ ^ ^ ^
+# | | | |
+# 0 1kiB 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
+#
+part u-boot --source rawcopy --sourceparams="file=${IMAGE_LINK_NAME}.rootfs.uboot-mxsboot-sdcard" --ondisk mmcblk --align 1024
+part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16
+part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
+
+bootloader --ptable msdos
diff --git a/bsp/meta-freescale/wic/imx-uboot-mxs.wks.in b/bsp/meta-freescale/wic/imx-uboot-mxs.wks.in
new file mode 100644
index 00000000..8d82b7b8
--- /dev/null
+++ b/bsp/meta-freescale/wic/imx-uboot-mxs.wks.in
@@ -0,0 +1,18 @@
+# short-description: Create SD card image without a boot partition
+# long-description:
+# Create an image that can be written onto a SD card using dd for use
+# with i.MX SoC family
+# It uses u-boot
+#
+# The disk layout used is:
+# - --------- --------------
+# | | u-boot | rootfs |
+# - --------- --------------
+# ^ ^ ^ ^
+# | | | |
+# 0 1kiB 4MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
+#
+part u-boot --source rawcopy --sourceparams="file=${IMAGE_LINK_NAME}.rootfs.uboot-mxsboot-sdcard" --ondisk mmcblk --align 1024
+part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
+
+bootloader --ptable msdos
diff --git a/bsp/meta-freescale/wic/imx-uboot-spl-bootpart.wks b/bsp/meta-freescale/wic/imx-uboot-spl-bootpart.wks
new file mode 100644
index 00000000..4e16ec35
--- /dev/null
+++ b/bsp/meta-freescale/wic/imx-uboot-spl-bootpart.wks
@@ -0,0 +1,20 @@
+# short-description: Create SD card image with a boot partition
+# long-description:
+# Create an image that can be written onto a SD card using dd for use
+# with i.MX SoC family.
+# It uses SPL and u-boot
+#
+# The disk layout used is:
+# - ----- --------- -------------- --------------
+# | | SPL | u-boot | boot | rootfs |
+# - ----- --------- -------------- --------------
+# ^ ^ ^ ^ ^
+# | | | | |
+# 0 1kiB 69kiB 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
+#
+part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1
+part u-boot --source rawcopy --sourceparams="file=u-boot.img" --ondisk mmcblk --no-table --align 69
+part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16
+part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
+
+bootloader --ptable msdos
diff --git a/bsp/meta-freescale/wic/imx-uboot-spl.wks b/bsp/meta-freescale/wic/imx-uboot-spl.wks
new file mode 100644
index 00000000..e7b3beed
--- /dev/null
+++ b/bsp/meta-freescale/wic/imx-uboot-spl.wks
@@ -0,0 +1,19 @@
+# short-description: Create SD card image with a boot partition
+# long-description:
+# Create an image that can be written onto a SD card using dd for use
+# with i.MX SoC family.
+# It uses SPL and u-boot
+#
+# The disk layout used is:
+# - ----- --------- --------------
+# | | SPL | u-boot | rootfs |
+# - ----- --------- --------------
+# ^ ^ ^ ^ ^
+# | | | | |
+# 0 1kiB 69kiB 4MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
+#
+part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1
+part u-boot --source rawcopy --sourceparams="file=u-boot.img" --ondisk mmcblk --no-table --align 69
+part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
+
+bootloader --ptable msdos
diff --git a/bsp/meta-freescale/wic/imx-uboot.wks b/bsp/meta-freescale/wic/imx-uboot.wks
new file mode 100644
index 00000000..60870c34
--- /dev/null
+++ b/bsp/meta-freescale/wic/imx-uboot.wks
@@ -0,0 +1,18 @@
+# short-description: Create SD card image with a boot partition
+# long-description:
+# Create an image that can be written onto a SD card using dd for use
+# with i.MX SoC family
+# It uses u-boot
+#
+# The disk layout used is:
+# - --------- --------------
+# | | u-boot | rootfs |
+# - --------- --------------
+# ^ ^ ^ ^
+# | | | |
+# 0 1kiB 4MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
+#
+part u-boot --source rawcopy --sourceparams="file=u-boot.imx" --ondisk mmcblk --no-table --align 1
+part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
+
+bootloader --ptable msdos