[Buildroot] [PATCH v2 1/1] ti-gfx: add new package
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Fri Jul 5 20:30:46 UTC 2013
Dear Spenser Gilliland,
On Fri, 5 Jul 2013 15:15:05 -0500, Spenser Gilliland wrote:
> v2:
> - Take into account reviews.
> - Simplfy init script.
> - Fix header installation.
> v1:
> - Added .pc files
> - all review issues addressed
> RFC v3:
> - all reviews addressed
> - added demos
> - added hard float (not runtime tested)
> - added init script
> - added SGX detection script (untested)
> - tested on beaglexm using demos
> RFC v2:
> - basic working with minor issues during
> tests
> RFC v1:
> - inital revision
As explained before, this should go here, but below the "---" sign, so
that it doesn't get integrated in the Buildroot history.
You could however slightly expand the commit log by mentioning which
SoCs are supported by ti-gfx, but that's less important.
>
> Signed-off-by: Spenser Gilliland <spenser at gillilanding.com>
> ---
> package/Config.in | 1 +
> package/opengl/libegl/libegl.mk | 4 +
> package/opengl/libgles/libgles.mk | 4 +
> package/opengl/libopenvg/libopenvg.mk | 4 +
> package/ti-gfx/Config.in | 64 +++++++++
> package/ti-gfx/S80ti-gfx | 42 ++++++
> package/ti-gfx/egl.pc | 10 ++
> package/ti-gfx/esrev.sh | 59 ++++++++
> package/ti-gfx/glesv2.pc | 10 ++
> package/ti-gfx/powervr.ini | 2 +
> package/ti-gfx/ti-gfx-km_install_modules.patch | 19 +++
> package/ti-gfx/ti-gfx-newclkapi.patch | 143 ++++++++++++++++++++
> package/ti-gfx/ti-gfx.mk | 178 +++++++++++++++++++++++++
> 13 files changed, 540 insertions(+)
> create mode 100644 package/ti-gfx/Config.in
> create mode 100644 package/ti-gfx/S80ti-gfx
> create mode 100644 package/ti-gfx/egl.pc
> create mode 100644 package/ti-gfx/esrev.sh
> create mode 100644 package/ti-gfx/glesv2.pc
> create mode 100644 package/ti-gfx/powervr.ini
> create mode 100644 package/ti-gfx/ti-gfx-km_install_modules.patch
> create mode 100644 package/ti-gfx/ti-gfx-newclkapi.patch
> create mode 100644 package/ti-gfx/ti-gfx.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index ebeabeb..4df48ba 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -293,6 +293,7 @@ source "package/snowball-hdmiservice/Config.in"
> source "package/sredird/Config.in"
> source "package/statserial/Config.in"
> source "package/sysstat/Config.in"
> +source "package/ti-gfx/Config.in"
> source "package/ti-utils/Config.in"
> source "package/uboot-tools/Config.in"
> source "package/udev/Config.in"
> diff --git a/package/opengl/libegl/libegl.mk b/package/opengl/libegl/libegl.mk
> index bd8040d..00e1f19 100644
> --- a/package/opengl/libegl/libegl.mk
> +++ b/package/opengl/libegl/libegl.mk
> @@ -10,6 +10,10 @@ ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
> LIBEGL_DEPENDENCIES += rpi-userland
> endif
>
> +ifeq ($(BR2_PACKAGE_TI_GFX),y)
> +LIBEGL_DEPENDENCIES += ti-gfx
> +endif
> +
> ifeq ($(LIBEGL_DEPENDENCIES),)
> define LIBEGL_CONFIGURE_CMDS
> echo "No libEGL implementation selected. Configuration error."
> diff --git a/package/opengl/libgles/libgles.mk b/package/opengl/libgles/libgles.mk
> index a0048a7..d2fe11b 100644
> --- a/package/opengl/libgles/libgles.mk
> +++ b/package/opengl/libgles/libgles.mk
> @@ -10,6 +10,10 @@ ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
> LIBGLES_DEPENDENCIES += rpi-userland
> endif
>
> +ifeq ($(BR2_PACKAGE_TI_GFX),y)
> +LIBGLES_DEPENDENCIES += ti-gfx
> +endif
> +
> ifeq ($(LIBGLES_DEPENDENCIES),)
> define LIBGLES_CONFIGURE_CMDS
> echo "No libGLES implementation selected. Configuration error."
> diff --git a/package/opengl/libopenvg/libopenvg.mk b/package/opengl/libopenvg/libopenvg.mk
> index 03f59ba..118ae7f 100644
> --- a/package/opengl/libopenvg/libopenvg.mk
> +++ b/package/opengl/libopenvg/libopenvg.mk
> @@ -10,6 +10,10 @@ ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
> LIBOPENVG_DEPENDENCIES += rpi-userland
> endif
>
> +ifeq ($(BR2_PACKAGE_TI_GFX),y)
> +LIBOPENVG_DEPENDENCIES += ti-gfx
> +endif
> +
> ifeq ($(LIBOPENVG_DEPENDENCIES),)
> define LIBOPENVG_CONFIGURE_CMDS
> echo "No libOpenVG implementation selected. Configuration error."
Are you sure ti-gfx provides an OpenVG implementation? I have looked
very quickly, but I don't see a library whose name looks like OpenVG
something.
> diff --git a/package/ti-gfx/Config.in b/package/ti-gfx/Config.in
> new file mode 100644
> index 0000000..a92156a
> --- /dev/null
> +++ b/package/ti-gfx/Config.in
> @@ -0,0 +1,64 @@
> +config BR2_PACKAGE_TI_GFX
> + bool "ti-gfx"
> + select BR2_PACKAGE_HAS_OPENGL_EGL
> + select BR2_PACKAGE_HAS_OPENGL_ES
> + depends on BR2_LINUX_KERNEL && (BR2_TOOLCHAIN_EXTERNAL_GLIBC || \
> + BR2_TOOLCHAIN_CTNG_eglibc || BR2_TOOLCHAIN_CTNG_glibc) && BR2_arm
You can replace the glibc conditions by just 'depends on
BR2_TOOLCHAIN_USES_GLIBC', which has been introduced recently.
> + help
> + Graphics libraries for TI boards.
> +
> + http://downloads.ti.com/dsps/dsps_public_sw/gfxsdk/
> +
> +if BR2_PACKAGE_TI_GFX
> +
> +config BR2_PACKAGE_TI_GFX_DEBUG
> + bool "enable debug support"
> + help
> + Turns on debugging in the kernel module, install libraries built with
> + debugging enabled, installs various tests and installs esrev script.
> +
> +config BR2_PACKAGE_TI_GFX_DEMOS
> + bool "install demos"
> + help
> + install the OGLES2ChameleonMan and OGLES2MagicLantern demos
s/install/Install/ for consistency reasons.
> +comment "requires an eglibc/glibc based toolchain and the linux kernel"
> + depends on !(BR2_LINUX_KERNEL && (BR2_TOOLCHAIN_EXTERNAL_GLIBC || \
> + BR2_TOOLCHAIN_CTNG_eglibc || BR2_TOOLCHAIN_CTNG_glibc))
BR2_TOOLCHAIN_USES_GLIBC
> diff --git a/package/ti-gfx/ti-gfx-newclkapi.patch b/package/ti-gfx/ti-gfx-newclkapi.patch
> new file mode 100644
> index 0000000..8f50c7e
> --- /dev/null
> +++ b/package/ti-gfx/ti-gfx-newclkapi.patch
> @@ -0,0 +1,143 @@
> +This patch adjusts the omap3630 portion of the powervr driver to use the new
> +clk kernel api.
> +
> +Signed-off-by: Spenser Gilliland <spenser at gillilanding.com>
> +----
> +Index: ti-gfx-4_09_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c
> +===================================================================
> +--- ti-gfx-4_09_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2013-06-28 13:44:06.352701522 -0500
> ++++ ti-gfx-4_09_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2013-06-28 13:45:12.364702727 -0500
> +@@ -153,6 +153,49 @@
> + psTimingInfo->ui32ActivePowManLatencyms = SYS_SGX_ACTIVE_POWER_LATENCY_MS;
> + }
> +
> ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
> ++int clk_disable_unprepare(struct clk *clk)
> ++{
> ++ return clk_disable(clk);
> ++}
> ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
> ++int clk_disable_unprepare(struct clk *clk)
> ++{
> ++ res = clk_disable(clk);
> ++ if (res < 0)
> ++ return res;
> ++
> ++ res = clk_unprepare(clk);
> ++ if (ret < 0)
> ++ return res;
> ++
> ++ return 0;
> ++}
> ++#endif
> ++
> ++
> ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
> ++int clk_prepare_enable(struct clk *clk)
> ++{
> ++ return clk_enable(clk);
> ++}
> ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
> ++int clk_prepare_enable(struct clk *clk)
> ++{
> ++ res = clk_prepare(clk);
> ++ if (ret < 0)
> ++ return res;
> ++
> ++ res = clk_enable(clk);
> ++ if (res < 0) {
> ++ clk_unprepare(clk);
> ++ return res;
> ++ }
> ++
> ++ return 0;
> ++}
> ++#endif
Could have used a single #if block to implement clk_disable_unprepare()
and clk_prepare_enable(), but ok.
> +define TI_GFX_INSTALL_DEMOS_CMDS
> + $(foreach demo,$(TI_GFX_DEMOS),
> + $(INSTALL) -D -m 0755 \
> + $(@D)/$(TI_GFX_DEMOS_LOC)/$(demo)/$(TI_GFX_DEMOS_BIN_LOC)/OGLES2$(demo) \
> + $(TARGET_DIR)/usr/bin/OGLES2$(demo)
> + )
> +endef
> +
> +define TI_GFX_INSTALL_INIT_SYSV
> + $(INSTALL) -D -m 0755 package/ti-gfx/S80ti-gfx \
> + $(TARGET_DIR)/etc/init.d/S80ti-gfx
> +endef
> +
> +define TI_GFX_INSTALL_TARGET_CMDS
> + $(TI_GFX_INSTALL_KM_CMDS)
> + $(TI_GFX_INSTALL_BINS_CMDS)
> + $(TI_GFX_INSTALL_LIBS_CMDS)
> + $(if $(BR2_PACKAGE_TI_GFX_DEMOS),
> + $(TI_GFX_INSTALL_DEMOS_CMDS)
> + )
We generally prefer to enclose the definition of
TI_GFX_INSTALL_DEMOS_CMDS inside the BR2_PACKAGE_TI_GFX_DEMOS, but ok,
that's a minor it.
Could you quickly resend a v3 which at least fixes the commit log?
Thanks!
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
More information about the buildroot
mailing list