On Fri, Feb 28, 2025 at 07:25:00PM +0200, Ville Syrjälä wrote:
> On Wed, Feb 26, 2025 at 07:35:04PM +0200, Imre Deak wrote:
> > [...]
> >  static void i915_digport_work_func(struct work_struct *work)
> >  {
> > -   struct drm_i915_private *dev_priv =
> > -           container_of(work, struct drm_i915_private, 
> > display.hotplug.dig_port_work);
> > +   struct intel_display *display =
> > +           container_of(work, struct intel_display, hotplug.dig_port_work);
> > +   struct drm_i915_private *dev_priv = to_i915(display->drm);
> > +   struct intel_hotplug *hotplug = &display->hotplug;
> >     u32 long_port_mask, short_port_mask;
> >     struct intel_encoder *encoder;
> > +   u32 blocked_ports;
> >     u32 old_bits = 0;
> >  
> >     spin_lock_irq(&dev_priv->irq_lock);
> > -   long_port_mask = dev_priv->display.hotplug.long_port_mask;
> > -   dev_priv->display.hotplug.long_port_mask = 0;
> > -   short_port_mask = dev_priv->display.hotplug.short_port_mask;
> > -   dev_priv->display.hotplug.short_port_mask = 0;
> > +
> > +   blocked_ports = get_blocked_hpd_ports(display);
> > +   long_port_mask = hotplug->long_port_mask & ~blocked_ports;
> > +   hotplug->long_port_mask &= ~long_port_mask;
> > +   short_port_mask = hotplug->short_port_mask & ~blocked_ports;
> > +   hotplug->short_port_mask &= ~short_port_mask;
> 
> Why are we even tracking things as port masks for this? 

I can't see a reason for it (tracking as HPD pins would still allow
handling the encoders sharing the pin properly afaics).

> Wouldn't everything be a bit simpler if we just tracked
> the pins for this as well?

Yes, that simplifies it, thanks for the idea. Imo the change itself is
simple enough:
https://github.com/ideak/linux/commit/056801d

based on which this patchset would simplify to
https://github.com/ideak/linux/commits/hpd-block

removing all the pin to port conversions (both in this and the last
patch). Jani, would this be ok with you?

--Imre

Reply via email to