sound: xilinx: use hdmi-codec as dp audio codec
According to the description in the section "Audio Management" of Chapter 33 in "Zynq UltraScale+ Device Technical Reference Manual", A set/clr operation to TX_AUDIO_CONTROL register is needed when we start/stop audio play. It means that when we stop playing audio, TX_AUDIO_CONTROL register should be cleared. Now the dp codec driver xilinx-dp-codec.c can't access DP Tx registers and it has no control of DP Tx Audio registers. This results that even if we close the audio device after playing audio, Tx Audio is still working and it triggers numerous underflow interrupts (bit 17 in DP_INT_STATUS). zcu102-zynqmp:~$ cat /proc/interrupts | grep display 52: 1063792 0 0 0 GICv2 151 Level fd4a0000.display zcu102-zynqmp:~$ top Mem: 158168K used, 3864792K free, 9992K shrd, 0K buff, 36500K cached CPU: 0.0% usr 1.0% sys 0.0% nic 98.9% idle 0.0% io 0.0% irq 0.0% sirq Load average: 0.03 0.03 0.01 1/122 391 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 223 2 root SW 0 0.0 0 0.9 [irq/52-fd4a0000] 352 1 root S 94148 2.3 0 0.0 /usr/sbin/tcf-agent -d -L- -l0 So we register a HDMI codec device and use callbacks in hdmi_codec_ops to set/clr TX_AUDIO_CONTROL. Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Please register or sign in to comment