From c5361ec7b484e629b5bbc58b4555f904ed4dd5cc Mon Sep 17 00:00:00 2001
From: Dagg <daggs@gmx.com>
Date: Wed, 25 May 2016 20:46:30 +0300
Subject: [PATCH] odroid-mali: new package
This new package adds EGL/GLES support for the ODROID-C2 board.
[Eric:
- add helper program to set up display (frame buffer)
- add sysv/systemd service for setting up display
- fix libraries installation on the target]
Signed-off-by: Dagg <daggs@gmx.com>
Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>
---
package/Config.in | 1 +
package/odroid-mali/Config.in | 19 ++++++
package/odroid-mali/S50odroid-display | 20 ++++++
package/odroid-mali/egl.pc | 10 +++
package/odroid-mali/glesv2.pc | 10 +++
package/odroid-mali/odroid-display.service | 9 +++
package/odroid-mali/odroid-mali.hash | 1 +
package/odroid-mali/odroid-mali.mk | 70 ++++++++++++++++++++
package/odroid-mali/odroid-setup-display | 103 +++++++++++++++++++++++++++++
9 files changed, 243 insertions(+)
create mode 100644 package/odroid-mali/Config.in
create mode 100755 package/odroid-mali/S50odroid-display
create mode 100644 package/odroid-mali/egl.pc
create mode 100644 package/odroid-mali/glesv2.pc
create mode 100644 package/odroid-mali/odroid-display.service
create mode 100644 package/odroid-mali/odroid-mali.hash
create mode 100644 package/odroid-mali/odroid-mali.mk
create mode 100755 package/odroid-mali/odroid-setup-display
@@ -418,6 +418,7 @@ endif
source "package/nvidia-driver/Config.in"
source "package/nvidia-tegra23/Config.in"
source "package/nvme/Config.in"
+ source "package/odroid-mali/Config.in"
source "package/ofono/Config.in"
source "package/ola/Config.in"
source "package/on2-8170-modules/Config.in"
new file mode 100644
@@ -0,0 +1,19 @@
+config BR2_PACKAGE_ODROID_MALI
+ bool "odroid-mali"
+ select BR2_PACKAGE_HAS_LIBEGL
+ select BR2_PACKAGE_HAS_LIBGLES
+ select BR2_PACKAGE_FBSET
+ depends on BR2_TOOLCHAIN_USES_GLIBC
+ depends on BR2_aarch64
+ help
+ Install the ARM Mali drivers for odroid based systems.
+
+ http://github.com/linux-odroid/odroid-mali
+
+if BR2_PACKAGE_ODROID_MALI
+config BR2_PACKAGE_PROVIDES_LIBEGL
+ default "odroid-mali"
+
+config BR2_PACKAGE_PROVIDES_LIBGLES
+ default "odroid-mali"
+endif
new file mode 100755
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Set up frame buffer
+#
+
+case "$1" in
+ start)
+ echo "Setting up display..."
+ /usr/sbin/odroid-setup-display
+ ;;
+ stop)
+ ;;
+ restart|reload)
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
new file mode 100644
@@ -0,0 +1,10 @@
+prefix=/usr
+exec_prefix=/usr
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: egl
+Description: Amlogic implementation of EGL
+Version: 0.99
+Libs: -L${libdir} -lEGL -lGLESv2
+Cflags: -I${includedir}/
new file mode 100644
@@ -0,0 +1,10 @@
+prefix=/usr
+exec_prefix=/usr
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: glesv2
+Description: Amlogic implementation of OpenGL ESv2
+Version: 0.99
+Libs: -L${libdir} -lGLESv2
+Cflags: -I${includedir}/
new file mode 100644
@@ -0,0 +1,9 @@
+[Unit]
+Description=ODROID Display
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/odroid-setup-display
+
+[Install]
+WantedBy=multi-user.target
new file mode 100644
@@ -0,0 +1 @@
+sha256 1cddeb6990a9446339abde79ca1d01a8480b98cf107019f0847390b9549d90cc opengl-meson-gxbb-r5p1-01rel0.tar.xz
new file mode 100644
@@ -0,0 +1,70 @@
+################################################################################
+#
+# odroid-mali
+#
+################################################################################
+
+ODROID_MALI_VERSION = $(ODROID_DRIVER_VERSION)
+ODROID_MALI_TARBALL = opengl-meson-gxbb-r5p1-01rel0.tar.xz
+ODROID_MALI_SITE = http://sources.openelec.tv/devel
+ODROID_MALI_SOURCE = opengl-meson-gxbb-r5p1-01rel0.tar.xz
+
+ODROID_MALI_INSTALL_STAGING = YES
+ODROID_MALI_PROVIDES = libegl libgles
+
+define ODROID_MALI_INSTALL_LIBS
+ $(INSTALL) -D -m 0755 $(@D)/usr/lib/libMali.so $(1)/lib
+
+ cd $(1)/lib
+ ln -sf libMali.so $(1)/lib/libEGL.so
+ ln -sf libMali.so $(1)/lib/libGLESv1_CM.so
+ ln -sf libMali.so $(1)/lib/libGLESv2.so
+
+ ln -sf libEGL.so $(1)/lib/libEGL.so.1
+ ln -sf libEGL.so $(1)/lib/libEGL.so.1.4
+ ln -sf libGLESv1_CM.so $(1)/lib/libGLESv1_CM.so.1
+ ln -sf libGLESv1_CM.so $(1)/lib/libGLESv1_CM.so.1.1
+ ln -sf libGLESv2.so $(1)/lib/libGLESv2.so.2
+ ln -sf libGLESv2.so $(1)/lib/libGLESv2.so.2.0
+endef
+
+define ODROID_MALI_INSTALL_HDRS
+ mkdir -p $(@D)/usr/include
+ cp -R $(@D)/usr/include/* $(1)/include
+endef
+
+define ODROID_MALI_INSTALL_PCS
+ $(INSTALL) -D -m 0644 package/odroid-mali/egl.pc $(1)/usr/lib/pkgconfig/egl.pc
+ $(INSTALL) -D -m 0644 package/odroid-mali/glesv2.pc $(1)/usr/lib/pkgconfig/glesv2.pc
+endef
+
+define ODROID_MALI_INSTALL_TOOLS
+ $(INSTALL) -D -m 0755 package/odroid-mali/odroid-setup-display \
+ $(1)/sbin/odroid-setup-display
+endef
+
+define ODROID_MALI_INSTALL_STAGING_CMDS
+ $(call ODROID_MALI_INSTALL_LIBS,$(STAGING_DIR)/usr)
+ $(call ODROID_MALI_INSTALL_HDRS,$(STAGING_DIR)/usr)
+ $(call ODROID_MALI_INSTALL_PCS,$(STAGING_DIR)/usr)
+endef
+
+define ODROID_MALI_INSTALL_TARGET_CMDS
+ $(call ODROID_MALI_INSTALL_LIBS,$(TARGET_DIR)/usr)
+ $(call ODROID_MALI_INSTALL_TOOLS,$(TARGET_DIR)/usr)
+endef
+
+define ODROID_MALI_INSTALL_INIT_SYSTEMD
+ $(INSTALL) -D -m 0644 package/odroid-mali/odroid-display.service \
+ $(TARGET_DIR)/usr/lib/systemd/system/odroid-display.service
+ mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
+ ln -fs ../../../../usr/lib/systemd/system/odroid-display.service \
+ $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/odroid-display.service
+endef
+
+define ODROID_MALI_INSTALL_INIT_SYSV
+ $(INSTALL) -D -m 0755 package/odroid-mali/S50odroid-display \
+ $(TARGET_DIR)/etc/init.d/S50odroid-display
+endef
+
+$(eval $(generic-package))
new file mode 100755
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+export mode=`cat /proc/cmdline | sed -rn 's/.+(hdmimode=)(\S+)\s.+/\2/p'`
+export bpp=`cat /proc/cmdline | sed -rn 's/.+(m_bpp=)(\S+)\s.+/\2/p'`
+
+common_display_setup() {
+ M="0 0 $(($X - 1)) $(($Y - 1))"
+ Y_VIRT=$(($Y * 2))
+ fbset -fb /dev/fb0 -g $X $Y $X $Y_VIRT $bpp
+ fbset -fb /dev/fb1 -g 32 32 32 32 32
+ echo $mode > /sys/class/display/mode
+ echo 0 > /sys/class/graphics/fb0/free_scale
+ echo 1 > /sys/class/graphics/fb0/freescale_mode
+ echo $M > /sys/class/graphics/fb0/free_scale_axis
+ echo $M > /sys/class/graphics/fb0/window_axis
+ echo 0 > /sys/class/graphics/fb1/free_scale
+}
+
+case $mode in
+ 480*)
+ export X=720
+ export Y=480
+ ;;
+ 576*)
+ export X=720
+ export Y=576
+ ;;
+ 720p*)
+ export X=1280
+ export Y=720
+ ;;
+ 1080*)
+ export X=1920
+ export Y=1080
+ ;;
+ 2160p*)
+ export X=3840
+ export Y=2160
+ ;;
+ smpte24hz*)
+ export X=3840
+ export Y=2160
+ ;;
+ 640x480p60hz*)
+ export X=640
+ export Y=480
+ ;;
+ 800x480p60hz*)
+ export X=800
+ export Y=480
+ ;;
+ 800x600p60hz*)
+ export X=800
+ export Y=600
+ ;;
+ 1024x600p60hz*)
+ export X=1024
+ export Y=600
+ ;;
+ 1024x768p60hz*)
+ export X=1024
+ export Y=768
+ ;;
+ 1280x800p60hz*)
+ export X=1280
+ export Y=800
+ ;;
+ 1280x1024p60hz*)
+ export X=1280
+ export Y=1024
+ ;;
+ 1360x768p60hz*)
+ export X=1360
+ export Y=768
+ ;;
+ 1366x768p60hz*)
+ export X=1366
+ export Y=768
+ ;;
+ 1440x900p60hz*)
+ export X=1440
+ export Y=900
+ ;;
+ 1600x900p60hz*)
+ export X=1600
+ export Y=900
+ ;;
+ 1680x1050p60hz*)
+ export X=1680
+ export Y=1050
+ ;;
+ 1920x1200p60hz*)
+ export X=1920
+ export Y=1200
+ ;;
+esac
+
+common_display_setup
+
+echo 0 > /sys/class/graphics/fb0/blank
+echo 0 > /sys/class/graphics/fb1/blank
+
+exit $?
--
2.4.11