im not clear from reading the hardware ref. manual if the adv7850 supports 1 edid map for all 4 hdmi ports
or if it can have 4 maps for all 4 ports.
Yes, the device is generally set up to use the same EDID for each HDMI port and the only thing that changes is the source physical address (SPA) and check sum which are modified on the fly as the EDID is read out.
ok, but my real question is this:
can I have a different edid for each hdmi port OR does all 4 hdmi ports share the same edid?
It usually shares the same edid, not sure why you would need different edids for each port.
well, that is how its currently working.
if you had 4 sources plugged in, why would you not want the capability of having 4 different edids - a different one for each port? if we are switching between sources, we dont want to re-progam the edid every time if possible. In our system the user has the capability of creating custom edid that can be applied to the specified hdmi port. For example, we could have a custom edid programmed for port A, & the sink edid programmed for all other ports B-D.
so let me ask the questions again:
Is it possible to have a different programmed edid for each hdmi port?? if so, how do I program/access each edid port map?
The 7850 isn't a sink only like the ADV7611 is. It is basically a repeater and must have a single sink connected to it's output. Therefore the only true EDID should come from the sink connected to the 7850 output with only the SPA changing so CEC can work properly.
Yes you could have individual EDID's but you'd have to program the memory for each one then toggle the HPA line to tell source 'A...D' there's a new EDID to read. There is only one 256 byte block available for HDMI EDID memory and one 256 byte block for the VGA EDID.
I may be missing something but what do you gain with having 4 unique EDIDs, one for each port?
There are cases where we want to override the EDID from the sink so we are interested in if we are able to present different EDIDs to each connected source using the 7850.
It was mentioned "there is only one 256 block for HDMI EDID" but we are trying to reconcile that with the sections of the Hardware manual that mention "Structure of internal e-edid for port a" and "structure of internal e-edid of ports b,c and d". There seems to be multiple 512 EDID sections there. We were wondering if there is a 512 EDID available for each port independently? That way we can set them all up and after that each port presents a unique EDID with all ports connected at the same time.
block = 128 bytes. each block has a check sum, CEA blocks also have SPA's
segment = 2 block = 256 bytes
A normal EDID is comprised of 2 block or 1 segment (one VESA block and one CEA block). The external SPI EEPROM can be 4kbits or 512 bytes or 2 segments or 4 blocks. The entire 4kbit SPI EEPROM can be set up to behave as one EDID memory where the source reads the first block from the internal EDID memory and the requests the second segment that forces the chip to load the second segment to present to the source.
So what you want, assuming 1 segment per port, is 1 segment per port for a total of 4 segments or 8kbits of SPI EEPROM memory.
There is only a total of 512 bytes of internal memroy in the 7850. If 2 DDC attempts to access the EDID meory at the same time then one will be held off until the other one completes.
The only thing that will be dynamically changed is the 2-byte SPA value and the check sum in the CEA blocks.
Now if you truly want unique EDID's for each port, you can disable the 7850 internal EDID and use external EDID memory connected to each port. Or you need to reprogram the internal EDID memory differently for each port
Okay so when you say "Or you need to reprogram the internal EDID memory differently for each port". If I have multiple devices connected to the 7850 and I "reprogram the internal EDID memory differently for each port" for each input will they all see the same EDID?
Is the bottom line, there is only one internal HDMI EDID and all inputs will see the EDID written in the internal EDID area when they retrieve the EDID from the 7850 from different inputs? We can change the EDID and trigger a specific input to retrieve the EDID (hpa deassert and assert) but if any other source retrieves the EDID at that point it will get the same exact EDID.
Correct, there is only one EDID available at a time. if you set it up for port D, then port B comes in and wants an EDID while port D is reading it, port B will get the same EDID with the exception that the SPA and checksum will be different.
You can write the EDID and tirgger a specific port to read it, then write a new EDID and trigger that port.
Thanks. This brings to question the HDCP, sounds like the we can't have one input set for non encryption and the other ports retain their encryption and set for HDCP capable. All the inputs are either HDCP capable or none are. Is this correct? We have cases where we want to tell the source we can't handle HDCP so they would send unencrypted data only ( mainly because a connected sink can't handle encrypted content). We thought we would be able to retain all the other links in the HDCP capable mode. Sounds like that isn't a possibility.
The source decides if it must transmit encrypted video.
It only reads the EDID to determine if the sink (in this case the 7850) can handle it. The 7850 has XpressView which means it can keep HDCP links up and authenticated even if the port is not routed to the output.
The one and only sink can either handle encrypted video or it can't.
If the source can't send encrypted data, then it won't.
The inputs can be either HDCP or non-HDCP sources, it doesn't matter, the 7850 will both at the same time
True about the source can decide if it needs to transmit encrypted video. True the 7850 can handle if multiple sources send in encrypted or unencrypted video in different ports. But the 7850 is still configured, or letting the sources know, that each input is HDCP capable (with one system, non port specific register) right?
Apple computers can send encrypted or non encrypted video based upon the capabilities of the sink. In the 7842 we would set the encryption bit and the Apple computers would send encrypted video and if we set the the 7842 to not HDCP capable the apple would send unencrypted video.
My concern is with one bit for all 4 inputs on the 7850 if we have one port that is an apple and all the rest are blue rays, if we disable the encryption capable part of the 7850, since it isn't per port, will all the other ports then report they can no handle encrypted video to the source?
You can not disable the encryption for the ADV7850, the ADV7850 always has keys.
For the ADV7842 you can disable the key by changing the mapping to the key memory and then the part will only receive non-encrypted data. The ADV7842 also has a -P part which does not have any keys to begin with.
You mentioned "you can not disable the encryption for the ADV7850", if a downstream (on the back side of the 850) device can not handle encryption and the 7850 is talking to the upstream device how can the ADV7850 be configured to let the upstream (apple PC) know not to send encrypted video ?
If there are more HDMI devices in the system you have to implement an HDMI repeater in your system software and pass the downstream keys to the source-- if there aren't any keys and you have set up the BCAPS properly, authentication will fail.
Thanks for the fast responses. Currently for the 7850 we are writing 0x80 (HDCP_AO) to the HDMI RX MAP offset 0 to turn off encryption capable for to the source and the Apple computers see that and then start sending unencrypted video. Then we clear the 0x80 bit in that same register and the Apple computers start sending encrypted video. Is that the expected behavior?
You aren't turning off encryption. You are just causing the HDCP engine not to be able to read the keys because you'd corrupted the internal memory address of the keys with that bit so when a source tries to authenticate, it will fail as if the source was authenticating with a non-HDCP device.
Of course, when the memory address is correct and the keys are read, it'll authenticate and the source will encrypt.
You are not turning off encryption, only the source can do that. You are just giving the engine the wrong key address-- it's just a hack that causes encryption to fail-- it doesn't tell the source not to encrypt.
What a source chooses to do with an authentication fail is up to the source. Some will stop encryption but most will just not transmit anything but snow or black screens.
for what we wanted, even a hack, the end goal is satisfied. The apple will send unencrypted video so downstream projectors that can't handle encrypted video will display the content. This won't work for bluerays but it isn't expected to be used with those devices. We only wanted the source to see we can't handle encryption so it doesn't send encrypted data. This is specifically for the apple. Can this be done on a per port instead of globally?
There is only one key memory and one address register-- it's all ports or nothing.
Retrieving data ...