Question regarding HDMI Audio support on i.MX6 with vanilla kernel
Russell King - ARM Linux
linux at armlinux.org.uk
Tue Nov 7 10:53:26 UTC 2017
On Tue, Nov 07, 2017 at 10:15:02AM +0000, Russell King - ARM Linux wrote:
> On Tue, Nov 07, 2017 at 10:00:48AM +0000, Luís Mendes wrote:
> > Hi Russell,
> >
> > Sorry for sending all these emails, but to me dw_hdmi device driver is
> > broken regarding HDMI detection and audio support. I don't want to waste
> > your time, but I would like to have your opinion since you're so involved
> > in the ARM support for the Linux kernel.
>
> If it is so broken, how come it works for me and others?
btw, if you do this without your edid firmware loaded:
hexdump -C /sys/class/drm/card0-HDMI-A-1/edid
do you get any EDID? If so, then connector->edid_blob_ptr is populated
with the connector's EDID (see drivers/gpu/drm/drm_sysfs.c, edid_show()).
The only place that sets that is drm_mode_connector_update_edid_property().
That is called when loading a firmware edid for the connector, or by
dw-hdmi inside dw_hdmi_connector_get_modes().
So, if you have no firmware edid, and you get EDID from the above file,
then that can only have come from dw-hdmi successfully reading the EDID
from the connected device.
Here's an example, with a Samsung S24C750 monitor attached:
root at hbi2ex:~/xf86-video-armada-0.0.0# uname -a
Linux hbi2ex 4.14.0-rc1+ #2214 SMP Wed Oct 25 10:51:58 BST 2017 armv7l armv7l armv7l GNU/Linux
root at hbi2ex:~/xf86-video-armada-0.0.0# hexdump -C /sys/class/drm/card0-HDMI-A-1/edid
00000000 00 ff ff ff ff ff ff 00 4c 2d 5d 0a 41 5a 58 5a |........L-].AZXZ|
00000010 1e 17 01 03 80 35 1e 78 2a f7 11 a3 56 4f 9e 28 |.....5.x*...VO.(|
00000020 0f 50 54 bf ef 80 71 4f 81 c0 81 00 81 80 95 00 |.PT...qO........|
00000030 a9 c0 b3 00 01 01 02 3a 80 18 71 38 2d 40 58 2c |.......:..q8- at X,|
00000040 45 00 13 2b 21 00 00 1e 01 1d 00 72 51 d0 1e 20 |E..+!......rQ.. |
00000050 6e 28 55 00 13 2b 21 00 00 1e 00 00 00 fd 00 32 |n(U..+!........2|
00000060 4b 1e 51 11 00 0a 20 20 20 20 20 20 00 00 00 fc |K.Q... ....|
00000070 00 53 32 34 43 37 35 30 0a 20 20 20 20 20 01 74 |.S24C750. .t|
00000080 02 03 1a f1 46 90 04 1f 13 03 12 23 09 07 07 83 |....F......#....|
00000090 01 00 00 66 03 0c 00 20 00 80 01 1d 00 bc 52 d0 |...f... ......R.|
000000a0 1e 20 b8 28 55 40 13 2b 21 00 00 1e 8c 0a d0 90 |. .(U at .+!.......|
000000b0 20 40 31 20 0c 40 55 00 13 2b 21 00 00 18 8c 0a | @1 . at U..+!.....|
000000c0 d0 8a 20 e0 2d 10 10 3e 96 00 13 2b 21 00 00 18 |.. .-..>...+!...|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 89 |................|
00000100
I can assure you that this has been the case for every 4.x kernel
version - I've booted them all on several imx6 platforms. One
imx6 platform is permanently connected to AV2 on my TV, and it
always finds the EDID for the TV.
So, I think there is something going on which is interfering with
the ability for the i2c driver to get the EDID from your TV - it
fails a number of times, but I think eventually it does succeed.
Maybe it gets the first page (128 bytes) of EDID which contains
the basic information, but fails to get the second page which
contains the HDMI vendor block along with all the audio information.
That basically means there's something wrong with the I2C/DDC bus.
Maybe the clock rate is too fast (DDC is 100kHz, not 400kHz).
Maybe the pull-ups are wrong. Maybe the board has wrong pull-ups.
Could be many things.
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up
More information about the etnaviv
mailing list