summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/display/intel_display_core.h
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2022-08-24 16:15:42 +0300
committerJani Nikula <jani.nikula@intel.com>2022-08-29 13:20:27 +0300
commit5a4dd6f0e846541e57a58f97fce86da1f3ab3a88 (patch)
tree6d342958b0a5d20169d6f956d0cf80a9f59931a9 /drivers/gpu/drm/i915/display/intel_display_core.h
parenta30a6fe9e56c401307d534b2c224002f9b2d33ff (diff)
downloadlinux-5a4dd6f0e846541e57a58f97fce86da1f3ab3a88.tar.gz
linux-5a4dd6f0e846541e57a58f97fce86da1f3ab3a88.tar.bz2
linux-5a4dd6f0e846541e57a58f97fce86da1f3ab3a88.zip
drm/i915: move hotplug to display.hotplug
Move display hotplug related members under drm_i915_private display sub-struct. Rename struct i915_hotplug to intel_hotplug while at it. 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/c1c7562a31c115e9d6a131861e4ca9c97d4f7e09.1661346845.git.jani.nikula@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_display_core.h')
-rw-r--r--drivers/gpu/drm/i915/display/intel_display_core.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index 72133893dfb1..0dcf50f86b1d 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -102,6 +102,45 @@ struct intel_dpll {
} ref_clks;
};
+struct intel_hotplug {
+ struct delayed_work hotplug_work;
+
+ const u32 *hpd, *pch_hpd;
+
+ struct {
+ unsigned long last_jiffies;
+ int count;
+ enum {
+ HPD_ENABLED = 0,
+ HPD_DISABLED = 1,
+ HPD_MARK_DISABLED = 2
+ } state;
+ } stats[HPD_NUM_PINS];
+ u32 event_bits;
+ u32 retry_bits;
+ struct delayed_work reenable_work;
+
+ u32 long_port_mask;
+ u32 short_port_mask;
+ struct work_struct dig_port_work;
+
+ struct work_struct poll_init_work;
+ bool poll_enabled;
+
+ unsigned int hpd_storm_threshold;
+ /* Whether or not to count short HPD IRQs in HPD storms */
+ u8 hpd_short_storm_enabled;
+
+ /*
+ * if we get a HPD irq from DP and a HPD irq from non-DP
+ * the non-DP HPD could block the workqueue on a mode config
+ * mutex getting, that userspace may have taken. However
+ * userspace is waiting on the DP workqueue to run which is
+ * blocked behind the non-DP one.
+ */
+ struct workqueue_struct *dp_wq;
+};
+
struct intel_wm {
/*
* Raw watermark latency values:
@@ -202,6 +241,7 @@ struct intel_display {
struct intel_audio audio;
struct intel_dmc dmc;
struct intel_dpll dpll;
+ struct intel_hotplug hotplug;
struct intel_wm wm;
};