GPU disclosure
This product utilizes a 3
rd
party device driver to enable the Graphics Processor Unit. The driver was obtained from NXP and requires the
end user to accept an end-user licensing agreement.
This product uses Linux kernel version 3.0.35. If you wish to modify any of the GPL or LGPL components of the Linux kernel, and
re-compile them, you will need to request a copy of the binary driver imx-gpu-viv-5.0.11.p4.5.bin from NXP. Instructions for compiling the
kernel with the binary driver are below.
The GPU binary files rely on the gpu-viv driver package to be compiled into the kernel. This package can be found in the " drivers/mxc/
gpu-viv" directory of this kernel distribution. To compile the package the user need only enable the following flags in the configuration file in
the build configuration file named "Config-tek_lk-3.0.35":
CONFIG_IMX_HAVE_PLATFORM_VIV_GPU=y
CONFIG_DRM_VIVANTE=y
CONFIG_HAS_DMA=y
CONFIG_MXC_GPU_VIV=m
An end user who wishes to utilize this binary package will need to ensure that the binary files are placed into a suitable directory in
their uImage linux boot file. The command line used for installing the galcore.ko module which starts up the GPU driver on an i.mx6 solo
processor to perform 2D scaling is as follows:
" insmod /lib/modules/3.0.35/kernel/drivers/mxc/gpu-viv/galcore.ko" \
" registerMemBase=0x00000000 registerMemSize=0x00004000 irqLine=-1" \
" irqLine2D=42 registerMemBase3D=0x02200000 registerMemSize3D=0x00004000" \
" irqLineVG=43 registerMemBase2D=0x02204000 registerMemSize2D=0x00004000" \
" signal=48 baseAddress=0x80000000 fastClear=-1 " \
" contiguousSize=0x006f50000 contiguousBase=0x9E000000 "
Finally, in the board support configuration file, memory needs to be reserved for the GPU. An example of how to configure the board can
be found in the following file: "/arch/arm/mach-mx6/ board-mx6q_sabresd.c". The salient lines are:
#include <mach/viv_gpu.h>
…
static struct viv_gpu_platform_data imx6q_gpu_pdata __initdata = {
.reserved_mem_size = SZ_128M,
};
….
imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata);
…
#if defined(CONFIG_MXC_GPU_VIV) || defined(CONFIG_MXC_GPU_VIV_MODULE)
if (imx6q_gpu_pdata.reserved_mem_size) {
phys = memblock_alloc_base(imx6q_gpu_pdata.reserved_mem_size,
SZ_4K, SZ_1G);
memblock_remove(phys, imx6q_gpu_pdata.reserved_mem_size);
GPU disclosure
3 Series Mixed Domain Oscilloscope Printable Help 17