mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-24 06:44:23 +08:00
drm/i915/quirks: abstract checking for display quirks
Add intel_has_quirk() for checking if a display quirk is present. Avoid accessing i915->quirks all over the place. v2: Rebase Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/74f954ca81a8068033141a15686dffd01ad9b0f9.1661779055.git.jani.nikula@intel.com
This commit is contained in:
parent
b202ab6173
commit
0c82118b0a
@ -18,6 +18,7 @@
|
||||
#include "intel_panel.h"
|
||||
#include "intel_pci_config.h"
|
||||
#include "intel_pps.h"
|
||||
#include "intel_quirks.h"
|
||||
|
||||
/**
|
||||
* scale - scale values from one range to another
|
||||
@ -88,7 +89,7 @@ u32 intel_backlight_invert_pwm_level(struct intel_connector *connector, u32 val)
|
||||
return val;
|
||||
|
||||
if (dev_priv->params.invert_brightness > 0 ||
|
||||
dev_priv->quirks & QUIRK_INVERT_BRIGHTNESS) {
|
||||
intel_has_quirk(dev_priv, QUIRK_INVERT_BRIGHTNESS)) {
|
||||
return panel->backlight.pwm_level_max - val + panel->backlight.pwm_level_min;
|
||||
}
|
||||
|
||||
@ -128,7 +129,7 @@ u32 intel_backlight_level_from_pwm(struct intel_connector *connector, u32 val)
|
||||
panel->backlight.max == 0 || panel->backlight.pwm_level_max == 0);
|
||||
|
||||
if (dev_priv->params.invert_brightness > 0 ||
|
||||
(dev_priv->params.invert_brightness == 0 && dev_priv->quirks & QUIRK_INVERT_BRIGHTNESS))
|
||||
(dev_priv->params.invert_brightness == 0 && intel_has_quirk(dev_priv, QUIRK_INVERT_BRIGHTNESS)))
|
||||
val = panel->backlight.pwm_level_max - (val - panel->backlight.pwm_level_min);
|
||||
|
||||
return scale(val, panel->backlight.pwm_level_min, panel->backlight.pwm_level_max,
|
||||
@ -1605,7 +1606,7 @@ int intel_backlight_setup(struct intel_connector *connector, enum pipe pipe)
|
||||
int ret;
|
||||
|
||||
if (!connector->panel.vbt.backlight.present) {
|
||||
if (dev_priv->quirks & QUIRK_BACKLIGHT_PRESENT) {
|
||||
if (intel_has_quirk(dev_priv, QUIRK_BACKLIGHT_PRESENT)) {
|
||||
drm_dbg_kms(&dev_priv->drm,
|
||||
"no backlight present per VBT, but present per quirk\n");
|
||||
} else {
|
||||
@ -1777,7 +1778,7 @@ void intel_backlight_init_funcs(struct intel_panel *panel)
|
||||
if (intel_dp_aux_init_backlight_funcs(connector) == 0)
|
||||
return;
|
||||
|
||||
if (!(dev_priv->quirks & QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK))
|
||||
if (!intel_has_quirk(dev_priv, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK))
|
||||
connector->panel.backlight.power = intel_pps_backlight_power;
|
||||
}
|
||||
|
||||
|
@ -57,6 +57,7 @@
|
||||
#include "intel_lspcon.h"
|
||||
#include "intel_pps.h"
|
||||
#include "intel_psr.h"
|
||||
#include "intel_quirks.h"
|
||||
#include "intel_snps_phy.h"
|
||||
#include "intel_sprite.h"
|
||||
#include "intel_tc.h"
|
||||
@ -631,7 +632,7 @@ void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state
|
||||
|
||||
intel_de_write(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder), ctl);
|
||||
|
||||
if (dev_priv->quirks & QUIRK_INCREASE_DDI_DISABLED_TIME &&
|
||||
if (intel_has_quirk(dev_priv, QUIRK_INCREASE_DDI_DISABLED_TIME) &&
|
||||
intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
|
||||
drm_dbg_kms(&dev_priv->drm,
|
||||
"Quirk Increase DDI disabled time\n");
|
||||
|
@ -37,13 +37,14 @@
|
||||
#include "intel_display_types.h"
|
||||
#include "intel_drrs.h"
|
||||
#include "intel_panel.h"
|
||||
#include "intel_quirks.h"
|
||||
|
||||
bool intel_panel_use_ssc(struct drm_i915_private *i915)
|
||||
{
|
||||
if (i915->params.panel_use_ssc >= 0)
|
||||
return i915->params.panel_use_ssc != 0;
|
||||
return i915->display.vbt.lvds_use_ssc
|
||||
&& !(i915->quirks & QUIRK_LVDS_SSC_DISABLE);
|
||||
return i915->display.vbt.lvds_use_ssc &&
|
||||
!intel_has_quirk(i915, QUIRK_LVDS_SSC_DISABLE);
|
||||
}
|
||||
|
||||
const struct drm_display_mode *
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "intel_dpll.h"
|
||||
#include "intel_lvds.h"
|
||||
#include "intel_pps.h"
|
||||
#include "intel_quirks.h"
|
||||
|
||||
static void vlv_steal_power_sequencer(struct drm_i915_private *dev_priv,
|
||||
enum pipe pipe);
|
||||
@ -1202,7 +1203,7 @@ static void pps_init_delays_vbt(struct intel_dp *intel_dp,
|
||||
* just fails to power back on. Increasing the delay to 800ms
|
||||
* seems sufficient to avoid this problem.
|
||||
*/
|
||||
if (dev_priv->quirks & QUIRK_INCREASE_T12_DELAY) {
|
||||
if (intel_has_quirk(dev_priv, QUIRK_INCREASE_T12_DELAY)) {
|
||||
vbt->t11_t12 = max_t(u16, vbt->t11_t12, 1300 * 10);
|
||||
drm_dbg_kms(&dev_priv->drm,
|
||||
"Increasing T12 panel delay as per the quirk to %d\n",
|
||||
|
@ -216,3 +216,8 @@ void intel_init_quirks(struct drm_i915_private *i915)
|
||||
intel_dmi_quirks[i].hook(i915);
|
||||
}
|
||||
}
|
||||
|
||||
bool intel_has_quirk(struct drm_i915_private *i915, unsigned long quirk)
|
||||
{
|
||||
return i915->quirks & quirk;
|
||||
}
|
||||
|
@ -6,8 +6,11 @@
|
||||
#ifndef __INTEL_QUIRKS_H__
|
||||
#define __INTEL_QUIRKS_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct drm_i915_private;
|
||||
|
||||
void intel_init_quirks(struct drm_i915_private *dev_priv);
|
||||
void intel_init_quirks(struct drm_i915_private *i915);
|
||||
bool intel_has_quirk(struct drm_i915_private *i915, unsigned long quirk);
|
||||
|
||||
#endif /* __INTEL_QUIRKS_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user