summaryrefslogtreecommitdiffstats
path: root/meta-agl-devel
diff options
context:
space:
mode:
authortakeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp>2020-11-02 11:07:33 +0900
committertakeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp>2020-11-02 11:07:33 +0900
commit1c7d6584a7811b7785ae5c1e378f14b5ba0971cf (patch)
treecd70a267a5ef105ba32f200aa088e281fbd85747 /meta-agl-devel
parent4204309872da5cb401cbb2729d9e2d4869a87f42 (diff)
recipes
Diffstat (limited to 'meta-agl-devel')
-rw-r--r--meta-agl-devel/.gitreview2
-rw-r--r--meta-agl-devel/ATTIC/agl-audio-4a-framework/50_bblayers.conf.inc5
-rw-r--r--meta-agl-devel/ATTIC/agl-audio-4a-framework/50_local.conf.inc2
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/README.md3
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/classes/afb-system-cmake.bbclass6
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/classes/afb-system.bbclass1
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/conf/include/agl-audio-4a-framework.inc24
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/conf/layer.conf23
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/meta-agl-demo/recipes-multimedia/4a-mixer/4a-mixer_git.bb27
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0001-build-and-link-with-a-shared-library.patch853
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0002-log-add-calling-function-name.patch26
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0003-dbus-request-a-name-on-startup.patch153
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0004-bluealsa-pcm-bump-the-trigger-after-pcm-prepare.patch35
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend19
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-core/packagegroups/packagegroup-agl-audio.bb24
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/files/0001-snd-avirt-backport-kernel-4.12-api.patch40
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/files/0002-snd-avirt-backport-kernel-4.9-api.patch63
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/snd-avirt.bb14
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/snd-avirt.bbappend22
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-alsa-core/4a-alsa-core_git.bb25
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/4a-hal-config.bb24
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/files/asound.conf.template3
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.README3
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.bbexample57
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.README4
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.bb58
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.README3
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.bbexample46
-rwxr-xr-xmeta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/deploy-hal-udev.sh4
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/udev-sample-rule.rules1
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-generic/4a-hal-generic_git.bb30
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-unicens/4a-hal-unicens_git.bb32
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-softmixer/4a-softmixer_git.bb25
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-tools/4a-tools_git.bb22
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/agl-service-audio-4a_git.bb58
-rwxr-xr-xmeta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/files/4a_wait_bt.sh83
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/alsa/alsa-plugins_%.bbappend7
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/libavirt/libavirt_git.bb19
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/files/default.pa.4a77
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio-module-4a-client_git.bb20
-rw-r--r--meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend7
-rw-r--r--meta-agl-devel/LICENSE20
-rw-r--r--meta-agl-devel/LICENSE.GPL-2.0-only288
-rw-r--r--meta-agl-devel/LICENSE.MIT (renamed from meta-agl-devel/meta-audio-soundmanager-framework/COPYING.MIT)12
l---------[-rw-r--r--]meta-agl-devel/README.md87
-rwxr-xr-xmeta-agl-devel/meta-agl-devel.md129
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/README.md43
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/conf/layer.conf23
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bbappend31
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend21
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-extended/jailhouse/jailhouse_%.bbappend2
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi/0001-dt-dtoverlays-Add-jailhouse-memory-DT-overlay.patch87
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.4%.bbappend9
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-apic-demo.c78
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-ivshmem-demo.c119
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-linux-x86-demo.c246
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-pci-demo.c103
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/qemu-agl.c637
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse-arch.inc22
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse/0001-configs-arm64-Add-support-for-RPi4-with-more-than-1G.patch290
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse_git.bb98
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux-jailhouse-5.4.inc39
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux-yocto_5.4%.bbappend1
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0001-x86-jailhouse-Improve-setup-data-version-comparison.patch198
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch200
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch174
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch43
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0005-mm-Re-export-ioremap_page_range.patch25
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0006-arm-arm64-export-__hyp_stub_vectors.patch57
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0007-x86-Export-lapic_timer_period.patch28
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch31
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch31
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0010-uio-Enable-read-only-mappings.patch57
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0011-ivshmem-Add-header-file.patch52
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch311
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch968
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0014-ivshmem-net-Map-shmem-region-as-RAM.patch30
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0015-ivshmem-net-fix-race-in-state-machine.patch140
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0016-ivshmem-net-Remove-unused-variable.patch28
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0017-ivshmem-net-Enable-INTx.patch55
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0018-ivshmem-net-Improve-identification-of-resources.patch59
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch47
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch61
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch30
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch49
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch146
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch70
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0025-ivshmem-net-slightly-improve-debug-output.patch29
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0026-ivshmem-net-set-and-check-descriptor-flags.patch43
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0027-ivshmem-net-add-MAC-changing-interface.patch41
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0028-ivshmem-net-Silence-compiler-warning.patch28
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch31
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch68
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch59
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch650
-rw-r--r--meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg10
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/conf/layer.conf12
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-apis/agl-service-windowmanager/agl-service-windowmanager_git.bbappend9
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-apis/agl-service-windowmanager/files/areas.horizontal.json94
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend12
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg4
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg3
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb10
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc9
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb18
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb23
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb19
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch40
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb404
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc157
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env202
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service36
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch53
-rw-r--r--meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb51
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/README.md18
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/conf/layer.conf12
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0001-Fix-build-with-systemd-209.patch30
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch81
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch98
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch24
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon_2.11.1.bb54
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon_2.15.0.bb52
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/agl-service-audio-soundmanager/agl-service-audio-soundmanager_1.0.bb20
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amcp_dbus.conf20
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amrp_dbus.conf21
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/configuration.xml516
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/customtypes.xsd63
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/soundmanager-dbus.conf20
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager_7.4.bb40
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amcp_dbus.conf20
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amrp_dbus.conf21
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/configuration.xml522
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/customtypes.xsd63
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/org.genivi.audiomanager.routing.pulseaudio.conf35
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config_7.4.bb40
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins/audiomanager-plugins_git.bb60
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch25
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/audiomanager.service17
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager_7.4.bb56
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/libsoundmanager/libsoundmanager_0.9.bb16
-rwxr-xr-xmeta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/module-router/module-router_git.bb31
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/files/20-module-router.pa3
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/pulseaudio-config-module-router_1.0.bb13
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/files/soundmanager.pa3
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/pulseaudio-config-soundmanager_1.0.bb12
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-packagegroup/packagegroups/packagegroup-agl-audio-soundmanager.bb18
-rw-r--r--meta-agl-devel/meta-audio-soundmanager-framework/recipes-platform/packagegroups/packagegroup-agl-demo.bbappend4
-rw-r--r--meta-agl-devel/meta-gstrecorder-rcar-gen3/conf/include/agl_gstrecorder.inc1
-rw-r--r--meta-agl-devel/meta-gstrecorder-rcar-gen3/conf/layer.conf12
-rw-r--r--meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0001-remoting-Fix-remoting-gbm-dependency.patch41
-rw-r--r--meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0002-main-change-remoting-initialization-timing.patch39
-rw-r--r--meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston_6.0.0.bbappend12
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/conf/layer.conf17
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-connectivity/libwebsockets/libwebsockets_%.bbappend1
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb28
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/CVE-2013-4420.patch113
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_maxpathlen.patch491
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_static_buffers.patch82
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_strip.patch24
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/oldgnu_prefix.patch21
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/series7
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/testsuite.patch50
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/th_get_size-unsigned-int.patch52
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/libtar_1.2.20.bb31
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend1
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-core/packagegroups/packagegroup-ivi-common-core-os-commonlibs.bbappend53
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-devtools/bsdiff/bsdiff_git.bb19
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-support/imagemagick/imagemagick_%.bbappend2
-rwxr-xr-xmeta-agl-devel/meta-oem-extra-libs/recipes-support/libdatrie/libdatrie_0.2.9.bb28
-rwxr-xr-xmeta-agl-devel/meta-oem-extra-libs/recipes-support/libthai/libthai_0.1.20.bb13
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-support/mongoose/README.md10
-rw-r--r--meta-agl-devel/meta-oem-extra-libs/recipes-support/mongoose/mongoose_6.6.bb76
-rw-r--r--meta-agl-devel/meta-pipewire/conf/include/agl-pipewire.inc3
-rw-r--r--meta-agl-devel/meta-pipewire/conf/layer.conf12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch517
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service18
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend35
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb17
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/agl-service-audiomixer/agl-service-audiomixer_git.bb17
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/client.env10
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in17
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/server.env12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb43
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire.inc120
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-meson-revert-version-check-to-require-meson-0.47-not.patch30
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-arm-build-with-mno-unaligned-access.patch30
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-gst-Implement-new-pwaudio-src-sink-elements-based-on.patch1280
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0004-audioconvert-always-assume-that-output-ports-are-NOT.patch35
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0005-module-access-add-same-sec-label-mode.patch94
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-alsa-pcm-call-reuse_buffers-when-resetting-the-state.patch30
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.service24
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.socket19
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/smack-pipewire8
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bb17
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bbappend30
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint10
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint10
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link7
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link7
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint9
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint9
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint13
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint12
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link11
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link11
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams3
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams31
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf30
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl_git.bb55
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Build-cpptoml-without-a-cmake-subproject.patch28
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb46
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-security/cynagora/cynagora_%.bbappend5
-rw-r--r--meta-agl-devel/meta-pipewire/recipes-security/security-manager/security-manager_%.bbappend4
-rw-r--r--meta-agl-devel/meta-speech-framework/conf/include/agl-speech-framework.inc4
-rw-r--r--meta-agl-devel/meta-speech-framework/conf/include/agl-voiceagent-alexa.inc5
-rw-r--r--meta-agl-devel/meta-speech-framework/conf/layer.conf2
-rw-r--r--meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0007-add-autobuild-scripts.patch286
-rw-r--r--meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service_git.bb1
-rw-r--r--meta-agl-devel/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-enable-building-with-g++-9.patch24
-rw-r--r--meta-agl-devel/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk_1.13.bbappend3
-rw-r--r--meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend4
-rw-r--r--meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-voiceagent-alexa.bb11
-rw-r--r--meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high-capabilities/agl-service-voice-high-capabilities_git.bb2
-rw-r--r--meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high/agl-service-voice-high_git.bb3
-rw-r--r--meta-agl-devel/meta-speech-framework/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend5
-rw-r--r--meta-agl-devel/meta-speech-framework/recipes-platform/packagegroups/packagegroup-agl-speech-services.bb14
-rw-r--r--meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/50_bblayers.conf.inc5
-rw-r--r--meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/50_local.conf.inc6
-rw-r--r--meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/README_feature_agl-audio-soundmanager-framework.md9
-rw-r--r--meta-agl-devel/templates/feature/agl-gstrecorder/50_bblayers.conf.inc5
-rw-r--r--meta-agl-devel/templates/feature/agl-gstrecorder/50_local.conf.inc3
-rwxr-xr-xmeta-agl-devel/templates/feature/agl-gstrecorder/50_setupwarning.sh14
-rw-r--r--meta-agl-devel/templates/feature/agl-gstrecorder/README_feature_agl-gstrecorder.md9
-rw-r--r--meta-agl-devel/templates/feature/agl-jailhouse/50_bblayers.conf.inc7
-rw-r--r--meta-agl-devel/templates/feature/agl-jailhouse/50_local.conf.inc26
-rw-r--r--meta-agl-devel/templates/feature/agl-oem-extra-libs/50_bblayers.conf.inc5
-rw-r--r--meta-agl-devel/templates/feature/agl-oem-extra-libs/README_feature_agl-oem-extra-libs.md9
-rw-r--r--meta-agl-devel/templates/feature/agl-pipewire/50_bblayers.conf.inc5
-rw-r--r--meta-agl-devel/templates/feature/agl-pipewire/50_local.conf.inc2
-rw-r--r--meta-agl-devel/templates/feature/agl-pipewire/README_feature_agl-pipewire.md9
-rw-r--r--meta-agl-devel/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc5
-rw-r--r--meta-agl-devel/templates/feature/agl-profile-graphical-html5/50_local.conf.inc3
-rw-r--r--meta-agl-devel/templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md8
-rw-r--r--meta-agl-devel/templates/feature/agl-profile-graphical-html5/included.dep1
-rw-r--r--meta-agl-devel/templates/feature/agl-voiceagent-alexa/50_bblayers.conf.inc4
254 files changed, 6413 insertions, 9505 deletions
diff --git a/meta-agl-devel/.gitreview b/meta-agl-devel/.gitreview
index d4a1744e..f0c3b443 100644
--- a/meta-agl-devel/.gitreview
+++ b/meta-agl-devel/.gitreview
@@ -2,4 +2,4 @@
host=gerrit.automotivelinux.org
port=29418
project=AGL/meta-agl-devel
-defaultbranch=icefish
+defaultbranch=jellyfish
diff --git a/meta-agl-devel/ATTIC/agl-audio-4a-framework/50_bblayers.conf.inc b/meta-agl-devel/ATTIC/agl-audio-4a-framework/50_bblayers.conf.inc
deleted file mode 100644
index a4889083..00000000
--- a/meta-agl-devel/ATTIC/agl-audio-4a-framework/50_bblayers.conf.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-BBLAYERS =+ " \
- ${METADIR}/meta-agl-devel/meta-audio-4a-framework \
- "
-
diff --git a/meta-agl-devel/ATTIC/agl-audio-4a-framework/50_local.conf.inc b/meta-agl-devel/ATTIC/agl-audio-4a-framework/50_local.conf.inc
deleted file mode 100644
index 91d4c863..00000000
--- a/meta-agl-devel/ATTIC/agl-audio-4a-framework/50_local.conf.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-#see meta-agl-devel/meta-audio-4a-framework/conf/include/agl-audio-4a-framework.inc
-require conf/include/agl-audio-4a-framework.inc
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/README.md b/meta-agl-devel/ATTIC/meta-audio-4a-framework/README.md
deleted file mode 100644
index 37dd360a..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-Collection of recipes for first integration of 4A (Advanced AGL Audio Architecture).
-
-This layer should disappear and recipes merged into meta-agl.
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/classes/afb-system-cmake.bbclass b/meta-agl-devel/ATTIC/meta-audio-4a-framework/classes/afb-system-cmake.bbclass
deleted file mode 100644
index 67ad7260..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/classes/afb-system-cmake.bbclass
+++ /dev/null
@@ -1,6 +0,0 @@
-inherit afb-system
-
-DEPENDS += "alsa-lib json-c systemd af-binder cmake-apps-module-native"
-inherit cmake pkgconfig
-
-EXTRA_OECMAKE_append = " -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX}"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/classes/afb-system.bbclass b/meta-agl-devel/ATTIC/meta-audio-4a-framework/classes/afb-system.bbclass
deleted file mode 100644
index b553d621..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/classes/afb-system.bbclass
+++ /dev/null
@@ -1 +0,0 @@
-INSTALL_PREFIX = "${libexecdir}/agl"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/conf/include/agl-audio-4a-framework.inc b/meta-agl-devel/ATTIC/meta-audio-4a-framework/conf/include/agl-audio-4a-framework.inc
deleted file mode 100644
index 12711f66..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/conf/include/agl-audio-4a-framework.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-# In order to enable the audio-4a-framework features ,
-# enables the following line:
-#
-DISTRO_FEATURES_append = " agl-audio-4a-framework "
-
-# asound.conf is provided by the 4a-hal-config (and not by asound.state)
-#VIRTUAL-RUNTIME_alsa-state = "4a-hal-config"
-VIRTUAL_RUNTIME_alsa-state = ""
-# additionally there is a bug in alsa-utils-alsactl where it pulls in alsa-state directly
-RRECOMMENDS_pn-alsa-utils-alsactl = "VIRTUAL-RUNTIME_alsa-state"
-
-# why should a config package have -dev ... I'll leave that answer to you.
-PACKAGES_pn-alsa-state_remove = "alsa-state-dev"
-PACKAGES_pn-alsa-state_remove = "alsa-states-dev"
-PACKAGES_pn-alsa-state = "alsa-state alsa-states"
-
-PREFERRED_PROVIDER_virtual/mixer ?= "4a-mixer"
-PREFERRED_RPROVIDER_virtual/mixer ?= "4a-mixer"
-
-PREFERRED_VERSION_alsa-lib = "1.1.6"
-PREFERRED_VERSION_alsa-plugins = "1.1.6"
-PREFERRED_VERSION_alsa-tools = "1.1.6"
-PREFERRED_VERSION_alsa-utils = "1.1.6"
-PREFERRED_VERSION_alsa-utils-scripts = "1.1.6"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/conf/layer.conf b/meta-agl-devel/ATTIC/meta-audio-4a-framework/conf/layer.conf
deleted file mode 100644
index dc190b66..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/conf/layer.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH .= ":${LAYERDIR}"
-
-# Fix for SPEC-1588
-# Let us add layer-specific bbappends which are only applied when that
-# layer is included in our configuration -
-# e.g. only add layers if a bsp is present.
-# This is based on the BBFILE_COLLECTIONS name of the layer.
-BBFILES += "${@' '.join('${LAYERDIR}/meta-%s/recipes*/*/*.bbappend' % layer \
- for layer in BBFILE_COLLECTIONS.split())}"
-BBFILES += "${@' '.join('${LAYERDIR}/meta-%s/recipes*/*/*.bb' % layer \
- for layer in BBFILE_COLLECTIONS.split())}"
-
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
- ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "4a-framework"
-BBFILE_PATTERN_4a-framework = "^${LAYERDIR}/"
-BBFILE_PRIORITY_4a-framework = "8"
-
-LAYERSERIES_COMPAT_4a-framework = "thud"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/meta-agl-demo/recipes-multimedia/4a-mixer/4a-mixer_git.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/meta-agl-demo/recipes-multimedia/4a-mixer/4a-mixer_git.bb
deleted file mode 100644
index f87d4d20..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/meta-agl-demo/recipes-multimedia/4a-mixer/4a-mixer_git.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "Mixer for CES2017 AGL Demonstration"
-DESCRIPTION = "AGL HMI application for control of PulseAudio mixer elements"
-HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/mixer"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/mixer;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-# build-time dependencies
-DEPENDS += "qtquickcontrols2 \
- qtwebsockets \
- qtaglextras \
- libafb-helpers-qt \
-"
-
-PROVIDES += "virtual/mixer"
-RPROVIDES_${PN} += "virtual/mixer"
-
-inherit cmake_qt5 aglwgt
-
-OECMAKE_CXX_FLAGS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', '' , '-DQT_NO_DEBUG_OUTPUT', d)}"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0001-build-and-link-with-a-shared-library.patch b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0001-build-and-link-with-a-shared-library.patch
deleted file mode 100644
index 53ee3ad0..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0001-build-and-link-with-a-shared-library.patch
+++ /dev/null
@@ -1,853 +0,0 @@
-From 7625b67a687b7a365d9d758a86ed05e84b2b3a61 Mon Sep 17 00:00:00 2001
-From: Thierry Bultel <thierry.bultel@iot.bzh>
-Date: Mon, 3 Dec 2018 14:29:07 +0100
-Subject: [PATCH 1/3] build and link with a shared library
-
-Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
----
- configure.ac | 4 +-
- includes/bluealsa/bluealsa.h | 21 ++++++
- {src/shared => includes/bluealsa}/ctl-client.h | 2 +-
- {src/shared => includes/bluealsa}/ctl-proto.h | 0
- {src/shared => includes/bluealsa}/defs.h | 0
- {src/shared => includes/bluealsa}/ffb.h | 0
- {src/shared => includes/bluealsa}/log.h | 0
- {src/shared => includes/bluealsa}/rt.h | 0
- src/Makefile.am | 11 ++-
- src/asound/Makefile.am | 15 ++--
- src/asound/bluealsa-ctl.c | 6 +-
- src/asound/bluealsa-pcm.c | 10 +--
- src/at.c | 4 +-
- src/bluealsa.h | 2 +-
- src/bluealsalib/Makefile.am | 50 ++++++++++++++
- src/bluealsalib/bluealsa.pc.in | 12 ++++
- src/bluez-a2dp.c | 2 +-
- src/bluez.c | 2 +-
- src/ctl.c | 4 +-
- src/ctl.h | 2 +-
- src/io.c | 8 +--
- src/main.c | 4 +-
- src/ofono.c | 2 +-
- src/rfcomm.c | 4 +-
- src/shared/ctl-client.c | 4 +-
- src/shared/ffb.c | 2 +-
- src/shared/log.c | 4 +-
- src/shared/rt.c | 2 +-
- src/transport.c | 2 +-
- src/utils.c | 2 +-
- test/Makefile.am | 10 ++-
- test/server-mock.c | 3 -
- test/test-at.c | 1 -
- test/test-bluealsalib.c | 96 ++++++++++++++++++++++++++
- test/test-io.c | 3 -
- test/test-utils.c | 8 +--
- utils/Makefile.am | 11 ++-
- utils/aplay.c | 8 +--
- utils/rfcomm.c | 4 +-
- 39 files changed, 252 insertions(+), 73 deletions(-)
- create mode 100644 includes/bluealsa/bluealsa.h
- rename {src/shared => includes/bluealsa}/ctl-client.h (98%)
- rename {src/shared => includes/bluealsa}/ctl-proto.h (100%)
- rename {src/shared => includes/bluealsa}/defs.h (100%)
- rename {src/shared => includes/bluealsa}/ffb.h (100%)
- rename {src/shared => includes/bluealsa}/log.h (100%)
- rename {src/shared => includes/bluealsa}/rt.h (100%)
- create mode 100644 src/bluealsalib/Makefile.am
- create mode 100644 src/bluealsalib/bluealsa.pc.in
- create mode 100644 test/test-bluealsalib.c
-
-diff --git a/configure.ac b/configure.ac
-index 0bb9452..6323d60 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -152,8 +152,10 @@ AC_CONFIG_FILES([
- Makefile
- src/Makefile
- src/asound/Makefile
-+ src/bluealsalib/Makefile
- utils/Makefile
-- test/Makefile])
-+ test/Makefile
-+ src/bluealsalib/bluealsa.pc])
- AC_OUTPUT
-
- # warn user that alsa-lib thread-safety makes troubles
-diff --git a/includes/bluealsa/bluealsa.h b/includes/bluealsa/bluealsa.h
-new file mode 100644
-index 0000000..062856a
---- /dev/null
-+++ b/includes/bluealsa/bluealsa.h
-@@ -0,0 +1,21 @@
-+/*
-+ * BlueALSA - bluealsa.h
-+ * Copyright (c) 2018 Thierry Bultel
-+ *
-+ * This file is a part of bluez-alsa.
-+ *
-+ * This project is licensed under the terms of the MIT license.
-+ *
-+ */
-+
-+#ifndef BLUEALSA_H
-+#define BLUEALSA_H
-+
-+#include <bluealsa/ctl-client.h>
-+#include <bluealsa/defs.h>
-+
-+typedef int (*transport_update_cb) (struct ba_msg_transport *transports);
-+
-+extern int bluelsa_register_transport_update_cb(const char * interfance, transport_update_cb cb);
-+
-+#endif
-diff --git a/src/shared/ctl-client.h b/includes/bluealsa/ctl-client.h
-similarity index 98%
-rename from src/shared/ctl-client.h
-rename to includes/bluealsa/ctl-client.h
-index 3dc93a6..b8af154 100644
---- a/src/shared/ctl-client.h
-+++ b/includes/bluealsa/ctl-client.h
-@@ -12,7 +12,7 @@
- #define BLUEALSA_SHARED_CTLCLIENT_H_
-
- #include <stdbool.h>
--#include "shared/ctl-proto.h"
-+#include <bluealsa/ctl-proto.h>
-
- int bluealsa_open(const char *interface);
-
-diff --git a/src/shared/ctl-proto.h b/includes/bluealsa/ctl-proto.h
-similarity index 100%
-rename from src/shared/ctl-proto.h
-rename to includes/bluealsa/ctl-proto.h
-diff --git a/src/shared/defs.h b/includes/bluealsa/defs.h
-similarity index 100%
-rename from src/shared/defs.h
-rename to includes/bluealsa/defs.h
-diff --git a/src/shared/ffb.h b/includes/bluealsa/ffb.h
-similarity index 100%
-rename from src/shared/ffb.h
-rename to includes/bluealsa/ffb.h
-diff --git a/src/shared/log.h b/includes/bluealsa/log.h
-similarity index 100%
-rename from src/shared/log.h
-rename to includes/bluealsa/log.h
-diff --git a/src/shared/rt.h b/includes/bluealsa/rt.h
-similarity index 100%
-rename from src/shared/rt.h
-rename to includes/bluealsa/rt.h
-diff --git a/src/Makefile.am b/src/Makefile.am
-index fb1241d..5626ae5 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -2,12 +2,9 @@
- # Copyright (c) 2016-2018 Arkadiusz Bokowy
-
- bin_PROGRAMS = bluealsa
--SUBDIRS = asound
-+SUBDIRS = bluealsalib asound
-
- bluealsa_SOURCES = \
-- shared/ffb.c \
-- shared/log.c \
-- shared/rt.c \
- at.c \
- bluealsa.c \
- bluez.c \
-@@ -34,7 +31,8 @@ AM_CFLAGS = \
- @APTX_CFLAGS@ \
- @LDAC_CFLAGS@ \
- @LDAC_ABR_CFLAGS@ \
-- @SBC_CFLAGS@
-+ @SBC_CFLAGS@ \
-+ -I$(top_srcdir)/includes
-
- LDADD = \
- @BLUEZ_LIBS@ \
-@@ -44,4 +42,5 @@ LDADD = \
- @APTX_LIBS@ \
- @LDAC_LIBS@ \
- @LDAC_ABR_LIBS@ \
-- @SBC_LIBS@
-+ @SBC_LIBS@ \
-+ bluealsalib/libbluealsa.la
-diff --git a/src/asound/Makefile.am b/src/asound/Makefile.am
-index 923d884..24618f1 100644
---- a/src/asound/Makefile.am
-+++ b/src/asound/Makefile.am
-@@ -5,32 +5,35 @@ EXTRA_DIST = 20-bluealsa.conf
-
- asound_module_ctl_LTLIBRARIES = libasound_module_ctl_bluealsa.la
- asound_module_pcm_LTLIBRARIES = libasound_module_pcm_bluealsa.la
-+
- asound_module_conf_DATA = 20-bluealsa.conf
-
- libasound_module_ctl_bluealsa_la_SOURCES = \
-- ../shared/ctl-client.c \
-- ../shared/log.c \
- bluealsa-ctl.c
-+
- libasound_module_pcm_bluealsa_la_SOURCES = \
-- ../shared/ctl-client.c \
-- ../shared/log.c \
-- ../shared/rt.c \
- bluealsa-pcm.c
-
- asound_module_ctldir = @ALSA_PLUGIN_DIR@
- asound_module_pcmdir = @ALSA_PLUGIN_DIR@
-+
- asound_module_confdir = @ALSA_CONF_DIR@
-
- AM_CFLAGS = \
- -I$(top_srcdir)/src \
-+ -I$(top_srcdir)/includes \
- @ALSA_CFLAGS@ \
- @BLUEZ_CFLAGS@ \
- @GLIB2_CFLAGS@
-
--AM_LDFLAGS = -module -avoid-version
-+AM_LDFLAGS = \
-+ -module \
-+ -avoid-version \
-+ ../bluealsalib/libbluealsa.la
-
- libasound_module_ctl_bluealsa_la_LIBADD = \
- @ALSA_LIBS@
-+
- libasound_module_pcm_bluealsa_la_LIBADD = \
- @ALSA_LIBS@ \
- @BLUEZ_LIBS@
-diff --git a/src/asound/bluealsa-ctl.c b/src/asound/bluealsa-ctl.c
-index f4a0181..1b9d124 100644
---- a/src/asound/bluealsa-ctl.c
-+++ b/src/asound/bluealsa-ctl.c
-@@ -19,9 +19,9 @@
- #include <alsa/asoundlib.h>
- #include <alsa/control_external.h>
-
--#include "shared/ctl-client.h"
--#include "shared/ctl-proto.h"
--#include "shared/log.h"
-+#include <bluealsa/ctl-client.h>
-+#include <bluealsa/ctl-proto.h>
-+#include <bluealsa/log.h>
-
-
- enum ctl_elem_type {
-diff --git a/src/asound/bluealsa-pcm.c b/src/asound/bluealsa-pcm.c
-index 258aebd..42cb61d 100644
---- a/src/asound/bluealsa-pcm.c
-+++ b/src/asound/bluealsa-pcm.c
-@@ -23,11 +23,11 @@
- #include <alsa/asoundlib.h>
- #include <alsa/pcm_external.h>
-
--#include "shared/ctl-client.h"
--#include "shared/ctl-proto.h"
--#include "shared/defs.h"
--#include "shared/log.h"
--#include "shared/rt.h"
-+#include <bluealsa/ctl-client.h>
-+#include <bluealsa/ctl-proto.h>
-+#include <bluealsa/defs.h>
-+#include <bluealsa/log.h>
-+#include <bluealsa/rt.h>
-
-
- struct bluealsa_pcm {
-diff --git a/src/at.c b/src/at.c
-index e3d1703..bda2255 100644
---- a/src/at.c
-+++ b/src/at.c
-@@ -16,8 +16,8 @@
- #include <stdio.h>
- #include <string.h>
-
--#include "shared/defs.h"
--#include "shared/log.h"
-+#include <bluealsa/defs.h>
-+#include <bluealsa/log.h>
-
-
- /**
-diff --git a/src/bluealsa.h b/src/bluealsa.h
-index 7968ba9..7eee34f 100644
---- a/src/bluealsa.h
-+++ b/src/bluealsa.h
-@@ -27,7 +27,7 @@
- #include "bluez.h"
- #include "bluez-a2dp.h"
- #include "transport.h"
--#include "shared/ctl-proto.h"
-+#include <bluealsa/ctl-proto.h>
-
- struct ba_config {
-
-diff --git a/src/bluealsalib/Makefile.am b/src/bluealsalib/Makefile.am
-new file mode 100644
-index 0000000..11d9e00
---- /dev/null
-+++ b/src/bluealsalib/Makefile.am
-@@ -0,0 +1,50 @@
-+# BlueALSA - Makefile.am
-+# Copyright (c) 2018 Thiery Bultel (thierry.bultel@iot.bzh)
-+
-+bluealsalib_LTLIBRARIES = libbluealsa.la
-+
-+libbluealsa_la_SOURCES = \
-+ ../shared/ctl-client.c \
-+ ../shared/ffb.c \
-+ ../shared/log.c \
-+ ../shared/rt.c
-+
-+EXTRA_DIST=bluealsa.pc.in
-+
-+pkgconfigdir = $(libdir)/pkgconfig
-+pkgconfig_DATA = bluealsa.pc
-+
-+AM_CFLAGS = \
-+ -I$(top_srcdir)/src \
-+ -I$(top_srcdir)/includes \
-+ @ALSA_CFLAGS@ \
-+ @BLUEZ_CFLAGS@ \
-+ @GLIB2_CFLAGS@
-+
-+libbluealsa_la_LIBADD = \
-+ @ALSA_LIBS@ \
-+ @BLUEZ_LIBS@
-+
-+libbluealsa_la_LDFLAGS = \
-+ $(AM_LDFLAGS) \
-+ -version-info 1:0:0
-+
-+bluealsalibdir = $(libdir)
-+
-+# install path for published headers
-+bluealsalibincludedir=$(includedir)/bluealsa
-+
-+bluealsalib_headers_dir=../../includes/bluealsa
-+
-+bluealsalib_headers = \
-+ $(bluealsalib_headers_dir)/bluealsa.h \
-+ $(bluealsalib_headers_dir)/ctl-client.h \
-+ $(bluealsalib_headers_dir)/ctl-proto.h \
-+ $(bluealsalib_headers_dir)/defs.h \
-+ $(bluealsalib_headers_dir)/ffb.h \
-+ $(bluealsalib_headers_dir)/log.h \
-+ $(bluealsalib_headers_dir)/rt.h
-+
-+libbluealsa_la_SOURCES += $(bluealsalib_headers)
-+
-+bluealsalibinclude_HEADERS = $(bluealsalib_headers)
-diff --git a/src/bluealsalib/bluealsa.pc.in b/src/bluealsalib/bluealsa.pc.in
-new file mode 100644
-index 0000000..93c3c4a
---- /dev/null
-+++ b/src/bluealsalib/bluealsa.pc.in
-@@ -0,0 +1,12 @@
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+libdir=@libdir@
-+includedir=@includedir@
-+
-+Name: alsa
-+Description: Bluez-Alsa - Library
-+Version: @VERSION@
-+Requires:
-+Libs: -L${libdir} -lbluealsa
-+#Libs.private: @ALSA_DEPLIBS@
-+Cflags: -I${includedir}/bluealsa
-diff --git a/src/bluez-a2dp.c b/src/bluez-a2dp.c
-index 5f81e6e..4c7b07b 100644
---- a/src/bluez-a2dp.c
-+++ b/src/bluez-a2dp.c
-@@ -13,7 +13,7 @@
- #endif
-
- #include "bluez-a2dp.h"
--#include "shared/defs.h"
-+#include <bluealsa/defs.h>
-
- static const a2dp_sbc_t a2dp_sbc = {
- .frequency =
-diff --git a/src/bluez.c b/src/bluez.c
-index 537f0fe..591fdce 100644
---- a/src/bluez.c
-+++ b/src/bluez.c
-@@ -24,7 +24,7 @@
- #include "ctl.h"
- #include "transport.h"
- #include "utils.h"
--#include "shared/log.h"
-+#include <bluealsa/log.h>
-
-
- /**
-diff --git a/src/ctl.c b/src/ctl.c
-index ae2b812..dd3ab45 100644
---- a/src/ctl.c
-+++ b/src/ctl.c
-@@ -32,8 +32,8 @@
- #include "hfp.h"
- #include "transport.h"
- #include "utils.h"
--#include "shared/defs.h"
--#include "shared/log.h"
-+#include <bluealsa/defs.h>
-+#include <bluealsa/log.h>
-
- /* Special PCM type for internal usage only. */
- #define BA_PCM_TYPE_RFCOMM 0x1F
-diff --git a/src/ctl.h b/src/ctl.h
-index 0e3c46b..593a9fd 100644
---- a/src/ctl.h
-+++ b/src/ctl.h
-@@ -11,7 +11,7 @@
- #ifndef BLUEALSA_CTL_H_
- #define BLUEALSA_CTL_H_
-
--#include "shared/ctl-proto.h"
-+#include <bluealsa/ctl-proto.h>
-
- /* Indexes of special file descriptors in the poll array. */
- #define CTL_IDX_SRV 0
-diff --git a/src/io.c b/src/io.c
-index b3d7ac9..f81eeb0 100644
---- a/src/io.c
-+++ b/src/io.c
-@@ -44,10 +44,10 @@
- #include "bluealsa.h"
- #include "transport.h"
- #include "utils.h"
--#include "shared/defs.h"
--#include "shared/ffb.h"
--#include "shared/log.h"
--#include "shared/rt.h"
-+#include <bluealsa/defs.h>
-+#include <bluealsa/ffb.h>
-+#include <bluealsa/log.h>
-+#include <bluealsa/rt.h>
-
-
- /**
-diff --git a/src/main.c b/src/main.c
-index 35e6702..9cef402 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -37,8 +37,8 @@
- #endif
- #include "transport.h"
- #include "utils.h"
--#include "shared/defs.h"
--#include "shared/log.h"
-+#include <bluealsa/defs.h>
-+#include <bluealsa/log.h>
-
-
- static char *get_a2dp_codecs(
-diff --git a/src/ofono.c b/src/ofono.c
-index 902d099..bfd4e39 100644
---- a/src/ofono.c
-+++ b/src/ofono.c
-@@ -27,7 +27,7 @@
- #include "ctl.h"
- #include "ofono-iface.h"
- #include "transport.h"
--#include "shared/log.h"
-+#include <bluealsa/log.h>
-
- #define OFONO_FAKE_DEV_ID 0xffff
-
-diff --git a/src/rfcomm.c b/src/rfcomm.c
-index a86ae61..2d76725 100644
---- a/src/rfcomm.c
-+++ b/src/rfcomm.c
-@@ -17,11 +17,11 @@
- #include <string.h>
- #include <unistd.h>
-
-+#include <bluealsa/defs.h>
- #include "bluealsa.h"
- #include "ctl.h"
- #include "utils.h"
--#include "shared/defs.h"
--#include "shared/log.h"
-+#include <bluealsa/log.h>
-
-
- /**
-diff --git a/src/shared/ctl-client.c b/src/shared/ctl-client.c
-index 6cf9402..2da9a54 100644
---- a/src/shared/ctl-client.c
-+++ b/src/shared/ctl-client.c
-@@ -8,7 +8,7 @@
- *
- */
-
--#include "shared/ctl-client.h"
-+#include <bluealsa/ctl-client.h>
-
- #include <errno.h>
- #include <fcntl.h>
-@@ -19,7 +19,7 @@
- #include <sys/types.h>
- #include <sys/un.h>
-
--#include "shared/log.h"
-+#include <bluealsa/log.h>
-
-
- /**
-diff --git a/src/shared/ffb.c b/src/shared/ffb.c
-index b31d7d1..ab50f4a 100644
---- a/src/shared/ffb.c
-+++ b/src/shared/ffb.c
-@@ -8,7 +8,7 @@
- *
- */
-
--#include "shared/ffb.h"
-+#include "../../includes/bluealsa/ffb.h"
-
-
- /**
-diff --git a/src/shared/log.c b/src/shared/log.c
-index 65f0fea..884540c 100644
---- a/src/shared/log.c
-+++ b/src/shared/log.c
-@@ -8,7 +8,7 @@
- *
- */
-
--#include "shared/log.h"
-+#include <bluealsa/log.h>
-
- #include <pthread.h>
- #include <stdarg.h>
-@@ -17,7 +17,7 @@
- #include <string.h>
- #include <syslog.h>
-
--#include "shared/rt.h"
-+#include <bluealsa/rt.h>
-
-
- /* internal logging identifier */
-diff --git a/src/shared/rt.c b/src/shared/rt.c
-index edcbebc..40bd721 100644
---- a/src/shared/rt.c
-+++ b/src/shared/rt.c
-@@ -8,7 +8,7 @@
- *
- */
-
--#include "shared/rt.h"
-+#include <bluealsa/rt.h>
-
- #include <stdlib.h>
-
-diff --git a/src/transport.c b/src/transport.c
-index 7253925..1617dd1 100644
---- a/src/transport.c
-+++ b/src/transport.c
-@@ -34,7 +34,7 @@
- #include "io.h"
- #include "rfcomm.h"
- #include "utils.h"
--#include "shared/log.h"
-+#include <bluealsa/log.h>
-
-
- static const char *transport_type_to_string(enum ba_transport_type type) {
-diff --git a/src/utils.c b/src/utils.c
-index 70d069e..27459d2 100644
---- a/src/utils.c
-+++ b/src/utils.c
-@@ -24,7 +24,7 @@
-
- #include "a2dp-codecs.h"
- #include "bluez.h"
--#include "shared/log.h"
-+#include <bluealsa/log.h>
-
-
- /**
-diff --git a/test/Makefile.am b/test/Makefile.am
-index 104dc63..8f7b2eb 100644
---- a/test/Makefile.am
-+++ b/test/Makefile.am
-@@ -6,7 +6,8 @@ TESTS = \
- test-ctl \
- test-io \
- test-pcm \
-- test-utils
-+ test-utils \
-+ test-bluealsalib
-
- check_PROGRAMS = \
- server-mock \
-@@ -14,7 +15,8 @@ check_PROGRAMS = \
- test-ctl \
- test-io \
- test-pcm \
-- test-utils
-+ test-utils \
-+ test-bluealsalib
-
- check_LTLIBRARIES = \
- aloader.la
-@@ -25,6 +27,7 @@ aloader_la_LDFLAGS = \
-
- AM_CFLAGS = \
- -I$(top_srcdir)/src \
-+ -I$(top_srcdir)/includes \
- @AAC_CFLAGS@ \
- @ALSA_CFLAGS@ \
- @APTX_CFLAGS@ \
-@@ -46,4 +49,5 @@ LDADD = \
- @GLIB2_LIBS@ \
- @LDAC_ABR_LIBS@ \
- @LDAC_LIBS@ \
-- @SBC_LIBS@
-+ @SBC_LIBS@ \
-+ ../src/bluealsalib/libbluealsa.la
-diff --git a/test/server-mock.c b/test/server-mock.c
-index 8c3a90e..c88fa35 100644
---- a/test/server-mock.c
-+++ b/test/server-mock.c
-@@ -31,9 +31,6 @@
- #include "../src/rfcomm.c"
- #include "../src/transport.c"
- #include "../src/utils.c"
--#include "../src/shared/ffb.c"
--#include "../src/shared/log.c"
--#include "../src/shared/rt.c"
-
- static const a2dp_sbc_t cconfig = {
- .frequency = SBC_SAMPLING_FREQ_44100,
-diff --git a/test/test-at.c b/test/test-at.c
-index 8cff264..a847c22 100644
---- a/test/test-at.c
-+++ b/test/test-at.c
-@@ -11,7 +11,6 @@
- #include <check.h>
-
- #include "../src/at.c"
--#include "../src/shared/log.c"
-
- START_TEST(test_at_build) {
-
-diff --git a/test/test-bluealsalib.c b/test/test-bluealsalib.c
-new file mode 100644
-index 0000000..d5fa3ff
---- /dev/null
-+++ b/test/test-bluealsalib.c
-@@ -0,0 +1,96 @@
-+/*
-+ * test-bluealsalib.c
-+ * Copyright (c) 2018 Thierry Bultel
-+ *
-+ * This file is a part of bluez-alsa.
-+ *
-+ * This project is licensed under the terms of the MIT license.
-+ *
-+ */
-+
-+// TODO monitor all available interfaces
-+const char * ba_interface = "hci0";
-+
-+#include <bluealsa/bluealsa.h>
-+#include <bluealsa/log.h>
-+#include <pthread.h>
-+#include <errno.h>
-+#include <poll.h>
-+
-+
-+static void * monitor_thread_entry(void* arg) {
-+ debug("...");
-+
-+ int ba_fd, ba_event_fd;
-+ enum ba_event transport_mask = BA_EVENT_TRANSPORT_ADDED | BA_EVENT_TRANSPORT_CHANGED|BA_EVENT_TRANSPORT_REMOVED;
-+
-+ if ((ba_fd = bluealsa_open(ba_interface)) == -1) {
-+ error("BlueALSA connection failed: %s", strerror(errno));
-+ goto fail;
-+ }
-+
-+ if ((ba_event_fd = bluealsa_open(ba_interface)) == -1) {
-+ error("BlueALSA connection failed: %s", strerror(errno));
-+ goto fail;
-+ }
-+
-+ if (bluealsa_subscribe(ba_event_fd, transport_mask) == -1) {
-+ error("BlueALSA subscription failed: %s", strerror(errno));
-+ goto fail;
-+ }
-+
-+goto init;
-+
-+ while (true) {
-+
-+ struct ba_msg_event event;
-+ struct ba_msg_transport *transports;
-+ ssize_t ret;
-+ size_t i;
-+
-+ struct pollfd pfds[] = {{ ba_event_fd, POLLIN, 0 }};
-+ if (poll(pfds, ARRAYSIZE(pfds), -1) == -1 && errno == EINTR)
-+ continue;
-+
-+ while ((ret = recv(ba_event_fd, &event, sizeof(event), MSG_DONTWAIT)) == -1 && errno == EINTR)
-+ continue;
-+ if (ret != sizeof(event)) {
-+ error("Couldn't read event: %s", strerror(ret == -1 ? errno : EBADMSG));
-+ goto fail;
-+ }
-+
-+init:
-+ debug("Fetching available transports");
-+ if ((ret = bluealsa_get_transports(ba_fd, &transports)) == -1) {
-+ error("Couldn't get transports: %s", strerror(errno));
-+ goto fail;
-+ }
-+
-+ debug("Got %d transports", ret);
-+
-+ for (int ix=0; ix<ret; ix++) {
-+ char addr[18];
-+ struct ba_msg_transport * transport = &transports[ix];
-+ ba2str(&transport->addr, addr);
-+ info("Transport %d: type %d, dev %s", ix, transport->type, addr);
-+ }
-+
-+ }
-+
-+fail:
-+ info("exit");
-+ return NULL;
-+}
-+
-+int main(int argc, char * argv[]) {
-+ printf("%s... !\n", argv[0]);
-+
-+ pthread_t monitor;
-+ if (pthread_create(&monitor, NULL, monitor_thread_entry, NULL) == -1) {
-+ debug("failed to create the monitor thread");
-+ goto fail;
-+ }
-+ pthread_join(monitor, NULL);
-+fail:
-+ return 0;
-+}
-diff --git a/test/test-io.c b/test/test-io.c
-index d913d2f..8ebb1d8 100644
---- a/test/test-io.c
-+++ b/test/test-io.c
-@@ -21,9 +21,6 @@
- #include "../src/rfcomm.c"
- #include "../src/transport.c"
- #include "../src/utils.c"
--#include "../src/shared/ffb.c"
--#include "../src/shared/log.c"
--#include "../src/shared/rt.c"
-
- static const a2dp_sbc_t config_sbc_44100_stereo = {
- .frequency = SBC_SAMPLING_FREQ_44100,
-diff --git a/test/test-utils.c b/test/test-utils.c
-index b704b42..46475f1 100644
---- a/test/test-utils.c
-+++ b/test/test-utils.c
-@@ -10,11 +10,11 @@
-
- #include <check.h>
-
-+#include <bluealsa/defs.h>
-+#include <bluealsa/ffb.h>
-+#include <bluealsa/rt.h>
-+
- #include "../src/utils.c"
--#include "../src/shared/defs.h"
--#include "../src/shared/ffb.c"
--#include "../src/shared/log.c"
--#include "../src/shared/rt.c"
-
- START_TEST(test_dbus_profile_object_path) {
-
-diff --git a/utils/Makefile.am b/utils/Makefile.am
-index 256689a..a6d132c 100644
---- a/utils/Makefile.am
-+++ b/utils/Makefile.am
-@@ -6,32 +6,31 @@ bin_PROGRAMS =
- if ENABLE_APLAY
- bin_PROGRAMS += bluealsa-aplay
- bluealsa_aplay_SOURCES = \
-- ../src/shared/ctl-client.c \
-- ../src/shared/ffb.c \
-- ../src/shared/log.c \
- aplay.c
- bluealsa_aplay_CFLAGS = \
- -I$(top_srcdir)/src \
-+ -I$(top_srcdir)/includes \
- @ALSA_CFLAGS@ \
- @BLUEZ_CFLAGS@ \
- @GIO2_CFLAGS@
- bluealsa_aplay_LDADD = \
- @ALSA_LIBS@ \
- @BLUEZ_LIBS@ \
-- @GIO2_LIBS@
-+ @GIO2_LIBS@ \
-+ ../src/bluealsalib/libbluealsa.la
- endif
-
- if ENABLE_RFCOMM
- bin_PROGRAMS += bluealsa-rfcomm
- bluealsa_rfcomm_SOURCES = \
-- ../src/shared/ctl-client.c \
-- ../src/shared/log.c \
- rfcomm.c
- bluealsa_rfcomm_CFLAGS = \
- -I$(top_srcdir)/src \
-+ -I$(top_srcdir)/includes \
- @BLUEZ_CFLAGS@
- bluealsa_rfcomm_LDADD = \
- @BLUEZ_LIBS@ \
-+ ../src/bluealsalib/libbluealsa.la \
- -lreadline
- endif
-
-diff --git a/utils/aplay.c b/utils/aplay.c
-index f792ce6..4b1372e 100644
---- a/utils/aplay.c
-+++ b/utils/aplay.c
-@@ -25,10 +25,10 @@
- #include <alsa/asoundlib.h>
- #include <gio/gio.h>
-
--#include "shared/ctl-client.h"
--#include "shared/defs.h"
--#include "shared/ffb.h"
--#include "shared/log.h"
-+#include <bluealsa/ctl-client.h>
-+#include <bluealsa/defs.h>
-+#include <bluealsa/ffb.h>
-+#include <bluealsa/log.h>
-
- struct pcm_worker {
- struct ba_msg_transport transport;
-diff --git a/utils/rfcomm.c b/utils/rfcomm.c
-index cc31f46..38e3b30 100644
---- a/utils/rfcomm.c
-+++ b/utils/rfcomm.c
-@@ -24,8 +24,8 @@
- #include <readline/readline.h>
- #include <readline/history.h>
-
--#include "shared/ctl-client.h"
--#include "shared/log.h"
-+#include <bluealsa/ctl-client.h>
-+#include <bluealsa/log.h>
-
- static char *strtrim(char *str) {
- while (isspace(*str))
---
-2.16.4
-
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0002-log-add-calling-function-name.patch b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0002-log-add-calling-function-name.patch
deleted file mode 100644
index 8ed7e0b6..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0002-log-add-calling-function-name.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 3a7400da79678e749381306e33163ca2c005cb3b Mon Sep 17 00:00:00 2001
-From: Thierry Bultel <thierry.bultel@iot.bzh>
-Date: Mon, 3 Dec 2018 14:31:31 +0100
-Subject: [PATCH 2/3] log: add calling function name
-
-Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
----
- includes/bluealsa/log.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/includes/bluealsa/log.h b/includes/bluealsa/log.h
-index 39663fb..6d4cec3 100644
---- a/includes/bluealsa/log.h
-+++ b/includes/bluealsa/log.h
-@@ -31,7 +31,7 @@ void info(const char *format, ...) __attribute__ ((format(printf, 1, 2)));
-
- #if DEBUG
- void _debug(const char *format, ...) __attribute__ ((format(printf, 1, 2)));
--# define debug(M, ARGS ...) _debug("%s:%d: " M, __FILE__, __LINE__, ## ARGS)
-+# define debug(M, ARGS ...) _debug("%s:%d:%s: " M, __FILE__, __LINE__,__func__, ## ARGS)
- #else
- # define debug(M, ARGS ...) do {} while (0)
- #endif
---
-2.16.4
-
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0003-dbus-request-a-name-on-startup.patch b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0003-dbus-request-a-name-on-startup.patch
deleted file mode 100644
index 1ef59296..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0003-dbus-request-a-name-on-startup.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 4c14fffbd20a6dd9e6ceca1eb1726ceaafab7410 Mon Sep 17 00:00:00 2001
-From: Thierry Bultel <thierry.bultel@iot.bzh>
-Date: Fri, 18 Jan 2019 11:45:29 +0100
-Subject: [PATCH 3/3] dbus: request a name on startup
-
-When the service thread is ready, ask a name to dbus
-The advantage of doing that is that client applications
-can check dbus for bluez-alsa presence, without having
-to implement any kinf of polling logic. Also, this
-way, they can be notified on the service exit, to
-perform any needed cleanup.
-Since there must be an instance of bluealsa daemon
-per hci device, the dbus name will be
-'org.bluez-alsa.hci0', 'org.bluez-alsa.hci1' ...
-and so on.
-
-Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
----
- configure.ac | 10 ++++++++++
- src/Makefile.am | 3 +++
- src/bluez-alsa.conf | 14 ++++++++++++++
- src/main.c | 32 ++++++++++++++++++++++++++++++++
- 4 files changed, 59 insertions(+)
- create mode 100644 src/bluez-alsa.conf
-
-diff --git a/configure.ac b/configure.ac
-index 6323d60..d4ec7d4 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -130,6 +130,16 @@ AC_ARG_WITH([alsaconfdir],
- [alsaconfdir="$sysconfdir/alsa/conf.d"],
- [alsaconfdir="$datadir/alsa/alsa.conf.d"])])
-
-+AC_ARG_WITH(dbusconfdir, AC_HELP_STRING([--with-dbusconfdir=PATH],
-+ [path to D-Bus config directory]), [path_dbusconf=${withval}],
-+ [path_dbusconf="`$PKG_CONFIG --variable=sysconfdir dbus-1`"])
-+if (test -z "${path_dbusconf}"); then
-+ DBUS_CONFDIR="${sysconfdir}/dbus-1/system.d"
-+else
-+ DBUS_CONFDIR="${path_dbusconf}/dbus-1/system.d"
-+fi
-+AC_SUBST(DBUS_CONFDIR)
-+
- test "x$prefix" = xNONE && prefix=$ac_default_prefix
- test "x$exec_prefix" = xNONE && exec_prefix=$prefix
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 5626ae5..c501f2e 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -23,6 +23,9 @@ bluealsa_SOURCES += \
- ofono-iface.c
- endif
-
-+dbusconfdir = @DBUS_CONFDIR@
-+dist_dbusconf_DATA = bluez-alsa.conf
-+
- AM_CFLAGS = \
- @BLUEZ_CFLAGS@ \
- @GLIB2_CFLAGS@ \
-diff --git a/src/bluez-alsa.conf b/src/bluez-alsa.conf
-new file mode 100644
-index 0000000..6b999d6
---- /dev/null
-+++ b/src/bluez-alsa.conf
-@@ -0,0 +1,14 @@
-+<!-- This configuration file specifies the required security policies
-+ for bluez-alsa core daemon to work. -->
-+
-+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
-+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-+<busconfig>
-+
-+ <!-- ../system.conf have denied everything, so we just punch some holes -->
-+
-+ <policy user="root">
-+ <allow own_prefix="org.bluez-alsa"/>
-+ </policy>
-+
-+</busconfig>
-diff --git a/src/main.c b/src/main.c
-index 9cef402..9183978 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -12,6 +12,7 @@
- # include "config.h"
- #endif
-
-+#define _GNU_SOURCE
- #include <errno.h>
- #include <getopt.h>
- #include <signal.h>
-@@ -58,6 +59,20 @@ static char *get_a2dp_codecs(
- return g_strjoinv(", ", (char **)tmp);
- }
-
-+static void name_acquired_handler(
-+ GDBusConnection *connection,
-+ const gchar *name,
-+ gpointer user_data) {
-+ debug("Acquired name: %s", name);
-+}
-+
-+static void name_lost_handler(
-+ GDBusConnection *connection,
-+ const gchar *name,
-+ gpointer user_data) {
-+ debug("Lost name: %s", name);
-+}
-+
- static GMainLoop *loop = NULL;
- static void main_loop_stop(int sig) {
- /* Call to this handler restores the default action, so on the
-@@ -318,6 +333,7 @@ int main(int argc, char **argv) {
- GError *err;
-
- err = NULL;
-+
- address = g_dbus_address_get_for_bus_sync(G_BUS_TYPE_SYSTEM, NULL, NULL);
- if ((config.dbus = g_dbus_connection_new_for_address_sync(address,
- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT |
-@@ -336,6 +352,19 @@ int main(int argc, char **argv) {
- ofono_register();
- #endif
-
-+ char * name_on_bus = NULL;
-+ asprintf(&name_on_bus, "org.bluez-alsa.%s", config.hci_dev.name);
-+
-+ guint g_dbusid;
-+ g_dbusid = g_bus_own_name_on_connection(config.dbus,
-+ name_on_bus,
-+ G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
-+ G_BUS_NAME_OWNER_FLAGS_REPLACE,
-+ name_acquired_handler,
-+ name_lost_handler,
-+ NULL,
-+ NULL);
-+
- /* In order to receive EPIPE while writing to the pipe whose reading end
- * is closed, the SIGPIPE signal has to be handled. For more information
- * see the io_thread_write_pcm() function. */
-@@ -359,5 +388,8 @@ int main(int argc, char **argv) {
- bluealsa_ctl_free();
- bluealsa_config_free();
-
-+ g_bus_unown_name (g_dbusid);
-+ free(name_on_bus);
-+
- return EXIT_SUCCESS;
- }
---
-2.16.4
-
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0004-bluealsa-pcm-bump-the-trigger-after-pcm-prepare.patch b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0004-bluealsa-pcm-bump-the-trigger-after-pcm-prepare.patch
deleted file mode 100644
index 7befe733..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa/0004-bluealsa-pcm-bump-the-trigger-after-pcm-prepare.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ba292e82928a6a0ea663039ba2d5c030c4cfa80d Mon Sep 17 00:00:00 2001
-From: Thierry Bultel <thierry.bultel@iot.bzh>
-Date: Fri, 8 Feb 2019 10:21:55 +0100
-Subject: [PATCH] bluealsa-pcm: bump the trigger after pcm prepare
-
-When a sound application recovers from a EPIPE by calling
-snd_pcm_prepare, and goes immediately after to a call to poll,
-it would be stuck forever unless the internal event trigger
-is bumped.
-
-Signed-off-by: Thierry Bultel <thierry.bultel@iot.bzh>
----
- src/asound/bluealsa-pcm.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/src/asound/bluealsa-pcm.c b/src/asound/bluealsa-pcm.c
-index 42cb61d..4ccbf0d 100644
---- a/src/asound/bluealsa-pcm.c
-+++ b/src/asound/bluealsa-pcm.c
-@@ -351,6 +351,12 @@ static int bluealsa_prepare(snd_pcm_ioplug_t *io) {
- pcm->io_ptr = 0;
-
- debug("Prepared: %d", pcm->fd);
-+
-+ /* When the sound application calls poll just after snd_pcm_prepare,
-+ * it would block forever unless the internal trigger is bumped
-+ * */
-+ eventfd_write(pcm->event_fd, 1);
-+
- return 0;
- }
-
---
-2.16.4
-
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend
deleted file mode 100644
index ece43824..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend
+++ /dev/null
@@ -1,19 +0,0 @@
-# This brings some mandatory patches for the softmixer and hal-manager.
-#
-# - patch 1 makes a communication library for hal-manager to get
-# the list of audio transports from bluez-alsa
-# - patch 2 makes the "debug" macro always display the caller name
-# - patch 3 asks dbus for a name like 'org.bluez-alsa.hciX' where hciX
-# - patch 4 is a bug fix
-# name of the HCI interface that the bluealsa daemon instance is handling
-#
-# Notice that patch 2 will very likely be replaced by a full dbus interface
-# in the future.
-#
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI += "file://0001-build-and-link-with-a-shared-library.patch"
-SRC_URI += "file://0002-log-add-calling-function-name.patch"
-SRC_URI += "file://0003-dbus-request-a-name-on-startup.patch"
-SRC_URI += "file://0004-bluealsa-pcm-bump-the-trigger-after-pcm-prepare.patch"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-core/packagegroups/packagegroup-agl-audio.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-core/packagegroups/packagegroup-agl-audio.bb
deleted file mode 100644
index bc236ff6..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-core/packagegroups/packagegroup-agl-audio.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "AGL Audio packages"
-DESCRIPTION = "The set of packages required by the AGL Audio"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
- packagegroup-agl-audio \
- "
-
-RDEPENDS_${PN} += "\
- 4a-alsa-core \
- agl-service-audio-4a \
- VIRTUAL-RUNTIME_alsa-state \
- agl-service-unicens \
- bluez-alsa \
- 4a-softmixer \
- 4a-hal-generic \
- 4a-hal-unicens \
- snd-avirt \
- ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', '4a-tools', '' , d)} \
-"
-# FIXME: Disable for now due to compilation issues against PulseAudio 12.x
-# ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio-module-4a-client', '' , d)}
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/files/0001-snd-avirt-backport-kernel-4.12-api.patch b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/files/0001-snd-avirt-backport-kernel-4.12-api.patch
deleted file mode 100644
index fa737cb4..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/files/0001-snd-avirt-backport-kernel-4.12-api.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 2fc07fedd17650f64f9bfcdb8682b55dad75cccd Mon Sep 17 00:00:00 2001
-From: Mark Farrugia <mark.farrugia@fiberdyne.com.au>
-Date: Mon, 8 Apr 2019 16:38:13 +1000
-Subject: [PATCH] 0001-snd-avirt-backport-kernel-4.12-api
-
----
- core.c | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/core.c b/core.c
-index c2e32c5..2bb6616 100644
---- a/core.c
-+++ b/core.c
-@@ -219,9 +219,8 @@ int snd_avirt_stream_try_complete(struct snd_avirt_stream *stream)
- /* Set PCM ops for the Audio Path*/
- PCM_OPS_SET(pcm_ops_ap, &stream->pcm_ops, pointer);
- PCM_OPS_SET(pcm_ops_ap, &stream->pcm_ops, get_time_info);
-- PCM_OPS_SET(pcm_ops_ap, &stream->pcm_ops, fill_silence);
-- PCM_OPS_SET(pcm_ops_ap, &stream->pcm_ops, copy_user);
-- PCM_OPS_SET(pcm_ops_ap, &stream->pcm_ops, copy_kernel);
-+ PCM_OPS_SET(pcm_ops_ap, &stream->pcm_ops, silence);
-+ PCM_OPS_SET(pcm_ops_ap, &stream->pcm_ops, copy);
- PCM_OPS_SET(pcm_ops_ap, &stream->pcm_ops, mmap);
- PCM_OPS_SET(pcm_ops_ap, &stream->pcm_ops, ack);
-
-@@ -331,9 +330,9 @@ snd_avirt_route_endpoint_copy(struct snd_pcm_substream *substream,
-
- switch (endpoint) {
- case SND_AVIRT_ROUTE_SOURCE:
-- return endpoint_ap->pcm_capture_ops->copy_kernel;
-+ return endpoint_ap->pcm_capture_ops->copy;
- case SND_AVIRT_ROUTE_SINK:
-- return endpoint_ap->pcm_playback_ops->copy_kernel;
-+ return endpoint_ap->pcm_playback_ops->copy;
- }
-
- return NULL;
---
-2.17.1
-
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/files/0002-snd-avirt-backport-kernel-4.9-api.patch b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/files/0002-snd-avirt-backport-kernel-4.9-api.patch
deleted file mode 100644
index fa944da0..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/files/0002-snd-avirt-backport-kernel-4.9-api.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From fe7fc04e4f685c72b4f971ca0e23b10d683cffe0 Mon Sep 17 00:00:00 2001
-From: Mark Farrugia <mark.farrugia@fiberdyne.com.au>
-Date: Fri, 16 Nov 2018 16:10:12 +1100
-Subject: [PATCH] snd-avirt-backport-kernel-4.9-api
-
----
- dummy/dummy.c | 6 +++---
- loopback/loopback.c | 6 +++---
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/dummy/dummy.c b/dummy/dummy.c
-index f683b92..c37be09 100644
---- a/dummy/dummy.c
-+++ b/dummy/dummy.c
-@@ -125,9 +125,9 @@ static int dummy_systimer_prepare(struct snd_pcm_substream *substream)
- return 0;
- }
-
--static void dummy_systimer_callback(struct timer_list *t)
-+static void dummy_systimer_callback(unsigned long data)
- {
-- struct dummy_systimer_pcm *dpcm = from_timer(dpcm, t, timer);
-+ struct dummy_systimer_pcm *dpcm = (struct dummy_systimer_pcm *)data;
- unsigned long flags;
- int elapsed = 0;
-
-@@ -162,7 +162,7 @@ static int dummy_systimer_create(struct snd_pcm_substream *substream)
- if (!dpcm)
- return -ENOMEM;
- substream->runtime->private_data = dpcm;
-- timer_setup(&dpcm->timer, dummy_systimer_callback, 0);
-+ setup_timer(&dpcm->timer, dummy_systimer_callback, (unsigned long)dpcm);
- spin_lock_init(&dpcm->lock);
- dpcm->substream = substream;
- return 0;
-diff --git a/loopback/loopback.c b/loopback/loopback.c
-index 4181392..6667a69 100644
---- a/loopback/loopback.c
-+++ b/loopback/loopback.c
-@@ -498,9 +498,9 @@ unlock:
- return running;
- }
-
--static void loopback_timer_function(struct timer_list *t)
-+static void loopback_timer_function(unsigned long data)
- {
-- struct loopback_pcm *dpcm = from_timer(dpcm, t, timer);
-+ struct loopback_pcm *dpcm = (struct loopback_pcm *)data;
- unsigned long flags;
-
- spin_lock_irqsave(&dpcm->cable->lock, flags);
-@@ -652,7 +652,7 @@ static int loopback_open(struct snd_pcm_substream *substream)
- }
- dpcm->loopback = loopback;
- dpcm->substream = substream;
-- timer_setup(&dpcm->timer, loopback_timer_function, 0);
-+ setup_timer(&dpcm->timer, loopback_timer_function, (unsigned long)dpcm);
-
- cable = loopback->cables[substream->pcm->device];
- if (!cable) {
---
-2.17.1
-
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/snd-avirt.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/snd-avirt.bb
deleted file mode 100644
index 006f9c51..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/snd-avirt.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "Build SND_AVIRT driver"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
-
-inherit module
-
-PV = "0.1"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/avirt;protocol=https;branch=${AGL_BRANCH}"
-
-S = "${WORKDIR}/git"
-SRCREV = "12c6dc3159cc14cb3456d6d504398ba779538fb3"
-
-KERNEL_MODULE_AUTOLOAD += "snd-avirt-core snd-avirt-ap-loopback"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/snd-avirt.bbappend b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/snd-avirt.bbappend
deleted file mode 100644
index 3c9fea0e..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-kernel/snd-avirt/snd-avirt.bbappend
+++ /dev/null
@@ -1,22 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-def prep_version (d) :
- KV = d.getVar('KERNEL_VERSION', True)
- if not KV :
- return "4.12"
- else:
- return KV
-
-ORIG_KERN_VER = "${@prep_version(d)}"
-
-VANILLA_KERNEL_VERSION = "${@str(ORIG_KERN_VER.split("-")[0].split(".")[0]+ORIG_KERN_VER.split("-")[0].split(".")[1])}"
-
-APPLY_0001 = "${@str('no' if ${VANILLA_KERNEL_VERSION} > 412 else 'yes')}"
-APPLY_0002 = "${@str('no' if ${VANILLA_KERNEL_VERSION} > 49 else 'yes')}"
-
-SRC_URI_append = " \
- file://0001-snd-avirt-backport-kernel-4.12-api.patch;apply=${APPLY_0001} \
- file://0002-snd-avirt-backport-kernel-4.9-api.patch;apply=${APPLY_0002} \
- "
-# Make sure we can expose KERNEL_VERSION ...
-do_patch[depends] += "virtual/kernel:do_populate_sysroot"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-alsa-core/4a-alsa-core_git.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-alsa-core/4a-alsa-core_git.bb
deleted file mode 100644
index b94eff21..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-alsa-core/4a-alsa-core_git.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "4A - Low Level Alsa Binding"
-DESCRIPTION = "Low Level Alsa Binding for 4A (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://git.automotivelinux.org/src/4a-alsa-core/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-alsa-core;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "9b71be04ea600189e390bb111624ad5c2d248a4c"
-
-DEPENDS += "libafb-helpers"
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-inherit afb-system-cmake
-
-# FIXME: Remove once CMake+ninja issues are resolved
-OECMAKE_GENERATOR = "Unix Makefiles"
-
-FILES_${PN}-dev += "${INSTALL_PREFIX}/4a-alsa-core/htdocs"
-
-FILES_${PN} += "${INSTALL_PREFIX}/4a-alsa-core"
-FILES_${PN} += "${INSTALL_PREFIX}/lib"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/4a-hal-config.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/4a-hal-config.bb
deleted file mode 100644
index fc648a1d..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/4a-hal-config.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "4A - HAL Configuration"
-DESCRIPTION = "Configuration files for HALs used in 4A (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-reference/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = "file://asound.conf.template \
- "
-
-PV = "0.1"
-
-RPROVIDES_${PN} += "VIRTUAL-RUNTIME_alsa-state"
-
-inherit afb-system
-
-do_install () {
- install -d ${D}/${sysconfdir}
- install -m 0755 ${WORKDIR}/asound.conf.template ${D}/${sysconfdir}/asound.conf
- sed -i "s|@INSTALL_PREFIX@|${INSTALL_PREFIX}|g" ${D}/${sysconfdir}/asound.conf
-}
-
-FILES_${PN} += "${sysconfdir}/asound.conf"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/files/asound.conf.template b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/files/asound.conf.template
deleted file mode 100644
index 5a265db0..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/files/asound.conf.template
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-#4A pcm configuration is now dynamic, please check hal configuration files in @INSTALL_PREFIX@/4a-hal/etc
-#
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.README b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.README
deleted file mode 100644
index 689f9bf8..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.README
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a sample on how the update-alternative system can be used to select
-the highest priority hal given.
-Downside ... always only one file is possible in the etc folder. No HAL_LIST.
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.bbexample b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.bbexample
deleted file mode 100644
index 3bafc3bb..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.bbexample
+++ /dev/null
@@ -1,57 +0,0 @@
-SUMMARY = "4A - Generic HAL device configuration"
-DESCRIPTION = "Generic HAL device configuration in 4A (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-configs/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-hal-configs;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "45f205076573a858348c10a52d31382f31deaf55"
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-# The package is machine-specific due to variable config content
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-inherit afb-system update-alternative
-# This defines INSTALL_PREFIX = "/usr/libexec/agl/"
-
-# no configure needed
-do_configure[noexec] = "1"
-# no compile needed
-do_compile[noexec] = "1"
-
-
-# when no specific HAL is defined, use a generic usb one
-4A_DEFAULT_HAL ??= "2ch-generic-usb"
-
-# for specific machines, activate only known HAL
-4A_DEFAULT_HAL_m3ulcb ?= "rcar-m3"
-# Downside: only one file at a time!
-4A_DEFAULT_HAL_h3ulcb ?= "rcar-m3"
-4A_DEFAULT_HAL_intel-corei7-64 ?= "intel-minnow"
-4A_DEFAULT_HAL_qemux86-64 ?= "intel-qemu"
-
-# Due to bug SPEC-1610, default hal for RPI3 is not active yet
-# 4A_DEFAULT_HAL_raspberrypi3 ?= "raspberry-pi-3"
-
-do_install () {
- # get pkgdir for 4a-hal
- PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal
-
- install -d -m 0755 ${PKGDIR}/etc.available
- cp -ar ${S}/*/*.json ${PKGDIR}/etc.available/
- chown -R root:root ${PKGDIR}/
-}
-
-# we define a '4a-default-hal' alternative with a low default priority
-# you can deploy your own hal with a higher prio
-ALTERNATIVE_${PN} = "4a-default-hal"
-ALTERNATIVE_PRIORITY = "10"
-ALTERNATIVE_LINK_NAME[4a-default-hal] = "${INSTALL_PREFIX}/4a-hal/etc/4a-default-hal.json"
-ALTERNATIVE_TARGET[4a-default-hal] = "${INSTALL_PREFIX}/4a-hal/etc.available/hal-4a-${4A_DEFAULT_HAL}.json"
-
-
-RPROVIDES_${PN} += "virtual/4a-default-hal" \ No newline at end of file
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.README b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.README
deleted file mode 100644
index 602486a4..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.README
+++ /dev/null
@@ -1,4 +0,0 @@
-To keep it simple.
-
-Just expose 4A_HAL_LIST as-is to conf/local.conf so the user can actually choose any json file.
-
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.bb
deleted file mode 100644
index e504c3da..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "4A - Generic HAL device configuration"
-DESCRIPTION = "Generic HAL device configuration in 4A (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-configs/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-hal-configs;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "fdf0e3c4c67ceb5ddc77c9c1f27d85c1be2055a6"
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-# The package is machine-specific due to variable config content
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-inherit afb-system
-# This defines INSTALL_PREFIX = "/usr/libexec/agl/"
-
-# no configure needed
-do_configure[noexec] = "1"
-
-# no compile needed
-do_compile[noexec] = "1"
-
-# when no specific HAL is defined, use a generic usb one
-4A_HAL_LIST ??= "2ch-generic-usb"
-
-# for specific machines, activate only known HALs
-4A_HAL_LIST_m3ulcb ?= "rcar-m3 rcar-m3kf"
-4A_HAL_LIST_h3ulcb ?= "rcar-m3 rcar-m3kf"
-4A_HAL_LIST_intel-corei7-64 ?= "intel-minnow intel-upsquared-hdmi"
-4A_HAL_LIST_qemux86-64 ?= "intel-qemu"
-
-# Due to bug SPEC-1610, default hal for RPI3 is not active yet
-# 4A_HAL_LIST_raspberrypi3 ?= "raspberry-pi-3"
-
-do_install () {
-
- # get pkgdir for 4a-hal
- PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal
-
- install -d -m 0755 ${PKGDIR}
- install -d -m 0755 ${PKGDIR}/etc
- install -d -m 0755 ${PKGDIR}/etc.available
-
- cp -ar ${S}/*/*.json ${PKGDIR}/etc.available/
- chown -R root:root ${PKGDIR}/etc.available
-
- for x in ${4A_HAL_LIST}; do
- hal=hal-4a-$x.json
- cp -v $PKGDIR/etc.available/${hal} $PKGDIR/etc/
- done
-}
-
-
-RPROVIDES_${PN} += "virtual/4a-default-hal"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.README b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.README
deleted file mode 100644
index 29531ccd..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.README
+++ /dev/null
@@ -1,3 +0,0 @@
-This is a sample how a vendor can:
-- inject his own hal (as file hal-4a-myhal.json)
-- set PREFERRED_RPROVIDER_virtual/4a-default-hal = "4a-hal-vendor-config" on conf/local.conf
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.bbexample b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.bbexample
deleted file mode 100644
index 105ab1fa..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.bbexample
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "4A - Vendor HAL device configuration"
-DESCRIPTION = "Vendor HAL device configuration in 4A (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://example.com/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI = "file://hal-4a-myhal.json"
-
-PV = "0.1"
-S = "${WORKDIR}/"
-
-# The package is machine-specific due to variable config content
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-inherit afb-system
-# This defines INSTALL_PREFIX = "/usr/libexec/agl/"
-
-# no configure needed
-do_configure[noexec] = "1"
-
-# no compile needed
-do_compile[noexec] = "1"
-
-# use our local hal
-4A_HAL_LIST = "myhal"
-
-do_install () {
-
- # get pkgdir for 4a-hal
- PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal
-
- install -d -m 0755 ${PKGDIR}/etc.available
-
- cp -ar ${S}/*.json ${PKGDIR}/etc.available/
- chown -R root:root ${PKGDIR}/etc.available
-
- for x in ${4A_HAL_LIST}; do
- hal=hal-4a-$x.json
- cp -v $PKGDIR/etc.available/${hal} $PKGDIR/etc/
- done
-}
-
-
-RPROVIDES_${PN} += "virtual/4a-default-hal" \ No newline at end of file
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/deploy-hal-udev.sh b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/deploy-hal-udev.sh
deleted file mode 100755
index f031d58b..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/deploy-hal-udev.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-rm /usr/libexec/agl/4a-hal/etc/*
-cp /usr/libexec/agl/4a-hal/etc.available/$i /usr/libexec/agl/4a-hal/etc/
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/udev-sample-rule.rules b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/udev-sample-rule.rules
deleted file mode 100644
index d2d16a17..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/udev-sample-rule.rules
+++ /dev/null
@@ -1 +0,0 @@
-ACTION=="add", SUBSYSTEM=="usb", SOMEOTHERMATCH="bar", RUN+="/usr/bin/deploy-hal-udev.sh hal-4a-greenbox.json"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-generic/4a-hal-generic_git.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-generic/4a-hal-generic_git.bb
deleted file mode 100644
index 8b20b83d..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-generic/4a-hal-generic_git.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "4A - Generic HAL"
-DESCRIPTION = "Generic HAL in 4A (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-generic/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-hal-generic;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "0c4921b83a13bcb96bf03fb0e7a0733c3e202474"
-
-DEPENDS += "lua bluez-alsa liburcu libafb-helpers libappcontroller"
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-inherit afb-system-cmake
-
-# FIXME: Remove once CMake+ninja issues are resolved
-OECMAKE_GENERATOR = "Unix Makefiles"
-
-do_install_append () {
- # get pkgdir - note that '4a-hal' comes from project ${project_git_repo}/conf.d/cmake/config.cmake
- PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal
-
- # transition: provided by separate package
- rm -rf $PKGDIR/etc
-}
-
-RDEPENDS_${PN} += "virtual/4a-default-hal bluez-alsa"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-unicens/4a-hal-unicens_git.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-unicens/4a-hal-unicens_git.bb
deleted file mode 100644
index 058d20bb..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-unicens/4a-hal-unicens_git.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "4A - Unicens (MOST) Binding"
-DESCRIPTION = "Unicens binding (MOST audio network support) for 4A (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-unicens/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e385f6075dcdf3ad6ff0056fca58a129"
-
-DEPENDS += "lua libafb-helpers libappcontroller"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-hal-unicens;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "9228c9da5b85f0fdd6b01f0309e57b846618be63"
-
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-inherit afb-system-cmake
-
-# FIXME: Remove once CMake+ninja issues are resolved
-OECMAKE_GENERATOR = "Unix Makefiles"
-
-do_install_append () {
- # installation folder for this plugin is '4a-hal'
- # get pkgdir - note that '4a-hal' comes from project ${project_git_repo}/conf.d/cmake/config.cmake
- PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal
-
- # transition: provided by separate package
- rm -rf $PKGDIR/etc
-}
-
-
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-softmixer/4a-softmixer_git.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-softmixer/4a-softmixer_git.bb
deleted file mode 100644
index 908809b6..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-softmixer/4a-softmixer_git.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "4A - Softmixer"
-DESCRIPTION = "4A Softmixer (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://git.automotivelinux.org/src/4a-softmixer/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-softmixer.git;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "1a75612274f883aed09d198575582abdc0c9fe0f"
-
-DEPENDS += "lua liburcu libafb-helpers libappcontroller libavirt"
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-inherit afb-system-cmake
-
-# FIXME: Remove once CMake+ninja issues are resolved
-OECMAKE_GENERATOR = "Unix Makefiles"
-
-#FIXME :
-#FILES_${PN}-dev += "${INSTALL_PREFIX}/4a-softmixer/htdocs"
-#FILES_${PN} += "${INSTALL_PREFIX}/afb-aaaa"
-#FILES_${PN} += "${INSTALL_PREFIX}/lib"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-tools/4a-tools_git.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-tools/4a-tools_git.bb
deleted file mode 100644
index ae1117ad..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-tools/4a-tools_git.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "4A - Tools"
-DESCRIPTION = "Tools, utilities, scripts and data related to 4A"
-HOMEPAGE = "https://github.com/iotbzh/4a-tools/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI = "gitsm://github.com/iotbzh/4a-tools;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "flounder_5.99.2"
-#SRCREV = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-
-do_install() {
- oe_runmake install DESTDIR=${D}${prefix}
-}
-
-RDEPENDS_${PN} += "bash python3-websockets"
-FILES_${PN} += "${datadir}/4a/media/*"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/agl-service-audio-4a_git.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/agl-service-audio-4a_git.bb
deleted file mode 100644
index 014fe119..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/agl-service-audio-4a_git.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "4A - High Level Audio API Service"
-DESCRIPTION = "High Level Audio API service used in 4A (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-audio-4a/"
-SECTION = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-audio-4a;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-inherit cmake aglwgt pkgconfig
-
-DEPENDS += "alsa-lib json-c systemd af-binder glib-2.0 lua libappcontroller"
-
-do_aglwgt_deploy_append() {
- cat <<'EOF' >${D}/${sysconfdir}/agl-postinsts/99_4A_service_patch.sh
-N=600
-svcfile="/usr/local/lib/systemd/*/afm-service-agl-service-audio-4a*.service"
-set -x
-echo "-- TMP 4A INSTALL FIX from meta-agl/meta-app-framework/recipes-multimedia/agl-service-audio-4a/agl-service-audio-4a_git.bb - MUST BE REMOVED !!!"
-while ! ls $svcfile > /dev/null; do
- if [ $N = 0 ]; then echo "-- TMP 4A INSTALL NOT FIXED"; exit 0; fi
- echo .
- sleep 0.2
- N=$(expr $N - 1)
-done
-sed -i '/\[Unit\]/ a Before=pulseaudio.service' $svcfile;
-sed -i '/\[Unit\]/ a ConditionPathExistsGlob=/dev/snd/control*' $svcfile;
-sed -i '/ExecStartPre=/ a Environment=LIBASOUND_THREAD_SAFE=0' $svcfile;
-
-sed -i -e 's|/usr/bin/afb-daemon\>|& --ldpath=/usr/libexec/agl/4a-alsa-core/lib:/usr/libexec/agl/4a-hal/lib:/usr/libexec/agl/smixer/lib|' $svcfile
-
-# binder name matters: it must match "afbd-4a-*" => the config file (controller json file) that will be searched will be "policy-4a-*.json"
-sed -i -e 's|--name afbd-agl-\(.*\)|--name afbd-4a-\1|' $svcfile
-
-# workaround for SPEC-1762
-sed -i -e 's|/usr/bin/afb-daemon\>|/usr/bin/4a_wait_bt.sh &|' $svcfile
-
-echo "-- TMP 4A INSTALL FIX END"
-
-EOF
- chmod a+x ${D}/${sysconfdir}/agl-postinsts/99_4A_service_patch.sh
-}
-
-##############################################
-# workaround for SPEC-1762/SPEC-1763
-RDEPENDS_${PN} += "bash"
-SRC_URI += "file://4a_wait_bt.sh"
-do_install_append() {
- install -d ${D}${bindir}
- install -m 0755 ${WORKDIR}/4a_wait_bt.sh ${D}${bindir}/
-}
-#
-##############################################
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/files/4a_wait_bt.sh b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/files/4a_wait_bt.sh
deleted file mode 100755
index 9dec4350..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/files/4a_wait_bt.sh
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/bin/bash
-
-###############################################################
-# This is a workaround for SPEC-1762/SPEC-1763
-#
-# THIS SCRIPT MUST BE REMOVED ONCE THE ABOVE ISSUES ARE SOLVED
-#
-# Source recipe is:
-#
-# meta-audio-4a-framework/
-# recipes-multimedia/
-# agl-service-audio-4a/
-# agl-service-audio-4a_git.bb
-#
-# Signed-off-by: Stephane Desneux <stephane.desneux@iot.bzh>
-###############################################################
-
-# time from script startup
-LIMIT=20
-ts0=0
-function ts() { echo $(( $(date +%s) - ts0 )); }
-ts0=$(ts)
-function havetime() { [[ $(ts) -le ${1:-$LIMIT} ]] || return 1; }
-
-function waitloop() {
- # ensure bt modules are loaded (delay: 5s)
- while havetime 4; do
- [[ -d /sys/module/bluetooth ]] && {
- echo "bluetooth kernel module detected"
- break
- }
- echo "waiting for bluetooth kernel module to be up"
- sleep 0.2
- done
- havetime 4 || { echo "TIMEOUT REACHED"; return 1; }
-
- # check that we have at least one controller
- HCIDEV=
- while havetime 8; do
- echo "detecting hci devices..."
- for x in $(ls /sys/class/bluetooth/hci* 2>/dev/null); do
- [[ -z "$HCIDEV" ]] && HCIDEV=$(basename $x)
- done
- [[ -n "$HCIDEV" ]] && {
- echo "found HCI controller: $HCIDEV"
- break
- }
- sleep 0.2
- done
- havetime 8 || { echo "TIMEOUT REACHED"; return 1; }
-
- # wait for controller to be up and running
- while havetime 15; do
- state=$(hciconfig $HCIDEV | grep -A 2 ^hci0 | tail -1)
- [[ $state =~ UP ]] && [[ $state =~ RUNNING ]] && {
- echo "HCI controller $HCIDEV state: $state"
- break
- }
- echo "HCI controller $HCIDEV state: $state ... waiting for UP RUNNING"
- sleep 0.2
- done
- havetime 15 || { echo "TIMEOUT REACHED"; return 1; }
- echo "HCI device up and running after $(ts) seconds"
-
- # wait for bluetooth-service to return something
- while havetime; do
- res=$(afb-client-demo -d unix:/run/user/$UID/apis/ws/Bluetooth-Manager adapter_state true)
- [[ "$res" =~ \"response\":(.*)}$ ]] && res=${BASH_REMATCH[1]}
- [[ "$res" =~ \"powered\":true ]] && {
- echo "Bluetooth-Manager/power: $res"
- break
- }
- echo "Bluetooth-Manager/power: not ready yet ($res)"
- sleep 0.2
- done
- echo "Bluetooth-Manager ready after $(ts) seconds"
-
- echo "4A now starting..."
-}
-
-waitloop 2>&1 | sed 's/^/4AWAITBT /' >&2
-exec "$@"
-
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/alsa/alsa-plugins_%.bbappend b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/alsa/alsa-plugins_%.bbappend
deleted file mode 100644
index 5109a314..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/alsa/alsa-plugins_%.bbappend
+++ /dev/null
@@ -1,7 +0,0 @@
-# Remove PulseAudio plugin configuration files
-
-do_install_append() {
- rm -f ${D}${datadir}/alsa/alsa.conf.d/*pulseaudio*
-}
-
-FILES_${PN}-pulseaudio-conf = "${datadir}/alsa/alsa.conf.d"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/libavirt/libavirt_git.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/libavirt/libavirt_git.bb
deleted file mode 100644
index 6d224e4e..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/libavirt/libavirt_git.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "AVIRT user-space library"
-DESCRIPTION = "ALSA Virtual Dynamic Sound Driver (AVIRT) user-space library for dynamic sound stream creation."
-HOMEPAGE = "https://git.automotivelinux.org/src/libavirt/"
-SECTION = "libs/multimedia"
-
-LICENSE = "GPL-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libavirt;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "379ea3c132f53eb6f5cf26d1c8a5ca335eb32a2e"
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-DEPENDS = "alsa-lib"
-
-inherit cmake
-
-ALLOW_EMPTY_${PN} = "1"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/files/default.pa.4a b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/files/default.pa.4a
deleted file mode 100644
index 0efdacc2..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/files/default.pa.4a
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/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, see <http://www.gnu.org/licenses/>.
-
-# This startup script is used only if PulseAudio is started per-user
-# (i.e. not in system mode)
-
-.fail
-
-### Automatically augment property information from .desktop files
-### stored in /usr/share/application
-load-module module-augment-properties
-
-### 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 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
-
-.ifexists module-4a-client.so
-load-module module-null-sink sink_name=aaaa_null_sink sink_properties="device.description='4A Null Output'"
-set-default-sink aaaa_null_sink
-load-module module-4a-client
-.else
-load-module module-udev-detect
-.endif
-
-### 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
-
-### 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
-
-### 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
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio-module-4a-client_git.bb b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio-module-4a-client_git.bb
deleted file mode 100644
index b5e9e011..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio-module-4a-client_git.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "pulseaudio 4A client module"
-DESCRIPTION = "pulseaudio module to work with 4A (AGL Advanced Audio Agent)"
-HOMEPAGE = "https://git.automotivelinux.org/src/pulseaudio-module-4a"
-SECTION = "plugins"
-
-LICENSE = "LGPL-2.1+"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/pulseaudio-module-4a.git;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "9cd72ed153f6615ed826b048e1c344bf4640bd2b"
-
-PV = "0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-inherit cmake pkgconfig
-
-DEPENDS += "af-binder systemd json-c pulseaudio"
-RDEPENDS_${PN} = "pulseaudio-module-alsa-sink"
-
-FILES_${PN} += "${libdir}/pulse-*/modules/module-4a-client.so"
diff --git a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend b/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend
deleted file mode 100644
index d8a84990..00000000
--- a/meta-agl-devel/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend
+++ /dev/null
@@ -1,7 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += "file://default.pa.4a"
-
-do_install_append () {
- cp ${WORKDIR}/default.pa.4a ${D}${sysconfdir}/pulse/default.pa
-}
diff --git a/meta-agl-devel/LICENSE b/meta-agl-devel/LICENSE
new file mode 100644
index 00000000..e8758f89
--- /dev/null
+++ b/meta-agl-devel/LICENSE
@@ -0,0 +1,20 @@
+Different components of the AGL layers are under different licenses (a mix
+of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further
+details of the individual licenses.
+
+All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar)
+is MIT licensed unless otherwise stated.
+Source code included in tree for individual recipes (e.g. patches) are under
+the LICENSE stated in the associated recipe (.bb file) unless otherwise stated.
+
+License information for any other files (scripts) is either explicitly stated
+or defaults to GPL version 2 only.
+
+Individual files can contain the following style tags instead of the full
+license text to identify their license:
+
+ SPDX-License-Identifier: GPL-2.0-only
+ SPDX-License-Identifier: MIT
+
+This enables machine processing of license information based on the SPDX
+License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-devel/LICENSE.GPL-2.0-only b/meta-agl-devel/LICENSE.GPL-2.0-only
new file mode 100644
index 00000000..5db3c0a2
--- /dev/null
+++ b/meta-agl-devel/LICENSE.GPL-2.0-only
@@ -0,0 +1,288 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+Note:
+Individual files contain the following tag instead of the full license text.
+
+ SPDX-License-Identifier: GPL-2.0-only
+
+This enables machine processing of license information based on the SPDX
+License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/COPYING.MIT b/meta-agl-devel/LICENSE.MIT
index 89de3547..a6919eb7 100644
--- a/meta-agl-devel/meta-audio-soundmanager-framework/COPYING.MIT
+++ b/meta-agl-devel/LICENSE.MIT
@@ -13,5 +13,13 @@ 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.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Note:
+Individual files contain the following tag instead of the full license text.
+
+ SPDX-License-Identifier: MIT
+
+This enables machine processing of license information based on the SPDX
+License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-devel/README.md b/meta-agl-devel/README.md
index 1a5b4861..dc45dab3 100644..120000
--- a/meta-agl-devel/README.md
+++ b/meta-agl-devel/README.md
@@ -1,86 +1 @@
-meta-agl-devel layer
-======================================================
-
-The meta-agl-devel layer is intended to contain components that are under
-testing/development or software packages that OEMs need but to not exist
-in AGL.
-
-Here below you can find more information about the components of this layer.
-
-Virtualization support (meta-egvirt)
-======================================================
-
-meta-egvirt is the Virtualization Expert Group (EG-VIRT) layer, targeting to enable
-virtualization support in AGL.
-
-For more information, see the README.md file included in the layer, or alternatively
-visit the EG\_VIRT wiki page at: https://wiki.automotivelinux.org/eg-virt
-
-The OEM needs library for AGL
-======================================================
-
-There are some software package that the OEM needs, but not exist in the AGL source.
-This layer is add OEM needs library for AGL.
-
-The software packages list:
- * boost
- * fixesproto
- * imagemagick
- * iptables
- * Xorg-macros
- * zlib
- * eglibc = glibc
- * libcurl
- * libgif
- * libneon
- * mongoose
- * fuse
- * protocol buffers
- * bsdiff
- * module-init-tools
- * libcroco
- * libtiff
- * librsvg
- * libpcap
-
-Quick start guide
------------------
-To Add these library by add the feature 'agl-oem-extra-libs'
-
-1. Before build you need prepare agl layers:
- * You can read it at meta-agl/README-AGL.md
-
-2. build the agl-demo-platform with 'agl-oem-extra-libs':
-
-```bash
-source meta-agl/scripts/aglsetup.sh -m qemux86-64 agl-demo [agl-appfw-smack] [agl-devel] [agl-netboot] agl-oem-extra-libs
-```
-
-3. Build agl-demo-platform
-
-```bash
-bitbake agl-demo-platform
-```
-
-Supported Machines
-------------------
-
-Reference hardware:
-
-* QEMU (x86-64) - emulated machine: qemux86-64
-
-HMI Framework
-======================================================
-Quick start guide
------------------
-To Add HMI Framework, it is necessary to add 'hmi-framework' at source command as same as agl-oem-extra-libs
-
-1. Before build you need prepare agl layers:
- * You can read it at meta-agl/README-AGL.md
-
-2. build the agl-demo-platform with 'hmi-framework':
-
-```bash
-source meta-agl/scripts/aglsetup.sh -m m3ulcb agl-demo [agl-appfw-smack] [agl-devel] [agl-netboot] hmi-framework
-```
-
+meta-agl-devel.md \ No newline at end of file
diff --git a/meta-agl-devel/meta-agl-devel.md b/meta-agl-devel/meta-agl-devel.md
index 473a4fe5..757eeec3 100755
--- a/meta-agl-devel/meta-agl-devel.md
+++ b/meta-agl-devel/meta-agl-devel.md
@@ -11,129 +11,24 @@ The `meta-agl-devel` layer contains the following files and sub-layers:
```
.
-├── meta-agl-telemetry
-├── meta-audio-4a-framework
-├── meta-audio-soundmanager-framework
-├── meta-egvirt
-├── meta-gstrecorder-rcar-gen3
-├── meta-hmi-framework
-├── meta-oem-extra-libs
+├── docs
+├── LICENSE
+├── LICENSE.GPL-2.0-only
+├── LICENSE.MIT
+├── meta-agl-devel.md
+├── meta-agl-jailhouse
+├── meta-speech-framework
├── README.md
-├── templates
+└── templates
```
The following list provides a summary of these sub-layers:
-* `meta-agl-telemetry`: Provides the smallest AGL image.
- The image is designed to be used when a device requires restricted
- scope of responsibilites (e.g. collecting vehicle telemetry).
+* `meta-speech-framework`: Provides libraries and software packages needed by
+ for speech recognition.
-* `meta-audio-4a-framework`: A collection of recipes used for the
- first integration of 4A (i.e. Advanced AGL Audio Architecture).
-
-* `meta-pipewire`: A collection of recipes used for the integration
- of the pipewire sound system.
-
-* `meta-audio-soundmanager-framework`: Supports the Soundmanager
- Audio Framework features, which maps to the `agl-audio-soundmanager-framework`
- AGL feature.
-
-* `meta-egvirt`: The AGL Virtualization Expert Group (EG-VIRT) layer.
- This layer supports the design, test, implementation, and assessment
- of virtualization technologies (e.g. containers, hypervisors, system
- partitioners, and so forth) aimed at AGL ARMv8 and Intel platforms.
-
-* `meta-gstrecorder-rcar-gen3`: Supports streaming audio and video for
- the Pro and Premier board kits (e.g.
- [Renesas R-Car Starter Kit Pro Board](https://www.elinux.org/R-Car/Boards/M3SK)
- and
- [Renesas R-Car Starter Kit Premier Board](https://www.elinux.org/R-Car/Boards/H3SK)).
-
-* `meta-hmi-framework`: Provides AGL's Human Machine Interface (HMI) framework
- through resource management consisting of sounds, windows, and input control.
- For more information, see the
- [HMI-Framework Page](https://wiki.automotivelinux.org/hmiframework) of the
- AGL Wiki.
-
-* `meta-oem-extra-libs`: Provides libraries and software packages needed by
- OEMs but not provided by the AGL software.
+* `meta-agl-jailhouse`: Provides Jailhouse partitioning hypervisor and
+ supporting packages.
* `templates`: Feature templates that support the `meta-agl-devel` layer.
-## Additional Sub-Layer Information
-
-This section provides additional information for the `meta-egvirt`,
-`meta-oem-extra-libs`, and `meta-hmi-framework` layers.
-
-### Virtualization Support
-
-The `meta-egvirt` layer enables virtualization support in AGL.
-The AGL Virtualization Expert (EG-VIRT) group is responsible
-for design and implementation of AGL virtualization solutions
-(.e.g the Virtualization platform architecture of AGL).
-You can read about EG-VERT's efforts on the
-"[Virtualization Expert Group's](https://wiki.automotivelinux.org/eg-virt)"
-page of the AGL wiki.
-
-Additionally, you can learn more about virtualization as it applies to AGL
-by reading
-"[The Automotive Grade Linux Software Defined Connected Car Architecture](https://www.automotivelinux.org/wp-content/uploads/sites/4/2018/06/agl_software_defined_car_jun18.pdf)"
-whitepaper.
-
-### OEM Extra Libraries
-
-The `meta-oem-extra-libs` layer provides additional software packages many OEMs need
-but are not part of the AGL source.
-Following is the list of packages this layer provides:
-
- * boost
- * fixesproto
- * imagemagick
- * iptables
- * Xorg-macros
- * zlib
- * eglibc = glibc
- * libcurl
- * libgif
- * libneon
- * mongoose
- * fuse
- * protocol buffers
- * bsdiff
- * module-init-tools
- * libcroco
- * libtiff
- * librsvg
- * libpcap
-
-To add these packages to your library, you need to include the
-`agl-oem-extra-libs` AGL feature when you initialize your build
-environment using the `aglsetup.sh` script.
-
-For information on how to use the `aglsetup.sh` script to initialize
-your build environment, see the
-"[Initializing Your Build Environment](../getting_started/reference/getting-started/image-workflow-initialize-build-environment.html)"
-section.
-
-Once you have included the AGL feature, you can build your image.
-
-### HMI Framework
-
-The `meta-hmi-framework` layer supports the Human-Machine Interface (HMI) Framework.
-The HMI-Framework is the User Interface (UI) to control the Infotainment System.
-Work continues to close the gap between the user experience of a smart phone
-and the Infotainment System in a vehicle, for example.
-
-You can find more out about HMI Framework progress on the
-"[HMI Framework](https://wiki.automotivelinux.org/hmiframework)" page on the AGL Wiki.
-
-To add HMI Framework support to your image, you need to include the
-`hmi-framework` AGL feature when you initialize your build
-environment using the `aglsetup.sh` script.
-
-For information on how to use the `aglsetup.sh` script to initialize
-your build environment, see the
-"[Initializing Your Build Environment](../getting_started/reference/getting-started/image-workflow-initialize-build-environment.html)"
-section.
-
-Once you have included the AGL feature, you can build your image.
diff --git a/meta-agl-devel/meta-agl-jailhouse/README.md b/meta-agl-devel/meta-agl-jailhouse/README.md
new file mode 100644
index 00000000..c4a32bfd
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/README.md
@@ -0,0 +1,43 @@
+# Jailhouse support layer
+
+Yocto layer that enables use of the Jailhouse partitioning hypervisor - <https://github.com/siemens/jailhouse>.
+
+## How to use
+
+The AGL feature `agl-jailhouse` has to be enabled. That needs to be done when including aglsetup.sh, for example:
+
+ source meta-agl/scripts/aglsetup.sh -m raspberrypi4 agl-demo agl-netboot agl-appfw-smack agl-jailhouse
+
+That will enable this layer and include the `jailhouse` package in the image.
+
+Then, in the target system, the cell configurations (*.cell) are placed in `/usr/share/jailhouse/cells/` and the demo inmates (bare-metal applications to run in a non-root cell) are located in `/usr/share/jailhouse/inmates`.
+
+## Raspberry Pi 4 example
+
+Use this commands to enable Jailhouse and run the GIC demo inmate in a non-root cell. After issuing these commands, the GIC demo will be mesauring jitter of a timer and print the output on the serial console of the RPi.
+
+ jailhouse enable /usr/share/jailhouse/cells/rpi4.cell
+ jailhouse cell create /usr/share/jailhouse/cells/rpi4-inmate-demo.cell
+ jailhouse cell load inmate-demo /usr/share/jailhouse/inmates/gic-demo.bin
+ jailhouse cell start inmate-demo
+
+## Dependencies
+
+This layer depends on:
+
+* URI: git://git.yoctoproject.org/meta-arm
+ * branch: dunfell
+ * revision: 0bd9c740267c0926e89bcfdb489790b7bf1fbd4b
+ * note: actually only required on the Raspberry Pi 4 target
+
+## Supported targets
+
+* Raspberry Pi 4
+ * All (1G-8G) memory variants. But note that there is 256M reserved for Jailhouse and 256MiB for GPU in AGL, so the smaller variants are not recommended.
+
+* QEMU x86-64
+ * Work in progress. Requires KVM. Nested virtualization must be enabled on the host. Currently, the right configuration of QEMU and Jailhouse to work out-of-box is being worked on.
+
+
+
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/conf/layer.conf b/meta-agl-devel/meta-agl-jailhouse/conf/layer.conf
new file mode 100644
index 00000000..2031e788
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/conf/layer.conf
@@ -0,0 +1,23 @@
+# We have a conf and classes directory, append to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have a recipes directory, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes*/*/*.bb ${LAYERDIR}/recipes*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "agl-jailhouse"
+BBFILE_PATTERN_agl-jailhouse := "^${LAYERDIR}/"
+BBFILE_PRIORITY_agl-jailhouse = "61"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_agl-jailhouse = "1"
+LAYERSERIES_COMPAT_agl-jailhouse = "dunfell"
+
+# This is only needed for Raspberry Pi
+# TODO: can this be expressed dynamically?
+LAYERDEPENDS_agl-jailhouse = "meta-arm"
+
+BBFILES_DYNAMIC += " \
+ raspberrypi:${LAYERDIR}/dynamic-layers/raspberrypi/*/*/*.bbappend \
+"
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bbappend b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bbappend
new file mode 100644
index 00000000..687980cf
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bbappend
@@ -0,0 +1,31 @@
+
+do_deploy_append_raspberrypi4() {
+ # if ARMSTUB is set, it should be set in config.txt by earlier recipes, so replace it
+ if [ -n "${ARMSTUB}" ]; then
+ sed -i 's/^armstub=.*/armstub=bl31.bin/' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+
+ if ! grep '^enable_gic' config.txt; then
+ sed -i 's/^enable_gic=.*/enable_gic=1/' ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+ else
+ echo "enable_gic=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+ fi
+
+ # otherwise, set it
+ else
+ echo "# ARM stub configuration" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+ echo "armstub=bl31.bin" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+ echo "enable_gic=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+ fi
+
+ sed -i -e "s#dtoverlay=mcp2515.*##g" ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+ echo "# Enable CAN (Waveshare RS485 CAN HAT)" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+ echo "dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25,spimaxfrequency=1000000" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+
+ # memory reserved for Jailhouse
+ echo "dtoverlay=jailhouse-memory" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+ echo "dtoverlay=jailhouse-memory,start=0xe0000000,size=0x200000" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
+
+
+}
+
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend
new file mode 100644
index 00000000..158eb6e8
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend
@@ -0,0 +1,21 @@
+COMPATIBLE_MACHINE = "raspberrypi4"
+TFA_BUILD_TARGET = "bl31"
+TFA_PLATFORM = "rpi4"
+
+# Skip installing the binary into /lib/firmware. We only need it on the boot
+# partition that is generated from the files in DEPLOYDIR
+do_install[noexec] = "1"
+
+FILES_${PN} = ""
+
+do_deploy() {
+ if ${@"true" if d.getVar('TFA_DEBUG') == '1' else "false"}; then
+ BUILD_PLAT=${B}/${BUILD_DIR}/debug/
+ else
+ BUILD_PLAT=${B}/${BUILD_DIR}/release/
+ fi
+
+ install -d ${DEPLOYDIR}/bcm2835-bootfiles
+ cp ${BUILD_PLAT}/bl31.bin ${DEPLOYDIR}/bcm2835-bootfiles/bl31.bin
+}
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-extended/jailhouse/jailhouse_%.bbappend b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-extended/jailhouse/jailhouse_%.bbappend
new file mode 100644
index 00000000..1d8ea6b7
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-extended/jailhouse/jailhouse_%.bbappend
@@ -0,0 +1,2 @@
+DEPENDS_append_raspberrypi4 = " trusted-firmware-a"
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi/0001-dt-dtoverlays-Add-jailhouse-memory-DT-overlay.patch b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi/0001-dt-dtoverlays-Add-jailhouse-memory-DT-overlay.patch
new file mode 100644
index 00000000..1b6373cc
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi/0001-dt-dtoverlays-Add-jailhouse-memory-DT-overlay.patch
@@ -0,0 +1,87 @@
+From c6319fb59e0cd5b6d3d4e3401abd9c2057059a74 Mon Sep 17 00:00:00 2001
+From: Jakub Luzny <jakub@luzny.cz>
+Date: Tue, 11 Aug 2020 10:40:18 +0200
+Subject: [PATCH] dt/dtoverlays: Add jailhouse-memory DT overlay
+
+It is meant to reserve memory that can be used by the Jailhouse partitioning
+hypervisor. More regions can be reserved.
+
+Upstream-Status: Inappropriate [Jailhouse specific]
+
+Signed-off-by: Jakub Luzny <jakub@luzny.cz>
+---
+ arch/arm/boot/dts/overlays/Makefile | 1 +
+ arch/arm/boot/dts/overlays/README | 7 +++++
+ .../boot/dts/overlays/jailhouse-memory-overlay.dts | 30 ++++++++++++++++++++++
+ 3 files changed, 38 insertions(+)
+ create mode 100644 arch/arm/boot/dts/overlays/jailhouse-memory-overlay.dts
+
+diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
+index fa6db6eed3e2..38c61c67606d 100644
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -92,6 +92,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
+ iqaudio-dacplus.dtbo \
+ iqaudio-digi-wm8804-audio.dtbo \
+ irs1125.dtbo \
++ jailhouse-memory.dtbo \
+ jedec-spi-nor.dtbo \
+ justboom-both.dtbo \
+ justboom-dac.dtbo \
+diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
+index 69892d01faae..4a62f204b4f9 100644
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -1528,6 +1528,13 @@ Load: dtoverlay=irs1125
+ Params: <None>
+
+
++Name: jailhouse-memory
++Info: Reserves memory for use by the Jailhouse hypervisor
++Load: dtoverlay=jailhouse-memory,<param>=<val>
++Params: start Start of the reserved memory area (default 0x20000000)
++ size Size of the reserved memory area (default 0x10000000)
++
++
+ Name: jedec-spi-nor
+ Info: Adds support for JEDEC-compliant SPI NOR flash devices. (Note: The
+ "jedec,spi-nor" kernel driver was formerly known as "m25p80".)
+diff --git a/arch/arm/boot/dts/overlays/jailhouse-memory-overlay.dts b/arch/arm/boot/dts/overlays/jailhouse-memory-overlay.dts
+new file mode 100644
+index 000000000000..26c3ce6b9e3d
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/jailhouse-memory-overlay.dts
+@@ -0,0 +1,30 @@
++// Reserves memory for use by the Jailhouse hypervisor
++/dts-v1/;
++/plugin/;
++
++/ {
++ compatible = "brcm,bcm2835";
++
++ fragment@0 {
++ target-path = "/";
++ __overlay__ {
++
++ reserved-memory {
++ #address-cells = <2>;
++ #size-cells = <1>;
++
++ ranges;
++
++ jailhouse_memory: jailhouse@20000000 {
++ reg = <0x0 0x20000000 0x10000000>;
++ no-map;
++ };
++ };
++ };
++ };
++
++ __overrides__ {
++ start = <&jailhouse_memory>,"reg#0";
++ size = <&jailhouse_memory>,"reg:8";
++ };
++};
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.4%.bbappend b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.4%.bbappend
new file mode 100644
index 00000000..1456fdc8
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.4%.bbappend
@@ -0,0 +1,9 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI += "file://0001-dt-dtoverlays-Add-jailhouse-memory-DT-overlay.patch"
+
+
+LINUX_VERSION = "5.4.51"
+SRCREV = "2c8ec3bb4403a7c76c22ec6d3d5fc4b2a366024e"
+
+require recipes-kernel/linux/linux-jailhouse-5.4.inc
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-apic-demo.c b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-apic-demo.c
new file mode 100644
index 00000000..f49cd3a4
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-apic-demo.c
@@ -0,0 +1,78 @@
+/*
+ * Jailhouse, a Linux-based partitioning hypervisor
+ *
+ * Minimal configuration for demo inmates, 1 CPU, 1 MB RAM, 1 serial port
+ *
+ * Copyright (c) Siemens AG, 2013
+ *
+ * Authors:
+ * Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ */
+
+#include <jailhouse/types.h>
+#include <jailhouse/cell-config.h>
+
+struct {
+ struct jailhouse_cell_desc cell;
+ __u64 cpus[1];
+ struct jailhouse_memory mem_regions[2];
+ struct jailhouse_cache cache_regions[1];
+ struct jailhouse_pio pio_regions[1];//[2]->[1] stop @0x3f8
+} __attribute__((packed)) config = {
+ .cell = {
+ .signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
+ .name = "agl-apic-demo",
+ .flags = JAILHOUSE_CELL_VIRTUAL_CONSOLE_PERMITTED,
+
+ .cpu_set_size = sizeof(config.cpus),
+ .num_memory_regions = ARRAY_SIZE(config.mem_regions),
+ .num_cache_regions = ARRAY_SIZE(config.cache_regions),
+ .num_irqchips = 0,
+ .num_pio_regions = ARRAY_SIZE(config.pio_regions),
+ .num_pci_devices = 0,
+
+ .console = {
+ .type = JAILHOUSE_CON_TYPE_8250,
+ .flags = JAILHOUSE_CON_ACCESS_PIO,
+ .address = 0x2f8, /* ######## ttyS0 is host -> ttyS1 */
+ },
+ },
+
+ .cpus = {
+ 0x8,
+ },
+
+ .mem_regions = {
+ /* RAM */ { /* JH_memory: 0x22600000-0x271fffff */
+ .phys_start = 0x26e00000 , /* agl-linux-x86: 0x22600000-0x26e00000 */
+ .virt_start = 0, /* agl-ivshmem: 0x26e00000- (end of ivshmem cell) */
+ .size = 0x00100000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE,
+ },
+ /* communication region */ {
+ .virt_start = 0x00100000,
+ .size = 0x00001000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_COMM_REGION,
+ },
+ },
+
+ .cache_regions = {
+ {
+ .start = 0,
+ .size = 2,
+ .type = JAILHOUSE_CACHE_L3,
+ },
+ },
+
+ .pio_regions = {
+ PIO_RANGE(0x2f8, 8), /* serial 2 */
+// PIO_RANGE(0x3f8, 8), /* serial 1 */
+ PIO_RANGE(0xe010, 8), /* OXPCIe952 serial */
+ },
+};
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-ivshmem-demo.c b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-ivshmem-demo.c
new file mode 100644
index 00000000..79feb6c5
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-ivshmem-demo.c
@@ -0,0 +1,119 @@
+/*
+ * Jailhouse, a Linux-based partitioning hypervisor
+ *
+ * Minimal configuration for ivshmem inmate demo:
+ * 1 CPU, 1MB RAM, serial ports, 4K shmem
+ *
+ * Copyright (c) Siemens AG, 2013, 2014
+ *
+ * Authors:
+ * Henning Schild <henning.schild@siemens.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ */
+
+#include <jailhouse/types.h>
+#include <jailhouse/cell-config.h>
+
+struct {
+ struct jailhouse_cell_desc cell;
+ __u64 cpus[1];
+ struct jailhouse_memory mem_regions[7];
+ struct jailhouse_pio pio_regions[1];
+ struct jailhouse_pci_device pci_devices[1];
+ struct jailhouse_pci_capability pci_caps[0];
+} __attribute__((packed)) config = {
+ .cell = {
+ .signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
+ .name = "ivshmem-demo",
+ .flags = JAILHOUSE_CELL_PASSIVE_COMMREG |
+ JAILHOUSE_CELL_VIRTUAL_CONSOLE_PERMITTED,
+
+ .cpu_set_size = sizeof(config.cpus),
+ .num_memory_regions = ARRAY_SIZE(config.mem_regions),
+ .num_irqchips = 0,
+ .num_pio_regions = ARRAY_SIZE(config.pio_regions),
+ .num_pci_devices = ARRAY_SIZE(config.pci_devices),
+ .num_pci_caps = ARRAY_SIZE(config.pci_caps),
+
+ .console = {
+ .type = JAILHOUSE_CON_TYPE_8250,
+ .flags = JAILHOUSE_CON_ACCESS_PIO,
+ .address = 0x2f8,/* ######## ttyS0 is host -> ttyS1 */
+ },
+ },
+
+ .cpus = {
+ 0b0010,
+ },
+
+ .mem_regions = {
+ /* IVSHMEM shared memory regions (demo) */
+ {
+ .phys_start = 0x271f0000,
+ .virt_start = 0x271f0000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x271f1000,
+ .virt_start = 0x271f1000,
+ .size = 0x9000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x271fa000,
+ .virt_start = 0x271fa000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x271fc000,
+ .virt_start = 0x271fc000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x271fe000,
+ .virt_start = 0x271fe000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ /* RAM */ {
+ .phys_start = 0x27200000,/* to 0x27300000 */
+ .virt_start = 0,
+ .size = 0x00100000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE,
+ },
+ /* communication region */ {
+ .virt_start = 0x00100000,
+ .size = 0x00001000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_COMM_REGION,
+ },
+ },
+
+ .pio_regions = {
+ PIO_RANGE(0x2f8, 8), /* serial 2 */
+// PIO_RANGE(0x3f8, 8), /* serial 1 */
+ },
+
+ .pci_devices = {
+ {
+ .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+ .domain = 0x0000,
+ .bdf = 0x0e << 3,
+ .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_MSIX,
+ .num_msix_vectors = 16,
+ .shmem_regions_start = 0,
+ .shmem_dev_id = 1,
+ .shmem_peers = 3,
+ .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED,
+ },
+ },
+};
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-linux-x86-demo.c b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-linux-x86-demo.c
new file mode 100644
index 00000000..06085df5
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-linux-x86-demo.c
@@ -0,0 +1,246 @@
+/*
+ * Jailhouse, a Linux-based partitioning hypervisor
+ *
+ * Configuration for Linux inmate, 1 CPU, 74 MB RAM, ~1MB shmem, serial ports
+ *
+ * Copyright (c) Siemens AG, 2013-2015
+ *
+ * Authors:
+ * Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ */
+
+#include <jailhouse/types.h>
+#include <jailhouse/cell-config.h>
+
+struct {
+ struct jailhouse_cell_desc cell;
+ __u64 cpus[1];
+ struct jailhouse_memory mem_regions[20];
+ struct jailhouse_cache cache_regions[1];
+ struct jailhouse_irqchip irqchips[1];
+ struct jailhouse_pio pio_regions[1];
+ struct jailhouse_pci_device pci_devices[4];
+ struct jailhouse_pci_capability pci_caps[6];
+} __attribute__((packed)) config = {
+ .cell = {
+ .signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
+ .name = "linux-x86-demo",
+ .flags = JAILHOUSE_CELL_PASSIVE_COMMREG |
+ JAILHOUSE_CELL_VIRTUAL_CONSOLE_PERMITTED,
+
+ .cpu_set_size = sizeof(config.cpus),
+ .num_memory_regions = ARRAY_SIZE(config.mem_regions),
+ .num_cache_regions = ARRAY_SIZE(config.cache_regions),
+ .num_irqchips = ARRAY_SIZE(config.irqchips),
+ .num_pio_regions = ARRAY_SIZE(config.pio_regions),
+ .num_pci_devices = ARRAY_SIZE(config.pci_devices),
+ .num_pci_caps = ARRAY_SIZE(config.pci_caps),
+ },
+
+ .cpus = {
+ 0b1100,
+ },
+
+ .mem_regions = {
+ /* IVSHMEM shared memory region (virtio-blk front) */
+ {
+ .phys_start = 0x27000000, /* to 0x27001000 */
+ .virt_start = 0x27000000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x27001000,/* to 0x270e0000 */
+ .virt_start = 0x27001000,
+ .size = 0xdf000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ { 0 },
+ { 0 },
+ /* IVSHMEM shared memory region (virtio-con front) */
+ {
+ .phys_start = 0x270e0000,/* to 0x270e1000 */
+ .virt_start = 0x270e0000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x270e1000,/*to 0x270f0000 */
+ .virt_start = 0x270e1000,
+ .size = 0xf000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ { 0 },
+ { 0 },
+ /* IVSHMEM shared memory regions (demo) */
+ {
+ .phys_start = 0x270f0000,/*to 0x270f1000 */
+ .virt_start = 0x270f0000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x270f1000,/*to 0x270fa000 */
+ .virt_start = 0x270f1000,
+ .size = 0x9000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x270fa000,/* to 0x270fc000 */
+ .virt_start = 0x270fa000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x270fc000,/* to 0x270fe000*/
+ .virt_start = 0x270fc000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+ .phys_start = 0x270fe000,/* to 0x27100000 */
+ .virt_start = 0x270fe000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ /* IVSHMEM shared memory regions (networking) */
+ JAILHOUSE_SHMEM_NET_REGIONS(0x27100000, 1),
+ /* low RAM */ {
+ .phys_start = 0x22600000,/* to 0x22700000*/
+ .virt_start = 0,
+ .size = 0x00100000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA |
+ JAILHOUSE_MEM_LOADABLE,
+ },
+ /* communication region */ {
+ /*.phys_start = ? */
+ .virt_start = 0x00100000,
+ .size = 0x00001000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_COMM_REGION,
+ },
+ /* high RAM */ {
+ .phys_start = 0x22700000,/*to 0x26e00000 */
+ .virt_start = 0x00200000,
+ .size = 0x4700000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA |
+ JAILHOUSE_MEM_LOADABLE,
+ },
+ },
+
+ .cache_regions = {
+ {
+ .start = 0,
+ .size = 2,
+ .type = JAILHOUSE_CACHE_L3,
+ },
+ },
+
+ .irqchips = {
+ /* IOAPIC */ {
+ .address = 0xfec00000,
+ .id = 0xff00,
+ .pin_bitmap = {
+ (1 << 3) | (1 << 4),
+ },
+ },
+ },
+
+ .pio_regions = {
+ PIO_RANGE(0x2f8, 8), /* serial 2 */
+// PIO_RANGE(0x3f8, 8), /* serial 1 */
+ PIO_RANGE(0xe010, 8), /* OXPCIe952 serial1 */
+ },
+
+ .pci_devices = {
+ {
+ .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+ .domain = 0x0,
+ .bdf = 0x0c << 3,
+ .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_MSIX,
+ .num_msix_vectors = 2,
+ .shmem_regions_start = 0,
+ .shmem_dev_id = 1,
+ .shmem_peers = 2,
+ .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VIRTIO_FRONT +
+ VIRTIO_DEV_BLOCK,
+ },
+ {
+ .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+ .domain = 0x0,
+ .bdf = 0x0d << 3,
+ .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_MSIX,
+ .num_msix_vectors = 3,
+ .shmem_regions_start = 4,
+ .shmem_dev_id = 1,
+ .shmem_peers = 2,
+ .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VIRTIO_FRONT +
+ VIRTIO_DEV_CONSOLE,
+ },
+ {
+ .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+ .domain = 0x0,
+ .bdf = 0x0e << 3,
+ .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_MSIX,
+ .num_msix_vectors = 16,
+ .shmem_regions_start = 8,
+ .shmem_dev_id = 2,
+ .shmem_peers = 3,
+ .shmem_protocol = JAILHOUSE_SHMEM_PROTO_UNDEFINED,
+ },
+ {
+ .type = JAILHOUSE_PCI_TYPE_IVSHMEM,
+ .domain = 0x0,
+ .bdf = 0x0f << 3,
+ .bar_mask = JAILHOUSE_IVSHMEM_BAR_MASK_MSIX,
+ .num_msix_vectors = 2,
+ .shmem_regions_start = 13,
+ .shmem_dev_id = 1,
+ .shmem_peers = 2,
+ .shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH,
+ },
+ },
+
+ .pci_caps = {
+ {
+ .id = PCI_CAP_ID_MSI,
+ .start = 0xd0,
+ .len = 14,
+ .flags = JAILHOUSE_PCICAPS_WRITE,
+ },
+ {
+ .id = PCI_CAP_ID_EXP,
+ .start = 0xe0,
+ .len = 20,
+ .flags = JAILHOUSE_PCICAPS_WRITE,
+ },
+ {
+ .id = PCI_CAP_ID_MSIX,
+ .start = 0xa0,
+ .len = 12,
+ .flags = JAILHOUSE_PCICAPS_WRITE,
+ },
+ {
+ .id = PCI_EXT_CAP_ID_ERR | JAILHOUSE_PCI_EXT_CAP,
+ .start = 0x100,
+ .len = 4,
+ .flags = 0,
+ },
+ {
+ .id = PCI_EXT_CAP_ID_DSN | JAILHOUSE_PCI_EXT_CAP,
+ .start = 0x140,
+ .len = 4,
+ .flags = 0,
+ },
+ }
+};
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-pci-demo.c b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-pci-demo.c
new file mode 100644
index 00000000..59d42323
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-pci-demo.c
@@ -0,0 +1,103 @@
+/*
+ * Jailhouse, a Linux-based partitioning hypervisor
+ *
+ * Minimal configuration for PCI demo inmate:
+ * 1 CPU, 1 MB RAM, serial ports, 1 Intel HDA PCI device
+ *
+ * Copyright (c) Siemens AG, 2014
+ *
+ * Authors:
+ * Jan Kiszka <jan.kiszka@siemens.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ */
+
+#include <jailhouse/types.h>
+#include <jailhouse/cell-config.h>
+
+struct {
+ struct jailhouse_cell_desc cell;
+ __u64 cpus[1];
+ struct jailhouse_memory mem_regions[3];
+ struct jailhouse_pio pio_regions[1]; /* ttyS0 is host -> ttyS1 */
+ struct jailhouse_pci_device pci_devices[1];
+ struct jailhouse_pci_capability pci_caps[1];
+} __attribute__((packed)) config = {
+ .cell = {
+ .signature = JAILHOUSE_CELL_DESC_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
+ .name = "agl-pci-demo",
+ .flags = JAILHOUSE_CELL_PASSIVE_COMMREG |
+ JAILHOUSE_CELL_VIRTUAL_CONSOLE_PERMITTED,
+
+ .cpu_set_size = sizeof(config.cpus),
+ .num_memory_regions = ARRAY_SIZE(config.mem_regions),
+ .num_irqchips = 0,
+ .num_pio_regions = ARRAY_SIZE(config.pio_regions),
+ .num_pci_devices = ARRAY_SIZE(config.pci_devices),
+ .num_pci_caps = ARRAY_SIZE(config.pci_caps),
+
+
+ .console = {
+ .type = JAILHOUSE_CON_TYPE_8250,
+ .flags = JAILHOUSE_CON_ACCESS_PIO,
+ .address = 0x2f8,
+ },
+ },
+
+ .cpus = {
+ 0x4,
+ },
+
+ .mem_regions = {
+ /* RAM */ {
+ .phys_start = 0x26f00000,/*to 0x27000000| apic-demo @0x26e00000-@0x26f00000 */
+ .virt_start = 0,
+ .size = 0x00100000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE,
+ },
+ /* communication region */ {
+ .virt_start = 0x00100000,
+ .size = 0x00001000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_COMM_REGION,
+ },
+ /* HDA BAR0 */ {
+ .phys_start = 0xfebd4000,
+ .virt_start = 0xfebd4000,
+ .size = 0x00004000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ },
+
+
+ .pio_regions = {
+ PIO_RANGE(0x2f8, 8), /* serial 2 */
+ //PIO_RANGE(0x3f8, 8), /* serial 1 */
+ PIO_RANGE(0xe010, 8), /* OXPCIe952 serial2 */
+ },
+
+
+ .pci_devices = {
+ { /* Intel HDA @00:1b.0 */
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .domain = 0x0000,
+ .bdf = 0x00d8,
+ .caps_start = 0,
+ .num_caps = 1,
+ .num_msi_vectors = 1,
+ .msi_64bits = 1,
+ },
+ },
+
+ .pci_caps = {
+ { /* Intel HDA @00:1b.0 */
+ .id = PCI_CAP_ID_MSI,
+ .start = 0x60,
+ .len = 14,
+ .flags = JAILHOUSE_PCICAPS_WRITE,
+ },
+ },
+};
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/qemu-agl.c b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/qemu-agl.c
new file mode 100644
index 00000000..cf193c08
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/files/qemu-agl.c
@@ -0,0 +1,637 @@
+/*
+ * Jailhouse, a Linux-based partitioning hypervisor
+ *
+ * Copyright (c) Siemens AG, 2014-2017
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ *
+ * Alternatively, you can use or redistribute this file under the following
+ * BSD license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form 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.
+ *
+ * Configuration for QEMU Standard PC (Q35 + ICH9, 2009)
+ * created with '/usr/libexec/jailhouse/jailhouse config create -c ttyS1 qemu-agl.c'
+ *
+ * NOTE: This config expects the following to be appended to your kernel cmdline
+ * "memmap=0x5200000$0x22000000"
+ */
+
+#include <jailhouse/types.h>
+#include <jailhouse/cell-config.h>
+
+struct {
+ struct jailhouse_system header;
+ __u64 cpus[1];
+ struct jailhouse_memory mem_regions[17];
+ struct jailhouse_irqchip irqchips[1];
+ struct jailhouse_pio pio_regions[14];
+ struct jailhouse_pci_device pci_devices[13];
+ struct jailhouse_pci_capability pci_caps[14];
+} __attribute__((packed)) config = {
+ .header = {
+ .signature = JAILHOUSE_SYSTEM_SIGNATURE,
+ .revision = JAILHOUSE_CONFIG_REVISION,
+ .flags = JAILHOUSE_SYS_VIRTUAL_DEBUG_CONSOLE,
+ .hypervisor_memory = {
+ .phys_start = 0x22000000,
+ .size = 0x600000,
+ },
+ .debug_console = {
+ .address = 0x2f8,
+ .type = JAILHOUSE_CON_TYPE_8250,
+ .flags = JAILHOUSE_CON_ACCESS_PIO |
+ JAILHOUSE_CON_REGDIST_1,
+ },
+ .platform_info = {
+ .pci_mmconfig_base = 0xb0000000,
+ .pci_mmconfig_end_bus = 0xff,
+ .iommu_units = {
+ {
+ .type = JAILHOUSE_IOMMU_INTEL,
+ .base = 0xfed90000,
+ .size = 0x1000,
+ },
+ },
+ .x86 = {
+ .pm_timer_address = 0x608,
+ .vtd_interrupt_limit = 256,
+ },
+ },
+ .root_cell = {
+ .name = "RootCell",
+ .cpu_set_size = sizeof(config.cpus),
+ .num_memory_regions = ARRAY_SIZE(config.mem_regions),
+ .num_irqchips = ARRAY_SIZE(config.irqchips),
+ .num_pio_regions = ARRAY_SIZE(config.pio_regions),
+ .num_pci_devices = ARRAY_SIZE(config.pci_devices),
+ .num_pci_caps = ARRAY_SIZE(config.pci_caps),
+ },
+ },
+
+ .cpus = {
+ 0x000000000000000f,
+ },
+
+ .mem_regions = {
+ /* MemRegion: 00000000-0009fbff : System RAM */
+ {
+ .phys_start = 0x0,
+ .virt_start = 0x0,
+ .size = 0xa0000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
+ },
+ /* MemRegion: 00100000-201fffff : System RAM */
+ {
+ .phys_start = 0x100000,
+ .virt_start = 0x100000,
+ .size = 0x20100000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
+ },
+ /* MemRegion: 20200000-21ffffff : Kernel */
+ {
+ .phys_start = 0x20200000,
+ .virt_start = 0x20200000,
+ .size = 0x1e00000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
+ },
+ /* MemRegion: 27200000-31ffffff : System RAM */
+ {
+ .phys_start = 0x27200000,
+ .virt_start = 0x27200000,
+ .size = 0xae00000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
+ },
+ /* MemRegion: 32000000-33ffffff : RAM buffer */
+ {
+ .phys_start = 0x32000000,
+ .virt_start = 0x32000000,
+ .size = 0x2000000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
+ },
+ /* MemRegion: fe000000-fe7fffff : 0000:00:01.0 */
+ {
+ .phys_start = 0xfe000000,
+ .virt_start = 0xfe000000,
+ .size = 0x800000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: fe800000-fe803fff : virtio-pci-modern */
+ {
+ .phys_start = 0xfe800000,
+ .virt_start = 0xfe800000,
+ .size = 0x4000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: fe804000-fe807fff : virtio-pci-modern */
+ {
+ .phys_start = 0xfe804000,
+ .virt_start = 0xfe804000,
+ .size = 0x4000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: fe808000-fe80bfff : virtio-pci-modern */
+ {
+ .phys_start = 0xfe808000,
+ .virt_start = 0xfe808000,
+ .size = 0x4000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: fe80c000-fe80ffff : virtio-pci-modern */
+ {
+ .phys_start = 0xfe80c000,
+ .virt_start = 0xfe80c000,
+ .size = 0x4000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: feb80000-febbffff : 0000:00:02.0 */
+ {
+ .phys_start = 0xfeb80000,
+ .virt_start = 0xfeb80000,
+ .size = 0x40000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: febd0000-febd3fff : ICH HD audio */
+ {
+ .phys_start = 0xfebd0000,
+ .virt_start = 0xfebd0000,
+ .size = 0x4000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: febd7000-febd7fff : ehci_hcd */
+ {
+ .phys_start = 0xfebd7000,
+ .virt_start = 0xfebd7000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: febd8000-febd8fff : ahci */
+ {
+ .phys_start = 0xfebd8000,
+ .virt_start = 0xfebd8000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: fed00000-fed003ff : PNP0103:00 */
+ {
+ .phys_start = 0xfed00000,
+ .virt_start = 0xfed00000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: 000c0000-000dffff : ROMs */
+ {
+ .phys_start = 0xc0000,
+ .virt_start = 0xc0000,
+ .size = 0x20000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: 22600000-271fffff : JAILHOUSE Inmate Memory */
+ {
+ .phys_start = 0x22600000,
+ .virt_start = 0x22600000,
+ .size = 0x4c00000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ },
+
+ .irqchips = {
+ /* IOAPIC 0, GSI base 0 */
+ {
+ .address = 0xfec00000,
+ .id = 0xff00,
+ .pin_bitmap = {
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
+ },
+ },
+ },
+
+ .pio_regions = {
+ /* Port I/O: 0000-001f : dma1 */
+ /* PIO_RANGE(0x0, 0x20), */
+ /* Port I/O: 0020-0021 : pic1 */
+ /* PIO_RANGE(0x20, 0x2), */
+ /* Port I/O: 0040-0043 : timer0 */
+ PIO_RANGE(0x40, 0x4),
+ /* Port I/O: 0050-0053 : timer1 */
+ /* PIO_RANGE(0x50, 0x4), */
+ /* Port I/O: 0060-0060 : keyboard */
+ PIO_RANGE(0x60, 0x1),
+ /* Port I/O: 0064-0064 : keyboard */
+ PIO_RANGE(0x64, 0x1),
+ /* Port I/O: 0070-0077 : rtc0 */
+ PIO_RANGE(0x70, 0x8),
+ /* Port I/O: 0080-008f : dma page reg */
+ /* PIO_RANGE(0x80, 0x10), */
+ /* Port I/O: 00a0-00a1 : pic2 */
+ /* PIO_RANGE(0xa0, 0x2), */
+ /* Port I/O: 00c0-00df : dma2 */
+ /* PIO_RANGE(0xc0, 0x20), */
+ /* Port I/O: 00f0-00ff : fpu */
+ /* PIO_RANGE(0xf0, 0x10), */
+ /* Port I/O: 02f8-02ff : serial */
+ PIO_RANGE(0x2f8, 0x8),
+ /* Port I/O: 0378-037a : parport0 */
+ /* PIO_RANGE(0x378, 0x3), */
+ /* Port I/O: 03c0-03df : vga+ */
+ PIO_RANGE(0x3c0, 0x20),
+ /* Port I/O: 03f8-03ff : serial */
+ PIO_RANGE(0x3f8, 0x8),
+ /* Port I/O: 0510-051b : QEMU0002:00 */
+ /* PIO_RANGE(0x510, 0xc), */
+ /* Port I/O: 0600-0603 : ACPI PM1a_EVT_BLK */
+ /* PIO_RANGE(0x600, 0x4), */
+ /* Port I/O: 0604-0605 : ACPI PM1a_CNT_BLK */
+ /* PIO_RANGE(0x604, 0x2), */
+ /* Port I/O: 0608-060b : ACPI PM_TMR */
+ /* PIO_RANGE(0x608, 0x4), */
+ /* Port I/O: 0620-062f : ACPI GPE0_BLK */
+ /* PIO_RANGE(0x620, 0x10), */
+ /* Port I/O: 0700-073f : i801_smbus */
+ /* PIO_RANGE(0x700, 0x40), */
+ /* Port I/O: c000-c07f : 0000:00:04.0 */
+ PIO_RANGE(0xc000, 0x80),
+ /* Port I/O: c0c0-c0df : 0000:00:02.0 */
+ PIO_RANGE(0xc0c0, 0x20),
+ /* Port I/O: c0e0-c0ff : 0000:00:03.0 */
+ PIO_RANGE(0xc0e0, 0x20),
+ /* Port I/O: c100-c11f : 0000:00:1d.0 */
+ PIO_RANGE(0xc100, 0x20),
+ /* Port I/O: c120-c13f : 0000:00:1d.1 */
+ PIO_RANGE(0xc120, 0x20),
+ /* Port I/O: c140-c15f : 0000:00:1d.2 */
+ PIO_RANGE(0xc140, 0x20),
+ /* Port I/O: c160-c17f : 0000:00:1f.2 */
+ PIO_RANGE(0xc160, 0x20),
+ },
+
+ .pci_devices = {
+ /* PCIDevice: 00:00.0 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0x0,
+ .bar_mask = {
+ 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000,
+ },
+ .caps_start = 0,
+ .num_caps = 0,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ /* PCIDevice: 00:01.0 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0x8,
+ .bar_mask = {
+ 0xff800000, 0x00000000, 0xffffc000,
+ 0xffffffff, 0xfffff000, 0x00000000,
+ },
+ .caps_start = 0,
+ .num_caps = 6,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 3,
+ .msix_region_size = 0x1000,
+ .msix_address = 0xfebd4000,
+ },
+ /* PCIDevice: 00:02.0 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0x10,
+ .bar_mask = {
+ 0xffffffe0, 0xfffff000, 0x00000000,
+ 0x00000000, 0xffffc000, 0xffffffff,
+ },
+ .caps_start = 0,
+ .num_caps = 6,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 3,
+ .msix_region_size = 0x1000,
+ .msix_address = 0xfebd5000,
+ },
+ /* PCIDevice: 00:03.0 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0x18,
+ .bar_mask = {
+ 0xffffffe0, 0x00000000, 0x00000000,
+ 0x00000000, 0xffffc000, 0xffffffff,
+ },
+ .caps_start = 6,
+ .num_caps = 5,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ /* PCIDevice: 00:04.0 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0x20,
+ .bar_mask = {
+ 0xffffff80, 0xfffff000, 0x00000000,
+ 0x00000000, 0xffffc000, 0xffffffff,
+ },
+ .caps_start = 0,
+ .num_caps = 6,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 2,
+ .msix_region_size = 0x1000,
+ .msix_address = 0xfebd6000,
+ },
+ /* PCIDevice: 00:1b.0 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0xd8,
+ .bar_mask = {
+ 0xffffc000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000,
+ },
+ .caps_start = 11,
+ .num_caps = 1,
+ .num_msi_vectors = 1,
+ .msi_64bits = 1,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ /* PCIDevice: 00:1d.0 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0xe8,
+ .bar_mask = {
+ 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xffffffe0, 0x00000000,
+ },
+ .caps_start = 0,
+ .num_caps = 0,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ /* PCIDevice: 00:1d.1 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0xe9,
+ .bar_mask = {
+ 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xffffffe0, 0x00000000,
+ },
+ .caps_start = 0,
+ .num_caps = 0,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ /* PCIDevice: 00:1d.2 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0xea,
+ .bar_mask = {
+ 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xffffffe0, 0x00000000,
+ },
+ .caps_start = 0,
+ .num_caps = 0,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ /* PCIDevice: 00:1d.7 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0xef,
+ .bar_mask = {
+ 0xfffff000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000,
+ },
+ .caps_start = 0,
+ .num_caps = 0,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ /* PCIDevice: 00:1f.0 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0xf8,
+ .bar_mask = {
+ 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0x00000000, 0x00000000,
+ },
+ .caps_start = 0,
+ .num_caps = 0,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ /* PCIDevice: 00:1f.2 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0xfa,
+ .bar_mask = {
+ 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xffffffe0, 0xfffff000,
+ },
+ .caps_start = 12,
+ .num_caps = 2,
+ .num_msi_vectors = 1,
+ .msi_64bits = 1,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ /* PCIDevice: 00:1f.3 */
+ {
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .iommu = 0,
+ .domain = 0x0,
+ .bdf = 0xfb,
+ .bar_mask = {
+ 0x00000000, 0x00000000, 0x00000000,
+ 0x00000000, 0xffffffc0, 0x00000000,
+ },
+ .caps_start = 0,
+ .num_caps = 0,
+ .num_msi_vectors = 0,
+ .msi_64bits = 0,
+ .msi_maskable = 0,
+ .num_msix_vectors = 0,
+ .msix_region_size = 0x0,
+ .msix_address = 0x0,
+ },
+ },
+
+ .pci_caps = {
+ /* PCIDevice: 00:01.0 */
+ /* PCIDevice: 00:02.0 */
+ /* PCIDevice: 00:04.0 */
+ {
+ .id = PCI_CAP_ID_MSIX,
+ .start = 0x98,
+ .len = 0xc,
+ .flags = JAILHOUSE_PCICAPS_WRITE,
+ },
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x84,
+ .len = 0x2,
+ .flags = 0,
+ },
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x70,
+ .len = 0x2,
+ .flags = 0,
+ },
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x60,
+ .len = 0x2,
+ .flags = 0,
+ },
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x50,
+ .len = 0x2,
+ .flags = 0,
+ },
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x40,
+ .len = 0x2,
+ .flags = 0,
+ },
+ /* PCIDevice: 00:03.0 */
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x84,
+ .len = 0x2,
+ .flags = 0,
+ },
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x70,
+ .len = 0x2,
+ .flags = 0,
+ },
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x60,
+ .len = 0x2,
+ .flags = 0,
+ },
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x50,
+ .len = 0x2,
+ .flags = 0,
+ },
+ {
+ .id = PCI_CAP_ID_VNDR,
+ .start = 0x40,
+ .len = 0x2,
+ .flags = 0,
+ },
+ /* PCIDevice: 00:1b.0 */
+ {
+ .id = PCI_CAP_ID_MSI,
+ .start = 0x60,
+ .len = 0xe,
+ .flags = JAILHOUSE_PCICAPS_WRITE,
+ },
+ /* PCIDevice: 00:1f.2 */
+ {
+ .id = PCI_CAP_ID_MSI,
+ .start = 0x80,
+ .len = 0xe,
+ .flags = JAILHOUSE_PCICAPS_WRITE,
+ },
+ {
+ .id = PCI_CAP_ID_SATA,
+ .start = 0xa8,
+ .len = 0x2,
+ .flags = 0,
+ },
+ },
+};
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse-arch.inc b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse-arch.inc
new file mode 100644
index 00000000..498b25ed
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse-arch.inc
@@ -0,0 +1,22 @@
+# Set jailhouse architecture JH_ARCH variable
+#
+# return value must match one of architectures supported by jailhouse
+#
+valid_jh_archs = "x86 arm"
+
+def map_jh_arch(a, d):
+ import re
+
+ valid_jh_archs = d.getVar('valid_jh_archs', True).split()
+
+ if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
+ elif re.match('armeb$', a): return 'arm'
+ elif re.match('aarch64$', a): return 'arm64'
+ elif re.match('aarch64_be$', a): return 'arm64'
+ elif a in valid_jh_archs: return a
+ else:
+ bb.error("cannot map '%s' to a jailhouse supported architecture" % a)
+
+export JH_ARCH = "${@map_jh_arch(d.getVar('TARGET_ARCH', True), d)}"
+
+COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse/0001-configs-arm64-Add-support-for-RPi4-with-more-than-1G.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse/0001-configs-arm64-Add-support-for-RPi4-with-more-than-1G.patch
new file mode 100644
index 00000000..21d5f2f1
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse/0001-configs-arm64-Add-support-for-RPi4-with-more-than-1G.patch
@@ -0,0 +1,290 @@
+From 4f86ca866119669a75f02ea10fa502f051f8240c Mon Sep 17 00:00:00 2001
+From: Jakub Luzny <jakub@luzny.cz>
+Date: Tue, 11 Aug 2020 11:45:02 +0200
+Subject: [PATCH] configs: arm64: Add support for RPi4 with more than 1G of
+ memory
+
+Add the required memory regions to support 2G, 4G and 8G RAM variants
+of the Raspberry Pi 4. Tested on all the bigger variants, not on 1G, as I don't
+have one on hand and it's not available anymore.
+
+Also moved the memory used by Jailhouse for the hypervisor and cells from
+0x30000000 to 0x20000000 to avoid conflict with GPU memory. That is fine for
+gpu_mem setting of up to 256. The memory is supposed to be reserved using
+reserved-memory node in the device tree. To support variants with >2G RAM,
+another region for PCI MMIO space has to be also reserved.
+
+Upstream-Status: Submitted [jailhouse-dev@googlegroups.com]
+
+Signed-off-by: Jakub Luzny <jakub@luzny.cz>
+---
+ configs/arm64/rpi4-inmate-demo.c | 22 ++++++------
+ configs/arm64/rpi4-linux-demo.c | 28 +++++++--------
+ configs/arm64/rpi4.c | 62 +++++++++++++++++++++++---------
+ 3 files changed, 71 insertions(+), 41 deletions(-)
+
+diff --git a/configs/arm64/rpi4-inmate-demo.c b/configs/arm64/rpi4-inmate-demo.c
+index 62442e7c..09dfc1f0 100644
+--- a/configs/arm64/rpi4-inmate-demo.c
++++ b/configs/arm64/rpi4-inmate-demo.c
+@@ -51,34 +51,34 @@ struct {
+ .mem_regions = {
+ /* IVSHMEM shared memory regions (demo) */
+ {
+- .phys_start = 0x3faf0000,
+- .virt_start = 0x3faf0000,
++ .phys_start = 0x2faf0000,
++ .virt_start = 0x2faf0000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+- .phys_start = 0x3faf1000,
+- .virt_start = 0x3faf1000,
++ .phys_start = 0x2faf1000,
++ .virt_start = 0x2faf1000,
+ .size = 0x9000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+- .phys_start = 0x3fafa000,
+- .virt_start = 0x3fafa000,
++ .phys_start = 0x2fafa000,
++ .virt_start = 0x2fafa000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+- .phys_start = 0x3fafc000,
+- .virt_start = 0x3fafc000,
++ .phys_start = 0x2fafc000,
++ .virt_start = 0x2fafc000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+- .phys_start = 0x3fafe000,
+- .virt_start = 0x3fafe000,
++ .phys_start = 0x2fafe000,
++ .virt_start = 0x2fafe000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+@@ -91,7 +91,7 @@ struct {
+ JAILHOUSE_MEM_IO_32 | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ /* RAM */ {
+- .phys_start = 0x3fa00000,
++ .phys_start = 0x2fa00000,
+ .virt_start = 0,
+ .size = 0x00010000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+diff --git a/configs/arm64/rpi4-linux-demo.c b/configs/arm64/rpi4-linux-demo.c
+index 9e7fad26..cf36fa22 100644
+--- a/configs/arm64/rpi4-linux-demo.c
++++ b/configs/arm64/rpi4-linux-demo.c
+@@ -52,39 +52,39 @@ struct {
+ .mem_regions = {
+ /* IVSHMEM shared memory regions (demo) */
+ {
+- .phys_start = 0x3faf0000,
+- .virt_start = 0x3faf0000,
++ .phys_start = 0x2faf0000,
++ .virt_start = 0x2faf0000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+- .phys_start = 0x3faf1000,
+- .virt_start = 0x3faf1000,
++ .phys_start = 0x2faf1000,
++ .virt_start = 0x2faf1000,
+ .size = 0x9000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+- .phys_start = 0x3fafa000,
+- .virt_start = 0x3fafa000,
++ .phys_start = 0x2fafa000,
++ .virt_start = 0x2fafa000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+- .phys_start = 0x3fafc000,
+- .virt_start = 0x3fafc000,
++ .phys_start = 0x2fafc000,
++ .virt_start = 0x2fafc000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ {
+- .phys_start = 0x3fafe000,
+- .virt_start = 0x3fafe000,
++ .phys_start = 0x2fafe000,
++ .virt_start = 0x2fafe000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_ROOTSHARED,
+ },
+ /* IVSHMEM shared memory region */
+- JAILHOUSE_SHMEM_NET_REGIONS(0x3fb00000, 1),
++ JAILHOUSE_SHMEM_NET_REGIONS(0x2fb00000, 1),
+ /* UART */ {
+ .phys_start = 0xfe215040,
+ .virt_start = 0xfe215040,
+@@ -94,15 +94,15 @@ struct {
+ JAILHOUSE_MEM_IO_32 | JAILHOUSE_MEM_ROOTSHARED,
+ },
+ /* RAM */ {
+- .phys_start = 0x3f900000,
++ .phys_start = 0x2f900000,
+ .virt_start = 0,
+ .size = 0x10000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE,
+ },
+ /* RAM */ {
+- .phys_start = 0x30000000,
+- .virt_start = 0x30000000,
++ .phys_start = 0x20000000,
++ .virt_start = 0x20000000,
+ .size = 0x8000000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA |
+diff --git a/configs/arm64/rpi4.c b/configs/arm64/rpi4.c
+index 92463184..c25bd8d2 100644
+--- a/configs/arm64/rpi4.c
++++ b/configs/arm64/rpi4.c
+@@ -1,7 +1,7 @@
+ /*
+ * Jailhouse, a Linux-based partitioning hypervisor
+ *
+- * Test configuration for Raspberry Pi 4 (32-bit, quad-core Cortex-A72, 1GB RAM)
++ * Test configuration for Raspberry Pi 4 (32-bit, quad-core Cortex-A72, 1GB, 2GB, 4GB or 8GB RAM)
+ *
+ * Copyright (c) Siemens AG, 2020
+ *
+@@ -10,6 +10,9 @@
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
++ *
++ * Reservation via device tree: reg = <0x0 0x20000000 0x10000000>;
++ * reg = <0x0 0xe0000000 0x200000>;
+ */
+
+ #include <jailhouse/types.h>
+@@ -18,7 +21,7 @@
+ struct {
+ struct jailhouse_system header;
+ __u64 cpus[1];
+- struct jailhouse_memory mem_regions[12];
++ struct jailhouse_memory mem_regions[15];
+ struct jailhouse_irqchip irqchips[2];
+ struct jailhouse_pci_device pci_devices[2];
+ } __attribute__((packed)) config = {
+@@ -27,7 +30,7 @@ struct {
+ .revision = JAILHOUSE_CONFIG_REVISION,
+ .flags = JAILHOUSE_SYS_VIRTUAL_DEBUG_CONSOLE,
+ .hypervisor_memory = {
+- .phys_start = 0x3fc00000,
++ .phys_start = 0x2fc00000,
+ .size = 0x00400000,
+ },
+ .debug_console = {
+@@ -70,37 +73,37 @@ struct {
+ .mem_regions = {
+ /* IVSHMEM shared memory regions for 00:00.0 (demo) */
+ {
+- .phys_start = 0x3faf0000,
+- .virt_start = 0x3faf0000,
++ .phys_start = 0x2faf0000,
++ .virt_start = 0x2faf0000,
+ .size = 0x1000,
+ .flags = JAILHOUSE_MEM_READ,
+ },
+ {
+- .phys_start = 0x3faf1000,
+- .virt_start = 0x3faf1000,
++ .phys_start = 0x2faf1000,
++ .virt_start = 0x2faf1000,
+ .size = 0x9000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ {
+- .phys_start = 0x3fafa000,
+- .virt_start = 0x3fafa000,
++ .phys_start = 0x2fafa000,
++ .virt_start = 0x2fafa000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ {
+- .phys_start = 0x3fafc000,
+- .virt_start = 0x3fafc000,
++ .phys_start = 0x2fafc000,
++ .virt_start = 0x2fafc000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ,
+ },
+ {
+- .phys_start = 0x3fafe000,
+- .virt_start = 0x3fafe000,
++ .phys_start = 0x2fafe000,
++ .virt_start = 0x2fafe000,
+ .size = 0x2000,
+ .flags = JAILHOUSE_MEM_READ,
+ },
+ /* IVSHMEM shared memory regions for 00:01.0 (networking) */
+- JAILHOUSE_SHMEM_NET_REGIONS(0x3fb00000, 0),
++ JAILHOUSE_SHMEM_NET_REGIONS(0x2fb00000, 0),
+ /* MMIO 1 (permissive) */ {
+ .phys_start = 0xfd500000,
+ .virt_start = 0xfd500000,
+@@ -115,10 +118,37 @@ struct {
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_IO,
+ },
+- /* RAM */ {
++ /* RAM (0M-~762M) */ {
+ .phys_start = 0x0,
+ .virt_start = 0x0,
+- .size = 0x3fa10000,
++ .size = 0x2fa10000,
++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
++ JAILHOUSE_MEM_EXECUTE,
++ },
++
++ /* ~6M reserved for the hypervisor and the shared memory regions */
++
++ /* RAM (768M-3584M) */ {
++ .phys_start = 0x30000000,
++ .virt_start = 0x30000000,
++ .size = 0xb0000000,
++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
++ JAILHOUSE_MEM_EXECUTE,
++ },
++
++ /* 2M reserved for PCI MMIO space */
++
++ /* RAM (3586M-4032M) */ {
++ .phys_start = 0xe0200000,
++ .virt_start = 0xe0200000,
++ .size = 0x1be00000,
++ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
++ JAILHOUSE_MEM_EXECUTE,
++ },
++ /* RAM (4096M-8192M) */ {
++ .phys_start = 0x100000000,
++ .virt_start = 0x100000000,
++ .size = 0x100000000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
+ JAILHOUSE_MEM_EXECUTE,
+ },
+--
+2.27.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse_git.bb b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse_git.bb
new file mode 100644
index 00000000..462f0a77
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse_git.bb
@@ -0,0 +1,98 @@
+SUMMARY = "Linux-based partitioning hypervisor"
+DESCRIPTION = "Jailhouse is a partitioning Hypervisor based on Linux. It is able to run bare-metal applications or (adapted) \
+operating systems besides Linux. For this purpose, it configures CPU and device virtualization features of the hardware \
+platform in a way that none of these domains, called 'cells' here, can interfere with each other in an unacceptable way."
+HOMEPAGE = "https://github.com/siemens/jailhouse"
+SECTION = "jailhouse"
+LICENSE = "GPL-2.0 & BSD-2-Clause"
+
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \
+"
+
+SRCREV = "4ce7658dddfd5a1682a379d5ac46657e93fe1ff0"
+PV = "0.12+git${SRCPV}"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI = "git://github.com/siemens/jailhouse \
+ file://0001-configs-arm64-Add-support-for-RPi4-with-more-than-1G.patch \
+ "
+
+SRC_URI += "file://qemu-agl.c \
+ file://agl-apic-demo.c \
+ file://agl-pci-demo.c \
+ file://agl-ivshmem-demo.c \
+ file://agl-linux-x86-demo.c \
+ "
+
+DEPENDS = "virtual/kernel dtc-native python3-mako-native make-native"
+
+require jailhouse-arch.inc
+inherit module python3native bash-completion setuptools3
+
+S = "${WORKDIR}/git"
+B = "${S}"
+
+JH_DATADIR ?= "${datadir}/jailhouse"
+JH_EXEC_DIR ?= "${libexecdir}/jailhouse"
+CELL_DIR ?= "${JH_DATADIR}/cells"
+INMATES_DIR ?= "${JH_DATADIR}/inmates"
+DTS_DIR ?= "${JH_DATADIR}/cells/dts"
+
+JH_CELL_FILES ?= "*.cell"
+
+EXTRA_OEMAKE = "ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} CC="${CC}" KDIR=${STAGING_KERNEL_BUILDDIR}"
+
+do_configure() {
+
+ # copy ${WORKDIR}/qemu-agl.c ${S}/configs/x86/ <--- folder where the cells are defined in the source tree to be compiled
+ cp ${WORKDIR}/qemu-agl.c ${S}/configs/${JH_ARCH}
+ cp ${WORKDIR}/agl-apic-demo.c ${S}/configs/x86/
+ cp ${WORKDIR}/agl-pci-demo.c ${S}/configs/x86/
+ cp ${WORKDIR}/agl-linux-x86-demo.c ${S}/configs/x86/
+ cp ${WORKDIR}/agl-ivshmem-demo.c ${S}/configs/x86/
+
+ sed -i '1s|^#!/usr/bin/env python$|#!/usr/bin/env python3|' ${B}/tools/${BPN}-*
+}
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ # Install pyjailhouse python modules needed by the tools
+ distutils3_do_install
+
+ # We want to install the python tools, but we do not want to use pip...
+ # At least with v0.10, we can work around this with
+ # 'PIP=":" PYTHON_PIP_USEABLE=yes'
+ oe_runmake PIP=: PYTHON=python3 PYTHON_PIP_USEABLE=yes DESTDIR=${D} install
+
+ install -d ${D}${CELL_DIR}
+
+
+ install -m 0644 ${B}/configs/${JH_ARCH}/${JH_CELL_FILES} ${D}${CELL_DIR}/
+
+ install -d ${D}${INMATES_DIR}
+ install -m 0644 ${B}/inmates/demos/${JH_ARCH}/*.bin ${D}${INMATES_DIR}
+
+ if [ ${JH_ARCH} != "x86" ]; then
+ install -d ${D}${DTS_DIR}
+ install -m 0644 ${B}/configs/${JH_ARCH}/dts/*.dtb ${D}${DTS_DIR}
+ fi
+}
+
+PACKAGE_BEFORE_PN = "kernel-module-jailhouse pyjailhouse ${PN}-tools ${PN}-demos"
+FILES_${PN} = "${base_libdir}/firmware ${libexecdir} ${sbindir} ${JH_DATADIR}"
+FILES_pyjailhouse = "${PYTHON_SITEPACKAGES_DIR}"
+FILES_${PN}-tools = "${libexecdir}/${BPN}/${BPN}-* ${JH_DATADIR}/*.tmpl"
+FILES_${PN}-demos = "${JH_DATADIR}/ ${sbindir}/ivshmem-demo"
+
+RDEPENDS_${PN}-tools = "pyjailhouse python3-mmap python3-math python3-datetime python3-curses python3-compression python3-mako"
+RDEPENDS_pyjailhouse = "python3-core python3-ctypes python3-fcntl"
+RDEPENDS_${PN}-demos = "jailhouse"
+
+RRECOMMENDS_${PN} = "${PN}-tools"
+
+KERNEL_MODULE_AUTOLOAD += "jailhouse"
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux-jailhouse-5.4.inc b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux-jailhouse-5.4.inc
new file mode 100644
index 00000000..4b571ffd
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux-jailhouse-5.4.inc
@@ -0,0 +1,39 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/linux:"
+
+SRC_URI_append = " file://jailhouse.cfg"
+
+SRC_URI_append = " \
+file://0001-x86-jailhouse-Improve-setup-data-version-comparison.patch \
+file://0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch \
+file://0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch \
+file://0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch \
+file://0005-mm-Re-export-ioremap_page_range.patch \
+file://0006-arm-arm64-export-__hyp_stub_vectors.patch \
+file://0007-x86-Export-lapic_timer_period.patch \
+file://0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch \
+file://0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch \
+file://0010-uio-Enable-read-only-mappings.patch \
+file://0011-ivshmem-Add-header-file.patch \
+file://0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch \
+file://0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch \
+file://0014-ivshmem-net-Map-shmem-region-as-RAM.patch \
+file://0015-ivshmem-net-fix-race-in-state-machine.patch \
+file://0016-ivshmem-net-Remove-unused-variable.patch \
+file://0017-ivshmem-net-Enable-INTx.patch \
+file://0018-ivshmem-net-Improve-identification-of-resources.patch \
+file://0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch \
+file://0020-ivshmem-net-Add-ethtool-register-dump.patch \
+file://0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch \
+file://0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch \
+file://0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch \
+file://0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch \
+file://0025-ivshmem-net-slightly-improve-debug-output.patch \
+file://0026-ivshmem-net-set-and-check-descriptor-flags.patch \
+file://0027-ivshmem-net-add-MAC-changing-interface.patch \
+file://0028-ivshmem-net-Silence-compiler-warning.patch \
+file://0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch \
+file://0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch \
+file://0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch \
+file://0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch \
+"
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux-yocto_5.4%.bbappend b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux-yocto_5.4%.bbappend
new file mode 100644
index 00000000..b13f1eb1
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux-yocto_5.4%.bbappend
@@ -0,0 +1 @@
+require recipes-kernel/linux/linux-jailhouse-5.4.inc
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0001-x86-jailhouse-Improve-setup-data-version-comparison.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0001-x86-jailhouse-Improve-setup-data-version-comparison.patch
new file mode 100644
index 00000000..6b5032df
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0001-x86-jailhouse-Improve-setup-data-version-comparison.patch
@@ -0,0 +1,198 @@
+From d47ad4c29f1cd34aff896a88b3dfc4a861a15a6a Mon Sep 17 00:00:00 2001
+From: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
+Date: Thu, 10 Oct 2019 12:21:01 +0200
+Subject: [PATCH 01/32] x86/jailhouse: Improve setup data version comparison
+
+Soon, setup_data will contain information on passed-through platform
+UARTs. This requires some preparational work for the sanity check of the
+header and the check of the version.
+
+Use the following strategy:
+
+ 1. Ensure that the header declares at least enough space for the
+ version and the compatible_version as it must hold that fields for
+ any version. The location and semantics of header+version fields
+ will never change.
+
+ 2. Copy over data -- as much as as possible. The length is either
+ limited by the header length or the length of setup_data.
+
+ 3. Things are now in place -- sanity check if the header length
+ complies the actual version.
+
+For future versions of the setup_data, only step 3 requires alignment.
+
+Signed-off-by: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
+Cc: Baoquan He <bhe@redhat.com>
+Cc: "H. Peter Anvin" <hpa@zytor.com>
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: jailhouse-dev@googlegroups.com
+Cc: Juergen Gross <jgross@suse.com>
+Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: x86-ml <x86@kernel.org>
+Link: https://lkml.kernel.org/r/20191010102102.421035-2-ralf.ramsauer@oth-regensburg.de
+---
+ arch/x86/include/uapi/asm/bootparam.h | 22 ++++++++-------
+ arch/x86/kernel/jailhouse.c | 51 ++++++++++++++++++++++-------------
+ 2 files changed, 45 insertions(+), 28 deletions(-)
+
+diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h
+index c895df5482c5..43be437c9c71 100644
+--- a/arch/x86/include/uapi/asm/bootparam.h
++++ b/arch/x86/include/uapi/asm/bootparam.h
+@@ -139,15 +139,19 @@ struct boot_e820_entry {
+ * setup data structure.
+ */
+ struct jailhouse_setup_data {
+- __u16 version;
+- __u16 compatible_version;
+- __u16 pm_timer_address;
+- __u16 num_cpus;
+- __u64 pci_mmconfig_base;
+- __u32 tsc_khz;
+- __u32 apic_khz;
+- __u8 standard_ioapic;
+- __u8 cpu_ids[255];
++ struct {
++ __u16 version;
++ __u16 compatible_version;
++ } __attribute__((packed)) hdr;
++ struct {
++ __u16 pm_timer_address;
++ __u16 num_cpus;
++ __u64 pci_mmconfig_base;
++ __u32 tsc_khz;
++ __u32 apic_khz;
++ __u8 standard_ioapic;
++ __u8 cpu_ids[255];
++ } __attribute__((packed)) v1;
+ } __attribute__((packed));
+
+ /* The so-called "zeropage" */
+diff --git a/arch/x86/kernel/jailhouse.c b/arch/x86/kernel/jailhouse.c
+index 3ad34f01de2a..cf4eb37ad97b 100644
+--- a/arch/x86/kernel/jailhouse.c
++++ b/arch/x86/kernel/jailhouse.c
+@@ -22,6 +22,8 @@
+ #include <asm/jailhouse_para.h>
+
+ static __initdata struct jailhouse_setup_data setup_data;
++#define SETUP_DATA_V1_LEN (sizeof(setup_data.hdr) + sizeof(setup_data.v1))
++
+ static unsigned int precalibrated_tsc_khz;
+
+ static uint32_t jailhouse_cpuid_base(void)
+@@ -45,7 +47,7 @@ static void jailhouse_get_wallclock(struct timespec64 *now)
+
+ static void __init jailhouse_timer_init(void)
+ {
+- lapic_timer_period = setup_data.apic_khz * (1000 / HZ);
++ lapic_timer_period = setup_data.v1.apic_khz * (1000 / HZ);
+ }
+
+ static unsigned long jailhouse_get_tsc(void)
+@@ -88,14 +90,14 @@ static void __init jailhouse_get_smp_config(unsigned int early)
+
+ register_lapic_address(0xfee00000);
+
+- for (cpu = 0; cpu < setup_data.num_cpus; cpu++) {
+- generic_processor_info(setup_data.cpu_ids[cpu],
++ for (cpu = 0; cpu < setup_data.v1.num_cpus; cpu++) {
++ generic_processor_info(setup_data.v1.cpu_ids[cpu],
+ boot_cpu_apic_version);
+ }
+
+ smp_found_config = 1;
+
+- if (setup_data.standard_ioapic) {
++ if (setup_data.v1.standard_ioapic) {
+ mp_register_ioapic(0, 0xfec00000, gsi_top, &ioapic_cfg);
+
+ /* Register 1:1 mapping for legacy UART IRQs 3 and 4 */
+@@ -126,9 +128,9 @@ static int __init jailhouse_pci_arch_init(void)
+ pcibios_last_bus = 0xff;
+
+ #ifdef CONFIG_PCI_MMCONFIG
+- if (setup_data.pci_mmconfig_base) {
++ if (setup_data.v1.pci_mmconfig_base) {
+ pci_mmconfig_add(0, 0, pcibios_last_bus,
+- setup_data.pci_mmconfig_base);
++ setup_data.v1.pci_mmconfig_base);
+ pci_mmcfg_arch_init();
+ }
+ #endif
+@@ -139,6 +141,7 @@ static int __init jailhouse_pci_arch_init(void)
+ static void __init jailhouse_init_platform(void)
+ {
+ u64 pa_data = boot_params.hdr.setup_data;
++ unsigned long setup_data_len;
+ struct setup_data header;
+ void *mapping;
+
+@@ -163,16 +166,8 @@ static void __init jailhouse_init_platform(void)
+ memcpy(&header, mapping, sizeof(header));
+ early_memunmap(mapping, sizeof(header));
+
+- if (header.type == SETUP_JAILHOUSE &&
+- header.len >= sizeof(setup_data)) {
+- pa_data += offsetof(struct setup_data, data);
+-
+- mapping = early_memremap(pa_data, sizeof(setup_data));
+- memcpy(&setup_data, mapping, sizeof(setup_data));
+- early_memunmap(mapping, sizeof(setup_data));
+-
++ if (header.type == SETUP_JAILHOUSE)
+ break;
+- }
+
+ pa_data = header.next;
+ }
+@@ -180,13 +175,27 @@ static void __init jailhouse_init_platform(void)
+ if (!pa_data)
+ panic("Jailhouse: No valid setup data found");
+
+- if (setup_data.compatible_version > JAILHOUSE_SETUP_REQUIRED_VERSION)
+- panic("Jailhouse: Unsupported setup data structure");
++ /* setup data must at least contain the header */
++ if (header.len < sizeof(setup_data.hdr))
++ goto unsupported;
+
+- pmtmr_ioport = setup_data.pm_timer_address;
++ pa_data += offsetof(struct setup_data, data);
++ setup_data_len = min_t(unsigned long, sizeof(setup_data),
++ (unsigned long)header.len);
++ mapping = early_memremap(pa_data, setup_data_len);
++ memcpy(&setup_data, mapping, setup_data_len);
++ early_memunmap(mapping, setup_data_len);
++
++ if (setup_data.hdr.version == 0 ||
++ setup_data.hdr.compatible_version !=
++ JAILHOUSE_SETUP_REQUIRED_VERSION ||
++ (setup_data.hdr.version >= 1 && header.len < SETUP_DATA_V1_LEN))
++ goto unsupported;
++
++ pmtmr_ioport = setup_data.v1.pm_timer_address;
+ pr_debug("Jailhouse: PM-Timer IO Port: %#x\n", pmtmr_ioport);
+
+- precalibrated_tsc_khz = setup_data.tsc_khz;
++ precalibrated_tsc_khz = setup_data.v1.tsc_khz;
+ setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ);
+
+ pci_probe = 0;
+@@ -196,6 +205,10 @@ static void __init jailhouse_init_platform(void)
+ * are none in a non-root cell.
+ */
+ disable_acpi();
++ return;
++
++unsupported:
++ panic("Jailhouse: Unsupported setup data structure");
+ }
+
+ bool jailhouse_paravirt(void)
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch
new file mode 100644
index 00000000..d1db6c71
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch
@@ -0,0 +1,200 @@
+From 7f87114a29351547ffb9bd16c4cafb37524806c6 Mon Sep 17 00:00:00 2001
+From: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
+Date: Thu, 10 Oct 2019 12:21:02 +0200
+Subject: [PATCH 02/32] x86/jailhouse: Only enable platform UARTs if available
+
+ACPI tables aren't available if Linux runs as guest of the hypervisor
+Jailhouse. This makes the 8250 driver probe for all platform UARTs as it
+assumes that all UARTs are present in case of !ACPI. Jailhouse will stop
+execution of Linux guest due to port access violation.
+
+So far, these access violations were solved by tuning the 8250.nr_uarts
+cmdline parameter, but this has limitations: Only consecutive platform
+UARTs can be mapped to Linux, and only in the sequence 0x3f8, 0x2f8,
+0x3e8, 0x2e8.
+
+Beginning from setup_data version 2, Jailhouse will place information of
+available platform UARTs in setup_data. This allows for selective
+activation of platform UARTs.
+
+Query setup_data version and only activate available UARTS. This
+patch comes with backward compatibility, and will still support older
+setup_data versions. In case of older setup_data versions, Linux falls
+back to the old behaviour.
+
+Signed-off-by: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
+Cc: Baoquan He <bhe@redhat.com>
+Cc: "H. Peter Anvin" <hpa@zytor.com>
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: jailhouse-dev@googlegroups.com
+Cc: Juergen Gross <jgross@suse.com>
+Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: x86-ml <x86@kernel.org>
+Link: https://lkml.kernel.org/r/20191010102102.421035-3-ralf.ramsauer@oth-regensburg.de
+---
+ arch/x86/include/uapi/asm/bootparam.h | 3 ++
+ arch/x86/kernel/jailhouse.c | 85 +++++++++++++++++++++++++++++------
+ 2 files changed, 75 insertions(+), 13 deletions(-)
+
+diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h
+index 43be437c9c71..db1e24e56e94 100644
+--- a/arch/x86/include/uapi/asm/bootparam.h
++++ b/arch/x86/include/uapi/asm/bootparam.h
+@@ -152,6 +152,9 @@ struct jailhouse_setup_data {
+ __u8 standard_ioapic;
+ __u8 cpu_ids[255];
+ } __attribute__((packed)) v1;
++ struct {
++ __u32 flags;
++ } __attribute__((packed)) v2;
+ } __attribute__((packed));
+
+ /* The so-called "zeropage" */
+diff --git a/arch/x86/kernel/jailhouse.c b/arch/x86/kernel/jailhouse.c
+index cf4eb37ad97b..6eb8b50ea07e 100644
+--- a/arch/x86/kernel/jailhouse.c
++++ b/arch/x86/kernel/jailhouse.c
+@@ -11,6 +11,7 @@
+ #include <linux/acpi_pmtmr.h>
+ #include <linux/kernel.h>
+ #include <linux/reboot.h>
++#include <linux/serial_8250.h>
+ #include <asm/apic.h>
+ #include <asm/cpu.h>
+ #include <asm/hypervisor.h>
+@@ -21,11 +22,24 @@
+ #include <asm/setup.h>
+ #include <asm/jailhouse_para.h>
+
+-static __initdata struct jailhouse_setup_data setup_data;
++static struct jailhouse_setup_data setup_data;
+ #define SETUP_DATA_V1_LEN (sizeof(setup_data.hdr) + sizeof(setup_data.v1))
++#define SETUP_DATA_V2_LEN (SETUP_DATA_V1_LEN + sizeof(setup_data.v2))
+
+ static unsigned int precalibrated_tsc_khz;
+
++static void jailhouse_setup_irq(unsigned int irq)
++{
++ struct mpc_intsrc mp_irq = {
++ .type = MP_INTSRC,
++ .irqtype = mp_INT,
++ .irqflag = MP_IRQPOL_ACTIVE_HIGH | MP_IRQTRIG_EDGE,
++ .srcbusirq = irq,
++ .dstirq = irq,
++ };
++ mp_save_irq(&mp_irq);
++}
++
+ static uint32_t jailhouse_cpuid_base(void)
+ {
+ if (boot_cpu_data.cpuid_level < 0 ||
+@@ -79,11 +93,6 @@ static void __init jailhouse_get_smp_config(unsigned int early)
+ .type = IOAPIC_DOMAIN_STRICT,
+ .ops = &mp_ioapic_irqdomain_ops,
+ };
+- struct mpc_intsrc mp_irq = {
+- .type = MP_INTSRC,
+- .irqtype = mp_INT,
+- .irqflag = MP_IRQPOL_ACTIVE_HIGH | MP_IRQTRIG_EDGE,
+- };
+ unsigned int cpu;
+
+ jailhouse_x2apic_init();
+@@ -100,12 +109,12 @@ static void __init jailhouse_get_smp_config(unsigned int early)
+ if (setup_data.v1.standard_ioapic) {
+ mp_register_ioapic(0, 0xfec00000, gsi_top, &ioapic_cfg);
+
+- /* Register 1:1 mapping for legacy UART IRQs 3 and 4 */
+- mp_irq.srcbusirq = mp_irq.dstirq = 3;
+- mp_save_irq(&mp_irq);
+-
+- mp_irq.srcbusirq = mp_irq.dstirq = 4;
+- mp_save_irq(&mp_irq);
++ if (IS_ENABLED(CONFIG_SERIAL_8250) &&
++ setup_data.hdr.version < 2) {
++ /* Register 1:1 mapping for legacy UART IRQs 3 and 4 */
++ jailhouse_setup_irq(3);
++ jailhouse_setup_irq(4);
++ }
+ }
+ }
+
+@@ -138,6 +147,53 @@ static int __init jailhouse_pci_arch_init(void)
+ return 0;
+ }
+
++#ifdef CONFIG_SERIAL_8250
++static inline bool jailhouse_uart_enabled(unsigned int uart_nr)
++{
++ return setup_data.v2.flags & BIT(uart_nr);
++}
++
++static void jailhouse_serial_fixup(int port, struct uart_port *up,
++ u32 *capabilities)
++{
++ static const u16 pcuart_base[] = {0x3f8, 0x2f8, 0x3e8, 0x2e8};
++ unsigned int n;
++
++ for (n = 0; n < ARRAY_SIZE(pcuart_base); n++) {
++ if (pcuart_base[n] != up->iobase)
++ continue;
++
++ if (jailhouse_uart_enabled(n)) {
++ pr_info("Enabling UART%u (port 0x%lx)\n", n,
++ up->iobase);
++ jailhouse_setup_irq(up->irq);
++ } else {
++ /* Deactivate UART if access isn't allowed */
++ up->iobase = 0;
++ }
++ break;
++ }
++}
++
++static void __init jailhouse_serial_workaround(void)
++{
++ /*
++ * There are flags inside setup_data that indicate availability of
++ * platform UARTs since setup data version 2.
++ *
++ * In case of version 1, we don't know which UARTs belong Linux. In
++ * this case, unconditionally register 1:1 mapping for legacy UART IRQs
++ * 3 and 4.
++ */
++ if (setup_data.hdr.version > 1)
++ serial8250_set_isa_configurator(jailhouse_serial_fixup);
++}
++#else /* !CONFIG_SERIAL_8250 */
++static inline void jailhouse_serial_workaround(void)
++{
++}
++#endif /* CONFIG_SERIAL_8250 */
++
+ static void __init jailhouse_init_platform(void)
+ {
+ u64 pa_data = boot_params.hdr.setup_data;
+@@ -189,7 +245,8 @@ static void __init jailhouse_init_platform(void)
+ if (setup_data.hdr.version == 0 ||
+ setup_data.hdr.compatible_version !=
+ JAILHOUSE_SETUP_REQUIRED_VERSION ||
+- (setup_data.hdr.version >= 1 && header.len < SETUP_DATA_V1_LEN))
++ (setup_data.hdr.version == 1 && header.len < SETUP_DATA_V1_LEN) ||
++ (setup_data.hdr.version >= 2 && header.len < SETUP_DATA_V2_LEN))
+ goto unsupported;
+
+ pmtmr_ioport = setup_data.v1.pm_timer_address;
+@@ -205,6 +262,8 @@ static void __init jailhouse_init_platform(void)
+ * are none in a non-root cell.
+ */
+ disable_acpi();
++
++ jailhouse_serial_workaround();
+ return;
+
+ unsupported:
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch
new file mode 100644
index 00000000..289f54ac
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch
@@ -0,0 +1,174 @@
+From faa349f4d096554c6d5bfe74634599d2e26f64a7 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 11 Sep 2016 23:30:04 +0200
+Subject: [PATCH 03/32] jailhouse: Add simple debug console via the hypervisor
+
+Jailhouse allows explicitly enabled cells to write character-wise
+messages to the hypervisor debug console. Make use of this for a
+platform-agnostic boot diagnosis channel, specifically for non-root
+cells. This also comes with earlycon support.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ MAINTAINERS | 1 +
+ drivers/virt/Kconfig | 11 +++++
+ drivers/virt/Makefile | 1 +
+ drivers/virt/jailhouse_dbgcon.c | 103 ++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 116 insertions(+)
+ create mode 100644 drivers/virt/jailhouse_dbgcon.c
+
+diff --git a/MAINTAINERS b/MAINTAINERS
+index 9d3a5c54a41d..07cb4d674c93 100644
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -8761,6 +8761,7 @@ L: jailhouse-dev@googlegroups.com
+ S: Maintained
+ F: arch/x86/kernel/jailhouse.c
+ F: arch/x86/include/asm/jailhouse_para.h
++F: drivers/virt/jailhouse_dbgcon.c
+
+ JC42.4 TEMPERATURE SENSOR DRIVER
+ M: Guenter Roeck <linux@roeck-us.net>
+diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig
+index 363af2eaf2ba..99c5eaca6952 100644
+--- a/drivers/virt/Kconfig
++++ b/drivers/virt/Kconfig
+@@ -31,5 +31,16 @@ config FSL_HV_MANAGER
+ 4) A kernel interface for receiving callbacks when a managed
+ partition shuts down.
+
++config JAILHOUSE_DBGCON
++ tristate "Jailhouse console driver"
++ depends on X86 || ARM || ARM64
++ help
++ The Jailhouse hypervisor provides a simple write-only console for
++ debugging the bootstrap process of its cells. This driver registers
++ a console with the kernel to make use of it.
++
++ Note that Jailhouse has to be configured to permit a cell the usage
++ of the console interface.
++
+ source "drivers/virt/vboxguest/Kconfig"
+ endif
+diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
+index fd331247c27a..89e86a1d0f19 100644
+--- a/drivers/virt/Makefile
++++ b/drivers/virt/Makefile
+@@ -4,4 +4,5 @@
+ #
+
+ obj-$(CONFIG_FSL_HV_MANAGER) += fsl_hypervisor.o
++obj-$(CONFIG_JAILHOUSE_DBGCON) += jailhouse_dbgcon.o
+ obj-y += vboxguest/
+diff --git a/drivers/virt/jailhouse_dbgcon.c b/drivers/virt/jailhouse_dbgcon.c
+new file mode 100644
+index 000000000000..1fd201ea1460
+--- /dev/null
++++ b/drivers/virt/jailhouse_dbgcon.c
+@@ -0,0 +1,103 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++/*
++ * Console driver for running over the Jailhouse partitioning hypervisor
++ *
++ * Copyright (c) Siemens AG, 2016-2018
++ *
++ * Authors:
++ * Jan Kiszka <jan.kiszka@siemens.com>
++ */
++
++#include <linux/console.h>
++#include <linux/hypervisor.h>
++#include <linux/module.h>
++#include <linux/serial_core.h>
++#ifdef CONFIG_X86
++#include <asm/alternative.h>
++#endif
++#ifdef CONFIG_ARM
++#include <asm/opcodes-virt.h>
++#endif
++
++#define JAILHOUSE_HC_DEBUG_CONSOLE_PUTC 8
++
++static void hypervisor_putc(char c)
++{
++#if defined(CONFIG_X86)
++ int result;
++
++ asm volatile(
++ ALTERNATIVE(".byte 0x0f,0x01,0xc1", ".byte 0x0f,0x01,0xd9",
++ X86_FEATURE_VMMCALL)
++ : "=a" (result)
++ : "a" (JAILHOUSE_HC_DEBUG_CONSOLE_PUTC), "D" (c)
++ : "memory");
++#elif defined(CONFIG_ARM)
++ register u32 num_res asm("r0") = JAILHOUSE_HC_DEBUG_CONSOLE_PUTC;
++ register u32 arg1 asm("r1") = c;
++
++ asm volatile(
++ __HVC(0x4a48)
++ : "=r" (num_res)
++ : "r" (num_res), "r" (arg1)
++ : "memory");
++#elif defined(CONFIG_ARM64)
++ register u64 num_res asm("x0") = JAILHOUSE_HC_DEBUG_CONSOLE_PUTC;
++ register u64 arg1 asm("x1") = c;
++
++ asm volatile(
++ "hvc #0x4a48\n\t"
++ : "=r" (num_res)
++ : "r" (num_res), "r" (arg1)
++ : "memory");
++#else
++#error Unsupported architecture.
++#endif
++}
++
++static void jailhouse_dbgcon_write(struct console *con, const char *s,
++ unsigned count)
++{
++ while (count > 0) {
++ hypervisor_putc(*s);
++ count--;
++ s++;
++ }
++}
++
++static int __init early_jailhouse_dbgcon_setup(struct earlycon_device *device,
++ const char *options)
++{
++ device->con->write = jailhouse_dbgcon_write;
++ return 0;
++}
++
++EARLYCON_DECLARE(jailhouse, early_jailhouse_dbgcon_setup);
++
++static struct console jailhouse_dbgcon = {
++ .name = "jailhouse",
++ .write = jailhouse_dbgcon_write,
++ .flags = CON_PRINTBUFFER | CON_ANYTIME,
++ .index = -1,
++};
++
++static int __init jailhouse_dbgcon_init(void)
++{
++ if (!jailhouse_paravirt())
++ return -ENODEV;
++
++ register_console(&jailhouse_dbgcon);
++ return 0;
++}
++
++static void __exit jailhouse_dbgcon_exit(void)
++{
++ unregister_console(&jailhouse_dbgcon);
++}
++
++module_init(jailhouse_dbgcon_init);
++module_exit(jailhouse_dbgcon_exit);
++
++MODULE_LICENSE("GPL v2");
++MODULE_DESCRIPTION("Jailhouse debug console driver");
++MODULE_AUTHOR("Jan Kiszka <jan.kiszka@siemens.com>");
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch
new file mode 100644
index 00000000..6e4470f0
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch
@@ -0,0 +1,43 @@
+From 56e5aace5a675af0557b87a137b98e40454d8e22 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 3 Jul 2016 10:02:40 +0200
+Subject: [PATCH 04/32] arm: Export __boot_cpu_mode for use in Jailhouse driver
+ module
+
+Onlining a CPU while Jailhouse was running sets BOOT_CPU_MODE_MISMATCH
+because the kernel detect that the CPU will now only come up in SVC
+mode. Therefore, we need to fix up the flag after disabling Jailhouse
+again.
+
+Moreover, exporting the symbol allows to use is_hyp_mode_available() in
+the driver, thus prevents us from crashing during Jailhouse activation
+when there is no hyp stub installed.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ arch/arm/kernel/armksyms.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
+index 98bdea51089d..f2fa635bccf7 100644
+--- a/arch/arm/kernel/armksyms.c
++++ b/arch/arm/kernel/armksyms.c
+@@ -17,6 +17,7 @@
+
+ #include <asm/checksum.h>
+ #include <asm/ftrace.h>
++#include <asm/virt.h>
+
+ /*
+ * libgcc functions - functions that are used internally by the
+@@ -176,3 +177,7 @@ EXPORT_SYMBOL(__pv_offset);
+ EXPORT_SYMBOL(__arm_smccc_smc);
+ EXPORT_SYMBOL(__arm_smccc_hvc);
+ #endif
++
++#ifdef CONFIG_ARM_VIRT_EXT
++EXPORT_SYMBOL_GPL(__boot_cpu_mode);
++#endif
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0005-mm-Re-export-ioremap_page_range.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0005-mm-Re-export-ioremap_page_range.patch
new file mode 100644
index 00000000..e6bf1c35
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0005-mm-Re-export-ioremap_page_range.patch
@@ -0,0 +1,25 @@
+From cf5d27beb6aad2b69d716b0aee08f43619c338a9 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Tue, 7 Feb 2017 17:52:00 +0100
+Subject: [PATCH 05/32] mm: Re-export ioremap_page_range
+
+We need this in Jailhouse to map at specific virtual addresses, at
+least for the moment.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ lib/ioremap.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/ioremap.c b/lib/ioremap.c
+index 0a2ffadc6d71..baefdda8f32c 100644
+--- a/lib/ioremap.c
++++ b/lib/ioremap.c
+@@ -231,3 +231,4 @@ int ioremap_page_range(unsigned long addr,
+
+ return err;
+ }
++EXPORT_SYMBOL_GPL(ioremap_page_range);
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0006-arm-arm64-export-__hyp_stub_vectors.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0006-arm-arm64-export-__hyp_stub_vectors.patch
new file mode 100644
index 00000000..42f3ea48
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0006-arm-arm64-export-__hyp_stub_vectors.patch
@@ -0,0 +1,57 @@
+From 27588702a6792ff86a57317ef60d6e218796598e Mon Sep 17 00:00:00 2001
+From: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
+Date: Wed, 7 Jun 2017 15:48:43 +0200
+Subject: [PATCH 06/32] arm, arm64: export __hyp_stub_vectors
+
+HVC_GET_VECTORS got removed. External hypervisors, like Jailhouse, need
+this address when they are deactivated, in order to restore original
+state.
+
+Signed-off-by: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ arch/arm/kernel/hyp-stub.S | 2 ++
+ arch/arm64/kernel/hyp-stub.S | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/arch/arm/kernel/hyp-stub.S b/arch/arm/kernel/hyp-stub.S
+index ae5020302de4..463366ccd2c9 100644
+--- a/arch/arm/kernel/hyp-stub.S
++++ b/arch/arm/kernel/hyp-stub.S
+@@ -6,6 +6,7 @@
+ #include <linux/init.h>
+ #include <linux/irqchip/arm-gic-v3.h>
+ #include <linux/linkage.h>
++#include <asm-generic/export.h>
+ #include <asm/assembler.h>
+ #include <asm/virt.h>
+
+@@ -269,4 +270,5 @@ __hyp_stub_trap: W(b) __hyp_stub_do_trap
+ __hyp_stub_irq: W(b) .
+ __hyp_stub_fiq: W(b) .
+ ENDPROC(__hyp_stub_vectors)
++EXPORT_SYMBOL_GPL(__hyp_stub_vectors)
+
+diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S
+index 73d46070b315..ef2503bba71d 100644
+--- a/arch/arm64/kernel/hyp-stub.S
++++ b/arch/arm64/kernel/hyp-stub.S
+@@ -10,6 +10,7 @@
+ #include <linux/linkage.h>
+ #include <linux/irqchip/arm-gic-v3.h>
+
++#include <asm-generic/export.h>
+ #include <asm/assembler.h>
+ #include <asm/kvm_arm.h>
+ #include <asm/kvm_asm.h>
+@@ -42,6 +43,7 @@ ENTRY(__hyp_stub_vectors)
+ ventry el1_fiq_invalid // FIQ 32-bit EL1
+ ventry el1_error_invalid // Error 32-bit EL1
+ ENDPROC(__hyp_stub_vectors)
++EXPORT_SYMBOL_GPL(__hyp_stub_vectors)
+
+ .align 11
+
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0007-x86-Export-lapic_timer_period.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0007-x86-Export-lapic_timer_period.patch
new file mode 100644
index 00000000..9b2a2f2c
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0007-x86-Export-lapic_timer_period.patch
@@ -0,0 +1,28 @@
+From 3f87075ce9d3e04e8e43de2e88dd7728b3777eb8 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Thu, 23 Nov 2017 07:12:57 +0100
+Subject: [PATCH 07/32] x86: Export lapic_timer_period
+
+Required for the Jailhouse driver in order to forward the calibration
+value to other cells.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ arch/x86/kernel/apic/apic.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
+index 2b0faf86da1b..0428ad289899 100644
+--- a/arch/x86/kernel/apic/apic.c
++++ b/arch/x86/kernel/apic/apic.c
+@@ -196,6 +196,7 @@ static struct resource lapic_resource = {
+ };
+
+ unsigned int lapic_timer_period = 0;
++EXPORT_SYMBOL_GPL(lapic_timer_period);
+
+ static void apic_pm_activate(void);
+
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch
new file mode 100644
index 00000000..963989cf
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch
@@ -0,0 +1,31 @@
+From 764a3a5da899b596474edf916b44dfc034443445 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Mon, 17 Sep 2018 08:08:08 +0200
+Subject: [PATCH 08/32] arm64: dts: marvell: armada-37xx: Set pci-domain
+
+This is a nop for normal operation but allows the device tree overlay
+that the Jailhouse hypervisor injects to use pci-domain as well
+(linux,pci-domain has to be applied consistently in a system). That will
+assign a stable PCI domain to the secondary, virtual host controller of
+Jailhouse.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+index 000c135e39b7..d839cea9d361 100644
+--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
++++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+@@ -482,6 +482,7 @@
+ #address-cells = <3>;
+ #size-cells = <2>;
+ bus-range = <0x00 0xff>;
++ linux,pci-domain = <0>;
+ interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+ #interrupt-cells = <1>;
+ msi-parent = <&pcie0>;
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch
new file mode 100644
index 00000000..8e99fa12
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch
@@ -0,0 +1,31 @@
+From 1f916502347d2b902002b430cffe18b11685f211 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 30 Sep 2018 21:22:32 +0200
+Subject: [PATCH 09/32] arm64: dts: marvell: armada-8030-mcbin: Set pci-domain
+
+This is a nop for normal operation but allows the device tree overlay
+that the Jailhouse hypervisor injects to use pci-domain as well
+(linux,pci-domain has to be applied consistently in a system). That will
+assign a stable PCI domain to the secondary, virtual host controller of
+Jailhouse.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi b/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
+index d250f4b2bfed..58bac50b06eb 100644
+--- a/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
++++ b/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
+@@ -174,6 +174,7 @@
+ };
+
+ &cp0_pcie0 {
++ linux,pci-domain = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&cp0_pcie_pins>;
+ num-lanes = <4>;
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0010-uio-Enable-read-only-mappings.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0010-uio-Enable-read-only-mappings.patch
new file mode 100644
index 00000000..2fa65641
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0010-uio-Enable-read-only-mappings.patch
@@ -0,0 +1,57 @@
+From 9c8885c6e020451e4a4578be9db318e5c07227ea Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Tue, 4 Jun 2019 14:40:09 +0200
+Subject: [PATCH 10/32] uio: Enable read-only mappings
+
+This allows to tag memory regions read-only, denying userspace to map
+them writable. Default remains read/write.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/uio/uio.c | 9 +++++++++
+ include/linux/uio_driver.h | 2 ++
+ 2 files changed, 11 insertions(+)
+
+diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
+index a57698985f9c..ac18542ee4fe 100644
+--- a/drivers/uio/uio.c
++++ b/drivers/uio/uio.c
+@@ -790,6 +790,15 @@ static int uio_mmap(struct file *filep, struct vm_area_struct *vma)
+ goto out;
+ }
+
++ if (idev->info->mem[mi].readonly) {
++ if (vma->vm_flags & VM_WRITE) {
++ ret = -EINVAL;
++ goto out;
++ }
++
++ vma->vm_flags &= ~VM_MAYWRITE;
++ }
++
+ if (idev->info->mmap) {
+ ret = idev->info->mmap(idev->info, vma);
+ goto out;
+diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h
+index 01081c4726c0..ebfc06e36ca2 100644
+--- a/include/linux/uio_driver.h
++++ b/include/linux/uio_driver.h
+@@ -31,6 +31,7 @@ struct uio_map;
+ * @offs: offset of device memory within the page
+ * @size: size of IO (multiple of page size)
+ * @memtype: type of memory addr points to
++ * @readonly: true of region is read-only
+ * @internal_addr: ioremap-ped version of addr, for driver internal use
+ * @map: for use by the UIO core only.
+ */
+@@ -40,6 +41,7 @@ struct uio_mem {
+ unsigned long offs;
+ resource_size_t size;
+ int memtype;
++ bool readonly;
+ void __iomem *internal_addr;
+ struct uio_map *map;
+ };
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0011-ivshmem-Add-header-file.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0011-ivshmem-Add-header-file.patch
new file mode 100644
index 00000000..f143d150
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0011-ivshmem-Add-header-file.patch
@@ -0,0 +1,52 @@
+From 61d003be018fb5b874e6ffbf746684c53556c00e Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Tue, 1 Oct 2019 12:33:25 +0200
+Subject: [PATCH 11/32] ivshmem: Add header file
+
+Common defines and structures for the ivshmem device.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ include/linux/ivshmem.h | 30 ++++++++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+ create mode 100644 include/linux/ivshmem.h
+
+diff --git a/include/linux/ivshmem.h b/include/linux/ivshmem.h
+new file mode 100644
+index 000000000000..bad8547f071b
+--- /dev/null
++++ b/include/linux/ivshmem.h
+@@ -0,0 +1,30 @@
++/* SPDX-License-Identifier: GPL-2.0-only */
++#ifndef _LINUX_IVSHMEM_H
++#define _LINUX_IVSHMEM_H
++
++#include <linux/types.h>
++
++#define IVSHM_PROTO_UNDEFINED 0x0000
++#define IVSHM_PROTO_NET 0x0001
++#define IVSHM_PROTO_VIRTIO_FRONT 0x8000
++#define IVSHM_PROTO_VIRTIO_BACK 0xc000
++#define IVSHM_PROTO_VIRTIO_DEVID_MASK 0x7fff
++
++#define IVSHM_CFG_PRIV_CNTL 0x03
++# define IVSHM_PRIV_CNTL_ONESHOT_INT BIT(0)
++#define IVSHM_CFG_STATE_TAB_SZ 0x04
++#define IVSHM_CFG_RW_SECTION_SZ 0x08
++#define IVSHM_CFG_OUTPUT_SECTION_SZ 0x10
++#define IVSHM_CFG_ADDRESS 0x18
++
++struct ivshm_regs {
++ u32 id;
++ u32 max_peers;
++ u32 int_control;
++ u32 doorbell;
++ u32 state;
++};
++
++#define IVSHM_INT_ENABLE BIT(0)
++
++#endif /* _LINUX_IVSHMEM_H */
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch
new file mode 100644
index 00000000..f98670c3
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch
@@ -0,0 +1,311 @@
+From 205cdad2dc9fc8a6a7204b2a71408b43085dd45f Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Tue, 4 Jun 2019 18:40:25 +0200
+Subject: [PATCH 12/32] uio: Add driver for inter-VM shared memory device
+
+This adds a UIO driver the ivshmem device, found in QEMU and the
+Jailhouse hypervisor. It exposes the MMIO register region and all shared
+memory section to userspace. Interrupts are configured in one-shot mode
+so that userspace needs to re-enable them after each event via the
+Interrupt Control register. The driver registers all possible MSI-X
+vectors, coalescing them into the single notifier UIO provides.
+
+Note: Specification work for the interface is ongoing, so details may
+still change.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/uio/Kconfig | 7 ++
+ drivers/uio/Makefile | 1 +
+ drivers/uio/uio_ivshmem.c | 241 ++++++++++++++++++++++++++++++++++++++++++++++
+ include/linux/pci_ids.h | 1 +
+ 4 files changed, 250 insertions(+)
+ create mode 100644 drivers/uio/uio_ivshmem.c
+
+diff --git a/drivers/uio/Kconfig b/drivers/uio/Kconfig
+index 202ee81cfc2b..a130500f46b8 100644
+--- a/drivers/uio/Kconfig
++++ b/drivers/uio/Kconfig
+@@ -165,4 +165,11 @@ config UIO_HV_GENERIC
+ to network and storage devices from userspace.
+
+ If you compile this as a module, it will be called uio_hv_generic.
++
++config UIO_IVSHMEM
++ tristate "Inter-VM Shared Memory driver"
++ depends on PCI
++ help
++ Userspace I/O driver for the inter-VM shared memory PCI device
++ as provided by QEMU and the Jailhouse hypervisor.
+ endif
+diff --git a/drivers/uio/Makefile b/drivers/uio/Makefile
+index c285dd2a4539..3911fefb2a7e 100644
+--- a/drivers/uio/Makefile
++++ b/drivers/uio/Makefile
+@@ -11,3 +11,4 @@ obj-$(CONFIG_UIO_PRUSS) += uio_pruss.o
+ obj-$(CONFIG_UIO_MF624) += uio_mf624.o
+ obj-$(CONFIG_UIO_FSL_ELBC_GPCM) += uio_fsl_elbc_gpcm.o
+ obj-$(CONFIG_UIO_HV_GENERIC) += uio_hv_generic.o
++obj-$(CONFIG_UIO_IVSHMEM) += uio_ivshmem.o
+diff --git a/drivers/uio/uio_ivshmem.c b/drivers/uio/uio_ivshmem.c
+new file mode 100644
+index 000000000000..0c16d428c6ed
+--- /dev/null
++++ b/drivers/uio/uio_ivshmem.c
+@@ -0,0 +1,241 @@
++// SPDX-License-Identifier: GPL-2.0
++/*
++ * UIO driver for Inter-VM shared memory PCI device
++ *
++ * Copyright (c) Siemens AG, 2019
++ *
++ * Authors:
++ * Jan Kiszka <jan.kiszka@siemens.com>
++ */
++
++#include <linux/ivshmem.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/uio_driver.h>
++
++#define DRV_NAME "uio_ivshmem"
++
++struct ivshm_dev {
++ struct uio_info info;
++ struct pci_dev *pdev;
++ struct ivshm_regs __iomem *regs;
++ int vectors;
++};
++
++static irqreturn_t ivshm_irq_handler(int irq, void *dev_id)
++{
++ struct ivshm_dev *ivshm_dev = (struct ivshm_dev *)dev_id;
++
++ /* nothing else to do, we configured one-shot interrupt mode */
++ uio_event_notify(&ivshm_dev->info);
++
++ return IRQ_HANDLED;
++}
++
++static u64 get_config_qword(struct pci_dev *pdev, unsigned int pos)
++{
++ u32 lo, hi;
++
++ pci_read_config_dword(pdev, pos, &lo);
++ pci_read_config_dword(pdev, pos + 4, &hi);
++ return lo | ((u64)hi << 32);
++}
++
++static int ivshm_release(struct uio_info *info, struct inode *inode)
++{
++ struct ivshm_dev *ivshm_dev =
++ container_of(info, struct ivshm_dev, info);
++
++ writel(0, &ivshm_dev->regs->state);
++ return 0;
++}
++
++static int ivshm_probe(struct pci_dev *pdev, const struct pci_device_id *id)
++{
++ resource_size_t rw_section_sz, output_section_sz;
++ struct ivshm_dev *ivshm_dev;
++ phys_addr_t section_addr;
++ int err, vendor_cap, i;
++ unsigned int cap_pos;
++ struct uio_mem *mem;
++ char *device_name;
++ u32 dword;
++
++ ivshm_dev = devm_kzalloc(&pdev->dev, sizeof(struct ivshm_dev),
++ GFP_KERNEL);
++ if (!ivshm_dev)
++ return -ENOMEM;
++
++ err = pcim_enable_device(pdev);
++ if (err)
++ return err;
++
++ device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s[%s]", DRV_NAME,
++ dev_name(&pdev->dev));
++ if (!device_name)
++ return -ENOMEM;
++
++ ivshm_dev->info.name = device_name;
++ ivshm_dev->info.version = "1";
++ ivshm_dev->info.release = ivshm_release;
++
++ err = pcim_iomap_regions(pdev, BIT(0), device_name);
++ if (err)
++ return err;
++ ivshm_dev->regs = pcim_iomap_table(pdev)[0];
++
++ mem = &ivshm_dev->info.mem[0];
++
++ mem->name = "registers";
++ mem->addr = pci_resource_start(pdev, 0);
++ if (!mem->addr)
++ return -ENODEV;
++ mem->size = pci_resource_len(pdev, 0);
++ mem->memtype = UIO_MEM_PHYS;
++
++ vendor_cap = pci_find_capability(pdev, PCI_CAP_ID_VNDR);
++ if (vendor_cap < 0)
++ return -ENODEV;
++
++ if (pci_resource_len(pdev, 2) > 0) {
++ section_addr = pci_resource_start(pdev, 2);
++ } else {
++ cap_pos = vendor_cap + IVSHM_CFG_ADDRESS;
++ section_addr = get_config_qword(pdev, cap_pos);
++ }
++
++ mem++;
++ mem->name = "state_table";
++ mem->addr = section_addr;
++ cap_pos = vendor_cap + IVSHM_CFG_STATE_TAB_SZ;
++ pci_read_config_dword(pdev, cap_pos, &dword);
++ mem->size = dword;
++ mem->memtype = UIO_MEM_IOVA;
++ mem->readonly = true;
++ if (!devm_request_mem_region(&pdev->dev, mem->addr, mem->size,
++ device_name))
++ return -EBUSY;
++ dev_info(&pdev->dev, "%s at %pa, size %pa\n", mem->name, &mem->addr,
++ &mem->size);
++
++ cap_pos = vendor_cap + IVSHM_CFG_RW_SECTION_SZ;
++ rw_section_sz = get_config_qword(pdev, cap_pos);
++ if (rw_section_sz > 0) {
++ section_addr += mem->size;
++
++ mem++;
++ mem->name = "rw_section";
++ mem->addr = section_addr;
++ mem->size = rw_section_sz;
++ mem->memtype = UIO_MEM_IOVA;
++ if (!devm_request_mem_region(&pdev->dev, mem->addr, mem->size,
++ device_name))
++ return -EBUSY;
++ dev_info(&pdev->dev, "%s at %pa, size %pa\n", mem->name,
++ &mem->addr, &mem->size);
++ }
++
++ cap_pos = vendor_cap + IVSHM_CFG_OUTPUT_SECTION_SZ;
++ output_section_sz = get_config_qword(pdev, cap_pos);
++ if (output_section_sz > 0) {
++ section_addr += mem->size;
++
++ mem++;
++ mem->name = "input_sections";
++ mem->addr = section_addr;
++ mem->size =
++ readl(&ivshm_dev->regs->max_peers) * output_section_sz;
++ mem->memtype = UIO_MEM_IOVA;
++ mem->readonly = true;
++ if (!devm_request_mem_region(&pdev->dev, mem->addr, mem->size,
++ device_name))
++ return -EBUSY;
++ dev_info(&pdev->dev, "%s at %pa, size %pa\n", mem->name,
++ &mem->addr, &mem->size);
++
++ mem++;
++ mem->name = "output_section";
++ mem->addr = section_addr +
++ readl(&ivshm_dev->regs->id) * output_section_sz;
++ mem->size = output_section_sz;
++ mem->memtype = UIO_MEM_IOVA;
++ dev_info(&pdev->dev, "%s at %pa, size %pa\n", mem->name,
++ &mem->addr, &mem->size);
++ }
++
++ pci_write_config_byte(pdev, vendor_cap + IVSHM_CFG_PRIV_CNTL,
++ IVSHM_PRIV_CNTL_ONESHOT_INT);
++
++ /*
++ * Grab all vectors although we can only coalesce them into a single
++ * notifier. This avoids missing any event.
++ */
++ ivshm_dev->vectors = pci_msix_vec_count(pdev);
++ if (ivshm_dev->vectors < 0)
++ ivshm_dev->vectors = 1;
++
++ err = pci_alloc_irq_vectors(pdev, ivshm_dev->vectors,
++ ivshm_dev->vectors,
++ PCI_IRQ_LEGACY | PCI_IRQ_MSIX);
++ if (err < 0)
++ return err;
++
++ for (i = 0; i < ivshm_dev->vectors; i++) {
++ err = request_irq(pci_irq_vector(pdev, i), ivshm_irq_handler,
++ IRQF_SHARED, ivshm_dev->info.name, ivshm_dev);
++ if (err)
++ goto error;
++ }
++
++ ivshm_dev->info.irq = UIO_IRQ_CUSTOM;
++
++ err = uio_register_device(&pdev->dev, &ivshm_dev->info);
++ if (err)
++ goto error;
++
++ pci_set_master(pdev);
++
++ pci_set_drvdata(pdev, ivshm_dev);
++
++ return 0;
++
++error:
++ while (--i > 0)
++ free_irq(pci_irq_vector(pdev, i), ivshm_dev);
++ pci_free_irq_vectors(pdev);
++ return err;
++}
++
++static void ivshm_remove(struct pci_dev *pdev)
++{
++ struct ivshm_dev *ivshm_dev = pci_get_drvdata(pdev);
++ int i;
++
++ writel(0, &ivshm_dev->regs->int_control);
++ pci_clear_master(pdev);
++
++ uio_unregister_device(&ivshm_dev->info);
++
++ for (i = 0; i < ivshm_dev->vectors; i++)
++ free_irq(pci_irq_vector(pdev, i), ivshm_dev);
++
++ pci_free_irq_vectors(pdev);
++}
++
++static const struct pci_device_id ivshm_device_id_table[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_SIEMENS, PCI_DEVICE_ID_IVSHMEM),
++ (PCI_CLASS_OTHERS << 16) | IVSHM_PROTO_UNDEFINED, 0xffffff },
++ { 0 }
++};
++MODULE_DEVICE_TABLE(pci, ivshm_device_id_table);
++
++static struct pci_driver uio_ivshm_driver = {
++ .name = DRV_NAME,
++ .id_table = ivshm_device_id_table,
++ .probe = ivshm_probe,
++ .remove = ivshm_remove,
++};
++module_pci_driver(uio_ivshm_driver);
++
++MODULE_AUTHOR("Jan Kiszka <jan.kiszka@siemens.com>");
++MODULE_LICENSE("GPL v2");
+diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
+index 21a572469a4e..e450458c8ba8 100644
+--- a/include/linux/pci_ids.h
++++ b/include/linux/pci_ids.h
+@@ -1477,6 +1477,7 @@
+
+ #define PCI_VENDOR_ID_SIEMENS 0x110A
+ #define PCI_DEVICE_ID_SIEMENS_DSCC4 0x2102
++#define PCI_DEVICE_ID_IVSHMEM 0x4106
+
+ #define PCI_VENDOR_ID_VORTEX 0x1119
+ #define PCI_DEVICE_ID_VORTEX_GDT60x0 0x0000
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch
new file mode 100644
index 00000000..ae5ac475
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch
@@ -0,0 +1,968 @@
+From fa0e2362149bb814d6b7431a7c42989d33002f60 Mon Sep 17 00:00:00 2001
+From: Mans Rullgard <mans@mansr.com>
+Date: Thu, 26 May 2016 16:04:02 +0100
+Subject: [PATCH 13/32] ivshmem-net: virtual network device for Jailhouse
+
+Work in progress.
+---
+ drivers/net/Kconfig | 4 +
+ drivers/net/Makefile | 2 +
+ drivers/net/ivshmem-net.c | 923 ++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 929 insertions(+)
+ create mode 100644 drivers/net/ivshmem-net.c
+
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index df1c7989e13d..8c65f55163e3 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -527,4 +527,8 @@ config NET_FAILOVER
+ a VM with direct attached VF by failing over to the paravirtual
+ datapath when the VF is unplugged.
+
++config IVSHMEM_NET
++ tristate "IVSHMEM virtual network device"
++ depends on PCI
++
+ endif # NETDEVICES
+diff --git a/drivers/net/Makefile b/drivers/net/Makefile
+index 0d3ba056cda3..5041c293d4d0 100644
+--- a/drivers/net/Makefile
++++ b/drivers/net/Makefile
+@@ -79,3 +79,5 @@ thunderbolt-net-y += thunderbolt.o
+ obj-$(CONFIG_THUNDERBOLT_NET) += thunderbolt-net.o
+ obj-$(CONFIG_NETDEVSIM) += netdevsim/
+ obj-$(CONFIG_NET_FAILOVER) += net_failover.o
++
++obj-$(CONFIG_IVSHMEM_NET) += ivshmem-net.o
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+new file mode 100644
+index 000000000000..b676bed2cc2e
+--- /dev/null
++++ b/drivers/net/ivshmem-net.c
+@@ -0,0 +1,923 @@
++/*
++ * Copyright 2016 Mans Rullgard <mans@mansr.com>
++ *
++ * 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, see <http://www.gnu.org/licenses/>.
++ */
++
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/pci.h>
++#include <linux/io.h>
++#include <linux/bitops.h>
++#include <linux/interrupt.h>
++#include <linux/netdevice.h>
++#include <linux/etherdevice.h>
++#include <linux/rtnetlink.h>
++#include <linux/virtio_ring.h>
++
++#define DRV_NAME "ivshmem-net"
++
++#define JAILHOUSE_CFG_SHMEM_PTR 0x40
++#define JAILHOUSE_CFG_SHMEM_SZ 0x48
++
++#define IVSHM_NET_STATE_RESET 0
++#define IVSHM_NET_STATE_INIT 1
++#define IVSHM_NET_STATE_READY 2
++#define IVSHM_NET_STATE_RUN 3
++
++#define IVSHM_NET_MTU_MIN 256
++#define IVSHM_NET_MTU_MAX 65535
++#define IVSHM_NET_MTU_DEF 16384
++
++#define IVSHM_NET_FRAME_SIZE(s) ALIGN(18 + (s), SMP_CACHE_BYTES)
++
++#define IVSHM_NET_VQ_ALIGN 64
++
++struct ivshmem_regs {
++ u32 imask;
++ u32 istat;
++ u32 ivpos;
++ u32 doorbell;
++ u32 lstate;
++ u32 rstate;
++};
++
++struct ivshm_net_queue {
++ struct vring vr;
++ u32 free_head;
++ u32 num_free;
++ u32 num_added;
++ u16 last_avail_idx;
++ u16 last_used_idx;
++
++ void *data;
++ void *end;
++ u32 size;
++ u32 head;
++ u32 tail;
++};
++
++struct ivshm_net_stats {
++ u32 interrupts;
++ u32 tx_packets;
++ u32 tx_notify;
++ u32 tx_pause;
++ u32 rx_packets;
++ u32 rx_notify;
++ u32 napi_poll;
++ u32 napi_complete;
++ u32 napi_poll_n[10];
++};
++
++struct ivshm_net {
++ struct ivshm_net_queue rx;
++ struct ivshm_net_queue tx;
++
++ u32 vrsize;
++ u32 qlen;
++ u32 qsize;
++
++ spinlock_t tx_free_lock;
++ spinlock_t tx_clean_lock;
++
++ struct napi_struct napi;
++
++ u32 lstate;
++ u32 rstate;
++
++ struct workqueue_struct *state_wq;
++ struct work_struct state_work;
++
++ struct ivshm_net_stats stats;
++
++ struct ivshmem_regs __iomem *ivshm_regs;
++ void *shm;
++ phys_addr_t shmaddr;
++ resource_size_t shmlen;
++ u32 peer_id;
++
++ struct pci_dev *pdev;
++ struct msix_entry msix;
++ bool using_msix;
++};
++
++static void *ivshm_net_desc_data(struct ivshm_net *in,
++ struct ivshm_net_queue *q,
++ struct vring_desc *desc,
++ u32 *len)
++{
++ u64 addr = READ_ONCE(desc->addr);
++ u32 dlen = READ_ONCE(desc->len);
++ void *data;
++
++ if (addr < in->shmaddr || desc->addr > in->shmaddr + in->shmlen)
++ return NULL;
++
++ data = in->shm + (addr - in->shmaddr);
++
++ if (data < q->data || data >= q->end)
++ return NULL;
++
++ if (dlen > q->end - data)
++ return NULL;
++
++ *len = dlen;
++
++ return data;
++}
++
++static void ivshm_net_init_queue(struct ivshm_net *in,
++ struct ivshm_net_queue *q,
++ void *mem, unsigned int len)
++{
++ memset(q, 0, sizeof(*q));
++
++ vring_init(&q->vr, len, mem, IVSHM_NET_VQ_ALIGN);
++ q->data = mem + in->vrsize;
++ q->end = q->data + in->qsize;
++ q->size = in->qsize;
++}
++
++static void ivshm_net_init_queues(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++ int ivpos = readl(&in->ivshm_regs->ivpos);
++ void *tx;
++ void *rx;
++ int i;
++
++ tx = in->shm + ivpos * in->shmlen / 2;
++ rx = in->shm + !ivpos * in->shmlen / 2;
++
++ memset(tx, 0, in->shmlen / 2);
++
++ ivshm_net_init_queue(in, &in->rx, rx, in->qlen);
++ ivshm_net_init_queue(in, &in->tx, tx, in->qlen);
++
++ swap(in->rx.vr.used, in->tx.vr.used);
++
++ in->tx.num_free = in->tx.vr.num;
++
++ for (i = 0; i < in->tx.vr.num - 1; i++)
++ in->tx.vr.desc[i].next = i + 1;
++}
++
++static int ivshm_net_calc_qsize(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++ unsigned int vrsize;
++ unsigned int qsize;
++ unsigned int qlen;
++
++ for (qlen = 4096; qlen > 32; qlen >>= 1) {
++ vrsize = vring_size(qlen, IVSHM_NET_VQ_ALIGN);
++ vrsize = ALIGN(vrsize, IVSHM_NET_VQ_ALIGN);
++ if (vrsize < in->shmlen / 16)
++ break;
++ }
++
++ if (vrsize > in->shmlen / 2)
++ return -EINVAL;
++
++ qsize = in->shmlen / 2 - vrsize;
++
++ if (qsize < 4 * IVSHM_NET_MTU_MIN)
++ return -EINVAL;
++
++ in->vrsize = vrsize;
++ in->qlen = qlen;
++ in->qsize = qsize;
++
++ return 0;
++}
++
++static void ivshm_net_notify_tx(struct ivshm_net *in, unsigned int num)
++{
++ u16 evt, old, new;
++
++ virt_mb();
++
++ evt = READ_ONCE(vring_avail_event(&in->tx.vr));
++ old = in->tx.last_avail_idx - num;
++ new = in->tx.last_avail_idx;
++
++ if (vring_need_event(evt, new, old)) {
++ writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
++ in->stats.tx_notify++;
++ }
++}
++
++static void ivshm_net_enable_rx_irq(struct ivshm_net *in)
++{
++ vring_avail_event(&in->rx.vr) = in->rx.last_avail_idx;
++ virt_wmb();
++}
++
++static void ivshm_net_notify_rx(struct ivshm_net *in, unsigned int num)
++{
++ u16 evt, old, new;
++
++ virt_mb();
++
++ evt = vring_used_event(&in->rx.vr);
++ old = in->rx.last_used_idx - num;
++ new = in->rx.last_used_idx;
++
++ if (vring_need_event(evt, new, old)) {
++ writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
++ in->stats.rx_notify++;
++ }
++}
++
++static void ivshm_net_enable_tx_irq(struct ivshm_net *in)
++{
++ vring_used_event(&in->tx.vr) = in->tx.last_used_idx;
++ virt_wmb();
++}
++
++static bool ivshm_net_rx_avail(struct ivshm_net *in)
++{
++ virt_mb();
++ return READ_ONCE(in->rx.vr.avail->idx) != in->rx.last_avail_idx;
++}
++
++static size_t ivshm_net_tx_space(struct ivshm_net *in)
++{
++ struct ivshm_net_queue *tx = &in->tx;
++ u32 tail = tx->tail;
++ u32 head = tx->head;
++ u32 space;
++
++ if (head < tail)
++ space = tail - head;
++ else
++ space = max(tx->size - head, tail);
++
++ return space;
++}
++
++static bool ivshm_net_tx_ok(struct ivshm_net *in, unsigned int mtu)
++{
++ return in->tx.num_free >= 2 &&
++ ivshm_net_tx_space(in) >= 2 * IVSHM_NET_FRAME_SIZE(mtu);
++}
++
++static u32 ivshm_net_tx_advance(struct ivshm_net_queue *q, u32 *pos, u32 len)
++{
++ u32 p = *pos;
++
++ len = IVSHM_NET_FRAME_SIZE(len);
++
++ if (q->size - p < len)
++ p = 0;
++ *pos = p + len;
++
++ return p;
++}
++
++static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++ struct ivshm_net_queue *tx = &in->tx;
++ struct vring *vr = &tx->vr;
++ struct vring_desc *desc;
++ unsigned int desc_idx;
++ unsigned int avail;
++ u32 head;
++ void *buf;
++
++ BUG_ON(tx->num_free < 1);
++
++ spin_lock(&in->tx_free_lock);
++ desc_idx = tx->free_head;
++ desc = &vr->desc[desc_idx];
++ tx->free_head = desc->next;
++ tx->num_free--;
++ spin_unlock(&in->tx_free_lock);
++
++ head = ivshm_net_tx_advance(tx, &tx->head, skb->len);
++
++ buf = tx->data + head;
++ skb_copy_and_csum_dev(skb, buf);
++
++ desc->addr = in->shmaddr + (buf - in->shm);
++ desc->len = skb->len;
++
++ avail = tx->last_avail_idx++ & (vr->num - 1);
++ vr->avail->ring[avail] = desc_idx;
++ tx->num_added++;
++
++ if (!skb->xmit_more) {
++ virt_store_release(&vr->avail->idx, tx->last_avail_idx);
++ ivshm_net_notify_tx(in, tx->num_added);
++ tx->num_added = 0;
++ }
++
++ return 0;
++}
++
++static void ivshm_net_tx_clean(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++ struct ivshm_net_queue *tx = &in->tx;
++ struct vring *vr = &tx->vr;
++ struct vring_desc *desc;
++ struct vring_desc *fdesc;
++ unsigned int used;
++ unsigned int num;
++ u16 used_idx;
++ u16 last;
++ u32 fhead;
++
++ if (!spin_trylock(&in->tx_clean_lock))
++ return;
++
++ used_idx = virt_load_acquire(&vr->used->idx);
++ last = tx->last_used_idx;
++
++ fdesc = NULL;
++ num = 0;
++
++ while (last != used_idx) {
++ void *data;
++ u32 len;
++ u32 tail;
++
++ used = vr->used->ring[last & (vr->num - 1)].id;
++ if (used >= vr->num) {
++ netdev_err(ndev, "invalid tx used %d\n", used);
++ break;
++ }
++
++ desc = &vr->desc[used];
++
++ data = ivshm_net_desc_data(in, &in->tx, desc, &len);
++ if (!data) {
++ netdev_err(ndev, "bad tx descriptor\n");
++ break;
++ }
++
++ tail = ivshm_net_tx_advance(tx, &tx->tail, len);
++ if (data != tx->data + tail) {
++ netdev_err(ndev, "bad tx descriptor\n");
++ break;
++ }
++
++ if (!num)
++ fdesc = desc;
++ else
++ desc->next = fhead;
++
++ fhead = used;
++ last++;
++ num++;
++ }
++
++ tx->last_used_idx = last;
++
++ spin_unlock(&in->tx_clean_lock);
++
++ if (num) {
++ spin_lock(&in->tx_free_lock);
++ fdesc->next = tx->free_head;
++ tx->free_head = fhead;
++ tx->num_free += num;
++ BUG_ON(tx->num_free > vr->num);
++ spin_unlock(&in->tx_free_lock);
++ }
++}
++
++static struct vring_desc *ivshm_net_rx_desc(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++ struct ivshm_net_queue *rx = &in->rx;
++ struct vring *vr = &rx->vr;
++ unsigned int avail;
++ u16 avail_idx;
++
++ avail_idx = virt_load_acquire(&vr->avail->idx);
++
++ if (avail_idx == rx->last_avail_idx)
++ return NULL;
++
++ avail = vr->avail->ring[rx->last_avail_idx++ & (vr->num - 1)];
++ if (avail >= vr->num) {
++ netdev_err(ndev, "invalid rx avail %d\n", avail);
++ return NULL;
++ }
++
++ return &vr->desc[avail];
++}
++
++static void ivshm_net_rx_finish(struct ivshm_net *in, struct vring_desc *desc)
++{
++ struct ivshm_net_queue *rx = &in->rx;
++ struct vring *vr = &rx->vr;
++ unsigned int desc_id = desc - vr->desc;
++ unsigned int used;
++
++ used = rx->last_used_idx++ & (vr->num - 1);
++ vr->used->ring[used].id = desc_id;
++
++ virt_store_release(&vr->used->idx, rx->last_used_idx);
++}
++
++static int ivshm_net_poll(struct napi_struct *napi, int budget)
++{
++ struct net_device *ndev = napi->dev;
++ struct ivshm_net *in = container_of(napi, struct ivshm_net, napi);
++ int received = 0;
++
++ in->stats.napi_poll++;
++
++ ivshm_net_tx_clean(ndev);
++
++ while (received < budget) {
++ struct vring_desc *desc;
++ struct sk_buff *skb;
++ void *data;
++ u32 len;
++
++ desc = ivshm_net_rx_desc(ndev);
++ if (!desc)
++ break;
++
++ data = ivshm_net_desc_data(in, &in->rx, desc, &len);
++ if (!data) {
++ netdev_err(ndev, "bad rx descriptor\n");
++ break;
++ }
++
++ skb = napi_alloc_skb(napi, len);
++
++ if (skb) {
++ memcpy(skb_put(skb, len), data, len);
++ skb->protocol = eth_type_trans(skb, ndev);
++ napi_gro_receive(napi, skb);
++ }
++
++ ndev->stats.rx_packets++;
++ ndev->stats.rx_bytes += len;
++
++ ivshm_net_rx_finish(in, desc);
++ received++;
++ }
++
++ if (received < budget) {
++ in->stats.napi_complete++;
++ napi_complete_done(napi, received);
++ ivshm_net_enable_rx_irq(in);
++ if (ivshm_net_rx_avail(in))
++ napi_schedule(napi);
++ }
++
++ if (received)
++ ivshm_net_notify_rx(in, received);
++
++ in->stats.rx_packets += received;
++ in->stats.napi_poll_n[received ? 1 + min(ilog2(received), 8) : 0]++;
++
++ if (ivshm_net_tx_ok(in, ndev->mtu))
++ netif_wake_queue(ndev);
++
++ return received;
++}
++
++static netdev_tx_t ivshm_net_xmit(struct sk_buff *skb, struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++
++ ivshm_net_tx_clean(ndev);
++
++ if (!ivshm_net_tx_ok(in, ndev->mtu)) {
++ ivshm_net_enable_tx_irq(in);
++ netif_stop_queue(ndev);
++ skb->xmit_more = 0;
++ in->stats.tx_pause++;
++ }
++
++ ivshm_net_tx_frame(ndev, skb);
++
++ in->stats.tx_packets++;
++ ndev->stats.tx_packets++;
++ ndev->stats.tx_bytes += skb->len;
++
++ dev_consume_skb_any(skb);
++
++ return NETDEV_TX_OK;
++}
++
++static void ivshm_net_set_state(struct ivshm_net *in, u32 state)
++{
++ virt_wmb();
++ WRITE_ONCE(in->lstate, state);
++ writel(state, &in->ivshm_regs->lstate);
++}
++
++static void ivshm_net_run(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++
++ netif_start_queue(ndev);
++ napi_enable(&in->napi);
++ napi_schedule(&in->napi);
++ ivshm_net_set_state(in, IVSHM_NET_STATE_RUN);
++}
++
++static void ivshm_net_state_change(struct work_struct *work)
++{
++ struct ivshm_net *in = container_of(work, struct ivshm_net, state_work);
++ struct net_device *ndev = in->napi.dev;
++ u32 rstate = readl(&in->ivshm_regs->rstate);
++
++
++ switch (in->lstate) {
++ case IVSHM_NET_STATE_RESET:
++ if (rstate < IVSHM_NET_STATE_READY)
++ ivshm_net_set_state(in, IVSHM_NET_STATE_INIT);
++ break;
++
++ case IVSHM_NET_STATE_INIT:
++ if (rstate > IVSHM_NET_STATE_RESET) {
++ ivshm_net_init_queues(ndev);
++ ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
++
++ rtnl_lock();
++ call_netdevice_notifiers(NETDEV_CHANGEADDR, ndev);
++ rtnl_unlock();
++ }
++ break;
++
++ case IVSHM_NET_STATE_READY:
++ if (rstate >= IVSHM_NET_STATE_READY) {
++ netif_carrier_on(ndev);
++ if (ndev->flags & IFF_UP)
++ ivshm_net_run(ndev);
++ } else {
++ netif_carrier_off(ndev);
++ ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
++ }
++ break;
++
++ case IVSHM_NET_STATE_RUN:
++ if (rstate < IVSHM_NET_STATE_READY) {
++ netif_stop_queue(ndev);
++ napi_disable(&in->napi);
++ netif_carrier_off(ndev);
++ ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
++ }
++ break;
++ }
++
++ virt_wmb();
++ WRITE_ONCE(in->rstate, rstate);
++}
++
++static bool ivshm_net_check_state(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++ u32 rstate = readl(&in->ivshm_regs->rstate);
++
++ if (rstate != READ_ONCE(in->rstate) ||
++ in->lstate != IVSHM_NET_STATE_RUN) {
++ queue_work(in->state_wq, &in->state_work);
++ return false;
++ }
++
++ return true;
++}
++
++static irqreturn_t ivshm_net_int(int irq, void *data)
++{
++ struct net_device *ndev = data;
++ struct ivshm_net *in = netdev_priv(ndev);
++
++ in->stats.interrupts++;
++
++ ivshm_net_check_state(ndev);
++ napi_schedule_irqoff(&in->napi);
++
++ return IRQ_HANDLED;
++}
++
++static int ivshm_net_open(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++
++ netdev_reset_queue(ndev);
++ ndev->operstate = IF_OPER_UP;
++
++ if (in->lstate == IVSHM_NET_STATE_READY)
++ ivshm_net_run(ndev);
++
++ return 0;
++}
++
++static int ivshm_net_stop(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++
++ ndev->operstate = IF_OPER_DOWN;
++
++ if (in->lstate == IVSHM_NET_STATE_RUN) {
++ napi_disable(&in->napi);
++ netif_stop_queue(ndev);
++ ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
++ }
++
++ return 0;
++}
++
++static int ivshm_net_change_mtu(struct net_device *ndev, int mtu)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++ struct ivshm_net_queue *tx = &in->tx;
++
++ if (mtu < IVSHM_NET_MTU_MIN || mtu > IVSHM_NET_MTU_MAX)
++ return -EINVAL;
++
++ if (in->tx.size / mtu < 4)
++ return -EINVAL;
++
++ if (ivshm_net_tx_space(in) < 2 * IVSHM_NET_FRAME_SIZE(mtu))
++ return -EBUSY;
++
++ if (in->tx.size - tx->head < IVSHM_NET_FRAME_SIZE(mtu) &&
++ tx->head < tx->tail)
++ return -EBUSY;
++
++ netif_tx_lock_bh(ndev);
++ if (in->tx.size - tx->head < IVSHM_NET_FRAME_SIZE(mtu))
++ tx->head = 0;
++ netif_tx_unlock_bh(ndev);
++
++ ndev->mtu = mtu;
++
++ return 0;
++}
++
++#ifdef CONFIG_NET_POLL_CONTROLLER
++static void ivshm_net_poll_controller(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++
++ napi_schedule(&in->napi);
++}
++#endif
++
++static const struct net_device_ops ivshm_net_ops = {
++ .ndo_open = ivshm_net_open,
++ .ndo_stop = ivshm_net_stop,
++ .ndo_start_xmit = ivshm_net_xmit,
++ .ndo_change_mtu = ivshm_net_change_mtu,
++#ifdef CONFIG_NET_POLL_CONTROLLER
++ .ndo_poll_controller = ivshm_net_poll_controller,
++#endif
++};
++
++static const char ivshm_net_stats[][ETH_GSTRING_LEN] = {
++ "interrupts",
++ "tx_packets",
++ "tx_notify",
++ "tx_pause",
++ "rx_packets",
++ "rx_notify",
++ "napi_poll",
++ "napi_complete",
++ "napi_poll_0",
++ "napi_poll_1",
++ "napi_poll_2",
++ "napi_poll_4",
++ "napi_poll_8",
++ "napi_poll_16",
++ "napi_poll_32",
++ "napi_poll_64",
++ "napi_poll_128",
++ "napi_poll_256",
++};
++
++#define NUM_STATS ARRAY_SIZE(ivshm_net_stats)
++
++static int ivshm_net_get_sset_count(struct net_device *ndev, int sset)
++{
++ if (sset == ETH_SS_STATS)
++ return NUM_STATS;
++
++ return -EOPNOTSUPP;
++}
++
++static void ivshm_net_get_strings(struct net_device *ndev, u32 sset, u8 *buf)
++{
++ if (sset == ETH_SS_STATS)
++ memcpy(buf, &ivshm_net_stats, sizeof(ivshm_net_stats));
++}
++
++static void ivshm_net_get_ethtool_stats(struct net_device *ndev,
++ struct ethtool_stats *estats, u64 *st)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++ unsigned int n = 0;
++ unsigned int i;
++
++ st[n++] = in->stats.interrupts;
++ st[n++] = in->stats.tx_packets;
++ st[n++] = in->stats.tx_notify;
++ st[n++] = in->stats.tx_pause;
++ st[n++] = in->stats.rx_packets;
++ st[n++] = in->stats.rx_notify;
++ st[n++] = in->stats.napi_poll;
++ st[n++] = in->stats.napi_complete;
++
++ for (i = 0; i < ARRAY_SIZE(in->stats.napi_poll_n); i++)
++ st[n++] = in->stats.napi_poll_n[i];
++
++ memset(&in->stats, 0, sizeof(in->stats));
++}
++
++static const struct ethtool_ops ivshm_net_ethtool_ops = {
++ .get_sset_count = ivshm_net_get_sset_count,
++ .get_strings = ivshm_net_get_strings,
++ .get_ethtool_stats = ivshm_net_get_ethtool_stats,
++};
++
++static int ivshm_net_probe(struct pci_dev *pdev,
++ const struct pci_device_id *id)
++{
++ struct net_device *ndev;
++ struct ivshm_net *in;
++ struct ivshmem_regs __iomem *regs;
++ resource_size_t shmaddr;
++ resource_size_t shmlen;
++ int interrupt;
++ void *shm;
++ u32 ivpos;
++ int err;
++
++ err = pcim_enable_device(pdev);
++ if (err) {
++ dev_err(&pdev->dev, "pci_enable_device: %d\n", err);
++ return err;
++ }
++
++ err = pcim_iomap_regions(pdev, BIT(0), DRV_NAME);
++ if (err) {
++ dev_err(&pdev->dev, "pcim_iomap_regions: %d\n", err);
++ return err;
++ }
++
++ regs = pcim_iomap_table(pdev)[0];
++
++ shmlen = pci_resource_len(pdev, 2);
++
++ if (shmlen) {
++ shmaddr = pci_resource_start(pdev, 2);
++ } else {
++ union { u64 v; u32 hl[2]; } val;
++
++ pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR,
++ &val.hl[0]);
++ pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR + 4,
++ &val.hl[1]);
++ shmaddr = val.v;
++
++ pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ,
++ &val.hl[0]);
++ pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ + 4,
++ &val.hl[1]);
++ shmlen = val.v;
++ }
++
++
++ if (!devm_request_mem_region(&pdev->dev, shmaddr, shmlen, DRV_NAME))
++ return -EBUSY;
++
++ shm = devm_memremap(&pdev->dev, shmaddr, shmlen, MEMREMAP_WC);
++ if (!shm)
++ return -ENOMEM;
++
++ ivpos = readl(&regs->ivpos);
++ if (ivpos > 1) {
++ dev_err(&pdev->dev, "invalid IVPosition %d\n", ivpos);
++ return -EINVAL;
++ }
++
++ dev_info(&pdev->dev, "shared memory size %pa\n", &shmlen);
++
++ ndev = alloc_etherdev(sizeof(*in));
++ if (!ndev)
++ return -ENOMEM;
++
++ pci_set_drvdata(pdev, ndev);
++ SET_NETDEV_DEV(ndev, &pdev->dev);
++
++ in = netdev_priv(ndev);
++ in->ivshm_regs = regs;
++ in->shm = shm;
++ in->shmaddr = shmaddr;
++ in->shmlen = shmlen;
++ in->peer_id = !ivpos;
++ in->pdev = pdev;
++ spin_lock_init(&in->tx_free_lock);
++ spin_lock_init(&in->tx_clean_lock);
++
++ err = ivshm_net_calc_qsize(ndev);
++ if (err)
++ goto err_free;
++
++ in->state_wq = alloc_ordered_workqueue(DRV_NAME, 0);
++ if (!in->state_wq)
++ goto err_free;
++
++ INIT_WORK(&in->state_work, ivshm_net_state_change);
++
++ eth_random_addr(ndev->dev_addr);
++ ndev->netdev_ops = &ivshm_net_ops;
++ ndev->ethtool_ops = &ivshm_net_ethtool_ops;
++ ndev->mtu = min_t(u32, IVSHM_NET_MTU_DEF, in->qsize / 16);
++ ndev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG;
++ ndev->features = ndev->hw_features;
++
++ netif_carrier_off(ndev);
++ netif_napi_add(ndev, &in->napi, ivshm_net_poll, NAPI_POLL_WEIGHT);
++
++ err = register_netdev(ndev);
++ if (err)
++ goto err_wq;
++
++ err = pci_enable_msix(pdev, &in->msix, 1);
++ if (!err) {
++ interrupt = in->msix.vector;
++ in->using_msix = true;
++ } else {
++ interrupt = pdev->irq;
++ in->using_msix = false;
++ }
++
++ err = request_irq(interrupt, ivshm_net_int, 0, DRV_NAME, ndev);
++ if (err)
++ goto err_int;
++
++ pci_set_master(pdev);
++
++ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
++
++ return 0;
++
++err_int:
++ if (in->using_msix)
++ pci_disable_msix(pdev);
++ unregister_netdev(ndev);
++err_wq:
++ destroy_workqueue(in->state_wq);
++err_free:
++ free_netdev(ndev);
++
++ return err;
++}
++
++static void ivshm_net_remove(struct pci_dev *pdev)
++{
++ struct net_device *ndev = pci_get_drvdata(pdev);
++ struct ivshm_net *in = netdev_priv(ndev);
++
++ if (in->using_msix) {
++ free_irq(in->msix.vector, ndev);
++ pci_disable_msix(pdev);
++ } else {
++ free_irq(pdev->irq, ndev);
++ }
++
++ unregister_netdev(ndev);
++ cancel_work_sync(&in->state_work);
++ destroy_workqueue(in->state_wq);
++ free_netdev(ndev);
++}
++
++static const struct pci_device_id ivshm_net_id_table[] = {
++ { PCI_DEVICE(PCI_VENDOR_ID_REDHAT_QUMRANET, 0x1110),
++ (PCI_CLASS_OTHERS << 16) | (0x01 << 8), 0xffff00 },
++ { 0 }
++};
++MODULE_DEVICE_TABLE(pci, ivshm_net_id_table);
++
++static struct pci_driver ivshm_net_driver = {
++ .name = DRV_NAME,
++ .id_table = ivshm_net_id_table,
++ .probe = ivshm_net_probe,
++ .remove = ivshm_net_remove,
++};
++module_pci_driver(ivshm_net_driver);
++
++MODULE_AUTHOR("Mans Rullgard <mans@mansr.com>");
++MODULE_LICENSE("GPL");
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0014-ivshmem-net-Map-shmem-region-as-RAM.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0014-ivshmem-net-Map-shmem-region-as-RAM.patch
new file mode 100644
index 00000000..de66d7a7
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0014-ivshmem-net-Map-shmem-region-as-RAM.patch
@@ -0,0 +1,30 @@
+From b70f2ecb71b212225f403a8f26d3d5bdca70a107 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Thu, 24 Nov 2016 08:27:45 +0100
+Subject: [PATCH 14/32] ivshmem-net: Map shmem region as RAM
+
+No need for special caching, simply map the shared memory region like
+RAM, thus write-back. This gives us another order of magnitude in
+throughput.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index b676bed2cc2e..a535cb71adde 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -802,7 +802,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ if (!devm_request_mem_region(&pdev->dev, shmaddr, shmlen, DRV_NAME))
+ return -EBUSY;
+
+- shm = devm_memremap(&pdev->dev, shmaddr, shmlen, MEMREMAP_WC);
++ shm = devm_memremap(&pdev->dev, shmaddr, shmlen, MEMREMAP_WB);
+ if (!shm)
+ return -ENOMEM;
+
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0015-ivshmem-net-fix-race-in-state-machine.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0015-ivshmem-net-fix-race-in-state-machine.patch
new file mode 100644
index 00000000..ecb5c485
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0015-ivshmem-net-fix-race-in-state-machine.patch
@@ -0,0 +1,140 @@
+From 1349a457e5e33580fb26afab087e6b932b1a4372 Mon Sep 17 00:00:00 2001
+From: Mans Rullgard <mans@mansr.com>
+Date: Thu, 24 Nov 2016 18:46:41 +0000
+Subject: [PATCH 15/32] ivshmem-net: fix race in state machine
+
+---
+ drivers/net/ivshmem-net.c | 60 ++++++++++++++++++++++++-----------------------
+ 1 file changed, 31 insertions(+), 29 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index a535cb71adde..acd00e47acd7 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -36,6 +36,8 @@
+ #define IVSHM_NET_STATE_READY 2
+ #define IVSHM_NET_STATE_RUN 3
+
++#define IVSHM_NET_FLAG_RUN 0
++
+ #define IVSHM_NET_MTU_MIN 256
+ #define IVSHM_NET_MTU_MAX 65535
+ #define IVSHM_NET_MTU_DEF 16384
+@@ -96,6 +98,8 @@ struct ivshm_net {
+ u32 lstate;
+ u32 rstate;
+
++ unsigned long flags;
++
+ struct workqueue_struct *state_wq;
+ struct work_struct state_work;
+
+@@ -529,12 +533,32 @@ static void ivshm_net_run(struct net_device *ndev)
+ {
+ struct ivshm_net *in = netdev_priv(ndev);
+
++ if (in->lstate < IVSHM_NET_STATE_READY)
++ return;
++
++ if (!netif_running(ndev))
++ return;
++
++ if (test_and_set_bit(IVSHM_NET_FLAG_RUN, &in->flags))
++ return;
++
+ netif_start_queue(ndev);
+ napi_enable(&in->napi);
+ napi_schedule(&in->napi);
+ ivshm_net_set_state(in, IVSHM_NET_STATE_RUN);
+ }
+
++static void ivshm_net_do_stop(struct net_device *ndev)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++
++ if (!test_and_clear_bit(IVSHM_NET_FLAG_RUN, &in->flags))
++ return;
++
++ netif_stop_queue(ndev);
++ napi_disable(&in->napi);
++}
++
+ static void ivshm_net_state_change(struct work_struct *work)
+ {
+ struct ivshm_net *in = container_of(work, struct ivshm_net, state_work);
+@@ -560,21 +584,13 @@ static void ivshm_net_state_change(struct work_struct *work)
+ break;
+
+ case IVSHM_NET_STATE_READY:
++ case IVSHM_NET_STATE_RUN:
+ if (rstate >= IVSHM_NET_STATE_READY) {
+ netif_carrier_on(ndev);
+- if (ndev->flags & IFF_UP)
+- ivshm_net_run(ndev);
++ ivshm_net_run(ndev);
+ } else {
+ netif_carrier_off(ndev);
+- ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
+- }
+- break;
+-
+- case IVSHM_NET_STATE_RUN:
+- if (rstate < IVSHM_NET_STATE_READY) {
+- netif_stop_queue(ndev);
+- napi_disable(&in->napi);
+- netif_carrier_off(ndev);
++ ivshm_net_do_stop(ndev);
+ ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
+ }
+ break;
+@@ -584,18 +600,13 @@ static void ivshm_net_state_change(struct work_struct *work)
+ WRITE_ONCE(in->rstate, rstate);
+ }
+
+-static bool ivshm_net_check_state(struct net_device *ndev)
++static void ivshm_net_check_state(struct net_device *ndev)
+ {
+ struct ivshm_net *in = netdev_priv(ndev);
+ u32 rstate = readl(&in->ivshm_regs->rstate);
+
+- if (rstate != READ_ONCE(in->rstate) ||
+- in->lstate != IVSHM_NET_STATE_RUN) {
++ if (rstate != in->rstate || !test_bit(IVSHM_NET_FLAG_RUN, &in->flags))
+ queue_work(in->state_wq, &in->state_work);
+- return false;
+- }
+-
+- return true;
+ }
+
+ static irqreturn_t ivshm_net_int(int irq, void *data)
+@@ -617,24 +628,15 @@ static int ivshm_net_open(struct net_device *ndev)
+
+ netdev_reset_queue(ndev);
+ ndev->operstate = IF_OPER_UP;
+-
+- if (in->lstate == IVSHM_NET_STATE_READY)
+- ivshm_net_run(ndev);
++ ivshm_net_run(ndev);
+
+ return 0;
+ }
+
+ static int ivshm_net_stop(struct net_device *ndev)
+ {
+- struct ivshm_net *in = netdev_priv(ndev);
+-
+ ndev->operstate = IF_OPER_DOWN;
+-
+- if (in->lstate == IVSHM_NET_STATE_RUN) {
+- napi_disable(&in->napi);
+- netif_stop_queue(ndev);
+- ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
+- }
++ ivshm_net_do_stop(ndev);
+
+ return 0;
+ }
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0016-ivshmem-net-Remove-unused-variable.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0016-ivshmem-net-Remove-unused-variable.patch
new file mode 100644
index 00000000..dfaca493
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0016-ivshmem-net-Remove-unused-variable.patch
@@ -0,0 +1,28 @@
+From 85362cf2e682d196fc3a88d05e21f0603cb0c48a Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Fri, 25 Nov 2016 17:31:51 +0100
+Subject: [PATCH 16/32] ivshmem-net: Remove unused variable
+
+Became unused by previous change.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index acd00e47acd7..ccef65d0f038 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -624,8 +624,6 @@ static irqreturn_t ivshm_net_int(int irq, void *data)
+
+ static int ivshm_net_open(struct net_device *ndev)
+ {
+- struct ivshm_net *in = netdev_priv(ndev);
+-
+ netdev_reset_queue(ndev);
+ ndev->operstate = IF_OPER_UP;
+ ivshm_net_run(ndev);
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0017-ivshmem-net-Enable-INTx.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0017-ivshmem-net-Enable-INTx.patch
new file mode 100644
index 00000000..e0f4be44
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0017-ivshmem-net-Enable-INTx.patch
@@ -0,0 +1,55 @@
+From 9683ab979a373932e9c332d2db8115b6c23303d0 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 27 Nov 2016 15:15:51 +0100
+Subject: [PATCH 17/32] ivshmem-net: Enable INTx
+
+Activate INTx notification when it has to be used instead of MSI-X,
+disable it after use.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index ccef65d0f038..591d04195e57 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -31,6 +31,8 @@
+ #define JAILHOUSE_CFG_SHMEM_PTR 0x40
+ #define JAILHOUSE_CFG_SHMEM_SZ 0x48
+
++#define IVSHMEM_INTX_ENABLE 0x1
++
+ #define IVSHM_NET_STATE_RESET 0
+ #define IVSHM_NET_STATE_INIT 1
+ #define IVSHM_NET_STATE_READY 2
+@@ -47,7 +49,7 @@
+ #define IVSHM_NET_VQ_ALIGN 64
+
+ struct ivshmem_regs {
+- u32 imask;
++ u32 intxctrl;
+ u32 istat;
+ u32 ivpos;
+ u32 doorbell;
+@@ -869,6 +871,8 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ goto err_int;
+
+ pci_set_master(pdev);
++ if (!in->using_msix)
++ writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
+
+ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
+
+@@ -895,6 +899,7 @@ static void ivshm_net_remove(struct pci_dev *pdev)
+ free_irq(in->msix.vector, ndev);
+ pci_disable_msix(pdev);
+ } else {
++ writel(0, &in->ivshm_regs->intxctrl);
+ free_irq(pdev->irq, ndev);
+ }
+
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0018-ivshmem-net-Improve-identification-of-resources.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0018-ivshmem-net-Improve-identification-of-resources.patch
new file mode 100644
index 00000000..e51b94aa
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0018-ivshmem-net-Improve-identification-of-resources.patch
@@ -0,0 +1,59 @@
+From d60c7b69f68961c6868ca870d645ed7d4f73e751 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Wed, 21 Dec 2016 08:20:18 +0100
+Subject: [PATCH 18/32] ivshmem-net: Improve identification of resources
+
+Pass a device name consisting of driver name and PCI ID to request_irq
+and alloc_ordered_workqueue. This helps correlating resources with
+devices in case there are multiple of them.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 591d04195e57..cff6aa0be71d 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -762,6 +762,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ resource_size_t shmaddr;
+ resource_size_t shmlen;
+ int interrupt;
++ char *device_name;
+ void *shm;
+ u32 ivpos;
+ int err;
+@@ -814,7 +815,10 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ return -EINVAL;
+ }
+
+- dev_info(&pdev->dev, "shared memory size %pa\n", &shmlen);
++ device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s[%s]", DRV_NAME,
++ dev_name(&pdev->dev));
++ if (!device_name)
++ return -ENOMEM;
+
+ ndev = alloc_etherdev(sizeof(*in));
+ if (!ndev)
+@@ -837,7 +841,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ if (err)
+ goto err_free;
+
+- in->state_wq = alloc_ordered_workqueue(DRV_NAME, 0);
++ in->state_wq = alloc_ordered_workqueue(device_name, 0);
+ if (!in->state_wq)
+ goto err_free;
+
+@@ -866,7 +870,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ in->using_msix = false;
+ }
+
+- err = request_irq(interrupt, ivshm_net_int, 0, DRV_NAME, ndev);
++ err = request_irq(interrupt, ivshm_net_int, 0, device_name, ndev);
+ if (err)
+ goto err_int;
+
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch
new file mode 100644
index 00000000..512bcaf2
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch
@@ -0,0 +1,47 @@
+From a16c80c305b2e11fe3efd0905bbe7db8388bf545 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 1 Jan 2017 15:43:37 +0100
+Subject: [PATCH 19/32] ivshmem-net: Switch to reset state on each net stop and
+ on driver removal
+
+Improves the state signaling to the remote side after ifconfig down and
+driver removal.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index cff6aa0be71d..09484d652add 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -554,6 +554,8 @@ static void ivshm_net_do_stop(struct net_device *ndev)
+ {
+ struct ivshm_net *in = netdev_priv(ndev);
+
++ ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
++
+ if (!test_and_clear_bit(IVSHM_NET_FLAG_RUN, &in->flags))
+ return;
+
+@@ -593,7 +595,6 @@ static void ivshm_net_state_change(struct work_struct *work)
+ } else {
+ netif_carrier_off(ndev);
+ ivshm_net_do_stop(ndev);
+- ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
+ }
+ break;
+ }
+@@ -899,6 +900,8 @@ static void ivshm_net_remove(struct pci_dev *pdev)
+ struct net_device *ndev = pci_get_drvdata(pdev);
+ struct ivshm_net *in = netdev_priv(ndev);
+
++ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
++
+ if (in->using_msix) {
+ free_irq(in->msix.vector, ndev);
+ pci_disable_msix(pdev);
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch
new file mode 100644
index 00000000..d0a562a7
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch
@@ -0,0 +1,61 @@
+From 98f68e69e2e950b44e7324bbcc94700705193443 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 1 Jan 2017 15:46:26 +0100
+Subject: [PATCH 20/32] ivshmem-net: Add ethtool register dump
+
+Helps debugging inconsistent states.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 31 +++++++++++++++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 09484d652add..c52727ef40c1 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -748,10 +748,41 @@ static void ivshm_net_get_ethtool_stats(struct net_device *ndev,
+ memset(&in->stats, 0, sizeof(in->stats));
+ }
+
++#define IVSHM_NET_REGS_LEN (3 * sizeof(u32) + 6 * sizeof(u16))
++
++static int ivshm_net_get_regs_len(struct net_device *ndev)
++{
++ return IVSHM_NET_REGS_LEN;
++}
++
++static void ivshm_net_get_regs(struct net_device *ndev,
++ struct ethtool_regs *regs, void *p)
++{
++ struct ivshm_net *in = netdev_priv(ndev);
++ u32 *reg32 = p;
++ u16 *reg16;
++
++ *reg32++ = in->lstate;
++ *reg32++ = in->rstate;
++ *reg32++ = in->qlen;
++
++ reg16 = (u16 *)reg32;
++
++ *reg16++ = in->tx.vr.avail ? in->tx.vr.avail->idx : 0;
++ *reg16++ = in->tx.vr.used ? in->tx.vr.used->idx : 0;
++ *reg16++ = in->tx.vr.avail ? vring_avail_event(&in->tx.vr) : 0;
++
++ *reg16++ = in->rx.vr.avail ? in->rx.vr.avail->idx : 0;
++ *reg16++ = in->rx.vr.used ? in->rx.vr.used->idx : 0;
++ *reg16++ = in->rx.vr.avail ? vring_avail_event(&in->rx.vr) : 0;
++}
++
+ static const struct ethtool_ops ivshm_net_ethtool_ops = {
+ .get_sset_count = ivshm_net_get_sset_count,
+ .get_strings = ivshm_net_get_strings,
+ .get_ethtool_stats = ivshm_net_get_ethtool_stats,
++ .get_regs_len = ivshm_net_get_regs_len,
++ .get_regs = ivshm_net_get_regs,
+ };
+
+ static int ivshm_net_probe(struct pci_dev *pdev,
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch
new file mode 100644
index 00000000..4e40341e
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch
@@ -0,0 +1,30 @@
+From b8d8821cfa8aa53aa29c0b230330afcd79ee7f60 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 1 Jan 2017 15:54:55 +0100
+Subject: [PATCH 21/32] ivshmem-net: Fix stuck state machine during setup
+
+If the remote side is already in INIT state (or even higher) and has a
+cached rstate of RESET, we won't make progress when signaling RESET
+again because the remote side won't send a state update. Fix this by
+enforcing a local check after probe completion.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index c52727ef40c1..9f307ec4d677 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -911,6 +911,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
+
+ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
++ ivshm_net_check_state(ndev);
+
+ return 0;
+
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch
new file mode 100644
index 00000000..aca00e26
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch
@@ -0,0 +1,49 @@
+From d1a0011e9857e105e38d9a0ea6fd7b8e7e6d8dc9 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Tue, 3 Jan 2017 08:50:01 +0100
+Subject: [PATCH 22/32] ivshmem-net: Switch to relative descriptor addresses
+
+Make sure that we do not depend on identity-mapped shared memory
+regions.
+
+This also fixes an off-by-one in the range check of ivshm_net_desc_data.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 9f307ec4d677..0e770ca293a4 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -123,14 +123,14 @@ static void *ivshm_net_desc_data(struct ivshm_net *in,
+ struct vring_desc *desc,
+ u32 *len)
+ {
+- u64 addr = READ_ONCE(desc->addr);
++ u64 offs = READ_ONCE(desc->addr);
+ u32 dlen = READ_ONCE(desc->len);
+ void *data;
+
+- if (addr < in->shmaddr || desc->addr > in->shmaddr + in->shmlen)
++ if (offs >= in->shmlen)
+ return NULL;
+
+- data = in->shm + (addr - in->shmaddr);
++ data = in->shm + offs;
+
+ if (data < q->data || data >= q->end)
+ return NULL;
+@@ -317,7 +317,7 @@ static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
+ buf = tx->data + head;
+ skb_copy_and_csum_dev(skb, buf);
+
+- desc->addr = in->shmaddr + (buf - in->shm);
++ desc->addr = buf - in->shm;
+ desc->len = skb->len;
+
+ avail = tx->last_avail_idx++ & (vr->num - 1);
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch
new file mode 100644
index 00000000..fcc2cac3
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch
@@ -0,0 +1,146 @@
+From 77920ddb91fa49f7085875d29dd2a2c7e783af3a Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Tue, 23 May 2017 17:41:00 +0200
+Subject: [PATCH 23/32] ivshmem-net: Switch to pci_alloc_irq_vectors
+
+Required by 4.12, and it also simplifies our code. Needs to be folded
+into the initial patch eventually.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 66 ++++++++++++++++++++---------------------------
+ 1 file changed, 28 insertions(+), 38 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 0e770ca293a4..fd7d78b84576 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -114,8 +114,6 @@ struct ivshm_net {
+ u32 peer_id;
+
+ struct pci_dev *pdev;
+- struct msix_entry msix;
+- bool using_msix;
+ };
+
+ static void *ivshm_net_desc_data(struct ivshm_net *in,
+@@ -793,22 +791,21 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ struct ivshmem_regs __iomem *regs;
+ resource_size_t shmaddr;
+ resource_size_t shmlen;
+- int interrupt;
+ char *device_name;
+ void *shm;
+ u32 ivpos;
+- int err;
++ int ret;
+
+- err = pcim_enable_device(pdev);
+- if (err) {
+- dev_err(&pdev->dev, "pci_enable_device: %d\n", err);
+- return err;
++ ret = pcim_enable_device(pdev);
++ if (ret) {
++ dev_err(&pdev->dev, "pci_enable_device: %d\n", ret);
++ return ret;
+ }
+
+- err = pcim_iomap_regions(pdev, BIT(0), DRV_NAME);
+- if (err) {
+- dev_err(&pdev->dev, "pcim_iomap_regions: %d\n", err);
+- return err;
++ ret = pcim_iomap_regions(pdev, BIT(0), DRV_NAME);
++ if (ret) {
++ dev_err(&pdev->dev, "pcim_iomap_regions: %d\n", ret);
++ return ret;
+ }
+
+ regs = pcim_iomap_table(pdev)[0];
+@@ -869,8 +866,8 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ spin_lock_init(&in->tx_free_lock);
+ spin_lock_init(&in->tx_clean_lock);
+
+- err = ivshm_net_calc_qsize(ndev);
+- if (err)
++ ret = ivshm_net_calc_qsize(ndev);
++ if (ret)
+ goto err_free;
+
+ in->state_wq = alloc_ordered_workqueue(device_name, 0);
+@@ -889,25 +886,21 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ netif_carrier_off(ndev);
+ netif_napi_add(ndev, &in->napi, ivshm_net_poll, NAPI_POLL_WEIGHT);
+
+- err = register_netdev(ndev);
+- if (err)
++ ret = register_netdev(ndev);
++ if (ret)
+ goto err_wq;
+
+- err = pci_enable_msix(pdev, &in->msix, 1);
+- if (!err) {
+- interrupt = in->msix.vector;
+- in->using_msix = true;
+- } else {
+- interrupt = pdev->irq;
+- in->using_msix = false;
+- }
++ ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_LEGACY | PCI_IRQ_MSIX);
++ if (ret < 0)
++ goto err_alloc_irq;
+
+- err = request_irq(interrupt, ivshm_net_int, 0, device_name, ndev);
+- if (err)
+- goto err_int;
++ ret = request_irq(pci_irq_vector(pdev, 0), ivshm_net_int, 0,
++ device_name, ndev);
++ if (ret)
++ goto err_request_irq;
+
+ pci_set_master(pdev);
+- if (!in->using_msix)
++ if (!pdev->msix_enabled)
+ writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
+
+ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
+@@ -915,16 +908,16 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+
+ return 0;
+
+-err_int:
+- if (in->using_msix)
+- pci_disable_msix(pdev);
++err_request_irq:
++ pci_free_irq_vectors(pdev);
++err_alloc_irq:
+ unregister_netdev(ndev);
+ err_wq:
+ destroy_workqueue(in->state_wq);
+ err_free:
+ free_netdev(ndev);
+
+- return err;
++ return ret;
+ }
+
+ static void ivshm_net_remove(struct pci_dev *pdev)
+@@ -934,13 +927,10 @@ static void ivshm_net_remove(struct pci_dev *pdev)
+
+ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
+
+- if (in->using_msix) {
+- free_irq(in->msix.vector, ndev);
+- pci_disable_msix(pdev);
+- } else {
++ if (!pdev->msix_enabled)
+ writel(0, &in->ivshm_regs->intxctrl);
+- free_irq(pdev->irq, ndev);
+- }
++ free_irq(pci_irq_vector(pdev, 0), ndev);
++ pci_free_irq_vectors(pdev);
+
+ unregister_netdev(ndev);
+ cancel_work_sync(&in->state_work);
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch
new file mode 100644
index 00000000..7620d682
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch
@@ -0,0 +1,70 @@
+From be71104c3d4d682f88a4e56e408683b2e8edaef5 Mon Sep 17 00:00:00 2001
+From: Henning Schild <henning.schild@siemens.com>
+Date: Mon, 18 Sep 2017 18:02:08 +0200
+Subject: [PATCH 24/32] ivshmem-net: fill in and check used descriptor chain
+ len
+
+We are using chains of len==1 make that explicit and expect that from
+the remote.
+
+Signed-off-by: Henning Schild <henning.schild@siemens.com>
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index fd7d78b84576..556670e779e7 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -335,10 +335,10 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
+ {
+ struct ivshm_net *in = netdev_priv(ndev);
+ struct ivshm_net_queue *tx = &in->tx;
++ struct vring_used_elem *used;
+ struct vring *vr = &tx->vr;
+ struct vring_desc *desc;
+ struct vring_desc *fdesc;
+- unsigned int used;
+ unsigned int num;
+ u16 used_idx;
+ u16 last;
+@@ -358,13 +358,14 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
+ u32 len;
+ u32 tail;
+
+- used = vr->used->ring[last & (vr->num - 1)].id;
+- if (used >= vr->num) {
+- netdev_err(ndev, "invalid tx used %d\n", used);
++ used = vr->used->ring + (last % vr->num);
++ if (used->id >= vr->num || used->len != 1) {
++ netdev_err(ndev, "invalid tx used->id %d ->len %d\n",
++ used->id, used->len);
+ break;
+ }
+
+- desc = &vr->desc[used];
++ desc = &vr->desc[used->id];
+
+ data = ivshm_net_desc_data(in, &in->tx, desc, &len);
+ if (!data) {
+@@ -383,7 +384,7 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
+ else
+ desc->next = fhead;
+
+- fhead = used;
++ fhead = used->id;
+ last++;
+ num++;
+ }
+@@ -433,6 +434,7 @@ static void ivshm_net_rx_finish(struct ivshm_net *in, struct vring_desc *desc)
+
+ used = rx->last_used_idx++ & (vr->num - 1);
+ vr->used->ring[used].id = desc_id;
++ vr->used->ring[used].len = 1;
+
+ virt_store_release(&vr->used->idx, rx->last_used_idx);
+ }
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0025-ivshmem-net-slightly-improve-debug-output.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0025-ivshmem-net-slightly-improve-debug-output.patch
new file mode 100644
index 00000000..cc20c2fd
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0025-ivshmem-net-slightly-improve-debug-output.patch
@@ -0,0 +1,29 @@
+From 5776a8083d73bd137a74ab33f0f7652a2c6ee83a Mon Sep 17 00:00:00 2001
+From: Henning Schild <henning.schild@siemens.com>
+Date: Mon, 18 Sep 2017 18:02:10 +0200
+Subject: [PATCH 25/32] ivshmem-net: slightly improve debug output
+
+There where two lines with the same error message, change one of them.
+
+Signed-off-by: Henning Schild <henning.schild@siemens.com>
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 556670e779e7..abc50553e644 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -369,7 +369,7 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
+
+ data = ivshm_net_desc_data(in, &in->tx, desc, &len);
+ if (!data) {
+- netdev_err(ndev, "bad tx descriptor\n");
++ netdev_err(ndev, "bad tx descriptor, data == NULL\n");
+ break;
+ }
+
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0026-ivshmem-net-set-and-check-descriptor-flags.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0026-ivshmem-net-set-and-check-descriptor-flags.patch
new file mode 100644
index 00000000..a7d7ab24
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0026-ivshmem-net-set-and-check-descriptor-flags.patch
@@ -0,0 +1,43 @@
+From 6b095510765e054c4ee641f115ab72798d97ac21 Mon Sep 17 00:00:00 2001
+From: Henning Schild <henning.schild@siemens.com>
+Date: Mon, 18 Sep 2017 18:02:11 +0200
+Subject: [PATCH 26/32] ivshmem-net: set and check descriptor flags
+
+We do not support the use of any flags. Make sure the remote does not
+confuse us using flags.
+
+Signed-off-by: Henning Schild <henning.schild@siemens.com>
+[Jan: Remove wrong removal of next field initialization]
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index abc50553e644..9ecf1d0f0d2d 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -123,8 +123,12 @@ static void *ivshm_net_desc_data(struct ivshm_net *in,
+ {
+ u64 offs = READ_ONCE(desc->addr);
+ u32 dlen = READ_ONCE(desc->len);
++ u16 flags = READ_ONCE(desc->flags);
+ void *data;
+
++ if (flags)
++ return NULL;
++
+ if (offs >= in->shmlen)
+ return NULL;
+
+@@ -317,6 +321,7 @@ static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
+
+ desc->addr = buf - in->shm;
+ desc->len = skb->len;
++ desc->flags = 0;
+
+ avail = tx->last_avail_idx++ & (vr->num - 1);
+ vr->avail->ring[avail] = desc_idx;
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0027-ivshmem-net-add-MAC-changing-interface.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0027-ivshmem-net-add-MAC-changing-interface.patch
new file mode 100644
index 00000000..61172afd
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0027-ivshmem-net-add-MAC-changing-interface.patch
@@ -0,0 +1,41 @@
+From 73b98d39ceacd025ae4aaff1b2cbb537e852a03e Mon Sep 17 00:00:00 2001
+From: Henning Schild <henning.schild@siemens.com>
+Date: Wed, 27 Sep 2017 12:59:49 +0200
+Subject: [PATCH 27/32] ivshmem-net: add MAC changing interface
+
+Allow ifconfig, ip and other such tools to change the MAC of the
+virtual NIC.
+
+Signed-off-by: Henning Schild <henning.schild@siemens.com>
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 9ecf1d0f0d2d..712dde0ee6f9 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -685,12 +685,14 @@ static void ivshm_net_poll_controller(struct net_device *ndev)
+ #endif
+
+ static const struct net_device_ops ivshm_net_ops = {
+- .ndo_open = ivshm_net_open,
+- .ndo_stop = ivshm_net_stop,
+- .ndo_start_xmit = ivshm_net_xmit,
+- .ndo_change_mtu = ivshm_net_change_mtu,
++ .ndo_open = ivshm_net_open,
++ .ndo_stop = ivshm_net_stop,
++ .ndo_start_xmit = ivshm_net_xmit,
++ .ndo_change_mtu = ivshm_net_change_mtu,
++ .ndo_set_mac_address = eth_mac_addr,
++ .ndo_validate_addr = eth_validate_addr,
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+- .ndo_poll_controller = ivshm_net_poll_controller,
++ .ndo_poll_controller = ivshm_net_poll_controller,
+ #endif
+ };
+
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0028-ivshmem-net-Silence-compiler-warning.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0028-ivshmem-net-Silence-compiler-warning.patch
new file mode 100644
index 00000000..6a1c212f
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0028-ivshmem-net-Silence-compiler-warning.patch
@@ -0,0 +1,28 @@
+From fbefa0a6dcc6011aef4444c771f300c40fca30f1 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Tue, 3 Oct 2017 12:24:59 +0200
+Subject: [PATCH 28/32] ivshmem-net: Silence compiler warning
+
+At least Linaro's gcc 6.3 does not see the initialization and usage
+dependency of fhead and num. Let's silence this false positive.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 712dde0ee6f9..6fa7a6c81bf1 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -356,6 +356,7 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
+ last = tx->last_used_idx;
+
+ fdesc = NULL;
++ fhead = 0;
+ num = 0;
+
+ while (last != used_idx) {
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch
new file mode 100644
index 00000000..335c6bdb
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch
@@ -0,0 +1,31 @@
+From 1a0998da61deead1dbb38393fedaefee69f59044 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 4 Mar 2018 13:16:04 +0100
+Subject: [PATCH 29/32] ivshmem-net: Fix bogus transition to RESET state
+
+If we are in READY but the remote is still in INIT, we so far fell back
+to RESET which caused the setup to get stuck. Fix this by only
+transitioning from READY/RUN to RESET in ivshm_net_state_change if the
+remote is in RESET as well.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 6fa7a6c81bf1..0c503194b4ec 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -598,7 +598,7 @@ static void ivshm_net_state_change(struct work_struct *work)
+ if (rstate >= IVSHM_NET_STATE_READY) {
+ netif_carrier_on(ndev);
+ ivshm_net_run(ndev);
+- } else {
++ } else if (rstate == IVSHM_NET_STATE_RESET) {
+ netif_carrier_off(ndev);
+ ivshm_net_do_stop(ndev);
+ }
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch
new file mode 100644
index 00000000..42ca05a0
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch
@@ -0,0 +1,68 @@
+From a3ee1ba8e4948ac4e6e4eae3061b72b3bf867122 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 4 Mar 2018 13:50:24 +0100
+Subject: [PATCH 30/32] ivshmem-net: Refactor and comment
+ ivshm_net_state_change
+
+This should make the state transitioning logic clearer. Also avoid the
+harmless but redundant netif_carrier_on/ivshm_net_run in RUN state.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 23 ++++++++++++++++++++---
+ 1 file changed, 20 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 0c503194b4ec..aba77c232c48 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -575,14 +575,21 @@ static void ivshm_net_state_change(struct work_struct *work)
+ struct net_device *ndev = in->napi.dev;
+ u32 rstate = readl(&in->ivshm_regs->rstate);
+
+-
+ switch (in->lstate) {
+ case IVSHM_NET_STATE_RESET:
++ /*
++ * Wait for the remote to leave READY/RUN before transitioning
++ * to INIT.
++ */
+ if (rstate < IVSHM_NET_STATE_READY)
+ ivshm_net_set_state(in, IVSHM_NET_STATE_INIT);
+ break;
+
+ case IVSHM_NET_STATE_INIT:
++ /*
++ * Wait for the remote to leave RESET before performing the
++ * initialization and moving to READY.
++ */
+ if (rstate > IVSHM_NET_STATE_RESET) {
+ ivshm_net_init_queues(ndev);
+ ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
+@@ -594,11 +601,21 @@ static void ivshm_net_state_change(struct work_struct *work)
+ break;
+
+ case IVSHM_NET_STATE_READY:
+- case IVSHM_NET_STATE_RUN:
++ /*
++ * Link is up and we are running once the remote is in READY or
++ * RUN.
++ */
+ if (rstate >= IVSHM_NET_STATE_READY) {
+ netif_carrier_on(ndev);
+ ivshm_net_run(ndev);
+- } else if (rstate == IVSHM_NET_STATE_RESET) {
++ break;
++ }
++ /* fall through */
++ case IVSHM_NET_STATE_RUN:
++ /*
++ * If the remote goes to RESET, we need to follow immediately.
++ */
++ if (rstate == IVSHM_NET_STATE_RESET) {
+ netif_carrier_off(ndev);
+ ivshm_net_do_stop(ndev);
+ }
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch
new file mode 100644
index 00000000..bedbc59f
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch
@@ -0,0 +1,59 @@
+From 6c86f9ef9fa5029b8f87867f47fe51d6cc1960a5 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 2 Jun 2019 11:58:20 +0200
+Subject: [PATCH 31/32] ivshmem-net: Switch to netdev_xmit_more helper
+
+The skb field has been removed by 4f296edeb9d4.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index aba77c232c48..9946cef63c1f 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -294,7 +294,8 @@ static u32 ivshm_net_tx_advance(struct ivshm_net_queue *q, u32 *pos, u32 len)
+ return p;
+ }
+
+-static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
++static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb,
++ bool xmit_more)
+ {
+ struct ivshm_net *in = netdev_priv(ndev);
+ struct ivshm_net_queue *tx = &in->tx;
+@@ -327,7 +328,7 @@ static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
+ vr->avail->ring[avail] = desc_idx;
+ tx->num_added++;
+
+- if (!skb->xmit_more) {
++ if (!xmit_more) {
+ virt_store_release(&vr->avail->idx, tx->last_avail_idx);
+ ivshm_net_notify_tx(in, tx->num_added);
+ tx->num_added = 0;
+@@ -509,17 +510,18 @@ static int ivshm_net_poll(struct napi_struct *napi, int budget)
+ static netdev_tx_t ivshm_net_xmit(struct sk_buff *skb, struct net_device *ndev)
+ {
+ struct ivshm_net *in = netdev_priv(ndev);
++ bool xmit_more = netdev_xmit_more();
+
+ ivshm_net_tx_clean(ndev);
+
+ if (!ivshm_net_tx_ok(in, ndev->mtu)) {
+ ivshm_net_enable_tx_irq(in);
+ netif_stop_queue(ndev);
+- skb->xmit_more = 0;
++ xmit_more = false;
+ in->stats.tx_pause++;
+ }
+
+- ivshm_net_tx_frame(ndev, skb);
++ ivshm_net_tx_frame(ndev, skb, xmit_more);
+
+ in->stats.tx_packets++;
+ ndev->stats.tx_packets++;
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch
new file mode 100644
index 00000000..dc10cd2f
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch
@@ -0,0 +1,650 @@
+From 9caa6a8cab0d7f46475990aaeb7dcc7721547ef0 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Mon, 5 Dec 2016 15:43:53 +0100
+Subject: [PATCH 32/32] ivshmem-net: Adjust to reworked version of ivshmem in
+ Jailhouse
+
+This contains the changes required to work with the new revision of
+ivshmem in Jailhouse, namely:
+
+- changed PCI vendor and device ID
+- vendor capability to communicate region location
+- new MMIO register layout
+- common interrupt control register
+- state table support, removal of rstate register
+- unidirectional shared memory regions
+- vector value has to be written to doorbell register
+- support for multiple vectors, used to split config from tx-rx
+
+Note: Specification work for the interface is ongoing, so details may
+still change.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+---
+ drivers/net/ivshmem-net.c | 335 ++++++++++++++++++++++++++++++----------------
+ 1 file changed, 223 insertions(+), 112 deletions(-)
+
+diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
+index 9946cef63c1f..18d5a15dbec2 100644
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -1,5 +1,6 @@
+ /*
+ * Copyright 2016 Mans Rullgard <mans@mansr.com>
++ * Copyright (c) Siemens AG, 2016-2020
+ *
+ * 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
+@@ -15,6 +16,7 @@
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
++#include <linux/ivshmem.h>
+ #include <linux/kernel.h>
+ #include <linux/module.h>
+ #include <linux/pci.h>
+@@ -28,34 +30,28 @@
+
+ #define DRV_NAME "ivshmem-net"
+
+-#define JAILHOUSE_CFG_SHMEM_PTR 0x40
+-#define JAILHOUSE_CFG_SHMEM_SZ 0x48
++#define IVSHM_NET_STATE_RESET 0
++#define IVSHM_NET_STATE_INIT 1
++#define IVSHM_NET_STATE_READY 2
++#define IVSHM_NET_STATE_RUN 3
+
+-#define IVSHMEM_INTX_ENABLE 0x1
++#define IVSHM_NET_FLAG_RUN 0
+
+-#define IVSHM_NET_STATE_RESET 0
+-#define IVSHM_NET_STATE_INIT 1
+-#define IVSHM_NET_STATE_READY 2
+-#define IVSHM_NET_STATE_RUN 3
+-
+-#define IVSHM_NET_FLAG_RUN 0
+-
+-#define IVSHM_NET_MTU_MIN 256
+-#define IVSHM_NET_MTU_MAX 65535
+-#define IVSHM_NET_MTU_DEF 16384
++#define IVSHM_NET_MTU_MIN 256
++#define IVSHM_NET_MTU_MAX 65535
++#define IVSHM_NET_MTU_DEF 16384
+
+ #define IVSHM_NET_FRAME_SIZE(s) ALIGN(18 + (s), SMP_CACHE_BYTES)
+
+ #define IVSHM_NET_VQ_ALIGN 64
+
+-struct ivshmem_regs {
+- u32 intxctrl;
+- u32 istat;
+- u32 ivpos;
+- u32 doorbell;
+- u32 lstate;
+- u32 rstate;
+-};
++#define IVSHM_NET_SECTION_TX 0
++#define IVSHM_NET_SECTION_RX 1
++
++#define IVSHM_NET_MSIX_STATE 0
++#define IVSHM_NET_MSIX_TX_RX 1
++
++#define IVSHM_NET_NUM_VECTORS 2
+
+ struct ivshm_net_queue {
+ struct vring vr;
+@@ -73,7 +69,7 @@ struct ivshm_net_queue {
+ };
+
+ struct ivshm_net_stats {
+- u32 interrupts;
++ u32 tx_rx_interrupts;
+ u32 tx_packets;
+ u32 tx_notify;
+ u32 tx_pause;
+@@ -97,8 +93,9 @@ struct ivshm_net {
+
+ struct napi_struct napi;
+
+- u32 lstate;
+- u32 rstate;
++ u32 state;
++ u32 last_peer_state;
++ u32 *state_table;
+
+ unsigned long flags;
+
+@@ -107,17 +104,19 @@ struct ivshm_net {
+
+ struct ivshm_net_stats stats;
+
+- struct ivshmem_regs __iomem *ivshm_regs;
+- void *shm;
+- phys_addr_t shmaddr;
++ struct ivshm_regs __iomem *ivshm_regs;
++ void *shm[2];
+ resource_size_t shmlen;
+ u32 peer_id;
+
++ u32 tx_rx_vector;
++
+ struct pci_dev *pdev;
+ };
+
+ static void *ivshm_net_desc_data(struct ivshm_net *in,
+ struct ivshm_net_queue *q,
++ unsigned int region,
+ struct vring_desc *desc,
+ u32 *len)
+ {
+@@ -132,7 +131,7 @@ static void *ivshm_net_desc_data(struct ivshm_net *in,
+ if (offs >= in->shmlen)
+ return NULL;
+
+- data = in->shm + offs;
++ data = in->shm[region] + offs;
+
+ if (data < q->data || data >= q->end)
+ return NULL;
+@@ -160,18 +159,17 @@ static void ivshm_net_init_queue(struct ivshm_net *in,
+ static void ivshm_net_init_queues(struct net_device *ndev)
+ {
+ struct ivshm_net *in = netdev_priv(ndev);
+- int ivpos = readl(&in->ivshm_regs->ivpos);
+ void *tx;
+ void *rx;
+ int i;
+
+- tx = in->shm + ivpos * in->shmlen / 2;
+- rx = in->shm + !ivpos * in->shmlen / 2;
++ tx = in->shm[IVSHM_NET_SECTION_TX];
++ rx = in->shm[IVSHM_NET_SECTION_RX];
+
+- memset(tx, 0, in->shmlen / 2);
++ memset(tx, 0, in->shmlen);
+
+- ivshm_net_init_queue(in, &in->rx, rx, in->qlen);
+ ivshm_net_init_queue(in, &in->tx, tx, in->qlen);
++ ivshm_net_init_queue(in, &in->rx, rx, in->qlen);
+
+ swap(in->rx.vr.used, in->tx.vr.used);
+
+@@ -191,14 +189,14 @@ static int ivshm_net_calc_qsize(struct net_device *ndev)
+ for (qlen = 4096; qlen > 32; qlen >>= 1) {
+ vrsize = vring_size(qlen, IVSHM_NET_VQ_ALIGN);
+ vrsize = ALIGN(vrsize, IVSHM_NET_VQ_ALIGN);
+- if (vrsize < in->shmlen / 16)
++ if (vrsize < in->shmlen / 8)
+ break;
+ }
+
+- if (vrsize > in->shmlen / 2)
++ if (vrsize > in->shmlen)
+ return -EINVAL;
+
+- qsize = in->shmlen / 2 - vrsize;
++ qsize = in->shmlen - vrsize;
+
+ if (qsize < 4 * IVSHM_NET_MTU_MIN)
+ return -EINVAL;
+@@ -221,7 +219,8 @@ static void ivshm_net_notify_tx(struct ivshm_net *in, unsigned int num)
+ new = in->tx.last_avail_idx;
+
+ if (vring_need_event(evt, new, old)) {
+- writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
++ writel(in->tx_rx_vector | (in->peer_id << 16),
++ &in->ivshm_regs->doorbell);
+ in->stats.tx_notify++;
+ }
+ }
+@@ -243,7 +242,8 @@ static void ivshm_net_notify_rx(struct ivshm_net *in, unsigned int num)
+ new = in->rx.last_used_idx;
+
+ if (vring_need_event(evt, new, old)) {
+- writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
++ writel(in->tx_rx_vector | (in->peer_id << 16),
++ &in->ivshm_regs->doorbell);
+ in->stats.rx_notify++;
+ }
+ }
+@@ -320,7 +320,7 @@ static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb,
+ buf = tx->data + head;
+ skb_copy_and_csum_dev(skb, buf);
+
+- desc->addr = buf - in->shm;
++ desc->addr = buf - in->shm[IVSHM_NET_SECTION_TX];
+ desc->len = skb->len;
+ desc->flags = 0;
+
+@@ -374,7 +374,8 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
+
+ desc = &vr->desc[used->id];
+
+- data = ivshm_net_desc_data(in, &in->tx, desc, &len);
++ data = ivshm_net_desc_data(in, &in->tx, IVSHM_NET_SECTION_TX,
++ desc, &len);
+ if (!data) {
+ netdev_err(ndev, "bad tx descriptor, data == NULL\n");
+ break;
+@@ -466,7 +467,8 @@ static int ivshm_net_poll(struct napi_struct *napi, int budget)
+ if (!desc)
+ break;
+
+- data = ivshm_net_desc_data(in, &in->rx, desc, &len);
++ data = ivshm_net_desc_data(in, &in->rx, IVSHM_NET_SECTION_RX,
++ desc, &len);
+ if (!data) {
+ netdev_err(ndev, "bad rx descriptor\n");
+ break;
+@@ -535,15 +537,15 @@ static netdev_tx_t ivshm_net_xmit(struct sk_buff *skb, struct net_device *ndev)
+ static void ivshm_net_set_state(struct ivshm_net *in, u32 state)
+ {
+ virt_wmb();
+- WRITE_ONCE(in->lstate, state);
+- writel(state, &in->ivshm_regs->lstate);
++ WRITE_ONCE(in->state, state);
++ writel(state, &in->ivshm_regs->state);
+ }
+
+ static void ivshm_net_run(struct net_device *ndev)
+ {
+ struct ivshm_net *in = netdev_priv(ndev);
+
+- if (in->lstate < IVSHM_NET_STATE_READY)
++ if (in->state < IVSHM_NET_STATE_READY)
+ return;
+
+ if (!netif_running(ndev))
+@@ -575,15 +577,15 @@ static void ivshm_net_state_change(struct work_struct *work)
+ {
+ struct ivshm_net *in = container_of(work, struct ivshm_net, state_work);
+ struct net_device *ndev = in->napi.dev;
+- u32 rstate = readl(&in->ivshm_regs->rstate);
++ u32 peer_state = READ_ONCE(in->state_table[in->peer_id]);
+
+- switch (in->lstate) {
++ switch (in->state) {
+ case IVSHM_NET_STATE_RESET:
+ /*
+ * Wait for the remote to leave READY/RUN before transitioning
+ * to INIT.
+ */
+- if (rstate < IVSHM_NET_STATE_READY)
++ if (peer_state < IVSHM_NET_STATE_READY)
+ ivshm_net_set_state(in, IVSHM_NET_STATE_INIT);
+ break;
+
+@@ -592,7 +594,7 @@ static void ivshm_net_state_change(struct work_struct *work)
+ * Wait for the remote to leave RESET before performing the
+ * initialization and moving to READY.
+ */
+- if (rstate > IVSHM_NET_STATE_RESET) {
++ if (peer_state > IVSHM_NET_STATE_RESET) {
+ ivshm_net_init_queues(ndev);
+ ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
+
+@@ -607,7 +609,7 @@ static void ivshm_net_state_change(struct work_struct *work)
+ * Link is up and we are running once the remote is in READY or
+ * RUN.
+ */
+- if (rstate >= IVSHM_NET_STATE_READY) {
++ if (peer_state >= IVSHM_NET_STATE_READY) {
+ netif_carrier_on(ndev);
+ ivshm_net_run(ndev);
+ break;
+@@ -617,7 +619,7 @@ static void ivshm_net_state_change(struct work_struct *work)
+ /*
+ * If the remote goes to RESET, we need to follow immediately.
+ */
+- if (rstate == IVSHM_NET_STATE_RESET) {
++ if (peer_state == IVSHM_NET_STATE_RESET) {
+ netif_carrier_off(ndev);
+ ivshm_net_do_stop(ndev);
+ }
+@@ -625,31 +627,44 @@ static void ivshm_net_state_change(struct work_struct *work)
+ }
+
+ virt_wmb();
+- WRITE_ONCE(in->rstate, rstate);
++ WRITE_ONCE(in->last_peer_state, peer_state);
+ }
+
+-static void ivshm_net_check_state(struct net_device *ndev)
++static void ivshm_net_check_state(struct ivshm_net *in)
+ {
+- struct ivshm_net *in = netdev_priv(ndev);
+- u32 rstate = readl(&in->ivshm_regs->rstate);
+-
+- if (rstate != in->rstate || !test_bit(IVSHM_NET_FLAG_RUN, &in->flags))
++ if (in->state_table[in->peer_id] != in->last_peer_state ||
++ !test_bit(IVSHM_NET_FLAG_RUN, &in->flags))
+ queue_work(in->state_wq, &in->state_work);
+ }
+
+-static irqreturn_t ivshm_net_int(int irq, void *data)
++static irqreturn_t ivshm_net_int_state(int irq, void *data)
+ {
+- struct net_device *ndev = data;
+- struct ivshm_net *in = netdev_priv(ndev);
++ struct ivshm_net *in = data;
++
++ ivshm_net_check_state(in);
++
++ return IRQ_HANDLED;
++}
+
+- in->stats.interrupts++;
++static irqreturn_t ivshm_net_int_tx_rx(int irq, void *data)
++{
++ struct ivshm_net *in = data;
++
++ in->stats.tx_rx_interrupts++;
+
+- ivshm_net_check_state(ndev);
+ napi_schedule_irqoff(&in->napi);
+
+ return IRQ_HANDLED;
+ }
+
++static irqreturn_t ivshm_net_intx(int irq, void *data)
++{
++ ivshm_net_int_state(irq, data);
++ ivshm_net_int_tx_rx(irq, data);
++
++ return IRQ_HANDLED;
++}
++
+ static int ivshm_net_open(struct net_device *ndev)
+ {
+ netdev_reset_queue(ndev);
+@@ -717,7 +732,7 @@ static const struct net_device_ops ivshm_net_ops = {
+ };
+
+ static const char ivshm_net_stats[][ETH_GSTRING_LEN] = {
+- "interrupts",
++ "tx_rx_interrupts",
+ "tx_packets",
+ "tx_notify",
+ "tx_pause",
+@@ -760,7 +775,7 @@ static void ivshm_net_get_ethtool_stats(struct net_device *ndev,
+ unsigned int n = 0;
+ unsigned int i;
+
+- st[n++] = in->stats.interrupts;
++ st[n++] = in->stats.tx_rx_interrupts;
+ st[n++] = in->stats.tx_packets;
+ st[n++] = in->stats.tx_notify;
+ st[n++] = in->stats.tx_pause;
+@@ -789,8 +804,8 @@ static void ivshm_net_get_regs(struct net_device *ndev,
+ u32 *reg32 = p;
+ u16 *reg16;
+
+- *reg32++ = in->lstate;
+- *reg32++ = in->rstate;
++ *reg32++ = in->state;
++ *reg32++ = in->last_peer_state;
+ *reg32++ = in->qlen;
+
+ reg16 = (u16 *)reg32;
+@@ -812,17 +827,28 @@ static const struct ethtool_ops ivshm_net_ethtool_ops = {
+ .get_regs = ivshm_net_get_regs,
+ };
+
++static u64 get_config_qword(struct pci_dev *pdev, unsigned int pos)
++{
++ u32 lo, hi;
++
++ pci_read_config_dword(pdev, pos, &lo);
++ pci_read_config_dword(pdev, pos + 4, &hi);
++ return lo | ((u64)hi << 32);
++}
++
+ static int ivshm_net_probe(struct pci_dev *pdev,
+- const struct pci_device_id *id)
++ const struct pci_device_id *pci_id)
+ {
++ phys_addr_t output_sections_addr, section_addr;
++ resource_size_t section_sz, output_section_sz;
++ void *state_table, *output_sections;
++ struct ivshm_regs __iomem *regs;
+ struct net_device *ndev;
+ struct ivshm_net *in;
+- struct ivshmem_regs __iomem *regs;
+- resource_size_t shmaddr;
+- resource_size_t shmlen;
++ unsigned int cap_pos;
+ char *device_name;
+- void *shm;
+- u32 ivpos;
++ int vendor_cap;
++ u32 id, dword;
+ int ret;
+
+ ret = pcim_enable_device(pdev);
+@@ -839,40 +865,75 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+
+ regs = pcim_iomap_table(pdev)[0];
+
+- shmlen = pci_resource_len(pdev, 2);
++ id = readl(&regs->id);
++ if (id > 1) {
++ dev_err(&pdev->dev, "invalid ID %d\n", id);
++ return -EINVAL;
++ }
++ if (readl(&regs->max_peers) > 2) {
++ dev_err(&pdev->dev, "only 2 peers supported\n");
++ return -EINVAL;
++ }
++
++ vendor_cap = pci_find_capability(pdev, PCI_CAP_ID_VNDR);
++ if (vendor_cap < 0) {
++ dev_err(&pdev->dev, "missing vendor capability\n");
++ return -EINVAL;
++ }
+
+- if (shmlen) {
+- shmaddr = pci_resource_start(pdev, 2);
++ if (pci_resource_len(pdev, 2) > 0) {
++ section_addr = pci_resource_start(pdev, 2);
+ } else {
+- union { u64 v; u32 hl[2]; } val;
+-
+- pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR,
+- &val.hl[0]);
+- pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR + 4,
+- &val.hl[1]);
+- shmaddr = val.v;
+-
+- pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ,
+- &val.hl[0]);
+- pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ + 4,
+- &val.hl[1]);
+- shmlen = val.v;
++ cap_pos = vendor_cap + IVSHM_CFG_ADDRESS;
++ section_addr = get_config_qword(pdev, cap_pos);
+ }
+
++ cap_pos = vendor_cap + IVSHM_CFG_STATE_TAB_SZ;
++ pci_read_config_dword(pdev, cap_pos, &dword);
++ section_sz = dword;
+
+- if (!devm_request_mem_region(&pdev->dev, shmaddr, shmlen, DRV_NAME))
++ if (!devm_request_mem_region(&pdev->dev, section_addr, section_sz,
++ DRV_NAME))
+ return -EBUSY;
+
+- shm = devm_memremap(&pdev->dev, shmaddr, shmlen, MEMREMAP_WB);
+- if (!shm)
++ state_table = devm_memremap(&pdev->dev, section_addr, section_sz,
++ MEMREMAP_WB);
++ if (!state_table)
+ return -ENOMEM;
+
+- ivpos = readl(&regs->ivpos);
+- if (ivpos > 1) {
+- dev_err(&pdev->dev, "invalid IVPosition %d\n", ivpos);
++ output_sections_addr = section_addr + section_sz;
++
++ cap_pos = vendor_cap + IVSHM_CFG_RW_SECTION_SZ;
++ section_sz = get_config_qword(pdev, cap_pos);
++ if (section_sz > 0) {
++ dev_info(&pdev->dev, "R/W section detected - "
++ "unused by this driver version\n");
++ output_sections_addr += section_sz;
++ }
++
++ cap_pos = vendor_cap + IVSHM_CFG_OUTPUT_SECTION_SZ;
++ output_section_sz = get_config_qword(pdev, cap_pos);
++ if (output_section_sz == 0) {
++ dev_err(&pdev->dev, "Missing input/output sections\n");
+ return -EINVAL;
+ }
+
++ if (!devm_request_mem_region(&pdev->dev, output_sections_addr,
++ output_section_sz * 2, DRV_NAME))
++ return -EBUSY;
++
++ output_sections = devm_memremap(&pdev->dev, output_sections_addr,
++ output_section_sz * 2, MEMREMAP_WB);
++ if (!output_sections)
++ return -ENOMEM;
++
++ section_addr = output_sections_addr + output_section_sz * id;
++ dev_info(&pdev->dev, "TX memory at %pa, size %pa\n",
++ &section_addr, &output_section_sz);
++ section_addr = output_sections_addr + output_section_sz * !id;
++ dev_info(&pdev->dev, "RX memory at %pa, size %pa\n",
++ &section_addr, &output_section_sz);
++
+ device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s[%s]", DRV_NAME,
+ dev_name(&pdev->dev));
+ if (!device_name)
+@@ -887,10 +948,16 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+
+ in = netdev_priv(ndev);
+ in->ivshm_regs = regs;
+- in->shm = shm;
+- in->shmaddr = shmaddr;
+- in->shmlen = shmlen;
+- in->peer_id = !ivpos;
++ in->state_table = state_table;
++
++ in->shm[IVSHM_NET_SECTION_TX] =
++ output_sections + output_section_sz * id;
++ in->shm[IVSHM_NET_SECTION_RX] =
++ output_sections + output_section_sz * !id;
++
++ in->shmlen = output_section_sz;
++
++ in->peer_id = !id;
+ in->pdev = pdev;
+ spin_lock_init(&in->tx_free_lock);
+ spin_lock_init(&in->tx_clean_lock);
+@@ -919,24 +986,64 @@ static int ivshm_net_probe(struct pci_dev *pdev,
+ if (ret)
+ goto err_wq;
+
+- ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_LEGACY | PCI_IRQ_MSIX);
++ ret = pci_alloc_irq_vectors(pdev, 1, 2, PCI_IRQ_LEGACY | PCI_IRQ_MSIX);
+ if (ret < 0)
+ goto err_alloc_irq;
+
+- ret = request_irq(pci_irq_vector(pdev, 0), ivshm_net_int, 0,
+- device_name, ndev);
+- if (ret)
+- goto err_request_irq;
++ if (pdev->msix_enabled) {
++ if (ret != 2) {
++ ret = -EBUSY;
++ goto err_request_irq;
++ }
++
++ device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
++ "%s-state[%s]", DRV_NAME,
++ dev_name(&pdev->dev));
++ if (!device_name) {
++ ret = -ENOMEM;
++ goto err_request_irq;
++ }
++
++ ret = request_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_STATE),
++ ivshm_net_int_state, 0, device_name, in);
++ if (ret)
++ goto err_request_irq;
++
++ device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
++ "%s-tx-rx[%s]", DRV_NAME,
++ dev_name(&pdev->dev));
++ if (!device_name) {
++ ret = -ENOMEM;
++ goto err_request_irq2;
++ }
++
++ ret = request_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_TX_RX),
++ ivshm_net_int_tx_rx, 0, device_name, in);
++ if (ret)
++ goto err_request_irq2;
++
++ in->tx_rx_vector = IVSHM_NET_MSIX_TX_RX;
++ } else {
++ ret = request_irq(pci_irq_vector(pdev, 0), ivshm_net_intx, 0,
++ device_name, in);
++ if (ret)
++ goto err_request_irq;
++
++ in->tx_rx_vector = 0;
++ }
+
+ pci_set_master(pdev);
+- if (!pdev->msix_enabled)
+- writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
+
+- writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
+- ivshm_net_check_state(ndev);
++ pci_write_config_byte(pdev, vendor_cap + IVSHM_CFG_PRIV_CNTL, 0);
++ writel(IVSHM_INT_ENABLE, &in->ivshm_regs->int_control);
++
++ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->state);
++ ivshm_net_check_state(in);
+
+ return 0;
+
++err_request_irq2:
++ free_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_STATE), in);
+ err_request_irq:
+ pci_free_irq_vectors(pdev);
+ err_alloc_irq:
+@@ -954,11 +1061,15 @@ static void ivshm_net_remove(struct pci_dev *pdev)
+ struct net_device *ndev = pci_get_drvdata(pdev);
+ struct ivshm_net *in = netdev_priv(ndev);
+
+- writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
++ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->state);
++ writel(0, &in->ivshm_regs->int_control);
+
+- if (!pdev->msix_enabled)
+- writel(0, &in->ivshm_regs->intxctrl);
+- free_irq(pci_irq_vector(pdev, 0), ndev);
++ if (pdev->msix_enabled) {
++ free_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_STATE), in);
++ free_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_TX_RX), in);
++ } else {
++ free_irq(pci_irq_vector(pdev, 0), in);
++ }
+ pci_free_irq_vectors(pdev);
+
+ unregister_netdev(ndev);
+@@ -968,8 +1079,8 @@ static void ivshm_net_remove(struct pci_dev *pdev)
+ }
+
+ static const struct pci_device_id ivshm_net_id_table[] = {
+- { PCI_DEVICE(PCI_VENDOR_ID_REDHAT_QUMRANET, 0x1110),
+- (PCI_CLASS_OTHERS << 16) | (0x01 << 8), 0xffff00 },
++ { PCI_DEVICE(PCI_VENDOR_ID_SIEMENS, PCI_DEVICE_ID_IVSHMEM),
++ (PCI_CLASS_OTHERS << 16) | IVSHM_PROTO_NET, 0xffffff },
+ { 0 }
+ };
+ MODULE_DEVICE_TABLE(pci, ivshm_net_id_table);
+--
+2.11.0
+
diff --git a/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg
new file mode 100644
index 00000000..d417e556
--- /dev/null
+++ b/meta-agl-devel/meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg
@@ -0,0 +1,10 @@
+CONFIG_HOTPLUG_CPU=y
+CONFIG_PCI_HOST_GENERIC=y
+
+CONFIG_HOTPLUG_PCI=y
+CONFIG_IVSHMEM_NET=y
+
+CONFIG_UIO=y
+CONFIG_UIO_IVSHMEM=y
+CONFIG_VIRT_DRIVERS=y
+CONFIG_JAILHOUSE_DBGCON=y
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/conf/layer.conf b/meta-agl-devel/meta-agl-profile-graphical-html5/conf/layer.conf
deleted file mode 100644
index 6673b564..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/conf/layer.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH .= ":${LAYERDIR}"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
- ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "html5-framework"
-BBFILE_PATTERN_html5-framework = "^${LAYERDIR}/"
-BBFILE_PRIORITY_html5-framework = "80"
-
-LAYERSERIES_COMPAT_html5-framework = "thud"
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-apis/agl-service-windowmanager/agl-service-windowmanager_git.bbappend b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-apis/agl-service-windowmanager/agl-service-windowmanager_git.bbappend
deleted file mode 100644
index 06f89f69..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-apis/agl-service-windowmanager/agl-service-windowmanager_git.bbappend
+++ /dev/null
@@ -1,9 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += " \
- file://areas.horizontal.json \
-"
-
-do_compile_prepend() {
- cp ${WORKDIR}/areas.horizontal.json ${S}/conf/areas.json
-}
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-apis/agl-service-windowmanager/files/areas.horizontal.json b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-apis/agl-service-windowmanager/files/areas.horizontal.json
deleted file mode 100644
index 4b6f0c39..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-apis/agl-service-windowmanager/files/areas.horizontal.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
- "areas": [
- {
- "name": "fullscreen",
- "rect": {
- "x": 0,
- "y": 0,
- "w": 1920,
- "h": 1080
- }
- },
- {
- "name": "normal.full",
- "rect": {
- "x": 218,
- "y": 0,
- "w": 1702,
- "h": 1080
- }
- },
- {
- "name": "split.main",
- "rect": {
- "x": 218,
- "y": 0,
- "w": 744,
- "h": 1080
- }
- },
- {
- "name": "split.sub",
- "rect": {
- "x": 962,
- "y": 0,
- "w": 744,
- "h": 1080
- }
- },
- {
- "name": "software_keyboard",
- "rect": {
- "x": 962,
- "y": 0,
- "w": 744,
- "h": 1080
- }
- },
- {
- "name": "restriction.normal",
- "rect": {
- "x": 218,
- "y": 0,
- "w": 1488,
- "h": 1080
- }
- },
- {
- "name": "restriction.split.main",
- "rect": {
- "x": 218,
- "y": 0,
- "w": 744,
- "h": 1080
- }
- },
- {
- "name": "restriction.split.sub",
- "rect": {
- "x": 962,
- "y": 0,
- "w": 744,
- "h": 1080
- }
- },
- {
- "name": "on_screen",
- "rect": {
- "x": 218,
- "y": 0,
- "w": 1488,
- "h": 1080
- }
- },
- {
- "name": "remote.fullscreen",
- "rect": {
- "x": 0,
- "y": 0,
- "w": 720,
- "h": 640
- }
- }
- ]
-}
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend
deleted file mode 100644
index 2c5201aa..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend
+++ /dev/null
@@ -1,12 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI_remove = " \
- file://hdmi-a-1-270.cfg \
- file://hdmi-a-1-90.cfg \
- file://virtual.cfg \
-"
-
-SRC_URI += " \
- file://hdmi-a-1-180.cfg \
- file://virtual-landscape.cfg \
-"
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg
deleted file mode 100644
index 59e2c2db..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-# A display is connected to HDMI-A-1
-[output]
-name=HDMI-A-1
-transform=0
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg
deleted file mode 100644
index d6925363..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-[output]
-name=Virtual-1
-mode=1920x1080
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb
deleted file mode 100644
index 0ec6829e..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-SUMMARY = "An image containing all packages required to run web applications"
-
-require agl-image-graphical-html5.inc
-
-LICENSE = "MIT"
-
-IMAGE_INSTALL_append = "\
- packagegroup-agl-profile-graphical-html5 \
- "
-
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc
deleted file mode 100644
index 21f3b19a..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc
+++ /dev/null
@@ -1,9 +0,0 @@
-require recipes-platform/images/agl-image-minimal.inc
-
-IMAGE_FEATURES += "splash"
-
-IMAGE_FEATURES += "${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'ssh-server-dropbear' , '', d)}"
-
-inherit distro_features_check
-
-REQUIRED_DISTRO_FEATURES = "wayland"
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb
deleted file mode 100644
index cc9ed3d6..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "AGL web runtime packages"
-DESCRIPTION = "Specific packages for the AGL web runtime (minus profile-graphical)"
-
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
- packagegroup-agl-appfw-html5 \
- "
-
-ALLOW_EMPTY_${PN} = "1"
-
-# add packages for WAM
-RDEPENDS_${PN} += " \
- chromium-browser-service \
- wam \
- "
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb
deleted file mode 100644
index 20275014..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "AGL web runtime profile"
-DESCRIPTION = "The full set of packages required for AGL web runtime"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
- packagegroup-agl-profile-graphical-html5 \
- profile-graphical-html5 \
- "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} += "\
- packagegroup-agl-profile-graphical \
- packagegroup-agl-appfw-html5 \
-"
-
-RDEPENDS_${PN} += "\
- agl-login-manager \
- "
-
-RDEPENDS_profile-graphical-html5 = "${PN}"
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb
deleted file mode 100644
index 2686c7c8..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Chromium browser widget"
-DESCRIPTION = "Wgt packaging for running chromium installed browser"
-HOMEPAGE = "https://webosose.org"
-SECTION = "apps"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = "gitsm://github.com/webosose/${PN}.git;branch=halibut;protocol=https"
-SRCREV = "7dabb46483ff6a3a4fa5cfe532b91412f185554d"
-
-PV = "1.0+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-#build-time dependencies
-DEPENDS += "af-binder af-main-native chromium68"
-
-inherit cmake aglwgt
-
-RDEPENDS_${PN} += "chromium68-browser runxdg"
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch
deleted file mode 100644
index 485766b0..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Upstream-Status: Inappropriate [embedder specific]
-
-The patch below makes the V8 binaries run during the build be invoked through
-QEMU, as they are built for the target.
-
-Signed-off-by: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-Signed-off-by: Maksim Sisov <msisov@igalia.com>
-
-Index: git/src/tools/v8_context_snapshot/BUILD.gn
-===================================================================
---- git.orig/src/tools/v8_context_snapshot/BUILD.gn
-+++ git/src/tools/v8_context_snapshot/BUILD.gn
-@@ -62,6 +62,7 @@ if (use_v8_context_snapshot) {
- output_path = rebase_path(output_file, root_build_dir)
-
- args = [
-+ "./v8-qemu-wrapper.sh",
- "./" + rebase_path(
- get_label_info(
- ":v8_context_snapshot_generator($v8_snapshot_toolchain)",
-Index: git/src/v8/BUILD.gn
-===================================================================
---- git.orig/src/v8/BUILD.gn
-+++ git/src/v8/BUILD.gn
-@@ -900,6 +900,7 @@ action("run_torque") {
- }
-
- args = [
-+ "./v8-qemu-wrapper.sh",
- "./" + rebase_path(get_label_info(":torque($v8_torque_toolchain)",
- "root_out_dir") + "/torque",
- root_build_dir),
-@@ -977,6 +978,7 @@ template("run_mksnapshot") {
- data = []
-
- args = [
-+ "./v8-qemu-wrapper.sh",
- "./" + rebase_path(get_label_info(":mksnapshot($v8_snapshot_toolchain)",
- "root_out_dir") + "/mksnapshot",
- root_build_dir),
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb
deleted file mode 100644
index 100eb628..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb
+++ /dev/null
@@ -1,404 +0,0 @@
-# Copyright (c) 2018 LG Electronics, Inc.
-
-SUMMARY = "Chromium webruntime for webOS"
-AUTHOR = "Lokesh Kumar Goel <lokeshkumar.goel@lge.com>"
-SECTION = "webos/apps"
-LICENSE = "Apache-2.0 & BSD-3-Clause & LGPL-2.0 & LGPL-2.1"
-LIC_FILES_CHKSUM = "\
- file://src/LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d \
- file://src/third_party/blink/renderer/core/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
- file://src/third_party/blink/renderer/core/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
-"
-
-require gn-utils.inc
-
-inherit gettext qemu
-
-DEPENDS = "virtual/gettext wayland wayland-native pixman freetype glib-2.0 fontconfig openssl pango cairo icu libxkbcommon libexif dbus pciutils udev libcap alsa-lib virtual/egl elfutils-native libdrm atk gperf-native gconf nss nss-native nspr nspr-native bison-native qemu-native"
-
-PROVIDES = "${BROWSER_APPLICATION}"
-
-SRC_URI = "\
- git://github.com/webosose/${PN};branch=@39.agl.guppy;protocol=https;rev=${SRCREV_chromium68};name=chromium68 \
- git://github.com/webosose/v8;destsuffix=git/src/v8;rev=${SRCREV_v8};name=v8 \
- file://v8-qemu-wrapper.patch \
-"
-SRCREV_chromium68 = "5ebefe83ead91ce6fd2ac8ff9699b848a83ee0ff"
-SRCREV_v8 = "1e3af71f1ff3735e8a5b639c48dfca63a7b8a647"
-
-# we don't include SRCPV in PV, so we have to manually include SRCREVs in do_fetch vardeps
-do_fetch[vardeps] += "SRCREV_v8"
-SRCREV_FORMAT = "main_v8"
-
-S = "${WORKDIR}/git"
-
-SRC_DIR = "${S}/src"
-OUT_DIR = "${WORKDIR}/build"
-BUILD_TYPE = "Release"
-
-B = "${OUT_DIR}/${BUILD_TYPE}"
-
-WEBRUNTIME_BUILD_TARGET = "webos:weboswebruntime"
-BROWSER_APP_BUILD_TARGET = "chrome"
-BROWSER_APPLICATION = "chromium68-browser"
-BROWSER_APPLICATION_DIR = "/opt/chromium68"
-
-TARGET = "${WEBRUNTIME_BUILD_TARGET} ${BROWSER_APP_BUILD_TARGET}"
-
-# Skip do_install_append of webos_system_bus. It is not compatible with this component.
-WEBOS_SYSTEM_BUS_FILES_LOCATION = "${S}/files/sysbus"
-
-PACKAGECONFIG ?= "jumbo use-upstream-wayland"
-
-# Options to enable debug-webcore build.
-# Add the following line to local.conf (or local.dev.inc) to enable them:
-# PACKAGECONFIG_append_pn-chromium68 = " debug-webcore"
-# Other debug options are controlled by sections later in this file
-PACKAGECONFIG[debug-webcore] = "remove_webcore_debug_symbols=false,remove_webcore_debug_symbols=true"
-
-# Set a default value for jumbo file merge of 8. This should be good for build
-# servers and workstations with a big number of cores. In case build is
-# happening in a machine with less cores but still enough RAM a good value could
-# be 50.
-JUMBO_FILE_MERGE_LIMIT="8"
-PACKAGECONFIG[jumbo] = "use_jumbo_build=true jumbo_file_merge_limit=${JUMBO_FILE_MERGE_LIMIT}, use_jumbo_build=false"
-
-PACKAGECONFIG[lttng] = "use_lttng=true,use_lttng=false,lttng-ust,lttng-tools lttng-modules babeltrace"
-
-# Chromium can use v4l2 device for hardware accelerated video decoding on such boards as Renesas R-car M3, for example.
-# In case of R-car m3, additional patches are required for gstreamer and v4l2apps.
-# See https://github.com/igel-oss/meta-browser-hwdecode/tree/igalia-chromium71.
-PACKAGECONFIG[use-linux-v4l2] = "use_v4l2_codec=true use_v4lplugin=true use_linux_v4l2_only=true"
-
-PACKAGECONFIG[use-upstream-wayland] = " \
- ozone_platform_wayland_external=false ozone_platform_wayland=true \
- use_system_minigbm=true, \
- ozone_platform_wayland_external=true ozone_platform_wayland=false \
-"
-
-GN_ARGS = "\
- enable_memorymanager_webapi=false\
- ffmpeg_branding=\"Chrome\"\
- host_os=\"linux\"\
- ozone_auto_platforms=false\
- proprietary_codecs=true\
- target_os=\"linux\"\
- treat_warnings_as_errors=false\
- is_agl=true\
- use_cbe=true\
- is_chrome_cbe=true\
- use_cups=false\
- use_custom_libcxx=false\
- use_kerberos=false\
- use_neva_media=false\
- use_ozone=true\
- use_xkbcommon=true\
- use_pmlog=false\
- use_system_debugger_abort=true\
- use_webos_gpu_info_collector=false\
- ${PACKAGECONFIG_CONFARGS}\
-"
-
-# From Chromium's BUILDCONFIG.gn:
-# Set to enable the official build level of optimization. This has nothing
-# to do with branding, but enables an additional level of optimization above
-# release (!is_debug). This might be better expressed as a tri-state
-# (debug, release, official) but for historical reasons there are two
-# separate flags.
-# See also: https://groups.google.com/a/chromium.org/d/msg/chromium-dev/hkcb6AOX5gE/PPT1ukWoBwAJ
-GN_ARGS += "is_debug=false is_official_build=true"
-
-# is_cfi default value is true for x86-64 builds with is_official_build=true.
-# As of M63, we explicitly need to set it to false, otherwise we fail the
-# following assertion in //build/config/sanitizers/sanitizers.gni:
-# assert(!is_cfi || is_clang,
-# "is_cfi requires setting is_clang = true in 'gn args'")
-GN_ARGS += "is_cfi=false"
-
-# By default, passing is_official_build=true to GN causes its symbol_level
-# variable to be set to "2". This means the compiler will be passed "-g2" and
-# we will end up with a very large chrome binary (around 5Gb as of M58)
-# regardless of whether DEBUG_BUILD has been set or not. In addition, binutils,
-# file and other utilities are unable to read a 32-bit binary this size, which
-# causes it not to be stripped.
-# The solution is two-fold:
-# 1. Make sure -g is not passed on 32-bit architectures via DEBUG_FLAGS. -g is
-# the same as -g2. -g1 generates an 800MB binary, which is a lot more
-# manageable.
-# 2. Explicitly pass symbol_level=0 to GN. This causes -g0 to be passed
-# instead, so that if DEBUG_BUILD is not set GN will not create a huge debug
-# binary anyway. Since our compiler flags are passed after GN's, -g0 does
-# not cause any issues if DEBUG_BUILD is set, as -g1 will be passed later.
-DEBUG_FLAGS_remove_arm = "-g"
-DEBUG_FLAGS_append_arm = "-g1"
-DEBUG_FLAGS_remove_x86 = "-g"
-DEBUG_FLAGS_append_x86 = "-g1"
-GN_ARGS += "symbol_level=0"
-
-# We do not want to use Chromium's own Debian-based sysroots, it is easier to
-# just let Chromium's build system assume we are not using a sysroot at all and
-# let Yocto handle everything.
-GN_ARGS += "use_sysroot=false"
-
-# Toolchains we will use for the build. We need to point to the toolchain file
-# we've created, set the right target architecture and make sure we are not
-# using Chromium's toolchain (bundled clang, bundled binutils etc).
-GN_ARGS += "\
- custom_toolchain=\"//build/toolchain/yocto:yocto_target\" \
- gold_path=\"\" \
- host_toolchain=\"//build/toolchain/yocto:yocto_native\" \
- is_clang=${@is_default_cc_clang(d)} \
- clang_base_path=\"${@clang_install_path(d)}\" \
- clang_use_chrome_plugins=false \
- linux_use_bundled_binutils=false \
- target_cpu=\"${@gn_target_arch_name(d)}\" \
- v8_snapshot_toolchain=\"//build/toolchain/yocto:yocto_target\" \
-"
-
-# ARM builds need special additional flags (see ${S}/build/config/arm.gni).
-# If we do not pass |arm_arch| and friends to GN, it will deduce a value that
-# will then conflict with TUNE_CCARGS and CC.
-# Note that as of M61 in some corner cases parts of the build system disable
-# the "compiler_arm_fpu" GN config, whereas -mfpu is always passed via ${CC}.
-# We might want to rework that if there are issues in the future.
-def get_compiler_flag(params, param_name, d):
- """Given a sequence of compiler arguments in |params|, returns the value of
- an option |param_name| or an empty string if the option is not present."""
- for param in params:
- if param.startswith(param_name):
- return param.split('=')[1]
- return ''
-
-ARM_FLOAT_ABI = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hard', 'softfp', d)}"
-ARM_FPU = "${@get_compiler_flag(d.getVar('TUNE_CCARGS').split(), '-mfpu', d)}"
-ARM_TUNE = "${@get_compiler_flag(d.getVar('TUNE_CCARGS').split(), '-mcpu', d)}"
-ARM_VERSION_aarch64 = "8"
-ARM_VERSION_armv7a = "7"
-ARM_VERSION_armv7ve = "7"
-ARM_VERSION_armv6 = "6"
-
-# GN computes and defaults to it automatically where needed
-# forcing it from cmdline breaks build on places where it ends up
-# overriding what GN wants
-TUNE_CCARGS_remove = "-mthumb"
-
-GN_ARGS_append_arm = " \
- arm_float_abi=\"${ARM_FLOAT_ABI}\" \
- arm_fpu=\"${ARM_FPU}\" \
- arm_tune=\"${ARM_TUNE}\" \
- arm_version=${ARM_VERSION} \
-"
-# tcmalloc's atomicops-internals-arm-v6plus.h uses the "dmb" instruction that
-# is not available on (some?) ARMv6 models, which causes the build to fail.
-GN_ARGS_append_armv6 += 'use_allocator="none"'
-# The WebRTC code fails to build on ARMv6 when NEON is enabled.
-# https://bugs.chromium.org/p/webrtc/issues/detail?id=6574
-GN_ARGS_append_armv6 += 'arm_use_neon=false'
-
-# Disable glibc shims on musl
-# tcmalloc does not play well with musl as of M62 (and possibly earlier).
-# https://github.com/gperftools/gperftools/issues/693
-GN_ARGS_append_libc-musl = ' use_allocator_shim=false'
-
-# V8's JIT infrastructure requires binaries such as mksnapshot and
-# mkpeephole to be run in the host during the build. However, these
-# binaries must have the same bit-width as the target (e.g. a x86_64
-# host targeting ARMv6 needs to produce a 32-bit binary). Instead of
-# depending on a third Yocto toolchain, we just build those binaries
-# for the target and run them on the host with QEMU.
-python do_create_v8_qemu_wrapper () {
- """Creates a small wrapper that invokes QEMU to run some target V8 binaries
- on the host."""
- qemu_libdirs = [d.expand('${STAGING_DIR_HOST}${libdir}'),
- d.expand('${STAGING_DIR_HOST}${base_libdir}')]
- qemu_cmd = qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST', True),
- qemu_libdirs)
- wrapper_path = d.expand('${B}/v8-qemu-wrapper.sh')
- with open(wrapper_path, 'w') as wrapper_file:
- wrapper_file.write("""#!/bin/sh
-
-# This file has been generated automatically.
-# It invokes QEMU to run binaries built for the target in the host during the
-# build process.
-
-%s "$@"
-""" % qemu_cmd)
- os.chmod(wrapper_path, 0o755)
-}
-do_create_v8_qemu_wrapper[dirs] = "${B}"
-addtask create_v8_qemu_wrapper after do_patch before do_configure
-
-python do_write_toolchain_file () {
- """Writes a BUILD.gn file for Yocto detailing its toolchains."""
- toolchain_dir = d.expand("${S}/src/build/toolchain/yocto")
- bb.utils.mkdirhier(toolchain_dir)
- toolchain_file = os.path.join(toolchain_dir, "BUILD.gn")
- write_toolchain_file(d, toolchain_file)
-}
-addtask write_toolchain_file after do_patch before do_configure
-
-# More options to speed up the build
-GN_ARGS += "\
- enable_nacl=false\
- disable_ftp_support=true\
- enable_print_preview=false\
- enable_remoting=false\
- use_glib=true\
- use_gnome_keyring=false\
- use_pulseaudio=false\
-"
-
-# Respect ld-is-gold in DISTRO_FEATURES when enabling gold
-# Similar patch applied in meta-browser
-# http://patchwork.openembedded.org/patch/77755/
-EXTRA_OEGN_GOLD = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'use_gold=true', 'use_gold=false', d)}"
-GN_ARGS += "${EXTRA_OEGN_GOLD}"
-
-# Doesn't build for armv[45]*
-COMPATIBLE_MACHINE = "(-)"
-COMPATIBLE_MACHINE_aarch64 = "(.*)"
-COMPATIBLE_MACHINE_armv6 = "(.*)"
-COMPATIBLE_MACHINE_armv7a = "(.*)"
-COMPATIBLE_MACHINE_armv7ve = "(.*)"
-COMPATIBLE_MACHINE_x86 = "(.*)"
-COMPATIBLE_MACHINE_x86-64 = "(.*)"
-
-#CHROMIUM_PLUGINS_PATH = "${libdir}"
-CBE_DATA_PATH = "${libdir}/cbe"
-CBE_DATA_LOCALES_PATH = "${CBE_DATA_PATH}/locales"
-
-# The text relocations are intentional -- see comments in [GF-52468]
-# TODO: check if we need INSANE_SKIP on ldflags
-INSANE_SKIP_${PN} = "textrel ldflags"
-
-
-do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+"
-do_compile() {
- if [ ! -f ${OUT_DIR}/${BUILD_TYPE}/build.ninja ]; then
- do_configure
- fi
-
- export PATH="${S}/depot_tools:$PATH"
- ${S}/depot_tools/ninja -v -C ${OUT_DIR}/${BUILD_TYPE} ${TARGET}
-}
-
-do_configure() {
- configure_env
-}
-
-configure_env() {
- export GYP_CHROMIUM_NO_ACTION=1
- export PATH="${S}/depot_tools:$PATH"
-
- GN_ARGS="${GN_ARGS}"
- echo GN_ARGS is ${GN_ARGS}
- echo BUILD_TARGETS are ${TARGET}
- cd ${SRC_DIR}
- gn gen ${OUT_DIR}/${BUILD_TYPE} --args="${GN_ARGS}"
-}
-
-WINDOW_SIZE ?= "1920,1080"
-
-configure_browser_settings() {
- USER_AGENT="Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/${CHROMIUM_VERSION} Safari/537.31"
- echo "${USER_AGENT}" > ${D_DIR}/user_agent_conf
- #We can replace below WINDOW_SIZE values from build configuration if available
- #echo "${WINDOW_SIZE}" > ${D_DIR}/window_size_conf
-}
-
-install_chromium_browser() {
- D_DIR=${D}${BROWSER_APPLICATION_DIR}
- install -d ${D_DIR}
-
- # Install browser files
- if [ -e "${SRC_DIR}/webos/install" ]; then
- cd ${OUT_DIR}/${BUILD_TYPE}
- xargs --arg-file=${SRC_DIR}/webos/install/default_browser/binary.list cp -R --no-dereference --preserve=mode,links -v --target-directory=${D_DIR}
- cd ${SRC_DIR}
- xargs --arg-file=${SRC_DIR}/webos/install/default_browser/runtime.list cp -R --no-dereference --preserve=mode,links -v --target-directory=${D_DIR}
- fi
-
- # AGL does not have PMLOG
- sed -i.bak s/PmLogCtl.*// ${D_DIR}/run_webbrowser
-
- # To execute chromium in JAILER, Security Part needs permissions change
- # run_webbrowser: Script file for launching chromium
- chmod -v 755 ${D_DIR}/chrome
- chmod -v 755 ${D_DIR}/kill_webbrowser
- chmod -v 755 ${D_DIR}/run_webbrowser
-
- configure_browser_settings
-}
-
-install_webruntime() {
- install -d ${D}${libdir}
- install -d ${D}${includedir}/${BPN}
- install -d ${D}${CBE_DATA_PATH}
- install -d ${D}${CBE_DATA_LOCALES_PATH}
-
- # Install webos webview files
- if [ -e "${SRC_DIR}/webos/install" ]; then
- cd ${SRC_DIR}
- xargs --arg-file=${SRC_DIR}/webos/install/weboswebruntime/staging_inc.list cp --parents --target-directory=${D}${includedir}/${BPN}
-
- cd ${OUT_DIR}/${BUILD_TYPE}
-
- cp libcbe.so ${D}${libdir}/
- if [ "${WEBOS_LTTNG_ENABLED}" = "1" ]; then
- # use bindir if building non-cbe
- cp libchromium_lttng_provider.so ${D}${libdir}/
- fi
- xargs --arg-file=${SRC_DIR}/webos/install/weboswebruntime/binary.list cp --parents --target-directory=${D}${CBE_DATA_PATH}
- cat ${SRC_DIR}/webos/install/weboswebruntime/data_locales.list | xargs -I{} install -m 755 -p {} ${D}${CBE_DATA_LOCALES_PATH}
- fi
-
- # move this to separate mksnapshot-cross recipe once we figure out how to build just cross mksnapshot from chromium repository
- install -d ${D}${bindir_cross}
- gzip -c ${OUT_DIR}/${BUILD_TYPE}/${MKSNAPSHOT_PATH}mksnapshot > ${D}${bindir_cross}/${HOST_SYS}-mksnapshot.gz
-}
-
-do_install() {
- install_webruntime
- install_chromium_browser
-}
-
-WEBOS_SYSTEM_BUS_DIRS_LEGACY_BROWSER_APPLICATION = " \
- ${webos_sysbus_prvservicesdir}/${BROWSER_APPLICATION}.service \
- ${webos_sysbus_pubservicesdir}/${BROWSER_APPLICATION}.service \
- ${webos_sysbus_prvrolesdir}/${BROWSER_APPLICATION}.json \
- ${webos_sysbus_pubrolesdir}/${BROWSER_APPLICATION}.json \
-"
-
-SYSROOT_DIRS_append = " ${bindir_cross}"
-
-PACKAGES_prepend = " \
- ${PN}-cross-mksnapshot \
- ${BROWSER_APPLICATION} \
-"
-
-FILES_${BROWSER_APPLICATION} += " \
- ${BROWSER_APPLICATION_DIR} \
- ${WEBOS_SYSTEM_BUS_DIRS_LEGACY_BROWSER_APPLICATION} \
-"
-
-RDEPENDS_${BROWSER_APPLICATION} += "${PN}"
-
-VIRTUAL-RUNTIME_gpu-libs ?= ""
-RDEPENDS_${PN} += "${VIRTUAL-RUNTIME_gpu-libs}"
-
-# The text relocations are intentional -- see comments in [GF-52468]
-# TODO: check if we need INSANE_SKIP on ldflags
-INSANE_SKIP_${BROWSER_APPLICATION} += "libdir ldflags textrel"
-
-FILES_${PN} = " \
- ${libdir}/*.so \
- ${CBE_DATA_PATH}/* \
- ${libdir}/${BPN}/*.so \
- ${WEBOS_SYSTEM_BUS_DIRS} \
-"
-
-FILES_${PN}-dev = " \
- ${includedir} \
-"
-
-FILES_${PN}-cross-mksnapshot = "${bindir_cross}/${HOST_SYS}-mksnapshot.gz"
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc
deleted file mode 100644
index 0fd55a63..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc
+++ /dev/null
@@ -1,157 +0,0 @@
-# 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.
-
-# GN host architecture helpers.
-#
-# BUILD_ARCH's value corresponds to what uname returns as the machine name.
-# The mapping in gn_host_arch_name() tries to match several possible values
-# returned by the Linux kernel in uname(2) into the corresponding values GN
-# understands.
-def gn_host_arch_name(d):
- """Returns a GN architecture name corresponding to the build host's machine
- architecture."""
- import re
- arch_translations = {
- r'aarch64.*': 'arm64',
- r'arm.*': 'arm',
- r'i[3456]86$': 'x86',
- r'x86_64$': 'x64',
- }
- build_arch = d.getVar("BUILD_ARCH")
- for arch_regexp, gn_arch_name in arch_translations.items():
- if re.match(arch_regexp, build_arch):
- return gn_arch_name
- bb.fatal('Unsuported BUILD_ARCH value: "%s"' % build_arch)
-
-# GN target architecture helpers.
-#
-# Determining the target architecture is more difficult, as there are many
-# different values we can use on the Yocto side (e.g. TUNE_ARCH, TARGET_ARCH,
-# MACHINEOVERRIDES etc). What we do is define the mapping with regular,
-# non-Python variables with overrides that are generic enough (i.e. "x86"
-# instead of "i586") and then use gn_target_arch_name() to return the right
-# value with some validation.
-GN_TARGET_ARCH_NAME_aarch64 = "arm64"
-GN_TARGET_ARCH_NAME_arm = "arm"
-GN_TARGET_ARCH_NAME_x86 = "x86"
-GN_TARGET_ARCH_NAME_x86-64 = "x64"
-
-BUILD_CC_toolchain-clang = "clang"
-BUILD_CXX_toolchain-clang = "clang++"
-BUILD_LD_toolchain-clang = "clang"
-
-# knob for clang, when using meta-clang to provide clang and case where
-# clang happens to be default compiler for OE we should let it use clang
-def is_default_cc_clang(d):
- """Return true if clang is default cross compiler."""
- toolchain = d.getVar("TOOLCHAIN")
- overrides = d.getVar("OVERRIDES")
- if toolchain == "clang" and "toolchain-clang" in overrides.split(":"):
- return "true"
- return "false"
-
-def clang_install_path(d):
- """Return clang compiler install path."""
- return d.getVar("STAGING_BINDIR_NATIVE")
-
-def gn_target_arch_name(d):
- """Returns a GN architecture name corresponding to the target machine's
- architecture."""
- name = d.getVar("GN_TARGET_ARCH_NAME")
- if name is None:
- bb.fatal('Unsupported target architecture. A valid override for the '
- 'GN_TARGET_ARCH_NAME variable could not be found.')
- return name
-
-def write_toolchain_file(d, file_path):
- """Creates a complete GN toolchain file in |file_path|."""
- import string
- gcc_toolchain_tmpl = string.Template(
- 'gcc_toolchain("${toolchain_name}") {\n'
- ' cc = "${cc}"\n'
- ' cxx = "${cxx}"\n'
- ' ar = "${ar}"\n'
- ' ld = cxx # GN expects a compiler, not a linker.\n'
- ' nm = "${nm}"\n'
- ' readelf = "${readelf}"\n'
- ' extra_cflags = "${extra_cflags}"\n'
- ' extra_cppflags = "${extra_cppflags}"\n'
- ' extra_cxxflags = "${extra_cxxflags}"\n'
- ' extra_ldflags = "${extra_ldflags}"\n'
- ' toolchain_args = {\n'
- ' current_cpu = "${current_cpu}"\n'
- ' current_os = "linux"\n'
- ' is_clang = false\n'
- ' }\n'
- '}\n'
- )
- clang_toolchain_tmpl = string.Template(
- 'clang_toolchain("clang_${toolchain_name}") {\n'
- ' extra_cflags = "${extra_cflags}"\n'
- ' extra_cppflags = "${extra_cppflags}"\n'
- ' extra_cxxflags = "${extra_cxxflags}"\n'
- ' extra_ldflags = "${extra_ldflags}"\n'
- ' toolchain_args = {\n'
- ' current_cpu = "${current_cpu}"\n'
- ' current_os = "linux"\n'
- ' is_clang = true\n'
- ' use_gold = true\n'
- ' }\n'
- '}\n'
- )
-
- native_toolchain = {
- 'toolchain_name': 'yocto_native',
- 'current_cpu': gn_host_arch_name(d),
- 'cc': d.expand('${BUILD_CC}'),
- 'cxx': d.expand('${BUILD_CXX}'),
- 'ar': d.expand('${BUILD_AR}'),
- 'nm': d.expand('${BUILD_NM}'),
- 'readelf': d.expand('${BUILD_PREFIX}readelf'),
- 'extra_cflags': d.expand('${BUILD_CFLAGS}'),
- 'extra_cppflags': d.expand('${BUILD_CPPFLAGS}'),
- 'extra_cxxflags': d.expand('${BUILD_CXXFLAGS}'),
- 'extra_ldflags': d.expand('${BUILD_LDFLAGS}'),
- }
- target_toolchain = {
- 'toolchain_name': 'yocto_target',
- 'current_cpu': gn_target_arch_name(d),
- 'cc': d.expand('${CC}'),
- 'cxx': d.expand('${CXX}'),
- 'ar': d.expand('${AR}'),
- 'nm': d.expand('${NM}'),
- 'readelf': d.expand('${TARGET_PREFIX}readelf'),
- 'extra_cflags': d.expand('${TARGET_CFLAGS}'),
- 'extra_cppflags': d.expand('${TARGET_CPPFLAGS}'),
- 'extra_cxxflags': d.expand('${TARGET_CXXFLAGS}'),
- 'extra_ldflags': d.expand('${TARGET_LDFLAGS}'),
- 'strip': '',
- }
-
- with open(file_path, 'w') as toolchain_file:
- toolchain_file.write(
- '# This file has been generated automatically.\n'
- '\n'
- 'import("//build/config/sysroot.gni")\n'
- 'import("//build/toolchain/gcc_toolchain.gni")\n'
- '\n'
- )
- toolchain_file.write(gcc_toolchain_tmpl.substitute(native_toolchain))
- toolchain_file.write(gcc_toolchain_tmpl.substitute(target_toolchain))
- toolchain_file.write(clang_toolchain_tmpl.substitute(native_toolchain))
- toolchain_file.write(clang_toolchain_tmpl.substitute(target_toolchain))
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env
deleted file mode 100644
index c8ddc517..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env
+++ /dev/null
@@ -1,202 +0,0 @@
-##### AGL: not set in WebAppMgr@.service
-#XDG_SESSION_ID="c2"
-
-##### AGL: set by WebAppMgr@.service (depends on user)
-#XDG_RUNTIME_DIR="/run/user/%i"
-
-# Set wam executable file path
-HOOK_SEGV=NO
-WAM_EXE_PATH="/usr/bin/WebAppMgr"
-
-# Set wam name for user-agent
-WAM_NAME="WebAppManager"
-
-# Only allow UTF8 encoding for luna-service messages.
-LS_ENABLE_UTF8=1
-
-# Set effective userid and groupid
-#WAM_UID="wam"
-#WAM_GID="compositor"
-
-# Set location of error page (will follow localization rules based on this path)
-#WAM_ERROR_PAGE="file:///usr/share/localization/wam/loaderror.html"
-
-# suspending javascript execution delay for page visibility
-WAM_SUSPEND_DELAY_IN_MS=250
-
-#if [ -e "etc/wam/make_shm.sh" ] ; then
-# /etc/wam/make_shm.sh
-#fi
-
-# Set user data directory for WebAppMgr
-##### AGL: set by WebAppMgr@.service (depends on user)
-#WAM_DATA_PATH="/home/%i/wamdata"
-
-# ensure that wam data directories exist
-#mkdir -p ${WAM_DATA_PATH}
-
-# set directories permission
-#chown ${WAM_UID}:${WAM_GID} ${WAM_DATA_PATH}
-
-# setup 50 Mb maximum for ApplicationCache
-WAM_APPCACHE_MAXSIZE=52428800
-
-# setup 10 Mb maximum for ApplicationCache per domain
-WAM_APPCACHE_DOMAINLIMIT=10485760
-
-# setup 50 Mb maximum for DiskCache
-WAM_DISKCACHE_MAXSIZE=52428800
-
-# setup 256 Kb maximum for resource buffer allocation
-WAM_RESOURCE_BUFFER_MAX_ALLOC_SIZE=262144
-
-# setup 1 Mb for resource buffer
-WAM_RESOURCE_BUFFER_SIZE=1048576
-
-# setup 200 seconds for watchdog timeout of render process
-WATCHDOG_RENDER_TIMEOUT=200
-
-# setup nubmer of raster threads to 1
-BLINK_NUM_RASTER_THREADS=2
-
-# use default tile width if not sed by recipe
-#if [ "$BLINK_NUM_RASTER_THREADS" = "WEBOS${BLINK_NUM_RASTER_THREADS#WEBOS}" ]; then
-BLINK_NUM_RASTER_THREADS=1
-#fi
-
-# setup 6 Mb maximum for the program GPU cache
-GPU_PROGRAM_CACHE_SIZE=6144
-
-# disable using enyo system app specfic optimization
-# currently used optimizations : inline caching off
-#USE_SYSTEM_APP_OPTIMIZATION="0"
-
-# Set location of NaCl modules
-#CHROMIUM_PATH="/usr/palm/applications/com.lge.app.chromium"
-#NACL_PLUGIN=${CHROMIUM_PATH}"/libppGoogleNaClPluginChrome.so"
-#NACL_IRT_LIBRARY=${CHROMIUM_PATH}"/nacl_irt_arm.nexe"
-#NACL_HELPER=${CHROMIUM_PATH}"/nacl_helper"
-#NACL_HELPER_BOOTSTRAP=${CHROMIUM_PATH}"/nacl_helper_bootstrap"
-
-# Set location of NPAPI plugins for all Apps including default Apps
-# This is for the flash plugin of Signage, webOS TV doesn't use it.
-#PRIVILEGED_PLUGIN_PATH=""
-
-# Set location of NPAPI plugins for NetCast Apps
-# NetCast Apps should access only the plugins in this path
-#NETCAST_PLUGIN_PATH="/usr/lib/BrowserPlugins"
-
-# Set location of NPAPI plugins for HbbTV app.
-#HBBTV_PLUGIN_PATH="/usr/lib/HbbtvPlugins"
-
-# Set InetTV player stored path
-#INETTV_HTML_PLAYER_PATH="/usr/share/inettv/inettv_player/index.html"
-
-# Set location of extra libraries
-#CDM_LIB_PATH="/usr/lib"
-
-# Set location of all NPAPI plugins
-NPAPI_PLUGIN_PATH=${HBBTV_PLUGIN_PATH}":"${NETCAST_PLUGIN_PATH}":"${PRIVILEGED_PLUGIN_PATH}
-
-#if [ -e "etc/wam/make_shm.sh" ] ; then
-# /etc/wam/make_shm.sh
-#fi
-
-# setup 8 Mb minimum codecache capacity
-JSC_minGlobalCodeCacheCapacity=8388608
-
-# Enable more explicit logging of timing with regards to rendering
-# export WAM2_ENABLE_DEBUG_RENDER_TIMING=1
-
-# enable Web Inspector and Tellurium if in developer mode
-TELLURIUM_NUB_PATH=/usr/palm/tellurium/telluriumnub.js
-ENABLE_INSPECTOR=1
-
-# Enable cursor by default
-ENABLE_CURSOR_BY_DEFAULT=1
-
-# Enable launch optimization
-ENABLE_LAUNCH_OPTIMIZATION=1
-
-# Set the duration(seconds) passed from last network activity (e.g. FMP Detector)
-# If set to a positive value, adjust a custom timeout for a network stable timer in FMPDetector
-NETWORK_STABLE_TIMEOUT=3
-
-# please keep it in alphabetical order
-#WAM_EXTRA_FLAGS=""
-#WAM_JS_FLAGS=""
-#WAM_COMMON_SWITCHES=" \
-# --application-cache-domain-limit=$WAM_APPCACHE_DOMAINLIMIT \
-# --application-cache-size=$WAM_APPCACHE_MAXSIZE \
-# --browser-subprocess-path=$WAM_EXE_PATH \
-# --disable-direct-npapi-requests \
-# --disable-extensions \
-# --disable-low-res-tiling \
-# --disable-new-video-renderer \
-# --disk-cache-size=$WAM_DISKCACHE_MAXSIZE \
-# --enable-aggressive-release-policy \
-# --enable-accelerated-plugin-rendering \
-# --accelerated-plugin-rendering-blacklist=device;drmAgent;sound;service \
-# --enable-gpu-rasterization \
-# --disable-gpu-rasterization-for-first-frame \
-# --enable-key-event-throttling \
-# --enable-threaded-compositing \
-# --enable-watchdog \
-# --hide-selection-handles \
-# --ignore-gpu-blacklist \
-# --ignore-netif=p2p \
-# --in-process-gpu \
-# --max-unused-resource-memory-usage-percentage=0 \
-# --network-stable-timeout=$NETWORK_STABLE_TIMEOUT \
-# --noerrdialogs \
-# --num-raster-threads=$BLINK_NUM_RASTER_THREADS \
-# --ozone-platform=wayland \
-# --remote-debugging-port=9998 \
-# --resource-buffer-max-allocation-size=$WAM_RESOURCE_BUFFER_MAX_ALLOC_SIZE \
-# --resource-buffer-size=$WAM_RESOURCE_BUFFER_SIZE \
-# --touch-events=disabled \
-# --ui-disable-opaque-shader-program \
-# --user-agent-suffix=SmartTV \
-# --user-data-dir=$WAM_DATA_PATH \
-# --enable-devtools-experiments \
-# --webos-wam \ "
-
-#WAM_LITE_SWITCHES=" --in-process-zygote "
-
-#export WAM_WEBOS_LITE=NO
-#if [ "${WAM_WEBOS_LITE}" = "YES" ] ; then
-# export WAM_SWITCHES=${WAM_COMMON_SWITCHES}${WAM_LITE_SWITCHES}
-# export SKIA_FONT_CACHE_SIZE=1
-# export SKIA_IMAGE_CACHE_SIZE=40
-# export SKIA_BACKGROUND_FONT_CACHE_SIZE=0
-#else
-# export WAM_SWITCHES=${WAM_COMMON_SWITCHES}
-# export SKIA_FONT_CACHE_SIZE=8
-# export SKIA_IMAGE_CACHE_SIZE=80
-# export SKIA_BACKGROUND_FONT_CACHE_SIZE=512
-#fi
-
-#export WAM_EXTRA_SKIA_CACHE_SWITCHES=" \
-# --skia-font-cache-size-mb=$SKIA_FONT_CACHE_SIZE \
-# --skia-image-cache-size-mb=$SKIA_IMAGE_CACHE_SIZE \
-# --skia-background-font-cache-size-kb=$SKIA_BACKGROUND_FONT_CACHE_SIZE \
-# "
-
-#export WAM_EXTRA_GPU_TUNING_SWITCHES=" \
-# --gpu-program-cache-size-kb=$GPU_PROGRAM_CACHE_SIZE \
-# "
-#export WAM_WATCHDOG_RENDER_TIMEOUT_SWITCHES=" \
-# --watchdog-render-timeout=$WATCHDOG_RENDER_TIMEOUT \
-# "
-
-#WEBOS_LOAD_ACCESSIBILITY_PLUGIN=1
-
-#WAM_V8_CODE_CACHE_SWITCHES=" --enable-local-resource-code-cache --disallow-code-cache-from-file-uris-with-query-string "
-
-# Load any special configuration from plugins
-#if [ -e "/etc/wam/plugins/conf.sh" ] ; then
-# . /etc/wam/plugins/conf.sh || true
-#fi
-
-#exec $WAM_EXE_PATH $WAM_SWITCHES $WAM_EXTRA_SKIA_CACHE_SWITCHES $WAM_EXTRA_GPU_TUNING_SWITCHES $WAM_WATCHDOG_RENDER_TIMEOUT_SWITCHES $WAM_EXTRA_FLAGS $WAM_V8_CODE_CACHE_SWITCHES --js-flags="$WAM_JS_FLAGS"
-
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service
deleted file mode 100644
index 09573a76..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service
+++ /dev/null
@@ -1,36 +0,0 @@
-# @@@LICENSE
-#
-# Copyright (c) 2017-2018 LG Electronics, Inc.
-#
-# Confidential computer software. Valid license from LG required for
-# possession, use or copying. Consistent with FAR 12.211 and 12.212,
-# Commercial Computer Software, Computer Software Documentation, and
-# Technical Data for Commercial Items are licensed to the U.S. Government
-# under vendor's standard commercial license.
-#
-# LICENSE@@@
-
-[Unit]
-Description="WebAppMgr is responsible for running web apps and manage their lifecycle"
-After=afm-service-homescreen-service--0.1--main@%i.service afm-service-windowmanager-service--0.1--main@%i.service
-Wants=afm-service-homescreen-service--0.1--main@%i.service afm-service-windowmanager-service--0.1--main@%i.service
-
-[Service]
-Type=simple
-User=%i
-Slice=user-%i.slice
-SmackProcessLabel=System
-SupplementaryGroups=audio display
-UMask=0077
-CapabilityBoundingSet=
-OOMScoreAdjust=-1000
-EnvironmentFile=-/etc/default/WebAppMgr.env
-Environment=XDG_RUNTIME_DIR=/run/user/%i
-Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus
-Environment=WAM_DATA_PATH="/home/%i/wamdata"
-ExecStart=/usr/bin/WebAppMgr --no-sandbox --in-process-gpu --remote-debugging-port=9998 --user-data-dir="/home/%i/wamdata" --webos-wam
-Restart=on-failure
-RestartSec=50
-
-[Install]
-WantedBy=default.target
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch
deleted file mode 100644
index 63ad8208..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 870dd9c0e80d2f7ce843399f606299629ae7b570 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= <jaragunde@igalia.com>
-Date: Thu, 23 Jan 2020 11:57:23 +0100
-Subject: [PATCH] Set webapp roles that are max 12 characters long.
-
-This is a workaround for SPEC-3127. To prevent repeated roles as much
-as possible, I'm using the appid as a basis instead of "Webapp-" +
-host + port, which has many chances to be redundant in the first 12
-chars.
-
-Bug-AGL: SPEC-3127
----
- src/agl/WebRuntimeAGL.cpp | 10 +++-------
- 1 file changed, 3 insertions(+), 7 deletions(-)
-
-diff --git a/src/agl/WebRuntimeAGL.cpp b/src/agl/WebRuntimeAGL.cpp
-index a919759..baa2708 100644
---- a/src/agl/WebRuntimeAGL.cpp
-+++ b/src/agl/WebRuntimeAGL.cpp
-@@ -162,7 +162,6 @@ int WebAppLauncherRuntime::run(int argc, const char** argv) {
- bool isWaitHostService = isWaitForHostService(args);
- m_id = getAppId(args);
- m_url = getAppUrl(args);
-- m_role = "WebApp";
-
- if(isWaitHostService) {
- while(!WebAppManagerServiceAGL::instance()->isHostServiceRunning()) {
-@@ -220,15 +219,9 @@ bool WebAppLauncherRuntime::init() {
- if (n != std::string::npos) {
- std::string sport = authority.substr(n+1);
- m_host = authority.substr(0, n);
-- m_role.push_back('-');
-- m_role.append(m_host);
-- m_role.push_back('-');
-- m_role.append(sport);
- m_port = stringTo<int>(sport);
- } else {
- m_host = authority;
-- m_role.push_back('-');
-- m_role.append(m_host);
- }
- }
-
-@@ -265,6 +258,9 @@ bool WebAppLauncherRuntime::init() {
- m_role = "homescreen";
- else if (m_id.rfind("webapps-homescreen", 0) == 0)
- m_role = "homescreen";
-+ else {
-+ m_role = m_id.substr(0,12);
-+ }
-
- LOG_DEBUG("id=[%s], name=[%s], role=[%s], url=[%s], host=[%s], port=%d, token=[%s]",
- m_id.c_str(), m_name.c_str(), m_role.c_str(), m_url.c_str(),
diff --git a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb b/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb
deleted file mode 100644
index 2ccd6e63..00000000
--- a/meta-agl-devel/meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "WAM"
-AUTHOR = "Jani Hautakangas <jani.hautakangas@lge.com>"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit cmake
-
-DEPENDS = "glib-2.0 jsoncpp boost chromium68 wayland-ivi-extension libhomescreen libwindowmanager"
-
-EXTRA_OECMAKE = "\
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_INSTALL_PREFIX=${prefix} \
- -DPLATFORM_NAME=${@'${DISTRO}'.upper().replace('-', '_')} \
- -DCHROMIUM_SRC_DIR=${STAGING_INCDIR}/chromium68"
-
-PR="r0"
-
-PROVIDES += "virtual/webruntime"
-RPROVIDES_${PN} += "virtual/webruntime"
-
-SRC_URI = "\
- git://github.com/webosose/${PN}.git;branch=@6.agl.icefish;protocol=https \
- file://WebAppMgr@.service \
- file://WebAppMgr.env \
- file://trunc-webapp-roles.patch \
-"
-S = "${WORKDIR}/git"
-SRCREV = "060043b40ffc9fafcf94eec832c2158e81c74f32"
-
-do_install_append() {
- install -d ${D}${sysconfdir}/wam
- install -v -m 644 ${S}/files/launch/security_policy.conf ${D}${sysconfdir}/wam/security_policy.conf
- install -d ${D}${systemd_system_unitdir}
- install -v -m 644 ${WORKDIR}/WebAppMgr@.service ${D}${systemd_system_unitdir}/WebAppMgr@.service
- install -d ${D}${sysconfdir}/default/
- install -v -m 644 ${WORKDIR}/WebAppMgr.env ${D}${sysconfdir}/default/WebAppMgr.env
- ln -snf WebAppMgr ${D}${bindir}/web-runtime
- install -d ${D}${systemd_system_unitdir}/afm-user-session@.target.wants
- ln -sf ../WebAppMgr@.service ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/
-}
-
-FILES_${PN} += "${sysconfdir}/init ${sysconfdir}/wam ${libdir}/webappmanager/plugins/*.so ${systemd_system_unitdir}"
-
-CXXFLAGS_append_agl-devel = " -DAGL_DEVEL"
-
-do_install_append_agl-devel() {
- # Enable remote inspector and dev mode
- install -d ${D}${localstatedir}/agl-devel/preferences
- touch ${D}${localstatedir}/agl-devel/preferences/debug_system_apps
- touch ${D}${localstatedir}/agl-devel/preferences/devmode_enabled
-}
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/README.md b/meta-agl-devel/meta-audio-soundmanager-framework/README.md
deleted file mode 100644
index 751a3c2d..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-This README file contains information on the contents of the
-soundmanager layer.
-
-Please see the corresponding sections below for details.
-
-How to enable the framework
-=================
-In order to enable the soundmanager audio framework features,
-please add the feature of "agl-audio-soundmanager-framework"
-in the source command which enables bitbake.
-
-$ source meta-agl/scripts/aglsetup.sh -m <machine> agl-demo agl-audio-soundmanager-framework
-
-
-Reference
-=================
-http://docs.automotivelinux.org/docs/apis_services/en/dev/reference/hmi-framework/3_3-SoundManager-Guide.html
-
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/conf/layer.conf b/meta-agl-devel/meta-audio-soundmanager-framework/conf/layer.conf
deleted file mode 100644
index 121a1f13..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/conf/layer.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH .= ":${LAYERDIR}"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
- ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "audio-soundmanager-framework"
-BBFILE_PATTERN_audio-soundmanager-framework = "^${LAYERDIR}/"
-BBFILE_PRIORITY_audio-soundmanager-framework = "6"
-
-LAYERSERIES_COMPAT_audio-soundmanager-framework = "thud"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0001-Fix-build-with-systemd-209.patch b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0001-Fix-build-with-systemd-209.patch
deleted file mode 100644
index 5bf6bf88..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0001-Fix-build-with-systemd-209.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 8080b7395c1638baee60fb3c46667f21e00b87fb Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Erik=20Bot=C3=B6?= <erik.boto@pelagicore.com>
-Date: Fri, 4 Apr 2014 10:59:18 +0200
-Subject: [PATCH 1/4] Fix build with systemd >= 209
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Inappropriate [Configuration Specific]
-Signed-off-by: Erik Botö <erik.boto@pelagicore.com>
----
- src/system/CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/system/CMakeLists.txt b/src/system/CMakeLists.txt
-index ce87914..1d0d224 100644
---- a/src/system/CMakeLists.txt
-+++ b/src/system/CMakeLists.txt
-@@ -23,7 +23,7 @@ set(dlt_system_SRCS dlt-system.c dlt-system-options.c dlt-system-process-handlin
- dlt-system-syslog.c dlt-system-watchdog.c dlt-system-journal.c)
- add_executable(dlt-system ${dlt_system_SRCS} ${systemd_SRCS})
- if(WITH_SYSTEMD_JOURNAL)
-- target_link_libraries(dlt-system dlt ${ZLIB_LIBRARIES} systemd-journal systemd-id128)
-+ target_link_libraries(dlt-system dlt ${ZLIB_LIBRARIES} systemd)
- else(WITH_SYSTEMD_JOURNAL)
- target_link_libraries(dlt-system dlt ${ZLIB_LIBRARIES})
- endif(WITH_SYSTEMD_JOURNAL)
---
-1.9.3
-
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch
deleted file mode 100644
index 16884799..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0002-Don-t-execute-processes-as-a-specific-user.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From bcca4c99394ba422d03a5e76f2a0023ef248824a Mon Sep 17 00:00:00 2001
-From: Andrei Gherzan <andrei.gherzan@windriver.com>
-Date: Tue, 18 Nov 2014 15:47:22 +0100
-Subject: [PATCH 2/4] Don't execute processes as a specific user.
-
-Upstream-Status: Inappropriate [Configuration Specific]
-Signed-off-by: Andrei Gherzan <andrei.gherzan@windriver.com>
----
- systemd/dlt-adaptor-udp.service.cmake | 1 -
- systemd/dlt-example-user.service.cmake | 1 -
- systemd/dlt-receive.service.cmake | 1 -
- systemd/dlt-system.service.cmake | 1 -
- systemd/dlt.service.cmake | 1 -
- 5 files changed, 5 deletions(-)
-
-diff --git a/systemd/dlt-adaptor-udp.service.cmake b/systemd/dlt-adaptor-udp.service.cmake
-index 8dac1f2..ecf9f9e 100644
---- a/systemd/dlt-adaptor-udp.service.cmake
-+++ b/systemd/dlt-adaptor-udp.service.cmake
-@@ -21,9 +21,8 @@ Wants=dlt.service
-
- [Service]
- Type=simple
--User=@DLT_USER@
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-adaptor-udp -a @DLT_ADAPTOR_UDP_APPID@ -c @DLT_ADAPTOR_UDP_CTID@ -p @DLT_ADAPTOR_UDP_PORT@
- LimitCORE=infinity
-
- [Install]
--WantedBy=multi-user.target
-\ No newline at end of file
-+WantedBy=multi-user.target
-diff --git a/systemd/dlt-example-user.service.cmake b/systemd/dlt-example-user.service.cmake
-index b665742..35009b0 100644
---- a/systemd/dlt-example-user.service.cmake
-+++ b/systemd/dlt-example-user.service.cmake
-@@ -21,6 +21,5 @@ Wants=dlt.service
-
- [Service]
- Type=simple
--User=@DLT_USER@
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-example-user "Hallo from GENIVI DLT example user application"
--LimitCORE=infinity
-\ No newline at end of file
-+LimitCORE=infinity
-diff --git a/systemd/dlt-receive.service.cmake b/systemd/dlt-receive.service.cmake
-index c07d447..8f88f00 100644
---- a/systemd/dlt-receive.service.cmake
-+++ b/systemd/dlt-receive.service.cmake
-@@ -22,6 +22,5 @@ Wants=dlt.service
-
- [Service]
- Type=simple
--User=@DLT_USER@
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-receive -o /tmp/dlt_receive_log.dlt localhost
--LimitCORE=infinity
-\ No newline at end of file
-+LimitCORE=infinity
-diff --git a/systemd/dlt-system.service.cmake b/systemd/dlt-system.service.cmake
-index 0e91f42..1a5b913 100755
---- a/systemd/dlt-system.service.cmake
-+++ b/systemd/dlt-system.service.cmake
-@@ -22,7 +22,6 @@ Wants=dlt.service
-
- [Service]
- Type=simple
--User=@DLT_USER@
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-system
- WatchdogSec=@DLT_WatchdogSec@
- NotifyAccess=main
-diff --git a/systemd/dlt.service.cmake b/systemd/dlt.service.cmake
-index 0b3ee2c..e4753a2 100755
---- a/systemd/dlt.service.cmake
-+++ b/systemd/dlt.service.cmake
-@@ -21,7 +21,6 @@ Documentation=man:dlt-daemon(1) man:dlt.conf(5)
-
- [Service]
- Type=simple
--User=@DLT_USER@
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-daemon
- WatchdogSec=@DLT_WatchdogSec@
- NotifyAccess=main
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch
deleted file mode 100644
index 691a5002..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 6804c68ed61f4436818c58cb0abe1c21b4d48aea Mon Sep 17 00:00:00 2001
-From: Andrei Gherzan <andrei.gherzan@windriver.com>
-Date: Tue, 18 Nov 2014 15:48:50 +0100
-Subject: [PATCH 3/4] systemd/*: unit type should be in lowercase, so use
- Type=simple
-
-Upstream-Status: Submitted [http://lists.genivi.org/pipermail/genivi-diagnostic-log-and-trace/2014-October/000546.html]
-Signed-off-by: Andrei Gherzan <andrei.gherzan@windriver.com>
----
- systemd/dlt-adaptor-udp.service.cmake | 2 +-
- systemd/dlt-dbus.service.cmake | 2 +-
- systemd/dlt-example-user.service.cmake | 2 +-
- systemd/dlt-receive.service.cmake | 2 +-
- systemd/dlt-system.service.cmake | 2 +-
- systemd/dlt.service.cmake | 2 +-
- 6 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/systemd/dlt-adaptor-udp.service.cmake b/systemd/dlt-adaptor-udp.service.cmake
-index f446757..81a7158 100644
---- a/systemd/dlt-adaptor-udp.service.cmake
-+++ b/systemd/dlt-adaptor-udp.service.cmake
-@@ -19,7 +19,7 @@ Description=GENIVI DLT adaptor stdin. Adaptor for forwarding received UDP messag
- Wants=dlt.service
-
- [Service]
--Type=Simple
-+Type=simple
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-adaptor-udp -a @DLT_ADAPTOR_UDP_APPID@ -c @DLT_ADAPTOR_UDP_CTID@ -p @DLT_ADAPTOR_UDP_PORT@
- LimitCORE=infinity
-
-diff --git a/systemd/dlt-dbus.service.cmake b/systemd/dlt-dbus.service.cmake
-index d1e3b12..75dcdc3 100755
---- a/systemd/dlt-dbus.service.cmake
-+++ b/systemd/dlt-dbus.service.cmake
-@@ -20,7 +20,7 @@ Documentation=man:dlt-dbus(1) man:dlt-dbus.conf(5)
- Wants=dlt.service
-
- [Service]
--Type=Simple
-+Type=simple
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-dbus
- WatchdogSec=@DLT_WatchdogSec@
- NotifyAccess=main
-diff --git a/systemd/dlt-example-user.service.cmake b/systemd/dlt-example-user.service.cmake
-index b67a83c..fe9c567 100644
---- a/systemd/dlt-example-user.service.cmake
-+++ b/systemd/dlt-example-user.service.cmake
-@@ -19,6 +19,6 @@ Description=GENIVI DLT example user. Generate DLT messages and store them to fil
- Wants=dlt.service
-
- [Service]
--Type=Simple
-+Type=simple
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-example-user "Hallo from GENIVI DLT example user application"
- LimitCORE=infinity
-\ No newline at end of file
-diff --git a/systemd/dlt-receive.service.cmake b/systemd/dlt-receive.service.cmake
-index 4bbdfc2..3b47dd3 100644
---- a/systemd/dlt-receive.service.cmake
-+++ b/systemd/dlt-receive.service.cmake
-@@ -20,6 +20,6 @@ Documentation=man:dlt-receive(1)
- Wants=dlt.service
-
- [Service]
--Type=Simple
-+Type=simple
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-receive -o /tmp/dlt_receive_log.dlt localhost
- LimitCORE=infinity
-\ No newline at end of file
-diff --git a/systemd/dlt-system.service.cmake b/systemd/dlt-system.service.cmake
-index 7ec995c..d4a4c96 100755
---- a/systemd/dlt-system.service.cmake
-+++ b/systemd/dlt-system.service.cmake
-@@ -20,7 +20,7 @@ Documentation=man:dlt-system(1) man:dlt-system.conf(5)
- Wants=dlt.service
-
- [Service]
--Type=Simple
-+Type=simple
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-system
- WatchdogSec=@DLT_WatchdogSec@
- NotifyAccess=main
-diff --git a/systemd/dlt.service.cmake b/systemd/dlt.service.cmake
-index 7bb05bc..5386ffd 100755
---- a/systemd/dlt.service.cmake
-+++ b/systemd/dlt.service.cmake
-@@ -19,7 +19,7 @@ Description=GENIVI DLT logging daemon
- Documentation=man:dlt-daemon(1) man:dlt.conf(5)
-
- [Service]
--Type=Simple
-+Type=simple
- ExecStart=@CMAKE_INSTALL_PREFIX@/bin/dlt-daemon
- WatchdogSec=@DLT_WatchdogSec@
- NotifyAccess=main
---
-1.9.3
-
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch
deleted file mode 100644
index 685dfcdd..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon/0004-Modify-systemd-config-directory.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 9a5e655cf57301008cd61d53c8a410a7f397e650 Mon Sep 17 00:00:00 2001
-From: Andrei Gherzan <andrei.gherzan@windriver.com>
-Date: Tue, 18 Nov 2014 15:51:30 +0100
-Subject: [PATCH 4/4] Modify systemd config directory
-
-Upstream-Status: Inappropriate [Configuration Specific]
-Signed-off-by: Andrei Gherzan <andrei.gherzan@windriver.com>
----
- systemd/CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e6b44a2..0e885bf 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -175,7 +175,7 @@ if(WITH_SYSTEMD OR WITH_SYSTEMD_WATCHDOG OR WITH_SYSTEMD_JOURNAL)
-
- set( systemd_SRCS ${CMAKE_SOURCE_DIR}/systemd/3rdparty/sd-daemon.c)
-
-- set(SYSTEMD_UNITDIR "${CMAKE_INSTALL_PREFIX}/lib/systemd/system" CACHE PATH
-+ set(SYSTEMD_UNITDIR "/lib/systemd/system" CACHE PATH
- "Set directory to install systemd unit files")
-
- add_subdirectory( systemd )
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon_2.11.1.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon_2.11.1.bb
deleted file mode 100644
index b521bca9..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon_2.11.1.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "Diagnostic Log and Trace"
-DESCRIPTION = "This component provides a standardised log and trace interface, \
-based on the standardised protocol specified in the AUTOSAR standard 4.0 DLT. \
-This component can be used by GENIVI components and other applications as \
-logging facility providing: \
-- the DLT shared library \
-- the DLT daemon, including startup scripts \
-- the DLT daemon adaptors- the DLT client console utilities \
-- the DLT test applications"
-HOMEPAGE = "https://www.genivi.org/"
-SECTION = "console/utils"
-LICENSE = "MPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=99ba60c3fad7eaf8c56bca6dd75cba09 \
- file://MPL.txt;md5=ccdb2761cef70c8b2612624c323f89dc"
-
-DEPENDS = "dbus zlib pigz-native"
-do_unpack[depends] += "pigz-native:do_populate_sysroot"
-
-# FIX ME
-# This should be TAG = "v${PV}" but yocto doesn't support lightweight tags for now
-# https://bugzilla.yoctoproject.org/show_bug.cgi?id=6881
-TAG = "b8b3ea3a31f7deb681941a19878c82e7b7350ae7"
-BRANCH = "v2.11.x"
-SRC_URI = "git://git.projects.genivi.org/${PN}.git;branch=${BRANCH};tag=${TAG} \
- file://0001-Fix-build-with-systemd-209.patch \
- file://0002-Don-t-execute-processes-as-a-specific-user.patch \
- file://0003-systemd-unit-type-should-be-in-lowercase-so-use-Type.patch \
- file://0004-Modify-systemd-config-directory.patch"
-S = "${WORKDIR}/git"
-
-inherit autotools gettext cmake systemd
-
-# -fPIC is needed to prevent relocation errors when we compile gtest with
-# Yocto security flags. See this issue for more details:
-#
-# https://github.com/google/googletest/issues/854
-#
-# If that issue is fixed, we can probably remove the manual -fPIC flags here.
-OECMAKE_C_FLAGS += "-fPIC"
-OECMAKE_CXX_FLAGS += "-fPIC"
-
-PACKAGES += "${PN}-systemd"
-SYSTEMD_PACKAGES = "${PN} ${PN}-systemd"
-SYSTEMD_SERVICE_${PN} = "dlt-system.service dlt.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-SYSTEMD_SERVICE_${PN}-systemd = "dlt-example-user.service \
- dlt-dbus.service \
- dlt-adaptor-udp.service \
- dlt-receive.service"
-SYSTEMD_AUTO_ENABLE_${PN}-systemd = "disable"
-
-EXTRA_OECMAKE = "-DWITH_SYSTEMD=ON"
-
-FILES_${PN}-doc += "/usr/share/dlt-filetransfer"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon_2.15.0.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon_2.15.0.bb
deleted file mode 100644
index dbc87c9a..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-extended/dlt-daemon/dlt-daemon_2.15.0.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "Diagnostic Log and Trace"
-DESCRIPTION = "This component provides a standardised log and trace interface, \
-based on the standardised protocol specified in the AUTOSAR standard 4.0 DLT. \
-This component can be used by GENIVI components and other applications as \
-logging facility providing: \
-- the DLT shared library \
-- the DLT daemon, including startup scripts \
-- the DLT daemon adaptors- the DLT client console utilities \
-- the DLT test applications"
-HOMEPAGE = "https://www.genivi.org/"
-SECTION = "console/utils"
-LICENSE = "MPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8184208060df880fe3137b93eb88aeea"
-
-DEPENDS = "dbus zlib pigz-native"
-do_unpack[depends] += "pigz-native:do_populate_sysroot"
-
-SRCREV = "e9a486a08fff6d3cc7133a350cec3ee10f463207"
-SRC_URI = "git://git.projects.genivi.org/${BPN}.git;protocol=http \
- file://0002-Don-t-execute-processes-as-a-specific-user.patch \
- file://0004-Modify-systemd-config-directory.patch \
- "
-S = "${WORKDIR}/git"
-
-inherit autotools gettext cmake systemd
-
-# -fPIC is needed to prevent relocation errors when we compile gtest with
-# Yocto security flags. See this issue for more details:
-#
-# https://github.com/google/googletest/issues/854
-#
-# If that issue is fixed, we can probably remove the manual -fPIC flags here.
-OECMAKE_C_FLAGS += "-fPIC"
-OECMAKE_CXX_FLAGS += "-fPIC"
-
-PACKAGES += "${PN}-systemd"
-SYSTEMD_PACKAGES = "${PN} ${PN}-systemd"
-SYSTEMD_SERVICE_${PN} = "dlt-system.service dlt.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-SYSTEMD_SERVICE_${PN}-systemd = "dlt-example-user.service \
- dlt-dbus.service \
- dlt-adaptor-udp.service \
- dlt-receive.service"
-SYSTEMD_AUTO_ENABLE_${PN}-systemd = "disable"
-
-EXTRA_OECMAKE = "-DWITH_SYSTEMD=ON"
-
-FILES_${PN}-doc += "/usr/share/dlt-filetransfer"
-
-do_install_append() {
- rm -f ${D}${bindir}/dlt-test-*
-}
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/agl-service-audio-soundmanager/agl-service-audio-soundmanager_1.0.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/agl-service-audio-soundmanager/agl-service-audio-soundmanager_1.0.bb
deleted file mode 100644
index a10e825e..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/agl-service-audio-soundmanager/agl-service-audio-soundmanager_1.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Sound Manager binding"
-DESCRIPTION = "Sound Manager is the service binding to communicate \
- with Genivi Audio Manager. Genivi Audio Manager is \
- the policy manager for sound. It controls volume \
- and routing according to various situations. \
- "
-HOMEPAGE = "https://wiki.automotivelinux.org/soundmanager"
-SECTION = "multimedia"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-DEPENDS = "dbus glib-2.0 af-binder json-c"
-RDEPENDS_${PN} = "audiomanager audiomanager-plugins"
-
-inherit cmake aglwgt
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-soundmanager;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "5106b9d03108792b2594b553e00c149945ac6f97"
-S = "${WORKDIR}/git"
-PV = "1.0+git${SRCPV}"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amcp_dbus.conf b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amcp_dbus.conf
deleted file mode 100644
index 49544d5e..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amcp_dbus.conf
+++ /dev/null
@@ -1,20 +0,0 @@
-<!-- This configuration file specifies the required security policies
-to use the audiomanager command d-bus plugin interface. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
-"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <!-- ../system.conf have denied everything, so we just punch some holes -->
- <policy user="root">
- <allow own="org.genivi.audiomanager"/>
- <allow own="org.genivi.audiomanager.command"/>
- <allow send_destination="org.genivi.audiomanager"/>
- <allow send_destination="org.genivi.audiomanager.command"/>
- </policy>
- <policy at_console="true">
- <allow send_destination="org.genivi.audiomanager"/>
- </policy>
- <policy context="default">
- <allow send_destination="org.genivi.audiomanager"/>
- </policy>
-</busconfig>
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amrp_dbus.conf b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amrp_dbus.conf
deleted file mode 100644
index 6832d305..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amrp_dbus.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-<!-- This configuration file specifies the required security policies
-to use the audiomanager routing d-bus plugin interface. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
-"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <!-- ../system.conf have denied everything, so we just punch some holes -->
- <policy user="root">
- <allow own="org.genivi.audiomanager"/>
- <allow own="org.genivi.audiomanager.routing"/>
- <allow send_destination="org.genivi.audiomanager"/>
- <allow send_destination="org.genivi.audiomanager.routing"/>
- </policy>
- <policy at_console="true">
- <allow send_destination="org.genivi.audiomanager"/>
- </policy>
- <policy context="default">
- <allow send_destination="org.genivi.audiomanager"/>
- </policy>
-</busconfig>
-
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/configuration.xml b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/configuration.xml
deleted file mode 100644
index 3dc69c12..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/configuration.xml
+++ /dev/null
@@ -1,516 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<c:configuration xmlns:c="controller" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="controller audiomanagertypes.xsd ">
- <listSources>
- <source>
- <id>0</id>
- <domainName>UNKNOWN</domainName>
- <name>SourceTemplate</name>
- <volume>0</volume>
- <visible>TRUE</visible>
- <className>UNKNOWN</className>
- <sourceState>SS_OFF</sourceState>
- <connectionFormat>CF_GENIVI_STEREO</connectionFormat>
- <connectionFormat>CF_GENIVI_MONO</connectionFormat>
- <interruptState>IS_OFF</interruptState>
- <availability>
- <availability>A_AVAILABLE</availability>
- <availabilityReason>AR_UNKNOWN</availabilityReason>
- </availability>
- <soundProperty>
- <type>SP_GENIVI_TREBLE</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <soundProperty>
- <type>SP_GENIVI_MID</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <soundProperty>
- <type>SP_GENIVI_BASS</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_TREBLE</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_MID</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_BASS</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <registrationType>REG_TEMPLATE</registrationType>
- <isVolumeSupported>TRUE</isVolumeSupported>
- <priority>1</priority>
- <listMainSoundPropertiesToSoundProperties>
- <mapEntry>MSP_UNKNOWN,SP_UNKNOWN</mapEntry>
- <mapEntry>MSP_GENIVI_TREBLE,SP_GENIVI_TREBLE</mapEntry>
- </listMainSoundPropertiesToSoundProperties>
- </source>
- <source baseName="SourceTemplate">
- <id>0</id>
- <domainName>SoundManager</domainName>
- <name>mediaplayer</name>
- <className>BASE</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- <source baseName="SourceTemplate">
- <id>2</id>
- <domainName>SoundManager</domainName>
- <name>ALSA#Playback</name>
- <className>BASE</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- <source baseName="SourceTemplate">
- <id>3</id>
- <domainName>SoundManager</domainName>
- <name>music</name>
- <className>BASE</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- <source baseName="SourceTemplate">
- <id>4</id>
- <domainName>SoundManager</domainName>
- <name>Navi</name>
- <className>INT</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- <source baseName="SourceTemplate">
- <id>5</id>
- <domainName>SoundManager</domainName>
- <name>phone</name>
- <className>PHONE</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- <source baseName="SourceTemplate">
- <id>0</id>
- <domainName>SoundManager</domainName>
- <name>radio</name>
- <className>BASE</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- </listSources>
- <listSinks>
- <sink>
- <id>0</id>
- <domainName>UNKNOWN</domainName>
- <name>SinkTemplate</name>
- <volume>0</volume>
- <visible>TRUE</visible>
- <mainVolume>100</mainVolume>
- <className>BASE</className>
- <muteState>MS_UNMUTED</muteState>
- <connectionFormat>CF_GENIVI_STEREO</connectionFormat>
- <connectionFormat>CF_GENIVI_MONO</connectionFormat>
- <availability>
- <availability>A_AVAILABLE</availability>
- <availabilityReason>AR_GENIVI_NEWMEDIA</availabilityReason>
- </availability>
- <soundProperty>
- <type>SP_GENIVI_TREBLE</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <soundProperty>
- <type>SP_GENIVI_MID</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <soundProperty>
- <type>SP_GENIVI_BASS</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_TREBLE</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_MID</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_BASS</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <registrationType>REG_TEMPLATE</registrationType>
- <isVolumeSupported>TRUE</isVolumeSupported>
- <priority>1</priority>
- <listMainVolumesToNormalizedVolumes>
- <tableEntry>0,0.0</tableEntry>
- <tableEntry>1,0.01</tableEntry>
- <tableEntry>2,0.02</tableEntry>
- <tableEntry>3,0.03</tableEntry>
- <tableEntry>4,0.04</tableEntry>
- <tableEntry>5,0.05</tableEntry>
- <tableEntry>6,0.06</tableEntry>
- <tableEntry>7,0.07</tableEntry>
- <tableEntry>8,0.08</tableEntry>
- <tableEntry>9,0.09</tableEntry>
- <tableEntry>10,0.1</tableEntry>
- <tableEntry>11,0.11</tableEntry>
- <tableEntry>12,0.12</tableEntry>
- <tableEntry>14,0.14</tableEntry>
- <tableEntry>15,0.15</tableEntry>
- <tableEntry>17,0.17</tableEntry>
- <tableEntry>20,0.2</tableEntry>
- <tableEntry>22,0.22</tableEntry>
- <tableEntry>25,0.25</tableEntry>
- <tableEntry>28,0.28</tableEntry>
- <tableEntry>31,0.31</tableEntry>
- <tableEntry>35,0.35</tableEntry>
- <tableEntry>40,0.4</tableEntry>
- <tableEntry>45,0.45</tableEntry>
- <tableEntry>50,0.5</tableEntry>
- <tableEntry>56,0.56</tableEntry>
- <tableEntry>62,0.62</tableEntry>
- <tableEntry>70,0.7</tableEntry>
- <tableEntry>80,0.8</tableEntry>
- <tableEntry>90,0.9</tableEntry>
- <tableEntry>100,1.0</tableEntry>
- </listMainVolumesToNormalizedVolumes>
- <listNormalizedVolumesToDecibelVolumes>
- <tableEntry>0.0,-192.0</tableEntry>
- <tableEntry>0.01,-40.0</tableEntry>
- <tableEntry>0.02,-34.0</tableEntry>
- <tableEntry>0.03,-30.0</tableEntry>
- <tableEntry>0.04,-27.0</tableEntry>
- <tableEntry>0.05,-26.0</tableEntry>
- <tableEntry>0.06,-24.0</tableEntry>
- <tableEntry>0.07,-23.0</tableEntry>
- <tableEntry>0.08,-22.0</tableEntry>
- <tableEntry>0.09,-21.0</tableEntry>
- <tableEntry>0.1,-20.0</tableEntry>
- <tableEntry>0.11,-19.0</tableEntry>
- <tableEntry>0.12,-18.0</tableEntry>
- <tableEntry>0.14,-17.0</tableEntry>
- <tableEntry>0.15,-16.0</tableEntry>
- <tableEntry>0.17,-15.0</tableEntry>
- <tableEntry>0.2,-14.0</tableEntry>
- <tableEntry>0.22,-13.0</tableEntry>
- <tableEntry>0.25,-12.0</tableEntry>
- <tableEntry>0.28,-11.0</tableEntry>
- <tableEntry>0.31,-10.0</tableEntry>
- <tableEntry>0.35,-9.0</tableEntry>
- <tableEntry>0.4,-8.0</tableEntry>
- <tableEntry>0.45,-7.0</tableEntry>
- <tableEntry>0.5,-6.0</tableEntry>
- <tableEntry>0.56,-5.0</tableEntry>
- <tableEntry>0.62,-4.0</tableEntry>
- <tableEntry>0.7,-3.0</tableEntry>
- <tableEntry>0.8,-2.0</tableEntry>
- <tableEntry>0.9,-1.0</tableEntry>
- <tableEntry>1.0,0.0</tableEntry>
- </listNormalizedVolumesToDecibelVolumes>
- <listMainSoundPropertiesToSoundProperties>
- <mapEntry>MSP_UNKNOWN,SP_UNKNOWN</mapEntry>
- <mapEntry>MSP_GENIVI_TREBLE,SP_GENIVI_TREBLE</mapEntry>
- </listMainSoundPropertiesToSoundProperties>
- </sink>
- <sink baseName="SinkTemplate">
- <id>1</id>
- <domainName>SoundManager</domainName>
- <name>rsnd-dai.0-ak4642-hifi#Analog#Stereo</name>
- <className>BASE</className>
- <registrationType>REG_CONTROLLER</registrationType>
- </sink>
- <sink baseName="SinkTemplate">
- <id>2</id>
- <domainName>SoundManager</domainName>
- <name>Microchip#MOST:0#Multichannel</name>
- <className>BASE</className>
- <registrationType>REG_CONTROLLER</registrationType>
- </sink>
- </listSinks>
- <listGateways>
- <!-- This is a single domain example, therefore no gateway is present -->
- </listGateways>
- <listDomains>
- <domain>
- <id>0</id>
- <name>SoundManager</name>
- <busName>org.genivi.audiomanager</busName>
- <nodeName>SoundManager</nodeName>
- <early>FALSE</early>
- <complete>TRUE</complete>
- <state>DS_CONTROLLED</state>
- <registrationType>REG_ROUTER</registrationType>
- </domain>
- </listDomains>
- <listClasses>
- <class>
- <name>BASE</name>
- <type>C_PLAYBACK</type>
- <priority>1</priority>
- <topology>Microchip#MOST:0#Multichannel^rsnd-dai.0-ak4642-hifi#Analog#Stereo=mediaplayer^music^ALSA#Playback^radio</topology>
- </class>
- <class>
- <name>INT</name>
- <type>C_PLAYBACK</type>
- <priority>2</priority>
- <topology>Microchip#MOST:0#Multichannel^rsnd-dai.0-ak4642-hifi#Analog#Stereo=Navi</topology>
- </class>
- <class>
- <name>PHONE</name>
- <type>C_PLAYBACK</type>
- <priority>3</priority>
- <topology>Microchip#MOST:0#Multichannel^rsnd-dai.0-ak4642-hifi#Analog#Stereo=phone</topology>
- </class>
- </listClasses>
- <listPolicies>
- <!--Connect Policy Start-->
- <!--BASE Policy-->
- <policy>
- <trigger>USER_CONNECTION_REQUEST</trigger>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "BASE"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_DISCONNECT</type>
- <param>
- <className>"BASE"</className>
- <connectionState>CS_CONNECTED</connectionState>
- </param>
- </action>
- </process>
- </policy>
- <!--INT policy-->
- <policy>
- <trigger>USER_CONNECTION_REQUEST</trigger>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <action>
- <type>ACTION_LIMIT</type>
- <param>
- <className>"BASE"</className>
- <volume>-1000</volume>
- <pattern>01</pattern>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
- <condition>priority(CONNECTIONOFCLASS, REQUESTING, OTHERS) LT priority(CONNECTION, REQUESTING)</condition>
- <action>
- <type>ACTION_PUSH</type>
- <param>
- <className>"INT"</className>
- <order>O_NEWEST</order>
- </param>
- </action>
- <break>TRUE</break>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_PUSH</type>
- <param>
- <className>"INT"</className>
- <order>O_OLDEST</order>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, "PHONE") INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_MUTE</type>
- <param>
- <className>REQUESTING</className>
- </param>
- </action>
- <action>
- <type>ACTION_CONNECT</type>
- <param>
- <className>REQUESTING</className>
- </param>
- </action>
- <break>TRUE</break>
- </process>
- </policy>
- <!--PHONE policy-->
- <policy>
- <trigger>USER_CONNECTION_REQUEST</trigger>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
- <action>
- <type>ACTION_LIMIT</type>
- <param>
- <className>"BASE"</className>
- <volume>-1000</volume>
- <pattern>02</pattern>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, "INT") INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_MUTE</type>
- <param>
- <className>"INT"</className>
- </param>
- </action>
- </process>
- <process>
- <condition>name(SINK, REQUESTING) EQ "AMP"</condition>
- <action>
- <type>ACTION_CONNECT</type>
- <param>
- <className>REQUESTING</className>
- <timeOut>5000</timeOut>
- </param>
- </action>
- <break>TRUE</break>
- </process>
- </policy>
- <!--Connect policy end-->
- <!--Disconnect policy start-->
- <policy>
- <trigger>USER_DISCONNECTION_REQUEST</trigger>
- <process>
- <action>
- <type>ACTION_DISCONNECT</type>
- <param>
- <sourceName>REQUESTING</sourceName>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <action>
- <type>ACTION_UNLIMIT</type>
- <param>
- <className>"BASE"</className>
- <pattern>01</pattern>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_POP</type>
- <param>
- <className>"INT"</className>
- <order>O_OLDEST</order>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, "INT") INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_UNMUTE</type>
- <param>
- <className>"INT"</className>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
- <action>
- <type>ACTION_UNLIMIT</type>
- <param>
- <className>"BASE"</className>
- <pattern>02</pattern>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "BASE"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, "BASE") INC CS_SUSPENDED</condition>
- <action>
- <type>ACTION_RESUME</type>
- <param>
- <className>"BASE"</className>
- <connectionState>CS_SUSPENDED</connectionState>
- </param>
- </action>
- </process>
- </policy>
- <!-- default volume policy start -->
- <policy>
- <trigger>USER_SET_VOLUME</trigger>
- <process>
- <action>
- <type>ACTION_SET_VOLUME</type>
- <param>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- </policy>
- <!-- default volume policy end -->
- <!-- default mute policy start -->
- <policy>
- <trigger>USER_SET_SINK_MUTE_STATE</trigger>
- <process>
- <condition>muteState(USER,REQUESTING) EQ MS_MUTED</condition>
- <action>
- <type>ACTION_MUTE</type>
- <param>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- <process>
- <condition>muteState(USER,REQUESTING) EQ MS_UNMUTED</condition>
- <action>
- <type>ACTION_UNMUTE</type>
- <param>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- </policy>
- <!-- default mute policy end -->
- <!-- default set sink sound property policy start -->
- <policy>
- <trigger>USER_SET_SINK_MAIN_SOUND_PROPERTY</trigger>
- <process>
- <action>
- <type>ACTION_SET_PROPERTY</type>
- <param>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- </policy>
- <!-- default set sink sound property policy end -->
- <!-- default set source sound property policy start -->
- <policy>
- <trigger>USER_SET_SOURCE_MAIN_SOUND_PROPERTY</trigger>
- <process>
- <action>
- <type>ACTION_SET_PROPERTY</type>
- <param>
- <sourceName>REQUESTING</sourceName>
- </param>
- </action>
- </process>
- </policy>
- <!-- default set source sound property policy end -->
- <!-- default connect policy start -->
- <policy>
- <trigger>USER_CONNECTION_REQUEST</trigger>
- <process>
- <action>
- <type>ACTION_CONNECT</type>
- <param>
- <className>REQUESTING</className>
- <timeOut>5000</timeOut>
- </param>
- </action>
- </process>
- </policy>
- <!-- default connect policy end -->
- </listPolicies>
- <listSystemProperties>
- <systemProperty>
- <type>SYP_DEBUG_LOG</type>
- <value>5</value>
- </systemProperty>
- </listSystemProperties>
-</c:configuration>
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/customtypes.xsd b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/customtypes.xsd
deleted file mode 100644
index 2604fb71..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/customtypes.xsd
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<xsd:schema targetNamespace="controller" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:c="controller">
- <xsd:simpleType name="am_CustomAvailabilityReason_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration list the source/sink availability change reason. </xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomSoundPropertyType_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration list the source and sink sound property. The sound properties of Genivi Audio manager can be extended to include project specific properties. Three sound properties like volume persistence, connection persistence and volume support are extended.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomConnectionFormat_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration lists the connection format for the source and sinks.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomNotificationType_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration contains the type of notification possible.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomSystemPropertyType_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration lists the system properties.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="SYP_DEBUG_LOG">
- <xsd:annotation>
- <xsd:documentation>1 </xsd:documentation>
- </xsd:annotation>
- </xsd:enumeration>
-
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomRampType_t">
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomMainSoundPropertyType_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration lists the Main Properties for source and sinks.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_SourceID_e">
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_SinkID_e">
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
-</xsd:schema>
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/soundmanager-dbus.conf b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/soundmanager-dbus.conf
deleted file mode 100644
index 9b5aadb7..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/soundmanager-dbus.conf
+++ /dev/null
@@ -1,20 +0,0 @@
-<!-- This configuration file specifies the required security policies
-to use the audiomanager command d-bus plugin interface. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
-"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <!-- ../system.conf have denied everything, so we just punch some holes -->
- <policy user="root">
- <allow own="org.genivi.audiomanager.routing.soundmanager"/>
- <allow send_destination="org.genivi.audiomanager.routing.soundmanager"/>
- <allow send_interface="org.genivi.audiomanager.routing.soundmanager"/>
- <allow receive_sender="org.genivi.audiomanager.routing.soundmanager"/>
- </policy>
- <policy at_console="true">
- <allow send_destination="org.genivi.audiomanager.routing.soundmanager"/>
- </policy>
- <policy context="default">
- <allow send_destination="org.genivi.audiomanager.routing.soundmanager"/>
- </policy>
-</busconfig>
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager_7.4.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager_7.4.bb
deleted file mode 100644
index 7a1b05a6..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager_7.4.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-DESCRIPTION = "Configurations for Audiomanager Plugins with Sound Manager"
-HOMEPAGE = ""
-LICENSE = "MPLv2"
-SECTION = "multimedia"
-
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad"
-RDEPENDS_${PN} = "libxml2 zlib dbus-lib"
-
-SRC_URI = " \
- file://amcp_dbus.conf \
- file://amrp_dbus.conf \
- file://configuration.xml \
- file://customtypes.xsd \
- file://soundmanager-dbus.conf \
-"
-
-FILES_${PN} = " \
- ${sysconfdir}/dbus-1/system.d/amcp_dbus.conf \
- ${sysconfdir}/dbus-1/system.d/amrp_dbus.conf \
- ${sysconfdir}/dbus-1/system.d/soundmanager-dbus.conf \
- ${sysconfdir}/audiomanager/control/configuration.xml \
- ${sysconfdir}/audiomanager/control/customtypes.xsd \
-"
-
-FILES_${PN}-dbg += " \
- /usr/lib/audiomanager/command/.debug \
- /usr/lib/audiomanager/routing/.debug \
-"
-
-do_install() {
- install -d ${D}${sysconfdir}/dbus-1/system.d
- install -m 644 ${WORKDIR}/amcp_dbus.conf ${D}${sysconfdir}/dbus-1/system.d/
- install -m 644 ${WORKDIR}/amrp_dbus.conf ${D}${sysconfdir}/dbus-1/system.d/
- install -m 644 ${WORKDIR}/soundmanager-dbus.conf ${D}${sysconfdir}/dbus-1/system.d/
- install -d ${D}${sysconfdir}/audiomanager/control
- install -m 644 ${WORKDIR}/configuration.xml ${D}${sysconfdir}/audiomanager/control/
- install -m 644 ${WORKDIR}/customtypes.xsd ${D}${sysconfdir}/audiomanager/control/
-}
-
-RPROVIDES_${PN} += "virtual/audiomanager-plugins-config"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amcp_dbus.conf b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amcp_dbus.conf
deleted file mode 100644
index 49544d5e..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amcp_dbus.conf
+++ /dev/null
@@ -1,20 +0,0 @@
-<!-- This configuration file specifies the required security policies
-to use the audiomanager command d-bus plugin interface. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
-"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <!-- ../system.conf have denied everything, so we just punch some holes -->
- <policy user="root">
- <allow own="org.genivi.audiomanager"/>
- <allow own="org.genivi.audiomanager.command"/>
- <allow send_destination="org.genivi.audiomanager"/>
- <allow send_destination="org.genivi.audiomanager.command"/>
- </policy>
- <policy at_console="true">
- <allow send_destination="org.genivi.audiomanager"/>
- </policy>
- <policy context="default">
- <allow send_destination="org.genivi.audiomanager"/>
- </policy>
-</busconfig>
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amrp_dbus.conf b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amrp_dbus.conf
deleted file mode 100644
index 6832d305..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amrp_dbus.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-<!-- This configuration file specifies the required security policies
-to use the audiomanager routing d-bus plugin interface. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
-"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <!-- ../system.conf have denied everything, so we just punch some holes -->
- <policy user="root">
- <allow own="org.genivi.audiomanager"/>
- <allow own="org.genivi.audiomanager.routing"/>
- <allow send_destination="org.genivi.audiomanager"/>
- <allow send_destination="org.genivi.audiomanager.routing"/>
- </policy>
- <policy at_console="true">
- <allow send_destination="org.genivi.audiomanager"/>
- </policy>
- <policy context="default">
- <allow send_destination="org.genivi.audiomanager"/>
- </policy>
-</busconfig>
-
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/configuration.xml b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/configuration.xml
deleted file mode 100644
index 9e2d05ee..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/configuration.xml
+++ /dev/null
@@ -1,522 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<c:configuration xmlns:c="controller" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="controller audiomanagertypes.xsd ">
- <listSources>
- <source>
- <id>0</id>
- <domainName>UNKNOWN</domainName>
- <name>SourceTemplate</name>
- <volume>0</volume>
- <visible>TRUE</visible>
- <className>UNKNOWN</className>
- <sourceState>SS_OFF</sourceState>
- <connectionFormat>CF_GENIVI_STEREO</connectionFormat>
- <connectionFormat>CF_GENIVI_MONO</connectionFormat>
- <interruptState>IS_OFF</interruptState>
- <availability>
- <availability>A_AVAILABLE</availability>
- <availabilityReason>AR_UNKNOWN</availabilityReason>
- </availability>
- <soundProperty>
- <type>SP_GENIVI_TREBLE</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <soundProperty>
- <type>SP_GENIVI_MID</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <soundProperty>
- <type>SP_GENIVI_BASS</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_TREBLE</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_MID</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_BASS</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <registrationType>REG_TEMPLATE</registrationType>
- <isVolumeSupported>TRUE</isVolumeSupported>
- <priority>1</priority>
- <listMainSoundPropertiesToSoundProperties>
- <mapEntry>MSP_UNKNOWN,SP_UNKNOWN</mapEntry>
- <mapEntry>MSP_GENIVI_TREBLE,SP_GENIVI_TREBLE</mapEntry>
- </listMainSoundPropertiesToSoundProperties>
- </source>
- <source baseName="SourceTemplate">
- <id>1</id>
- <domainName>PulseAudio</domainName>
- <name>mediaplayer</name>
- <className>BASE</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- <source baseName="SourceTemplate">
- <id>2</id>
- <domainName>PulseAudio</domainName>
- <name>ALSA#Playback</name>
- <className>BASE</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- <source baseName="SourceTemplate">
- <id>3</id>
- <domainName>PulseAudio</domainName>
- <name>music</name>
- <className>BASE</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- <source baseName="SourceTemplate">
- <id>4</id>
- <domainName>PulseAudio</domainName>
- <name>Navi</name>
- <className>INT</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- <source baseName="SourceTemplate">
- <id>5</id>
- <domainName>PulseAudio</domainName>
- <name>phone</name>
- <className>PHONE</className>
- <registrationType>REG_ROUTER</registrationType>
- </source>
- </listSources>
- <listSinks>
- <sink>
- <id>0</id>
- <domainName>UNKNOWN</domainName>
- <name>SinkTemplate</name>
- <volume>0</volume>
- <visible>TRUE</visible>
- <mainVolume>100</mainVolume>
- <className>BASE</className>
- <muteState>MS_UNMUTED</muteState>
- <connectionFormat>CF_GENIVI_STEREO</connectionFormat>
- <connectionFormat>CF_GENIVI_MONO</connectionFormat>
- <availability>
- <availability>A_AVAILABLE</availability>
- <availabilityReason>AR_GENIVI_NEWMEDIA</availabilityReason>
- </availability>
- <soundProperty>
- <type>SP_GENIVI_TREBLE</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <soundProperty>
- <type>SP_GENIVI_MID</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <soundProperty>
- <type>SP_GENIVI_BASS</type>
- <value minValue="0" maxValue="10">5</value>
- </soundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_TREBLE</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_MID</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <mainSoundProperty>
- <type>MSP_GENIVI_BASS</type>
- <value minValue="0" maxValue="10">5</value>
- </mainSoundProperty>
- <registrationType>REG_TEMPLATE</registrationType>
- <isVolumeSupported>TRUE</isVolumeSupported>
- <priority>1</priority>
- <listMainVolumesToNormalizedVolumes>
- <tableEntry>0,0.0</tableEntry>
- <tableEntry>1,0.01</tableEntry>
- <tableEntry>2,0.02</tableEntry>
- <tableEntry>3,0.03</tableEntry>
- <tableEntry>4,0.04</tableEntry>
- <tableEntry>5,0.05</tableEntry>
- <tableEntry>6,0.06</tableEntry>
- <tableEntry>7,0.07</tableEntry>
- <tableEntry>8,0.08</tableEntry>
- <tableEntry>9,0.09</tableEntry>
- <tableEntry>10,0.1</tableEntry>
- <tableEntry>11,0.11</tableEntry>
- <tableEntry>12,0.12</tableEntry>
- <tableEntry>14,0.14</tableEntry>
- <tableEntry>15,0.15</tableEntry>
- <tableEntry>17,0.17</tableEntry>
- <tableEntry>20,0.2</tableEntry>
- <tableEntry>22,0.22</tableEntry>
- <tableEntry>25,0.25</tableEntry>
- <tableEntry>28,0.28</tableEntry>
- <tableEntry>31,0.31</tableEntry>
- <tableEntry>35,0.35</tableEntry>
- <tableEntry>40,0.4</tableEntry>
- <tableEntry>45,0.45</tableEntry>
- <tableEntry>50,0.5</tableEntry>
- <tableEntry>56,0.56</tableEntry>
- <tableEntry>62,0.62</tableEntry>
- <tableEntry>70,0.7</tableEntry>
- <tableEntry>80,0.8</tableEntry>
- <tableEntry>90,0.9</tableEntry>
- <tableEntry>100,1.0</tableEntry>
- </listMainVolumesToNormalizedVolumes>
- <listNormalizedVolumesToDecibelVolumes>
- <tableEntry>0.0,-192.0</tableEntry>
- <tableEntry>0.01,-40.0</tableEntry>
- <tableEntry>0.02,-34.0</tableEntry>
- <tableEntry>0.03,-30.0</tableEntry>
- <tableEntry>0.04,-27.0</tableEntry>
- <tableEntry>0.05,-26.0</tableEntry>
- <tableEntry>0.06,-24.0</tableEntry>
- <tableEntry>0.07,-23.0</tableEntry>
- <tableEntry>0.08,-22.0</tableEntry>
- <tableEntry>0.09,-21.0</tableEntry>
- <tableEntry>0.1,-20.0</tableEntry>
- <tableEntry>0.11,-19.0</tableEntry>
- <tableEntry>0.12,-18.0</tableEntry>
- <tableEntry>0.14,-17.0</tableEntry>
- <tableEntry>0.15,-16.0</tableEntry>
- <tableEntry>0.17,-15.0</tableEntry>
- <tableEntry>0.2,-14.0</tableEntry>
- <tableEntry>0.22,-13.0</tableEntry>
- <tableEntry>0.25,-12.0</tableEntry>
- <tableEntry>0.28,-11.0</tableEntry>
- <tableEntry>0.31,-10.0</tableEntry>
- <tableEntry>0.35,-9.0</tableEntry>
- <tableEntry>0.4,-8.0</tableEntry>
- <tableEntry>0.45,-7.0</tableEntry>
- <tableEntry>0.5,-6.0</tableEntry>
- <tableEntry>0.56,-5.0</tableEntry>
- <tableEntry>0.62,-4.0</tableEntry>
- <tableEntry>0.7,-3.0</tableEntry>
- <tableEntry>0.8,-2.0</tableEntry>
- <tableEntry>0.9,-1.0</tableEntry>
- <tableEntry>1.0,0.0</tableEntry>
- </listNormalizedVolumesToDecibelVolumes>
- <listMainSoundPropertiesToSoundProperties>
- <mapEntry>MSP_UNKNOWN,SP_UNKNOWN</mapEntry>
- <mapEntry>MSP_GENIVI_TREBLE,SP_GENIVI_TREBLE</mapEntry>
- </listMainSoundPropertiesToSoundProperties>
- </sink>
- <sink baseName="SinkTemplate">
- <id>1</id>
- <domainName>PulseAudio</domainName>
- <name>rsnd-dai.0-ak4642-hifi#Analog#Stereo</name>
- <className>BASE</className>
- <registrationType>REG_ROUTER</registrationType>
- </sink>
- <sink baseName="SinkTemplate">
- <id>2</id>
- <domainName>PulseAudio</domainName>
- <name>Microchip#MOST:0#Multichannel</name>
- <className>BASE</className>
- <registrationType>REG_ROUTER</registrationType>
- </sink>
- </listSinks>
- <listGateways>
- <!-- This is a single domain example, therefore no gateway is present -->
- </listGateways>
- <listDomains>
- <domain>
- <id>0</id>
- <name>PulseAudio</name>
- <busName>org.genivi.audiomanager</busName>
- <nodeName>pulseaudio</nodeName>
- <early>FALSE</early>
- <complete>TRUE</complete>
- <state>DS_CONTROLLED</state>
- <registrationType>REG_ROUTER</registrationType>
- </domain>
- </listDomains>
- <listClasses>
- <class>
- <name>BASE</name>
- <type>C_PLAYBACK</type>
- <priority>1</priority>
- <topology>Microchip#MOST:0#Multichannel^rsnd-dai.0-ak4642-hifi#Analog#Stereo=mediaplayer^music^ALSA#Playback</topology>
- </class>
- <class>
- <name>INT</name>
- <type>C_PLAYBACK</type>
- <priority>2</priority>
- <topology>Microchip#MOST:0#Multichannel^rsnd-dai.0-ak4642-hifi#Analog#Stereo=Navi</topology>
- </class>
- <class>
- <name>PHONE</name>
- <type>C_PLAYBACK</type>
- <priority>3</priority>
- <topology>Microchip#MOST:0#Multichannel^rsnd-dai.0-ak4642-hifi#Analog#Stereo=phone</topology>
- </class>
- </listClasses>
- <listPolicies>
-<!--Connect Policy Start-->
-<!--BASE Policy-->
- <policy>
- <trigger>USER_CONNECTION_REQUEST</trigger>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "BASE"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_SUSPEND</type>
- <param>
- <className>"BASE"</className>
- <connectionState>CS_CONNECTED</connectionState>
- </param>
- </action>
- </process>
- </policy>
-<!--INT policy-->
- <policy>
- <trigger>USER_CONNECTION_REQUEST</trigger>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <action>
- <type>ACTION_LIMIT</type>
- <param>
- <className>"BASE"</className>
- <volume>-1000</volume>
- <pattern>01</pattern>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
- <condition>priority(CONNECTIONOFCLASS, REQUESTING, OTHERS) LT priority(CONNECTION, REQUESTING)</condition>
- <action>
- <type>ACTION_PUSH</type>
- <param>
- <className>"INT"</className>
- <order>O_NEWEST</order>
- </param>
- </action>
- <break>TRUE</break>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_PUSH</type>
- <param>
- <className>"INT"</className>
- <order>O_OLDEST</order>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, "PHONE") INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_MUTE</type>
- <param>
- <className>REQUESTING</className>
- </param>
- </action>
- <action>
- <type>ACTION_CONNECT</type>
- <param>
- <className>REQUESTING</className>
- </param>
- </action>
- <break>TRUE</break>
- </process>
- </policy>
-<!--PHONE policy-->
- <policy>
- <trigger>USER_CONNECTION_REQUEST</trigger>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
- <action>
- <type>ACTION_LIMIT</type>
- <param>
- <className>"BASE"</className>
- <volume>-1000</volume>
- <pattern>02</pattern>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, "INT") INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_MUTE</type>
- <param>
- <className>"INT"</className>
- </param>
- </action>
- </process>
- <process>
- <condition>name(SINK, REQUESTING) EQ "AMP"</condition>
- <action>
- <type>ACTION_CONNECT</type>
- <param>
- <className>REQUESTING</className>
- <timeOut>5000</timeOut>
- </param>
- </action>
- <break>TRUE</break>
- </process>
- </policy>
-<!--Connect policy end-->
-<!--Disconnect policy start-->
- <policy>
- <trigger>USER_DISCONNECTION_REQUEST</trigger>
- <process>
- <action>
- <type>ACTION_DISCONNECT</type>
- <param>
- <sourceName>REQUESTING</sourceName>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <action>
- <type>ACTION_UNLIMIT</type>
- <param>
- <className>"BASE"</className>
- <pattern>01</pattern>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_POP</type>
- <param>
- <className>"INT"</className>
- <order>O_OLDEST</order>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, "INT") INC CS_CONNECTED</condition>
- <action>
- <type>ACTION_UNMUTE</type>
- <param>
- <className>"INT"</className>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
- <action>
- <type>ACTION_UNLIMIT</type>
- <param>
- <className>"BASE"</className>
- <pattern>02</pattern>
- </param>
- </action>
- </process>
- <process>
- <condition>name(CLASS, REQUESTING) EQ "BASE"</condition>
- <condition>connectionState(CONNECTIONOFCLASS, "BASE") INC CS_SUSPENDED</condition>
- <action>
- <type>ACTION_RESUME</type>
- <param>
- <className>"BASE"</className>
- <connectionState>CS_SUSPENDED</connectionState>
- </param>
- </action>
- </process>
- </policy>
-<!-- default volume policy start -->
- <policy>
- <trigger>USER_SET_VOLUME</trigger>
- <process>
- <action>
- <type>ACTION_SET_VOLUME</type>
- <param>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- </policy>
-<!-- default volume policy end -->
-<!-- default mute policy start -->
- <policy>
- <trigger>USER_SET_SINK_MUTE_STATE</trigger>
- <process>
- <condition>muteState(USER,REQUESTING) EQ MS_MUTED</condition>
- <action>
- <type>ACTION_MUTE</type>
- <param>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- <process>
- <condition>muteState(USER,REQUESTING) EQ MS_UNMUTED</condition>
- <action>
- <type>ACTION_UNMUTE</type>
- <param>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- </policy>
-<!-- default mute policy end -->
-<!-- default set sink sound property policy start -->
- <policy>
- <trigger>USER_SET_SINK_MAIN_SOUND_PROPERTY</trigger>
- <process>
- <action>
- <type>ACTION_SET_PROPERTY</type>
- <param>
- <sinkName>REQUESTING</sinkName>
- </param>
- </action>
- </process>
- </policy>
-<!-- default set sink sound property policy end -->
-<!-- default set source sound property policy start -->
- <policy>
- <trigger>USER_SET_SOURCE_MAIN_SOUND_PROPERTY</trigger>
- <process>
- <action>
- <type>ACTION_SET_PROPERTY</type>
- <param>
- <sourceName>REQUESTING</sourceName>
- </param>
- </action>
- </process>
- </policy>
-<!-- default set source sound property policy end -->
-<!-- default connect policy start -->
- <policy>
- <trigger>USER_CONNECTION_REQUEST</trigger>
- <process>
- <action>
- <type>ACTION_MUTE</type>
- <param>
- <className>REQUESTING</className>
- <timeOut>5000</timeOut>
- </param>
- </action>
- <action>
- <type>ACTION_CONNECT</type>
- <param>
- <className>REQUESTING</className>
- <timeOut>5000</timeOut>
- </param>
- </action>
- <action>
- <type>ACTION_UNMUTE</type>
- <param>
- <className>REQUESTING</className>
- </param>
- </action>
- </process>
- </policy>
-<!-- default connect policy end -->
- </listPolicies>
- <listSystemProperties>
- <systemProperty>
- <type>SYP_DEBUG_LOG</type>
- <value>5</value>
- </systemProperty>
- </listSystemProperties>
-</c:configuration>
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/customtypes.xsd b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/customtypes.xsd
deleted file mode 100644
index 2604fb71..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/customtypes.xsd
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<xsd:schema targetNamespace="controller" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:c="controller">
- <xsd:simpleType name="am_CustomAvailabilityReason_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration list the source/sink availability change reason. </xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomSoundPropertyType_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration list the source and sink sound property. The sound properties of Genivi Audio manager can be extended to include project specific properties. Three sound properties like volume persistence, connection persistence and volume support are extended.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomConnectionFormat_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration lists the connection format for the source and sinks.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomNotificationType_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration contains the type of notification possible.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomSystemPropertyType_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration lists the system properties.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="SYP_DEBUG_LOG">
- <xsd:annotation>
- <xsd:documentation>1 </xsd:documentation>
- </xsd:annotation>
- </xsd:enumeration>
-
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomRampType_t">
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_CustomMainSoundPropertyType_t">
- <xsd:annotation>
- <xsd:documentation>This enumeration lists the Main Properties for source and sinks.</xsd:documentation>
- </xsd:annotation>
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_SourceID_e">
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
- <xsd:simpleType name="am_SinkID_e">
- <xsd:restriction base="xsd:string">
- </xsd:restriction>
- </xsd:simpleType>
-</xsd:schema>
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/org.genivi.audiomanager.routing.pulseaudio.conf b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/org.genivi.audiomanager.routing.pulseaudio.conf
deleted file mode 100644
index f77845a3..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/org.genivi.audiomanager.routing.pulseaudio.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-<!-- This configuration file specifies the required security policies
- for routing adapter for KP audio server to work. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
-
- <!-- ../system.conf have denied everything, so we just punch some holes -->
-
- <policy user="root">
- <allow own="org.genivi.audiomanager.routing.pulseaudio"/>
- <allow send_destination="org.genivi.audiomanager.routing.pulseaudio"/>
- <allow send_interface="org.genivi.audiomanager.routing.pulseaudio"/>
- <allow receive_sender="org.genivi.audiomanager.routing.pulseaudio"/>
- </policy>
-
- <policy user="adit">
- <allow own="org.genivi.audiomanager.routing.pulseaudio"/>
- <allow send_destination="org.genivi.audiomanager.routing.pulseaudio"/>
- <allow send_interface="org.genivi.audiomanager.routing.pulseaudio"/>
- <allow receive_sender="org.genivi.audiomanager.routing.pulseaudio"/>
- </policy>
-
- <policy at_console="true">
- <allow own="org.genivi.audiomanager.routing.pulseaudio"/>
- <allow send_destination="org.genivi.audiomanager.routing.pulseaudio"/>
- <allow send_interface="org.genivi.audiomanager.routing.pulseaudio"/>
- <allow receive_sender="org.genivi.audiomanager.routing.pulseaudio"/>
- </policy>
-
- <policy context="default">
- <allow send_destination="org.genivi.audiomanager"/>
- </policy>
-
-</busconfig>
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config_7.4.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config_7.4.bb
deleted file mode 100644
index 59d68f9a..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config_7.4.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-DESCRIPTION = "Configurations for Audiomanager Plugins for AGL Demo"
-HOMEPAGE = ""
-LICENSE = "MPLv2"
-SECTION = "multimedia"
-
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad"
-RDEPENDS_${PN} = "libxml2 zlib dbus-lib"
-
-SRC_URI = " \
- file://amcp_dbus.conf \
- file://amrp_dbus.conf \
- file://configuration.xml \
- file://customtypes.xsd \
- file://org.genivi.audiomanager.routing.pulseaudio.conf \
-"
-
-FILES_${PN} = " \
- ${sysconfdir}/dbus-1/system.d/amcp_dbus.conf \
- ${sysconfdir}/dbus-1/system.d/amrp_dbus.conf \
- ${sysconfdir}/dbus-1/system.d/org.genivi.audiomanager.routing.pulseaudio.conf \
- ${sysconfdir}/audiomanager/control/configuration.xml \
- ${sysconfdir}/audiomanager/control/customtypes.xsd \
-"
-
-FILES_${PN}-dbg += " \
- /usr/lib/audiomanager/command/.debug \
- /usr/lib/audiomanager/routing/.debug \
-"
-
-do_install() {
- install -d ${D}${sysconfdir}/dbus-1/system.d
- install -m 644 ${WORKDIR}/amcp_dbus.conf ${D}${sysconfdir}/dbus-1/system.d/
- install -m 644 ${WORKDIR}/amrp_dbus.conf ${D}${sysconfdir}/dbus-1/system.d/
- install -m 644 ${WORKDIR}/org.genivi.audiomanager.routing.pulseaudio.conf ${D}${sysconfdir}/dbus-1/system.d/
- install -d ${D}${sysconfdir}/audiomanager/control
- install -m 644 ${WORKDIR}/configuration.xml ${D}${sysconfdir}/audiomanager/control/
- install -m 644 ${WORKDIR}/customtypes.xsd ${D}${sysconfdir}/audiomanager/control/
-}
-
-RPROVIDES_${PN} = "virtual/audiomanager-plugins-config"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins/audiomanager-plugins_git.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins/audiomanager-plugins_git.bb
deleted file mode 100644
index 9b099ebc..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins/audiomanager-plugins_git.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-DESCRIPTION = "GENIVI Audio Manager Plugins"
-HOMEPAGE = "http://projects.genivi.org/audio-manager/home"
-LICENSE = "MPLv2"
-SECTION = "multimedia"
-DEPENDS = "audiomanager libxml2 dbus pulseaudio"
-
-LIC_FILES_CHKSUM = "file://PluginControlInterfaceGeneric/LICENSE.txt;md5=815ca599c9df247a0c7f619bab123dad"
-
-SRC_URI = " \
- git://github.com/tisogai/AudioManagerPlugins.git;protocol=https;branch=unknown_element_support \
- "
-
-SRCREV = "bf5c5e8198b85e84363770150d5a02f553f43296"
-
-S = "${WORKDIR}/git"
-inherit cmake
-OECMAKE_CXX_FLAGS += "-std=c++11"
-EXTRA_OECMAKE = " \
- -DWITH_COMMAND_INTERFACE_CAPI=OFF \
- -DWITH_COMMAND_INTERFACE_DBUS=ON \
- -DWITH_ROUTING_INTERFACE_ASYNC=OFF \
- -DWITH_ROUTING_INTERFACE_CAPI=OFF \
- -DWITH_ROUTING_INTERFACE_DBUS=ON \
- -DWITH_TEST_CONTROLLER=OFF \
- -DWITH_GENERIC_CONTROLLER=ON \
- -DCONTROLLER_CONFIG_DIR="/etc/audiomanager/control" \
-"
-
-# NOTE: The specific product should have a separate customtypes.xsd
-# and should be appended to FILES_${PN} in product specific
-# audiomanager-generic-controller_git.bbappend
-FILES_${PN} = " \
- ${libdir}/audiomanager/control/libPluginControlInterfaceGeneric.so \
- ${sysconfdir}/audiomanager/control/audiomanagertypes.xsd \
- ${libdir}/audiomanager/command/libPluginCommandInterfaceDbus.so \
- ${libdir}/audiomanager/routing/libPluginRoutingInterfaceDbus.so \
- /usr/share/audiomanager/audiomanager/CommandInterface.xml \
- /usr/share/audiomanager/audiomanager/RoutingReceiver.xml \
-"
-
-# NOTE: The specific product should have a separate customtypes.h
-# and should be appended to FILES_${PN}-dev in product specific
-# audiomanager-generic-controller_git.bbappend
-FILES_${PN}-dev = " \
- ${sysconfdir}/audiomanager/control/xsd2header.pl \
-"
-
-FILES_${PN}-dbg += " \
- ${libdir}/audiomanager/control/.debug/libPluginControlInterfaceGeneric.so \
- ${libdir}/audiomanager/command/.debug/libPluginCommandInterfaceDbus.so \
- ${libdir}/audiomanager/routing/.debug/libPluginRoutingInterfaceDbus.so \
-"
-
-# remove example configurations
-do_install_append() {
- rm -rf ${D}${sysconfdir}/audiomanager/control/*.xml
- rm -rf ${D}${sysconfdir}/audiomanager/control/customtypes.xsd
-}
-
-RDEPENDS_${PN} = "virtual/audiomanager-plugins-config"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch
deleted file mode 100644
index fcdf9c54..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From c4b6030f575e38dfc9cca7dfd029d207f3af6a13 Mon Sep 17 00:00:00 2001
-From: "Andre Moreira Magalhaes (andrunko)" <andre.magalhaes@collabora.co.uk>
-Date: Thu, 5 May 2016 00:01:19 -0300
-Subject: [PATCH] Fix duplicated command line arg -t.
-
----
- AudioManagerDaemon/src/main.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp
-index 795795d..67c0977 100755
---- a/AudioManagerDaemon/src/main.cpp
-+++ b/AudioManagerDaemon/src/main.cpp
-@@ -87,7 +87,7 @@ TCLAP::ValueArg<std::string> commandPluginDir("l","CommandPluginDir","path for l
- TCLAP::ValueArg<std::string> databasePath ("p","databasePath","path for sqlite database (default is in memory)",false,":memory:","string");
- TCLAP::ValueArg<unsigned int> telnetPort ("t","telnetport","The port that is used for telnet",false,DEFAULT_TELNETPORT,"int");
- TCLAP::ValueArg<unsigned int> maxConnections ("m","maxConnections","Maximal number of connections for telnet",false,MAX_TELNETCONNECTIONS,"int");
--TCLAP::SwitchArg dbusWrapperTypeBool ("t","dbusType","DbusType to be used by CAmDbusWrapper: if option is selected, DBUS_SYSTEM is used otherwise DBUS_SESSION",false);
-+TCLAP::SwitchArg dbusWrapperTypeBool ("T","dbusType","DbusType to be used by CAmDbusWrapper: if option is selected, DBUS_SYSTEM is used otherwise DBUS_SESSION",false);
- TCLAP::SwitchArg enableNoDLTDebug ("V","logDlt","print DLT logs to stdout",false);
- TCLAP::SwitchArg currentSettings("i","currentSettings","print current settings and exit",false);
- TCLAP::SwitchArg daemonizeAM("d","daemonize","daemonize Audiomanager. Better use systemd...",false);
---
-2.5.0
-
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/audiomanager.service b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/audiomanager.service
deleted file mode 100644
index 2210a377..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/audiomanager.service
+++ /dev/null
@@ -1,17 +0,0 @@
-# AudioManager systemd service file
-
-[Unit]
-Description=GENIVI AudioManager
-Requires=dbus.service
-After=dbus.service
-Before=pulseaudio.service
-
-[Service]
-Type=notify
-ExecStart=/usr/bin/AudioManager -T
-Restart=always
-TimeoutSec=2
-WatchdogSec=2
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager_7.4.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager_7.4.bb
deleted file mode 100644
index 15eb3625..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager_7.4.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-DESCRIPTION = "GENIVI Audio Manager"
-HOMEPAGE = "http://projects.genivi.org/audio-manager/home"
-LICENSE = "MPLv2"
-SECTION = "multimedia"
-DEPENDS = "dbus dlt-daemon systemd"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=f164349b56ed530a6642e9b9f244eec5"
-
-SRC_URI = " \
- git://github.com/GENIVI/AudioManager.git;protocol=https;branch=master \
- file://audiomanager.service \
-"
-RDEPENDS_${PN} = "audiomanager-plugins module-router"
-SRCREV = "daf851ee7a41d1b0572c0c95e15f61e427ce97f1"
-
-S = "${WORKDIR}/git"
-inherit cmake systemd
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "audiomanager.service"
-SYSTEMD_AUTO_ENABLE = "enable"
-
-EXTRA_OECMAKE = " \
- -DWITH_TESTS=OFF \
- -DWITH_DOCUMENTATION=OFF \
- -DWITH_DLT=ON \
- -DWITH_TELNET=OFF \
- -DWITH_SYSTEMD_WATCHDOG=ON \
- -DGLIB_DBUS_TYPES_TOLERANT=ON \
- -DWITH_CAPI_WRAPPER=OFF \
- -DWITH_DBUS_WRAPPER=ON \
- -DWITH_SHARED_UTILITIES=ON \
- -DWITH_SHARED_CORE=ON \
-"
-
-FILES_${PN} = " \
- ${bindir}/AudioManager \
- ${libdir}/libAudioManagerCore.so.7 \
- ${libdir}/libAudioManagerCore.so.7.4 \
- ${libdir}/libAudioManagerCore.so.7.4.12 \
- ${libdir}/libAudioManagerUtilities.so.7 \
- ${libdir}/libAudioManagerUtilities.so.7.4 \
- ${libdir}/libAudioManagerUtilities.so.7.4.12 \
- ${systemd_unitdir}/audiomanager.service \
-"
-
-FILES_${PN}-dev = " \
- ${includedir}/audiomanager/* \
- ${libdir}/cmake/* \
- ${libdir}/pkgconfig/* \
- ${libdir}/libAudioManagerCore.so \
- ${libdir}/libAudioManagerUtilities.so \
-"
-
-do_install_append() {
- install -d ${D}${systemd_unitdir}/system/
- install -m 0644 ${WORKDIR}/audiomanager.service ${D}${systemd_unitdir}/system/
-}
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/libsoundmanager/libsoundmanager_0.9.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/libsoundmanager/libsoundmanager_0.9.bb
deleted file mode 100644
index 3040644d..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/libsoundmanager/libsoundmanager_0.9.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "Sound Manager client library for applications"
-DESCRIPTION = "Sound Manager client library for applications built with recipe"
-HOMEPAGE = "https://wiki.automotivelinux.org/soundmanager"
-SECTION = "multimedia"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-DEPENDS = "af-binder json-c"
-RDEPENDS_${PN} = "agl-service-audio-soundmanager"
-
-inherit cmake
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libsoundmanager.git;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "7322b823f40a5504baef9cdb69513e7dba306ed1"
-S = "${WORKDIR}/git"
-PV = "0.9+git${SRCPV}"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/module-router/module-router_git.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/module-router/module-router_git.bb
deleted file mode 100755
index cd52b68a..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/module-router/module-router_git.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "Pulseaudio router module"
-HOMEPAGE = "https://github.com/tisogai/module-router"
-LICENSE = "LGPLv2"
-SECTION = "multimedia"
-DEPENDS = "pulseaudio"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fc178bcd425090939a8b634d1d6a9594"
-
-SRC_URI = " \
- git://github.com/tisogai/module-router.git;protocol=https;branch=master \
- "
-
-SRCREV = "8104a3174e6f54ace53066ab1797d9b9bd2bdf63"
-
-S = "${WORKDIR}/git"
-inherit cmake
-OECMAKE_CXX_FLAGS += "-std=c++11"
-
-# NOTE: The specific product should have a separate customtypes.xsd
-# and should be appended to FILES_${PN} in product specific
-# audiomanager-generic-controller_git.bbappend
-FILES_${PN} = " \
- ${libdir}/pulse-*/modules/module-router.so \
-"
-
-
-FILES_${PN}-dbg += " \
- ${libdir}/pulse-*/modules/.debug/module-router.so \
-"
-
-
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/files/20-module-router.pa b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/files/20-module-router.pa
deleted file mode 100644
index 4060feb4..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/files/20-module-router.pa
+++ /dev/null
@@ -1,3 +0,0 @@
-.ifexists module-router.so
-load-module module-router
-.endif
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/pulseaudio-config-module-router_1.0.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/pulseaudio-config-module-router_1.0.bb
deleted file mode 100644
index d7c2f68b..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/pulseaudio-config-module-router_1.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "PulseAudio configuration to enable router module"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-SRC_URI = "file://20-module-router.pa"
-
-do_install () {
- install -d ${D}${sysconfdir}/pulse/default.d
- install -m 0644 ${WORKDIR}/20-module-router.pa ${D}${sysconfdir}/pulse/default.d/
-}
-
-RDEPENDS_${PN} = "module-router"
-RPROVIDES_${PN} = "virtual/pulseaudio-config"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/files/soundmanager.pa b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/files/soundmanager.pa
deleted file mode 100644
index cb53f339..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/files/soundmanager.pa
+++ /dev/null
@@ -1,3 +0,0 @@
-.ifexists module-router.so
-unload-module module-router
-.endif
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/pulseaudio-config-soundmanager_1.0.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/pulseaudio-config-soundmanager_1.0.bb
deleted file mode 100644
index 691cc66b..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/pulseaudio-config-soundmanager_1.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "PulseAudio configuration which doesn't load module-router"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-SRC_URI = "file://soundmanager.pa"
-
-do_install () {
- install -d ${D}${sysconfdir}/pulse/default.d
- install -m 0644 ${WORKDIR}/soundmanager.pa ${D}${sysconfdir}/pulse/default.d/
-}
-
-RPROVIDES_${PN} += "virtual/pulseaudio-config"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-packagegroup/packagegroups/packagegroup-agl-audio-soundmanager.bb b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-packagegroup/packagegroups/packagegroup-agl-audio-soundmanager.bb
deleted file mode 100644
index 093c6fc7..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-packagegroup/packagegroups/packagegroup-agl-audio-soundmanager.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Sound Manager package groups"
-DESCRIPTION = "AGL sound manager package group based on Genivi Audio Manager"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
- packagegroup-agl-audio-soundmanager \
- "
-
-RDEPENDS_${PN} += "\
- agl-service-audio-soundmanager \
- pulseaudio-config-soundmanager \
- audiomanager-plugins-config-soundmanager \
- libsoundmanager \
-"
-
-PROVIDES_${PN} += "virtual/audio-framework"
diff --git a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-platform/packagegroups/packagegroup-agl-demo.bbappend b/meta-agl-devel/meta-audio-soundmanager-framework/recipes-platform/packagegroups/packagegroup-agl-demo.bbappend
deleted file mode 100644
index a69cfb80..00000000
--- a/meta-agl-devel/meta-audio-soundmanager-framework/recipes-platform/packagegroups/packagegroup-agl-demo.bbappend
+++ /dev/null
@@ -1,4 +0,0 @@
-
-RDEPENDS_${PN} += " \
- audiomanager
- "
diff --git a/meta-agl-devel/meta-gstrecorder-rcar-gen3/conf/include/agl_gstrecorder.inc b/meta-agl-devel/meta-gstrecorder-rcar-gen3/conf/include/agl_gstrecorder.inc
deleted file mode 100644
index bd289b10..00000000
--- a/meta-agl-devel/meta-gstrecorder-rcar-gen3/conf/include/agl_gstrecorder.inc
+++ /dev/null
@@ -1 +0,0 @@
-DISTRO_FEATURES_append = " gst-record"
diff --git a/meta-agl-devel/meta-gstrecorder-rcar-gen3/conf/layer.conf b/meta-agl-devel/meta-gstrecorder-rcar-gen3/conf/layer.conf
deleted file mode 100644
index fe4492a6..00000000
--- a/meta-agl-devel/meta-gstrecorder-rcar-gen3/conf/layer.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
- ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "gstrecorder-rcar-gen3"
-BBFILE_PATTERN_gstrecorder-rcar-gen3 = "^${LAYERDIR}/"
-BBFILE_PRIORITY_gstrecorder-rcar-gen3 = "7"
-
-LAYERSERIES_COMPAT_gstrecorder-rcar-gen3 = "thud"
diff --git a/meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0001-remoting-Fix-remoting-gbm-dependency.patch b/meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0001-remoting-Fix-remoting-gbm-dependency.patch
deleted file mode 100644
index a4334750..00000000
--- a/meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0001-remoting-Fix-remoting-gbm-dependency.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From edc292341e037f9646dd183dfc110ad850184a4d Mon Sep 17 00:00:00 2001
-From: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
-Date: Fri, 7 Jun 2019 12:18:07 +0900
-Subject: [PATCH] remoting: Fix remoting gbm dependency
-
-Add missing dependency for gbm.
-
-Signed-off-by: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
----
- configure.ac | 1 +
- remoting/remoting-plugin.c | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index c05ad01..0483ecd 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -246,6 +246,7 @@ if test x$enable_remoting = xyes; then
- if test x$enable_drm_compositor != xyes; then
- AC_MSG_WARN([The remoting-plugin.so module requires the DRM backend.])
- fi
-+ PKG_CHECK_MODULES(REMOTING_GBM, [gbm])
- PKG_CHECK_MODULES(REMOTING_GST, [gstreamer-1.0 gstreamer-allocators-1.0 gstreamer-app-1.0 gstreamer-video-1.0])
- fi
-
-diff --git a/remoting/remoting-plugin.c b/remoting/remoting-plugin.c
-index e99d61e..f076825 100644
---- a/remoting/remoting-plugin.c
-+++ b/remoting/remoting-plugin.c
-@@ -36,7 +36,7 @@
- #include <unistd.h>
- #include <sys/types.h>
- #include <fcntl.h>
--#include <gbm.h>
-+#include <gbm/gbm.h>
-
- #include <gst/gst.h>
- #include <gst/allocators/gstdmabuf.h>
---
-2.7.4
-
diff --git a/meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0002-main-change-remoting-initialization-timing.patch b/meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0002-main-change-remoting-initialization-timing.patch
deleted file mode 100644
index db5060d2..00000000
--- a/meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston/0002-main-change-remoting-initialization-timing.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 0a0103f20437d9ed63b6cec500027a6d7bf6185f Mon Sep 17 00:00:00 2001
-From: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
-Date: Mon, 20 May 2019 18:31:32 +0900
-Subject: [PATCH] main: change remoting initialization timing
-
-Signed-off-by: Tomohito Esaki <etom@igel.co.jp>
-Signed-off-by: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>
----
- compositor/main.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/compositor/main.c b/compositor/main.c
-index 248298e..de7190b 100644
---- a/compositor/main.c
-+++ b/compositor/main.c
-@@ -2018,9 +2018,6 @@ load_drm_backend(struct weston_compositor *c,
- ret = weston_compositor_load_backend(c, WESTON_BACKEND_DRM,
- &config.base);
-
-- /* remoting */
-- load_remoting(c, wc);
--
- free(config.gbm_format);
- free(config.seat_id);
-
-@@ -2664,6 +2661,10 @@ int main(int argc, char *argv[])
- if (wet.init_failed)
- goto out;
-
-+ /* remoting: only support on drm-backend */
-+ if (strstr(backend, "drm-backend.so"))
-+ load_remoting(wet.compositor, config);
-+
- if (idle_time < 0)
- weston_config_section_get_int(section, "idle-time", &idle_time, -1);
- if (idle_time < 0)
---
-2.9.2
-
diff --git a/meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston_6.0.0.bbappend b/meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston_6.0.0.bbappend
deleted file mode 100644
index 72723ded..00000000
--- a/meta-agl-devel/meta-gstrecorder-rcar-gen3/recipes-graphics/wayland/weston_6.0.0.bbappend
+++ /dev/null
@@ -1,12 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-DEPENDS_append = " gstreamer1.0-plugins-base"
-
-PACKAGECONFIG_append = " remoting"
-
-PACKAGECONFIG[remoting] = " --enable-remoting"
-
-SRC_URI_append = " \
- file://0001-remoting-Fix-remoting-gbm-dependency.patch \
- file://0002-main-change-remoting-initialization-timing.patch \
-"
diff --git a/meta-agl-devel/meta-oem-extra-libs/conf/layer.conf b/meta-agl-devel/meta-oem-extra-libs/conf/layer.conf
deleted file mode 100644
index ebd705be..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/conf/layer.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH .= ":${LAYERDIR}"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
- ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "oem-extra-libs"
-BBFILE_PATTERN_oem-extra-libs = "^${LAYERDIR}/"
-BBFILE_PRIORITY_oem-extra-libs = "7"
-
-LAYERSERIES_COMPAT_oem-extra-libs = "thud"
-
-# Fixing build errors
-SECURITY_CFLAGS_pn-imagemagick = "${SECURITY_NO_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-protobuf = "${SECURITY_NO_PIE_CFLAGS}"
-
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-connectivity/libwebsockets/libwebsockets_%.bbappend b/meta-agl-devel/meta-oem-extra-libs/recipes-connectivity/libwebsockets/libwebsockets_%.bbappend
deleted file mode 100644
index d36c441d..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-connectivity/libwebsockets/libwebsockets_%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-PACKAGECONFIG_remove = "libuv"
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb b/meta-agl-devel/meta-oem-extra-libs/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb
deleted file mode 100644
index 93547998..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-connectivity/libwebsockets/libwebsockets_2.1.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Canonical libwebsockets.org websocket library"
-HOMEPAGE = "https://libwebsockets.org/"
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e3393a657830d4a118c5a6ed35ba53d0"
-
-DEPENDS = "zlib"
-
-SRC_URI = "https://github.com/warmcat/libwebsockets/archive/v${PV}.tar.gz"
-
-SRC_URI[md5sum] = "4df3be57dee43aeebd54a3ed56568f50"
-SRC_URI[sha256sum] = "bcc96aaa609daae4d3f7ab1ee480126709ef4f6a8bf9c85de40aae48e38cce66"
-
-inherit cmake pkgconfig
-
-PACKAGECONFIG ?= "libuv client server http2 ssl"
-PACKAGECONFIG[client] = "-DLWS_WITHOUT_CLIENT=OFF,-DLWS_WITHOUT_CLIENT=ON,"
-PACKAGECONFIG[http2] = "-DLWS_WITH_HTTP2=ON,-DLWS_WITH_HTTP2=OFF,"
-PACKAGECONFIG[ipv6] = "-DLWS_IPV6=ON,-DLWS_IPV6=OFF,"
-PACKAGECONFIG[libev] = "-DLWS_WITH_LIBEV=ON,-DLWS_WITH_LIBEV=OFF,libev"
-PACKAGECONFIG[libuv] = "-DLWS_WITH_LIBUV=ON,-DLWS_WITH_LIBUV=OFF,libuv"
-PACKAGECONFIG[server] = "-DLWS_WITHOUT_SERVER=OFF,-DLWS_WITHOUT_SERVER=ON,"
-PACKAGECONFIG[ssl] = "-DLWS_WITH_SSL=ON,-DLWS_WITH_SSL=OFF,openssl"
-PACKAGECONFIG[testapps] = "-DLWS_WITHOUT_TESTAPPS=OFF,-DLWS_WITHOUT_TESTAPPS=ON,"
-
-PACKAGES =+ "${PN}-testapps"
-
-FILES_${PN}-dev += "${libdir}/cmake"
-FILES_${PN}-testapps += "${datadir}/libwebsockets-test-server/*"
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/CVE-2013-4420.patch b/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/CVE-2013-4420.patch
deleted file mode 100644
index 477d130f..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/CVE-2013-4420.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-Author: Raphael Geissert <geissert@debian.org>
-Bug-Debian: https://bugs.debian.org/731860
-Description: Avoid directory traversal when extracting archives
- by skipping over leading slashes and any prefix containing ".." components.
-Forwarded: yes
-
---- a/lib/decode.c
-+++ b/lib/decode.c
-@@ -22,13 +22,42 @@
- # include <string.h>
- #endif
-
-+char *
-+safer_name_suffix (char const *file_name)
-+{
-+ char const *p, *t;
-+ p = t = file_name;
-+ while (*p == '/') t = ++p;
-+ while (*p)
-+ {
-+ while (p[0] == '.' && p[0] == p[1] && p[2] == '/')
-+ {
-+ p += 3;
-+ t = p;
-+ }
-+ /* advance pointer past the next slash */
-+ while (*p && (p++)[0] != '/');
-+ }
-+
-+ if (!*t)
-+ {
-+ t = ".";
-+ }
-+
-+ if (t != file_name)
-+ {
-+ /* TODO: warn somehow that the path was modified */
-+ }
-+ return (char*)t;
-+}
-+
-
- /* determine full path name */
- char *
- th_get_pathname(TAR *t)
- {
- if (t->th_buf.gnu_longname)
-- return t->th_buf.gnu_longname;
-+ return safer_name_suffix(t->th_buf.gnu_longname);
-
- /* allocate the th_pathname buffer if not already */
- if (t->th_pathname == NULL)
-@@ -51,7 +80,7 @@ th_get_pathname(TAR *t)
- }
-
- /* will be deallocated in tar_close() */
-- return t->th_pathname;
-+ return safer_name_suffix(t->th_pathname);
- }
-
-
---- a/lib/extract.c
-+++ b/lib/extract.c
-@@ -298,14 +298,14 @@ tar_extract_hardlink(TAR * t, char *real
- if (mkdirhier(dirname(filename)) == -1)
- return -1;
- libtar_hashptr_reset(&hp);
-- if (libtar_hash_getkey(t->h, &hp, th_get_linkname(t),
-+ if (libtar_hash_getkey(t->h, &hp, safer_name_suffix(th_get_linkname(t)),
- (libtar_matchfunc_t)libtar_str_match) != 0)
- {
- lnp = (char *)libtar_hashptr_data(&hp);
- linktgt = &lnp[strlen(lnp) + 1];
- }
- else
-- linktgt = th_get_linkname(t);
-+ linktgt = safer_name_suffix(th_get_linkname(t));
-
- #ifdef DEBUG
- printf(" ==> extracting: %s (link to %s)\n", filename, linktgt);
-@@ -343,9 +343,9 @@ tar_extract_symlink(TAR *t, char *realna
-
- #ifdef DEBUG
- printf(" ==> extracting: %s (symlink to %s)\n",
-- filename, th_get_linkname(t));
-+ filename, safer_name_suffix(th_get_linkname(t)));
- #endif
-- if (symlink(th_get_linkname(t), filename) == -1)
-+ if (symlink(safer_name_suffix(th_get_linkname(t)), filename) == -1)
- {
- #ifdef DEBUG
- perror("symlink()");
---- a/lib/internal.h
-+++ b/lib/internal.h
-@@ -21,3 +21,4 @@
- #define TLS_THREAD
- #endif
-
-+char* safer_name_suffix(char const*);
---- a/lib/output.c
-+++ b/lib/output.c
-@@ -123,9 +123,9 @@ th_print_long_ls(TAR *t)
- else
- printf(" link to ");
- if ((t->options & TAR_GNU) && t->th_buf.gnu_longlink != NULL)
-- printf("%s", t->th_buf.gnu_longlink);
-+ printf("%s", safer_name_suffix(t->th_buf.gnu_longlink));
- else
-- printf("%.100s", t->th_buf.linkname);
-+ printf("%.100s", safer_name_suffix(t->th_buf.linkname));
- }
-
- putchar('\n');
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_maxpathlen.patch b/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_maxpathlen.patch
deleted file mode 100644
index 104dc4cd..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_maxpathlen.patch
+++ /dev/null
@@ -1,491 +0,0 @@
-Author: Svante Signell <svante.signell@telia.com>
-Author: Petter Reinholdtsen <pere@hungry.com>
-Author: Magnus Holmgren <magnus@debian.org>
-Bug-Debian: http://bugs.debian.org/657116
-Description: Fix FTBFS on Hurd by dynamically allocating path names.
- Depends on no_static_buffers.patch, which introduced the th_pathname field.
-
---- a/compat/basename.c
-+++ b/compat/basename.c
-@@ -34,13 +34,25 @@ static char rcsid[] = "$OpenBSD: basenam
- #include <errno.h>
- #include <string.h>
- #include <sys/param.h>
-+#include <stdlib.h>
-
- char *
- openbsd_basename(path)
- const char *path;
- {
-- static char bname[MAXPATHLEN];
-+ static char *bname = NULL;
-+ static size_t allocated = 0;
- register const char *endp, *startp;
-+ int len = 0;
-+
-+ if (!allocated) {
-+ allocated = 64;
-+ bname = malloc(allocated);
-+ if (!bname) {
-+ allocated = 0;
-+ return NULL;
-+ }
-+ }
-
- /* Empty or NULL string gets treated as "." */
- if (path == NULL || *path == '\0') {
-@@ -64,11 +76,19 @@ openbsd_basename(path)
- while (startp > path && *(startp - 1) != '/')
- startp--;
-
-- if (endp - startp + 1 > sizeof(bname)) {
-- errno = ENAMETOOLONG;
-- return(NULL);
-+ len = endp - startp + 1;
-+
-+ if (len + 1 > allocated) {
-+ size_t new_allocated = 2*(len+1);
-+ void *new_bname = malloc(new_allocated);
-+ if (!new_bname)
-+ return NULL;
-+ allocated = new_allocated;
-+ free(bname);
-+ bname = new_bname;
- }
-- (void)strncpy(bname, startp, endp - startp + 1);
-- bname[endp - startp + 1] = '\0';
-+
-+ (void)strncpy(bname, startp, len);
-+ bname[len] = '\0';
- return(bname);
- }
---- a/compat/dirname.c
-+++ b/compat/dirname.c
-@@ -34,13 +34,25 @@ static char rcsid[] = "$OpenBSD: dirname
- #include <errno.h>
- #include <string.h>
- #include <sys/param.h>
-+#include <stdlib.h>
-
- char *
- openbsd_dirname(path)
- const char *path;
- {
-- static char bname[MAXPATHLEN];
-+ static char *bname = NULL;
-+ static size_t allocated = 0;
- register const char *endp;
-+ int len;
-+
-+ if (!allocated) {
-+ allocated = 64;
-+ bname = malloc(allocated);
-+ if (!bname) {
-+ allocated = 0;
-+ return NULL;
-+ }
-+ }
-
- /* Empty or NULL string gets treated as "." */
- if (path == NULL || *path == '\0') {
-@@ -67,11 +79,19 @@ openbsd_dirname(path)
- } while (endp > path && *endp == '/');
- }
-
-- if (endp - path + 1 > sizeof(bname)) {
-- errno = ENAMETOOLONG;
-- return(NULL);
-+ len = endp - path + 1;
-+
-+ if (len + 1 > allocated) {
-+ size_t new_allocated = 2*(len+1);
-+ void *new_bname = malloc(new_allocated);
-+ if (!new_bname)
-+ return NULL;
-+ allocated = new_allocated;
-+ free(bname);
-+ bname = new_bname;
- }
-- (void)strncpy(bname, path, endp - path + 1);
-- bname[endp - path + 1] = '\0';
-+
-+ (void)strncpy(bname, path, len);
-+ bname[len] = '\0';
- return(bname);
- }
---- a/lib/append.c
-+++ b/lib/append.c
-@@ -38,7 +38,7 @@ typedef struct tar_dev tar_dev_t;
- struct tar_ino
- {
- ino_t ti_ino;
-- char ti_name[MAXPATHLEN];
-+ char ti_name[];
- };
- typedef struct tar_ino tar_ino_t;
-
-@@ -61,7 +61,7 @@ tar_append_file(TAR *t, const char *real
- libtar_hashptr_t hp;
- tar_dev_t *td = NULL;
- tar_ino_t *ti = NULL;
-- char path[MAXPATHLEN];
-+ char *path = NULL;
-
- #ifdef DEBUG
- printf("==> tar_append_file(TAR=0x%lx (\"%s\"), realname=\"%s\", "
-@@ -126,34 +126,39 @@ tar_append_file(TAR *t, const char *real
- }
- else
- {
-+ const char *name;
- #ifdef DEBUG
- printf("+++ adding entry: device (0x%lx,0x%lx), inode %ld "
- "(\"%s\")...\n", major(s.st_dev), minor(s.st_dev),
- s.st_ino, realname);
- #endif
-- ti = (tar_ino_t *)calloc(1, sizeof(tar_ino_t));
-+ name = savename ? savename : realname;
-+ ti = (tar_ino_t *)calloc(1, sizeof(tar_ino_t) + strlen(name) + 1);
- if (ti == NULL)
- return -1;
- ti->ti_ino = s.st_ino;
-- snprintf(ti->ti_name, sizeof(ti->ti_name), "%s",
-- savename ? savename : realname);
-+ snprintf(ti->ti_name, strlen(name) + 1, "%s", name);
- libtar_hash_add(td->td_h, ti);
- }
-
- /* check if it's a symlink */
- if (TH_ISSYM(t))
- {
-- i = readlink(realname, path, sizeof(path));
-+ if ((path = malloc(s.st_size + 1)) == NULL)
-+ return -1;
-+ i = readlink(realname, path, s.st_size);
- if (i == -1)
-+ {
-+ free(path);
- return -1;
-- if (i >= MAXPATHLEN)
-- i = MAXPATHLEN - 1;
-+ }
- path[i] = '\0';
- #ifdef DEBUG
- printf(" tar_append_file(): encoding symlink \"%s\" -> "
- "\"%s\"...\n", realname, path);
- #endif
- th_set_link(t, path);
-+ free(path);
- }
-
- /* print file info */
---- a/lib/decode.c
-+++ b/lib/decode.c
-@@ -33,7 +33,8 @@ th_get_pathname(TAR *t)
- /* allocate the th_pathname buffer if not already */
- if (t->th_pathname == NULL)
- {
-- t->th_pathname = malloc(MAXPATHLEN * sizeof(char));
-+ /* Allocate the maximum length of prefix + '/' + name + '\0' */
-+ t->th_pathname = malloc(155 + 1 + 100 + 1);
- if (t->th_pathname == NULL)
- /* out of memory */
- return NULL;
-@@ -41,11 +42,11 @@ th_get_pathname(TAR *t)
-
- if (t->th_buf.prefix[0] == '\0')
- {
-- snprintf(t->th_pathname, MAXPATHLEN, "%.100s", t->th_buf.name);
-+ sprintf(t->th_pathname, "%.100s", t->th_buf.name);
- }
- else
- {
-- snprintf(t->th_pathname, MAXPATHLEN, "%.155s/%.100s",
-+ sprintf(t->th_pathname, "%.155s/%.100s",
- t->th_buf.prefix, t->th_buf.name);
- }
-
---- a/lib/util.c
-+++ b/lib/util.c
-@@ -15,6 +15,7 @@
- #include <stdio.h>
- #include <sys/param.h>
- #include <errno.h>
-+#include <stdlib.h>
-
- #ifdef STDC_HEADERS
- # include <string.h>
-@@ -25,13 +26,15 @@
- int
- path_hashfunc(char *key, int numbuckets)
- {
-- char buf[MAXPATHLEN];
-+ char *buf;
- char *p;
-+ int i;
-
-- strcpy(buf, key);
-+ buf = strdup(key);
- p = basename(buf);
--
-- return (((unsigned int)p[0]) % numbuckets);
-+ i = ((unsigned int)p[0]) % numbuckets;
-+ free(buf);
-+ return (i);
- }
-
-
-@@ -77,15 +80,26 @@ ino_hash(ino_t *inode)
- int
- mkdirhier(char *path)
- {
-- char src[MAXPATHLEN], dst[MAXPATHLEN] = "";
-- char *dirp, *nextp = src;
-- int retval = 1;
-+ char *src, *dst = NULL;
-+ char *dirp, *nextp = NULL;
-+ int retval = 1, len;
-+
-+ len = strlen(path);
-+ if ((src = strdup(path)) == NULL)
-+ {
-+ errno = ENOMEM;
-+ return -1;
-+ }
-+ nextp = src;
-
-- if (strlcpy(src, path, sizeof(src)) > sizeof(src))
-+ /* Make room for // with absolute paths */
-+ if ((dst = malloc(len + 2)) == NULL)
- {
-- errno = ENAMETOOLONG;
-+ free(src);
-+ errno = ENOMEM;
- return -1;
- }
-+ dst[0] = '\0';
-
- if (path[0] == '/')
- strcpy(dst, "/");
-@@ -102,12 +116,18 @@ mkdirhier(char *path)
- if (mkdir(dst, 0777) == -1)
- {
- if (errno != EEXIST)
-+ {
-+ free(src);
-+ free(dst);
- return -1;
-+ }
- }
- else
- retval = 0;
- }
-
-+ free(src);
-+ free(dst);
- return retval;
- }
-
---- a/lib/wrapper.c
-+++ b/lib/wrapper.c
-@@ -16,6 +16,7 @@
- #include <sys/param.h>
- #include <dirent.h>
- #include <errno.h>
-+#include <stdlib.h>
-
- #ifdef STDC_HEADERS
- # include <string.h>
-@@ -26,8 +27,8 @@ int
- tar_extract_glob(TAR *t, char *globname, char *prefix)
- {
- char *filename;
-- char buf[MAXPATHLEN];
-- int i;
-+ char *buf = NULL;
-+ int i, len;
-
- while ((i = th_read(t)) == 0)
- {
-@@ -41,11 +42,25 @@ tar_extract_glob(TAR *t, char *globname,
- if (t->options & TAR_VERBOSE)
- th_print_long_ls(t);
- if (prefix != NULL)
-- snprintf(buf, sizeof(buf), "%s/%s", prefix, filename);
-+ {
-+ len = strlen(prefix) + 1 + strlen(filename);
-+ if ((buf = malloc(len + 1)) == NULL)
-+ return -1;
-+ sprintf(buf, "%s/%s", prefix, filename);
-+ }
- else
-- strlcpy(buf, filename, sizeof(buf));
-+ {
-+ len = strlen(filename);
-+ if ((buf = malloc(len + 1)) == NULL)
-+ return -1;
-+ strcpy(buf, filename);
-+ }
- if (tar_extract_file(t, buf) != 0)
-+ {
-+ free(buf);
- return -1;
-+ }
-+ free(buf);
- }
-
- return (i == 1 ? 0 : -1);
-@@ -56,8 +71,9 @@ int
- tar_extract_all(TAR *t, char *prefix)
- {
- char *filename;
-- char buf[MAXPATHLEN];
-- int i;
-+ char *buf = NULL;
-+ size_t bufsize = 0;
-+ int i, len;
-
- #ifdef DEBUG
- printf("==> tar_extract_all(TAR *t, \"%s\")\n",
-@@ -73,15 +89,29 @@ tar_extract_all(TAR *t, char *prefix)
- if (t->options & TAR_VERBOSE)
- th_print_long_ls(t);
- if (prefix != NULL)
-- snprintf(buf, sizeof(buf), "%s/%s", prefix, filename);
-+ {
-+ len = strlen(prefix) + 1 + strlen(filename);
-+ if ((buf = malloc(len + 1)) == NULL)
-+ return -1;
-+ sprintf(buf, "%s/%s", prefix, filename);
-+ }
- else
-- strlcpy(buf, filename, sizeof(buf));
-+ {
-+ len = strlen(filename);
-+ if ((buf = malloc(len + 1)) == NULL)
-+ return -1;
-+ strcpy(buf, filename);
-+ }
- #ifdef DEBUG
- printf(" tar_extract_all(): calling tar_extract_file(t, "
- "\"%s\")\n", buf);
- #endif
- if (tar_extract_file(t, buf) != 0)
-+ {
-+ free(buf);
- return -1;
-+ }
-+ free(buf);
- }
-
- return (i == 1 ? 0 : -1);
-@@ -91,11 +121,14 @@ tar_extract_all(TAR *t, char *prefix)
- int
- tar_append_tree(TAR *t, char *realdir, char *savedir)
- {
-- char realpath[MAXPATHLEN];
-- char savepath[MAXPATHLEN];
-+ char *realpath = NULL;
-+ size_t realpathsize = 0;
-+ char *savepath = NULL;
-+ size_t savepathsize = 0;
- struct dirent *dent;
- DIR *dp;
- struct stat s;
-+ int len;
-
- #ifdef DEBUG
- printf("==> tar_append_tree(0x%lx, \"%s\", \"%s\")\n",
-@@ -122,11 +155,21 @@ tar_append_tree(TAR *t, char *realdir, c
- strcmp(dent->d_name, "..") == 0)
- continue;
-
-- snprintf(realpath, MAXPATHLEN, "%s/%s", realdir,
-+ len = strlen(realdir) + 1 + strlen(dent->d_name);
-+ if ((realpath = malloc(len + 1)) == NULL)
-+ return -1;
-+ snprintf(realpath, len + 1, "%s/%s", realdir,
- dent->d_name);
- if (savedir)
-- snprintf(savepath, MAXPATHLEN, "%s/%s", savedir,
-+ {
-+ len = strlen(savedir) + 1 + strlen(dent->d_name);
-+ if ((savepath = malloc(len + 1)) == NULL) {
-+ free(realpath);
-+ return -1;
-+ }
-+ snprintf(savepath, len + 1, "%s/%s", savedir,
- dent->d_name);
-+ }
-
- if (lstat(realpath, &s) != 0)
- return -1;
-@@ -135,13 +178,23 @@ tar_append_tree(TAR *t, char *realdir, c
- {
- if (tar_append_tree(t, realpath,
- (savedir ? savepath : NULL)) != 0)
-+ {
-+ free(realpath);
-+ free(savepath);
- return -1;
-+ }
- continue;
- }
-
- if (tar_append_file(t, realpath,
- (savedir ? savepath : NULL)) != 0)
-+ {
-+ free(realpath);
-+ free(savepath);
- return -1;
-+ }
-+ free(realpath);
-+ free(savepath);
- }
-
- closedir(dp);
---- a/libtar/libtar.c
-+++ b/libtar/libtar.c
-@@ -111,8 +111,9 @@ create(char *tarfile, char *rootdir, lib
- {
- TAR *t;
- char *pathname;
-- char buf[MAXPATHLEN];
-+ char *buf = NULL;
- libtar_listptr_t lp;
-+ int len;
-
- if (tar_open(&t, tarfile,
- #ifdef HAVE_LIBZ
-@@ -133,17 +134,29 @@ create(char *tarfile, char *rootdir, lib
- {
- pathname = (char *)libtar_listptr_data(&lp);
- if (pathname[0] != '/' && rootdir != NULL)
-- snprintf(buf, sizeof(buf), "%s/%s", rootdir, pathname);
-+ {
-+ len = strlen(rootdir) + 1 + strlen(pathname);
-+ if ((buf = malloc(len + 1)) == NULL)
-+ return -1;
-+ snprintf(buf, len + 1, "%s/%s", rootdir, pathname);
-+ }
- else
-- strlcpy(buf, pathname, sizeof(buf));
-+ {
-+ len = strlen(pathname);
-+ if ((buf = malloc(len + 1)) == NULL)
-+ return -1;
-+ strlcpy(buf, pathname, len + 1);
-+ }
- if (tar_append_tree(t, buf, pathname) != 0)
- {
- fprintf(stderr,
- "tar_append_tree(\"%s\", \"%s\"): %s\n", buf,
- pathname, strerror(errno));
- tar_close(t);
-+ free(buf);
- return -1;
- }
-+ free(buf);
- }
-
- if (tar_append_eof(t) != 0)
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_static_buffers.patch b/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_static_buffers.patch
deleted file mode 100644
index 548d7518..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_static_buffers.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From: Kamil Dudka <kdudka@redhat.com>
-Date: Wed, 23 Oct 2013 13:04:22 +0000 (+0200)
-Origin: http://repo.or.cz/w/libtar.git/commitdiff/ec613af2e9371d7a3e1f7c7a6822164a4255b4d1
-Subject: decode: avoid using a static buffer in th_get_pathname()
-
-decode: avoid using a static buffer in th_get_pathname()
-
-A solution suggested by Chris Frey:
-https://lists.feep.net:8080/pipermail/libtar/2013-October/000377.html
-
-Note this can break programs that expect sizeof(TAR) to be fixed.
-
---- a/lib/decode.c
-+++ b/lib/decode.c
-@@ -13,6 +13,7 @@
- #include <internal.h>
-
- #include <stdio.h>
-+#include <stdlib.h>
- #include <sys/param.h>
- #include <pwd.h>
- #include <grp.h>
-@@ -26,20 +27,30 @@
- char *
- th_get_pathname(TAR *t)
- {
-- static TLS_THREAD char filename[MAXPATHLEN];
--
- if (t->th_buf.gnu_longname)
- return t->th_buf.gnu_longname;
-
-- if (t->th_buf.prefix[0] != '\0')
-+ /* allocate the th_pathname buffer if not already */
-+ if (t->th_pathname == NULL)
-+ {
-+ t->th_pathname = malloc(MAXPATHLEN * sizeof(char));
-+ if (t->th_pathname == NULL)
-+ /* out of memory */
-+ return NULL;
-+ }
-+
-+ if (t->th_buf.prefix[0] == '\0')
-+ {
-+ snprintf(t->th_pathname, MAXPATHLEN, "%.100s", t->th_buf.name);
-+ }
-+ else
- {
-- snprintf(filename, sizeof(filename), "%.155s/%.100s",
-+ snprintf(t->th_pathname, MAXPATHLEN, "%.155s/%.100s",
- t->th_buf.prefix, t->th_buf.name);
-- return filename;
- }
-
-- snprintf(filename, sizeof(filename), "%.100s", t->th_buf.name);
-- return filename;
-+ /* will be deallocated in tar_close() */
-+ return t->th_pathname;
- }
-
-
---- a/lib/handle.c
-+++ b/lib/handle.c
-@@ -121,6 +121,7 @@ tar_close(TAR *t)
- libtar_hash_free(t->h, ((t->oflags & O_ACCMODE) == O_RDONLY
- ? free
- : (libtar_freefunc_t)tar_dev_free));
-+ free(t->th_pathname);
- free(t);
-
- return i;
---- a/lib/libtar.h
-+++ b/lib/libtar.h
-@@ -85,6 +85,9 @@ typedef struct
- int options;
- struct tar_header th_buf;
- libtar_hash_t *h;
-+
-+ /* introduced in libtar 1.2.21 */
-+ char *th_pathname;
- }
- TAR;
-
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_strip.patch b/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_strip.patch
deleted file mode 100644
index a3187285..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/no_strip.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Description: make install must not strip binaries
-
---- a/lib/Makefile.in
-+++ b/lib/Makefile.in
-@@ -20,7 +20,7 @@ SHELL = @SHELL@
-
- ### Installation programs and flags
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ -s
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_DATA = @INSTALL_DATA@
- LN_S = @LN_S@
- MKDIR = @MKDIR@
---- a/libtar/Makefile.in
-+++ b/libtar/Makefile.in
-@@ -20,7 +20,7 @@ SHELL = @SHELL@
-
- ### Installation programs and flags
- INSTALL = @INSTALL@
--INSTALL_PROGRAM = @INSTALL_PROGRAM@ -s
-+INSTALL_PROGRAM = @INSTALL_PROGRAM@
- INSTALL_DATA = @INSTALL_DATA@
- LN_S = @LN_S@
- MKDIR = @MKDIR@
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/oldgnu_prefix.patch b/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/oldgnu_prefix.patch
deleted file mode 100644
index 99ab509e..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/oldgnu_prefix.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Description: Detect old-style GNU headers correctly
-Author: Steinar H. Gunderson <sesse@debian.org>
-
---- libtar-1.2.20.orig/lib/decode.c
-+++ libtar-1.2.20/lib/decode.c
-@@ -69,7 +69,14 @@ th_get_pathname(TAR *t)
- return NULL;
- }
-
-- if (t->th_buf.prefix[0] == '\0')
-+ /*
-+ * Old GNU headers (also used by newer GNU tar when doing incremental
-+ * dumps) use the POSIX prefix field for many other things, such as
-+ * mtime and ctime. New-style GNU headers don't, but also don't use the
-+ * POSIX prefix field. Thus, only honor the prefix field if the archive
-+ * is actually a POSIX archive. This is the same logic as GNU tar uses.
-+ */
-+ if (strncmp(t->th_buf.magic, TMAGIC, TMAGLEN - 1) != 0 || t->th_buf.prefix[0] == '\0')
- {
- sprintf(t->th_pathname, "%.100s", t->th_buf.name);
- }
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/series b/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/series
deleted file mode 100644
index 617ca258..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/series
+++ /dev/null
@@ -1,7 +0,0 @@
-no_static_buffers.patch
-no_maxpathlen.patch
-CVE-2013-4420.patch
-th_get_size-unsigned-int.patch
-oldgnu_prefix.patch
-testsuite.patch
-no_strip.patch
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/testsuite.patch b/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/testsuite.patch
deleted file mode 100644
index e8be9321..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/testsuite.patch
+++ /dev/null
@@ -1,50 +0,0 @@
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -10,5 +10,5 @@ ACLOCAL_AMFLAGS = -I autoconf
-
- #@SET_MAKE@
-
--SUBDIRS = lib libtar doc
-+SUBDIRS = lib libtar doc testsuite
-
---- a/doc/Makefile.in
-+++ b/doc/Makefile.in
-@@ -151,3 +151,4 @@ install: all
- echo ".so man3/@LISTHASH_PREFIX@_list_new.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \
- done
-
-+check:
---- a/lib/Makefile.in
-+++ b/lib/Makefile.in
-@@ -104,3 +104,4 @@ install: ${ALL}
- ${INSTALL_DATA} ${srcdir}/libtar.h ${DESTDIR}${includedir}
- ${INSTALL_DATA} ../listhash/libtar_listhash.h ${DESTDIR}${includedir}
-
-+check:
---- a/libtar/Makefile.in
-+++ b/libtar/Makefile.in
-@@ -76,3 +76,4 @@ install: ${ALL}
- ${MKDIR} ${DESTDIR}${bindir}
- $(LIBTOOL) --mode=install ${INSTALL_PROGRAM} libtar ${DESTDIR}${bindir}
-
-+check:
---- /dev/null
-+++ b/testsuite/Makefile.in
-@@ -0,0 +1,7 @@
-+all:
-+
-+check: ../libtar/libtar
-+ ../libtar/libtar -C ../doc -c test.tar .
-+ ../libtar/libtar -t test.tar
-+ $(RM) test.tar
-+install:
---- a/configure.ac
-+++ b/configure.ac
-@@ -120,6 +120,6 @@ fi
-
-
- dnl ### Create output files. #######################################
--AC_CONFIG_FILES([Makefile lib/Makefile libtar/Makefile doc/Makefile])
-+AC_CONFIG_FILES([Makefile lib/Makefile libtar/Makefile doc/Makefile testsuite/Makefile])
- AC_OUTPUT
-
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/th_get_size-unsigned-int.patch b/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/th_get_size-unsigned-int.patch
deleted file mode 100644
index e12ca914..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/files/th_get_size-unsigned-int.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-Origin: http://repo.or.cz/w/libtar.git/commitdiff/e4c1f2974258d6a325622cfd712873d49b5e7a73
-From: Chris Frey <cdfrey@foursquare.net>
-Date: Thu, 24 Oct 2013 18:52:44 -0400
-Subject: [PATCH] Change th_get_size() macro to return unsigned int
-
-On systems where size_t is larger than an int (and larger than
-unsigned int), then in various places in the library, where
-stuff like this happens:
-
- size_t sz = th_get_size(t);
-
-then the int value returned from th_get_size() is sign extended to
-some unwieldy amount.
-
-On 64bit systems, this can yield extremely large values.
-
-By fixing this problem in the header, and only for th_get_size(),
-we avoid breaking the API of the function call oct_to_int()
-(which arguably should return an unsigned int, since the sscanf()
-it uses expects to yield an unsigned int). We also fix the library,
-which uses th_get_size() internally to assign sizes to size_t.
-
-The drawback is that not all client code that uses th_get_size()
-will be fixed, until they recompile, but they will automatically
-take advantage of the bugs fixed *inside* the library.
-
-The remaining th_get_*() functions operate on modes and CRC values
-and the like, and should be fine, remaining as ints.
-
-Thanks very much to Magnus Holmgren for catching this behaviour.
-https://lists.feep.net:8080/pipermail/libtar/2013-October/000365.html
----
- lib/libtar.h | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/lib/libtar.h b/lib/libtar.h
-index 2fefee0..13bb82d 100644
---- a/lib/libtar.h
-+++ b/lib/libtar.h
-@@ -185,7 +185,11 @@ int th_write(TAR *t);
-
- /* decode tar header info */
- #define th_get_crc(t) oct_to_int((t)->th_buf.chksum)
--#define th_get_size(t) oct_to_int((t)->th_buf.size)
-+/* We cast from int (what oct_to_int() returns) to
-+ unsigned int, to avoid unwieldy sign extensions
-+ from occurring on systems where size_t is bigger than int,
-+ since th_get_size() is often stored into a size_t. */
-+#define th_get_size(t) ((unsigned int)oct_to_int((t)->th_buf.size))
- #define th_get_mtime(t) oct_to_int((t)->th_buf.mtime)
- #define th_get_devmajor(t) oct_to_int((t)->th_buf.devmajor)
- #define th_get_devminor(t) oct_to_int((t)->th_buf.devminor)
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/libtar_1.2.20.bb b/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/libtar_1.2.20.bb
deleted file mode 100644
index 904f5c60..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/libtar/libtar_1.2.20.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "libtar, tar manipulating library"
-DESCRIPTION = "libtar is a library for manipulating POSIX tar files"
-HOMEPAGE = "http://www.feep.net/libtar"
-SECTION = "libs"
-LICENSE = "NCSA"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=61cbac6719ae682ce6cd45b5c11e21af"
-
-# Source and patches taken from debian check there for changes.
-# Check http://repo.or.cz/w/libtar.git/ as upstream.
-# More patches found here: https://github.com/tklauser/libtar
-#
-SRC_URI = "http://httpredir.debian.org/debian/pool/main/libt/libtar/libtar_${PV}.orig.tar.gz"
-SRC_URI += "file://no_static_buffers.patch"
-SRC_URI += "file://no_maxpathlen.patch"
-SRC_URI += "file://CVE-2013-4420.patch"
-SRC_URI += "file://th_get_size-unsigned-int.patch"
-SRC_URI += "file://oldgnu_prefix.patch"
-SRC_URI += "file://testsuite.patch"
-SRC_URI += "file://no_strip.patch"
-
-SRC_URI[md5sum] = "6ced95ab3a4b33fbfe2dfb231d156cdb"
-SRC_URI[sha256sum] = "50f24c857a7ef1cb092e6508758b86d06f1188508f897f3e6b40c573e8879109"
-
-# tarball does not contain PV
-S = "${WORKDIR}/${PN}"
-
-CFLAGS_append = " -DHAVE_STDARG_H"
-
-RDEPENDS_${PN} += "zlib"
-
-inherit autotools
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/meta-agl-devel/meta-oem-extra-libs/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend
deleted file mode 100644
index 33ca38ae..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-RDEPENDS_${PN} =+ "nativesdk-protobuf-dev"
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-core/packagegroups/packagegroup-ivi-common-core-os-commonlibs.bbappend b/meta-agl-devel/meta-oem-extra-libs/recipes-core/packagegroups/packagegroup-ivi-common-core-os-commonlibs.bbappend
deleted file mode 100644
index c2de93c1..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-core/packagegroups/packagegroup-ivi-common-core-os-commonlibs.bbappend
+++ /dev/null
@@ -1,53 +0,0 @@
-RDEPENDS_${PN} += "\
- boost \
- boost-atomic \
- boost-chrono \
- boost-date-time \
- boost-dev \
- boost-filesystem \
- boost-graph \
- boost-iostreams \
- boost-log \
- boost-program-options \
- boost-random \
- boost-regex \
- boost-serialization \
- boost-signals \
- boost-staticdev \
- boost-system \
- boost-test \
- boost-thread \
- boost-timer \
- fixesproto-dev \
- imagemagick \
- iptables \
- libtar \
- libtar-dev \
- util-macros \
- zlib \
- glibc \
- curl \
- giflib \
- neon \
- mongoose \
- fuse \
- protobuf \
- bsdiff \
- kmod \
- libcroco \
- tiff \
- librsvg \
- libpcap \
- iputils \
- net-tools \
- pixman \
- bluez5 \
- speex \
- glib-2.0 \
- libogg \
- thrift \
- ppp \
- libdatrie \
- libthai \
- libwebsockets \
-"
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-devtools/bsdiff/bsdiff_git.bb b/meta-agl-devel/meta-oem-extra-libs/recipes-devtools/bsdiff/bsdiff_git.bb
deleted file mode 100644
index 8eb72719..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-devtools/bsdiff/bsdiff_git.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Binary delta tools and library"
-HOMEPAGE = "https://github.com/clearlinux/bsdiff"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0dbe7a50f028269750631fcbded3846a"
-
-SRC_URI = "git://github.com/clearlinux/bsdiff.git;protocol=https"
-
-PV = "1.0.1+git${SRCPV}"
-SRCREV = "8c0a87b7c9eb5b22ed4e03a4eb42b32bd390df14"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "xz bzip2 zlib libcheck"
-
-inherit pkgconfig autotools
-
-EXTRA_OECONF = "--disable-tests"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-support/imagemagick/imagemagick_%.bbappend b/meta-agl-devel/meta-oem-extra-libs/recipes-support/imagemagick/imagemagick_%.bbappend
deleted file mode 100644
index 2fa9538e..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-support/imagemagick/imagemagick_%.bbappend
+++ /dev/null
@@ -1,2 +0,0 @@
-DEPENDS_append = " libxml2 libxml2-native"
-EXTRA_OECONF_append = " --with-xml"
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-support/libdatrie/libdatrie_0.2.9.bb b/meta-agl-devel/meta-oem-extra-libs/recipes-support/libdatrie/libdatrie_0.2.9.bb
deleted file mode 100755
index 44fd0b47..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-support/libdatrie/libdatrie_0.2.9.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# No base recipe
-#
-
-DESCRIPTION = "datrie is an implementation of double-array structure \
-for representing trie, as proposed by Junichi Aoe."
-HOMEPAGE = "http://linux.thai.net/projects/libthai"
-
-PR = "r0"
-
-inherit autotools pkgconfig
-
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-SRC_URI = "http://linux.thai.net/pub/thailinux/software/libthai/${BPN}-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "687624f374e748de81b01399736bb735"
-SRC_URI[sha256sum] = "d980713e7ad8e19cf3b54ee0173782b94332af8e7e4e936dde01d2cd72e1da1d"
-
-
-# Add more packages
-PACKAGES =+ "${PN}1-bin"
-
-FILES_${PN}1-bin += "${bindir}/*"
-
-BBCLASSEXTEND += "native"
-
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-support/libthai/libthai_0.1.20.bb b/meta-agl-devel/meta-oem-extra-libs/recipes-support/libthai/libthai_0.1.20.bb
deleted file mode 100755
index 0271da08..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-support/libthai/libthai_0.1.20.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "Thai language support routines"
-LICENSE = "LGPL"
-DEPENDS = "libdatrie libdatrie-native"
-
-SRC_URI = "http://linux.thai.net/pub/thailinux/software/libthai/${PN}-${PV}.tar.xz"
-
-inherit autotools pkgconfig
-
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-SRC_URI[md5sum] = "2b58148d73361316121d5384efeda9e6"
-SRC_URI[sha256sum] = "5a107f5a4dc5433ec6deb744435a4d8dc89daec0a189b9c76a90648fda0ef7ed"
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-support/mongoose/README.md b/meta-agl-devel/meta-oem-extra-libs/recipes-support/mongoose/README.md
deleted file mode 100644
index 85bcfd0a..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-support/mongoose/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-Add Mongoose Embedded Web Server Library for AGL OEM NEDDS
-================================================================
-Default Mongoose has build in 3 sub libs libmongoose.so
-libmongoose_ssl.so and libmongoose_mqtt.so define with
-MONGOOSE_EXLIBS in bb files.
-If necessary you can modify MONGOOSE_EXLIBS and CFLAGS_XXX in
-bb file to customize the library function.
-
-access https://github.com/cesanta/mongoose for more infomation
-
diff --git a/meta-agl-devel/meta-oem-extra-libs/recipes-support/mongoose/mongoose_6.6.bb b/meta-agl-devel/meta-oem-extra-libs/recipes-support/mongoose/mongoose_6.6.bb
deleted file mode 100644
index 2833c19d..00000000
--- a/meta-agl-devel/meta-oem-extra-libs/recipes-support/mongoose/mongoose_6.6.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-SUMMARY = "Mongoose - Embedded Web Server / Embedded Networking Library"
-DESCRIPTION = "Mongoose is ideal for embedded environments. It has been designed for connecting devices and bringing them online. \
- Mongoose makes embedded network programming fast, robust, and easy."
-
-HOMEPAGE = "https://www.cesanta.com/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3548d4c6b2c754880739734d5e100aa9"
-
-SECTION = "libs"
-
-PV = "6.6+git${SRCPV}"
-SRCREV = "a23daa1547937b17bc30894d4bf19ddca80c7d35"
-SRC_URI = "git://github.com/cesanta/mongoose.git;branch=master"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "openssl"
-
-MONGOOSE_EXLIBS ?= "libmongoose.so libmongoose_ssl.so libmongoose_mqtt.so"
-
-python () {
- d.setVar("CFLAGS_DEF", "-DMG_ENABLE_THREADS -DMG_ENABLE_COAP -DMG_ENABLE_HTTP_STREAMING_MULTIPART")
- d.setVar("CFLAGS_SSL", "-DMG_ENABLE_THREADS -DMG_ENABLE_SSL -lssl -lcrypto")
- d.setVar("CFLAGS_MQTT", "-DMG_ENABLE_THREADS -DMG_ENABLE_SSL -lssl -lcrypto -DMG_ENABLE_MQTT_BROKER -DMG_ENABLE_HTTP=0")
-}
-
-FILES_${PN} += "${exec_prefix}/lib/libmongoose.so \
- ${exec_prefix}/lib/libmongoose_mqtt.so \
- ${exec_prefix}/lib/libmongoose_ssl.so \
- "
-
-FILES_${PN}-dbg = "${exec_prefix}/src/*"
-
-FILES_${PN}-dev = "${exec_prefix}/include/mongoose.h"
-
-FILES_${PN}-doc = "${exec_prefix}/share/doc/*"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-do_compile() {
-
- if [ "${@bb.utils.contains('MONGOOSE_EXLIBS', 'libmongoose.so', 'def', '', d)}" = "def" ]; then
- ${CC} mongoose.c -fPIC -shared -o libmongoose.so ${CFLAGS_DEF}
- fi
-
- if [ "${@bb.utils.contains('MONGOOSE_EXLIBS', 'libmongoose_ssl.so', 'ssl', '', d)}" = "ssl" ]; then
- ${CC} mongoose.c -fPIC -shared -o libmongoose_ssl.so ${CFLAGS_SSL}
- fi
-
- if [ "${@bb.utils.contains('MONGOOSE_EXLIBS', 'libmongoose_mqtt.so', 'mqtt', '', d)}" = "mqtt" ]; then
- ${CC} mongoose.c -fPIC -shared -o libmongoose_mqtt.so ${CFLAGS_MQTT}
- fi
-}
-
-do_install() {
-
- install -d ${D}${exec_prefix}/lib/
- install -d ${D}${exec_prefix}/include/
- install -d ${D}${exec_prefix}/src/debug/mongoose/6.6/
- install -d ${D}${exec_prefix}/share/doc/
-
- for libs in ${MONGOOSE_EXLIBS}
- do
- install -m 0644 ${S}/${libs} ${D}${exec_prefix}/lib/${libs}
- done
-
- install -m 0644 ${S}/mongoose.h ${D}${exec_prefix}/include/mongoose.h
- install -m 0644 ${S}/mongoose.c ${D}${exec_prefix}/src/debug/mongoose/6.6/mongoose.c
- install -m 0644 ${S}/mongoose.h ${D}${exec_prefix}/src/debug/mongoose/6.6/mongoose.h
-
- tar -czf docs.tar.gz ${S}/docs/
- install -m 0644 ${S}/docs.tar.gz ${D}${exec_prefix}/share/doc/docs.tar.gz
- install -m 0644 ${S}/LICENSE ${D}${exec_prefix}/share/doc/LICENSE
- install -m 0644 ${S}/CONTRIBUTING.md ${D}${exec_prefix}/share/doc/CONTRIBUTING.md
-}
diff --git a/meta-agl-devel/meta-pipewire/conf/include/agl-pipewire.inc b/meta-agl-devel/meta-pipewire/conf/include/agl-pipewire.inc
deleted file mode 100644
index edd89311..00000000
--- a/meta-agl-devel/meta-pipewire/conf/include/agl-pipewire.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-DISTRO_FEATURES_append = " pipewire"
-PREFERRED_RPROVIDER_virtual/pipewire-config = "pipewire-conf-agl"
-PREFERRED_RPROVIDER_virtual/wireplumber-config = "wireplumber-board-config-agl"
diff --git a/meta-agl-devel/meta-pipewire/conf/layer.conf b/meta-agl-devel/meta-pipewire/conf/layer.conf
deleted file mode 100644
index 8ad06e3e..00000000
--- a/meta-agl-devel/meta-pipewire/conf/layer.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH .= ":${LAYERDIR}"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
- ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "meta-pipewire"
-BBFILE_PATTERN_meta-pipewire = "^${LAYERDIR}/"
-BBFILE_PRIORITY_meta-pipewire = "71"
-
-LAYERSERIES_COMPAT_meta-pipewire = "thud"
diff --git a/meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch b/meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch
deleted file mode 100644
index 6c9a388c..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch
+++ /dev/null
@@ -1,517 +0,0 @@
-From f2e6a0a324106b40195f88953e55a355875d2b1b Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Fri, 4 Oct 2019 20:51:24 +0300
-Subject: [PATCH] utils: add a gstreamer helper application for interconnection
- with pipewire
-
-Unfortunately, the bluez-alsa PCM plugin does not work correctly
-when it is used through pipewire (or gstreamer, or anywhere really...).
-
-Thanfully, the bluez-alsa PCM plugin is only a simple client that
-reads/writes on a file descriptor that was opened by bluealsa.
-This allows us to use bluealsa without the PCM plugin, just like it
-is done in the aplay.c util.
-
-This one uses GStreamer to implement the plumbing between pipewire
-and the file descriptor. On the reading side we are also doing some
-tricks to ensure a smooth stream, which is not the case for the
-stream that is coming out of bluealsa.
-
-This helper is implemented as a patch to bluez-alsa so that it can
-use its internal private API. In the future this needs some re-thinking.
-
-Upstream-Status: Inappropriate
----
- configure.ac | 7 +
- utils/Makefile.am | 20 +++
- utils/gst-helper.c | 432 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 459 insertions(+)
- create mode 100644 utils/gst-helper.c
-
-diff --git a/configure.ac b/configure.ac
-index 4825afa..9125871 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -141,6 +141,13 @@ AM_COND_IF([ENABLE_HCITOP], [
- PKG_CHECK_MODULES([NCURSES], [ncurses])
- ])
-
-+AC_ARG_ENABLE([gsthelper],
-+ [AS_HELP_STRING([--enable-gsthelper], [enable building of gsthelper tool])])
-+AM_CONDITIONAL([ENABLE_GSTHELPER], [test "x$enable_gsthelper" = "xyes"])
-+AM_COND_IF([ENABLE_GSTHELPER], [
-+ PKG_CHECK_MODULES([GST], [gstreamer-1.0 glib-2.0])
-+])
-+
- AC_ARG_ENABLE([test],
- [AS_HELP_STRING([--enable-test], [enable unit test])])
- AM_CONDITIONAL([ENABLE_TEST], [test "x$enable_test" = "xyes"])
-diff --git a/utils/Makefile.am b/utils/Makefile.am
-index 9057f2c..9790474 100644
---- a/utils/Makefile.am
-+++ b/utils/Makefile.am
-@@ -47,3 +47,23 @@ hcitop_LDADD = \
- @LIBBSD_LIBS@ \
- @NCURSES_LIBS@
- endif
-+
-+if ENABLE_GSTHELPER
-+bin_PROGRAMS += bluealsa-gst-helper
-+bluealsa_gst_helper_SOURCES = \
-+ ../src/shared/dbus-client.c \
-+ ../src/shared/ffb.c \
-+ ../src/shared/log.c \
-+ gst-helper.c
-+bluealsa_gst_helper_CFLAGS = \
-+ -I$(top_srcdir)/src \
-+ @ALSA_CFLAGS@ \
-+ @BLUEZ_CFLAGS@ \
-+ @DBUS1_CFLAGS@ \
-+ @GST_CFLAGS@
-+bluealsa_gst_helper_LDADD = \
-+ @ALSA_LIBS@ \
-+ @BLUEZ_LIBS@ \
-+ @DBUS1_LIBS@ \
-+ @GST_LIBS@
-+endif
-diff --git a/utils/gst-helper.c b/utils/gst-helper.c
-new file mode 100644
-index 0000000..de1d47c
---- /dev/null
-+++ b/utils/gst-helper.c
-@@ -0,0 +1,432 @@
-+/* Bluez-Alsa PipeWire integration GStreamer helper
-+ *
-+ * Copyright © 2016-2019 Arkadiusz Bokowy
-+ * Copyright © 2019 Collabora Ltd.
-+ * @author George Kiagiadakis <george.kiagiadakis@collabora.com>
-+ *
-+ * SPDX-License-Identifier: MIT
-+ */
-+
-+#if HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <errno.h>
-+#include <getopt.h>
-+#include <poll.h>
-+#include <pthread.h>
-+#include <signal.h>
-+#include <stdbool.h>
-+#include <stdint.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-+
-+#include <bluetooth/bluetooth.h>
-+#include <dbus/dbus.h>
-+#include <gst/gst.h>
-+
-+#include "shared/dbus-client.h"
-+#include "shared/defs.h"
-+#include "shared/ffb.h"
-+#include "shared/log.h"
-+
-+struct worker {
-+ /* used BlueALSA PCM device */
-+ struct ba_pcm ba_pcm;
-+ /* file descriptor of PCM FIFO */
-+ int ba_pcm_fd;
-+ /* file descriptor of PCM control */
-+ int ba_pcm_ctrl_fd;
-+ /* the gstreamer pipelines (sink & source) */
-+ GstElement *pipeline[2];
-+ /* the queue & pwaudiosink of the sink pipeline */
-+ GstElement *queue;
-+ GstElement *pwelem;
-+};
-+
-+static struct ba_dbus_ctx dbus_ctx;
-+static GHashTable *workers;
-+static bool main_loop_on = true;
-+
-+static void
-+main_loop_stop(int sig)
-+{
-+ /* Call to this handler restores the default action, so on the
-+ * second call the program will be forcefully terminated. */
-+
-+ struct sigaction sigact = { .sa_handler = SIG_DFL };
-+ sigaction(sig, &sigact, NULL);
-+
-+ main_loop_on = false;
-+}
-+
-+static GstBusSyncReply
-+bus_sync_handler(GstBus *bus, GstMessage *message, gpointer user_data)
-+{
-+ struct worker *w = user_data;
-+ GstState s;
-+
-+ switch (GST_MESSAGE_TYPE (message)) {
-+ case GST_MESSAGE_REQUEST_STATE:
-+ gst_message_parse_request_state (message, &s);
-+
-+ debug ("corked: %d", (s == GST_STATE_PAUSED));
-+
-+ /* drop queue data when corked */
-+ g_object_set (w->queue,
-+ "leaky", (s == GST_STATE_PAUSED) ? 2 /* downstream */ : 0 /* no */,
-+ NULL);
-+ gst_element_set_state (w->pwelem, s);
-+
-+ /* flush the queue when resuming */
-+ if (s == GST_STATE_PLAYING) {
-+ gst_element_send_event (w->queue, gst_event_new_flush_start ());
-+ gst_element_send_event (w->queue, gst_event_new_flush_stop (FALSE));
-+ }
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ gst_message_unref (message);
-+ return GST_BUS_DROP;
-+}
-+
-+static int
-+worker_start_pipeline(struct worker *w, int id, int mode, int profile)
-+{
-+ GError *gerr = NULL;
-+ DBusError err = DBUS_ERROR_INIT;
-+ const gchar * role = NULL;
-+
-+ if (w->pipeline[id])
-+ return 0;
-+
-+ if (!bluealsa_dbus_pcm_open(&dbus_ctx, w->ba_pcm.pcm_path, mode,
-+ &w->ba_pcm_fd, &w->ba_pcm_ctrl_fd, &err)) {
-+ error("Couldn't open PCM: %s", err.message);
-+ dbus_error_free(&err);
-+ goto fail;
-+ }
-+
-+ if (mode == BA_PCM_FLAG_SINK) {
-+ debug("sink start");
-+ w->pipeline[id] = gst_parse_launch(
-+ /* add a silent live source to ensure a perfect live stream on the
-+ output, even when the bt device is not sending or has gaps;
-+ this also effectively changes the clock to be the system clock,
-+ which is the same clock used by bluez-alsa on the sending side */
-+ "audiotestsrc is-live=true wave=silence ! capsfilter name=capsf "
-+ "! audiomixer name=m "
-+ /* mix the input from bluez-alsa using fdsrc; rawaudioparse
-+ is necessary to convert bytes to time and align the buffers */
-+ "fdsrc name=fdelem do-timestamp=true ! capsfilter name=capsf2 "
-+ "! rawaudioparse use-sink-caps=true ! m. "
-+ /* take the mixer output, convert and push to pipewire */
-+ "m.src ! capsfilter name=capsf3 ! audioconvert ! audioresample "
-+ "! audio/x-raw,format=F32LE,rate=48000 ! identity sync=true "
-+ "! queue name=queue leaky=no max-size-time=0 max-size-buffers=0 max-size-bytes=192000 "
-+ "! pwaudiosink name=pwelem",
-+ &gerr);
-+
-+ /* a2dp is for music, sco is for calls */
-+ role = (profile == BA_PCM_FLAG_PROFILE_A2DP) ? "Multimedia" : "Communication";
-+ }
-+ else if (mode == BA_PCM_FLAG_SOURCE && profile == BA_PCM_FLAG_PROFILE_SCO) {
-+ debug("source start");
-+ w->pipeline[id] = gst_parse_launch(
-+ /* read from pipewire and put the buffers on a leaky queue, which
-+ will essentially allow pwaudiosrc to continue working while
-+ the fdsink is blocked (when there is no phone call in progress).
-+ 9600 bytes = 50ms @ F32LE/1ch/48000
-+ */
-+ "pwaudiosrc name=pwelem ! audio/x-raw,format=F32LE,rate=48000 "
-+ "! queue name=queue leaky=downstream max-size-time=0 max-size-buffers=0 max-size-bytes=9600 "
-+ "! audioconvert ! audioresample ! capsfilter name=capsf "
-+ "! fdsink name=fdelem", &gerr);
-+
-+ role = "Communication";
-+ }
-+
-+ if (gerr) {
-+ error("Failed to start pipeline: %s", gerr->message);
-+ g_error_free(gerr);
-+ goto fail;
-+ }
-+
-+ if (w->pipeline[id]) {
-+ g_autofree gchar *capsstr = NULL;
-+ g_autoptr (GstElement) fdelem = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "fdelem");
-+ g_autoptr (GstElement) pwelem = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "pwelem");
-+ g_autoptr (GstElement) queue = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "queue");
-+ g_autoptr (GstElement) capsf = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf");
-+ g_autoptr (GstElement) capsf2 = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf2");
-+ g_autoptr (GstElement) capsf3 = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf3");
-+ g_autoptr (GstCaps) caps = gst_caps_new_simple("audio/x-raw",
-+ "format", G_TYPE_STRING, "S16LE",
-+ "layout", G_TYPE_STRING, "interleaved",
-+ "channels", G_TYPE_INT, w->ba_pcm.channels,
-+ "rate", G_TYPE_INT, w->ba_pcm.sampling,
-+ NULL);
-+ g_autoptr (GstStructure) stream_props = gst_structure_new("props",
-+ "media.role", G_TYPE_STRING, role,
-+ "bluealsa.profile", G_TYPE_STRING,
-+ (profile == BA_PCM_FLAG_PROFILE_SCO) ? "sco" : "a2dp",
-+ NULL);
-+
-+ g_object_set(capsf, "caps", caps, NULL);
-+ if (capsf2)
-+ g_object_set(capsf2, "caps", caps, NULL);
-+ if (capsf3)
-+ g_object_set(capsf3, "caps", caps, NULL);
-+
-+ capsstr = gst_caps_to_string (caps);
-+ debug(" caps: %s", capsstr);
-+
-+ g_object_set(fdelem, "fd", w->ba_pcm_fd, NULL);
-+ g_object_set(pwelem, "stream-properties", stream_props, NULL);
-+
-+ if (mode == BA_PCM_FLAG_SINK) {
-+ g_autoptr (GstBus) bus = gst_pipeline_get_bus(GST_PIPELINE(w->pipeline[id]));
-+ gst_bus_set_sync_handler(bus, bus_sync_handler, w, NULL);
-+ w->queue = queue;
-+ w->pwelem = pwelem;
-+ }
-+
-+ gst_element_set_state(w->pipeline[id], GST_STATE_PLAYING);
-+ }
-+
-+ return 0;
-+fail:
-+ g_clear_object(&w->pipeline[id]);
-+ return -1;
-+}
-+
-+static int
-+worker_start(struct worker *w)
-+{
-+ int mode = w->ba_pcm.flags & (BA_PCM_FLAG_SOURCE | BA_PCM_FLAG_SINK);
-+ int profile = w->ba_pcm.flags & (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO);
-+ /* human-readable BT address */
-+ char addr[18];
-+
-+ g_return_val_if_fail (profile != 0 && profile != (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO), -1);
-+
-+ ba2str(&w->ba_pcm.addr, addr);
-+ debug("%p: worker start addr:%s, mode:0x%x, profile:0x%x", w, addr, mode, profile);
-+
-+ if (mode & BA_PCM_FLAG_SINK)
-+ worker_start_pipeline(w, 0, BA_PCM_FLAG_SINK, profile);
-+ if (mode & BA_PCM_FLAG_SOURCE)
-+ worker_start_pipeline(w, 1, BA_PCM_FLAG_SOURCE, profile);
-+}
-+
-+static int
-+worker_stop(struct worker *w)
-+{
-+ debug("stop worker %p", w);
-+ if (w->pipeline[0]) {
-+ gst_element_set_state(w->pipeline[0], GST_STATE_NULL);
-+ g_clear_object(&w->pipeline[0]);
-+ }
-+ if (w->pipeline[1]) {
-+ gst_element_set_state(w->pipeline[1], GST_STATE_NULL);
-+ g_clear_object(&w->pipeline[1]);
-+ }
-+ if (w->ba_pcm_fd != -1) {
-+ close(w->ba_pcm_fd);
-+ w->ba_pcm_fd = -1;
-+ }
-+ if (w->ba_pcm_ctrl_fd != -1) {
-+ close(w->ba_pcm_ctrl_fd);
-+ w->ba_pcm_ctrl_fd = -1;
-+ }
-+ return 0;
-+}
-+
-+static int
-+supervise_pcm_worker(struct worker *worker)
-+{
-+ if (worker == NULL)
-+ return -1;
-+
-+ /* no mode? */
-+ if (worker->ba_pcm.flags & (BA_PCM_FLAG_SOURCE | BA_PCM_FLAG_SINK) == 0)
-+ goto stop;
-+
-+ /* no profile? */
-+ if (worker->ba_pcm.flags & (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO) == 0)
-+ goto stop;
-+
-+ /* check whether SCO has selected codec */
-+ if (worker->ba_pcm.flags & BA_PCM_FLAG_PROFILE_SCO &&
-+ worker->ba_pcm.codec == 0) {
-+ debug("Skipping SCO with codec not selected");
-+ goto stop;
-+ }
-+
-+start:
-+ return worker_start(worker);
-+stop:
-+ return worker_stop(worker);
-+}
-+
-+static void
-+worker_new(struct ba_pcm *pcm)
-+{
-+ struct worker *w = g_slice_new0 (struct worker);
-+ memcpy(&w->ba_pcm, pcm, sizeof(struct ba_pcm));
-+ w->ba_pcm_fd = -1;
-+ w->ba_pcm_ctrl_fd = -1;
-+ g_hash_table_insert(workers, w->ba_pcm.pcm_path, w);
-+ supervise_pcm_worker(w);
-+}
-+
-+static DBusHandlerResult
-+dbus_signal_handler(DBusConnection *conn, DBusMessage *message, void *data)
-+{
-+ (void)conn;
-+ (void)data;
-+
-+ const char *path = dbus_message_get_path(message);
-+ const char *interface = dbus_message_get_interface(message);
-+ const char *signal = dbus_message_get_member(message);
-+
-+ DBusMessageIter iter;
-+ struct worker *worker;
-+
-+ if (strcmp(interface, BLUEALSA_INTERFACE_MANAGER) == 0) {
-+
-+ if (strcmp(signal, "PCMAdded") == 0) {
-+ struct ba_pcm pcm;
-+ if (!dbus_message_iter_init(message, &iter) ||
-+ !bluealsa_dbus_message_iter_get_pcm(&iter, NULL, &pcm)) {
-+ error("Couldn't add new PCM: %s", "Invalid signal signature");
-+ goto fail;
-+ }
-+ worker_new(&pcm);
-+ return DBUS_HANDLER_RESULT_HANDLED;
-+ }
-+
-+ if (strcmp(signal, "PCMRemoved") == 0) {
-+ if (!dbus_message_iter_init(message, &iter) ||
-+ dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_OBJECT_PATH) {
-+ error("Couldn't remove PCM: %s", "Invalid signal signature");
-+ goto fail;
-+ }
-+ dbus_message_iter_get_basic(&iter, &path);
-+ g_hash_table_remove(workers, path);
-+ return DBUS_HANDLER_RESULT_HANDLED;
-+ }
-+
-+ }
-+
-+ if (strcmp(interface, DBUS_INTERFACE_PROPERTIES) == 0) {
-+ worker = g_hash_table_lookup(workers, path);
-+ if (!worker)
-+ goto fail;
-+ if (!dbus_message_iter_init(message, &iter) ||
-+ dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) {
-+ error("Couldn't update PCM: %s", "Invalid signal signature");
-+ goto fail;
-+ }
-+ dbus_message_iter_get_basic(&iter, &interface);
-+ dbus_message_iter_next(&iter);
-+ if (!bluealsa_dbus_message_iter_get_pcm_props(&iter, NULL, &worker->ba_pcm))
-+ goto fail;
-+ supervise_pcm_worker(worker);
-+ return DBUS_HANDLER_RESULT_HANDLED;
-+ }
-+
-+fail:
-+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-+}
-+
-+static void
-+destroy_worker(void *worker)
-+{
-+ struct worker *w = worker;
-+ worker_stop(w);
-+ g_slice_free(struct worker, w);
-+}
-+
-+int
-+main(int argc, char *argv[])
-+{
-+ int ret = EXIT_SUCCESS;
-+
-+ log_open(argv[0], false, false);
-+ gst_init(&argc, &argv);
-+ dbus_threads_init_default();
-+
-+ DBusError err = DBUS_ERROR_INIT;
-+ if (!bluealsa_dbus_connection_ctx_init(&dbus_ctx, BLUEALSA_SERVICE, &err)) {
-+ error("Couldn't initialize D-Bus context: %s", err.message);
-+ return EXIT_FAILURE;
-+ }
-+
-+ bluealsa_dbus_connection_signal_match_add(&dbus_ctx,
-+ BLUEALSA_SERVICE, NULL, BLUEALSA_INTERFACE_MANAGER, "PCMAdded", NULL);
-+ bluealsa_dbus_connection_signal_match_add(&dbus_ctx,
-+ BLUEALSA_SERVICE, NULL, BLUEALSA_INTERFACE_MANAGER, "PCMRemoved", NULL);
-+ bluealsa_dbus_connection_signal_match_add(&dbus_ctx,
-+ BLUEALSA_SERVICE, NULL, DBUS_INTERFACE_PROPERTIES, "PropertiesChanged",
-+ "arg0='"BLUEALSA_INTERFACE_PCM"'");
-+
-+ if (!dbus_connection_add_filter(dbus_ctx.conn, dbus_signal_handler, NULL, NULL)) {
-+ error("Couldn't add D-Bus filter: %s", err.message);
-+ return EXIT_FAILURE;
-+ }
-+
-+ workers = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, destroy_worker);
-+
-+ {
-+ struct ba_pcm *pcms = NULL;
-+ size_t pcms_count = 0, i;
-+
-+ if (!bluealsa_dbus_get_pcms(&dbus_ctx, &pcms, &pcms_count, &err))
-+ warn("Couldn't get BlueALSA PCM list: %s", err.message);
-+
-+ for (i = 0; i < pcms_count; i++) {
-+ worker_new(&pcms[i]);
-+ }
-+
-+ free(pcms);
-+ }
-+
-+ struct sigaction sigact = { .sa_handler = main_loop_stop };
-+ sigaction(SIGTERM, &sigact, NULL);
-+ sigaction(SIGINT, &sigact, NULL);
-+
-+ /* Ignore SIGPIPE, which may be received when writing to the bluealsa
-+ socket when it is closed on the remote end */
-+ signal(SIGPIPE, SIG_IGN);
-+
-+ debug("Starting main loop");
-+ while (main_loop_on) {
-+
-+ struct pollfd pfds[10];
-+ nfds_t pfds_len = ARRAYSIZE(pfds);
-+
-+ if (!bluealsa_dbus_connection_poll_fds(&dbus_ctx, pfds, &pfds_len)) {
-+ error("Couldn't get D-Bus connection file descriptors");
-+ ret = EXIT_FAILURE;
-+ goto out;
-+ }
-+
-+ if (poll(pfds, pfds_len, -1) == -1 &&
-+ errno == EINTR)
-+ continue;
-+
-+ if (bluealsa_dbus_connection_poll_dispatch(&dbus_ctx, pfds, pfds_len))
-+ while (dbus_connection_dispatch(dbus_ctx.conn) == DBUS_DISPATCH_DATA_REMAINS)
-+ continue;
-+
-+ }
-+
-+out:
-+ g_hash_table_unref(workers);
-+ return ret;
-+}
---
-2.24.0
-
diff --git a/meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service b/meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service
deleted file mode 100644
index 495ab622..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service
+++ /dev/null
@@ -1,18 +0,0 @@
-[Unit]
-Description=Bluetooth audio helper for user %i
-Requires=pipewire@%i.socket bluez-alsa.service
-After=pipewire@%i.socket bluez-alsa.service
-
-[Service]
-Type=simple
-Restart=on-failure
-ExecStart=/usr/bin/bluealsa-gst-helper
-
-Environment=XDG_RUNTIME_DIR=/run/user/%i
-Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus
-
-User=%i
-Slice=user-%i.slice
-SupplementaryGroups=audio
-UMask=0077
-CapabilityBoundingSet=
diff --git a/meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend b/meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend
deleted file mode 100644
index 2f9699a8..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend
+++ /dev/null
@@ -1,35 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI += "\
- file://0001-utils-add-a-gstreamer-helper-application-for-interco.patch \
- file://bluealsa-gst-helper@.service \
- "
-
-PACKAGECONFIG += "gsthelper"
-PACKAGECONFIG[gsthelper] = "--enable-gsthelper, --disable-gsthelper, gstreamer1.0"
-
-do_install_append() {
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- # install the service file
- mkdir -p ${D}${systemd_system_unitdir}/
- install -m 0644 ${WORKDIR}/bluealsa-gst-helper@.service ${D}${systemd_system_unitdir}/bluealsa-gst-helper@.service
-
- # enable the helper to start together with afm-user-session
- mkdir -p ${D}${systemd_system_unitdir}/afm-user-session@.target.wants
- ln -sf ../bluealsa-gst-helper@.service ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/bluealsa-gst-helper@.service
- fi
-}
-
-PACKAGES =+ "${PN}-pipewire"
-
-FILES_${PN}-pipewire = "\
- ${bindir}/bluealsa-gst-helper \
- ${systemd_system_unitdir}/bluealsa-gst-helper@.service \
- ${systemd_system_unitdir}/afm-user-session@.target.wants/bluealsa-gst-helper@.service \
- "
-RDEPENDS_${PN}-pipewire += "\
- bluez-alsa \
- pipewire \
- gstreamer1.0-plugins-base \
- gstreamer1.0-pipewire \
- "
diff --git a/meta-agl-devel/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb b/meta-agl-devel/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb
deleted file mode 100644
index 4020f1e2..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "PipeWire Media Server"
-DESCRIPTION = "The set of packages required to use PipeWire in AGL"
-LICENSE = "MIT & LGPL-2.1"
-
-inherit packagegroup
-
-PACKAGES = "\
- packagegroup-pipewire \
- "
-
-RDEPENDS_${PN} += "\
- agl-service-audiomixer \
- pipewire \
- pipewire-alsa \
- gstreamer1.0-pipewire \
- bluez-alsa-pipewire \
-"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/agl-service-audiomixer/agl-service-audiomixer_git.bb b/meta-agl-devel/meta-pipewire/recipes-multimedia/agl-service-audiomixer/agl-service-audiomixer_git.bb
deleted file mode 100644
index 2a826119..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/agl-service-audiomixer/agl-service-audiomixer_git.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Audio Mixer Service Binding"
-DESCRIPTION = "AGL Audio Mixer Service Binding"
-SECTION = "apps"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=3;md5=e8ad01a5182f2c1b3a2640e9ea268264"
-
-PV = "0.1+git${SRCPV}"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-audiomixer.git;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-
-S = "${WORKDIR}/git"
-
-inherit cmake aglwgt pkgconfig
-
-DEPENDS += "pipewire wireplumber json-c"
-RDEPENDS_${PN} = "agl-service-signal-composer"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/client.env b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/client.env
deleted file mode 100644
index 9b44cee0..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/client.env
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file contains environment variables that will apply
-# to pipewire clients started by the application framework
-
-# libpipewire by default tries to obtain real-time scheduling
-# for the streaming thread. This is only useful on the desktop, disable here.
-DISABLE_RTKIT=1
-
-# Uncomment to enable libpipewire debug for clients
-# 1=error, 2=warning, 3=info, 4=debug, 5=trace
-#PIPEWIRE_DEBUG=4
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in
deleted file mode 100644
index 6c055bcf..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in
+++ /dev/null
@@ -1,17 +0,0 @@
-# daemon config file for PipeWire version "0.2.9"
-# distributed by Automotive Grade Linux
-
-add-spa-lib audio.convert* audioconvert/libspa-audioconvert
-add-spa-lib api.alsa.* alsa/libspa-alsa
-add-spa-lib api.v4l2.* v4l2/libspa-v4l2
-add-spa-lib api.bluez5.* bluez5/libspa-bluez5
-
-load-module libpipewire-module-protocol-native
-load-module libpipewire-module-spa-node-factory
-load-module libpipewire-module-client-node
-load-module libpipewire-module-client-device
-load-module libpipewire-module-access same-sec-label-mode=1
-load-module libpipewire-module-adapter
-load-module libpipewire-module-link-factory
-load-module libpipewire-module-session-manager
-exec /usr/bin/wireplumber
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/server.env b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/server.env
deleted file mode 100644
index c74b941d..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/server.env
+++ /dev/null
@@ -1,12 +0,0 @@
-# This file contains environment variables that will apply
-# to the pipewire daemon as well as its session manager
-
-# Disable rtkit for wireplumber, which is also a client
-DISABLE_RTKIT=1
-
-# Uncomment to enable wireplumber debug
-#G_MESSAGES_DEBUG=all
-
-# Uncomment to enable pipewire debug
-# 1=error, 2=warning, 3=info, 4=debug, 5=trace
-#PIPEWIRE_DEBUG=4
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb
deleted file mode 100644
index a28c6534..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "AGL configuration file for pipewire"
-HOMEPAGE = "https://pipewire.org"
-BUGTRACKER = "https://jira.automotivelinux.org"
-AUTHOR = "George Kiagiadakis <george.kiagiadakis@collabora.com>"
-SECTION = "multimedia"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-SRC_URI = " \
- file://pipewire.conf.in \
- file://client.env \
- file://server.env \
- "
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install_append() {
- # enable optional features in the config
- BLUEZ5=${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', '', '#', d)}
- sed -e "s/#IF_BLUEZ5 /${BLUEZ5}/" ${WORKDIR}/pipewire.conf.in > ${WORKDIR}/pipewire.conf
-
- # install our custom config
- install -d ${D}/${sysconfdir}/pipewire/
- install -m 0644 ${WORKDIR}/pipewire.conf ${D}${sysconfdir}/pipewire/pipewire.conf
-
- # install environment variable files
- install -d ${D}/${sysconfdir}/afm/unit.env.d/
- install -m 0644 ${WORKDIR}/client.env ${D}/${sysconfdir}/afm/unit.env.d/pipewire
- install -m 0644 ${WORKDIR}/server.env ${D}${sysconfdir}/pipewire/environment
-}
-
-FILES_${PN} = "\
- ${sysconfdir}/pipewire/* \
- ${sysconfdir}/afm/unit.env.d/* \
-"
-CONFFILES_${PN} += "\
- ${sysconfdir}/pipewire/* \
- ${sysconfdir}/afm/unit.env.d/* \
-"
-
-RPROVIDES_${PN} += "virtual/pipewire-config"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire.inc b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire.inc
deleted file mode 100644
index b3081ca4..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire.inc
+++ /dev/null
@@ -1,120 +0,0 @@
-SUMMARY = "Multimedia processing server for Linux"
-HOMEPAGE = "https://pipewire.org"
-BUGTRACKER = "https://github.com/PipeWire/pipewire/issues"
-AUTHOR = "Wim Taymans <wtaymans@redhat.com>"
-SECTION = "multimedia"
-
-LICENSE = "MIT & LGPL-2.1"
-LIC_FILES_CHKSUM = "\
- file://COPYING;beginline=3;md5=b3adc775ca6ee80056383a5ae814cc75 \
- file://pipewire-alsa/LICENSE;md5=fc178bcd425090939a8b634d1d6a9594 \
- file://pipewire-jack/LICENSE;md5=fc178bcd425090939a8b634d1d6a9594 \
- file://pipewire-pulseaudio/LICENSE;md5=fc178bcd425090939a8b634d1d6a9594 \
-"
-
-inherit meson pkgconfig systemd manpages
-
-DEPENDS = "dbus"
-
-PACKAGECONFIG ??= "\
- ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'bluez5', d)} \
- alsa audioconvert audiomixer \
- pipewire-alsa \
- gstreamer \
-"
-
-GST_VER = "1.0"
-
-# systemd integration
-PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd"
-
-# SPA plugins
-PACKAGECONFIG[alsa] = "-Dalsa=true,-Dalsa=false,udev alsa-lib"
-PACKAGECONFIG[audioconvert] = "-Daudioconvert=true,-Daudioconvert=false,"
-PACKAGECONFIG[audiomixer] = "-Daudiomixer=true,-Daudiomixer=false,"
-PACKAGECONFIG[audiotestsrc] = "-Daudiotestsrc=true,-Daudiotestsrc=false, "
-PACKAGECONFIG[bluez5] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc"
-PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack"
-PACKAGECONFIG[v4l2] = "-Dv4l2=true,-Dv4l2=false,udev v4l-utils"
-PACKAGECONFIG[videotestsrc] = "-Dvideotestsrc=true,-Dvideotestsrc=false, "
-PACKAGECONFIG[vulkan] = "-Dvulkan=true,-Dvulkan=false,vulkan"
-
-# alsa plugin to redirect audio to pipewire
-PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=true,-Dpipewire-alsa=false,alsa-lib"
-# pulseaudio drop-in replacement library
-PACKAGECONFIG[pipewire-pulseaudio] = "-Dpipewire-pulseaudio=true,-Dpipewire-pulseaudio=false,pulseaudio glib-2.0"
-# jack drop-in replacement library
-PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=true,-Dpipewire-jack=false,jack"
-
-# GStreamer plugins
-PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer${GST_VER} gstreamer${GST_VER}-plugins-base"
-
-# man pages
-PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native"
-
-do_install_append() {
- # only install the alsa config file if the alsa-lib plugin has been built
- # this avoids creating the pipewire-alsa package when the pipewire-alsa
- # feature is not enabled
- if [ -d ${D}${libdir}/alsa-lib ]
- then
- mkdir -p ${D}${datadir}/alsa/alsa.conf.d
- install -m 0644 ${S}/pipewire-alsa/conf/50-pipewire.conf ${D}${datadir}/alsa/alsa.conf.d/50-pipewire.conf
- fi
-}
-
-PACKAGES =+ "\
- ${PN}-spa-plugins \
- ${PN}-alsa \
- ${PN}-pulseaudio \
- ${PN}-jack \
- ${PN}-config \
- gstreamer${GST_VER}-${PN} \
- lib${PN} \
- lib${PN}-modules \
-"
-
-FILES_${PN} = "\
- ${bindir}/pipewire* \
- ${systemd_user_unitdir}/* \
-"
-
-FILES_lib${PN} = "\
- ${libdir}/libpipewire-*.so.* \
-"
-
-FILES_lib${PN}-modules = "\
- ${libdir}/pipewire-*/* \
-"
-
-FILES_${PN}-spa-plugins = "\
- ${bindir}/spa-* \
- ${libdir}/spa/* \
-"
-
-FILES_${PN}-alsa = "\
- ${libdir}/alsa-lib/* \
- ${datadir}/alsa/alsa.conf.d/50-pipewire.conf \
-"
-
-FILES_${PN}-pulseaudio = "\
- ${libdir}/libpulse*.so.* \
-"
-
-FILES_gstreamer${GST_VER}-${PN} = "\
- ${libdir}/gstreamer-${GST_VER}/* \
-"
-
-RDEPENDS_lib${PN} += "lib${PN}-modules ${PN}-spa-plugins"
-
-# The default pipewire config.
-# Replace in your own package using
-# "virtual/pipewire-config"
-FILES_${PN}-config = "\
- ${sysconfdir}/pipewire/pipewire.conf \
-"
-CONFFILES_${PN}-config += "\
- ${sysconfdir}/pipewire/pipewire.conf \
-"
-RPROVIDES_${PN}-config += "virtual/pipewire-config"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-meson-revert-version-check-to-require-meson-0.47-not.patch b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-meson-revert-version-check-to-require-meson-0.47-not.patch
deleted file mode 100644
index 4e7bb0d4..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-meson-revert-version-check-to-require-meson-0.47-not.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 5a249321aa84cd74e3d83bcd555c85fba3cd682d Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Sun, 22 Sep 2019 17:59:19 +0300
-Subject: [PATCH] meson: revert version check to require meson 0.47, not 0.50
-
-meson 0.50 is not really needed, but there are some strange warnings
-if you require an older version; in any case, AGL does not have 0.50
-yet, so let's not fail compilation because of that...
-
-Upstream-Status: Inappropriate [workaround]
----
- meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 2734b0d2..c9da6b4d 100644
---- a/meson.build
-+++ b/meson.build
-@@ -1,7 +1,7 @@
- project('pipewire', ['c' ],
- version : '0.2.9',
- license : 'MIT',
-- meson_version : '>= 0.50.0',
-+ meson_version : '>= 0.47.0',
- default_options : [ 'warning_level=1',
- 'c_std=gnu99',
- 'buildtype=debugoptimized' ])
---
-2.24.0
-
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-arm-build-with-mno-unaligned-access.patch b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-arm-build-with-mno-unaligned-access.patch
deleted file mode 100644
index 2077af63..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0002-arm-build-with-mno-unaligned-access.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From e4b81946baf2d8c08de87088c01a1d87ae4f03d9 Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Mon, 24 Jun 2019 12:19:20 +0300
-Subject: [PATCH] arm: build with -mno-unaligned-access
-
-Upstream-Status: Inappropriate [workaround]
-See also https://gitlab.freedesktop.org/pipewire/pipewire/issues/161
----
- meson.build | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/meson.build b/meson.build
-index c9da6b4d..5c121339 100644
---- a/meson.build
-+++ b/meson.build
-@@ -52,6 +52,11 @@ if cc.get_id() == 'gcc'
- language : 'c')
- endif
-
-+if host_machine.cpu_family() == 'arm'
-+ add_global_arguments('-mno-unaligned-access',
-+ language: 'c')
-+endif
-+
- sse_args = '-msse'
- sse2_args = '-msse2'
- ssse3_args = '-mssse3'
---
-2.24.0
-
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-gst-Implement-new-pwaudio-src-sink-elements-based-on.patch b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-gst-Implement-new-pwaudio-src-sink-elements-based-on.patch
deleted file mode 100644
index b3eba21f..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0003-gst-Implement-new-pwaudio-src-sink-elements-based-on.patch
+++ /dev/null
@@ -1,1280 +0,0 @@
-From 1b1f884a165ed7b2147affbdddf85a641d4cf180 Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Tue, 19 Feb 2019 18:23:19 +0200
-Subject: [PATCH] gst: Implement new pwaudio{src,sink} elements, based on
- GstAudioBase{Src,Sink}
-
-These are much more reliable elements to use for audio data.
-* GstAudioBaseSink provides a reliable clock implementation based
- on the number of samples read/written
-* on the pipewire side we make sure to dequeue, fill and enqueue
- a single buffer inside the process() function, which avoids
- underruns
-
-Both elements share a common ringbuffer that actually implements
-the pipewire integration.
-
-Upstream-Status: Denied
-See https://gitlab.freedesktop.org/pipewire/pipewire/merge_requests/140
----
- src/gst/gstpipewire.c | 8 +-
- src/gst/gstpwaudioringbuffer.c | 565 +++++++++++++++++++++++++++++++++
- src/gst/gstpwaudioringbuffer.h | 83 +++++
- src/gst/gstpwaudiosink.c | 207 ++++++++++++
- src/gst/gstpwaudiosink.h | 48 +++
- src/gst/gstpwaudiosrc.c | 200 ++++++++++++
- src/gst/gstpwaudiosrc.h | 48 +++
- src/gst/meson.build | 6 +
- 8 files changed, 1164 insertions(+), 1 deletion(-)
- create mode 100644 src/gst/gstpwaudioringbuffer.c
- create mode 100644 src/gst/gstpwaudioringbuffer.h
- create mode 100644 src/gst/gstpwaudiosink.c
- create mode 100644 src/gst/gstpwaudiosink.h
- create mode 100644 src/gst/gstpwaudiosrc.c
- create mode 100644 src/gst/gstpwaudiosrc.h
-
-diff --git a/src/gst/gstpipewire.c b/src/gst/gstpipewire.c
-index 4040264b..68fd446f 100644
---- a/src/gst/gstpipewire.c
-+++ b/src/gst/gstpipewire.c
-@@ -40,6 +40,8 @@
- #include "gstpipewiresrc.h"
- #include "gstpipewiresink.h"
- #include "gstpipewiredeviceprovider.h"
-+#include "gstpwaudiosrc.h"
-+#include "gstpwaudiosink.h"
-
- GST_DEBUG_CATEGORY (pipewire_debug);
-
-@@ -52,12 +54,16 @@ plugin_init (GstPlugin *plugin)
- GST_TYPE_PIPEWIRE_SRC);
- gst_element_register (plugin, "pipewiresink", GST_RANK_NONE,
- GST_TYPE_PIPEWIRE_SINK);
-+ gst_element_register (plugin, "pwaudiosrc", GST_RANK_NONE,
-+ GST_TYPE_PW_AUDIO_SRC);
-+ gst_element_register (plugin, "pwaudiosink", GST_RANK_NONE,
-+ GST_TYPE_PW_AUDIO_SINK);
-
- if (!gst_device_provider_register (plugin, "pipewiredeviceprovider",
- GST_RANK_PRIMARY + 1, GST_TYPE_PIPEWIRE_DEVICE_PROVIDER))
- return FALSE;
-
-- GST_DEBUG_CATEGORY_INIT (pipewire_debug, "pipewire", 0, "PipeWirie elements");
-+ GST_DEBUG_CATEGORY_INIT (pipewire_debug, "pipewire", 0, "PipeWire elements");
-
- return TRUE;
- }
-diff --git a/src/gst/gstpwaudioringbuffer.c b/src/gst/gstpwaudioringbuffer.c
-new file mode 100644
-index 00000000..babf2d83
---- /dev/null
-+++ b/src/gst/gstpwaudioringbuffer.c
-@@ -0,0 +1,565 @@
-+/* PipeWire
-+ *
-+ * Copyright © 2018 Wim Taymans
-+ * Copyright © 2019 Collabora Ltd.
-+ * @author George Kiagiadakis <george.kiagiadakis@collabora.com>
-+ *
-+ * 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+
-+#include "gstpwaudioringbuffer.h"
-+
-+#include <spa/param/audio/format-utils.h>
-+#include <spa/pod/builder.h>
-+
-+GST_DEBUG_CATEGORY_STATIC (pw_audio_ring_buffer_debug);
-+#define GST_CAT_DEFAULT pw_audio_ring_buffer_debug
-+
-+#define gst_pw_audio_ring_buffer_parent_class parent_class
-+G_DEFINE_TYPE (GstPwAudioRingBuffer, gst_pw_audio_ring_buffer, GST_TYPE_AUDIO_RING_BUFFER);
-+
-+enum
-+{
-+ PROP_0,
-+ PROP_ELEMENT,
-+ PROP_DIRECTION,
-+ PROP_PROPS
-+};
-+
-+static void
-+gst_pw_audio_ring_buffer_init (GstPwAudioRingBuffer * self)
-+{
-+ self->loop = pw_loop_new (NULL);
-+ self->main_loop = pw_thread_loop_new (self->loop, "pw-audioringbuffer-loop");
-+ self->core = pw_core_new (self->loop, NULL, 0);
-+}
-+
-+static void
-+gst_pw_audio_ring_buffer_finalize (GObject * object)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (object);
-+
-+ pw_core_destroy (self->core);
-+ pw_thread_loop_destroy (self->main_loop);
-+ pw_loop_destroy (self->loop);
-+}
-+
-+static void
-+gst_pw_audio_ring_buffer_set_property (GObject * object, guint prop_id,
-+ const GValue * value, GParamSpec * pspec)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (object);
-+
-+ switch (prop_id) {
-+ case PROP_ELEMENT:
-+ self->elem = g_value_get_object (value);
-+ break;
-+
-+ case PROP_DIRECTION:
-+ self->direction = g_value_get_int (value);
-+ break;
-+
-+ case PROP_PROPS:
-+ self->props = g_value_get_pointer (value);
-+ break;
-+
-+ default:
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-+ break;
-+ }
-+}
-+
-+static void
-+on_remote_state_changed (void *data, enum pw_remote_state old,
-+ enum pw_remote_state state, const char *error)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (data);
-+
-+ GST_DEBUG_OBJECT (self->elem, "got remote state %d", state);
-+
-+ switch (state) {
-+ case PW_REMOTE_STATE_UNCONNECTED:
-+ case PW_REMOTE_STATE_CONNECTING:
-+ case PW_REMOTE_STATE_CONNECTED:
-+ break;
-+ case PW_REMOTE_STATE_ERROR:
-+ GST_ELEMENT_ERROR (self->elem, RESOURCE, FAILED,
-+ ("remote error: %s", error), (NULL));
-+ break;
-+ }
-+ pw_thread_loop_signal (self->main_loop, FALSE);
-+}
-+
-+static const struct pw_remote_events remote_events = {
-+ PW_VERSION_REMOTE_EVENTS,
-+ .state_changed = on_remote_state_changed,
-+};
-+
-+static gboolean
-+wait_for_remote_state (GstPwAudioRingBuffer *self,
-+ enum pw_remote_state target)
-+{
-+ while (TRUE) {
-+ enum pw_remote_state state = pw_remote_get_state (self->remote, NULL);
-+ if (state == target)
-+ return TRUE;
-+ if (state == PW_REMOTE_STATE_ERROR)
-+ return FALSE;
-+ pw_thread_loop_wait (self->main_loop);
-+ }
-+}
-+
-+static gboolean
-+gst_pw_audio_ring_buffer_open_device (GstAudioRingBuffer *buf)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (buf);
-+
-+ GST_DEBUG_OBJECT (self->elem, "open device");
-+
-+ if (pw_thread_loop_start (self->main_loop) < 0)
-+ goto mainloop_error;
-+
-+ pw_thread_loop_lock (self->main_loop);
-+
-+ self->remote = pw_remote_new (self->core, NULL, 0);
-+ pw_remote_add_listener (self->remote, &self->remote_listener, &remote_events,
-+ self);
-+
-+ if (self->props->fd == -1)
-+ pw_remote_connect (self->remote);
-+ else
-+ pw_remote_connect_fd (self->remote, self->props->fd);
-+
-+ GST_DEBUG_OBJECT (self->elem, "waiting for connection");
-+
-+ if (!wait_for_remote_state (self, PW_REMOTE_STATE_CONNECTED))
-+ goto connect_error;
-+
-+ pw_thread_loop_unlock (self->main_loop);
-+
-+ return TRUE;
-+
-+ /* ERRORS */
-+mainloop_error:
-+ {
-+ GST_ELEMENT_ERROR (self->elem, RESOURCE, FAILED,
-+ ("Failed to start mainloop"), (NULL));
-+ return FALSE;
-+ }
-+connect_error:
-+ {
-+ pw_thread_loop_unlock (self->main_loop);
-+ return FALSE;
-+ }
-+}
-+
-+static gboolean
-+gst_pw_audio_ring_buffer_close_device (GstAudioRingBuffer *buf)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (buf);
-+
-+ GST_DEBUG_OBJECT (self->elem, "closing device");
-+
-+ pw_thread_loop_lock (self->main_loop);
-+ if (self->remote) {
-+ pw_remote_disconnect (self->remote);
-+ wait_for_remote_state (self, PW_REMOTE_STATE_UNCONNECTED);
-+ }
-+ pw_thread_loop_unlock (self->main_loop);
-+
-+ pw_thread_loop_stop (self->main_loop);
-+
-+ if (self->remote) {
-+ pw_remote_destroy (self->remote);
-+ self->remote = NULL;
-+ }
-+ return TRUE;
-+}
-+
-+static void
-+on_stream_state_changed (void *data, enum pw_stream_state old,
-+ enum pw_stream_state state, const char *error)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (data);
-+ GstMessage *msg;
-+
-+ GST_DEBUG_OBJECT (self->elem, "got stream state: %s",
-+ pw_stream_state_as_string (state));
-+
-+ switch (state) {
-+ case PW_STREAM_STATE_ERROR:
-+ GST_ELEMENT_ERROR (self->elem, RESOURCE, FAILED,
-+ ("stream error: %s", error), (NULL));
-+ break;
-+ case PW_STREAM_STATE_UNCONNECTED:
-+ GST_ELEMENT_ERROR (self->elem, RESOURCE, FAILED,
-+ ("stream disconnected unexpectedly"), (NULL));
-+ break;
-+ case PW_STREAM_STATE_CONNECTING:
-+ break;
-+ case PW_STREAM_STATE_PAUSED:
-+ if (old == PW_STREAM_STATE_STREAMING) {
-+ if (GST_STATE (self->elem) != GST_STATE_PAUSED &&
-+ GST_STATE_TARGET (self->elem) != GST_STATE_PAUSED) {
-+ GST_DEBUG_OBJECT (self->elem, "requesting GST_STATE_PAUSED");
-+ msg = gst_message_new_request_state (GST_OBJECT (self->elem),
-+ GST_STATE_PAUSED);
-+ gst_element_post_message (self->elem, msg);
-+ }
-+ }
-+ break;
-+ case PW_STREAM_STATE_STREAMING:
-+ if (GST_STATE (self->elem) != GST_STATE_PLAYING &&
-+ GST_STATE_TARGET (self->elem) != GST_STATE_PLAYING) {
-+ GST_DEBUG_OBJECT (self->elem, "requesting GST_STATE_PLAYING");
-+ msg = gst_message_new_request_state (GST_OBJECT (self->elem),
-+ GST_STATE_PLAYING);
-+ gst_element_post_message (self->elem, msg);
-+ }
-+ break;
-+ }
-+ pw_thread_loop_signal (self->main_loop, FALSE);
-+}
-+
-+static gboolean
-+wait_for_stream_state (GstPwAudioRingBuffer *self,
-+ enum pw_stream_state target)
-+{
-+ while (TRUE) {
-+ enum pw_stream_state state = pw_stream_get_state (self->stream, NULL);
-+ if (state >= target)
-+ return TRUE;
-+ if (state == PW_STREAM_STATE_ERROR || state == PW_STREAM_STATE_UNCONNECTED)
-+ return FALSE;
-+ pw_thread_loop_wait (self->main_loop);
-+ }
-+}
-+
-+static void
-+on_stream_param_changed (void *data, uint32_t id, const struct spa_pod *format)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (data);
-+ const struct spa_pod *params[1];
-+ struct spa_pod_builder b = { NULL };
-+ uint8_t buffer[512];
-+
-+ if (format == NULL || id != SPA_PARAM_Format)
-+ return;
-+
-+ spa_pod_builder_init (&b, buffer, sizeof (buffer));
-+ params[0] = spa_pod_builder_add_object (&b,
-+ SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
-+ SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(16, 1, INT32_MAX),
-+ SPA_PARAM_BUFFERS_blocks, SPA_POD_Int(1),
-+ SPA_PARAM_BUFFERS_size, SPA_POD_Int(self->segsize),
-+ SPA_PARAM_BUFFERS_stride, SPA_POD_Int(self->bpf),
-+ SPA_PARAM_BUFFERS_align, SPA_POD_Int(16));
-+
-+ GST_DEBUG_OBJECT (self->elem, "doing finish format, buffer size:%d", self->segsize);
-+ pw_stream_update_params (self->stream, params, 1);
-+}
-+
-+static void
-+on_stream_process (void *data)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (data);
-+ GstAudioRingBuffer *buf = GST_AUDIO_RING_BUFFER (data);
-+ struct pw_buffer *b;
-+ struct spa_data *d;
-+ gint size; /*< size to read/write from/to the spa buffer */
-+ gint offset; /*< offset to read/write from/to in the spa buffer */
-+ gint segment; /*< the current segment number in the ringbuffer */
-+ guint8 *ringptr; /*< pointer to the beginning of the current segment */
-+ gint segsize; /*< the size of one segment in the ringbuffer */
-+ gint copy_size; /*< the bytes to copy in one memcpy() invocation */
-+ gint remain; /*< remainder of bytes available in the spa buffer */
-+
-+ if (g_atomic_int_get (&buf->state) != GST_AUDIO_RING_BUFFER_STATE_STARTED) {
-+ GST_LOG_OBJECT (self->elem, "ring buffer is not started");
-+ return;
-+ }
-+
-+ b = pw_stream_dequeue_buffer (self->stream);
-+ if (!b) {
-+ GST_INFO_OBJECT (self->elem, "no pipewire buffer available");
-+ return;
-+ }
-+
-+ d = &b->buffer->datas[0];
-+
-+ if (self->direction == PW_DIRECTION_OUTPUT) {
-+ /* in output mode, always fill the entire spa buffer */
-+ offset = d->chunk->offset = 0;
-+ size = d->chunk->size = d->maxsize;
-+ b->size = size / self->bpf;
-+ } else {
-+ offset = SPA_MIN (d->chunk->offset, d->maxsize);
-+ size = SPA_MIN (d->chunk->size, d->maxsize - offset);
-+ }
-+
-+ do {
-+ gst_audio_ring_buffer_prepare_read (buf, &segment, &ringptr, &segsize);
-+
-+ /* in INPUT (src) mode, it is possible that the skew algorithm
-+ * advances the ringbuffer behind our back */
-+ if (self->segoffset > 0 && self->cur_segment != segment)
-+ self->segoffset = 0;
-+
-+ copy_size = SPA_MIN (size, segsize - self->segoffset);
-+
-+ if (self->direction == PW_DIRECTION_OUTPUT) {
-+ memcpy (((guint8*) d->data) + offset, ringptr + self->segoffset,
-+ copy_size);
-+ } else {
-+ memcpy (ringptr + self->segoffset, ((guint8*) d->data) + offset,
-+ copy_size);
-+ }
-+
-+ remain = size - (segsize - self->segoffset);
-+
-+ GST_TRACE_OBJECT (self->elem,
-+ "seg %d: %s %d bytes remained:%d offset:%d segoffset:%d", segment,
-+ self->direction == PW_DIRECTION_INPUT ? "INPUT" : "OUTPUT",
-+ copy_size, remain, offset, self->segoffset);
-+
-+ if (remain >= 0) {
-+ offset += (segsize - self->segoffset);
-+ size = remain;
-+
-+ /* write silence on the segment we just read */
-+ if (self->direction == PW_DIRECTION_OUTPUT)
-+ gst_audio_ring_buffer_clear (buf, segment);
-+
-+ /* notify that we have read a complete segment */
-+ gst_audio_ring_buffer_advance (buf, 1);
-+ self->segoffset = 0;
-+ } else {
-+ self->segoffset += size;
-+ self->cur_segment = segment;
-+ }
-+ } while (remain > 0);
-+
-+ pw_stream_queue_buffer (self->stream, b);
-+}
-+
-+static const struct pw_stream_events stream_events = {
-+ PW_VERSION_STREAM_EVENTS,
-+ .state_changed = on_stream_state_changed,
-+ .param_changed = on_stream_param_changed,
-+ .process = on_stream_process,
-+};
-+
-+static gboolean
-+copy_properties (GQuark field_id, const GValue *value, gpointer user_data)
-+{
-+ struct pw_properties *properties = user_data;
-+
-+ if (G_VALUE_HOLDS_STRING (value))
-+ pw_properties_set (properties,
-+ g_quark_to_string (field_id),
-+ g_value_get_string (value));
-+ return TRUE;
-+}
-+
-+static gboolean
-+gst_pw_audio_ring_buffer_acquire (GstAudioRingBuffer *buf,
-+ GstAudioRingBufferSpec *spec)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (buf);
-+ struct pw_properties *props;
-+ struct spa_pod_builder b = { NULL };
-+ uint8_t buffer[512];
-+ const struct spa_pod *params[1];
-+
-+ g_return_val_if_fail (spec, FALSE);
-+ g_return_val_if_fail (GST_AUDIO_INFO_IS_VALID (&spec->info), FALSE);
-+ g_return_val_if_fail (!self->stream, TRUE); /* already acquired */
-+
-+ g_return_val_if_fail (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW, FALSE);
-+ g_return_val_if_fail (GST_AUDIO_INFO_IS_FLOAT (&spec->info), FALSE);
-+
-+ GST_DEBUG_OBJECT (self->elem, "acquire");
-+
-+ /* construct param & props objects */
-+
-+ props = pw_properties_new (NULL, NULL);
-+ if (self->props->properties) {
-+ gst_structure_foreach (self->props->properties, copy_properties, props);
-+ }
-+
-+ spa_pod_builder_init (&b, buffer, sizeof (buffer));
-+ params[0] = spa_pod_builder_add_object (&b,
-+ SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
-+ SPA_FORMAT_mediaType, SPA_POD_Id (SPA_MEDIA_TYPE_audio),
-+ SPA_FORMAT_mediaSubtype, SPA_POD_Id (SPA_MEDIA_SUBTYPE_raw),
-+ SPA_FORMAT_AUDIO_format, SPA_POD_Id (SPA_AUDIO_FORMAT_F32),
-+ SPA_FORMAT_AUDIO_rate, SPA_POD_Int (GST_AUDIO_INFO_RATE (&spec->info)),
-+ SPA_FORMAT_AUDIO_channels, SPA_POD_Int (GST_AUDIO_INFO_CHANNELS (&spec->info)));
-+
-+ self->segsize = spec->segsize;
-+ self->bpf = GST_AUDIO_INFO_BPF (&spec->info);
-+ self->rate = GST_AUDIO_INFO_RATE (&spec->info);
-+ self->segoffset = 0;
-+
-+ pw_properties_setf(props, PW_KEY_NODE_LATENCY, "%u/%u",
-+ self->segsize / self->bpf, self->rate);
-+ GST_DEBUG_OBJECT (self->elem, "segsize:%u, bpf:%u, node.latency = %s",
-+ self->segsize, self->bpf, pw_properties_get (props, PW_KEY_NODE_LATENCY));
-+
-+ /* connect stream */
-+
-+ pw_thread_loop_lock (self->main_loop);
-+
-+ GST_DEBUG_OBJECT (self->elem, "creating stream");
-+
-+ self->stream = pw_stream_new (self->remote, self->props->client_name, props);
-+ pw_stream_add_listener(self->stream, &self->stream_listener, &stream_events,
-+ self);
-+
-+ if (pw_stream_connect (self->stream,
-+ self->direction,
-+ self->props->path ? (uint32_t)atoi(self->props->path) : SPA_ID_INVALID,
-+ PW_STREAM_FLAG_AUTOCONNECT |
-+ PW_STREAM_FLAG_MAP_BUFFERS |
-+ PW_STREAM_FLAG_RT_PROCESS,
-+ params, 1) < 0)
-+ goto start_error;
-+
-+ GST_DEBUG_OBJECT (self->elem, "waiting for stream CONFIGURE");
-+
-+ if (!wait_for_stream_state (self, PW_STREAM_STATE_PAUSED))
-+ goto start_error;
-+
-+ pw_thread_loop_unlock (self->main_loop);
-+
-+ /* allocate the internal ringbuffer */
-+
-+ spec->seglatency = spec->segtotal + 1;
-+ buf->size = spec->segtotal * spec->segsize;
-+ buf->memory = g_malloc (buf->size);
-+
-+ gst_audio_format_fill_silence (buf->spec.info.finfo, buf->memory,
-+ buf->size);
-+
-+ GST_DEBUG_OBJECT (self->elem, "acquire done");
-+
-+ return TRUE;
-+
-+start_error:
-+ {
-+ GST_ERROR_OBJECT (self->elem, "could not start stream");
-+ pw_stream_destroy (self->stream);
-+ self->stream = NULL;
-+ pw_thread_loop_unlock (self->main_loop);
-+ return FALSE;
-+ }
-+}
-+
-+static gboolean
-+gst_pw_audio_ring_buffer_release (GstAudioRingBuffer *buf)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (buf);
-+
-+ GST_DEBUG_OBJECT (self->elem, "release");
-+
-+ pw_thread_loop_lock (self->main_loop);
-+ if (self->stream) {
-+ spa_hook_remove (&self->stream_listener);
-+ pw_stream_disconnect (self->stream);
-+ pw_stream_destroy (self->stream);
-+ self->stream = NULL;
-+ }
-+ pw_thread_loop_unlock (self->main_loop);
-+
-+ /* free the buffer */
-+ g_free (buf->memory);
-+ buf->memory = NULL;
-+
-+ return TRUE;
-+}
-+
-+static guint
-+gst_pw_audio_ring_buffer_delay (GstAudioRingBuffer *buf)
-+{
-+ GstPwAudioRingBuffer *self = GST_PW_AUDIO_RING_BUFFER (buf);
-+ struct pw_time t;
-+
-+ if (!self->stream || pw_stream_get_time (self->stream, &t) < 0)
-+ return 0;
-+
-+ if (self->direction == PW_DIRECTION_OUTPUT) {
-+ /* on output streams, we set the pw_buffer.size in frames,
-+ so no conversion is necessary */
-+ return t.queued;
-+ } else {
-+ /* on input streams, pw_buffer.size is set by pw_stream in ticks,
-+ so we need to convert it to frames and also add segoffset, which
-+ is the number of bytes we have read but not advertised yet, as
-+ the segment is incomplete */
-+ if (t.rate.denom > 0)
-+ return
-+ gst_util_uint64_scale (t.queued, self->rate * t.rate.num, t.rate.denom)
-+ + self->segoffset / self->bpf;
-+ else
-+ return self->segoffset / self->bpf;
-+ }
-+
-+ return 0;
-+}
-+
-+static void
-+gst_pw_audio_ring_buffer_class_init (GstPwAudioRingBufferClass * klass)
-+{
-+ GObjectClass *gobject_class;
-+ GstAudioRingBufferClass *gstaudiorbuf_class;
-+
-+ gobject_class = (GObjectClass *) klass;
-+ gstaudiorbuf_class = (GstAudioRingBufferClass *) klass;
-+
-+ gobject_class->finalize = gst_pw_audio_ring_buffer_finalize;
-+ gobject_class->set_property = gst_pw_audio_ring_buffer_set_property;
-+
-+ gstaudiorbuf_class->open_device = gst_pw_audio_ring_buffer_open_device;
-+ gstaudiorbuf_class->acquire = gst_pw_audio_ring_buffer_acquire;
-+ gstaudiorbuf_class->release = gst_pw_audio_ring_buffer_release;
-+ gstaudiorbuf_class->close_device = gst_pw_audio_ring_buffer_close_device;
-+ gstaudiorbuf_class->delay = gst_pw_audio_ring_buffer_delay;
-+
-+ g_object_class_install_property (gobject_class, PROP_ELEMENT,
-+ g_param_spec_object ("element", "Element", "The audio source or sink",
-+ GST_TYPE_ELEMENT,
-+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-+
-+ g_object_class_install_property (gobject_class, PROP_DIRECTION,
-+ g_param_spec_int ("direction", "Direction", "The stream direction",
-+ PW_DIRECTION_INPUT, PW_DIRECTION_OUTPUT, PW_DIRECTION_INPUT,
-+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-+
-+ g_object_class_install_property (gobject_class, PROP_PROPS,
-+ g_param_spec_pointer ("props", "Properties", "The properties struct",
-+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-+
-+ GST_DEBUG_CATEGORY_INIT (pw_audio_ring_buffer_debug, "pwaudioringbuffer", 0,
-+ "PipeWire Audio Ring Buffer");
-+}
-diff --git a/src/gst/gstpwaudioringbuffer.h b/src/gst/gstpwaudioringbuffer.h
-new file mode 100644
-index 00000000..f47f668a
---- /dev/null
-+++ b/src/gst/gstpwaudioringbuffer.h
-@@ -0,0 +1,83 @@
-+/* PipeWire
-+ *
-+ * Copyright © 2018 Wim Taymans
-+ * Copyright © 2019 Collabora Ltd.
-+ * @author George Kiagiadakis <george.kiagiadakis@collabora.com>
-+ *
-+ * 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.
-+ */
-+
-+#ifndef __GST_PW_AUDIO_RING_BUFFER_H__
-+#define __GST_PW_AUDIO_RING_BUFFER_H__
-+
-+#include <gst/gst.h>
-+#include <gst/audio/audio.h>
-+#include <pipewire/pipewire.h>
-+
-+G_BEGIN_DECLS
-+
-+#define GST_TYPE_PW_AUDIO_RING_BUFFER \
-+ (gst_pw_audio_ring_buffer_get_type ())
-+
-+G_DECLARE_FINAL_TYPE(GstPwAudioRingBuffer, gst_pw_audio_ring_buffer,
-+ GST, PW_AUDIO_RING_BUFFER, GstAudioRingBuffer);
-+
-+typedef struct _GstPwAudioRingBufferProps GstPwAudioRingBufferProps;
-+
-+struct _GstPwAudioRingBuffer
-+{
-+ GstAudioRingBuffer parent;
-+
-+ /* properties */
-+ GstElement *elem;
-+ enum pw_direction direction;
-+ GstPwAudioRingBufferProps *props;
-+
-+ /* internal */
-+ struct pw_loop *loop;
-+ struct pw_thread_loop *main_loop;
-+
-+ struct pw_core *core;
-+ struct pw_remote *remote;
-+ struct spa_hook remote_listener;
-+
-+ struct pw_stream *stream;
-+ struct spa_hook stream_listener;
-+
-+ gint segsize;
-+ gint bpf;
-+ gint rate;
-+
-+ /* on_stream_process() state */
-+ gint segoffset;
-+ gint cur_segment;
-+};
-+
-+struct _GstPwAudioRingBufferProps
-+{
-+ gchar *path;
-+ gchar *client_name;
-+ GstStructure *properties;
-+ int fd;
-+};
-+
-+G_END_DECLS
-+
-+#endif
-diff --git a/src/gst/gstpwaudiosink.c b/src/gst/gstpwaudiosink.c
-new file mode 100644
-index 00000000..069996c3
---- /dev/null
-+++ b/src/gst/gstpwaudiosink.c
-@@ -0,0 +1,207 @@
-+/* PipeWire
-+ *
-+ * Copyright © 2018 Wim Taymans
-+ * Copyright © 2019 Collabora Ltd.
-+ * @author George Kiagiadakis <george.kiagiadakis@collabora.com>
-+ *
-+ * 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+
-+#include "gstpwaudiosink.h"
-+
-+GST_DEBUG_CATEGORY_STATIC (pw_audio_sink_debug);
-+#define GST_CAT_DEFAULT pw_audio_sink_debug
-+
-+G_DEFINE_TYPE (GstPwAudioSink, gst_pw_audio_sink, GST_TYPE_AUDIO_BASE_SINK);
-+
-+enum
-+{
-+ PROP_0,
-+ PROP_PATH,
-+ PROP_CLIENT_NAME,
-+ PROP_STREAM_PROPERTIES,
-+ PROP_FD
-+};
-+
-+static GstStaticPadTemplate gst_pw_audio_sink_template =
-+GST_STATIC_PAD_TEMPLATE ("sink",
-+ GST_PAD_SINK,
-+ GST_PAD_ALWAYS,
-+ GST_STATIC_CAPS (GST_AUDIO_CAPS_MAKE (GST_AUDIO_NE (F32))
-+ ", layout = (string)\"interleaved\"")
-+);
-+
-+
-+static void
-+gst_pw_audio_sink_init (GstPwAudioSink * self)
-+{
-+ self->props.fd = -1;
-+
-+ /* Bump the default buffer size up to 21.3 ms, which is the default on most
-+ * sound cards, in hope to match the alsa buffer size on the pipewire server.
-+ * This may not always happen, but it still sounds better than the 10ms
-+ * default latency. This is temporary until we have a better mechanism to
-+ * select the appropriate latency */
-+ GST_AUDIO_BASE_SINK (self)->latency_time = 21333;
-+}
-+
-+static void
-+gst_pw_audio_sink_finalize (GObject * object)
-+{
-+ GstPwAudioSink *pwsink = GST_PW_AUDIO_SINK (object);
-+
-+ g_free (pwsink->props.path);
-+ g_free (pwsink->props.client_name);
-+ if (pwsink->props.properties)
-+ gst_structure_free (pwsink->props.properties);
-+}
-+
-+static void
-+gst_pw_audio_sink_set_property (GObject * object, guint prop_id,
-+ const GValue * value, GParamSpec * pspec)
-+{
-+ GstPwAudioSink *pwsink = GST_PW_AUDIO_SINK (object);
-+
-+ switch (prop_id) {
-+ case PROP_PATH:
-+ g_free (pwsink->props.path);
-+ pwsink->props.path = g_value_dup_string (value);
-+ break;
-+
-+ case PROP_CLIENT_NAME:
-+ g_free (pwsink->props.client_name);
-+ pwsink->props.client_name = g_value_dup_string (value);
-+ break;
-+
-+ case PROP_STREAM_PROPERTIES:
-+ if (pwsink->props.properties)
-+ gst_structure_free (pwsink->props.properties);
-+ pwsink->props.properties =
-+ gst_structure_copy (gst_value_get_structure (value));
-+ break;
-+
-+ case PROP_FD:
-+ pwsink->props.fd = g_value_get_int (value);
-+ break;
-+
-+ default:
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-+ break;
-+ }
-+}
-+
-+static void
-+gst_pw_audio_sink_get_property (GObject * object, guint prop_id,
-+ GValue * value, GParamSpec * pspec)
-+{
-+ GstPwAudioSink *pwsink = GST_PW_AUDIO_SINK (object);
-+
-+ switch (prop_id) {
-+ case PROP_PATH:
-+ g_value_set_string (value, pwsink->props.path);
-+ break;
-+
-+ case PROP_CLIENT_NAME:
-+ g_value_set_string (value, pwsink->props.client_name);
-+ break;
-+
-+ case PROP_STREAM_PROPERTIES:
-+ gst_value_set_structure (value, pwsink->props.properties);
-+ break;
-+
-+ case PROP_FD:
-+ g_value_set_int (value, pwsink->props.fd);
-+ break;
-+
-+ default:
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-+ break;
-+ }
-+}
-+
-+static GstAudioRingBuffer *
-+gst_pw_audio_sink_create_ringbuffer (GstAudioBaseSink * sink)
-+{
-+ GstPwAudioSink *self = GST_PW_AUDIO_SINK (sink);
-+ GstAudioRingBuffer *buffer;
-+
-+ GST_DEBUG_OBJECT (sink, "creating ringbuffer");
-+ buffer = g_object_new (GST_TYPE_PW_AUDIO_RING_BUFFER,
-+ "element", sink,
-+ "direction", PW_DIRECTION_OUTPUT,
-+ "props", &self->props,
-+ NULL);
-+ GST_DEBUG_OBJECT (sink, "created ringbuffer @%p", buffer);
-+
-+ return buffer;
-+}
-+
-+static void
-+gst_pw_audio_sink_class_init (GstPwAudioSinkClass * klass)
-+{
-+ GObjectClass *gobject_class;
-+ GstElementClass *gstelement_class;
-+ GstAudioBaseSinkClass *gstaudiobsink_class;
-+
-+ gobject_class = (GObjectClass *) klass;
-+ gstelement_class = (GstElementClass *) klass;
-+ gstaudiobsink_class = (GstAudioBaseSinkClass *) klass;
-+
-+ gobject_class->finalize = gst_pw_audio_sink_finalize;
-+ gobject_class->set_property = gst_pw_audio_sink_set_property;
-+ gobject_class->get_property = gst_pw_audio_sink_get_property;
-+
-+ gstaudiobsink_class->create_ringbuffer = gst_pw_audio_sink_create_ringbuffer;
-+
-+ g_object_class_install_property (gobject_class, PROP_PATH,
-+ g_param_spec_string ("path", "Path",
-+ "The sink path to connect to (NULL = default)", NULL,
-+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+ g_object_class_install_property (gobject_class, PROP_CLIENT_NAME,
-+ g_param_spec_string ("client-name", "Client Name",
-+ "The client name to use (NULL = default)", NULL,
-+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+ g_object_class_install_property (gobject_class, PROP_STREAM_PROPERTIES,
-+ g_param_spec_boxed ("stream-properties", "Stream properties",
-+ "List of PipeWire stream properties", GST_TYPE_STRUCTURE,
-+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+ g_object_class_install_property (gobject_class, PROP_FD,
-+ g_param_spec_int ("fd", "Fd", "The fd to connect with", -1, G_MAXINT, -1,
-+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+ gst_element_class_set_static_metadata (gstelement_class,
-+ "PipeWire Audio sink", "Sink/Audio",
-+ "Send audio to PipeWire",
-+ "George Kiagiadakis <george.kiagiadakis@collabora.com>");
-+
-+ gst_element_class_add_pad_template (gstelement_class,
-+ gst_static_pad_template_get (&gst_pw_audio_sink_template));
-+
-+ GST_DEBUG_CATEGORY_INIT (pw_audio_sink_debug, "pwaudiosink", 0,
-+ "PipeWire Audio Sink");
-+}
-+
-diff --git a/src/gst/gstpwaudiosink.h b/src/gst/gstpwaudiosink.h
-new file mode 100644
-index 00000000..7ed0de7b
---- /dev/null
-+++ b/src/gst/gstpwaudiosink.h
-@@ -0,0 +1,48 @@
-+/* PipeWire
-+ *
-+ * Copyright © 2018 Wim Taymans
-+ * Copyright © 2019 Collabora Ltd.
-+ * @author George Kiagiadakis <george.kiagiadakis@collabora.com>
-+ *
-+ * 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.
-+ */
-+
-+#ifndef __GST_PW_AUDIO_SINK_H__
-+#define __GST_PW_AUDIO_SINK_H__
-+
-+#include "gstpwaudioringbuffer.h"
-+
-+G_BEGIN_DECLS
-+
-+#define GST_TYPE_PW_AUDIO_SINK \
-+ (gst_pw_audio_sink_get_type ())
-+
-+G_DECLARE_FINAL_TYPE(GstPwAudioSink, gst_pw_audio_sink,
-+ GST, PW_AUDIO_SINK, GstAudioBaseSink);
-+
-+struct _GstPwAudioSink
-+{
-+ GstAudioBaseSink parent;
-+ GstPwAudioRingBufferProps props;
-+};
-+
-+G_END_DECLS
-+
-+#endif
-diff --git a/src/gst/gstpwaudiosrc.c b/src/gst/gstpwaudiosrc.c
-new file mode 100644
-index 00000000..6c522982
---- /dev/null
-+++ b/src/gst/gstpwaudiosrc.c
-@@ -0,0 +1,200 @@
-+/* PipeWire
-+ *
-+ * Copyright © 2018 Wim Taymans
-+ * Copyright © 2019 Collabora Ltd.
-+ * @author George Kiagiadakis <george.kiagiadakis@collabora.com>
-+ *
-+ * 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+
-+#include "gstpwaudiosrc.h"
-+
-+GST_DEBUG_CATEGORY_STATIC (pw_audio_src_debug);
-+#define GST_CAT_DEFAULT pw_audio_src_debug
-+
-+G_DEFINE_TYPE (GstPwAudioSrc, gst_pw_audio_src, GST_TYPE_AUDIO_BASE_SRC);
-+
-+enum
-+{
-+ PROP_0,
-+ PROP_PATH,
-+ PROP_CLIENT_NAME,
-+ PROP_STREAM_PROPERTIES,
-+ PROP_FD
-+};
-+
-+static GstStaticPadTemplate gst_pw_audio_src_template =
-+GST_STATIC_PAD_TEMPLATE ("src",
-+ GST_PAD_SRC,
-+ GST_PAD_ALWAYS,
-+ GST_STATIC_CAPS (GST_AUDIO_CAPS_MAKE (GST_AUDIO_NE (F32))
-+ ", layout = (string)\"interleaved\"")
-+);
-+
-+
-+static void
-+gst_pw_audio_src_init (GstPwAudioSrc * self)
-+{
-+ self->props.fd = -1;
-+}
-+
-+static void
-+gst_pw_audio_src_finalize (GObject * object)
-+{
-+ GstPwAudioSrc *self = GST_PW_AUDIO_SRC (object);
-+
-+ g_free (self->props.path);
-+ g_free (self->props.client_name);
-+ if (self->props.properties)
-+ gst_structure_free (self->props.properties);
-+}
-+
-+static void
-+gst_pw_audio_src_set_property (GObject * object, guint prop_id,
-+ const GValue * value, GParamSpec * pspec)
-+{
-+ GstPwAudioSrc *self = GST_PW_AUDIO_SRC (object);
-+
-+ switch (prop_id) {
-+ case PROP_PATH:
-+ g_free (self->props.path);
-+ self->props.path = g_value_dup_string (value);
-+ break;
-+
-+ case PROP_CLIENT_NAME:
-+ g_free (self->props.client_name);
-+ self->props.client_name = g_value_dup_string (value);
-+ break;
-+
-+ case PROP_STREAM_PROPERTIES:
-+ if (self->props.properties)
-+ gst_structure_free (self->props.properties);
-+ self->props.properties =
-+ gst_structure_copy (gst_value_get_structure (value));
-+ break;
-+
-+ case PROP_FD:
-+ self->props.fd = g_value_get_int (value);
-+ break;
-+
-+ default:
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-+ break;
-+ }
-+}
-+
-+static void
-+gst_pw_audio_src_get_property (GObject * object, guint prop_id,
-+ GValue * value, GParamSpec * pspec)
-+{
-+ GstPwAudioSrc *self = GST_PW_AUDIO_SRC (object);
-+
-+ switch (prop_id) {
-+ case PROP_PATH:
-+ g_value_set_string (value, self->props.path);
-+ break;
-+
-+ case PROP_CLIENT_NAME:
-+ g_value_set_string (value, self->props.client_name);
-+ break;
-+
-+ case PROP_STREAM_PROPERTIES:
-+ gst_value_set_structure (value, self->props.properties);
-+ break;
-+
-+ case PROP_FD:
-+ g_value_set_int (value, self->props.fd);
-+ break;
-+
-+ default:
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-+ break;
-+ }
-+}
-+
-+static GstAudioRingBuffer *
-+gst_pw_audio_src_create_ringbuffer (GstAudioBaseSrc * sink)
-+{
-+ GstPwAudioSrc *self = GST_PW_AUDIO_SRC (sink);
-+ GstAudioRingBuffer *buffer;
-+
-+ GST_DEBUG_OBJECT (sink, "creating ringbuffer");
-+ buffer = g_object_new (GST_TYPE_PW_AUDIO_RING_BUFFER,
-+ "element", sink,
-+ "direction", PW_DIRECTION_INPUT,
-+ "props", &self->props,
-+ NULL);
-+ GST_DEBUG_OBJECT (sink, "created ringbuffer @%p", buffer);
-+
-+ return buffer;
-+}
-+
-+static void
-+gst_pw_audio_src_class_init (GstPwAudioSrcClass * klass)
-+{
-+ GObjectClass *gobject_class;
-+ GstElementClass *gstelement_class;
-+ GstAudioBaseSrcClass *gstaudiobsrc_class;
-+
-+ gobject_class = (GObjectClass *) klass;
-+ gstelement_class = (GstElementClass *) klass;
-+ gstaudiobsrc_class = (GstAudioBaseSrcClass *) klass;
-+
-+ gobject_class->finalize = gst_pw_audio_src_finalize;
-+ gobject_class->set_property = gst_pw_audio_src_set_property;
-+ gobject_class->get_property = gst_pw_audio_src_get_property;
-+
-+ gstaudiobsrc_class->create_ringbuffer = gst_pw_audio_src_create_ringbuffer;
-+
-+ g_object_class_install_property (gobject_class, PROP_PATH,
-+ g_param_spec_string ("path", "Path",
-+ "The sink path to connect to (NULL = default)", NULL,
-+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+ g_object_class_install_property (gobject_class, PROP_CLIENT_NAME,
-+ g_param_spec_string ("client-name", "Client Name",
-+ "The client name to use (NULL = default)", NULL,
-+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+ g_object_class_install_property (gobject_class, PROP_STREAM_PROPERTIES,
-+ g_param_spec_boxed ("stream-properties", "Stream properties",
-+ "List of PipeWire stream properties", GST_TYPE_STRUCTURE,
-+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+ g_object_class_install_property (gobject_class, PROP_FD,
-+ g_param_spec_int ("fd", "Fd", "The fd to connect with", -1, G_MAXINT, -1,
-+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-+
-+ gst_element_class_set_static_metadata (gstelement_class,
-+ "PipeWire Audio source", "Source/Audio",
-+ "Receive audio from PipeWire",
-+ "George Kiagiadakis <george.kiagiadakis@collabora.com>");
-+
-+ gst_element_class_add_pad_template (gstelement_class,
-+ gst_static_pad_template_get (&gst_pw_audio_src_template));
-+
-+ GST_DEBUG_CATEGORY_INIT (pw_audio_src_debug, "pwaudiosrc", 0,
-+ "PipeWire Audio Src");
-+}
-+
-diff --git a/src/gst/gstpwaudiosrc.h b/src/gst/gstpwaudiosrc.h
-new file mode 100644
-index 00000000..c46e644c
---- /dev/null
-+++ b/src/gst/gstpwaudiosrc.h
-@@ -0,0 +1,48 @@
-+/* PipeWire
-+ *
-+ * Copyright © 2018 Wim Taymans
-+ * Copyright © 2019 Collabora Ltd.
-+ * @author George Kiagiadakis <george.kiagiadakis@collabora.com>
-+ *
-+ * 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.
-+ */
-+
-+#ifndef __GST_PW_AUDIO_SRC_H__
-+#define __GST_PW_AUDIO_SRC_H__
-+
-+#include "gstpwaudioringbuffer.h"
-+
-+G_BEGIN_DECLS
-+
-+#define GST_TYPE_PW_AUDIO_SRC \
-+ (gst_pw_audio_src_get_type ())
-+
-+G_DECLARE_FINAL_TYPE(GstPwAudioSrc, gst_pw_audio_src,
-+ GST, PW_AUDIO_SRC, GstAudioBaseSrc);
-+
-+struct _GstPwAudioSrc
-+{
-+ GstAudioBaseSrc parent;
-+ GstPwAudioRingBufferProps props;
-+};
-+
-+G_END_DECLS
-+
-+#endif
-diff --git a/src/gst/meson.build b/src/gst/meson.build
-index ad0e0801..0e922347 100644
---- a/src/gst/meson.build
-+++ b/src/gst/meson.build
-@@ -6,6 +6,9 @@ pipewire_gst_sources = [
- 'gstpipewirepool.c',
- 'gstpipewiresink.c',
- 'gstpipewiresrc.c',
-+ 'gstpwaudioringbuffer.c',
-+ 'gstpwaudiosink.c',
-+ 'gstpwaudiosrc.c',
- ]
-
- pipewire_gst_headers = [
-@@ -15,6 +18,9 @@ pipewire_gst_headers = [
- 'gstpipewirepool.h',
- 'gstpipewiresink.h',
- 'gstpipewiresrc.h',
-+ 'gstpwaudioringbuffer.h',
-+ 'gstpwaudiosink.h',
-+ 'gstpwaudiosrc.h',
- ]
-
- pipewire_gst_c_args = [
---
-2.24.0
-
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0004-audioconvert-always-assume-that-output-ports-are-NOT.patch b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0004-audioconvert-always-assume-that-output-ports-are-NOT.patch
deleted file mode 100644
index beb87839..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0004-audioconvert-always-assume-that-output-ports-are-NOT.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ce155eb0073fba84556782633f79bb7d03492c07 Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Wed, 2 Oct 2019 21:40:34 +0300
-Subject: [PATCH] audioconvert: always assume that output ports are NOT monitor
- ports
-
-Otherwise, when we setup audioconvert in merge+split mode,
-it assumes that the splitter's ports are monitor ports and
-belong to the merger.
-
-Upstream-Status: Inappropriate [workaround]
----
- spa/plugins/audioconvert/audioconvert.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/spa/plugins/audioconvert/audioconvert.c b/spa/plugins/audioconvert/audioconvert.c
-index 74a62a35..72da37d1 100644
---- a/spa/plugins/audioconvert/audioconvert.c
-+++ b/spa/plugins/audioconvert/audioconvert.c
-@@ -113,8 +113,12 @@ struct impl {
- unsigned int add_listener:1;
- };
-
-+#if 0
- #define IS_MONITOR_PORT(this,dir,port_id) (dir == SPA_DIRECTION_OUTPUT && port_id > 0 && \
- this->mode[SPA_DIRECTION_INPUT] == SPA_PARAM_PORT_CONFIG_MODE_dsp)
-+#else
-+#define IS_MONITOR_PORT(this,dir,port_id) (false)
-+#endif
-
- static void emit_node_info(struct impl *this, bool full)
- {
---
-2.24.0
-
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0005-module-access-add-same-sec-label-mode.patch b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0005-module-access-add-same-sec-label-mode.patch
deleted file mode 100644
index 07a1ec11..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0005-module-access-add-same-sec-label-mode.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 19fad1a4fa8bdc4f02aac4e169e7ff9cab18bdcd Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Tue, 19 Nov 2019 17:09:07 +0200
-Subject: [PATCH] module-access: add same-sec-label-mode
-
-This is a mode where the access module allows all clients that have
-the same security label as the pipewire daemon, and every other
-client is put on the restricted state.
-
-In systems that use SMACK security labels, such as AGL, this allows
-the session manager (which is spawned by pipewire, inheriting the
-same smack label) to have full access to all objects, while every
-other client is restricted and the session manager must decide
-what to do with it
-
-Note that while this option is configurable, there is no loss of
-security if this option is not set in the configuration. Clients
-that don't have the same security context will be considered to
-be flatpak clients because pipewire will not be able to open
-/proc/pid/cmdline. This however results in some unwanted error
-messages that may be confusing.
-
-Upstream-Status: Inappropriate [agl/smack specific]
----
- src/modules/module-access.c | 45 ++++++++++++++++++++++++++++++++++++-
- 1 file changed, 44 insertions(+), 1 deletion(-)
-
-diff --git a/src/modules/module-access.c b/src/modules/module-access.c
-index 09dafa43..f75306d9 100644
---- a/src/modules/module-access.c
-+++ b/src/modules/module-access.c
-@@ -50,6 +50,30 @@ struct impl {
- struct spa_hook module_listener;
- };
-
-+static int check_seclabel(const char *str)
-+{
-+ char attr[1024];
-+ int fd, len;
-+
-+ fd = open("/proc/self/attr/current", O_RDONLY);
-+ if (fd < 0)
-+ return -errno;
-+
-+ if ((len = read(fd, attr, 1024)) <= 0) {
-+ close(fd);
-+ return -EIO;
-+ }
-+ attr[len] = '\0';
-+
-+ if (strcmp(attr, str) == 0) {
-+ close(fd);
-+ return 1;
-+ }
-+
-+ close(fd);
-+ return 0;
-+}
-+
- static int check_cmdline(struct pw_client *client, int pid, const char *str)
- {
- char path[2048];
-@@ -121,8 +145,27 @@ core_check_access(void *data, struct pw_client *client)
- const char *str;
- int pid, res;
-
-+ props = pw_client_get_properties(client);
-+
-+ if (impl->properties &&
-+ (str = pw_properties_get(impl->properties, "same-sec-label-mode")) != NULL &&
-+ strcmp(str, "1") == 0) {
-+ if (props && (str = pw_properties_get(props, PW_KEY_SEC_LABEL)) != NULL) {
-+ res = check_seclabel(str);
-+ if (res == 1)
-+ goto granted;
-+ else if (res < 0)
-+ pw_log_warn("module %p: client %p seclabel check failed: %s",
-+ impl, client, spa_strerror(res));
-+ }
-+ pw_log_debug("module %p: seclabel restricted client %p added",
-+ impl, client);
-+ items[0] = SPA_DICT_ITEM_INIT(PW_KEY_ACCESS, "restricted");
-+ goto wait_permissions;
-+ }
-+
- pid = -EINVAL;
-- if ((props = pw_client_get_properties(client)) != NULL) {
-+ if (props != NULL) {
- if ((str = pw_properties_get(props, PW_KEY_SEC_PID)) != NULL)
- pid = atoi(str);
- }
---
-2.24.0
-
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-alsa-pcm-call-reuse_buffers-when-resetting-the-state.patch b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-alsa-pcm-call-reuse_buffers-when-resetting-the-state.patch
deleted file mode 100644
index cae4d70f..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/0006-alsa-pcm-call-reuse_buffers-when-resetting-the-state.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 5946fbd2ca3a7f892b4ebc10090f62df6bb1ec88 Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Thu, 9 Jan 2020 19:27:23 +0200
-Subject: [PATCH] alsa-pcm: call reuse_buffers when resetting the state of the
- buffers
-
-This allows the upstream node to put buffers back to its pool in case
-they were left around in the ready list locally when the alsa-pcm-sink
-was last paused.
-
-Fixes #203
----
- spa/plugins/alsa/alsa-pcm.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/spa/plugins/alsa/alsa-pcm.c b/spa/plugins/alsa/alsa-pcm.c
-index 63d75549..a6f22cf0 100644
---- a/spa/plugins/alsa/alsa-pcm.c
-+++ b/spa/plugins/alsa/alsa-pcm.c
-@@ -1115,6 +1115,7 @@ static void reset_buffers(struct state *this)
- struct buffer *b = &this->buffers[i];
- if (this->stream == SND_PCM_STREAM_PLAYBACK) {
- SPA_FLAG_SET(b->flags, BUFFER_FLAG_OUT);
-+ spa_node_call_reuse_buffer(&this->callbacks, 0, b->id);
- } else {
- spa_list_append(&this->free, &b->link);
- SPA_FLAG_CLEAR(b->flags, BUFFER_FLAG_OUT);
---
-2.24.1
-
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.service b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.service
deleted file mode 100644
index e116dc1f..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.service
+++ /dev/null
@@ -1,24 +0,0 @@
-[Unit]
-Description=Multimedia Service for user %i
-Requires=pipewire@%i.socket
-
-[Install]
-Also=pipewire@%i.socket
-
-[Service]
-Type=simple
-Restart=on-failure
-ExecStart=/usr/bin/pipewire
-
-Environment=XDG_RUNTIME_DIR=/run/user/%i
-Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus
-EnvironmentFile=-/etc/pipewire/environment
-
-User=%i
-Slice=user-%i.slice
-SmackProcessLabel=System::Pipewire
-SupplementaryGroups=audio
-UMask=0077
-CapabilityBoundingSet=
-SystemCallFilter=@basic-io @file-system @io-event @ipc \
- @memlock @network-io @process @resources @signal
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.socket b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.socket
deleted file mode 100644
index 10cb3227..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.socket
+++ /dev/null
@@ -1,19 +0,0 @@
-[Unit]
-Description=Multimedia Service socket for user %i
-Requires=afm-user-setup@%i.service
-After=afm-user-setup@%i.service
-
-[Socket]
-Priority=6
-Backlog=5
-ListenStream=/run/user/%i/pipewire-0
-Service=pipewire@%i.service
-SmackLabel=*
-SmackLabelIPIn=System
-SmackLabelIPOut=System
-SocketUser=%i
-SocketGroup=%i
-SocketMode=0660
-
-[Install]
-WantedBy=afm-user-session@%i.target
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/smack-pipewire b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/smack-pipewire
deleted file mode 100644
index 8d5b541f..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire/smack-pipewire
+++ /dev/null
@@ -1,8 +0,0 @@
-System System::Pipewire rwxa--
-System::Pipewire System -wx---
-System::Pipewire System::Shared r-x---
-System::Pipewire System::Run rwxat-
-System::Pipewire System::Log rwxa--
-System::Pipewire _ r-x--l
-System::Pipewire User::Home r-x--l
-System::Pipewire User::App-Shared rwxat-
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bb b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bb
deleted file mode 100644
index 1a4e4eb9..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require pipewire.inc
-
-SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;protocol=https;branch=master \
- file://0001-meson-revert-version-check-to-require-meson-0.47-not.patch \
- file://0002-arm-build-with-mno-unaligned-access.patch \
- file://0003-gst-Implement-new-pwaudio-src-sink-elements-based-on.patch \
- file://0004-audioconvert-always-assume-that-output-ports-are-NOT.patch \
- file://0005-module-access-add-same-sec-label-mode.patch \
- file://0006-alsa-pcm-call-reuse_buffers-when-resetting-the-state.patch \
- "
-
-SRCREV = "b0932e687fc47e0872ca291531f2291d99042d70"
-
-PV = "0.2.91+git${SRCPV}+2"
-S = "${WORKDIR}/git"
-
-RDEPENDS_${PN} += "virtual/pipewire-sessionmanager virtual/pipewire-config"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bbappend b/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bbappend
deleted file mode 100644
index 8a0b0741..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bbappend
+++ /dev/null
@@ -1,30 +0,0 @@
-SRC_URI += "\
- file://pipewire@.service \
- file://pipewire@.socket \
- file://smack-pipewire \
- "
-
-do_install_append() {
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- # remove the original user unit files shipped by pipewire
- rm -rf ${D}${systemd_unitdir}
-
- # install our own system-level templates
- mkdir -p ${D}${systemd_system_unitdir}/
- install -m 0644 ${WORKDIR}/pipewire@.service ${D}${systemd_system_unitdir}/pipewire@.service
- install -m 0644 ${WORKDIR}/pipewire@.socket ${D}${systemd_system_unitdir}/pipewire@.socket
-
- # enable the socket to start together with afm-user-session
- mkdir -p ${D}${systemd_system_unitdir}/afm-user-session@.target.wants
- ln -sf ../pipewire@.socket ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/pipewire@.socket
-
- # install smack rules
- mkdir -p ${D}${sysconfdir}/smack/accesses.d
- install -m 0644 ${WORKDIR}/smack-pipewire ${D}${sysconfdir}/smack/accesses.d/pipewire
- fi
-}
-
-FILES_${PN} += "\
- ${systemd_system_unitdir}/* \
- ${sysconfdir}/smack/accesses.d/* \
-"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint
deleted file mode 100644
index 4bc43574..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-sink.endpoint
+++ /dev/null
@@ -1,10 +0,0 @@
-[match-node]
-priority = 0
-properties = [
- { name = "media.class", value = "Audio/Sink" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint
deleted file mode 100644
index 7657f6f4..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-audio-source.endpoint
+++ /dev/null
@@ -1,10 +0,0 @@
-[match-node]
-priority = 0
-properties = [
- { name = "media.class", value = "Audio/Source" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link
deleted file mode 100644
index 4b70dc89..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-input-audio.endpoint-link
+++ /dev/null
@@ -1,7 +0,0 @@
-[match-endpoint]
-priority = 0
-direction = "sink"
-media_class = "Stream/Input/Audio"
-
-[endpoint-link]
-keep = false
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link
deleted file mode 100644
index 5d6428f9..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-default-output-audio.endpoint-link
+++ /dev/null
@@ -1,7 +0,0 @@
-[match-endpoint]
-priority = 0
-direction = "source"
-media_class = "Stream/Output/Audio"
-
-[endpoint-link]
-keep = false
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint
deleted file mode 100644
index 2993f3e4..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-input-audio.endpoint
+++ /dev/null
@@ -1,9 +0,0 @@
-[match-node]
-priority = 0
-properties = [
- { name = "media.class", value = "Stream/Input/Audio" },
-]
-
-[endpoint]
-direction = "sink"
-type = "pw-audio-softdsp-endpoint"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint
deleted file mode 100644
index 1cf82ea0..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/00-stream-output-audio.endpoint
+++ /dev/null
@@ -1,9 +0,0 @@
-[match-node]
-priority = 0
-properties = [
- { name = "media.class", value = "Stream/Output/Audio" },
-]
-
-[endpoint]
-direction = "source"
-type = "pw-audio-softdsp-endpoint"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint
deleted file mode 100644
index 85a9b511..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-sink.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 1
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.path", value = "hw:0,0" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 1
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint
deleted file mode 100644
index c77701c0..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/01-hw00-audio-source.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 1
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.path", value = "hw:0,0" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 1
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint
deleted file mode 100644
index afc4303e..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.id", value = "ak4613" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 30
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint
deleted file mode 100644
index ad568059..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-source.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.card.id", value = "ak4613" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 30
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint
deleted file mode 100644
index becd21e2..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-sink.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.id", value = "DRA7xx-EVM" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 30
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint
deleted file mode 100644
index 72ef4677..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-dra7xx-audio-source.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.card.id", value = "DRA7xx-EVM" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 30
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint
deleted file mode 100644
index 74e4d62e..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rpi3-audio-sink.endpoint
+++ /dev/null
@@ -1,13 +0,0 @@
-[match-node]
-priority = 30
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.name", value = "bcm2835 ALSA" },
- { name = "api.alsa.pcm.name", value = "bcm2835 ALSA" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 30
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint
deleted file mode 100644
index 807ad468..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-fiberdyne-amp.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 40
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.id", value = "ep016ch" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 40
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint
deleted file mode 100644
index bbfcd43a..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/40-microchip-mic.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 40
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.card.id", value = "ep811ch" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 40
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint
deleted file mode 100644
index 62e27909..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-sink.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 70
-properties = [
- { name = "media.class", value = "Audio/Sink" },
- { name = "api.alsa.card.driver", value = "USB-Audio" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "sink"
-streams = "playback.streams"
-priority = 70
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint
deleted file mode 100644
index 505ae8d8..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/70-usb-audio-source.endpoint
+++ /dev/null
@@ -1,12 +0,0 @@
-[match-node]
-priority = 70
-properties = [
- { name = "media.class", value = "Audio/Source" },
- { name = "api.alsa.card.driver", value = "USB-Audio" },
-]
-
-[endpoint]
-type = "pw-audio-softdsp-endpoint"
-direction = "source"
-streams = "capture.streams"
-priority = 70
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link
deleted file mode 100644
index b5753a10..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-input-audio.endpoint-link
+++ /dev/null
@@ -1,11 +0,0 @@
-[match-endpoint]
-priority = 75
-direction = "sink"
-name = "bluealsa*"
-media_class = "Stream/Input/Audio"
-properties = [
- { name = "bluealsa.profile", value = "sco" },
-]
-
-[endpoint-link]
-keep = true
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link
deleted file mode 100644
index d1b3cec0..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/bluealsa-output-audio.endpoint-link
+++ /dev/null
@@ -1,11 +0,0 @@
-[match-endpoint]
-priority = 75
-direction = "source"
-name = "bluealsa*"
-media_class = "Stream/Output/Audio"
-properties = [
- { name = "bluealsa.profile", value = "sco" },
-]
-
-[endpoint-link]
-keep = true
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams
deleted file mode 100644
index e7ce36f6..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/capture.streams
+++ /dev/null
@@ -1,3 +0,0 @@
-[[streams]]
-name = "Default"
-priority = 25
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams
deleted file mode 100644
index c645416a..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/playback.streams
+++ /dev/null
@@ -1,31 +0,0 @@
-[[streams]]
-name = "Multimedia"
-priority = 25
-
-[[streams]]
-name = "Speech-Low"
-priority = 30
-
-[[streams]]
-name = "Custom-Low"
-priority = 35
-
-[[streams]]
-name = "Navigation"
-priority = 50
-
-[[streams]]
-name = "Speech-High"
-priority = 60
-
-[[streams]]
-name = "Custom-High"
-priority = 65
-
-[[streams]]
-name = "Communication"
-priority = 75
-
-[[streams]]
-name = "Emergency"
-priority = 99
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf
deleted file mode 100644
index e0975a81..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/wireplumber.conf
+++ /dev/null
@@ -1,30 +0,0 @@
-# Register well-known SPA factories
-# These do not need to exist on the system to be registered
-add-spa-lib audio.convert* audioconvert/libspa-audioconvert
-add-spa-lib api.alsa.* alsa/libspa-alsa
-add-spa-lib api.v4l2.* v4l2/libspa-v4l2
-add-spa-lib api.bluez5.* bluez5/libspa-bluez5
-
-# the client-device pipewire module is needed for libwireplumber-module-monitor
-load-pipewire-module libpipewire-module-client-device
-
-# Session object implementation
-# This keeps track of the default input & output device endpoint
-load-module C libwireplumber-module-session
-
-# Basic pipewire integration - do not remove
-load-module C libwireplumber-module-pipewire
-
-# Grants access to security confined clients
-load-module C libwireplumber-module-client-permissions
-
-load-module C libwireplumber-module-monitor {
- "factory": <"api.alsa.enum.udev">,
- "flags": <["use-adapter", "activate-devices"]>
-}
-
-# Implements endpoint creation based on TOML configuration files
-load-module C libwireplumber-module-config-endpoint
-
-# Implements linking clients to devices based on TOML configuration files
-load-module C libwireplumber-module-config-policy
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl_git.bb b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl_git.bb
deleted file mode 100644
index cab61e49..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl_git.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "AGL configuration file for wireplumber"
-HOMEPAGE = "https://gitlab.freedesktop.org/gkiagia/wireplumber"
-BUGTRACKER = "https://jira.automotivelinux.org"
-AUTHOR = "George Kiagiadakis <george.kiagiadakis@collabora.com>"
-SECTION = "multimedia"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-SRC_URI = "\
- file://wireplumber.conf \
- file://00-audio-sink.endpoint \
- file://00-audio-source.endpoint \
- file://00-default-input-audio.endpoint-link \
- file://00-default-output-audio.endpoint-link \
- file://00-stream-input-audio.endpoint \
- file://00-stream-output-audio.endpoint \
- file://01-hw00-audio-sink.endpoint \
- file://01-hw00-audio-source.endpoint \
- file://30-ak4613-audio-sink.endpoint \
- file://30-ak4613-audio-source.endpoint \
- file://30-dra7xx-audio-sink.endpoint \
- file://30-dra7xx-audio-source.endpoint \
- file://30-rpi3-audio-sink.endpoint \
- file://40-fiberdyne-amp.endpoint \
- file://40-microchip-mic.endpoint \
- file://70-usb-audio-sink.endpoint \
- file://70-usb-audio-source.endpoint \
- file://bluealsa-input-audio.endpoint-link \
- file://bluealsa-output-audio.endpoint-link \
- file://capture.streams \
- file://playback.streams \
-"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install_append() {
- install -d ${D}/${sysconfdir}/wireplumber/
- install -m 644 ${WORKDIR}/wireplumber.conf ${D}/${sysconfdir}/wireplumber/wireplumber.conf
- install -m 644 ${WORKDIR}/*.endpoint ${D}/${sysconfdir}/wireplumber/
- install -m 644 ${WORKDIR}/*.endpoint-link ${D}/${sysconfdir}/wireplumber/
- install -m 644 ${WORKDIR}/*.streams ${D}/${sysconfdir}/wireplumber/
-}
-
-FILES_${PN} += "\
- ${sysconfdir}/wireplumber/* \
-"
-CONFFILES_${PN} += "\
- ${sysconfdir}/wireplumber/* \
-"
-
-RPROVIDES_${PN} += "virtual/wireplumber-config"
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Build-cpptoml-without-a-cmake-subproject.patch b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Build-cpptoml-without-a-cmake-subproject.patch
deleted file mode 100644
index 726b35e7..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0001-Build-cpptoml-without-a-cmake-subproject.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e5efe3d4f0abc28251dac245ce0cf4124e7e2a12 Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Thu, 5 Dec 2019 17:59:44 +0200
-Subject: [PATCH] Build cpptoml without a cmake subproject
-
-Upstream-Status: Inappropriate
----
- meson.build | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index 5a75d96..0b21377 100644
---- a/meson.build
-+++ b/meson.build
-@@ -24,9 +24,7 @@ else
- wireplumber_config_dir = join_paths(get_option('prefix'), get_option('sysconfdir'), 'wireplumber')
- endif
-
--cmake = import('cmake')
--cpptoml = cmake.subproject('cpptoml')
--cpptoml_dep = cpptoml.dependency('cpptoml')
-+cpptoml_dep = declare_dependency(include_directories: include_directories('subprojects/cpptoml'))
-
- gobject_dep = dependency('gobject-2.0')
- gmodule_dep = dependency('gmodule-2.0')
---
-2.24.0
-
diff --git a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb b/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb
deleted file mode 100644
index 0e810b37..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Session / Policy Manager for PipeWire"
-HOMEPAGE = "https://gitlab.freedesktop.org/pipewire/wireplumber"
-BUGTRACKER = "https://gitlab.freedesktop.org/pipewire/wireplumber/issues"
-AUTHOR = "George Kiagiadakis <george.kiagiadakis@collabora.com>"
-SECTION = "multimedia"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=3;md5=e8ad01a5182f2c1b3a2640e9ea268264"
-
-inherit meson pkgconfig gobject-introspection
-
-DEPENDS = "glib-2.0 glib-2.0-native pipewire"
-
-SRC_URI = "\
- git://gitlab.freedesktop.org/pipewire/wireplumber.git;protocol=https;branch=master \
- https://raw.githubusercontent.com/skystrife/cpptoml/fededad7169e538ca47e11a9ee9251bc361a9a65/include/cpptoml.h \
- file://0001-Build-cpptoml-without-a-cmake-subproject.patch \
-"
-SRCREV = "0e98e4150b73d0bed9b72bf8d3eba49671962991"
-SRC_URI[sha256sum] = "3e4e1d315fa1229921c7a4297ead08775b5bb1220c18a7eac62db9ca7e79df0d"
-
-PV = "0.1.90+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-do_configure_prepend() {
- mkdir -p ${WORKDIR}/git/subprojects/cpptoml/include
- cp -f ${WORKDIR}/cpptoml.h ${WORKDIR}/git/subprojects/cpptoml/include/
-}
-
-PACKAGES =+ "${PN}-config"
-
-FILES_${PN} += "\
- ${libdir}/wireplumber-*/* \
-"
-RPROVIDES_${PN} += "virtual/pipewire-sessionmanager"
-RDEPENDS_${PN} += "virtual/wireplumber-config"
-
-
-FILES_${PN}-config += "\
- ${sysconfdir}/wireplumber/* \
-"
-CONFFILES_${PN}-config += "\
- ${sysconfdir}/wireplumber/* \
-"
-
-RPROVIDES_${PN}-config += "virtual/wireplumber-config"
diff --git a/meta-agl-devel/meta-pipewire/recipes-security/cynagora/cynagora_%.bbappend b/meta-agl-devel/meta-pipewire/recipes-security/cynagora/cynagora_%.bbappend
deleted file mode 100644
index 9395c90c..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-security/cynagora/cynagora_%.bbappend
+++ /dev/null
@@ -1,5 +0,0 @@
-
-do_install_append() {
- echo "System::Pipewire * * http://tizen.org/privilege/internal/dbus yes forever" >> ${D}${sysconfdir}/security/cynagora.initial
-}
-
diff --git a/meta-agl-devel/meta-pipewire/recipes-security/security-manager/security-manager_%.bbappend b/meta-agl-devel/meta-pipewire/recipes-security/security-manager/security-manager_%.bbappend
deleted file mode 100644
index 59449446..00000000
--- a/meta-agl-devel/meta-pipewire/recipes-security/security-manager/security-manager_%.bbappend
+++ /dev/null
@@ -1,4 +0,0 @@
-
-do_install_append() {
- echo "~APP~ System::Pipewire rw" >> ${D}${datadir}/security-manager/policy/app-rules-template.smack
-}
diff --git a/meta-agl-devel/meta-speech-framework/conf/include/agl-speech-framework.inc b/meta-agl-devel/meta-speech-framework/conf/include/agl-speech-framework.inc
index ee19d25f..700aadf1 100644
--- a/meta-agl-devel/meta-speech-framework/conf/include/agl-speech-framework.inc
+++ b/meta-agl-devel/meta-speech-framework/conf/include/agl-speech-framework.inc
@@ -1 +1,5 @@
PREFERRED_RPROVIDER_virtual/voice-high-config = "default-voice-high-config"
+
+FEATURE_PACKAGES_agl-speech-framework = "packagegroup-agl-speech-services"
+
+IMAGE_FEATURES += "agl-speech-framework"
diff --git a/meta-agl-devel/meta-speech-framework/conf/include/agl-voiceagent-alexa.inc b/meta-agl-devel/meta-speech-framework/conf/include/agl-voiceagent-alexa.inc
index 10df0926..21da324e 100644
--- a/meta-agl-devel/meta-speech-framework/conf/include/agl-voiceagent-alexa.inc
+++ b/meta-agl-devel/meta-speech-framework/conf/include/agl-voiceagent-alexa.inc
@@ -2,6 +2,11 @@
# from meta-aac to avoid triggering rebuilds of all curl dependencies when
# agl-voiceagent-alexa is configured.
BBMASK += "meta-aac/recipes-support/curl/curl_%.bbappend"
+# Mask out the nghttp2 recipe in meta-aac as well, since the same version
+# is available in meta-networking, and due to meta-aac having a higher
+# layer priority, rebuilds will be triggered when the voiceagent feature
+# is configured and the layer is added.
+BBMASK += "meta-aac/recipes-connectivity/nghttp2"
PREFERRED_RPROVIDER_virtual/voice-high-config = "alexa-voice-high-config"
diff --git a/meta-agl-devel/meta-speech-framework/conf/layer.conf b/meta-agl-devel/meta-speech-framework/conf/layer.conf
index ce97b9e0..b3f004ce 100644
--- a/meta-agl-devel/meta-speech-framework/conf/layer.conf
+++ b/meta-agl-devel/meta-speech-framework/conf/layer.conf
@@ -24,4 +24,4 @@ BBFILE_COLLECTIONS += "speech-framework"
BBFILE_PATTERN_speech-framework = "^${LAYERDIR}/"
BBFILE_PRIORITY_speech-framework = "8"
-LAYERSERIES_COMPAT_speech-framework = "thud"
+LAYERSERIES_COMPAT_speech-framework = "dunfell"
diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0007-add-autobuild-scripts.patch b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0007-add-autobuild-scripts.patch
new file mode 100644
index 00000000..5886709b
--- /dev/null
+++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service/0007-add-autobuild-scripts.patch
@@ -0,0 +1,286 @@
+Add autobuild scripts
+
+Add autobuild scripts and update .gitignore to not ignore them.
+The autobuild/agl/autobuild script will be required for building widgets
+in AGL, add the latest version to the voiceagent source tree.
+
+Upstream-Status: Pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+diff --git a/.gitignore b/.gitignore
+index b3c1108..edbf1b5 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -1,3 +1,2 @@
+-autobuild/
+ build/
+ alexa-voiceagent-apidef.h
+diff --git a/autobuild/agl/autobuild b/autobuild/agl/autobuild
+new file mode 100755
+index 0000000..16181b8
+--- /dev/null
++++ b/autobuild/agl/autobuild
+@@ -0,0 +1,128 @@
++#!/usr/bin/make -f
++# Copyright (C) 2015 - 2018 "IoT.bzh"
++# Copyright (C) 2020 Konsulko Group
++# Author "Romain Forlot" <romain.forlot@iot.bzh>
++#
++# Licensed under the Apache License, Version 2.0 (the "License");
++# you may not use this file except in compliance with the License.
++# You may obtain a copy of the License at
++#
++# http://www.apache.org/licenses/LICENSE-2.0
++#
++# Unless required by applicable law or agreed to in writing, software
++# distributed under the License is distributed on an "AS IS" BASIS,
++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++# See the License for the specific language governing permissions and
++# limitations under the License.
++
++THISFILE := $(lastword $(MAKEFILE_LIST))
++ROOT_DIR := $(abspath $(dir $(THISFILE))/../..)
++
++# Build directories
++# Note that the debug/test/coverage directories are defined in relation
++# to the release directory (BUILD_DIR), this needs to be kept in mind
++# if over-riding it and building those widget types, the specific widget
++# type variable (e.g. BUILD_DIR_DEBUG) may also need to be specified
++# to yield the desired output hierarchy.
++BUILD_DIR = $(ROOT_DIR)/build
++BUILD_DIR_DEBUG = $(abspath $(BUILD_DIR)/../build-debug)
++BUILD_DIR_TEST = $(abspath $(BUILD_DIR)/../build-test)
++BUILD_DIR_COVERAGE = $(abspath $(BUILD_DIR)/../build-coverage)
++
++# Output directory variable for use in pattern rules.
++# This is intended for internal use only, hence the explicit override
++# definition.
++override OUTPUT_DIR = $(BUILD_DIR)
++
++# Final install directory for widgets
++DEST = $(OUTPUT_DIR)
++
++# Default build type for release/test builds
++BUILD_TYPE = RELEASE
++
++.PHONY: all help update install distclean
++.PHONY: clean clean-release clean-debug clean-test clean-coverage clean-all
++.PHONY: configure configure-release configure-debug configure-test configure-coverage
++.PHONY: build build-release build-debug build-test build-coverage build-all
++.PHONY: package package-release package-debug package-test package-coverage package-all
++
++help:
++ @echo "List of targets available:"
++ @echo ""
++ @echo "- all"
++ @echo "- help"
++ @echo "- clean"
++ @echo "- distclean"
++ @echo "- configure"
++ @echo "- build: compilation, link and prepare files for package into a widget"
++ @echo "- package: output a widget file '*.wgt'"
++ @echo "- install: install in your $(CMAKE_INSTALL_DIR) directory"
++ @echo ""
++ @echo "Usage: ./autobuild/agl/autobuild package DEST=${HOME}/opt"
++ @echo "Don't use your build dir as DEST as wgt file is generated at this location"
++
++all: package-all
++
++# Target specific variable over-rides so static pattern rules can be
++# used for the various type-specific targets.
++
++configure-test build-test package-test clean-test: OUTPUT_DIR = $(BUILD_DIR_TEST)
++
++configure-coverage build-coverage package-coverage clean-coverage: OUTPUT_DIR = $(BUILD_DIR_COVERAGE)
++configure-coverage build-coverage package-coverage: BUILD_TYPE = COVERAGE
++
++configure-debug build-debug package-debug clean-debug: OUTPUT_DIR = $(BUILD_DIR_DEBUG)
++configure-debug build-debug package-debug: BUILD_TYPE = DEBUG
++
++clean-release clean-test clean-debug clean-coverage:
++ @if [ -d $(OUTPUT_DIR) ]; then \
++ $(MAKE) -C $(OUTPUT_DIR) $(CLEAN_ARGS) clean; \
++ else \
++ echo Nothing to clean; \
++ fi
++
++clean: clean-release
++
++clean-all: clean-release clean-test clean-debug clean-coverage
++
++distclean: clean-all
++
++configure-release configure-test configure-debug configure-coverage:
++ @mkdir -p $(OUTPUT_DIR)
++ @if [ ! -f $(OUTPUT_DIR)/Makefile ]; then \
++ (cd $(OUTPUT_DIR) && cmake -S $(ROOT_DIR) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) $(CONFIGURE_ARGS)); \
++ fi
++
++configure: configure-release
++
++build-release build-debug build-coverage: build-%: configure-%
++ @cmake --build $(OUTPUT_DIR) $(BUILD_ARGS) --target all
++
++# Kept for consistency, empty to avoid building everything for test widget
++build-test: configure-test
++
++build: build-release
++
++build-all: build-release build-debug build-test build-coverage
++
++package-release package-debug package-coverage: package-%: build-%
++ @cmake --build $(OUTPUT_DIR) $(PACKAGE_ARGS) --target widget
++ @if [ "$(abspath $(DEST))" != "$(abspath $(OUTPUT_DIR))" ]; then \
++ mkdir -p $(DEST) && cp $(OUTPUT_DIR)/*.wgt $(DEST); \
++ fi
++
++package-test: build-test
++ @cmake --build $(OUTPUT_DIR) $(PACKAGE_ARGS) --target test_widget
++ @if [ "$(abspath $(DEST))" != "$(abspath $(OUTPUT_DIR))" ]; then \
++ mkdir -p $(DEST) && cp $(OUTPUT_DIR)/*.wgt $(DEST); \
++ fi
++
++package: package-release
++
++package-all: package-release package-test package-coverage package-debug
++
++update: configure
++ @cmake --build $(BUILD_DIR) --target autobuild
++
++install: build
++ @cmake --build $(BUILD_DIR) $(INSTALL_ARGS) --target install
+diff --git a/autobuild/linux/autobuild b/autobuild/linux/autobuild
+new file mode 100755
+index 0000000..16181b8
+--- /dev/null
++++ b/autobuild/linux/autobuild
+@@ -0,0 +1,128 @@
++#!/usr/bin/make -f
++# Copyright (C) 2015 - 2018 "IoT.bzh"
++# Copyright (C) 2020 Konsulko Group
++# Author "Romain Forlot" <romain.forlot@iot.bzh>
++#
++# Licensed under the Apache License, Version 2.0 (the "License");
++# you may not use this file except in compliance with the License.
++# You may obtain a copy of the License at
++#
++# http://www.apache.org/licenses/LICENSE-2.0
++#
++# Unless required by applicable law or agreed to in writing, software
++# distributed under the License is distributed on an "AS IS" BASIS,
++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++# See the License for the specific language governing permissions and
++# limitations under the License.
++
++THISFILE := $(lastword $(MAKEFILE_LIST))
++ROOT_DIR := $(abspath $(dir $(THISFILE))/../..)
++
++# Build directories
++# Note that the debug/test/coverage directories are defined in relation
++# to the release directory (BUILD_DIR), this needs to be kept in mind
++# if over-riding it and building those widget types, the specific widget
++# type variable (e.g. BUILD_DIR_DEBUG) may also need to be specified
++# to yield the desired output hierarchy.
++BUILD_DIR = $(ROOT_DIR)/build
++BUILD_DIR_DEBUG = $(abspath $(BUILD_DIR)/../build-debug)
++BUILD_DIR_TEST = $(abspath $(BUILD_DIR)/../build-test)
++BUILD_DIR_COVERAGE = $(abspath $(BUILD_DIR)/../build-coverage)
++
++# Output directory variable for use in pattern rules.
++# This is intended for internal use only, hence the explicit override
++# definition.
++override OUTPUT_DIR = $(BUILD_DIR)
++
++# Final install directory for widgets
++DEST = $(OUTPUT_DIR)
++
++# Default build type for release/test builds
++BUILD_TYPE = RELEASE
++
++.PHONY: all help update install distclean
++.PHONY: clean clean-release clean-debug clean-test clean-coverage clean-all
++.PHONY: configure configure-release configure-debug configure-test configure-coverage
++.PHONY: build build-release build-debug build-test build-coverage build-all
++.PHONY: package package-release package-debug package-test package-coverage package-all
++
++help:
++ @echo "List of targets available:"
++ @echo ""
++ @echo "- all"
++ @echo "- help"
++ @echo "- clean"
++ @echo "- distclean"
++ @echo "- configure"
++ @echo "- build: compilation, link and prepare files for package into a widget"
++ @echo "- package: output a widget file '*.wgt'"
++ @echo "- install: install in your $(CMAKE_INSTALL_DIR) directory"
++ @echo ""
++ @echo "Usage: ./autobuild/agl/autobuild package DEST=${HOME}/opt"
++ @echo "Don't use your build dir as DEST as wgt file is generated at this location"
++
++all: package-all
++
++# Target specific variable over-rides so static pattern rules can be
++# used for the various type-specific targets.
++
++configure-test build-test package-test clean-test: OUTPUT_DIR = $(BUILD_DIR_TEST)
++
++configure-coverage build-coverage package-coverage clean-coverage: OUTPUT_DIR = $(BUILD_DIR_COVERAGE)
++configure-coverage build-coverage package-coverage: BUILD_TYPE = COVERAGE
++
++configure-debug build-debug package-debug clean-debug: OUTPUT_DIR = $(BUILD_DIR_DEBUG)
++configure-debug build-debug package-debug: BUILD_TYPE = DEBUG
++
++clean-release clean-test clean-debug clean-coverage:
++ @if [ -d $(OUTPUT_DIR) ]; then \
++ $(MAKE) -C $(OUTPUT_DIR) $(CLEAN_ARGS) clean; \
++ else \
++ echo Nothing to clean; \
++ fi
++
++clean: clean-release
++
++clean-all: clean-release clean-test clean-debug clean-coverage
++
++distclean: clean-all
++
++configure-release configure-test configure-debug configure-coverage:
++ @mkdir -p $(OUTPUT_DIR)
++ @if [ ! -f $(OUTPUT_DIR)/Makefile ]; then \
++ (cd $(OUTPUT_DIR) && cmake -S $(ROOT_DIR) -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) $(CONFIGURE_ARGS)); \
++ fi
++
++configure: configure-release
++
++build-release build-debug build-coverage: build-%: configure-%
++ @cmake --build $(OUTPUT_DIR) $(BUILD_ARGS) --target all
++
++# Kept for consistency, empty to avoid building everything for test widget
++build-test: configure-test
++
++build: build-release
++
++build-all: build-release build-debug build-test build-coverage
++
++package-release package-debug package-coverage: package-%: build-%
++ @cmake --build $(OUTPUT_DIR) $(PACKAGE_ARGS) --target widget
++ @if [ "$(abspath $(DEST))" != "$(abspath $(OUTPUT_DIR))" ]; then \
++ mkdir -p $(DEST) && cp $(OUTPUT_DIR)/*.wgt $(DEST); \
++ fi
++
++package-test: build-test
++ @cmake --build $(OUTPUT_DIR) $(PACKAGE_ARGS) --target test_widget
++ @if [ "$(abspath $(DEST))" != "$(abspath $(OUTPUT_DIR))" ]; then \
++ mkdir -p $(DEST) && cp $(OUTPUT_DIR)/*.wgt $(DEST); \
++ fi
++
++package: package-release
++
++package-all: package-release package-test package-coverage package-debug
++
++update: configure
++ @cmake --build $(BUILD_DIR) --target autobuild
++
++install: build
++ @cmake --build $(BUILD_DIR) $(INSTALL_ARGS) --target install
diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service_git.bb b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service_git.bb
index f0211552..abae3dec 100644
--- a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service_git.bb
+++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-apis/alexa-voiceagent-service/alexa-voiceagent-service_git.bb
@@ -28,6 +28,7 @@ SRC_URI = "git://github.com/alexa/alexa-auto-sdk.git;protocol=https;branch=2.0 \
file://0004-update-config-and-database-paths.patch \
file://0005-fix-segmentation-fault-for-release-build-mode.patch \
file://0006-fix-event-argument-json.patch \
+ file://0007-add-autobuild-scripts.patch \
"
SRCREV = "86916d2d8c1702a8be3c88a9012ca56583bcc0c8"
diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-enable-building-with-g++-9.patch b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-enable-building-with-g++-9.patch
new file mode 100644
index 00000000..0e4f14fd
--- /dev/null
+++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk/0001-enable-building-with-g++-9.patch
@@ -0,0 +1,24 @@
+Enable building with g++ 9.x
+
+Disable -Werror for new warning "deprecated-copy" to avoid build
+failure in the packaged copy of googletest with g++ 9.x. This is
+hopefully temporary until googletest is upgraded or it becomes
+straightforward to build against an externally provided copy.
+
+Upstream-Status: pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+diff --git a/ThirdParty/googletest-release-1.8.0/googletest/cmake/internal_utils.cmake b/ThirdParty/googletest-release-1.8.0/googletest/cmake/internal_utils.cmake
+index 777b91e..7832f20 100644
+--- a/ThirdParty/googletest-release-1.8.0/googletest/cmake/internal_utils.cmake
++++ b/ThirdParty/googletest-release-1.8.0/googletest/cmake/internal_utils.cmake
+@@ -91,7 +91,7 @@ macro(config_compiler_and_linker)
+ set(cxx_no_exception_flags "-D_HAS_EXCEPTIONS=0")
+ set(cxx_no_rtti_flags "-GR-")
+ elseif (CMAKE_COMPILER_IS_GNUCXX)
+- set(cxx_base_flags "-Wall -Wshadow")
++ set(cxx_base_flags "-Wall -Wshadow -Wno-error=deprecated-copy")
+ set(cxx_exception_flags "-fexceptions")
+ set(cxx_no_exception_flags "-fno-exceptions")
+ # Until version 4.3.2, GCC doesn't define a macro to indicate
diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk_1.13.bbappend b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk_1.13.bbappend
new file mode 100644
index 00000000..8afb91a9
--- /dev/null
+++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-avs/avs-device-sdk/avs-device-sdk_1.13.bbappend
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
+
+SRC_URI += "file://0001-enable-building-with-g++-9.patch"
diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend
deleted file mode 100644
index 43836942..00000000
--- a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend
+++ /dev/null
@@ -1,4 +0,0 @@
-RDEPENDS_${PN} += " \
- alexa-voiceagent-service \
- ${@bb.utils.contains("DISTRO_FEATURES", "agl-demo-preload", "virtual/alexa-voiceagent-config", "",d)} \
-"
diff --git a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-voiceagent-alexa.bb b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-voiceagent-alexa.bb
index 5f38e7ef..4b4016af 100644
--- a/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-voiceagent-alexa.bb
+++ b/meta-agl-devel/meta-speech-framework/meta-aac/recipes-platform/packagegroups/packagegroup-agl-voiceagent-alexa.bb
@@ -6,10 +6,9 @@ LICENSE = "MIT"
inherit packagegroup
PACKAGES = "\
- packagegroup-agl-voiceagent-alexa \
-"
+ packagegroup-agl-voiceagent-alexa \
+ "
-RDEPENDS_${PN} += " \
- alexa-voiceagent-service \
- ${@bb.utils.contains("DISTRO_FEATURES", "agl-demo-preload", "virtual/alexa-voiceagent-config", "",d)} \
-"
+RDEPENDS_${PN} = " \
+ alexa-voiceagent-service \
+ "
diff --git a/meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high-capabilities/agl-service-voice-high-capabilities_git.bb b/meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high-capabilities/agl-service-voice-high-capabilities_git.bb
index 6ab4da9c..0ab1f3d8 100644
--- a/meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high-capabilities/agl-service-voice-high-capabilities_git.bb
+++ b/meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high-capabilities/agl-service-voice-high-capabilities_git.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-voice-high-capabili
SECTION = "apps"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
DEPENDS = "libafb-helpers libappcontroller nlohmann-json"
diff --git a/meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high/agl-service-voice-high_git.bb b/meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high/agl-service-voice-high_git.bb
index b8ee77fd..b3c782bb 100644
--- a/meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high/agl-service-voice-high_git.bb
+++ b/meta-agl-devel/meta-speech-framework/recipes-apis/agl-service-voice-high/agl-service-voice-high_git.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/apps/agl-service-voice-hig
SECTION = "apps"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://License.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
DEPENDS = "json-c systemd af-binder libafb-helpers libappcontroller nlohmann-json glib-2.0"
@@ -16,3 +16,4 @@ S = "${WORKDIR}/git"
inherit cmake aglwgt
+RDEPENDS_${PN} += "virtual/voice-high-config"
diff --git a/meta-agl-devel/meta-speech-framework/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend b/meta-agl-devel/meta-speech-framework/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend
deleted file mode 100644
index 7e918671..00000000
--- a/meta-agl-devel/meta-speech-framework/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bbappend
+++ /dev/null
@@ -1,5 +0,0 @@
-RDEPENDS_${PN} += " \
- agl-service-voice-high \
- agl-service-voice-high-capabilities \
- ${PREFERRED_RPROVIDER_virtual/voice-high-config} \
-"
diff --git a/meta-agl-devel/meta-speech-framework/recipes-platform/packagegroups/packagegroup-agl-speech-services.bb b/meta-agl-devel/meta-speech-framework/recipes-platform/packagegroups/packagegroup-agl-speech-services.bb
new file mode 100644
index 00000000..8dd97f39
--- /dev/null
+++ b/meta-agl-devel/meta-speech-framework/recipes-platform/packagegroups/packagegroup-agl-speech-services.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "The set of packages for AGL Speech Subsystem"
+LICENSE = "MIT"
+
+inherit packagegroup
+
+PACKAGES = "\
+ packagegroup-agl-speech-services \
+ "
+
+RDEPENDS_${PN} += "\
+ agl-service-voice-high \
+ agl-service-voice-high-capabilities \
+ ${PREFERRED_RPROVIDER_virtual/voice-high-config} \
+"
diff --git a/meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/50_bblayers.conf.inc b/meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/50_bblayers.conf.inc
deleted file mode 100644
index 2ab00c61..00000000
--- a/meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/50_bblayers.conf.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-BBLAYERS =+ " \
- ${METADIR}/meta-agl-devel/meta-audio-soundmanager-framework \
- "
-
diff --git a/meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/50_local.conf.inc b/meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/50_local.conf.inc
deleted file mode 100644
index 70852b7d..00000000
--- a/meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/50_local.conf.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-DISTRO_FEATURES_append = " agl-audio-soundmanager-framework pulseaudio"
-IMAGE_INSTALL_append += "agl-service-audio-soundmanager pulseaudio-config-soundmanager audiomanager-plugins-config-soundmanager"
-
-PREFERRED_PROVIDER_virtual/audio-framework = "agl-service-audio-soundmanager"
-PREFERRED_RPROVIDER_virtual/pulseaudio-config = "pulseaudio-config-soundmanager"
-PREFERRED_RPROVIDER_virtual/audiomanager-plugins-config = "audiomanager-plugins-config-soundmanager"
diff --git a/meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/README_feature_agl-audio-soundmanager-framework.md b/meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/README_feature_agl-audio-soundmanager-framework.md
deleted file mode 100644
index 919c2a0a..00000000
--- a/meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/README_feature_agl-audio-soundmanager-framework.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: Feature agl-audio-soundmanager-framework
-authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org>, Kazumasa Mitsunari <knimitz@witz-inc.co.jp>, Ronan Le Martret <ronan.lemartret@iot.bzh>, Stephane Desneux <stephane.desneux@iot.bzh>
----
-
-### Feature agl-audio-soundmanager-framework
-
-*Description is missing - please complete file meta-agl-devel/templates/feature/agl-audio-soundmanager-framework/README_feature_agl-audio-soundmanager-framework.md*
-
diff --git a/meta-agl-devel/templates/feature/agl-gstrecorder/50_bblayers.conf.inc b/meta-agl-devel/templates/feature/agl-gstrecorder/50_bblayers.conf.inc
deleted file mode 100644
index 72160da4..00000000
--- a/meta-agl-devel/templates/feature/agl-gstrecorder/50_bblayers.conf.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-BBLAYERS =+ " \
- ${METADIR}/meta-agl-devel/meta-gstrecorder-rcar-gen3 \
- "
-
diff --git a/meta-agl-devel/templates/feature/agl-gstrecorder/50_local.conf.inc b/meta-agl-devel/templates/feature/agl-gstrecorder/50_local.conf.inc
deleted file mode 100644
index 54fedd6c..00000000
--- a/meta-agl-devel/templates/feature/agl-gstrecorder/50_local.conf.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-#see meta-agl-devel/meta-gstrecorder-rcar-gen3/conf/include/agl_gstrecorder.inc
-require conf/include/agl_gstrecorder.inc
-
diff --git a/meta-agl-devel/templates/feature/agl-gstrecorder/50_setupwarning.sh b/meta-agl-devel/templates/feature/agl-gstrecorder/50_setupwarning.sh
deleted file mode 100755
index ae6b1312..00000000
--- a/meta-agl-devel/templates/feature/agl-gstrecorder/50_setupwarning.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#Note to the user!
-
-echo "##################################"
-echo "# ATTENTION: the network between #"
-echo "# sender and receiver of the #"
-echo "# gstrecorder feed needs to be #"
-echo "# configured or #"
-echo "# WESTON WILL FAIL TO START ! #"
-echo "# #"
-echo "# (hint: 192.168.20.x) #"
-echo "##################################"
-
-sleep 2
-
diff --git a/meta-agl-devel/templates/feature/agl-gstrecorder/README_feature_agl-gstrecorder.md b/meta-agl-devel/templates/feature/agl-gstrecorder/README_feature_agl-gstrecorder.md
deleted file mode 100644
index 39617bb9..00000000
--- a/meta-agl-devel/templates/feature/agl-gstrecorder/README_feature_agl-gstrecorder.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: Feature agl-gstrecorder
-authors: Harunobu Kurokawa <harunobu.kurokawa.dn@renesas.com>, Jan-Simon Möller <jsmoeller@linuxfoundation.org>, Scott Murray <scott.murray@konsulko.com>, Stephane Desneux <stephane.desneux@iot.bzh>
----
-
-### Feature agl-gstrecorder
-
-*Description is missing - please complete file meta-agl-devel/templates/feature/agl-gstrecorder/README_feature_agl-gstrecorder.md*
-
diff --git a/meta-agl-devel/templates/feature/agl-jailhouse/50_bblayers.conf.inc b/meta-agl-devel/templates/feature/agl-jailhouse/50_bblayers.conf.inc
new file mode 100644
index 00000000..d3ed39d5
--- /dev/null
+++ b/meta-agl-devel/templates/feature/agl-jailhouse/50_bblayers.conf.inc
@@ -0,0 +1,7 @@
+BBLAYERS =+ " \
+ ${METADIR}/meta-agl-devel/meta-agl-jailhouse \
+ ${METADIR}/bsp/meta-arm/meta-arm \
+"
+
+# Up-to-date meta-arm depends on meta-arm-toolchain
+#BBLAYERS =+ "${METADIR}/bsp/meta-arm/meta-arm-toolchain"
diff --git a/meta-agl-devel/templates/feature/agl-jailhouse/50_local.conf.inc b/meta-agl-devel/templates/feature/agl-jailhouse/50_local.conf.inc
new file mode 100644
index 00000000..565f9618
--- /dev/null
+++ b/meta-agl-devel/templates/feature/agl-jailhouse/50_local.conf.inc
@@ -0,0 +1,26 @@
+#### JAILHOUSE
+IMAGE_INSTALL_append = " jailhouse jailhouse-demos"
+PREFERRED_VERSION_linux-raspberrypi = "5.4%"
+
+RPI_KERNEL_DEVICETREE_OVERLAYS_append = " overlays/jailhouse-memory.dtbo"
+
+#Qemu Boot Config
+# qemu flags for jailhouse
+QB_OPT_APPEND_append = " -device intel-iommu,intremap=on,x-buggy-eim=on -device intel-hda,addr=1b.0 -device hda-duplex"
+QB_MEM = "-m 1G"
+
+# use override with higher priority than x86-64
+QB_MACHINE_qemux86-64 = "-machine q35,kernel_irqchip=split -smp 4"
+QB_CPU_qemux86-64 = "-enable-kvm"
+QB_CPU_KVM_qemux86-64 = "-cpu host,-kvm-pv-eoi,-kvm-pv-ipi,-kvm-asyncpf,-kvm-steal-time,-kvmclock,-invpcid,-hypervisor"
+
+QB_KERNEL_CMDLINE_APPEND_append = " intel_iommu=off memmap=82M\$0x22000000"
+
+QB_KERNEL_ROOT = "/dev/vda"
+QB_SERIAL_OPT = "-serial none -serial stdio -serial telnet:localhost:4321,server,nowait"
+
+
+# jailhouse needs ttyS1 in the agl-qemu.cell as debug console.
+# restrict the SERIAL_CONSOLES to ttyS0 only
+SERIAL_CONSOLES = "115200;ttyS0"
+KERNEL_CONSOLE = "ttyS0" \ No newline at end of file
diff --git a/meta-agl-devel/templates/feature/agl-oem-extra-libs/50_bblayers.conf.inc b/meta-agl-devel/templates/feature/agl-oem-extra-libs/50_bblayers.conf.inc
deleted file mode 100644
index 2443ecd1..00000000
--- a/meta-agl-devel/templates/feature/agl-oem-extra-libs/50_bblayers.conf.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-BBLAYERS =+ " \
- ${METADIR}/meta-agl-devel/meta-oem-extra-libs \
- ${METADIR}/external/meta-openembedded/meta-filesystems \
- "
-
diff --git a/meta-agl-devel/templates/feature/agl-oem-extra-libs/README_feature_agl-oem-extra-libs.md b/meta-agl-devel/templates/feature/agl-oem-extra-libs/README_feature_agl-oem-extra-libs.md
deleted file mode 100644
index 8ff5850c..00000000
--- a/meta-agl-devel/templates/feature/agl-oem-extra-libs/README_feature_agl-oem-extra-libs.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: Feature agl-oem-extra-libs
-authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org>, Stephane Desneux <stephane.desneux@iot.bzh>, tte_zheng_wenlong <wenlong_zheng_za@mail.toyota.co.jp>
----
-
-### Feature agl-oem-extra-libs
-
-*Description is missing - please complete file meta-agl-devel/templates/feature/agl-oem-extra-libs/README_feature_agl-oem-extra-libs.md*
-
diff --git a/meta-agl-devel/templates/feature/agl-pipewire/50_bblayers.conf.inc b/meta-agl-devel/templates/feature/agl-pipewire/50_bblayers.conf.inc
deleted file mode 100644
index 8a6baaa2..00000000
--- a/meta-agl-devel/templates/feature/agl-pipewire/50_bblayers.conf.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-BBLAYERS =+ " \
- ${METADIR}/meta-agl-devel/meta-pipewire \
- "
-
diff --git a/meta-agl-devel/templates/feature/agl-pipewire/50_local.conf.inc b/meta-agl-devel/templates/feature/agl-pipewire/50_local.conf.inc
deleted file mode 100644
index 33838b08..00000000
--- a/meta-agl-devel/templates/feature/agl-pipewire/50_local.conf.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-#see meta-agl-devel/meta-pipewire/conf/include/agl-pipewire.inc
-require conf/include/agl-pipewire.inc
diff --git a/meta-agl-devel/templates/feature/agl-pipewire/README_feature_agl-pipewire.md b/meta-agl-devel/templates/feature/agl-pipewire/README_feature_agl-pipewire.md
deleted file mode 100644
index 55e1931c..00000000
--- a/meta-agl-devel/templates/feature/agl-pipewire/README_feature_agl-pipewire.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: Feature agl-pipewire
-authors: George Kiagiadakis <george.kiagiadakis@collabora.com>
----
-
-### Feature agl-pipewire
-
-*Description is missing - please complete file meta-agl-devel/templates/feature/agl-pipewire/README_feature_agl-pipewire.md*
-
diff --git a/meta-agl-devel/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc b/meta-agl-devel/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc
deleted file mode 100644
index a7e9da1d..00000000
--- a/meta-agl-devel/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-BBLAYERS =+ " \
- ${METADIR}/meta-agl-devel/meta-agl-profile-graphical-html5 \
- "
-
diff --git a/meta-agl-devel/templates/feature/agl-profile-graphical-html5/50_local.conf.inc b/meta-agl-devel/templates/feature/agl-profile-graphical-html5/50_local.conf.inc
deleted file mode 100644
index 0b2d7002..00000000
--- a/meta-agl-devel/templates/feature/agl-profile-graphical-html5/50_local.conf.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-
-IMAGE_INSTALL_append = " packagegroup-agl-profile-graphical-html5"
-
diff --git a/meta-agl-devel/templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md b/meta-agl-devel/templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md
deleted file mode 100644
index dc00f94c..00000000
--- a/meta-agl-devel/templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-description: Feature agl-profile-graphical-html5
-authors: Jacobo Aragunde Pérez <jaragunde@igalia.com>
----
-
-### Feature agl-profile-graphical-html5
-
-Packages required to run web applications in AGL. The provided image agl-image-graphical-html5 includes the minimum set of packages required for this purpose.
diff --git a/meta-agl-devel/templates/feature/agl-profile-graphical-html5/included.dep b/meta-agl-devel/templates/feature/agl-profile-graphical-html5/included.dep
deleted file mode 100644
index 032609b8..00000000
--- a/meta-agl-devel/templates/feature/agl-profile-graphical-html5/included.dep
+++ /dev/null
@@ -1 +0,0 @@
-agl-profile-graphical
diff --git a/meta-agl-devel/templates/feature/agl-voiceagent-alexa/50_bblayers.conf.inc b/meta-agl-devel/templates/feature/agl-voiceagent-alexa/50_bblayers.conf.inc
index 2397a1d7..dc6c1f6e 100644
--- a/meta-agl-devel/templates/feature/agl-voiceagent-alexa/50_bblayers.conf.inc
+++ b/meta-agl-devel/templates/feature/agl-voiceagent-alexa/50_bblayers.conf.inc
@@ -8,3 +8,7 @@ BBFILES += "${METADIR}/external/alexa-auto-sdk/modules/*/*.bb"
# Include the recipe for the required gstreamer module as well
BBFILES += "${METADIR}/external/alexa-auto-sdk/extensions/experimental/gstreamer/modules/*/*.bb"
+
+# For now, tweak the layer's compatibility to allow using with zeus,
+# since we know it works without major issues.
+LAYERSERIES_COMPAT_aac_append = " dunfell" \ No newline at end of file