Lines Matching defs:i915

391 static u32 intel_hpd_hotplug_mask(struct drm_i915_private *i915,
403 static u32 intel_hpd_hotplug_enables(struct drm_i915_private *i915,
409 for_each_intel_encoder(&i915->drm, encoder)
510 void xelpdp_pica_irq_handler(struct drm_i915_private *i915, u32 iir)
517 if (DISPLAY_VER(i915) >= 20)
523 if (!(i915->display.hotplug.hpd[pin] & hotplug_trigger))
528 val = intel_de_read(i915, XELPDP_PORT_HOTPLUG_CTL(pin));
529 intel_de_write(i915, XELPDP_PORT_HOTPLUG_CTL(pin), val);
536 drm_dbg(&i915->drm,
540 intel_hpd_irq_handler(i915, pin_mask, long_mask);
544 intel_dp_aux_irq_handler(i915);
547 drm_err(&i915->drm,
706 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
714 return HAS_PCH_LPT_LP(i915) ?
744 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
746 intel_uncore_rmw(&i915->uncore, PCH_PORT_HOTPLUG,
810 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
812 intel_uncore_rmw(&i915->uncore, SHOTPLUG_CTL_DDI,
826 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
828 intel_uncore_rmw(&i915->uncore, SHOTPLUG_CTL_TC,
877 static void dg1_hpd_invert(struct drm_i915_private *i915)
883 intel_uncore_rmw(&i915->uncore, SOUTH_CHICKEN1, 0, val);
888 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
890 dg1_hpd_invert(i915);
909 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
911 intel_uncore_rmw(&i915->uncore, GEN11_TC_HOTPLUG_CTL,
925 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
927 intel_uncore_rmw(&i915->uncore, GEN11_TBT_HOTPLUG_CTL,
934 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
939 if (INTEL_PCH_TYPE(i915) >= PCH_ICP)
995 static void mtp_ddi_hpd_detection_setup(struct drm_i915_private *i915)
997 intel_de_rmw(i915, SHOTPLUG_CTL_DDI,
998 intel_hpd_hotplug_mask(i915, mtp_ddi_hotplug_mask),
999 intel_hpd_hotplug_enables(i915, mtp_ddi_hotplug_enables));
1004 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1006 intel_de_rmw(i915, SHOTPLUG_CTL_DDI,
1011 static void mtp_tc_hpd_detection_setup(struct drm_i915_private *i915)
1013 intel_de_rmw(i915, SHOTPLUG_CTL_TC,
1014 intel_hpd_hotplug_mask(i915, mtp_tc_hotplug_mask),
1015 intel_hpd_hotplug_enables(i915, mtp_tc_hotplug_enables));
1020 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1022 intel_de_rmw(i915, SHOTPLUG_CTL_DDI,
1027 static void mtp_hpd_invert(struct drm_i915_private *i915)
1038 intel_de_rmw(i915, SOUTH_CHICKEN1, 0, val);
1043 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1045 mtp_hpd_invert(i915);
1050 static void mtp_hpd_irq_setup(struct drm_i915_private *i915)
1054 enabled_irqs = intel_hpd_enabled_irqs(i915, i915->display.hotplug.pch_hpd);
1055 hotplug_irqs = intel_hpd_hotplug_irqs(i915, i915->display.hotplug.pch_hpd);
1057 intel_de_write(i915, SHPD_FILTER_CNT, SHPD_FILTER_CNT_250);
1059 mtp_hpd_invert(i915);
1060 ibx_display_interrupt_update(i915, hotplug_irqs, enabled_irqs);
1062 mtp_ddi_hpd_detection_setup(i915);
1063 mtp_tc_hpd_detection_setup(i915);
1066 static void xe2lpd_sde_hpd_irq_setup(struct drm_i915_private *i915)
1070 enabled_irqs = intel_hpd_enabled_irqs(i915, i915->display.hotplug.pch_hpd);
1071 hotplug_irqs = intel_hpd_hotplug_irqs(i915, i915->display.hotplug.pch_hpd);
1073 ibx_display_interrupt_update(i915, hotplug_irqs, enabled_irqs);
1075 mtp_ddi_hpd_detection_setup(i915);
1076 mtp_tc_hpd_detection_setup(i915);
1084 static void _xelpdp_pica_hpd_detection_setup(struct drm_i915_private *i915,
1093 intel_de_rmw(i915, XELPDP_PORT_HOTPLUG_CTL(hpd_pin),
1099 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1101 _xelpdp_pica_hpd_detection_setup(i915, encoder->hpd_pin, true);
1104 static void xelpdp_pica_hpd_detection_setup(struct drm_i915_private *i915)
1112 for_each_intel_encoder(&i915->drm, encoder)
1116 _xelpdp_pica_hpd_detection_setup(i915, pin, available_pins & BIT(pin));
1125 static void xelpdp_hpd_irq_setup(struct drm_i915_private *i915)
1129 enabled_irqs = intel_hpd_enabled_irqs(i915, i915->display.hotplug.hpd);
1130 hotplug_irqs = intel_hpd_hotplug_irqs(i915, i915->display.hotplug.hpd);
1132 intel_de_rmw(i915, PICAINTERRUPT_IMR, hotplug_irqs,
1134 intel_uncore_posting_read(&i915->uncore, PICAINTERRUPT_IMR);
1136 xelpdp_pica_hpd_detection_setup(i915);
1138 if (INTEL_PCH_TYPE(i915) >= PCH_LNL)
1139 xe2lpd_sde_hpd_irq_setup(i915);
1140 else if (INTEL_PCH_TYPE(i915) >= PCH_MTL)
1141 mtp_hpd_irq_setup(i915);
1200 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1203 if (HAS_PCH_CNP(i915)) {
1204 intel_uncore_rmw(&i915->uncore, SOUTH_CHICKEN1,
1209 intel_uncore_rmw(&i915->uncore, PCH_PORT_HOTPLUG,
1213 intel_uncore_rmw(&i915->uncore, PCH_PORT_HOTPLUG2,
1269 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1271 intel_uncore_rmw(&i915->uncore, DIGITAL_PORT_HOTPLUG_CNTRL,
1343 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1345 intel_uncore_rmw(&i915->uncore, PCH_PORT_HOTPLUG,
1362 static void g45_hpd_peg_band_gap_wa(struct drm_i915_private *i915)
1369 intel_de_rmw(i915, PEG_BAND_GAP_DATA, 0xf, 0xd);
1374 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1377 if (IS_G45(i915))
1378 g45_hpd_peg_band_gap_wa(i915);
1381 i915_hotplug_interrupt_update(i915, hotplug_en, hotplug_en);
1416 void (*hpd_irq_setup)(struct drm_i915_private *i915);
1427 HPD_FUNCS(i915);
1439 struct drm_i915_private *i915 = to_i915(encoder->base.dev);
1441 if (i915->display.funcs.hotplug)
1442 i915->display.funcs.hotplug->hpd_enable_detection(encoder);
1445 void intel_hpd_irq_setup(struct drm_i915_private *i915)
1447 if (i915->display.irq.display_irqs_enabled && i915->display.funcs.hotplug)
1448 i915->display.funcs.hotplug->hpd_irq_setup(i915);
1451 void intel_hotplug_irq_init(struct drm_i915_private *i915)
1453 intel_hpd_init_pins(i915);
1455 intel_hpd_init_early(i915);
1457 if (HAS_GMCH(i915)) {
1458 if (I915_HAS_HOTPLUG(i915))
1459 i915->display.funcs.hotplug = &i915_hpd_funcs;
1461 if (HAS_PCH_DG2(i915))
1462 i915->display.funcs.hotplug = &icp_hpd_funcs;
1463 else if (HAS_PCH_DG1(i915))
1464 i915->display.funcs.hotplug = &dg1_hpd_funcs;
1465 else if (DISPLAY_VER(i915) >= 14)
1466 i915->display.funcs.hotplug = &xelpdp_hpd_funcs;
1467 else if (DISPLAY_VER(i915) >= 11)
1468 i915->display.funcs.hotplug = &gen11_hpd_funcs;
1469 else if (IS_GEMINILAKE(i915) || IS_BROXTON(i915))
1470 i915->display.funcs.hotplug = &bxt_hpd_funcs;
1471 else if (INTEL_PCH_TYPE(i915) >= PCH_ICP)
1472 i915->display.funcs.hotplug = &icp_hpd_funcs;
1473 else if (INTEL_PCH_TYPE(i915) >= PCH_SPT)
1474 i915->display.funcs.hotplug = &spt_hpd_funcs;
1476 i915->display.funcs.hotplug = &ilk_hpd_funcs;