[Buildroot] [PATCH v3] add support for odroid-mali's GL.
Dagg
daggs at gmx.com
Sat May 28 19:57:16 UTC 2016
this patch deprecate all previous patches with the same header and all patches with the header "allow building of odroid mali GL libs when using defconfig. - add S50display which sets the odroid mali fb."
v3 -> v2:
- incorporate Eric Le Bihan <eric.le.bihan.dev at free.fr>
suggestion regarding startup script.
- add support for arm install.
- don't hijack openelec's source, use the provider's git repo.
v2 -> v1:
- fix var names.
v1:
- inital support
Signed-off-by: Dagg <daggs at gmx.com>
---
package/odroid-mali/Config.in | 19 ++++++
package/odroid-mali/S50odroid-display | 20 ++++++
package/odroid-mali/odroid-display.service | 9 +++
package/odroid-mali/odroid-mali.mk | 80 ++++++++++++++++++++++
package/odroid-mali/odroid-setup-display | 103 +++++++++++++++++++++++++++++
5 files changed, 231 insertions(+)
create mode 100644 package/odroid-mali/Config.in
create mode 100644 package/odroid-mali/S50odroid-display
create mode 100644 package/odroid-mali/odroid-display.service
create mode 100644 package/odroid-mali/odroid-mali.mk
create mode 100644 package/odroid-mali/odroid-setup-display
diff --git a/package/odroid-mali/Config.in b/package/odroid-mali/Config.in
new file mode 100644
index 0000000..b65179b
--- /dev/null
+++ b/package/odroid-mali/Config.in
@@ -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 || BR2_arm
+ 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
diff --git a/package/odroid-mali/S50odroid-display b/package/odroid-mali/S50odroid-display
new file mode 100644
index 0000000..e0ac227
--- /dev/null
+++ b/package/odroid-mali/S50odroid-display
@@ -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 $?
diff --git a/package/odroid-mali/odroid-display.service b/package/odroid-mali/odroid-display.service
new file mode 100644
index 0000000..6eaa143
--- /dev/null
+++ b/package/odroid-mali/odroid-display.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=ODROID Display
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/odroid-setup-display
+
+[Install]
+WantedBy=multi-user.target
diff --git a/package/odroid-mali/odroid-mali.mk b/package/odroid-mali/odroid-mali.mk
new file mode 100644
index 0000000..cc02b17
--- /dev/null
+++ b/package/odroid-mali/odroid-mali.mk
@@ -0,0 +1,80 @@
+################################################################################
+#
+# odroid-mali
+#
+################################################################################
+
+ODROID_MALI_VERSION = a9f82a34370ec6fe1bf910339226b936fa3fc8aa
+ODROID_MALI_SITE = https://github.com/hardkernel/buildroot.git
+ODROID_MALI_SITE_METHOD = git
+ODROID_MALI_LICENSE = GPL
+
+ODROID_MALI_INSTALL_STAGING = YES
+ODROID_MALI_PROVIDES = libegl libgles
+
+ifeq ($(BR2_aarch64),y)
+ODROID_MALI_LIBS_INSTALL_ARCH=arm64
+else ifeq ($(BR2_ARM_EABIHF),y)
+ODROID_MALI_LIBS_INSTALL_ARCH=eabihf
+else
+ODROID_MALI_LIBS_INSTALL_ARCH=
+endif
+
+ODROID_MALI_LIBS_INSTALL_PATH = $(@D)/package/opengl/src/lib/$(ODROID_MALI_LIBS_INSTALL_ARCH)/r5p1/m450
+
+define ODROID_MALI_INSTALL_LIBS
+ $(INSTALL) -D -m 0755 $(ODROID_MALI_LIBS_INSTALL_PATH)/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)/package/opengl/src/include/* $(1)/include
+endef
+
+define ODROID_MALI_INSTALL_PCS
+ $(INSTALL) -D -m 0644 $(@D)/package/opengl/src/lib/pkgconfig/egl.pc $(1)/usr/lib/pkgconfig/egl.pc
+ $(INSTALL) -D -m 0644 $(@D)/package/opengl/src/lib/pkgconfig/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))
diff --git a/package/odroid-mali/odroid-setup-display b/package/odroid-mali/odroid-setup-display
new file mode 100644
index 0000000..68f8c6c
--- /dev/null
+++ b/package/odroid-mali/odroid-setup-display
@@ -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.8.3
More information about the buildroot
mailing list