Sorry, you need to enable JavaScript to visit this website.

Running HDMI without sound signals

3 posts / 0 new
Running HDMI without sound signals

Hi All,

I'm trying to run Embedded Linux on the Zedboard with only the video signals for HDMI. I've succesfully ran the HDMI reference designs including all the sound components, however, when I try and just run Linux without all the sound components I can't get anything to display on the screen.

The only IP's I'm including for video are the vdma, axi_hdmi_tx, axi_clkgen_0 and axi_iic_0 components as well as the axi interconnects. With only the video signals required I've sent scl_o and sda_o of axi_iic directly to the scl and sda pins of the ADV7511 chip instead of through the mixer.

Is it mandatory to include the audio signals?

Thanks in advance.

Here's the boot log:

Device: zynq_sdhci
Manufacturer ID: 27
OEM: 5048
Name: SD04G
Tran Speed: 50000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 3.7 GiB
Bus Width: 4-bit
reading uEnv.txt
** Unable to read file uEnv.txt **
Copying Linux from SD to RAM...RFS in ext4
reading uImage
3253768 bytes read in 292 ms (10.6 MiB/s)
reading devicetree.dtb
9193 bytes read in 17 ms (527.3 KiB/s)
## Booting kernel from Legacy Image at 03000000 ...
Image Name: Linux-3.15.0
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3253704 Bytes = 3.1 MiB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 02a00000
Booting using the fdt blob at 0x2a00000
Loading Kernel Image ... OK
Loading Device Tree to 1fb2a000, end 1fb2f3e8 ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0x0
Linux version 3.15.0 (glenn@glenn-E7212) (gcc version 4.6.3 (Sourcery CodeBench Lite 2012.03-79) ) #1 SMP PREEMPT Sat Sep 20 16:55:31 EST 2014
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: Xilinx Zynq ZED
bootconsole [earlycon0] enabled
cma: CMA: reserved 128 MiB at 17800000
Memory policy: Data cache writealloc
PERCPU: Embedded 8 pages/cpu @dfb9e000 s8448 r8192 d16128 u32768
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048
Kernel command line: console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 381968K/524288K available (4155K kernel code, 241K rwdata, 1596K rodata, 196K init, 134K bss, 142320K reserved, 0K highmem)
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
vmalloc : 0xe0800000 - 0xff000000 ( 488 MB)
lowmem : 0xc0000000 - 0xe0000000 ( 512 MB)
pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
.text : 0xc0008000 - 0xc05a5f54 (5752 kB)
.init : 0xc05a6000 - 0xc05d7100 ( 197 kB)
.data : 0xc05d8000 - 0xc06146e0 ( 242 kB)
.bss : 0xc06146ec - 0xc0636024 ( 135 kB)
Preemptible hierarchical RCU implementation.
Dump stacks of tasks blocking RCU-preempt GP.
RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
NR_IRQS:16 nr_irqs:16 16
slcr mapped to e0802000
zynq_clock_init: clkc starts at e0802100
Zynq clock init
sched_clock: 16 bits at 54kHz, resolution 18432ns, wraps every 1207951633ns
timer #0 at e0804000, irq=43
Console: colour dummy device 80x30
Calibrating delay loop... 1332.01 BogoMIPS (lpj=6660096)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x3eb318 - 0x3eb370
L310 cache controller enabled
l2x0: 8 ways, CACHE_ID 0x410000c8, AUX_CTRL 0x72760000, Cache size: 512 kB
CPU1: Booted secondary processor
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
Brought up 2 CPUs
SMP: Total of 2 processors activated.
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
regulator-dummy: no parameters
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor ladder
cpuidle: using governor menu
hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 4 bytes.
zynq-ocm f800c000.ps7-ocm: ZYNQ OCM pool: 256 KiB @ 0xe0880000
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
media: Linux media interface: v0.10
Linux video capture interface: v2.00
EDAC MC: Ver: 3.0.0
Advanced Linux Sound Architecture Driver Initialized.
Switched to clocksource ttc_clocksource
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP: reno registered
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
NET: Registered protocol family 1
hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
futex hash table entries: 512 (order: 3, 32768 bytes)
msgmni has been set to 1002
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
dma-pl330 f8003000.ps7-dma: Loaded driver for PL330 DMAC-2364208
dma-pl330 f8003000.ps7-dma: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
xuartps e0001000.uart: clock name 'aper_clk' is deprecated.
xuartps e0001000.uart: clock name 'ref_clk' is deprecated.
console [ttyPS0] enabled MMIO 0xe0001000 (irq = 82, base_baud = 3125000) is a xuartps
console [ttyPS0] enabled
bootconsole [earlycon0] disabled
bootconsole [earlycon0] disabled
xdevcfg f8007000.devcfg: ioremap 0xf8007000 to e0814000
[drm] Initialized drm 1.1.0 20060810
platform 43c20000.axi_hdmi: Driver axi-hdmi requests probe deferral
brd: module loaded
loop: module loaded
libphy: XEMACPS mii bus: probed
xemacps e000b000.eth: pdev->id -1, baseaddr 0xe000b000, irq 54
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ULPI transceiver vendor/product ID 0x0451/0x1507
Found TI TUSB1210 ULPI transceiver.
ULPI integrity check: passed.
zynq-ehci zynq-ehci.0: Xilinx Zynq USB EHCI Host Controller
zynq-ehci zynq-ehci.0: new USB bus registered, assigned bus number 1
zynq-ehci zynq-ehci.0: irq 53, io mem 0x00000000
zynq-ehci zynq-ehci.0: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver ftdi_sio
usbserial: USB Serial support registered for FTDI USB Serial Device
mousedev: PS/2 mouse device common for all mice
i2c /dev entries driver
zynq-edac f8006000.ps7-ddrc: ecc not enabled
Xilinx Zynq CpuIdle Driver started
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
mmc0: no vqmmc regulator found
mmc0: no vmmc regulator found
mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA
ledtrig-cpu: registered to indicate activity on CPUs
hidraw: raw HID events driver (C) Jiri Kosina
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP: cubic registered
NET: Registered protocol family 17
Registering SWP/SWPB emulation handler
axi-hdmi 43c20000.axi_hdmi: No connectors reported connected with modes
[drm] Cannot find any crtc or sizes - going 1024x768
mmc0: new high speed SDHC card at address 0007
mmcblk0: mmc0:0007 SD04G 3.70 GiB
mmcblk0: p1 p2
Console: switching to colour frame buffer device 128x48
axi-hdmi 43c20000.axi_hdmi: fb0: frame buffer device
axi-hdmi 43c20000.axi_hdmi: registered panic notifier
[drm] Initialized axi_hdmi_drm 1.0.0 20120930 on minor 0
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
ALSA device list:
No soundcards found.
EXT4-fs (mmcblk0p2): warning: mounting fs with errors, running e2fsck is recommended
EXT4-fs (mmcblk0p2): recovery complete
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:2.
Freeing unused kernel memory: 196K (c05a6000 - c05d7000)
random: init urandom read with 29 bits of entropy available
�nit: ureadahead main process (687) terminated with status 5
Last login: Thu Jan 1 00:00:13 UTC 1970 on tty1
Welcome to Linaro 12.09 (GNU/Linux 3.15.0 armv7l)

* Documentation:

New release '14.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


HDMI and sound

The HDMI video is sent to the ADI ADV7511 transmitter, while the associated sound signals may be routed via the SPDIF IP to the HDMI output device, or via the codec to the audio jacks.   There is no requirement that I'm aware of that would prevent you from sending video only - in fact, we had quite a bit of trouble originally getting the audio to work, so video only was precisely what we started with!
Just glancing through the log, I'm noting that the addresses for the HDMI devices look like they are from an old hw platform that utilized an obsolete DMA setup for the video and audio.  You may want to download the latest HDMI standalone design for Zedboard and work from that hardware platform instead.  The HDMI is mapped to 0x70e00000 instead of 0x43c200000, so that's an easy way to tell if you have the newer design.  
That said, the old design should still work, but there are a couple of lines in the log that indicates the negotiation with the HDMI output device is not happening:
axi-hdmi 43c20000.axi_hdmi: No connectors reported connected with modes
[drm] Cannot find any crtc or sizes - going 1024x768
I think the easiest way to debug the problem is to revert to the full system with both audio and video, and then simply remove the SPDIF reference from the device tree.   That will shut off audio to the ADV7511 transmitter, even though it may still be present in incoming feed.  However, since there is no Linux driver without the device tree entry, any audio will be ignored.   Once this works, you can then go about modifying the hardware design to remove the pieces you don't need, and test each step to determine if your system stops working the way you would like it to.   That will isolate the root cause of your issue.

HDMI and sound

Hi Ron,

thanks for your assistance. Your quite right about the HDMI address mapping, however, the difference with the addresses is because I built the entire design from scratch placing and routing the IP's myself hence changing the addresses. I'm using the most recent Analog Devices files.

I ended up starting from the complete version and scaling back as you suggested, with success. It seems that the spdif is required for the board to negotiate with the HDMI output device. My problem was that I didn't use the axi_iic IP correctly, I didn't use a bidrectional buffer for the sda and scl signals which was required to get it to work.

Thanks for your help Ron.