Hi, On 5/4/21 4:52 PM, Heikki Krogerus wrote: > On Mon, May 03, 2021 at 04:35:29PM +0200, Hans de Goede wrote: >> Hi, >> >> On 5/3/21 10:00 AM, Heikki Krogerus wrote: >>> Hi Hans, >>> >>> On Wed, Apr 28, 2021 at 11:52:52PM +0200, Hans de Goede wrote: >>>> +/** >>>> + * struct drm_connector_oob_hotplug_event_data: OOB hotplug event data >>>> + * >>>> + * Contains data about out-of-band hotplug events, signalled through >>>> + * drm_connector_oob_hotplug_event(). >>>> + */ >>>> +struct drm_connector_oob_hotplug_event_data { >>>> + /** >>>> + * @connected: New connected status for the connector. >>>> + */ >>>> + bool connected; >>>> + /** >>>> + * @dp_lanes: Number of available displayport lanes, 0 if unknown. >>>> + */ >>>> + int dp_lanes; >>>> + /** >>>> + * @orientation: Connector orientation. >>>> + */ >>>> + enum typec_orientation orientation; >>>> +}; >>> >>> I don't think the orientation is relevant. It will always be "normal" >>> from DP PoW after muxing, no? >> >> That is what I thought to, but during the discussion of my previous attempt >> at this one of the i915 devs mentioned that in some cases the muxes manage >> to swap the lane order when the connector upside-down and at least the >> Intel GPUs can correct for this on the GPU side, so they asked for this >> info to be included. >> >>> I'm also not sure those deatils are enough in the long run. Based on >>> what I've understood from our graphics team guys, for example knowing >>> if multi-function is preferred may be important in some cases. >> >> The current data being passed is just intended as a starting point, >> this is purely a kernel internal API so we can easily add more >> data to the struct. As I mentioned in the cover-letter the current >> oob_hotplug handler which the i915 patch adds to the i915 driver does >> not actually do anything with the data. ATM it is purely there to >> demonstrate that the ability to pass relevant data is there now >> (which was an issue with the previous attempt). I believe the current >> code is fine as a PoC of "pass event data" once GPU drivers actually >> start doing something with the data we can extend or outright replace >> it without issues. > > Ah, if there is nothing using that information yet, then just don't > pass it at all for now. As you said, it's kernel internal API, we can > change it later if needed. > >>> All of that, and more, is already available in the Configuration VDO >>> Status VDO that the we have negotiated with the DP partner. Both those >>> VDOs are part of struct typec_displayport_data. I think we should >>> simply supply that structure to the DRM code instead of picking those >>> details out of it... >> >> I'm not sure I like the idea of passing the raw VDO, but if the >> DRM folks think that would be useful we can certainly add it. > > Why are you against passing all the data that we have? What is the > benefit in picking only certain details out of an object that has a > standard format, and constructing a customised object for those > details instead? The VDO is Type-C specific and the drm_connector_oob_hotplug_event() is intended to be a generic API. There are other OOB event sources, e.g. the drivers/apci/acpi_video.c code receives hotplug events for connectors on powered-down GPUs on dual/hybrid GPU laptops. ATM the GPU drivers register an ACPI notifier to catch these; and there are no immediate plans to change this, but this does illustrate how OOB hotplug notification is not just a Type-C thing, where as the VDO and its format very much are Type-C things. Regards, Hans