diff options
Diffstat (limited to 'meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc/0001-Add-meson-drmmode.patch')
-rw-r--r-- | meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc/0001-Add-meson-drmmode.patch | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc/0001-Add-meson-drmmode.patch b/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc/0001-Add-meson-drmmode.patch new file mode 100644 index 0000000000..ff3b7a37b1 --- /dev/null +++ b/meta-oe/recipes-graphics/xorg-driver/xf86-video-armsoc/0001-Add-meson-drmmode.patch @@ -0,0 +1,164 @@ +From ee88bf84d9d777dde8154c1176093ba59996d289 Mon Sep 17 00:00:00 2001 +From: Neil Armstrong <narmstrong@baylibre.com> +Date: Wed, 1 Feb 2017 10:03:57 +0000 +Subject: [PATCH 1/3] Add meson drmmode + +Upstream-Status: Backport +https://github.com/superna9999/xf86-video-armsoc + +Hand applied as sunxi-mali changes not backported. + +Signed-off-by: Armin Kuster <akuster808@gmail.com> + +--- + src/Makefile.am | 3 +- + src/armsoc_driver.c | 1 + + src/drmmode_driver.h | 1 + + src/drmmode_meson/drmmode_meson.c | 101 ++++++++++++++++++++++++++++++++++++++ + 4 files changed, 105 insertions(+), 1 deletion(-) + create mode 100644 src/drmmode_meson/drmmode_meson.c + +Index: git/src/drmmode_meson/drmmode_meson.c +=================================================================== +--- /dev/null ++++ git/src/drmmode_meson/drmmode_meson.c +@@ -0,0 +1,101 @@ ++/* ++ * Copyright © 2013 ARM Limited. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ++ * SOFTWARE. ++ * ++ */ ++ ++#include <xf86drm.h> ++ ++#include "../drmmode_driver.h" ++ ++#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) ++ ++#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask)) ++#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1) ++#define ALIGN(x, a) __ALIGN_KERNEL((x), (a)) ++ ++/* This should be included from uapi headers once the driver is ++ * mainlined ++ */ ++struct drm_meson_gem_create { ++ uint64_t size; ++ uint32_t flags; ++ uint32_t handle; ++}; ++ ++#define DRM_MESON_GEM_CREATE 0x00 ++ ++#define DRM_IOCTL_MESON_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_MESON_GEM_CREATE, \ ++ struct drm_meson_gem_create) ++ ++/* Cursor dimensions ++ * Technically we probably don't have any size limit.. since we ++ * are just using an overlay... but xserver will always create ++ * cursor images in the max size, so don't use width/height values ++ * that are too big ++ */ ++/* width */ ++#define CURSORW (64) ++/* height */ ++#define CURSORH (64) ++/* Padding added down each side of cursor image */ ++#define CURSORPAD (0) ++ ++static int create_custom_gem(int fd, struct armsoc_create_gem *create_gem) ++{ ++ struct drm_meson_gem_create create_meson; ++ int ret; ++ unsigned int pitch; ++ ++ assert((create_gem->buf_type == ARMSOC_BO_SCANOUT) || ++ (create_gem->buf_type == ARMSOC_BO_NON_SCANOUT)); ++ ++ /* make pitch a multiple of 64 bytes for best performance */ ++ pitch = DIV_ROUND_UP(create_gem->width * create_gem->bpp, 8); ++ pitch = ALIGN(pitch, 64); ++ ++ memset(&create_meson, 0, sizeof(create_meson)); ++ create_meson.size = create_gem->height * pitch; ++ ++ ret = drmIoctl(fd, DRM_IOCTL_MESON_GEM_CREATE, &create_meson); ++ if (ret) ++ return ret; ++ ++ /* Convert custom create_meson to generic create_gem */ ++ create_gem->handle = create_meson.handle; ++ create_gem->pitch = pitch; ++ create_gem->size = create_meson.size; ++ ++ return 0; ++} ++ ++struct drmmode_interface meson_interface = { ++ "meson" /* name of drm driver*/, ++ 1 /* use_page_flip_events */, ++ 1 /* use_early_display */, ++ CURSORW /* cursor width */, ++ CURSORH /* cursor_height */, ++ CURSORPAD /* cursor padding */, ++ HWCURSOR_API_PLANE /* cursor_api */, ++ NULL /* init_plane_for_cursor */, ++ 0 /* vblank_query_supported */, ++ create_custom_gem /* create_custom_gem */, ++}; +Index: git/src/armsoc_driver.c +=================================================================== +--- git.orig/src/armsoc_driver.c ++++ git/src/armsoc_driver.c +@@ -737,6 +737,7 @@ static struct drmmode_interface *get_drm + &pl111_interface, + &kirin_interface, + &sti_interface, ++ &meson_interface, + }; + int i; + +Index: git/src/drmmode_driver.h +=================================================================== +--- git.orig/src/drmmode_driver.h ++++ git/src/drmmode_driver.h +@@ -106,6 +106,6 @@ extern struct drmmode_interface exynos_i + extern struct drmmode_interface pl111_interface; + extern struct drmmode_interface kirin_interface; + extern struct drmmode_interface sti_interface; +- ++extern struct drmmode_interface meson_interface; + + #endif +Index: git/src/Makefile.am +=================================================================== +--- git.orig/src/Makefile.am ++++ git/src/Makefile.am +@@ -43,7 +43,8 @@ armsoc_drv_ladir = @moduledir@/drivers + DRMMODE_SRCS = drmmode_exynos/drmmode_exynos.c \ + drmmode_pl111/drmmode_pl111.c \ + drmmode_kirin/drmmode_kirin.c \ +- drmmode_sti/drmmode_sti.c ++ drmmode_sti/drmmode_sti.c \ ++ drmmode_meson/drmmode_meson.c + + + armsoc_drv_la_SOURCES = \ |