summaryrefslogtreecommitdiffstats
path: root/package/freescale-imx
diff options
context:
space:
mode:
Diffstat (limited to 'package/freescale-imx')
-rw-r--r--package/freescale-imx/Config.in8
-rw-r--r--package/freescale-imx/firmware-imx/Config.in13
-rw-r--r--package/freescale-imx/firmware-imx/firmware-imx.mk38
-rw-r--r--package/freescale-imx/freescale-imx.mk13
-rw-r--r--package/freescale-imx/gpu-viv-bin-mx6q/Config.in35
-rw-r--r--package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch16
-rw-r--r--package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk79
-rw-r--r--package/freescale-imx/imx-lib/Config.in53
-rw-r--r--package/freescale-imx/imx-lib/imx-lib.mk40
9 files changed, 295 insertions, 0 deletions
diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in
new file mode 100644
index 000000000..7c22f79cf
--- /dev/null
+++ b/package/freescale-imx/Config.in
@@ -0,0 +1,8 @@
+menu "Freescale i.MX libraries"
+ depends on BR2_arm
+
+source "package/freescale-imx/imx-lib/Config.in"
+source "package/freescale-imx/firmware-imx/Config.in"
+source "package/freescale-imx/gpu-viv-bin-mx6q/Config.in"
+
+endmenu
diff --git a/package/freescale-imx/firmware-imx/Config.in b/package/freescale-imx/firmware-imx/Config.in
new file mode 100644
index 000000000..dd96d8889
--- /dev/null
+++ b/package/freescale-imx/firmware-imx/Config.in
@@ -0,0 +1,13 @@
+config BR2_PACKAGE_FIRMWARE_IMX
+ bool "firmware-imx"
+ depends on BR2_arm # Only relevant for i.MX
+ help
+ Firmware blobs for the Freescale i.MX SoCs.
+
+ It contains blobs for Atheros AR6003, SDMA and VPU.
+
+ Note: it also contains a blob for ar3k/30101 but upstream
+ linux-firmware has that as well.
+
+ This library is provided by Freescale as-is and doesn't have
+ an upstream.
diff --git a/package/freescale-imx/firmware-imx/firmware-imx.mk b/package/freescale-imx/firmware-imx/firmware-imx.mk
new file mode 100644
index 000000000..85f8dc29d
--- /dev/null
+++ b/package/freescale-imx/firmware-imx/firmware-imx.mk
@@ -0,0 +1,38 @@
+#############################################################
+#
+# firmware-imx
+#
+#############################################################
+
+FIRMWARE_IMX_VERSION = $(FREESCALE_IMX_VERSION)
+FIRMWARE_IMX_SITE = $(FREESCALE_IMX_MIRROR_SITE)
+FIRMWARE_IMX_SOURCE = firmware-imx-$(FIRMWARE_IMX_VERSION).bin
+FIRMWARE_IMX_LICENSE = Freescale Semiconductor Software License Agreement, \
+ Atheros license (ath6k)
+FIRMWARE_IMX_LICENSE_FILES = licenses/vpu/EULA licenses/ath6k/AR6102/License.txt
+# This is a legal minefield: the EULA specifies that
+# the Board Support Package includes software and hardware (sic!)
+# for which a separate license is needed...
+FIRMWARE_IMX_REDISTRIBUTE = NO
+
+FIRMWARE_IMX_BLOBS = ath6k sdma vpu
+
+# The archive is a shell-self-extractor of a bzipped tar. It happens
+# to extract in the correct directory (firmware-imx-x.y.z)
+# The --force makes sure it doesn't fail if the source dir already exists.
+# The --auto-accept skips the license check - not needed for us
+# because we have legal-info.
+define FIRMWARE_IMX_EXTRACT_CMDS
+ cd $(BUILD_DIR); \
+ sh $(DL_DIR)/$(FIRMWARE_IMX_SOURCE) --force --auto-accept
+endef
+
+
+define FIRMWARE_IMX_INSTALL_TARGET_CMDS
+ mkdir -p $(TARGET_DIR)/lib/firmware
+ for blobdir in $(FIRMWARE_IMX_BLOBS); do \
+ cp -r $(@D)/firmware/$${blobdir} $(TARGET_DIR)/lib/firmware; \
+ done
+endef
+
+$(eval $(generic-package))
diff --git a/package/freescale-imx/freescale-imx.mk b/package/freescale-imx/freescale-imx.mk
new file mode 100644
index 000000000..2553f6720
--- /dev/null
+++ b/package/freescale-imx/freescale-imx.mk
@@ -0,0 +1,13 @@
+#############################################################
+#
+# freescale-imx
+#
+#############################################################
+
+FREESCALE_IMX_VERSION = 1.1.0
+
+# No official download site from freescale, just this mirror
+FREESCALE_IMX_MIRROR_SITE = http://download.ossystems.com.br/bsp/freescale/source
+
+include package/freescale-imx/*/*.mk
+
diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/Config.in b/package/freescale-imx/gpu-viv-bin-mx6q/Config.in
new file mode 100644
index 000000000..06544c406
--- /dev/null
+++ b/package/freescale-imx/gpu-viv-bin-mx6q/Config.in
@@ -0,0 +1,35 @@
+comment "gpu-viv-bin-mx6q requires a glibc toolchain"
+ depends on !(BR2_TOOLCHAIN_CTNG_glibc || \
+ BR2_TOOLCHAIN_CTNG_eglibc || \
+ BR2_TOOLCHAIN_EXTERNAL_GLIBC)
+
+config BR2_PACKAGE_GPU_VIV_BIN_MX6Q
+ bool "gpu-viv-bin-mx6q"
+ select BR2_PACKAGE_HAS_OPENGL_EGL
+ select BR2_PACKAGE_HAS_OPENGL_ES
+ depends on BR2_arm # Only relevant for i.MX6
+ # Library binaries are linked against libc.so.6
+ depends on BR2_TOOLCHAIN_CTNG_glibc || \
+ BR2_TOOLCHAIN_CTNG_eglibc || \
+ BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ help
+ Userspace libraries for Vivante GPU on i.MX6 platforms
+
+ It contains libraries and headers for GLES, OpenCL, and
+ OpenVG. It also contains a DRI plugin for X11. It also
+ contains a plugin for DirectFB-1.4.0, but that doesn't work
+ together with buildroot's DirectFB version.
+
+ This library is provided by Freescale as-is and doesn't have
+ an upstream.
+
+if BR2_PACKAGE_GPU_VIV_BIN_MX6Q
+
+config BR2_PACKAGE_GPU_VIV_BIN_MX6Q_EXAMPLES
+ bool "install examples"
+ help
+ Copy the Vivante examples to the target.
+
+ Warning: examples take approximately 150 MB of disk space.
+
+endif
diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch
new file mode 100644
index 000000000..c83cd559b
--- /dev/null
+++ b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q-0001-correct-HAL-include.patch
@@ -0,0 +1,16 @@
+Correct the directory path for gc_hal_eglplatform_type.h
+
+Signed-off-by: Henk Fijnvandraat <h.fijnvandraat@inter.nl.net>
+
+diff -rup gpu-viv-bin-mx6q-1.1.0-orig/usr/include/gc_vdk_types.h gpu-viv-bin-mx6q-1.1.0/usr/include/gc_vdk_types.h
+--- gpu-viv-bin-mx6q-1.1.0-orig/usr/include/gc_vdk_types.h 2012-12-18 10:35:55.000000000 +0100
++++ gpu-viv-bin-mx6q-1.1.0/usr/include/gc_vdk_types.h 2013-05-09 21:09:28.080138681 +0200
+@@ -39,7 +39,7 @@ extern "C" {
+ #endif
+
+ #include <EGL/egl.h>
+-#include "gc_hal_eglplatform_type.h"
++#include <HAL/gc_hal_eglplatform_type.h>
+
+
+ /*******************************************************************************
diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk
new file mode 100644
index 000000000..f988d252a
--- /dev/null
+++ b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk
@@ -0,0 +1,79 @@
+#############################################################
+#
+# gpu-viv-bin-mx6q
+#
+#############################################################
+
+GPU_VIV_BIN_MX6Q_VERSION = $(FREESCALE_IMX_VERSION)
+GPU_VIV_BIN_MX6Q_SITE = $(FREESCALE_IMX_MIRROR_SITE)
+GPU_VIV_BIN_MX6Q_SOURCE = gpu-viv-bin-mx6q-$(GPU_VIV_BIN_MX6Q_VERSION).bin
+
+GPU_VIV_BIN_MX6Q_INSTALL_STAGING = YES
+
+GPU_VIV_BIN_MX6Q_LICENSE = Freescale Semiconductor Software License Agreement
+
+# No license file is included in the archive; we could extract it from
+# the self-extractor, but that's just too much effort.
+# This is a legal minefield: the EULA specifies that
+# the Board Support Package includes software and hardware (sic!)
+# for which a separate license is needed...
+GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO
+
+# DirectFB is not supported (wrong version)
+ifeq ($(BR2_PACKAGE_XORG7),y)
+GPU_VIV_BIN_MX6Q_LIB_TARGET = x11
+else
+GPU_VIV_BIN_MX6Q_LIB_TARGET = fb
+endif
+
+# The archive is a shell-self-extractor of a bzipped tar. It happens
+# to extract in the correct directory (gpu-viv-bin-mx6q-x.y.z)
+# The --force makes sure it doesn't fail if the source dir already exists.
+# The --auto-accept skips the license check - not needed for us
+# because we have legal-info.
+define GPU_VIV_BIN_MX6Q_EXTRACT_CMDS
+ (cd $(BUILD_DIR); \
+ sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept)
+endef
+
+# Instead of building, we fix up the inconsistencies that exist
+# in the upstream archive here.
+# Make sure these commands are idempotent.
+define GPU_VIV_BIN_MX6Q_BUILD_CMDS
+ $(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/usr/include/*/*.h
+ for lib in EGL GAL VIVANTE; do \
+ ln -sf lib$${lib}-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so \
+ $(@D)/usr/lib/lib$${lib}.so; \
+ done
+ ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1
+ ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so
+endef
+
+define GPU_VIV_BIN_MX6Q_INSTALL_STAGING_CMDS
+ cp -r $(@D)/usr/* $(STAGING_DIR)/usr
+endef
+
+ifeq ($(BR2_PACKAGE_GPU_VIV_BIN_MX6Q_EXAMPLES),y)
+define GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES
+ mkdir -p $(TARGET_DIR)/usr/share/examples/
+ cp -r $(@D)/opt/* $(TARGET_DIR)/usr/share/examples/
+endef
+endif
+
+# On the target, remove the unused libraries.
+# Note that this is _required_, else ldconfig may create symlinks
+# to the wrong library
+define GPU_VIV_BIN_MX6Q_INSTALL_TARGET_CMDS
+ $(GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES)
+ cp -a $(@D)/usr/lib $(TARGET_DIR)/usr
+ for lib in EGL GAL VIVANTE; do \
+ for f in $(TARGET_DIR)/usr/lib/lib$${lib}-*.so; do \
+ case $$f in \
+ *-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so) : ;; \
+ *) $(RM) $$f ;; \
+ esac; \
+ done; \
+ done
+endef
+
+$(eval $(generic-package))
diff --git a/package/freescale-imx/imx-lib/Config.in b/package/freescale-imx/imx-lib/Config.in
new file mode 100644
index 000000000..161700985
--- /dev/null
+++ b/package/freescale-imx/imx-lib/Config.in
@@ -0,0 +1,53 @@
+comment "imx-lib needs an imx-specific kernel to be built"
+ depends on BR2_arm && !BR2_LINUX_KERNEL
+
+config BR2_PACKAGE_IMX_LIB
+ bool "imx-lib"
+ depends on BR2_LINUX_KERNEL
+ depends on BR2_arm # Only relevant for i.MX
+ help
+ Library of userspace helpers specific for the Freescale i.MX
+ platform. It wraps the kernel interfaces for some i.MX platform
+ specific drivers. It requires a kernel that includes the i.MX
+ specific headers to be built.
+
+ This library is provided by Freescale as-is and doesn't have
+ an upstream.
+
+if BR2_PACKAGE_IMX_LIB
+choice
+ prompt "i.MX platform"
+
+config BR2_PACKAGE_IMX_LIB_PLATFORM_IMX25_3STACK
+ bool "imx25-3stack"
+
+config BR2_PACKAGE_IMX_LIB_PLATFORM_IMX27ADS
+ bool "imx27ads"
+
+config BR2_PACKAGE_IMX_LIB_PLATFORM_IMX37_3STACK
+ bool "imx37-3stack"
+
+config BR2_PACKAGE_IMX_LIB_PLATFORM_IMX50
+ bool "imx50"
+
+config BR2_PACKAGE_IMX_LIB_PLATFORM_IMX51
+ bool "imx51"
+
+config BR2_PACKAGE_IMX_LIB_PLATFORM_IMX53
+ bool "imx53"
+
+config BR2_PACKAGE_IMX_LIB_PLATFORM_IMX6Q
+ bool "imx6q"
+
+endchoice
+
+config BR2_PACKAGE_IMX_LIB_PLATFORM
+ string
+ default "IMX25_3STACK" if BR2_PACKAGE_IMX_LIB_PLATFORM_IMX25_3STACK
+ default "IMX27ADS" if BR2_PACKAGE_IMX_LIB_PLATFORM_IMX27ADS
+ default "IMX37_3STACK" if BR2_PACKAGE_IMX_LIB_PLATFORM_IMX37_3STACK
+ default "IMX50" if BR2_PACKAGE_IMX_LIB_PLATFORM_IMX50
+ default "IMX51" if BR2_PACKAGE_IMX_LIB_PLATFORM_IMX51
+ default "IMX53" if BR2_PACKAGE_IMX_LIB_PLATFORM_IMX53
+ default "IMX6Q" if BR2_PACKAGE_IMX_LIB_PLATFORM_IMX6Q
+endif
diff --git a/package/freescale-imx/imx-lib/imx-lib.mk b/package/freescale-imx/imx-lib/imx-lib.mk
new file mode 100644
index 000000000..67e8db3e0
--- /dev/null
+++ b/package/freescale-imx/imx-lib/imx-lib.mk
@@ -0,0 +1,40 @@
+#############################################################
+#
+# imx-lib
+#
+#############################################################
+
+IMX_LIB_VERSION = $(FREESCALE_IMX_VERSION)
+IMX_LIB_SITE = $(FREESCALE_IMX_MIRROR_SITE)
+IMX_LIB_LICENSE = LGPLv2.1+
+# No license file included
+
+IMX_LIB_INSTALL_STAGING = YES
+
+# imx-lib needs access to imx-specific kernel headers
+IMX_LIB_DEPENDENCIES += linux
+IMX_LIB_INCLUDE = \
+ -I$(LINUX_DIR)/drivers/mxc/security/rng/include \
+ -I$(LINUX_DIR)/drivers/mxc/security/sahara2/include \
+ -idirafter $(LINUX_DIR)/include
+
+IMX_LIB_MAKE_ENV = \
+ $(TARGET_MAKE_ENV) \
+ $(TARGET_CONFIGURE_OPTS) \
+ CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \
+ PLATFORM=$(BR2_PACKAGE_IMX_LIB_PLATFORM) \
+ INCLUDE="$(IMX_LIB_INCLUDE)"
+
+define IMX_LIB_BUILD_CMDS
+ $(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D)
+endef
+
+define IMX_LIB_INSTALL_STAGING_CMDS
+ $(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(STAGING_DIR) install
+endef
+
+define IMX_LIB_INSTALL_TARGET_CMDS
+ $(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(TARGET_DIR) install
+endef
+
+$(eval $(generic-package))