On Tue, 10 Oct 2017, "Chauhan, Madhav" <madhav.chauhan@xxxxxxxxx> wrote: >> -----Original Message----- >> From: Nikula, Jani >> Sent: Tuesday, October 10, 2017 12:47 PM >> To: Chauhan, Madhav <madhav.chauhan@xxxxxxxxx>; intel- >> gfx@xxxxxxxxxxxxxxxxxxxxx >> Cc: Hiremath, Shashidhar <shashidhar.hiremath@xxxxxxxxx>; Shankar, Uma >> <uma.shankar@xxxxxxxxx>; Chauhan, Madhav >> <madhav.chauhan@xxxxxxxxx> >> Subject: Re: [PATCH 1/2] drm/i915: Parse DSI backlight/cabc ports. >> >> On Tue, 03 Oct 2017, Madhav Chauhan <madhav.chauhan@xxxxxxxxx> >> wrote: >> > This patch parse DSI backlight/cabc ports info from VBT and save them >> > inside local strucutre. This saved info can be directly used while >> > initializing DSI for different platforms instead of parsing for each >> > platform. >> > >> > Signed-off-by: Madhav Chauhan <madhav.chauhan@xxxxxxxxx> >> > --- >> > drivers/gpu/drm/i915/i915_drv.h | 2 ++ >> > drivers/gpu/drm/i915/intel_bios.c | 63 >> > ++++++++++++++++++++++++++++++++------- >> > 2 files changed, 55 insertions(+), 10 deletions(-) >> > >> > diff --git a/drivers/gpu/drm/i915/i915_drv.h >> > b/drivers/gpu/drm/i915/i915_drv.h index b7cba89..fc472bb 100644 >> > --- a/drivers/gpu/drm/i915/i915_drv.h >> > +++ b/drivers/gpu/drm/i915/i915_drv.h >> > @@ -1751,6 +1751,8 @@ struct intel_vbt_data { >> > u8 seq_version; >> > u32 size; >> > u8 *data; >> > + u16 bl_ports; >> > + u16 cabc_ports; >> >> This is right in the middle of the sequence data. Please move up e.g. between >> pps and seq_version. > > Ok. > >> >> > const u8 *sequence[MIPI_SEQ_MAX]; >> > } dsi; >> > >> > diff --git a/drivers/gpu/drm/i915/intel_bios.c >> > b/drivers/gpu/drm/i915/intel_bios.c >> > index 3747d8d..88a72cc 100644 >> > --- a/drivers/gpu/drm/i915/intel_bios.c >> > +++ b/drivers/gpu/drm/i915/intel_bios.c >> > @@ -730,6 +730,56 @@ parse_psr(struct drm_i915_private *dev_priv, >> const struct bdb_header *bdb) >> > dev_priv->vbt.psr.tp2_tp3_wakeup_time = >> > psr_table->tp2_tp3_wakeup_time; } >> > >> > +static void parse_dsi_backlight_ports(struct drm_i915_private *dev_priv, >> > + u16 version, enum port port) { >> > + if (dev_priv->vbt.dsi.config->dual_link && version < 197) { >> > + /* >> > + * These fields are introduced from the VBT version 197 >> onwards, >> > + * so making sure that these bits are set zero in the previous >> > + * versions. >> > + */ >> > + dev_priv->vbt.dsi.config->dl_dcs_cabc_ports = 0; >> > + dev_priv->vbt.dsi.config->dl_dcs_backlight_ports = 0; >> >> You could remove this in patch 2. Nobody should be looking at it anymore. > > Patch 2 means?? Next version of this patch or patch 2 of this series. > Patch 2 of this series doesn't use these variables. Please clarify. After patch 2 of this series, the initialization of these two fields is unnecessary, so please remove the above lines in patch 2. > >> >> > + dev_priv->vbt.dsi.bl_ports = 0; >> > + dev_priv->vbt.dsi.cabc_ports = 0; >> >> This you don't have to do anyway, it's all zeros by default. > > Ok. > >> >> > + return; >> > + } else if (dev_priv->vbt.dsi.config->dual_link) { >> > + switch (dev_priv->vbt.dsi.config->dl_dcs_backlight_ports) { >> > + case DL_DCS_PORT_A: >> > + dev_priv->vbt.dsi.bl_ports = BIT(PORT_A); >> > + break; >> > + case DL_DCS_PORT_C: >> > + dev_priv->vbt.dsi.bl_ports = BIT(PORT_C); >> > + break; >> > + default: >> > + case DL_DCS_PORT_A_AND_C: >> > + dev_priv->vbt.dsi.bl_ports = BIT(PORT_A) | >> BIT(PORT_C); >> > + break; >> > + } >> > + >> > + switch (dev_priv->vbt.dsi.config->dl_dcs_cabc_ports) { >> > + case DL_DCS_PORT_A: >> > + dev_priv->vbt.dsi.cabc_ports = BIT(PORT_A); >> > + break; >> > + case DL_DCS_PORT_C: >> > + dev_priv->vbt.dsi.cabc_ports = BIT(PORT_C); >> > + break; >> > + default: >> > + case DL_DCS_PORT_A_AND_C: >> > + dev_priv->vbt.dsi.cabc_ports = >> > + BIT(PORT_A) | BIT(PORT_C); >> > + break; >> > + } >> > + } else { >> > + dev_priv->vbt.dsi.bl_ports = BIT(port); >> > + dev_priv->vbt.dsi.cabc_ports = BIT(port); >> > + } >> > + >> > + if (!dev_priv->vbt.dsi.config->cabc_supported) >> > + dev_priv->vbt.dsi.cabc_ports = 0; >> >> Would seem reasonable to not initalize it in the first place if it's not >> supported. > > Agree. How about putting a check condition !cabc_supported > before parsing dl_dcs_cabc_ports in switch case?? > >>If you do a series of early returns starting with the bdb version >> check, then !dual_link, then !cabc_supported, it might be easiest. > > But even if for !dual_link, still we need to fill newly added cabc_ports and bl_ports. > > Regards, > Madhav > >> >> > +} >> > + >> > static void >> > parse_mipi_config(struct drm_i915_private *dev_priv, >> > const struct bdb_header *bdb) >> > @@ -738,9 +788,10 @@ parse_mipi_config(struct drm_i915_private >> *dev_priv, >> > const struct mipi_config *config; >> > const struct mipi_pps_data *pps; >> > int panel_type = dev_priv->vbt.panel_type; >> > + enum port port; >> > >> > /* parse MIPI blocks only if LFP type is MIPI */ >> > - if (!intel_bios_is_dsi_present(dev_priv, NULL)) >> > + if (!intel_bios_is_dsi_present(dev_priv, &port)) >> > return; >> > >> > /* Initialize this to undefined indicating no generic MIPI support >> > */ @@ -781,15 +832,7 @@ parse_mipi_config(struct drm_i915_private >> *dev_priv, >> > return; >> > } >> > >> > - /* >> > - * These fields are introduced from the VBT version 197 onwards, >> > - * so making sure that these bits are set zero in the previous >> > - * versions. >> > - */ >> > - if (dev_priv->vbt.dsi.config->dual_link && bdb->version < 197) { >> > - dev_priv->vbt.dsi.config->dl_dcs_cabc_ports = 0; >> > - dev_priv->vbt.dsi.config->dl_dcs_backlight_ports = 0; >> > - } >> > + parse_dsi_backlight_ports(dev_priv, bdb->version, port); >> > >> > /* We have mandatory mipi config blocks. Initialize as generic panel >> */ >> > dev_priv->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID; >> >> -- >> Jani Nikula, Intel Open Source Technology Center -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx