Hello,
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. We have connected a PCIe to VGA converter to connect other monitor. I am using VL-MPEe-V5 from Versalogic which is based on Silicon Motion SM750 chipset.
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 am using sm750fb driver from kernel source /kernel-4.9/drivers/staging/sm750fb/
. I am using this driver as a module. The driver is create a node in the /dev/fb1
.
The kernel module for sm750fb show in below:
desktop:~$ lsmod
Module Size Used by
fuse 118987 2
xt_CHECKSUM 1976 1
iptable_mangle 2737 1
ipt_MASQUERADE 2634 3
nf_nat_masquerade_ipv4 3993 1 ipt_MASQUERADE
iptable_nat 3423 1
nf_nat_ipv4 8240 1 iptable_nat
nf_nat 25596 2 nf_nat_masquerade_ipv4,nf_nat_ipv4
nf_conntrack_ipv4 14286 2
nf_defrag_ipv4 2129 1 nf_conntrack_ipv4
xt_conntrack 3979 1
nf_conntrack 131756 5 nf_conntrack_ipv4,nf_nat_masquerade_ipv4,xt_conntrack,nf_nat_ipv4,nf_nat
ipt_REJECT 2160 2
nf_reject_ipv4 4225 1 ipt_REJECT
xt_tcpudp 4740 6
ip6table_filter 3015 0
ip6_tables 21554 1 ip6table_filter
iptable_filter 3008 1
uvcvideo 95551 0
zram 30081 4
overlay 54478 0
bcmdhd 984400 0
cfg80211 721592 1 bcmdhd
mcp251x 14355 0
spidev 14699 0
can_dev 17212 1 mcp251x
sm750fb 41173 0
nvgpu 1726741 20
bluedroid_pm 16187 0
ip_tables 21475 3 iptable_mangle,iptable_filter,iptable_nat
x_tables 38080 10 ipt_REJECT,iptable_mangle,ip_tables,iptable_filter,xt_tcpudp,ipt_MASQUERADE,xt_CHECKSUM,ip6table_filter,xt_conntrack,ip6_tables
The PCIe to VGA converter is connected over mini PCIe connector. The device is visible in Jetson TX-1 PCIe.
02:00.0 VGA compatible controller: Silicon Motion, Inc. SM750 (rev a1) (prog-if 00 [VGA controller])
Subsystem: Silicon Motion, Inc. SM750
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 82
Region 0: Memory at 14000000 (32-bit, prefetchable) [size=64M]
Region 1: Memory at 18000000 (32-bit, non-prefetchable) [size=2M]
[virtual] Expansion ROM at 18200000 [disabled] [size=64K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1+ D2- AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [70] Express (v2) Legacy Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <1us, L1 <8us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <16us
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
LnkCtl: ASPM L0s Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR-, OBFF Not Supported
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
Vector table: BAR=5 offset=00000000
PBA: BAR=5 offset=00000000
Capabilities: [100 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP+ Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
Capabilities: [140 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Kernel driver in use: sm750fb
Kernel modules: sm750fb
Dmesg log from the device during module load:
[ 2.490628] sm750fb: module is from the staging directory, the quality is unknown, you have been warned.
[ 2.504232] no options.
[ 2.506822] sm750fb 0000:02:00.0: enabling device (0000 -> 0002)
[ 2.506833] no specific g_option.
[ 2.510331] mmio phyAddr = 18000000
[ 2.510383] mmio virtual addr = ffffff8014200000
[ 2.510390] video memory phyAddr = 14000000, size = 16777216 bytes
[ 2.510393] video memory vaddr = ffffff8017000000
[ 2.555245] CAN device driver interface
[ 2.586396] mcp251x spi3.0 can0: MCP2515 successfully initialized.
[ 2.649311] use simul primary mode
[ 2.649316] crtc->cursor.mmio = ffffff80142800f0
[ 2.649323] ret = 5,fb_find_mode failed,with driver prepared modes
[ 2.655626] success! use specified mode:800x600-16@60 in kernel prepared default modedb
[ 2.655630] Member of info->var is :
xres=800
yres=600
xres_virtual=800
yres_virtual=600
xoffset=0
yoffset=0
bits_per_pixel=16
...
[ 2.655633] fix->smem_start = 14000000
[ 2.655635] fix->smem_len = 1000000
[ 2.655637] fix->mmio_start = 18000000
[ 2.655639] fix->mmio_len = 200000
Now problem is, monitor connected over the PCIe to VGA adapter is not detected in Jetson TX-1.
gst-launch-1.0 -v v4l2src device=/dev/video0 ! video/x-raw,format=YUY2 ! nvvidconv ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=I420' ! nvoverlaysink display-id=0
I am using above gstreamer pipeline to render usb camera video stream on the monitor. Our Jetson TX-1 is also connected with a monitor through HDMI. The pipeline worked fine with in the HDMI monitor but when I changed the display-id=1 in the pipeline the other monitor is not rendering the usb camera video.
How can I detect the other monitor on Jetson TX-1?
Please help me to solve this problem.
Thanks,
Asif Ikbal