BBB Bare Metal with HDMI

Hello! I’ve been hacking around with the BBB for some time now, mostly doing bare metal programming. On other boards that I build projects with, I usually use one of my TFTs that I have laying around and use my custom graphical interface for the UI part. But the BBB is different. While I have been able to use a TFT with it, I’d like to get the HDMI up and running on bare metal if possible. Looking over the datasheet for the TDA19988BHN I can see that basically it just takes the LCD RGB signals and concerts that to HDMI output. However, I have not had any luck with feeding it from the library I wrote for my TFT. Is there something different I need to do with the signals? Does the HDMI chip require some kind of initialization before being used? The datasheet I have is one that I found on some third party website and I suspect it may be incomplete. I can’t find the official datasheet on NXP’s website at all.

Any help would be appreciated. Any advice for anyone else who has had success in this arena would also be much appreciated. Thanks in advance!

Hi,

I was a Google Summer of Code student writing drivers for the Minix operating system last summer. I was working on implementing EDID reading (i.e. getting the supported resolutions, etc from the connected display/monitor via the HDMI chip). I searched far and wide and there isn’t documentation with register definitions for the TDA19988. I sort of had to piece things together using the datasheet for a similar chip (TDA9983B), that pre-production draft of the TDA19988 datasheet (I think it’s the one you are referring to), some example code from NXP (Google search for LPC4350_FPU_TFT_HDMI-v2.0.zip), and the Linux driver sources. I’ve contacted the author of the Linux driver and various people at BeagleBoard.org and that’s the only documentation available. Well, there is the Minix driver now but it only does EDID reading at the moment (no hdmi output as there isn’t a driver for the am335x lcd controller yet for Minix).

As for initializing the chip. Yes, there are several commands you need to send it via I2C to turn on the HDMI interface and configure the output.

Thomas

Thanks for the info. I downloaded the driver code you referenced and it looks workable, but very incomplete. So next I downloaded the datasheet for the TDA9983. That’s more along the lines of what I was expecting in the datasheet for the 19988. How close are the registers for the 9983 to the 19988? Are they a spot-on match? I know the rest of the information will be different, but the registers are all I care about at this point. I can figure the rest out once I have that part down.

How close are the registers for the 9983 to the 19988? Are they a spot-on match?

I don't think they're a spot-on match. I remember having to cross
reference all the information I could find in order to build my own
list of register definitions. My code is here if it helps:
http://git.minix3.org/?p=minix.git;a=blob;f=drivers/tda19988/tda19988.c;hb=HEAD
Though it's only for EDID reading (not using the chip for actually
outputting HDMI).

Thomas

I really appreciate all the help so far. The resources you have pointed me to are far better than what I had. I’ve already taken a look at your Minix source code. I’ll sit down with that, the Linux code, and the various datasheets and see what I can pull together. Once I have something working, IF I get something working, I’ll post all the information back to this forum. Most people may not be too interested in the bare metal part, but it could be useful for future driver development for other OSs.

Travis:

Do you have HDMI output working on the Black with “bare-metal”? Do you have some code that you could share? I’m going “bare-metal” and would like to see what you have.

Thanks in advance!
Dean

Yes, I do have this somewhat working now. It has taken a lot of time and many different resources to get to where I am now, but progress is coming along slowly. I have a few other projects going on in parallel, so I don't have all the time if like to devote to it. I should have the code in a stable and mostly functional state pretty soon. But I wouldn't expect ago of the bells and whistles to be working. I'll post back here with the Git repo once I've uploaded it.

Also, I plan to post any and all docs and information along with the code so that the community can get involved and help make this driver fully functional. Just keep an eye on this post for the next couple of weeks.

Thanks alot for all your efforts! I’ll keep an eye on this group for your developments.

Travis:

I know that you have alot going on there with other projects, but just checking if you have any progress on bare-metal HDMI code at this point? I’m looking forward to what you have to show. Especially the pin-muxing part :slight_smile:

Sincerely,
Dean

Travis:

Would you be willing to share your “HDMI” code in it’s current state? I’d like to be able to play with it and see if I could get something working with the hardware I’ve got.

Thanks in advance!

Sincerely,
Dean