DRM driver support on Jetson TX-1


I have a custom carrier board which is developed for Jetson TX-1. My requirement is two different VGA output on two monitors.

I have a free PCIe interfaces on our custom carrier board to connect PCIe to VGA converter. I am using VL-MPEe-V5 from Versalogic which is based on Silicon Motion SM750.

Jetpack version for my Jetson TX-1: # R32 (release), REVISION: 3.1, GCID: 18186506, BOARD: t210ref, EABI: aarch64, DATE: Tue Dec 10 06:58:34 UTC 2019

I have got a DRM driver from Silicon Motion for SM750 chip.

I am trying to use the DRM driver but I am getting error during compilation of the DRM driver. I am compiling the driver naively on my ARM machine (Jetson TX-1).

I have also trying to cross compile the driver but I get similar errors.

Here I am attaching the compilation logs for native compilation:

make -C /lib/modules/4.9.140-tegra/build M=/home/spectross/Asif/SM/DRM2.0.1.2 modules
make[1]: Entering directory '/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9'
  CC [M]  /home/spectross/Asif/SM/DRM2.0.1.2/smi_drv.o
In file included from /home/spectross/Asif/SM/DRM2.0.1.2/smi_drv.h:16:0,
                 from /home/spectross/Asif/SM/DRM2.0.1.2/smi_drv.c:9:
./include/drm/drm_encoder.h: In function ‘drm_encoder_find’:
./include/drm/drm_encoder.h:220:37: error: ‘DRM_MODE_OBJECT_ENCODER’ undeclared (first use in this function); did you mean ‘DRM_ELD_PRODUCT_CODE0’?
  mo = drm_mode_object_find(dev, id, DRM_MODE_OBJECT_ENCODER);
./include/drm/drm_encoder.h:220:37: note: each undeclared identifier is reported only once for each function it appears in
In file included from /home/spectross/Asif/SM/DRM2.0.1.2/smi_drv.h:18:0,
                 from /home/spectross/Asif/SM/DRM2.0.1.2/smi_drv.c:9:
./include/drm/drm_gem.h: At top level:
./include/drm/drm_gem.h:95:29: error: field ‘vma_node’ has incomplete type
  struct drm_vma_offset_node vma_node;
In file included from /home/spectross/Asif/SM/DRM2.0.1.2/smi_drv.h:23:0,
                 from /home/spectross/Asif/SM/DRM2.0.1.2/smi_drv.c:9:
./include/drm/ttm/ttm_bo_driver.h:33:10: fatal error: ttm/ttm_bo_api.h: No such file or directory
 #include <ttm/ttm_bo_api.h>
compilation terminated.
scripts/Makefile.build:335: recipe for target '/home/spectross/Asif/SM/DRM2.0.1.2/smi_drv.o' failed
make[2]: *** [/home/spectross/Asif/SM/DRM2.0.1.2/smi_drv.o] Error 1
Makefile:1629: recipe for target '_module_/home/spectross/Asif/SM/DRM2.0.1.2' failed
make[1]: *** [_module_/home/spectross/Asif/SM/DRM2.0.1.2] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9'
Makefile:47: recipe for target 'default' failed
make: *** [default] Error 2

I have also tried to compile the same DRM driver on the X86 machine and it is compiled successfully.

Please help me to solve this errors to successfully compile the driver for Jetson TX-1.

Looking forward for your support.

Asif Ikbal

For DRM use-cases, we would suggest try the sample:


Jetson Linux API Reference: 08_video_dec_drm (Direct Rendering Manager)

It is supported by default. Please take a look and give it a try.


Thank you for your response.

The DRM sample you shared is working correctly.

Executing DRM sample is the second stage of our process. First I have to detect the other monitor first.

As I have maintained, we are trying to connecting another monitor over mini PCIe to VGA display explainer. We are using VL-MPEe-V5 from Versalogic which is a video expansion module with following details:

Chipset: Silicon Motion SM750. 2D Graphic Accelerator Videocore with 128-bit 2D graphic engine which supports a single display, two cloned displays, or two simultaneous independent displays.

I am trying to build the driver for the PCIe to VGA display explainer which is DRM based driver. During compiling of the driver I am getting the error. The errors I have posted in my previous post.

I am doing native compiling on Jetson TX-1.

Please help me to build the driver for PCIe to VGA display explainer.

Asif Ikbal

We would suggest check with vendor if the driver works on ARM. Probably the driver is for x86 machine only.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.