RE: [PATCH v3 1/1] drm/i915/display: Add quirk to force backlight type on some TUXEDO devices
"Kandpal, Suraj" <[email protected]>
| Newsgroups | org.freedesktop.lists.intel-gfx,org.freedesktop.lists.dri-devel,org.freedesktop.lists.intel-xe,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <DS4PPFE901A304F53791AC29FAD352E193DE3D12@DS4PPFE901A304F.namprd11.prod.outlook.com> |
> Subject: Re: [PATCH v3 1/1] drm/i915/display: Add quirk to force backlight type > on some TUXEDO devices > > Am 04.08.26 um 21:52 schrieb Werner Sembach: > > > The display backlight on TUXEDO DX1708 and InsanityBook 15 v1 with > > panels AUO 12701 and AUO 12701 must be forced to > > INTEL_DP_AUX_BACKLIGHT_ON to be able to control the brightness. You need to mention why that is "Because the broken VBT in these panels report INTEL_BACKLIGHT_VESA_EDP_AUX_INTERFACE even though the only way to control them is via Intel's backlight interface. Which means' the VBT should ideally report INTEL_BACKLIGHT_DISPLAY_DDI in its params" > > > > This could already be archived via a module parameter, but this patch * can already * achieved > > adds a quirk to apply this by default on the mentioned devices. > > > > This patch does not actually test for the exact panels as the id that > > is used in the intel_dpcd_quirks list is sadly zeroed on the devices, > > but afaik all these devices use try_intel_interface first anyway so > > all the quirk does is to add the fallback to try_vesa_interface, so > > the behaviour on the devices not needing the quirk and fallback should > > functionally stay the same. > > > > Cc: [email protected] > > Signed-off-by: Werner Sembach <[email protected]> > > Fixes: https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/15679 > > Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/15679 > > > --- > > .../drm/i915/display/intel_dp_aux_backlight.c | 9 ++++++- > > drivers/gpu/drm/i915/display/intel_quirks.c | 24 +++++++++++++++++++ > > drivers/gpu/drm/i915/display/intel_quirks.h | 1 + > > 3 files changed, 33 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c > > b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c > > index 266e042e00237..594c59f2d8309 100644 > > --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c > > +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c > > @@ -41,6 +41,7 @@ > > #include "intel_display_types.h" > > #include "intel_dp.h" > > #include "intel_dp_aux_backlight.h" > > +#include "intel_quirks.h" > > > > /* > > * DP AUX registers for Intel's proprietary HDR backlight interface. > > We define @@ -687,11 +688,17 @@ int > intel_dp_aux_init_backlight_funcs(struct intel_connector *connector) > > struct drm_device *dev = connector->base.dev; > > struct intel_panel *panel = &connector->panel; > > bool try_intel_interface = false, try_vesa_interface = false; > > + int enable_dpcd_backlight; > > > > /* Check the VBT and user's module parameters to figure out which > > * interfaces to probe > > */ This comment need to be moved just above the switch() > > - switch (display->params.enable_dpcd_backlight) { > > + enable_dpcd_backlight = display->params.enable_dpcd_backlight; > > + if (enable_dpcd_backlight == INTEL_DP_AUX_BACKLIGHT_AUTO && > > + intel_has_dpcd_quirk(intel_dp, QUIRK_ENABLE_DPCD_BACKLIGHT)) > > + enable_dpcd_backlight = INTEL_DP_AUX_BACKLIGHT_ON; Let's also have a comment here as to why a quirk was used instead of just making VESA the default interface. This will help developers avoid going through a series of regressions, fixes and inevitable reverts. Regards, Suraj Kandpal > > + > > + switch (enable_dpcd_backlight) { > > case INTEL_DP_AUX_BACKLIGHT_OFF: > > return -ENODEV; > > case INTEL_DP_AUX_BACKLIGHT_AUTO: > > diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c > > b/drivers/gpu/drm/i915/display/intel_quirks.c > > index 33245f44c0d50..89d82364ae45d 100644 > > --- a/drivers/gpu/drm/i915/display/intel_quirks.c > > +++ b/drivers/gpu/drm/i915/display/intel_quirks.c > > @@ -100,6 +100,14 @@ static void quirk_disable_psr2(struct intel_display > *display) > > drm_info(display->drm, "PSR2 support not currently available for this > setup, applying disable PSR2 quirk\n"); > > } > > > > +static void quirk_enable_dpcd_backlight(struct intel_dp *intel_dp) { > > + struct intel_display *display = to_intel_display(intel_dp); > > + > > + intel_set_dpcd_quirk(intel_dp, QUIRK_ENABLE_DPCD_BACKLIGHT); > > + drm_info(display->drm, "Applying Enable DPCD Backlight quirk\n"); } > > + > > struct intel_quirk { > > int device; > > int subsystem_vendor; > > @@ -286,6 +294,22 @@ static const struct intel_dpcd_quirk > intel_dpcd_quirks[] = { > > .sink_oui = SINK_OUI(0x00, 0x22, 0xb9), > > .hook = quirk_disable_edp_panel_replay, > > }, > > + /* TUXEDO InsanityBook 15 v1 */ > > + { > > + .device = 0x591b, > > + .subsystem_vendor = 0x1558, > > + .subsystem_device = 0x9501, > > + .sink_oui = SINK_OUI(0x38, 0xec, 0x11), > > + .hook = quirk_enable_dpcd_backlight, > > + }, > > + /* TUXEDO DX1708 */ > > + { > > + .device = 0x3e9b, > > + .subsystem_vendor = 0x1558, > > + .subsystem_device = 0x8500, > > + .sink_oui = SINK_OUI(0x38, 0xec, 0x11), > > + .hook = quirk_enable_dpcd_backlight, > > + }, > > }; > > > > void intel_init_quirks(struct intel_display *display) diff --git > > a/drivers/gpu/drm/i915/display/intel_quirks.h > > b/drivers/gpu/drm/i915/display/intel_quirks.h > > index 970a4fe52fafc..4996419ae76bd 100644 > > --- a/drivers/gpu/drm/i915/display/intel_quirks.h > > +++ b/drivers/gpu/drm/i915/display/intel_quirks.h > > @@ -23,6 +23,7 @@ enum intel_quirk_id { > > QUIRK_EDP_LIMIT_RATE_HBR2, > > QUIRK_DISABLE_EDP_PANEL_REPLAY, > > QUIRK_DISABLE_PSR2, > > + QUIRK_ENABLE_DPCD_BACKLIGHT, > > }; > > > > void intel_init_quirks(struct intel_display *display);