drm/i915/quirks: convert struct drm_i915_private to struct intel_display
authorJani Nikula <jani.nikula@intel.com>
Wed, 17 Apr 2024 13:02:43 +0000 (16:02 +0300)
committerJani Nikula <jani.nikula@intel.com>
Thu, 18 Apr 2024 18:16:45 +0000 (21:16 +0300)
Use struct intel_display instead of struct drm_i915_private for
quirks. Also do drive-by conversions in call sites of intel_has_quirk().

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/d90e9d8e91e59d04d38f2743c02c74a8f0e13133.1713358679.git.jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_backlight.c
drivers/gpu/drm/i915/display/intel_ddi.c
drivers/gpu/drm/i915/display/intel_display_driver.c
drivers/gpu/drm/i915/display/intel_panel.c
drivers/gpu/drm/i915/display/intel_pps.c
drivers/gpu/drm/i915/display/intel_quirks.c
drivers/gpu/drm/i915/display/intel_quirks.h

index 4d43304..071668b 100644 (file)
@@ -83,16 +83,16 @@ static u32 scale_hw_to_user(struct intel_connector *connector,
 
 u32 intel_backlight_invert_pwm_level(struct intel_connector *connector, u32 val)
 {
-       struct drm_i915_private *i915 = to_i915(connector->base.dev);
+       struct intel_display *display = to_intel_display(connector);
        struct intel_panel *panel = &connector->panel;
 
-       drm_WARN_ON(&i915->drm, panel->backlight.pwm_level_max == 0);
+       drm_WARN_ON(display->drm, panel->backlight.pwm_level_max == 0);
 
-       if (i915->display.params.invert_brightness < 0)
+       if (display->params.invert_brightness < 0)
                return val;
 
-       if (i915->display.params.invert_brightness > 0 ||
-           intel_has_quirk(i915, QUIRK_INVERT_BRIGHTNESS)) {
+       if (display->params.invert_brightness > 0 ||
+           intel_has_quirk(display, QUIRK_INVERT_BRIGHTNESS)) {
                return panel->backlight.pwm_level_max - val + panel->backlight.pwm_level_min;
        }
 
@@ -126,15 +126,15 @@ u32 intel_backlight_level_to_pwm(struct intel_connector *connector, u32 val)
 
 u32 intel_backlight_level_from_pwm(struct intel_connector *connector, u32 val)
 {
-       struct drm_i915_private *i915 = to_i915(connector->base.dev);
+       struct intel_display *display = to_intel_display(connector);
        struct intel_panel *panel = &connector->panel;
 
-       drm_WARN_ON_ONCE(&i915->drm,
+       drm_WARN_ON_ONCE(display->drm,
                         panel->backlight.max == 0 || panel->backlight.pwm_level_max == 0);
 
-       if (i915->display.params.invert_brightness > 0 ||
-           (i915->display.params.invert_brightness == 0 &&
-            intel_has_quirk(i915, QUIRK_INVERT_BRIGHTNESS)))
+       if (display->params.invert_brightness > 0 ||
+           (display->params.invert_brightness == 0 &&
+            intel_has_quirk(display, 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,
@@ -1642,17 +1642,17 @@ void intel_backlight_update(struct intel_atomic_state *state,
 
 int intel_backlight_setup(struct intel_connector *connector, enum pipe pipe)
 {
-       struct drm_i915_private *i915 = to_i915(connector->base.dev);
+       struct intel_display *display = to_intel_display(connector);
        struct intel_panel *panel = &connector->panel;
        int ret;
 
        if (!connector->panel.vbt.backlight.present) {
-               if (intel_has_quirk(i915, QUIRK_BACKLIGHT_PRESENT)) {
-                       drm_dbg_kms(&i915->drm,
+               if (intel_has_quirk(display, QUIRK_BACKLIGHT_PRESENT)) {
+                       drm_dbg_kms(display->drm,
                                    "[CONNECTOR:%d:%s] no backlight present per VBT, but present per quirk\n",
                                    connector->base.base.id, connector->base.name);
                } else {
-                       drm_dbg_kms(&i915->drm,
+                       drm_dbg_kms(display->drm,
                                    "[CONNECTOR:%d:%s] no backlight present per VBT\n",
                                    connector->base.base.id, connector->base.name);
                        return 0;
@@ -1660,16 +1660,16 @@ int intel_backlight_setup(struct intel_connector *connector, enum pipe pipe)
        }
 
        /* ensure intel_panel has been initialized first */
-       if (drm_WARN_ON(&i915->drm, !panel->backlight.funcs))
+       if (drm_WARN_ON(display->drm, !panel->backlight.funcs))
                return -ENODEV;
 
        /* set level and max in panel struct */
-       mutex_lock(&i915->display.backlight.lock);
+       mutex_lock(&display->backlight.lock);
        ret = panel->backlight.funcs->setup(connector, pipe);
-       mutex_unlock(&i915->display.backlight.lock);
+       mutex_unlock(&display->backlight.lock);
 
        if (ret) {
-               drm_dbg_kms(&i915->drm,
+               drm_dbg_kms(display->drm,
                            "[CONNECTOR:%d:%s] failed to setup backlight\n",
                            connector->base.base.id, connector->base.name);
                return ret;
@@ -1677,7 +1677,7 @@ int intel_backlight_setup(struct intel_connector *connector, enum pipe pipe)
 
        panel->backlight.present = true;
 
-       drm_dbg_kms(&i915->drm,
+       drm_dbg_kms(display->drm,
                    "[CONNECTOR:%d:%s] backlight initialized, %s, brightness %u/%u\n",
                    connector->base.base.id, connector->base.name,
                    str_enabled_disabled(panel->backlight.enabled),
@@ -1821,7 +1821,7 @@ void intel_backlight_init_funcs(struct intel_panel *panel)
                if (intel_dp_aux_init_backlight_funcs(connector) == 0)
                        return;
 
-               if (!intel_has_quirk(i915, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK))
+               if (!intel_has_quirk(&i915->display, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK))
                        connector->panel.backlight.power = intel_pps_backlight_power;
        }
 
index 02a3142..ef2cd34 100644 (file)
@@ -631,6 +631,7 @@ intel_ddi_config_transcoder_func(struct intel_encoder *encoder,
 
 void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state)
 {
+       struct intel_display *display = to_intel_display(crtc_state);
        struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
        struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
        enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
@@ -661,10 +662,9 @@ 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 (intel_has_quirk(dev_priv, QUIRK_INCREASE_DDI_DISABLED_TIME) &&
+       if (intel_has_quirk(display, 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");
+               drm_dbg_kms(display->drm, "Quirk Increase DDI disabled time\n");
                /* Quirk time at 100ms for reliable operation */
                msleep(100);
        }
index e401555..4f112a6 100644 (file)
@@ -204,6 +204,7 @@ void intel_display_driver_early_probe(struct drm_i915_private *i915)
 /* part #1: call before irq install */
 int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
 {
+       struct intel_display *display = &i915->display;
        int ret;
 
        if (i915_inject_probe_failure(i915))
@@ -262,7 +263,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
        if (ret)
                goto cleanup_vga_client_pw_domain_dmc;
 
-       intel_init_quirks(i915);
+       intel_init_quirks(display);
 
        intel_fbc_init(i915);
 
index 073ea31..6f4ff6a 100644 (file)
 
 bool intel_panel_use_ssc(struct drm_i915_private *i915)
 {
-       if (i915->display.params.panel_use_ssc >= 0)
-               return i915->display.params.panel_use_ssc != 0;
-       return i915->display.vbt.lvds_use_ssc &&
-               !intel_has_quirk(i915, QUIRK_LVDS_SSC_DISABLE);
+       struct intel_display *display = &i915->display;
+
+       if (display->params.panel_use_ssc >= 0)
+               return display->params.panel_use_ssc != 0;
+       return display->vbt.lvds_use_ssc &&
+               !intel_has_quirk(display, QUIRK_LVDS_SSC_DISABLE);
 }
 
 const struct drm_display_mode *
index 3078dfa..0ccbf9a 100644 (file)
@@ -1350,7 +1350,7 @@ static void pps_init_delays_bios(struct intel_dp *intel_dp,
 static void pps_init_delays_vbt(struct intel_dp *intel_dp,
                                struct edp_power_seq *vbt)
 {
-       struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
+       struct intel_display *display = to_intel_display(intel_dp);
        struct intel_connector *connector = intel_dp->attached_connector;
 
        *vbt = connector->panel.vbt.edp.pps;
@@ -1363,9 +1363,9 @@ 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 (intel_has_quirk(dev_priv, QUIRK_INCREASE_T12_DELAY)) {
+       if (intel_has_quirk(display, QUIRK_INCREASE_T12_DELAY)) {
                vbt->t11_t12 = max_t(u16, vbt->t11_t12, 1300 * 10);
-               drm_dbg_kms(&dev_priv->drm,
+               drm_dbg_kms(display->drm,
                            "Increasing T12 panel delay as per the quirk to %d\n",
                            vbt->t11_t12);
        }
index a280448..14d5fef 100644 (file)
@@ -9,72 +9,72 @@
 #include "intel_display_types.h"
 #include "intel_quirks.h"
 
-static void intel_set_quirk(struct drm_i915_private *i915, enum intel_quirk_id quirk)
+static void intel_set_quirk(struct intel_display *display, enum intel_quirk_id quirk)
 {
-       i915->display.quirks.mask |= BIT(quirk);
+       display->quirks.mask |= BIT(quirk);
 }
 
 /*
  * Some machines (Lenovo U160) do not work with SSC on LVDS for some reason
  */
-static void quirk_ssc_force_disable(struct drm_i915_private *i915)
+static void quirk_ssc_force_disable(struct intel_display *display)
 {
-       intel_set_quirk(i915, QUIRK_LVDS_SSC_DISABLE);
-       drm_info(&i915->drm, "applying lvds SSC disable quirk\n");
+       intel_set_quirk(display, QUIRK_LVDS_SSC_DISABLE);
+       drm_info(display->drm, "applying lvds SSC disable quirk\n");
 }
 
 /*
  * A machine (e.g. Acer Aspire 5734Z) may need to invert the panel backlight
  * brightness value
  */
-static void quirk_invert_brightness(struct drm_i915_private *i915)
+static void quirk_invert_brightness(struct intel_display *display)
 {
-       intel_set_quirk(i915, QUIRK_INVERT_BRIGHTNESS);
-       drm_info(&i915->drm, "applying inverted panel brightness quirk\n");
+       intel_set_quirk(display, QUIRK_INVERT_BRIGHTNESS);
+       drm_info(display->drm, "applying inverted panel brightness quirk\n");
 }
 
 /* Some VBT's incorrectly indicate no backlight is present */
-static void quirk_backlight_present(struct drm_i915_private *i915)
+static void quirk_backlight_present(struct intel_display *display)
 {
-       intel_set_quirk(i915, QUIRK_BACKLIGHT_PRESENT);
-       drm_info(&i915->drm, "applying backlight present quirk\n");
+       intel_set_quirk(display, QUIRK_BACKLIGHT_PRESENT);
+       drm_info(display->drm, "applying backlight present quirk\n");
 }
 
 /* Toshiba Satellite P50-C-18C requires T12 delay to be min 800ms
  * which is 300 ms greater than eDP spec T12 min.
  */
-static void quirk_increase_t12_delay(struct drm_i915_private *i915)
+static void quirk_increase_t12_delay(struct intel_display *display)
 {
-       intel_set_quirk(i915, QUIRK_INCREASE_T12_DELAY);
-       drm_info(&i915->drm, "Applying T12 delay quirk\n");
+       intel_set_quirk(display, QUIRK_INCREASE_T12_DELAY);
+       drm_info(display->drm, "Applying T12 delay quirk\n");
 }
 
 /*
  * GeminiLake NUC HDMI outputs require additional off time
  * this allows the onboard retimer to correctly sync to signal
  */
-static void quirk_increase_ddi_disabled_time(struct drm_i915_private *i915)
+static void quirk_increase_ddi_disabled_time(struct intel_display *display)
 {
-       intel_set_quirk(i915, QUIRK_INCREASE_DDI_DISABLED_TIME);
-       drm_info(&i915->drm, "Applying Increase DDI Disabled quirk\n");
+       intel_set_quirk(display, QUIRK_INCREASE_DDI_DISABLED_TIME);
+       drm_info(display->drm, "Applying Increase DDI Disabled quirk\n");
 }
 
-static void quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
+static void quirk_no_pps_backlight_power_hook(struct intel_display *display)
 {
-       intel_set_quirk(i915, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK);
-       drm_info(&i915->drm, "Applying no pps backlight power quirk\n");
+       intel_set_quirk(display, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK);
+       drm_info(display->drm, "Applying no pps backlight power quirk\n");
 }
 
 struct intel_quirk {
        int device;
        int subsystem_vendor;
        int subsystem_device;
-       void (*hook)(struct drm_i915_private *i915);
+       void (*hook)(struct intel_display *display);
 };
 
 /* For systems that don't have a meaningful PCI subdevice/subvendor ID */
 struct intel_dmi_quirk {
-       void (*hook)(struct drm_i915_private *i915);
+       void (*hook)(struct intel_display *display);
        const struct dmi_system_id (*dmi_id_list)[];
 };
 
@@ -203,9 +203,9 @@ static struct intel_quirk intel_quirks[] = {
        { 0x0f31, 0x103c, 0x220f, quirk_invert_brightness },
 };
 
-void intel_init_quirks(struct drm_i915_private *i915)
+void intel_init_quirks(struct intel_display *display)
 {
-       struct pci_dev *d = to_pci_dev(i915->drm.dev);
+       struct pci_dev *d = to_pci_dev(display->drm->dev);
        int i;
 
        for (i = 0; i < ARRAY_SIZE(intel_quirks); i++) {
@@ -216,15 +216,15 @@ void intel_init_quirks(struct drm_i915_private *i915)
                     q->subsystem_vendor == PCI_ANY_ID) &&
                    (d->subsystem_device == q->subsystem_device ||
                     q->subsystem_device == PCI_ANY_ID))
-                       q->hook(i915);
+                       q->hook(display);
        }
        for (i = 0; i < ARRAY_SIZE(intel_dmi_quirks); i++) {
                if (dmi_check_system(*intel_dmi_quirks[i].dmi_id_list) != 0)
-                       intel_dmi_quirks[i].hook(i915);
+                       intel_dmi_quirks[i].hook(display);
        }
 }
 
-bool intel_has_quirk(struct drm_i915_private *i915, enum intel_quirk_id quirk)
+bool intel_has_quirk(struct intel_display *display, enum intel_quirk_id quirk)
 {
-       return i915->display.quirks.mask & BIT(quirk);
+       return display->quirks.mask & BIT(quirk);
 }
index 10a4d16..151c8f4 100644 (file)
@@ -8,7 +8,7 @@
 
 #include <linux/types.h>
 
-struct drm_i915_private;
+struct intel_display;
 
 enum intel_quirk_id {
        QUIRK_BACKLIGHT_PRESENT,
@@ -19,7 +19,7 @@ enum intel_quirk_id {
        QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK,
 };
 
-void intel_init_quirks(struct drm_i915_private *i915);
-bool intel_has_quirk(struct drm_i915_private *i915, enum intel_quirk_id quirk);
+void intel_init_quirks(struct intel_display *display);
+bool intel_has_quirk(struct intel_display *display, enum intel_quirk_id quirk);
 
 #endif /* __INTEL_QUIRKS_H__ */