diff options
15 files changed, 659 insertions, 37 deletions
diff --git a/b2qt-init-build-env b/b2qt-init-build-env index f32900df..8541c726 100755 --- a/b2qt-init-build-env +++ b/b2qt-init-build-env @@ -104,9 +104,12 @@ get_groups() { tibidabo) PROJECT_GROUPS="architech" ;; - beaglebone|beagleboard|am335x-evm) + beagleboard|am335x-evm) PROJECT_GROUPS="ti" ;; + beaglebone) + PROJECT_GROUPS="bbb" + ;; raspberrypi|raspberrypi2|raspberrypi3) PROJECT_GROUPS="rpi" ;; diff --git a/conf/bblayers.conf.bbb.sample b/conf/bblayers.conf.bbb.sample new file mode 100644 index 00000000..2fc15013 --- /dev/null +++ b/conf/bblayers.conf.bbb.sample @@ -0,0 +1,50 @@ +############################################################################## +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Boot to Qt meta layer. +## +## $QT_BEGIN_LICENSE:COMM$ +## +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see http://www.qt.io/terms-conditions. For further +## information use the contact form at http://www.qt.io/contact-us. +## +## $QT_END_LICENSE$ +## +############################################################################## + +# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +LCONF_VERSION = "6" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" +BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}" + +BBLAYERS ?= " \ + ${BSPDIR}/sources/poky/meta \ + ${BSPDIR}/sources/poky/meta-yocto \ + ${BSPDIR}/sources/meta-beagleboard/common-bsp \ + ${BSPDIR}/sources/meta-ti \ + ${BSPDIR}/sources/meta-fsl-arm \ + ${BSPDIR}/sources/meta-openembedded/meta-oe \ + ${BSPDIR}/sources/meta-openembedded/meta-python \ + ${BSPDIR}/sources/meta-openembedded/meta-networking \ + ${BSPDIR}/sources/meta-openembedded/meta-initramfs \ + ${BSPDIR}/sources/meta-openembedded/meta-multimedia \ + ${BSPDIR}/sources/meta-b2qt \ + ${BSPDIR}/sources/meta-b2qt/meta-ti-extras \ + ${BSPDIR}/sources/meta-b2qt/meta-beagleboard-extras \ + ${BSPDIR}/sources/meta-mingw \ + ${BSPDIR}/sources/meta-qt5 \ + " +BBLAYERS_NON_REMOVABLE ?= " \ + ${BSPDIR}/sources/poky/meta \ + ${BSPDIR}/sources/poky/meta-yocto \ + " diff --git a/conf/distro/include/beaglebone.conf b/conf/distro/include/beaglebone.conf index 1627f37b..8a2c3e23 100644 --- a/conf/distro/include/beaglebone.conf +++ b/conf/distro/include/beaglebone.conf @@ -34,14 +34,17 @@ EXTRA_IMAGEDEPENDS += "u-boot-uenv-script" DISTRO_FEATURES_remove = "webengine" -PREFERRED_VERSION_linux-ti-staging = "3.14%" - -PREFERRED_VERSION_libgles-omap3 = "5.01.01.02" -PREFERRED_VERSION_omap3-sgx-modules = "5.01.01.02" +PREFERRED_VERSION_libgles-omap3 = "4.10.00.01" +PREFERRED_VERSION_omap3-sgx-modules = "4.10.00.01" PREFERRED_PROVIDER_virtual/egl = "libgles-omap3" PREFERRED_PROVIDER_virtual/libgles2 = "libgles-omap3" +PREFERRED_PROVIDER_u-boot = "u-boot" +EXTRA_IMAGEDEPENDS_remove = "u-boot-denx" +UBOOT_MACHINE = "am335x_boneblack_config" +KERNEL_IMAGETYPE = "zImage" + MACHINE_EXTRA_INSTALL = "\ libgles-omap3 \ libgles-omap3-rawdemos \ diff --git a/meta-ti-extras/recipes/powervr-drivers/omap3-sgx-modules_5.01.01.02.bbappend b/meta-beagleboard-extras/conf/layer.conf index 0fad0306..1f7639f6 100644 --- a/meta-ti-extras/recipes/powervr-drivers/omap3-sgx-modules_5.01.01.02.bbappend +++ b/meta-beagleboard-extras/conf/layer.conf @@ -19,5 +19,14 @@ ## ############################################################################## -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" -SRC_URI += "file://0001-Rename-omap_dss_device-output-to-src.patch" +# 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 += "b2qt_bb" +BBFILE_PATTERN_b2qt_bb := "^${LAYERDIR}/" +BBFILE_PRIORITY_b2qt_bb = "20" diff --git a/meta-beagleboard-extras/recipes/linux/linux-mainline/0001-AM335x-Adding-SGX-DT-node.patch b/meta-beagleboard-extras/recipes/linux/linux-mainline/0001-AM335x-Adding-SGX-DT-node.patch new file mode 100755 index 00000000..97ce0009 --- /dev/null +++ b/meta-beagleboard-extras/recipes/linux/linux-mainline/0001-AM335x-Adding-SGX-DT-node.patch @@ -0,0 +1,34 @@ +From 1400fbf3e8e02eb1efd210a892a0d602061c7ca8 Mon Sep 17 00:00:00 2001 +From: Prathap M S <msprathap@ti.com> +Date: Mon, 2 Sep 2013 11:42:13 +0530 +Subject: [PATCH 1/3] AM335x : Adding SGX DT node + +This adds the SGX DT node for AM335x. + +Signed-off-by: Prathap M S <msprathap@ti.com> +--- + arch/arm/boot/dts/am33xx.dtsi | 8 ++++++++ + 1 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi +index 17e0da8..74c6e41 100644 +--- a/arch/arm/boot/dts/am33xx.dtsi ++++ b/arch/arm/boot/dts/am33xx.dtsi +@@ -96,6 +96,14 @@ + reg = <0x48200000 0x1000>; + }; + ++ sgx@0x56000000 { ++ compatible = "ti,sgx"; ++ ti,hwmods = "gfx"; ++ clock-frequency = <200000000>; ++ reg = <0x56000000 0x1000000>; ++ interrupts = <37>; ++ }; ++ + edma: edma@49000000 { + compatible = "ti,edma3"; + ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2"; +-- +1.7.1 + diff --git a/meta-beagleboard-extras/recipes/linux/linux-mainline/0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch b/meta-beagleboard-extras/recipes/linux/linux-mainline/0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch new file mode 100755 index 00000000..05672d3a --- /dev/null +++ b/meta-beagleboard-extras/recipes/linux/linux-mainline/0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch @@ -0,0 +1,121 @@ +From 4179cd27a2caa23688646e043e2872e89c9a7bc7 Mon Sep 17 00:00:00 2001 +From: Prathap M S <msprathap@ti.com> +Date: Mon, 2 Sep 2013 11:52:03 +0530 +Subject: [PATCH 2/3] AM33XX : Invoke hwmod deassert for SGX(graphics device) + +By default reset is asserted for SGX. +Adding gpu.c file introducing omap_sgx_init_of() for deasserting SGX reset. +This calls omap_device_deassert_hardreset() for deasserting the reset for SGX. + +Signed-off-by: Prathap M S <msprathap@ti.com> +--- + arch/arm/mach-omap2/Makefile | 2 +- + arch/arm/mach-omap2/board-generic.c | 4 +++ + arch/arm/mach-omap2/common.h | 1 + + arch/arm/mach-omap2/gpu.c | 48 +++++++++++++++++++++++++++++++++++ + 4 files changed, 54 insertions(+), 1 deletions(-) + create mode 100644 arch/arm/mach-omap2/gpu.c + +diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile +index d4f6715..b65cc56 100644 +--- a/arch/arm/mach-omap2/Makefile ++++ b/arch/arm/mach-omap2/Makefile +@@ -8,7 +8,7 @@ ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ + # Common support + obj-y := id.o io.o control.o mux.o devices.o fb.o serial.o gpmc.o timer.o pm.o \ + common.o gpio.o dma.o wd_timer.o display.o i2c.o hdq1w.o omap_hwmod.o \ +- omap_device.o sram.o ++ omap_device.o sram.o gpu.o + + omap-2-3-common = irq.o + hwmod-common = omap_hwmod.o omap_hwmod_reset.o \ +diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c +index be5d005..e2b3981 100644 +--- a/arch/arm/mach-omap2/board-generic.c ++++ b/arch/arm/mach-omap2/board-generic.c +@@ -22,6 +22,7 @@ + #include "common.h" + #include "common-board-devices.h" + #include "dss-common.h" ++#include "soc.h" + + #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)) + #define intc_of_init NULL +@@ -50,6 +50,8 @@ static void __init omap_generic_init(void) + omap4_panda_display_init_of(); + else if (of_machine_is_compatible("ti,omap4-sdp")) + omap_4430sdp_display_init_of(); ++ if (omap3_has_sgx()) ++ omap_sgx_init_of(); + } + + #ifdef CONFIG_SOC_OMAP2420 +diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h +index dfcc182..7d2f04e 100644 +--- a/arch/arm/mach-omap2/common.h ++++ b/arch/arm/mach-omap2/common.h +@@ -296,6 +296,7 @@ extern void omap_reserve(void); + + struct omap_hwmod; + extern int omap_dss_reset(struct omap_hwmod *); ++void __init omap_sgx_init_of(void); + + /* SoC specific clock initializer */ + extern int (*omap_clk_init)(void); +diff --git a/arch/arm/mach-omap2/gpu.c b/arch/arm/mach-omap2/gpu.c +new file mode 100644 +index 0000000..98a66cf +--- /dev/null ++++ b/arch/arm/mach-omap2/gpu.c +@@ -0,0 +1,48 @@ ++/* ++ * Deassert reset for AM33xx graphics device(SGX) hwmod ++ * ++ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ ++ * Prathap MS <msprathap@ti.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 version 2. ++ * ++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any ++ * kind, whether express or implied; without even the implied warranty ++ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++#include <linux/of_platform.h> ++#include "omap_device.h" ++ ++void __init omap_sgx_init_of(void) ++{ ++ struct device_node *node; ++ struct platform_device *pdev; ++ int ret = 0; ++ node = of_find_compatible_node(NULL, NULL, "ti,sgx"); ++ if (!node) ++ return; ++ pdev = of_find_device_by_node(node); ++ if (!pdev) { ++ pr_warn("of_find_device_by_node() failed for sgx\n"); ++ return; ++ } ++ ret = omap_device_deassert_hardreset(pdev, "gfx"); ++ if (ret != 0) ++ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n"); ++ ++ node = of_find_compatible_node(NULL, NULL, "ti,am335x-timer"); ++ if (!node) ++ return; ++ pdev = of_find_device_by_node(node); ++ if (!pdev) { ++ pr_warn("of_find_device_by_node() failed for sgx\n"); ++ return; ++ } ++ ret = omap_device_deassert_hardreset(pdev, "timer7"); ++ if (ret != 0) ++ pr_warn("omap_device_deassert_hardreset() failed for sgx(gfx hwmod)\n"); ++} ++ +-- +1.7.1 + diff --git a/meta-beagleboard-extras/recipes/linux/linux-mainline/0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch b/meta-beagleboard-extras/recipes/linux/linux-mainline/0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch new file mode 100755 index 00000000..c4259825 --- /dev/null +++ b/meta-beagleboard-extras/recipes/linux/linux-mainline/0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch @@ -0,0 +1,97 @@ +From 0f4e7d4b7d7314b38a9fd3497d7d4e0c36d19bff Mon Sep 17 00:00:00 2001 +From: Prathap M S <msprathap@ti.com> +Date: Mon, 2 Sep 2013 12:05:23 +0530 +Subject: [PATCH 3/3] video: da8xx-fb: Add API to register wait for vsync callback + +This patch adds APIs to register and unregister wait for vsync callback. +This is derived from commit id 2d44302545da24fd22912d964102bc31a7489e97 +This commit id was part of 3.2 kernel sources. + +Signed-off-by: Prathap M S <msprathap@ti.com> +--- + drivers/video/da8xx-fb.c | 33 +++++++++++++++++++++++++++++++++ + include/video/da8xx-fb.h | 4 ++++ + 2 files changed, 37 insertions(+), 0 deletions(-) + +diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c +index 131cf4c..ef06b85 100644 +--- a/drivers/video/da8xx-fb.c ++++ b/drivers/video/da8xx-fb.c +@@ -199,6 +199,9 @@ static struct fb_fix_screeninfo da8xx_fb_fix = { + .accel = FB_ACCEL_NONE + }; + ++static vsync_callback_t vsync_cb_handler; ++static void *vsync_cb_arg; ++ + static struct fb_videomode known_lcd_panels[] = { + /* Sharp LCD035Q3DG01 */ + [0] = { +@@ -806,6 +809,32 @@ static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg, + return 0; + } + ++int register_vsync_cb(vsync_callback_t handler, void *arg, int idx) ++{ ++ if ((vsync_cb_handler == NULL) && (vsync_cb_arg == NULL)) { ++ vsync_cb_arg = arg; ++ vsync_cb_handler = handler; ++ } else { ++ return -EEXIST; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL(register_vsync_cb); ++ ++int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx) ++{ ++ if ((vsync_cb_handler == handler) && (vsync_cb_arg == arg)) { ++ vsync_cb_handler = NULL; ++ vsync_cb_arg = NULL; ++ } else { ++ return -ENXIO; ++ } ++ ++ return 0; ++} ++EXPORT_SYMBOL(unregister_vsync_cb); ++ + /* IRQ handler for version 2 of LCDC */ + static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg) + { +@@ -843,6 +872,8 @@ static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg) + LCD_DMA_FRM_BUF_CEILING_ADDR_0_REG); + par->vsync_flag = 1; + wake_up_interruptible(&par->vsync_wait); ++ if (vsync_cb_handler) ++ vsync_cb_handler(vsync_cb_arg); + } + + if (stat & LCD_END_OF_FRAME1) { +@@ -918,6 +949,8 @@ static irqreturn_t lcdc_irq_handler_rev01(int irq, void *arg) + LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG); + par->vsync_flag = 1; + wake_up_interruptible(&par->vsync_wait); ++ if (vsync_cb_handler) ++ vsync_cb_handler(vsync_cb_arg); + } + } + +diff --git a/include/video/da8xx-fb.h b/include/video/da8xx-fb.h +index efed3c3..a6cc484 100644 +--- a/include/video/da8xx-fb.h ++++ b/include/video/da8xx-fb.h +@@ -91,5 +91,9 @@ struct lcd_sync_arg { + /* Proprietary FB_SYNC_ flags */ + #define FB_SYNC_CLK_INVERT 0x40000000 + ++typedef void (*vsync_callback_t)(void *arg); ++int register_vsync_cb(vsync_callback_t handler, void *arg, int idx); ++int unregister_vsync_cb(vsync_callback_t handler, void *arg, int idx); ++ + #endif /* ifndef DA8XX_FB_H */ + +-- +1.7.1 + diff --git a/meta-beagleboard-extras/recipes/linux/linux-mainline/ARM-perf-add-support-for-perf-registers-API.diff b/meta-beagleboard-extras/recipes/linux/linux-mainline/ARM-perf-add-support-for-perf-registers-API.diff new file mode 100644 index 00000000..13b251ae --- /dev/null +++ b/meta-beagleboard-extras/recipes/linux/linux-mainline/ARM-perf-add-support-for-perf-registers-API.diff @@ -0,0 +1,128 @@ +From 8221f36672b7a1336c2bf245c394f0b5453784a1 Mon Sep 17 00:00:00 2001 +From: Will Deacon <will.deacon@arm.com> +Date: Thu, 26 Sep 2013 12:36:35 +0100 +Subject: [PATCH] ARM: perf: add support for perf registers API + +This patch implements the functions required for the perf registers API, +allowing the perf tool to interface kernel register dumps with libunwind +in order to provide userspace backtracing. + +B2Qt: Backported for 3.8 kernel + +Cc: Jean Pihet <jean.pihet@linaro.org> +Signed-off-by: Will Deacon <will.deacon@arm.com> +--- + arch/arm/Kconfig | 2 ++ + arch/arm/include/uapi/asm/Kbuild | 1 + + arch/arm/include/uapi/asm/perf_regs.h | 23 +++++++++++++++++++++++ + arch/arm/kernel/Makefile | 1 + + arch/arm/kernel/perf_regs.c | 30 ++++++++++++++++++++++++++++++ + 5 files changed, 57 insertions(+) + create mode 100644 arch/arm/include/uapi/asm/perf_regs.h + create mode 100644 arch/arm/kernel/perf_regs.c + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index 67874b8..6f630be 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -46,6 +46,8 @@ config ARM + select HAVE_MEMBLOCK + select HAVE_OPROFILE if (HAVE_PERF_EVENTS) + select HAVE_PERF_EVENTS ++ select HAVE_PERF_REGS ++ select HAVE_PERF_USER_STACK_DUMP + select HAVE_REGS_AND_STACK_ACCESS_API + select HAVE_SYSCALL_TRACEPOINTS + select HAVE_UID16 +diff --git a/arch/arm/include/uapi/asm/Kbuild b/arch/arm/include/uapi/asm/Kbuild +index 47bcb2d..570b82f 100644 +--- a/arch/arm/include/uapi/asm/Kbuild ++++ b/arch/arm/include/uapi/asm/Kbuild +@@ -8,6 +8,7 @@ header-y += hwcap.h + header-y += ioctls.h + header-y += kvm_para.h + header-y += mman.h ++header-y += perf_regs.h + header-y += posix_types.h + header-y += ptrace.h + header-y += setup.h +diff --git a/arch/arm/include/uapi/asm/perf_regs.h b/arch/arm/include/uapi/asm/perf_regs.h +new file mode 100644 +index 0000000..ce59448 +--- /dev/null ++++ b/arch/arm/include/uapi/asm/perf_regs.h +@@ -0,0 +1,23 @@ ++#ifndef _ASM_ARM_PERF_REGS_H ++#define _ASM_ARM_PERF_REGS_H ++ ++enum perf_event_arm_regs { ++ PERF_REG_ARM_R0, ++ PERF_REG_ARM_R1, ++ PERF_REG_ARM_R2, ++ PERF_REG_ARM_R3, ++ PERF_REG_ARM_R4, ++ PERF_REG_ARM_R5, ++ PERF_REG_ARM_R6, ++ PERF_REG_ARM_R7, ++ PERF_REG_ARM_R8, ++ PERF_REG_ARM_R9, ++ PERF_REG_ARM_R10, ++ PERF_REG_ARM_FP, ++ PERF_REG_ARM_IP, ++ PERF_REG_ARM_SP, ++ PERF_REG_ARM_LR, ++ PERF_REG_ARM_PC, ++ PERF_REG_ARM_MAX, ++}; ++#endif /* _ASM_ARM_PERF_REGS_H */ +diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile +index 5bbec7b..c6ab18f 100644 +--- a/arch/arm/kernel/Makefile ++++ b/arch/arm/kernel/Makefile +@@ -69,6 +69,7 @@ obj-$(CONFIG_CPU_XSC3) += xscale-cp0.o + obj-$(CONFIG_CPU_MOHAWK) += xscale-cp0.o + obj-$(CONFIG_CPU_PJ4) += pj4-cp0.o + obj-$(CONFIG_IWMMXT) += iwmmxt.o ++obj-$(CONFIG_PERF_EVENTS) += perf_regs.o + obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o perf_event_cpu.o + AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt + obj-$(CONFIG_ARM_CPU_TOPOLOGY) += topology.o +diff --git a/arch/arm/kernel/perf_regs.c b/arch/arm/kernel/perf_regs.c +new file mode 100644 +index 0000000..6e4379c +--- /dev/null ++++ b/arch/arm/kernel/perf_regs.c +@@ -0,0 +1,30 @@ ++ ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/perf_event.h> ++#include <linux/bug.h> ++#include <asm/perf_regs.h> ++#include <asm/ptrace.h> ++ ++u64 perf_reg_value(struct pt_regs *regs, int idx) ++{ ++ if (WARN_ON_ONCE((u32)idx >= PERF_REG_ARM_MAX)) ++ return 0; ++ ++ return regs->uregs[idx]; ++} ++ ++#define REG_RESERVED (~((1ULL << PERF_REG_ARM_MAX) - 1)) ++ ++int perf_reg_validate(u64 mask) ++{ ++ if (!mask || mask & REG_RESERVED) ++ return -EINVAL; ++ ++ return 0; ++} ++ ++u64 perf_reg_abi(struct task_struct *task) ++{ ++ return PERF_SAMPLE_REGS_ABI_32; ++} +-- +1.9.1 + diff --git a/meta-beagleboard-extras/recipes/linux/linux-mainline/ARM-perf-wire-up-perf_regs-and-unwind-support-for-AR.patch b/meta-beagleboard-extras/recipes/linux/linux-mainline/ARM-perf-wire-up-perf_regs-and-unwind-support-for-AR.patch new file mode 100644 index 00000000..e3e8d21f --- /dev/null +++ b/meta-beagleboard-extras/recipes/linux/linux-mainline/ARM-perf-wire-up-perf_regs-and-unwind-support-for-AR.patch @@ -0,0 +1,163 @@ +From 26f603c457e0af9f5f6a0ddda66e69978c7f43b4 Mon Sep 17 00:00:00 2001 +From: Will Deacon <will.deacon@arm.com> +Date: Thu, 26 Sep 2013 12:36:36 +0100 +Subject: [PATCH] ARM: perf: wire up perf_regs and unwind support for ARM + +This patch hooks in the perf_regs and libunwind code for ARM. + +B2Qt: Backported for 3.8 kernel + +Cc: Jean Pihet <jean.pihet@linaro.org> +Signed-off-by: Will Deacon <will.deacon@arm.com> +--- + tools/perf/Makefile | 4 +++ + tools/perf/arch/arm/Makefile | 3 ++ + tools/perf/arch/arm/include/perf_regs.h | 54 +++++++++++++++++++++++++++++++++ + tools/perf/arch/arm/util/unwind.c | 48 +++++++++++++++++++++++++++++ + 4 files changed, 109 insertions(+) + create mode 100644 tools/perf/arch/arm/include/perf_regs.h + create mode 100644 tools/perf/arch/arm/util/unwind.c + +diff --git a/tools/perf/Makefile b/tools/perf/Makefile +index fb1b1c4..316c575 100644 +--- a/tools/perf/Makefile ++++ b/tools/perf/Makefile +@@ -84,6 +84,10 @@ ifeq ($(ARCH),x86_64) + NO_PERF_REGS := 0 + LIBUNWIND_LIBS = -lunwind -lunwind-x86_64 + endif ++ifeq ($(ARCH),arm) ++ NO_PERF_REGS := 0 ++ LIBUNWIND_LIBS = -lunwind -lunwind-arm ++endif + + # Treat warnings as errors unless directed not to + ifneq ($(WERROR),0) +diff --git a/tools/perf/arch/arm/Makefile b/tools/perf/arch/arm/Makefile +index 15130b5..fe9b61e 100644 +--- a/tools/perf/arch/arm/Makefile ++++ b/tools/perf/arch/arm/Makefile +@@ -2,3 +2,6 @@ ifndef NO_DWARF + PERF_HAVE_DWARF_REGS := 1 + LIB_OBJS += $(OUTPUT)arch/$(ARCH)/util/dwarf-regs.o + endif ++ifndef NO_LIBUNWIND ++LIB_OBJS += $(OUTPUT)arch/$(ARCH)/util/unwind.o ++endif +diff --git a/tools/perf/arch/arm/include/perf_regs.h b/tools/perf/arch/arm/include/perf_regs.h +new file mode 100644 +index 0000000..2a1cfde +--- /dev/null ++++ b/tools/perf/arch/arm/include/perf_regs.h +@@ -0,0 +1,54 @@ ++#ifndef ARCH_PERF_REGS_H ++#define ARCH_PERF_REGS_H ++ ++#include <stdlib.h> ++#include "../../util/types.h" ++#include <asm/perf_regs.h> ++ ++#define PERF_REGS_MASK ((1ULL << PERF_REG_ARM_MAX) - 1) ++#define PERF_REG_IP PERF_REG_ARM_PC ++#define PERF_REG_SP PERF_REG_ARM_SP ++ ++static inline const char *perf_reg_name(int id) ++{ ++ switch (id) { ++ case PERF_REG_ARM_R0: ++ return "r0"; ++ case PERF_REG_ARM_R1: ++ return "r1"; ++ case PERF_REG_ARM_R2: ++ return "r2"; ++ case PERF_REG_ARM_R3: ++ return "r3"; ++ case PERF_REG_ARM_R4: ++ return "r4"; ++ case PERF_REG_ARM_R5: ++ return "r5"; ++ case PERF_REG_ARM_R6: ++ return "r6"; ++ case PERF_REG_ARM_R7: ++ return "r7"; ++ case PERF_REG_ARM_R8: ++ return "r8"; ++ case PERF_REG_ARM_R9: ++ return "r9"; ++ case PERF_REG_ARM_R10: ++ return "r10"; ++ case PERF_REG_ARM_FP: ++ return "fp"; ++ case PERF_REG_ARM_IP: ++ return "ip"; ++ case PERF_REG_ARM_SP: ++ return "sp"; ++ case PERF_REG_ARM_LR: ++ return "lr"; ++ case PERF_REG_ARM_PC: ++ return "pc"; ++ default: ++ return NULL; ++ } ++ ++ return NULL; ++} ++ ++#endif /* ARCH_PERF_REGS_H */ +diff --git a/tools/perf/arch/arm/util/unwind.c b/tools/perf/arch/arm/util/unwind.c +new file mode 100644 +index 0000000..da3dc95 +--- /dev/null ++++ b/tools/perf/arch/arm/util/unwind.c +@@ -0,0 +1,48 @@ ++ ++#include <errno.h> ++#include <libunwind.h> ++#include "perf_regs.h" ++#include "../../util/unwind.h" ++ ++int unwind__arch_reg_id(int regnum) ++{ ++ switch (regnum) { ++ case UNW_ARM_R0: ++ return PERF_REG_ARM_R0; ++ case UNW_ARM_R1: ++ return PERF_REG_ARM_R1; ++ case UNW_ARM_R2: ++ return PERF_REG_ARM_R2; ++ case UNW_ARM_R3: ++ return PERF_REG_ARM_R3; ++ case UNW_ARM_R4: ++ return PERF_REG_ARM_R4; ++ case UNW_ARM_R5: ++ return PERF_REG_ARM_R5; ++ case UNW_ARM_R6: ++ return PERF_REG_ARM_R6; ++ case UNW_ARM_R7: ++ return PERF_REG_ARM_R7; ++ case UNW_ARM_R8: ++ return PERF_REG_ARM_R8; ++ case UNW_ARM_R9: ++ return PERF_REG_ARM_R9; ++ case UNW_ARM_R10: ++ return PERF_REG_ARM_R10; ++ case UNW_ARM_R11: ++ return PERF_REG_ARM_FP; ++ case UNW_ARM_R12: ++ return PERF_REG_ARM_IP; ++ case UNW_ARM_R13: ++ return PERF_REG_ARM_SP; ++ case UNW_ARM_R14: ++ return PERF_REG_ARM_LR; ++ case UNW_ARM_R15: ++ return PERF_REG_ARM_PC; ++ default: ++ pr_err("unwind: invalid reg id %d\n", regnum); ++ return -EINVAL; ++ } ++ ++ return -EINVAL; ++} +-- +1.9.1 + diff --git a/meta-beagleboard-extras/recipes/linux/linux-mainline_3.8.bbappend b/meta-beagleboard-extras/recipes/linux/linux-mainline_3.8.bbappend new file mode 100644 index 00000000..a945ea8c --- /dev/null +++ b/meta-beagleboard-extras/recipes/linux/linux-mainline_3.8.bbappend @@ -0,0 +1,40 @@ +############################################################################## +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the Boot to Qt meta layer. +## +## $QT_BEGIN_LICENSE:COMM$ +## +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see http://www.qt.io/terms-conditions. For further +## information use the contact form at http://www.qt.io/contact-us. +## +## $QT_END_LICENSE$ +## +############################################################################## + +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" +SRC_URI += "\ + file://0001-AM335x-Adding-SGX-DT-node.patch \ + file://0002-AM33XX-Invoke-hwmod-deassert-for-SGX-graphics-device.patch \ + file://0003-video-da8xx-fb-Add-API-to-register-wait-for-vsync-ca.patch \ + file://ARM-perf-add-support-for-perf-registers-API.diff \ + file://ARM-perf-wire-up-perf_regs-and-unwind-support-for-AR.patch \ + " + +INSANE_SKIP_${PN} = "installed-vs-shipped" +KERNEL_IMAGETYPE = "zImage" +B = "${S}" + +do_configure_prepend() { + sed -e '/CONFIG_USB_FUNCTIONFS_ETH=/d' \ + -e '/CONFIG_USB_FUNCTIONFS_RNDIS=/d' \ + -i ${WORKDIR}/defconfig + echo "CONFIG_FHANDLE=y" >> ${WORKDIR}/defconfig +} diff --git a/meta-ti-extras/recipes/u-boot/u-boot-uenv-script.bb b/meta-beagleboard-extras/recipes/u-boot/u-boot-uenv-script.bb index 56955611..56955611 100644 --- a/meta-ti-extras/recipes/u-boot/u-boot-uenv-script.bb +++ b/meta-beagleboard-extras/recipes/u-boot/u-boot-uenv-script.bb diff --git a/meta-ti-extras/recipes/u-boot/u-boot-uenv-script/uEnv.txt b/meta-beagleboard-extras/recipes/u-boot/u-boot-uenv-script/uEnv.txt index d41ef600..d41ef600 100644 --- a/meta-ti-extras/recipes/u-boot/u-boot-uenv-script/uEnv.txt +++ b/meta-beagleboard-extras/recipes/u-boot/u-boot-uenv-script/uEnv.txt diff --git a/meta-ti-extras/recipes/linux/linux-ti-staging_3.14.bbappend b/meta-ti-extras/recipes/linux/linux-ti-staging_3.14.bbappend index ee30872b..49f8f581 100644 --- a/meta-ti-extras/recipes/linux/linux-ti-staging_3.14.bbappend +++ b/meta-ti-extras/recipes/linux/linux-ti-staging_3.14.bbappend @@ -25,7 +25,3 @@ SRC_URI += "\ " KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/usb-serial.cfg" KERNEL_DEVICETREE_b2qt = "am335x-evm.dtb am335x-evmsk.dtb am335x-bone.dtb am335x-boneblack.dtb" - -KERNEL_GIT_URI = "git://github.com/beagleboard/linux" -BRANCH = "3.14" -SRCREV = "b36a2d5ca4e2859c92fac09ccedf4e42d620dda7" diff --git a/meta-ti-extras/recipes/powervr-drivers/omap3-sgx-modules/0001-Rename-omap_dss_device-output-to-src.patch b/meta-ti-extras/recipes/powervr-drivers/omap3-sgx-modules/0001-Rename-omap_dss_device-output-to-src.patch deleted file mode 100644 index 6b0b4c72..00000000 --- a/meta-ti-extras/recipes/powervr-drivers/omap3-sgx-modules/0001-Rename-omap_dss_device-output-to-src.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 643c4eb9f6e09f3b674990285da7fb1174d6f450 Mon Sep 17 00:00:00 2001 -From: Samuli Piippo <samuli.piippo@theqtcompany.com> -Date: Thu, 17 Mar 2016 11:58:40 +0200 -Subject: [PATCH] Rename omap_dss_device output to src - ---- - services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c b/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c -index 17bf181..ebacc51 100644 ---- a/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c -+++ b/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c -@@ -177,7 +177,7 @@ MODULE_SUPPORTED_DEVICE(DEVNAME); - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) - #define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->manager : NULL - #else --#define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->output->manager : NULL -+#define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->src->manager : NULL - #endif - - #define WAIT_FOR_VSYNC(man) ((man)->wait_for_vsync) --- -1.9.1 - diff --git a/scripts/setup-environment.sh b/scripts/setup-environment.sh index 7f0f5066..9e8c4d18 100755 --- a/scripts/setup-environment.sh +++ b/scripts/setup-environment.sh @@ -60,9 +60,12 @@ if [ ! -f ${PWD}/${BUILDDIRECTORY}/conf/bblayers.conf ]; then tibidabo) LAYERSCONF="bblayers.conf.tibidabo.sample" ;; - beaglebone|beagleboard|am335x-evm) + beagleboard|am335x-evm) LAYERSCONF="bblayers.conf.ti.sample" ;; + beaglebone) + LAYERSCONF="bblayers.conf.bbb.sample" + ;; raspberrypi|raspberrypi2|raspberrypi3) LAYERSCONF="bblayers.conf.rpi.sample" ;; |