[RFC PATCH 0/7] drm/i915: add support for DisplayPort CEC-Tunneling-over-AUX
Mike Lothian
mike at fireburn.co.uk
Thu May 25 15:30:09 UTC 2017
Hi
Sorry if this is off topic, I've got a Skylake Dell laptop with a USB-C
connector and no displayport
Which USB-C -> HDMI-2.0 connector do you recommend for stuff just working
based on your testing?
I've been putting off buying one until I knew 4K at 60Hz would work, CEC would
be nice to have too
Thanks
Mike
On Thu, 25 May 2017 at 16:06 Hans Verkuil <hverkuil at xs4all.nl> wrote:
> From: Hans Verkuil <hans.verkuil at cisco.com>
>
> This patch series adds support for the DisplayPort CEC-Tunneling-over-AUX
> protocol.
>
> This patch series is based on v4.12-rc2.
>
> The first four patches add support for a new CEC capability which is
> needed for these devices and for two helper functions.
>
> Then the DP CEC registers are added using Clint's patch.
>
> The core CEC tunneling support is added to drm_dp_cec.c.
>
> And finally this is hooked up in the i915 driver.
>
> Ideally the cec driver is created and destroyed whenever the DP-to-HDMI
> adapter is connected/disconnected, but I have not been a able to find
> a way to distinguish between connecting/disconnecting the HDMI cable
> and connecting/disconnecting the actual DP-to-HDMI adapter.
>
> My current approach is to check the CEC tunneling support whenever a new
> display is connected:
>
> - if CEC tunneling is supported, but no CEC adapter exists, then create
> one.
> - if CEC tunneling is not supported, then unregister the CEC adapter if one
> was created earlier.
> - if CEC tunneling is supported and the capabilities are identical to the
> existing CEC adapter, then leave it be.
> - if CEC tunneling is supported and the capabilities are different to the
> existing CEC adapter, then unregister that CEC adapter and register a
> new one.
>
> This works well, but it would be much nicer if I would just know when the
> DP adapter is disconnected as opposed to when the HDMI cable is
> disconnected
> from the adapter. Suggestions are welcome.
>
> The other remaining problem is that there are DP/USB-C to HDMI adapters
> that
> support CEC tunneling in the chipset, but where the CEC pin is simply never
> hooked up. From the point of view of the driver CEC is supported, but
> you'll
> never see any other devices.
>
> I am considering sending a CEC POLL message to logical address 0 (the TV)
> to detect if the CEC pin is connected, but this is not 100% guaranteed to
> work. This can be put under a kernel config option, though.
>
> I think I need to do something for this since of the 5 USB-C to HDMI
> adapters I've tested that set the CEC tunneling capability, only 2 have
> the CEC pin hooked up. So this seems to be quite common.
>
> I have tested this with my Intel NUC7i5BNK and with the two working
> USB-C to HDMI adapters that I have found:
>
> a Samsung EE-PW700 adapter and a Kramer ADC-U31C/HF adapter (I think that's
> the model, I need to confirm this).
>
> As usual the specifications of these adapters never, ever tell you whether
> this is supported or not :-( It's trial and error to find one that works.
> In
> fact, of the 10 USB-C to HDMI adapters I tested 5 didn't support CEC
> tunneling
> at all, and of the remaining 5 only two had the CEC pin hooked up and so
> actually worked.
>
> BTW, all adapters that supported CEC tunneling used the Parade PS176 chip.
>
> Output of cec-ctl -S (discovers the CEC topology):
>
> $ cec-ctl -S
> Driver Info:
> Driver Name : i915
> Adapter Name : DPDDC-C
> Capabilities : 0x0000007e
> Logical Addresses
> Transmit
> Passthrough
> Remote Control Support
> Monitor All
> Driver version : 4.12.0
> Available Logical Addresses: 4
> Physical Address : 3.0.0.0
> Logical Address Mask : 0x0010
> CEC Version : 2.0
> Vendor ID : 0x000c03 (HDMI)
> OSD Name : 'Playback'
> Logical Addresses : 1 (Allow RC Passthrough)
>
> Logical Address : 4 (Playback Device 1)
> Primary Device Type : Playback
> Logical Address Type : Playback
> All Device Types : Playback
> RC TV Profile : None
> Device Features :
> None
>
> System Information for device 0 (TV) from device 4 (Playback
> Device 1):
> CEC Version : 1.4
> Physical Address : 0.0.0.0
> Primary Device Type : TV
> Vendor ID : 0x0000f0 (Samsung)
> OSD Name : TV
> Menu Language : eng
> Power Status : On
>
> Topology:
>
> 0.0.0.0: TV
> 3.0.0.0: Playback Device 1
>
> Regards,
>
> Hans
>
> Clint Taylor (1):
> drm/cec: Add CEC over Aux register definitions
>
> Hans Verkuil (6):
> cec: add CEC_CAP_NEEDS_HPD
> cec-ioc-adap-g-caps.rst: document CEC_CAP_NEEDS_HPD
> cec: add cec_s_phys_addr_from_edid helper function
> cec: add cec_phys_addr_invalidate() helper function
> drm: add support for DisplayPort CEC-Tunneling-over-AUX
> drm/i915: add DisplayPort CEC-Tunneling-over-AUX support
>
> .../media/uapi/cec/cec-ioc-adap-g-caps.rst | 8 +
> drivers/gpu/drm/Kconfig | 3 +
> drivers/gpu/drm/Makefile | 1 +
> drivers/gpu/drm/drm_dp_cec.c | 196
> +++++++++++++++++++++
> drivers/gpu/drm/i915/Kconfig | 11 ++
> drivers/gpu/drm/i915/intel_dp.c | 46 ++++-
> drivers/media/cec/cec-adap.c | 34 +++-
> drivers/media/cec/cec-api.c | 5 +-
> drivers/media/cec/cec-core.c | 1 +
> include/drm/drm_dp_helper.h | 83 +++++++++
> include/media/cec.h | 15 ++
> include/uapi/linux/cec.h | 2 +
> 12 files changed, 394 insertions(+), 11 deletions(-)
> create mode 100644 drivers/gpu/drm/drm_dp_cec.c
>
> --
> 2.11.0
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170525/300cab33/attachment-0001.html>
More information about the dri-devel
mailing list