1TDA19988 Driver (HDMI Framer) 2============================= 3 4Overview 5-------- 6 7This is the driver for the HDMI Framer chip commonly found on the BeagleBone 8Black. 9 10Interface 11--------- 12 13To make things easy for the frame buffer driver, a block device driver 14interface is provided. Read requests cause the TDA19988 driver to read 15the EDID and return the data. 16 17Documentation 18------------- 19 20The documentation available is rather thin. NXP doesn't provide a 21datasheet on their website and they did not respond to my request 22for a datasheet. There are a few other sources of information: 23 24 * TDA9983B.pdf - this chip is similar but not the same. Full 25 register descriptions are provided. This was suggested to me by 26 the author of the Linux driver and someone at BeagleBoard.org as 27 neither of them were able to get a full datasheet for the TDA19988. 28 29 * TDA19988.pdf - you can probably find this on the net. It's a 30 pre-production draft of the datasheet for the TDA19988. It has 31 some information about how things work, but it doesn't give details 32 on the registers. 33 34 * LPC4350_FPU_TFT_HDMI-v2.0/Driver/tda19988.c - there's some 35 example code from NXP for a Hitex LPC4350 REV A5 which includes 36 a BSD licensed driver from NXP. It isn't complete as it only does 37 test mode, put-through mode, and EDID reading. Some of the comments 38 in the code make it seem like it isn't totally working/tested. 39 40 * linux/drivers/gpu/drm/i2c/tda998x_drv.c - there is a Linux driver 41 which implements a lot of functionality. As is always the case, 42 great care has to be taken to only study the code to learn the 43 functionality of the chip and not reproduce/copy the code. 44 45Limitations 46----------- 47 48Currently, only the EDID reading functionality is implemented. 49 50Testing the Code 51---------------- 52 53Starting up an instance: 54 55/bin/service up /service/tda19988 -label tda19988.1.3470 \ 56 -args 'cec_bus=1 cec_address=0x34 hdmi_bus=1 hdmi_address=0x70' 57 58Killing an instance: 59 60/bin/service down tda19988.1.3470 61 62The driver is meant to be accessed from other drivers using the block 63device protocol, so it doesn't have a reserved major number and device file. 64However, if you want a simple test from user space, you can create a temporary 65device file to read the EDID like this: 66 67cd /dev 68mknod tda19988 b 32 0 69chmod 600 tda19988 70/bin/service up /service/tda19988 -label tda19988.1.3470 \ 71 -dev /dev/tda19988 \ 72 -args 'cec_bus=1 cec_address=0x34 hdmi_bus=1 hdmi_address=0x70' 73dd if=/dev/tda19988 of=/root/edid.dat count=1 bs=128 74/bin/service down tda19988.1.3470 75hexdump -C /root/edid.dat 76rm tda19988 77 78The hexdump should begin with the EDID magic number: 00 ff ff ff ff ff ff 00 79 80