All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Lucas De Marchi <lucas.de.marchi@gmail.com>
Cc: Intel Graphics <intel-gfx@lists.freedesktop.org>,
	Lucas De Marchi <lucas.demarchi@intel.com>
Subject: Re: [Intel-gfx] [PATCH 4/9] drm/i915/display: start description-based ddi initialization
Date: Fri, 03 Jul 2020 16:22:57 +0300	[thread overview]
Message-ID: <87a70gka1a.fsf@intel.com> (raw)
In-Reply-To: <CAKi4VAKnYNTisygz-8EW3Yw6xy5n1rpHjox=AqB077TUG-1jwQ@mail.gmail.com>

On Mon, 22 Jun 2020, Lucas De Marchi <lucas.de.marchi@gmail.com> wrote:
> On Wed, Jan 1, 2020 at 11:19 PM Lucas De Marchi
> <lucas.de.marchi@gmail.com> wrote:
>>
>> On Tue, Dec 31, 2019 at 1:58 AM Jani Nikula <jani.nikula@linux.intel.com> wrote:
>> >
>> > On Mon, 23 Dec 2019, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>> > > For the latest platforms we can share the logic to initialize the the
>> > > ddi, so start moving the most trivial ones to a new setup_outputs_desc()
>> > > function that will be responsible for initialization according to a
>> > > static const table.
>> > >
>> > > Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>> > > ---
>> > >  drivers/gpu/drm/i915/display/intel_display.c  | 96 +++++++++++++------
>> > >  .../drm/i915/display/intel_display_types.h    |  4 +
>> > >  2 files changed, 73 insertions(+), 27 deletions(-)
>> > >
>> > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>> > > index 04819b0bd494..b3fb1e03cb0b 100644
>> > > --- a/drivers/gpu/drm/i915/display/intel_display.c
>> > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> > > @@ -16221,6 +16221,72 @@ static void intel_pps_init(struct drm_i915_private *dev_priv)
>> > >       intel_pps_unlock_regs_wa(dev_priv);
>> > >  }
>> > >
>> > > +struct intel_output {
>> > > +     /* Initialize DSI if present */
>> > > +     void (*dsi_init)(struct drm_i915_private *i915);
>> >
>> > We'll need to be able to initialize DSI on multiple ports too. I've
>> > already drafted a series to do so, maybe I've even sent it to the
>> > list. Basically you'd pass the port to icl_dsi_init() too.
>> >
>> > I don't want that development to get any more complicated than it
>> > already is.
>
> Did you make progress on that series? Anywhere for me to look at?
> I'd like to respin this series.

Alas I didn't, but the gist of it was [1]. There were VLV/CHV DSI
related issues I didn't take into account that Ville pointed out to me.

There's been some subsequent changes since then.

Anyway, I was hoping to make faster progress, and it's not fair to hold
anyone's work back based on what could be.


BR,
Jani.


[1] https://patchwork.freedesktop.org/series/68729/


>
> Lucas De Marchi
>
>>
>> Right now this is just working with what is there. I don't see a problem
>> to update this series with the additional port argument, but let's
>> keep the series
>> independent from each other.
>>
>> Lucas De Marchi
>>
>> >
>> > BR,
>> > Jani.
>> >
>> >
>> > > +     struct intel_ddi_port_info ddi_ports[];
>> > > +};
>> > > +
>> > > +static const struct intel_output tgl_output = {
>> > > +     .dsi_init = icl_dsi_init,
>> > > +     .ddi_ports = {
>> > > +             { .port = PORT_A },
>> > > +             { .port = PORT_B },
>> > > +             { .port = PORT_D },
>> > > +             { .port = PORT_E },
>> > > +             { .port = PORT_F },
>> > > +             { .port = PORT_G },
>> > > +             { .port = PORT_H },
>> > > +             { .port = PORT_I },
>> > > +             { .port = PORT_NONE }
>> > > +     }
>> > > +};
>> > > +
>> > > +static const struct intel_output ehl_output = {
>> > > +     .dsi_init = icl_dsi_init,
>> > > +     .ddi_ports = {
>> > > +             { .port = PORT_A },
>> > > +             { .port = PORT_B },
>> > > +             { .port = PORT_C },
>> > > +             { .port = PORT_D },
>> > > +             { .port = PORT_NONE }
>> > > +     }
>> > > +};
>> > > +
>> > > +static const struct intel_output gen9lp_output = {
>> > > +     .dsi_init = vlv_dsi_init,
>> > > +     .ddi_ports = {
>> > > +             { .port = PORT_A },
>> > > +             { .port = PORT_B },
>> > > +             { .port = PORT_C },
>> > > +             { .port = PORT_NONE }
>> > > +     },
>> > > +};
>> > > +
>> > > +/*
>> > > + * Use a description-based approach for platforms that can be supported with a
>> > > + * static table
>> > > + */
>> > > +static void setup_ddi_outputs_desc(struct drm_i915_private *i915)
>> > > +{
>> > > +     const struct intel_output *output;
>> > > +     const struct intel_ddi_port_info *port_info;
>> > > +
>> > > +     if (INTEL_GEN(i915) >= 12)
>> > > +             output = &tgl_output;
>> > > +     else if (IS_ELKHARTLAKE(i915))
>> > > +             output = &ehl_output;
>> > > +     else if (IS_GEN9_LP(i915))
>> > > +             output = &gen9lp_output;
>> > > +
>> > > +     for (port_info = output->ddi_ports;
>> > > +          port_info->port != PORT_NONE; port_info++)
>> > > +             intel_ddi_init(i915, port_info->port);
>> > > +
>> > > +     if (output->dsi_init)
>> > > +             output->dsi_init(i915);
>> > > +}
>> > > +
>> > >  static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>> > >  {
>> > >       struct intel_encoder *encoder;
>> > > @@ -16231,22 +16297,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>> > >       if (!HAS_DISPLAY(dev_priv) || !INTEL_DISPLAY_ENABLED(dev_priv))
>> > >               return;
>> > >
>> > > -     if (INTEL_GEN(dev_priv) >= 12) {
>> > > -             intel_ddi_init(dev_priv, PORT_A);
>> > > -             intel_ddi_init(dev_priv, PORT_B);
>> > > -             intel_ddi_init(dev_priv, PORT_D);
>> > > -             intel_ddi_init(dev_priv, PORT_E);
>> > > -             intel_ddi_init(dev_priv, PORT_F);
>> > > -             intel_ddi_init(dev_priv, PORT_G);
>> > > -             intel_ddi_init(dev_priv, PORT_H);
>> > > -             intel_ddi_init(dev_priv, PORT_I);
>> > > -             icl_dsi_init(dev_priv);
>> > > -     } else if (IS_ELKHARTLAKE(dev_priv)) {
>> > > -             intel_ddi_init(dev_priv, PORT_A);
>> > > -             intel_ddi_init(dev_priv, PORT_B);
>> > > -             intel_ddi_init(dev_priv, PORT_C);
>> > > -             intel_ddi_init(dev_priv, PORT_D);
>> > > -             icl_dsi_init(dev_priv);
>> > > +     if (INTEL_GEN(dev_priv) >= 12 || IS_ELKHARTLAKE(dev_priv) ||
>> > > +         IS_GEN9_LP(dev_priv)) {
>> > > +             setup_ddi_outputs_desc(dev_priv);
>> > >       } else if (IS_GEN(dev_priv, 11)) {
>> > >               intel_ddi_init(dev_priv, PORT_A);
>> > >               intel_ddi_init(dev_priv, PORT_B);
>> > > @@ -16263,17 +16316,6 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>> > >                       intel_ddi_init(dev_priv, PORT_F);
>> > >
>> > >               icl_dsi_init(dev_priv);
>> > > -     } else if (IS_GEN9_LP(dev_priv)) {
>> > > -             /*
>> > > -              * FIXME: Broxton doesn't support port detection via the
>> > > -              * DDI_BUF_CTL_A or SFUSE_STRAP registers, find another way to
>> > > -              * detect the ports.
>> > > -              */
>> > > -             intel_ddi_init(dev_priv, PORT_A);
>> > > -             intel_ddi_init(dev_priv, PORT_B);
>> > > -             intel_ddi_init(dev_priv, PORT_C);
>> > > -
>> > > -             vlv_dsi_init(dev_priv);
>> > >       } else if (HAS_DDI(dev_priv)) {
>> > >               int found;
>> > >
>> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
>> > > index a3a067dacf84..4d2f4ee35812 100644
>> > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
>> > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
>> > > @@ -1376,6 +1376,10 @@ struct intel_dp_mst_encoder {
>> > >       struct intel_connector *connector;
>> > >  };
>> > >
>> > > +struct intel_ddi_port_info {
>> > > +     enum port port;
>> > > +};
>> > > +
>> > >  static inline enum dpio_channel
>> > >  vlv_dig_port_to_channel(struct intel_digital_port *dig_port)
>> > >  {
>> >
>> > --
>> > Jani Nikula, Intel Open Source Graphics Center
>> > _______________________________________________
>> > Intel-gfx mailing list
>> > Intel-gfx@lists.freedesktop.org
>> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>>
>>
>>
>> --
>> Lucas De Marchi

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2020-07-03 13:23 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-23 19:58 [Intel-gfx] [PATCH 0/9] RFC: display/ddi: keep register indexes in a table Lucas De Marchi
2019-12-23 19:58 ` [Intel-gfx] [PATCH 1/9] drm/i915/display: nuke skl workaround for pre-production hw Lucas De Marchi
2019-12-23 19:58 ` [Intel-gfx] [PATCH 2/9] drm/i915/display: remove alias to dig_port Lucas De Marchi
2019-12-23 21:05   ` Matt Roper
2019-12-23 19:58 ` [Intel-gfx] [PATCH 3/9] drm/i915/display: prefer the more common dig_port name Lucas De Marchi
2019-12-23 21:16   ` Matt Roper
2019-12-23 21:25     ` Lucas De Marchi
2019-12-23 19:58 ` [Intel-gfx] [PATCH 4/9] drm/i915/display: start description-based ddi initialization Lucas De Marchi
2019-12-31  9:58   ` Jani Nikula
2020-01-02  7:19     ` Lucas De Marchi
2020-06-22 23:50       ` Lucas De Marchi
2020-07-03 13:22         ` Jani Nikula [this message]
2019-12-23 19:58 ` [Intel-gfx] [PATCH 5/9] drm/i915/display: move icl to description-based ddi init Lucas De Marchi
2019-12-24  0:00   ` Matt Roper
2019-12-31 10:14   ` Jani Nikula
2020-01-02  7:32     ` Lucas De Marchi
2019-12-23 19:58 ` [Intel-gfx] [PATCH 6/9] drm/i915/display: description-based initialization for remaining ddi platforms Lucas De Marchi
2019-12-31 10:25   ` Jani Nikula
2019-12-31 10:26     ` Jani Nikula
2020-01-02  7:23     ` Lucas De Marchi
2019-12-23 19:58 ` [Intel-gfx] [PATCH 7/9] drm/i915/display: add phy, vbt and ddi indexes Lucas De Marchi
2019-12-24  0:10   ` Matt Roper
2019-12-24  0:17     ` Lucas De Marchi
2019-12-31 10:33   ` Jani Nikula
2020-01-02  7:50     ` Lucas De Marchi
2019-12-23 19:58 ` [Intel-gfx] [PATCH 8/9] drm/i915/display: refer to vbt info as vbt_port_info Lucas De Marchi
2019-12-31 10:39   ` Jani Nikula
2019-12-23 19:58 ` [Intel-gfx] [PATCH 9/9] drm/i915/display: use port_info on intel_ddi_init Lucas De Marchi
2019-12-24  0:16   ` Matt Roper
2019-12-31 11:20     ` Jani Nikula
2020-06-23  1:11       ` Lucas De Marchi
2019-12-31 11:22   ` Jani Nikula
2019-12-23 20:14 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for RFC: display/ddi: keep register indexes in a table Patchwork
2019-12-23 20:57 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork

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=87a70gka1a.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=lucas.de.marchi@gmail.com \
    --cc=lucas.demarchi@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.