Acked-by: Franklin Cooper Jr. <[email protected]> Although we really need to move away from having these kernel config fragments within OE and not pushed back to the kernel. I understand the sgx stuff is currently a work in progress but just something for the future before we have an official "release".
> -----Original Message----- > From: [email protected] [mailto:meta-ti- > [email protected]] On Behalf Of Denys Dmytriyenko > Sent: Tuesday, July 29, 2014 8:35 PM > To: [email protected] > Subject: [meta-ti] [PATCH 1/2] linux-ti-staging: add Darren's SGX patches to > make graphics work with 3.14 > > From: Denys Dmytriyenko <[email protected]> > > Signed-off-by: Denys Dmytriyenko <[email protected]> > --- > recipes-kernel/linux/linux-ti-staging-3.14/sgx.cfg | 24 ++++++ ...HACK-drm- > fb_helper-enable-panning-support.patch | 51 ++++++++++++ ...lcdc-add- > vsync-callback-for-use-in-omaplf.patch | 96 +++++++++++++++++++++ ...fix- > the-ping-pong-dma-tearing-issue-seen-.patch | 97 ++++++++++++++++++++++ > ...se-pdata-quirks-for-sgx-deassert_hardrese.patch | 86 +++++++++++++++++++ > .../sgx/0005-ARM-dts-am437x-add-SGX-node.patch | 41 +++++++++ > .../0006-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 0000000..0291779 > --- /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 0000000..e760248 > --- /dev/null > +++ b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0001-HACK-drm-fb_he > +++ lper-enable-panning-support.patch > @@ -0,0 +1,51 @@ > +From d9d8fea4c60b3a44e8660408eb9337413b108b15 Mon Sep 17 00:00:00 > 2001 > +From: Darren Etheridge <[email protected]> > +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 <[email protected]> > +--- > + 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 <drm/drm_fb_cma_helper.h> > + #include <linux/module.h> > + > ++/* > ++ * 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 0000000..d154508 > --- /dev/null > +++ b/recipes-kernel/linux/linux-ti-staging-3.14/sgx/0002-HACK-drm-tilcd > +++ c-add-vsync-callback-for-use-in-omaplf.patch > @@ -0,0 +1,96 @@ > +From eaf6ac95a81612250d6bd5e2ed9da41e52aac444 Mon Sep 17 00:00:00 > 2001 > +From: Darren Etheridge <[email protected]> > +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 <[email protected]> > +--- > + 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 0000000..b3d0466 > --- /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 <[email protected]> > +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 <[email protected]> > +--- > + 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 0000000..b0d5d40 > --- /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 <[email protected]> > +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 <[email protected]> > +--- > + 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 <linux/platform_data/pinctrl-single.h> > + #include <linux/platform_data/iommu-omap.h> > ++#include <linux/platform_data/gfx-sgx.h> > + > + #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 <[email protected]> > ++ * > ++ * 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 <linux/platform_device.h> > ++ > ++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 0000000..e18581a > --- /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 <[email protected]> > +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 <[email protected]> > +--- > + 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 = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; > ++ }; > ++ > + 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 0000000..d4d0f13 > --- /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 <[email protected]> > +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 <[email protected]> > +--- > + 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 b505640..c223c88 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}" > -- > 2.0.2 > > -- > _______________________________________________ > meta-ti mailing list > [email protected] > https://lists.yoctoproject.org/listinfo/meta-ti -- _______________________________________________ meta-ti mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-ti
