From fb9ad0c920f5a4a1cae624f468df77c3dc1ccf2e Mon Sep 17 00:00:00 2001 From: Denys Dmytriyenko Date: Wed, 30 Jul 2014 07:35:12 +0000 Subject: [PATCH] linux-ti-staging: add Darren's SGX patches to make graphics work with 3.14 Signed-off-by: Denys Dmytriyenko Acked-by: Franklin Cooper Jr. --- .../linux/linux-ti-staging-3.14/sgx.cfg | 24 +++++ ...drm-fb_helper-enable-panning-support.patch | 51 ++++++++++ ...add-vsync-callback-for-use-in-omaplf.patch | 96 ++++++++++++++++++ ...he-ping-pong-dma-tearing-issue-seen-.patch | 97 +++++++++++++++++++ ...ata-quirks-for-sgx-deassert_hardrese.patch | 86 ++++++++++++++++ .../0005-ARM-dts-am437x-add-SGX-node.patch | 41 ++++++++ ...6-ARM-dts-am33xx-add-DT-node-for-gpu.patch | 42 ++++++++ recipes-kernel/linux/linux-ti-staging_3.14.bb | 20 +++- 8 files changed, 452 insertions(+), 5 deletions(-) create mode 100644 recipes-kernel/linux/linux-ti-staging-3.14/sgx.cfg create mode 100644 recipes-kernel/linux/linux-ti-staging-3.14/sgx/0001-HACK-drm-fb_helper-enable-panning-support.patch create mode 100644 recipes-kernel/linux/linux-ti-staging-3.14/sgx/0002-HACK-drm-tilcdc-add-vsync-callback-for-use-in-omaplf.patch create mode 100644 recipes-kernel/linux/linux-ti-staging-3.14/sgx/0003-drm-tilcdc-fix-the-ping-pong-dma-tearing-issue-seen-.patch create mode 100644 recipes-kernel/linux/linux-ti-staging-3.14/sgx/0004-ARM-OMAP2-Use-pdata-quirks-for-sgx-deassert_hardrese.patch create mode 100644 recipes-kernel/linux/linux-ti-staging-3.14/sgx/0005-ARM-dts-am437x-add-SGX-node.patch create mode 100644 recipes-kernel/linux/linux-ti-staging-3.14/sgx/0006-ARM-dts-am33xx-add-DT-node-for-gpu.patch diff --git a/recipes-kernel/linux/linux-ti-staging-3.14/sgx.cfg b/recipes-kernel/linux/linux-ti-staging-3.14/sgx.cfg new file mode 100644 index 00000000..02917798 --- /dev/null +++ b/recipes-kernel/linux/linux-ti-staging-3.14/sgx.cfg @@ -0,0 +1,24 @@ +################################################## +# SGX Graphics config options +################################################## +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_TI_ST=n +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=y +CONFIG_I2C_ALGOBIT=y +CONFIG_MFD_TPS65218=n +CONFIG_DRM=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_KMS_CMA_HELPER=y +CONFIG_DRM_I2C_NXP_TDA998X=y +CONFIG_DRM_TILCDC=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_HDMI=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_SND_DAVINCI_SOC=m +CONFIG_SND_SIMPLE_CARD=n diff --git a/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0001-HACK-drm-fb_helper-enable-panning-support.patch b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0001-HACK-drm-fb_helper-enable-panning-support.patch new file mode 100644 index 00000000..e760248f --- /dev/null +++ b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0001-HACK-drm-fb_helper-enable-panning-support.patch @@ -0,0 +1,51 @@ +From d9d8fea4c60b3a44e8660408eb9337413b108b15 Mon Sep 17 00:00:00 2001 +From: Darren Etheridge +Date: Thu, 24 Jul 2014 11:49:28 -0500 +Subject: [PATCH 1/6] HACK: drm/fb_helper: enable panning support + +Increase the size of the buffer that is created in the fbdev emulation +helpers. And fill in the var structure with the amount that was allocated. + +Signed-off-by: Darren Etheridge +--- + drivers/gpu/drm/drm_fb_cma_helper.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c +index 61b5a47..2e2c489 100644 +--- a/drivers/gpu/drm/drm_fb_cma_helper.c ++++ b/drivers/gpu/drm/drm_fb_cma_helper.c +@@ -25,6 +25,12 @@ + #include + #include + ++/* ++ * number of buffers to allocate from CMA pool, often increased for ++ * double/triple buffering ++ */ ++#define DRM_NUM_FBDEV_BUFFERS 3 ++ + struct drm_fb_cma { + struct drm_framebuffer fb; + struct drm_gem_cma_object *obj[4]; +@@ -265,7 +271,7 @@ static int drm_fbdev_cma_create(struct drm_fb_helper *helper, + bytes_per_pixel = DIV_ROUND_UP(sizes->surface_bpp, 8); + + mode_cmd.width = sizes->surface_width; +- mode_cmd.height = sizes->surface_height; ++ mode_cmd.height = sizes->surface_height * DRM_NUM_FBDEV_BUFFERS; + mode_cmd.pitches[0] = sizes->surface_width * bytes_per_pixel; + mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, + sizes->surface_depth); +@@ -304,7 +310,7 @@ static int drm_fbdev_cma_create(struct drm_fb_helper *helper, + } + + drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->depth); +- drm_fb_helper_fill_var(fbi, helper, fb->width, fb->height); ++ drm_fb_helper_fill_var(fbi, helper, fb->width, sizes->surface_height); + + offset = fbi->var.xoffset * bytes_per_pixel; + offset += fbi->var.yoffset * fb->pitches[0]; +-- +1.9.1 + diff --git a/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0002-HACK-drm-tilcdc-add-vsync-callback-for-use-in-omaplf.patch b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0002-HACK-drm-tilcdc-add-vsync-callback-for-use-in-omaplf.patch new file mode 100644 index 00000000..d1545086 --- /dev/null +++ b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0002-HACK-drm-tilcdc-add-vsync-callback-for-use-in-omaplf.patch @@ -0,0 +1,96 @@ +From eaf6ac95a81612250d6bd5e2ed9da41e52aac444 Mon Sep 17 00:00:00 2001 +From: Darren Etheridge +Date: Fri, 11 Jul 2014 09:15:25 -0500 +Subject: [PATCH 2/6] HACK: drm/tilcdc: add vsync callback for use in omaplfb + for gpu + +Add a vsync callback registration API that is identical to what was done +for da8xx-fb.c. + +Need to find if there is a better way using the DRM infrastructure from +kernel space. Either that or change the userspace window manager stuff in +the gpu libraries to make use of the DRM provided syncronization +mechanisms. + +Signed-off-by: Darren Etheridge +--- + drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 34 ++++++++++++++++++++++++++++++++++ + drivers/gpu/drm/tilcdc/tilcdc_drv.h | 5 +++++ + 2 files changed, 39 insertions(+) + +diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c +index 4b6b139..bf94a0f 100644 +--- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c ++++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c +@@ -37,6 +37,10 @@ struct tilcdc_crtc { + /* for deferred fb unref's: */ + struct drm_flip_work unref_work; + }; ++ ++static vsync_callback_t vsync_cb_handler; ++static void *vsync_cb_arg; ++ + #define to_tilcdc_crtc(x) container_of(x, struct tilcdc_crtc, base) + + static void unref_worker(struct drm_flip_work *work, void *val) +@@ -576,6 +580,32 @@ out: + pm_runtime_put_sync(dev->dev); + } + ++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); ++ + irqreturn_t tilcdc_crtc_irq(struct drm_crtc *crtc) + { + struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); +@@ -610,6 +640,10 @@ irqreturn_t tilcdc_crtc_irq(struct drm_crtc *crtc) + tilcdc_crtc->event = NULL; + if (event) + drm_send_vblank_event(dev, 0, event); ++ ++ if (vsync_cb_handler) ++ vsync_cb_handler(vsync_cb_arg); ++ + spin_unlock_irqrestore(&dev->event_lock, flags); + + if (dirty && !tilcdc_crtc->dirty) +diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/tilcdc/tilcdc_drv.h +index 0938036..05269be 100644 +--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h ++++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h +@@ -170,4 +170,9 @@ void tilcdc_crtc_set_panel_info(struct drm_crtc *crtc, + int tilcdc_crtc_mode_valid(struct drm_crtc *crtc, struct drm_display_mode *mode); + int tilcdc_crtc_max_width(struct drm_crtc *crtc); + ++/* used by SGX OMAPLFB drvier */ ++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 /* __TILCDC_DRV_H__ */ +-- +1.9.1 + diff --git a/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0003-drm-tilcdc-fix-the-ping-pong-dma-tearing-issue-seen-.patch b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0003-drm-tilcdc-fix-the-ping-pong-dma-tearing-issue-seen-.patch new file mode 100644 index 00000000..b3d04661 --- /dev/null +++ b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0003-drm-tilcdc-fix-the-ping-pong-dma-tearing-issue-seen-.patch @@ -0,0 +1,97 @@ +From 7b4400287144101f8c7bdf2a9fa45c82859177e2 Mon Sep 17 00:00:00 2001 +From: Darren Etheridge +Date: Fri, 18 Jul 2014 16:21:46 -0500 +Subject: [PATCH 3/6] drm/tilcdc: fix the ping-pong dma tearing issue seen on + buffer flipping + +Update the DMA pointers during the pan display ioctl. Borrowed from +da8xx_fb.c update the scanout buffers immediately so the DMA ping/pong +doesn't end up out of sync with what we really want it to DMA. + +Signed-off-by: Darren Etheridge +--- + drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 36 +++++++++++++++++++++++++++++++----- + 1 file changed, 31 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c +index bf94a0f..cdea159 100644 +--- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c ++++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c +@@ -30,6 +30,8 @@ struct tilcdc_crtc { + int dpms; + wait_queue_head_t frame_done_wq; + bool frame_done; ++ spinlock_t irq_lock; ++ int dma_completed_channel; + + /* fb currently set to scanout 0/1: */ + struct drm_framebuffer *scanout[2]; +@@ -102,10 +104,23 @@ static void update_scanout(struct drm_crtc *crtc) + (crtc->mode.vdisplay * fb->pitches[0]); + + if (tilcdc_crtc->dpms == DRM_MODE_DPMS_ON) { +- /* already enabled, so just mark the frames that need +- * updating and they will be updated on vblank: ++ /* ++ * already enabled, so just mark the frames that need ++ * updating and they will be updated on vblank ++ * and update the inactive DMA channel immediately ++ * to avoid any tearing due to the DMA already starting ++ * on the pending dma buffer when we hit the vblank IRQ + */ +- tilcdc_crtc->dirty |= LCDC_END_OF_FRAME0 | LCDC_END_OF_FRAME1; ++ if (tilcdc_crtc->dma_completed_channel == 0) { ++ tilcdc_crtc->dirty |= LCDC_END_OF_FRAME1; ++ set_scanout(crtc, 0); ++ } ++ ++ if (tilcdc_crtc->dma_completed_channel == 1) { ++ tilcdc_crtc->dirty |= LCDC_END_OF_FRAME0; ++ set_scanout(crtc, 1); ++ } ++ + drm_vblank_get(dev, 0); + } else { + /* not enabled yet, so update registers immediately: */ +@@ -612,6 +627,7 @@ irqreturn_t tilcdc_crtc_irq(struct drm_crtc *crtc) + struct drm_device *dev = crtc->dev; + struct tilcdc_drm_private *priv = dev->dev_private; + uint32_t stat = tilcdc_read_irqstatus(dev); ++ unsigned long irq_flags; + + if ((stat & LCDC_SYNC_LOST) && (stat & LCDC_FIFO_UNDERFLOW)) { + stop(crtc); +@@ -627,11 +643,19 @@ irqreturn_t tilcdc_crtc_irq(struct drm_crtc *crtc) + + tilcdc_clear_irqstatus(dev, stat); + +- if (dirty & LCDC_END_OF_FRAME0) ++ spin_lock_irqsave(&tilcdc_crtc->irq_lock, irq_flags); ++ ++ if (dirty & LCDC_END_OF_FRAME0) { + set_scanout(crtc, 0); ++ tilcdc_crtc->dma_completed_channel = 0; ++ } + +- if (dirty & LCDC_END_OF_FRAME1) ++ if (dirty & LCDC_END_OF_FRAME1) { + set_scanout(crtc, 1); ++ tilcdc_crtc->dma_completed_channel = 1; ++ } ++ ++ spin_unlock_irqrestore(&tilcdc_crtc->irq_lock, irq_flags); + + drm_handle_vblank(dev, 0); + +@@ -707,6 +731,8 @@ struct drm_crtc *tilcdc_crtc_create(struct drm_device *dev) + goto fail; + } + ++ spin_lock_init(&tilcdc_crtc->irq_lock); ++ + ret = drm_crtc_init(dev, crtc, &tilcdc_crtc_funcs); + if (ret < 0) + goto fail; +-- +1.9.1 + diff --git a/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0004-ARM-OMAP2-Use-pdata-quirks-for-sgx-deassert_hardrese.patch b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0004-ARM-OMAP2-Use-pdata-quirks-for-sgx-deassert_hardrese.patch new file mode 100644 index 00000000..b0d5d405 --- /dev/null +++ b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0004-ARM-OMAP2-Use-pdata-quirks-for-sgx-deassert_hardrese.patch @@ -0,0 +1,86 @@ +From 761dbda366d46ff007e04c09dd2deeee5073d090 Mon Sep 17 00:00:00 2001 +From: Darren Etheridge +Date: Fri, 25 Jul 2014 16:09:53 -0500 +Subject: [PATCH 4/6] ARM: OMAP2+: Use pdata-quirks for sgx deassert_hardreset + +Use pdata_quirks to provide platform data to the sgx driver. +The data that is provided includes: + +1) Function pointers for the driver to use to reset the h/w block. +2) The reset name that matches with what is used in hwmod. + +Signed-off-by: Darren Etheridge +--- + arch/arm/mach-omap2/pdata-quirks.c | 12 ++++++++++++ + include/linux/platform_data/gfx-sgx.h | 22 ++++++++++++++++++++++ + 2 files changed, 34 insertions(+) + create mode 100644 include/linux/platform_data/gfx-sgx.h + +diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c +index a1fb5aa..945dd61 100644 +--- a/arch/arm/mach-omap2/pdata-quirks.c ++++ b/arch/arm/mach-omap2/pdata-quirks.c +@@ -17,6 +17,7 @@ + + #include + #include ++#include + + #include "am35xx.h" + #include "common.h" +@@ -63,6 +64,13 @@ static inline void legacy_init_wl12xx(unsigned ref_clock, + } + #endif + ++#if defined(CONFIG_SOC_AM33XX) || defined(CONFIG_SOC_AM43XX) ++static struct gfx_sgx_platform_data gfx_pdata = { ++ .reset_name = "gfx", ++ .deassert_reset = omap_device_deassert_hardreset, ++}; ++#endif ++ + #ifdef CONFIG_MACH_NOKIA_N8X0 + static void __init omap2420_n8x0_legacy_init(void) + { +@@ -270,6 +278,10 @@ struct of_dev_auxdata omap_auxdata_lookup[] __initdata = { + OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0", + &am35xx_emac_pdata), + #endif ++#if defined(CONFIG_SOC_AM33XX) || defined(CONFIG_SOC_AM43XX) ++ OF_DEV_AUXDATA("ti,sgx", 0x56000000, "56000000.sgx", ++ &gfx_pdata), ++#endif + #ifdef CONFIG_ARCH_OMAP4 + OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a100040, "4a100040.pinmux", &pcs_pdata), + OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a31e040, "4a31e040.pinmux", &pcs_pdata), +diff --git a/include/linux/platform_data/gfx-sgx.h b/include/linux/platform_data/gfx-sgx.h +new file mode 100644 +index 0000000..aa59b2c +--- /dev/null ++++ b/include/linux/platform_data/gfx-sgx.h +@@ -0,0 +1,22 @@ ++/* ++ * SGX Graphics Driver Platform Data ++ * ++ * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ ++ * Darren Etheridge ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * This program is distributed "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 ++ ++struct gfx_sgx_platform_data { ++ const char *reset_name; ++ ++ int (*deassert_reset)(struct platform_device *pdev, const char *name); ++}; +-- +1.9.1 + diff --git a/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0005-ARM-dts-am437x-add-SGX-node.patch b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0005-ARM-dts-am437x-add-SGX-node.patch new file mode 100644 index 00000000..e18581ad --- /dev/null +++ b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0005-ARM-dts-am437x-add-SGX-node.patch @@ -0,0 +1,41 @@ +From c921fe043facef3bd6649170fb6130f18e9367b7 Mon Sep 17 00:00:00 2001 +From: Darren Etheridge +Date: Tue, 29 Jul 2014 16:27:59 -0500 +Subject: [PATCH 5/6] ARM: dts: am437x: add SGX node + +Add dt node to enable SGX PowerVR driver. + +Signed-off-by: Darren Etheridge +--- + arch/arm/boot/dts/am4372.dtsi | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi +index d36af42..d963a60 100644 +--- a/arch/arm/boot/dts/am4372.dtsi ++++ b/arch/arm/boot/dts/am4372.dtsi +@@ -707,6 +707,13 @@ + dma-names = "tx", "rx"; + }; + ++ sgx@0x56000000 { ++ compatible = "ti,sgx"; ++ ti,hwmods = "gfx"; ++ reg = <0x56000000 0x1000000>; ++ interrupts = ; ++ }; ++ + mcasp1: mcasp@4803C000 { + compatible = "ti,am33xx-mcasp-audio"; + ti,hwmods = "mcasp1"; +@@ -891,6 +898,7 @@ + clocks = <&disp_clk>; + clock-names = "fck"; + }; ++ + }; + }; + }; +-- +1.9.1 + diff --git a/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0006-ARM-dts-am33xx-add-DT-node-for-gpu.patch b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0006-ARM-dts-am33xx-add-DT-node-for-gpu.patch new file mode 100644 index 00000000..d4d0f137 --- /dev/null +++ b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0006-ARM-dts-am33xx-add-DT-node-for-gpu.patch @@ -0,0 +1,42 @@ +From 0ef34332c3400b211a047eaca751d00c97f5104c Mon Sep 17 00:00:00 2001 +From: Darren Etheridge +Date: Fri, 18 Jul 2014 16:19:54 -0500 +Subject: [PATCH 6/6] ARM: dts: am33xx: add DT node for gpu + +Add the node into the am33xx.dtsi file for the SGX GPU +that is found in some variants of the SoC. + +Signed-off-by: Darren Etheridge +--- + arch/arm/boot/dts/am33xx.dtsi | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi +index 2cfd694..df6ae9c 100644 +--- a/arch/arm/boot/dts/am33xx.dtsi ++++ b/arch/arm/boot/dts/am33xx.dtsi +@@ -109,7 +109,6 @@ + prcm: prcm@44e00000 { + compatible = "ti,am3-prcm"; + reg = <0x44e00000 0x4000>; +- + prcm_clocks: clocks { + #address-cells = <1>; + #size-cells = <0>; +@@ -822,6 +821,13 @@ + reg = <0x48310000 0x2000>; + interrupts = <111>; + }; ++ ++ sgx@0x56000000 { ++ compatible = "ti,sgx"; ++ ti,hwmods = "gfx"; ++ reg = <0x56000000 0x1000000>; ++ interrupts = <37>; ++ }; + }; + }; + +-- +1.9.1 + diff --git a/recipes-kernel/linux/linux-ti-staging_3.14.bb b/recipes-kernel/linux/linux-ti-staging_3.14.bb index b5056401..c223c880 100644 --- a/recipes-kernel/linux/linux-ti-staging_3.14.bb +++ b/recipes-kernel/linux/linux-ti-staging_3.14.bb @@ -3,8 +3,6 @@ DESCRIPTION = "Linux kernel for TI devices" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" -DEFAULT_PREFERENCE = "-1" - inherit kernel require recipes-kernel/linux/linux-dtb.inc @@ -49,7 +47,7 @@ SRCREV = "b0fa4f08d72c8723219b5174b5749151b5acaee0" PV = "3.14.14" # Append to the MACHINE_KERNEL_PR so that a new SRCREV will cause a rebuild -MACHINE_KERNEL_PR_append = "a+gitr${SRCPV}" +MACHINE_KERNEL_PR_append = "b+gitr${SRCPV}" PR = "${MACHINE_KERNEL_PR}" KERNEL_CONFIG_DIR = "${S}/ti_config_fragments" @@ -57,10 +55,22 @@ KERNEL_CONFIG_FRAGMENTS = "${KERNEL_CONFIG_DIR}/audio_display.cfg ${KERNEL_CONFI ${KERNEL_CONFIG_DIR}/connectivity.cfg ${KERNEL_CONFIG_DIR}/ipc.cfg \ ${KERNEL_CONFIG_DIR}/power.cfg" -KERNEL_CONFIG_FRAGMENTS_append_ti33x = " ${WORKDIR}/non-smp.cfg" -KERNEL_CONFIG_FRAGMENTS_append_ti43x = " ${WORKDIR}/non-smp.cfg" +KERNEL_CONFIG_FRAGMENTS_append_ti33x = " ${WORKDIR}/non-smp.cfg ${WORKDIR}/sgx.cfg" +KERNEL_CONFIG_FRAGMENTS_append_ti43x = " ${WORKDIR}/non-smp.cfg ${WORKDIR}/sgx.cfg" + +# Patches necessary to make SGX graphics work with this kernel version +SGX_PATCHES = "file://sgx/0001-HACK-drm-fb_helper-enable-panning-support.patch \ + file://sgx/0002-HACK-drm-tilcdc-add-vsync-callback-for-use-in-omaplf.patch \ + file://sgx/0003-drm-tilcdc-fix-the-ping-pong-dma-tearing-issue-seen-.patch \ + file://sgx/0004-ARM-OMAP2-Use-pdata-quirks-for-sgx-deassert_hardrese.patch \ + file://sgx/0005-ARM-dts-am437x-add-SGX-node.patch \ + file://sgx/0006-ARM-dts-am33xx-add-DT-node-for-gpu.patch" SRC_URI = "git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git;protocol=git;branch=${BRANCH} \ file://defconfig \ file://non-smp.cfg \ + file://sgx.cfg \ " + +SRC_URI_append_ti33x = " ${SGX_PATCHES}" +SRC_URI_append_ti43x = " ${SGX_PATCHES}"