[PATCHv6 0/3] drm/i915: add DisplayPort CEC-Tunneling-over-AUX support

Hans Verkuil hverkuil at xs4all.nl
Wed Jun 27 06:17:38 UTC 2018


Ping!

Adding Ville to the CC list, I think I forgot to add you, sorry about that.

Regards,

	Hans

On 06/12/2018 01:18 PM, Hans Verkuil wrote:
> From: Hans Verkuil <hans.verkuil at cisco.com>
> 
> This patch series adds support for the DisplayPort CEC-Tunneling-over-AUX
> feature. This patch series is based on the current media master branch
> (https://git.linuxtv.org/media_tree.git/log/) but it applies fine on top
> of the current mainline tree.
> 
> This patch series has been tested with my NUC7i5BNK, a Google USB-C to 
> HDMI adapter and a Club 3D DisplayPort MST Hub + modified UpTab DP-to-HDMI
> adapter (where the CEC pin is wired up). The latter is to check that
> replacing a USB-C to HDMI adapter by a USB-C MST Hub works correctly.
> CEC for MST is currently not supported.
> 
> Please note this comment at the start of drm_dp_cec.c:
> 
> ----------------------------------------------------------------------
> Unfortunately it turns out that we have a chicken-and-egg situation
> here. Quite a few active (mini-)DP-to-HDMI or USB-C-to-HDMI adapters
> have a converter chip that supports CEC-Tunneling-over-AUX (usually the
> Parade PS176), but they do not wire up the CEC pin, thus making CEC
> useless.
> 
> Sadly there is no way for this driver to know this. What happens is
> that a /dev/cecX device is created that is isolated and unable to see
> any of the other CEC devices. Quite literally the CEC wire is cut
> (or in this case, never connected in the first place).
> 
> The reason so few adapters support this is that this tunneling protocol
> was never supported by any OS. So there was no easy way of testing it,
> and no incentive to correctly wire up the CEC pin.
> 
> Hopefully by creating this driver it will be easier for vendors to
> finally fix their adapters and test the CEC functionality.
> 
> I keep a list of known working adapters here:
> 
> https://hverkuil.home.xs4all.nl/cec-status.txt
> 
> Please mail me (hverkuil at xs4all.nl) if you find an adapter that works
> and is not yet listed there.
> 
> Note that the current implementation does not support CEC over an MST hub.
> As far as I can see there is no mechanism defined in the DisplayPort
> standard to transport CEC interrupts over an MST device. It might be
> possible to do this through polling, but I have not been able to get that
> to work.
> ----------------------------------------------------------------------
> 
> I really hope that this work will provide an incentive for vendors to
> finally connect the CEC pin. It's a shame that there are so few adapters
> that work (I found only three USB-C to HDMI adapters that work, and no
> (mini-)DP to HDMI adapters at all). It is a very nice feature for HTPC
> boxes.
> 
> Apologies for the long delay between v5 and this v6: too many other
> projects needed my attention.
> 
> The main change since v5 is that the CEC adapter is now unregistered
> after a user-defined time (by default 1 second) if the EDID is unset.
> If the EDID comes back within that time, then the existing CEC adapter
> is used as this is assumed to be a HPD off-and-on toggle from the
> display. The delay can also be set to 0 through a module option. In
> that case the CEC adapter will never be unregistered as long as the
> connector remains registered (or if a new HDMI adapter was connected
> with different capabilities from the previous adapter).
> 
> Note that I removed the Tested-by tag from Carlos Santa due to the
> substantial rework of the code. Carlos, can you test this again?
> 
> Regards,
> 
>         Hans
> 
> Changes since v5:
> 
> - Moved the logic of when to unregister a CEC adapter to the drm core
>   code, since this is independent of the actual driver implementation.
> - Simplified the calls the driver needs to make: the core code is
>   informed when a connector is (un)registered, when the EDID is
>   unset or set and when a DP short pulse is seen and you need to check
>   if that is for a CEC interrupt.
> - Added the drm_dp_cec_unregister_delay module option to set the delay
>   between unsetting the EDID and unregistering the CEC adapter.
> 
> Changes since v4:
> 
> - Updated comment at the start of drm_dp_cec.c
> - Add edid pointer to drm_dp_cec_configure_adapter
> - Reworked the last patch (adding CEC to i915) based on Ville's comments
>   and my MST testing:
> 	- register/unregister CEC in intel_dp_connector_register/unregister
> 	- add comment and check if connector is registered in long_pulse
> 	- unregister CEC if an MST 'connector' is detected.
> 
> Hans Verkuil (3):
>   drm: add support for DisplayPort CEC-Tunneling-over-AUX
>   drm-kms-helpers.rst: document the DP CEC helpers
>   drm/i915: add DisplayPort CEC-Tunneling-over-AUX support
> 
>  Documentation/gpu/drm-kms-helpers.rst |   9 +
>  drivers/gpu/drm/Kconfig               |  10 +
>  drivers/gpu/drm/Makefile              |   1 +
>  drivers/gpu/drm/drm_dp_cec.c          | 423 ++++++++++++++++++++++++++
>  drivers/gpu/drm/drm_dp_helper.c       |   1 +
>  drivers/gpu/drm/i915/intel_dp.c       |  17 +-
>  include/drm/drm_dp_helper.h           |  56 ++++
>  7 files changed, 515 insertions(+), 2 deletions(-)
>  create mode 100644 drivers/gpu/drm/drm_dp_cec.c
> 



More information about the dri-devel mailing list