Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Coelho, Luciano" <luciano.coelho@intel.com>
To: "Kandpal, Suraj" <suraj.kandpal@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Cc: "De Marchi, Lucas" <lucas.demarchi@intel.com>
Subject: Re: [Intel-gfx] [PATCH v3 3/4] drm/i915/tc: move legacy code out of the main _max_lane_count() func
Date: Thu, 24 Aug 2023 11:14:04 +0000	[thread overview]
Message-ID: <e4c310183394956b6521a95de6ccb22d2cb4137c.camel@intel.com> (raw)
In-Reply-To: <SN7PR11MB6750E7D1CC8CA88473AE7D27E31DA@SN7PR11MB6750.namprd11.prod.outlook.com>

On Thu, 2023-08-24 at 11:12 +0000, Kandpal, Suraj wrote:
> > On Wed, 2023-08-16 at 08:54 +0000, Kandpal, Suraj wrote:
> > > > This makes the code a bit more symmetric and readable,
> > > > especially
> > > > when we start adding more display version-specific
> > > > alternatives.
> > > > 
> > > > Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_tc.c | 32 +++++++++++++++--
> > > > ----
> > > > ----
> > > >  1 file changed, 19 insertions(+), 13 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_tc.c
> > > > b/drivers/gpu/drm/i915/display/intel_tc.c
> > > > index de848b329f4b..43b8eeba26f8 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_tc.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_tc.c
> > > > @@ -311,23 +311,12 @@ static int
> > > > mtl_tc_port_get_max_lane_count(struct
> > > > intel_digital_port *dig_port)
> > > >  	}
> > > >  }
> > > > 
> > > > -int intel_tc_port_fia_max_lane_count(struct intel_digital_port
> > > > *dig_port)
> > > > +static int intel_tc_port_get_max_lane_count(struct
> > > > intel_digital_port
> > > > +*dig_port)
> > > >  {
> > > >  	struct drm_i915_private *i915 = to_i915(dig_port-
> > > > > base.base.dev);
> > > > -	struct intel_tc_port *tc = to_tc_port(dig_port);
> > > > -	enum phy phy = intel_port_to_phy(i915, dig_port-
> > > > > base.port);
> > > >  	intel_wakeref_t wakeref;
> > > > -	u32 lane_mask;
> > > > -
> > > > -	if (!intel_phy_is_tc(i915, phy) || tc->mode !=
> > > > TC_PORT_DP_ALT)
> > > > -		return 4;
> > > > +	u32 lane_mask = 0;
> > > > 
> > > > -	assert_tc_cold_blocked(tc);
> > > > -
> > > > -	if (DISPLAY_VER(i915) >= 14)
> > > > -		return
> > > > mtl_tc_port_get_max_lane_count(dig_port);
> > > > -
> > > > -	lane_mask = 0;
> > > >  	with_intel_display_power(i915,
> > > > POWER_DOMAIN_DISPLAY_CORE,
> > > > wakeref)
> > > >  		lane_mask =
> > > > intel_tc_port_get_lane_mask(dig_port);
> > > > 
> > > > @@ -348,6 +337,23 @@ int
> > > > intel_tc_port_fia_max_lane_count(struct
> > > > intel_digital_port *dig_port)
> > > >  	}
> > > >  }
> > > > 
> > > > +int intel_tc_port_fia_max_lane_count(struct intel_digital_port
> > > > +*dig_port) {
> > > > +	struct drm_i915_private *i915 = to_i915(dig_port-
> > > > > base.base.dev);
> > > > +	struct intel_tc_port *tc = to_tc_port(dig_port);
> > > > +	enum phy phy = intel_port_to_phy(i915, dig_port-
> > > > > base.port);
> > > > +
> > > > +	if (!intel_phy_is_tc(i915, phy) || tc->mode !=
> > > > TC_PORT_DP_ALT)
> > > > +		return 4;
> > > > +
> > > > +	assert_tc_cold_blocked(tc);
> > > > +
> > > > +	if (DISPLAY_VER(i915) >= 14)
> > > > +		return
> > > > mtl_tc_port_get_max_lane_count(dig_port);
> > > > +
> > > > +	return intel_tc_port_get_max_lane_count(dig_port);
> > > > +}
> > > 
> > > Looking at this I think we have more scope of optimization here I
> > > think we can go about it in the following way
> > > 
> > > intel_tc_port_fia_max_lane_count
> > > already calls
> > > with_intel_display_power(i915, POWER_DOMAIN_DISPLAY_CORE,
> > > wakeref)
> > >                 lane_mask =
> > > intel_tc_port_get_lane_mask(dig_port);
> > > 
> > > which we also duplicate in  mtl_tc_port_get_pin_assignment_mask
> > > (now mtl_tc_port_get_max_lane_count) and the only difference
> > > between
> > > them Is the switch case what if we have a function or repurpose
> > > mtl_tc_port_get_max_lane_count to only have the switch case block
> > > with
> > > assignment varied by display version and call it after
> > > intel_tc_port_get_lane_mask
> > > 
> > > maybe also move the legacy switch case in its own function?
> > 
> > This would be another option, but I think it's nicer to keep things
> > very isolated
> > from each other and this tiny code duplication is not too bad.
> > 
> > Especially because later, as you can see in my LNL patch that Lucas
> > sent out[1]
> > we have another combination in a new function.  So we have:
> > 
> > intel_tc_port_get_max_lane_count();
> > 	intel_tc_port_get_lane_mask();
> > 	switch with lane_mask;
> > 
> > mlt_tc_port_get_lane_mask(dig_port);
> > 	intel_tc_port_get_pin_assignment_mask();
> > 	switch with pin_mask;
> > 
> > lnl_tc_port_get_lane_mask():
> > 	intel_uncore_read(uncore, TCSS_DDI_STATUS(tc_port));
> > 	switch with pin_assignment;
> > 
> > 
> > So now we have 3 different ways to read and two different ways to
> > parse (with
> > the switch-case).  I think it's a lot cleaner to keep this all
> > separate than to try
> > to reuse these small pieces of code, which would make it a bit
> > harder to read.
> > 
> > Makes sense?
> 
> Good with it
> 
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

Thanks, Suraj!

--
Cheers,
Luca.

  reply	other threads:[~2023-08-24 11:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-21 11:11 [Intel-gfx] [PATCH v3 0/4] drm/i915/tc: some clean-ups in max lane count handling code Luca Coelho
2023-07-21 11:11 ` [Intel-gfx] [PATCH v3 1/4] drm/i915/tc: rename mtl_tc_port_get_pin_assignment_mask() Luca Coelho
2023-08-16  8:13   ` Kandpal, Suraj
2023-08-16  9:08     ` Coelho, Luciano
2023-08-19  3:50       ` Lucas De Marchi
2023-08-24  7:48         ` Coelho, Luciano
2023-07-21 11:11 ` [Intel-gfx] [PATCH v3 2/4] drm/i915/tc: make intel_tc_port_get_lane_mask() static Luca Coelho
2023-08-16  8:44   ` Kandpal, Suraj
2023-07-21 11:11 ` [Intel-gfx] [PATCH v3 3/4] drm/i915/tc: move legacy code out of the main _max_lane_count() func Luca Coelho
2023-08-16  8:54   ` Kandpal, Suraj
2023-08-24 11:06     ` Coelho, Luciano
2023-08-24 11:10       ` Kandpal, Suraj
2023-08-24 11:12       ` Kandpal, Suraj
2023-08-24 11:14         ` Coelho, Luciano [this message]
2023-07-21 11:11 ` [Intel-gfx] [PATCH v3 4/4] drm/i915/tc: remove "fia" from intel_tc_port_fia_max_lane_count() Luca Coelho
2023-08-19  3:53   ` Lucas De Marchi
2023-08-24  5:45   ` Kandpal, Suraj
2023-07-21 12:22 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/tc: some clean-ups in max lane count handling code (rev3) Patchwork
2023-08-19  3:47 ` [Intel-gfx] [PATCH v3 0/4] drm/i915/tc: some clean-ups in max lane count handling code Lucas De Marchi
2023-08-21 17:27   ` Kandpal, Suraj
2023-08-24  7:51     ` Coelho, Luciano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e4c310183394956b6521a95de6ccb22d2cb4137c.camel@intel.com \
    --to=luciano.coelho@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    --cc=suraj.kandpal@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox