On 01/12/2018 07:12 PM, Hans Verkuil wrote: > On 01/12/2018 06:52 PM, Ville Syrjälä wrote: >> On Fri, Jan 12, 2018 at 06:14:53PM +0100, Hans Verkuil wrote: >>> On 01/12/2018 05:30 PM, Ville Syrjälä wrote: >>>> On Fri, Jan 12, 2018 at 05:19:44PM +0100, Hans Verkuil wrote: >>>>> Hi Ville, >>>>> >>>>> For some strange reason your email disappeared from the Cc list. Perhaps it's the >>>>> ä that confuses something somewhere. >>>>> >>>>> So I'll just forward this directly to you. >>>>> >>>>> Can you please take a look? This patch series has been in limbo for too long. >>>> >>>> IIRC last I looked we still had some ragistration race to deal with. >>>> Was that fixed? >>> >>> That was fixed in v5. >>> >>>> >>>> Also I think we got stuck on leaving the zombie device lingering around >>>> when the display is disconnected. I couldn't understand why that is >>>> at all useful since you anyway remove the device eventually. >>> >>> It's not a zombie device. If you disconnect and reconnect the display then the >>> application using the CEC device will see the display disappear and reappear >>> as expected. >>> >>> It helps if you think of the normal situation (as is present in most ARM SoCs) >>> where CEC is integral to the HDMI transmitter. I.e. it is not functionality that >>> can be removed. So the cec device is always there and an application opens the >>> device and can use it, regardless of whether a display is connected or not. >>> >>> If a display is detected, the EDID will be read and the CEC physical address is >>> set. The application is informed of that through an event and the CEC adapter >>> can be used. If the HPD disappears the physical address is reset to f.f.f.f and >>> again the application is informed. And in fact it still has to be able to use >>> the CEC adapter even if there is no HPD since some displays turn off the HPD when >>> in standby, but CEC can still be used to power them up again. >> >> Hmm. So you're saying there are DP devices out there that release HPD >> but still respond to DPCD accesses? That sounds... wrong. > > Not quite. To be precise: there are HDMI displays that release HPD when in standby > but still respond to CEC commands. > > Such displays are still being made today so if you are building a product like > a media streaming box, then this is something to take into account. > > However, for this specific case (CEC tunneling) it is a non-issue since the > DP CEC protocol simply doesn't support sending CEC commands without HPD. > >> In general I don't think we can assume that a device has retained its >> state if it has deasserted HPD, thus we have to reconfigure everything >> again anyway. >> >>> >>> Now consider a future Intel NUC with an HDMI connector on the backplane and >>> working DP CEC-Tunneling-over-AUX support (e.g. the Megachips MCDP2900): the >>> CEC support is always there (it's built in), but only becomes visible to the >>> kernel when you connect a display. You don't want the cec device to disappear >>> whenever you unplug the display, that makes no sense. Applications would >>> loose the CEC configuration and have to close and reopen (when it reappears) >>> the cec device for no good reason since it is built in. >> >> If the application can't remember its settings across a disconnect it >> sounds broken anwyay. This would anyway happen when you disconenct the >> entire dongle. > > Huh? > >> >>> >>> The same situation is valid when using a USB-C to HDMI adapter: disconnecting >>> or reconnecting a display should not lead to the removal of the CEC device. >>> Only when an adapter with different CEC capabilities is detected is there a >>> need to actually unregister the CEC device. >>> >>> All this is really a workaround of the fact that when the HPD disappears the >>> DP-to-HDMI adapter (either external or built-in) also disappears from the >>> topology, even though it is physically still there. >> >> The dongles I've seen do not disappear. The downstream hpd is >> signalled with short hpd pulses + SINK_COUNT instead. >> >> But I've not actually seen a dongle that implements the >> BRANCH_DEVICE_CTRL DPCD register, so not quite sure what those would >> actually do. The spec does say they should default to using long >> hpd for downstream hpd handling. > > I did a few more experiments and it appears that someone somewhere keeps > track of DP branch devices. I.e. after disconnecting my usb-c to hdmi adapter > it still appears in i915_display_info. At least until something else is > connected. I basically need to hook into the DP branch detection. > > Something to look at this weekend. I found a better place to do the CEC (un)registration: a long HPD pulse indicates that the DPCD registers have changed, so that's when I should detect whether there is a new branch device with CEC capabilities. Regards, Hans _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel