[meta-ti] [PATCH 1/2] linux-ti-staging: add Darren's SGX patches to make graphics work with 3.14

Cooper Jr., Franklin fcooper at ti.com
Wed Jul 30 11:00:47 PDT 2014


Acked-by: Franklin Cooper Jr. <fcooper at ti.com>

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: meta-ti-bounces at yoctoproject.org [mailto:meta-ti-
> bounces at yoctoproject.org] On Behalf Of Denys Dmytriyenko
> Sent: Tuesday, July 29, 2014 8:35 PM
> To: meta-ti at yoctoproject.org
> Subject: [meta-ti] [PATCH 1/2] linux-ti-staging: add Darren's SGX patches to
> make graphics work with 3.14
> 
> From: Denys Dmytriyenko <denys at ti.com>
> 
> Signed-off-by: Denys Dmytriyenko <denys at ti.com>
> ---
>  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 <detheridge at ti.com>
> +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 <detheridge at ti.com>
> +---
> + 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 <detheridge at ti.com>
> +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 <detheridge at ti.com>
> +---
> + 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 <detheridge at ti.com>
> +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 <detheridge at ti.com>
> +---
> + 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 <detheridge at ti.com>
> +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 <detheridge at ti.com>
> +---
> + 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 <detheridge at ti.com>
> ++ *
> ++ * This program is free software; you can redistribute it and/or
> ++modify
> ++ * it under the terms of the GNU General Public License version 2 as
> ++ * published by the Free Software Foundation.
> ++ *
> ++ * This program is distributed "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 <detheridge at ti.com>
> +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 <detheridge at ti.com>
> +---
> + 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 at 0x56000000 {
> ++			compatible = "ti,sgx";
> ++			ti,hwmods = "gfx";
> ++			reg = <0x56000000 0x1000000>;
> ++			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
> ++		};
> ++
> + 		mcasp1: mcasp at 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 <detheridge at ti.com>
> +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 <detheridge at ti.com>
> +---
> + 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 at 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 at 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
> meta-ti at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-ti


More information about the meta-ti mailing list