[Buildroot] [PATCH rework v2] odroid-mali: New Package.

Dagg daggs at gmx.com
Sat Jun 4 10:07:21 UTC 2016


v1 -> v2:
 - added hash for 32 bits revision.
 - fix file permissions for S50odroidc2_fb and odroidc2_init_fb.sh

Signed-off-by: Dagg <daggs at gmx.com>
---
 configs/odroidc2_defconfig               |   3 +
 package/Config.in                        |   1 +
 package/odroid-mali/10-odroidc2_fb.rules |   8 ++
 package/odroid-mali/Config.in            |  20 +++++
 package/odroid-mali/S50odroidc2_fb       |  20 +++++
 package/odroid-mali/odroid-mali.hash     |   2 +
 package/odroid-mali/odroid-mali.mk       |  56 ++++++++++++++
 package/odroid-mali/odroidc2_fb.service  |  14 ++++
 package/odroid-mali/odroidc2_init_fb.sh  | 125 +++++++++++++++++++++++++++++++
 9 files changed, 249 insertions(+)
 create mode 100644 package/odroid-mali/10-odroidc2_fb.rules
 create mode 100644 package/odroid-mali/Config.in
 create mode 100755 package/odroid-mali/S50odroidc2_fb
 create mode 100644 package/odroid-mali/odroid-mali.hash
 create mode 100644 package/odroid-mali/odroid-mali.mk
 create mode 100644 package/odroid-mali/odroidc2_fb.service
 create mode 100755 package/odroid-mali/odroidc2_init_fb.sh

diff --git a/configs/odroidc2_defconfig b/configs/odroidc2_defconfig
index 1945983..e403f3e 100644
--- a/configs/odroidc2_defconfig
+++ b/configs/odroidc2_defconfig
@@ -22,6 +22,9 @@ BR2_LINUX_KERNEL_USE_INTREE_DTS=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="meson64_odroidc2"
 BR2_LINUX_KERNEL_IMAGE=y
 
+# display
+BR2_PACKAGE_ODROID_MALI=y
+
 # U-Boot
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT_CUSTOM_GIT=y
diff --git a/package/Config.in b/package/Config.in
index 9f6e0d9..2f77683 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -419,6 +419,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"
diff --git a/package/odroid-mali/10-odroidc2_fb.rules b/package/odroid-mali/10-odroidc2_fb.rules
new file mode 100644
index 0000000..e0374af
--- /dev/null
+++ b/package/odroid-mali/10-odroidc2_fb.rules
@@ -0,0 +1,8 @@
+# Mali Rules
+KERNEL=="mali",SUBSYSTEM=="misc",MODE="0777"
+KERNEL=="ump",SUBSYSTEM=="ump",MODE="0777"
+
+# Misc video rules
+KERNEL=="event*", SUBSYSTEM=="input", MODE="0777"
+KERNEL=="CEC", MODE="0777"
+KERNEL=="am*", MODE="0666"
diff --git a/package/odroid-mali/Config.in b/package/odroid-mali/Config.in
new file mode 100644
index 0000000..ea93159
--- /dev/null
+++ b/package/odroid-mali/Config.in
@@ -0,0 +1,20 @@
+config BR2_PACKAGE_ODROID_MALI
+	bool "odroid-mali"
+	select BR2_PACKAGE_HAS_LIBEGL
+	select BR2_PACKAGE_HAS_LIBGLES
+	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+	select BR2_PACKAGE_FBSET
+	depends on BR2_TOOLCHAIN_USES_GLIBC
+	depends on BR2_aarch64 || BR2_arm
+	help
+	  Install the ARM Mali drivers for odroidc2 based systems.
+
+	  https://github.com/mdrjr/c2_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/S50odroidc2_fb b/package/odroid-mali/S50odroidc2_fb
new file mode 100755
index 0000000..2aae59d
--- /dev/null
+++ b/package/odroid-mali/S50odroidc2_fb
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Set up frame buffer
+#
+
+case "$1" in
+    start)
+        echo "Setting up display..."
+        /usr/sbin/odroidc2_init_fb.sh
+        ;;
+    stop)
+        ;;
+    restart|reload)
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+esac
+
+exit $?
diff --git a/package/odroid-mali/odroid-mali.hash b/package/odroid-mali/odroid-mali.hash
new file mode 100644
index 0000000..74c94d7
--- /dev/null
+++ b/package/odroid-mali/odroid-mali.hash
@@ -0,0 +1,2 @@
+sha256 122fe75fc105fc2f7c00b7f075deca567f6a3e56b5c128b00cf3096073b96e66  odroid-mali-4a34d59cd6120db67dc11023344e382afbaf28da.tar.gz
+sha256 29d98ed4b8694b860d9289787c416faa847b0de26d36580a53add1752b4c2e9a  odroid-mali-46fe49f37e3506c6205ad8c50980eca9bfff11e3.tar.gz
diff --git a/package/odroid-mali/odroid-mali.mk b/package/odroid-mali/odroid-mali.mk
new file mode 100644
index 0000000..03c228c
--- /dev/null
+++ b/package/odroid-mali/odroid-mali.mk
@@ -0,0 +1,56 @@
+################################################################################
+#
+# odroid-mali
+#
+################################################################################
+
+ifeq ($(BR2_aarch64),y)
+ODROID_MALI_VERSION = 4a34d59cd6120db67dc11023344e382afbaf28da
+ODROID_MALI_LIBS_INSTALL_ARCH=mali_libs
+else
+ODROID_MALI_VERSION = 46fe49f37e3506c6205ad8c50980eca9bfff11e3
+ODROID_MALI_LIBS_INSTALL_ARCH=32bit_libs
+endif
+
+ODROID_MALI_SITE = $(call github,mdrjr,c2_mali,$(ODROID_MALI_VERSION))
+ODROID_MALI_LICENSE = hardkernel
+ODROID_MALI_LICENSE_FILES = README.md
+
+ODROID_MALI_INSTALL_STAGING = YES
+ODROID_MALI_PROVIDES = libegl libgles
+
+ifeq ($(BR2_PACKAGE_EUDEV),y)
+	ODROID_MALI_INSTALL_UDEV_RULES = $(INSTALL) -D -m 0644 package/odroid-mali/10-odroidc2_fb.rules $(TARGET_DIR)/etc/udev/rules.d/10-odroidc2_fb.rules
+else
+	ODROID_MALI_INSTALL_UDEV_RULES =
+endif
+
+define ODROID_MALI_INSTALL_LIBS
+	mkdir -p $(1)/lib/
+	cp -aRP $(@D)/fbdev/$(ODROID_MALI_LIBS_INSTALL_ARCH)/*.so* $(1)/lib/
+endef
+
+define ODROID_MALI_INSTALL_STAGING_CMDS
+	$(call ODROID_MALI_INSTALL_LIBS,$(STAGING_DIR)/usr)
+	mkdir -p $(@D)/usr/include $(@D)/usr/lib/pkgconfig
+	cp -aRP $(@D)/fbdev/mali_headers/* $(STAGING_DIR)/usr/include
+	cp -aRP $(@D)/pkgconfig/* $(STAGING_DIR)/usr/lib/pkgconfig
+endef
+
+define ODROID_MALI_INSTALL_TARGET_CMDS
+	$(call ODROID_MALI_INSTALL_LIBS,$(TARGET_DIR)/usr)
+	$(INSTALL) -D -m 0644 package/odroid-mali/odroidc2_init_fb.sh $(TARGET_DIR)/usr/sbin/odroidc2_init_fb.sh
+	$(ODROID_MALI_INSTALL_UDEV_RULES)
+endef
+
+define ODROID_MALI_INSTALL_INIT_SYSTEMD
+	$(INSTALL) -D -m 0644 package/odroid-mali/odroidc2_fb.service $(TARGET_DIR)/usr/lib/systemd/system/odroidc2_fb.service
+	mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants 
+	ln -fs ../../../../usr/lib/systemd/system/odroidc2_fb.service $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/odroidc2_fb.service
+endef
+
+define ODROID_MALI_INSTALL_INIT_SYSV
+	$(INSTALL) -D -m 0755 package/odroid-mali/S50odroidc2_fb $(TARGET_DIR)/etc/init.d/S50odroidc2_fb
+endef
+									    
+$(eval $(generic-package))
diff --git a/package/odroid-mali/odroidc2_fb.service b/package/odroid-mali/odroidc2_fb.service
new file mode 100644
index 0000000..5a0b508
--- /dev/null
+++ b/package/odroid-mali/odroidc2_fb.service
@@ -0,0 +1,14 @@
+[Unit]
+Description="ODROID-C2 Amlogic Display Configuration"
+
+DefaultDependencies=no
+Requires=sysinit.target
+After=sysinit.target
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/odroidc2_init_fb.sh
+
+[Install]
+WantedBy=basic.target
+WantedBy=sysinit.target
diff --git a/package/odroid-mali/odroidc2_init_fb.sh b/package/odroid-mali/odroidc2_init_fb.sh
new file mode 100755
index 0000000..5929194
--- /dev/null
+++ b/package/odroid-mali/odroidc2_init_fb.sh
@@ -0,0 +1,125 @@
+#!/bin/sh
+
+for x in $(cat /proc/cmdline); do
+        case ${x} in
+                m_bpp=*) export bpp=${x#*=} ;;
+                hdmimode=*) export mode=${x#*=} ;;
+        esac
+done
+
+HPD_STATE=/sys/class/amhdmitx/amhdmitx0/hpd_state
+DISP_CAP=/sys/class/amhdmitx/amhdmitx0/disp_cap
+DISP_MODE=/sys/class/display/mode
+
+echo $mode > $DISP_MODE
+
+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
+        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
+        echo 1 > /sys/class/graphics/fb1/freescale_mode
+        if [ "$bpp" = "32" ]; then
+            echo d01068b4 0x7fc0 > /sys/kernel/debug/aml_reg/paddr
+        fi
+}
+
+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
+			;;
+		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
+			;;
+		2560x1080p60hz*)
+			export X=2560
+			export Y=1080
+			;;
+		2560x1440p60hz*)
+			export X=2560
+			export Y=1440
+			;;
+		2560x1600p60hz*)
+			export X=2560
+			export Y=1600
+			;;
+esac
+
+common_display_setup
+
+# Console unblack
+echo 0 > /sys/class/graphics/fb0/blank
+echo 0 > /sys/class/graphics/fb1/blank
+
-- 
2.8.3



More information about the buildroot mailing list