Lines Matching full:display

27 __diag_ignore_all("-Woverride-init", "Allow field initialization overrides for display info");
1384 * platforms. Their display will be probed automatically based on the IP version
1426 * Separate detection for no display cases to keep the display id array simple.
1503 const struct intel_display_device_info *display; member
1513 probe_gmdid_display(struct intel_display *display, struct intel_display_ip_ver *ip_ver) in probe_gmdid_display() argument
1515 struct pci_dev *pdev = to_pci_dev(display->drm->dev); in probe_gmdid_display()
1523 drm_err(display->drm, in probe_gmdid_display()
1524 "Cannot map MMIO BAR to read display GMD_ID\n"); in probe_gmdid_display()
1532 drm_dbg_kms(display->drm, "Device doesn't have display\n"); in probe_gmdid_display()
1544 return gmdid_display_map[i].display; in probe_gmdid_display()
1548 drm_err(display->drm, in probe_gmdid_display()
1549 "Unrecognized display IP version %d.%02d; disabling display.\n", in probe_gmdid_display()
1580 static enum intel_step get_pre_gmdid_step(struct intel_display *display, in get_pre_gmdid_step() argument
1584 struct pci_dev *pdev = to_pci_dev(display->drm->dev); in get_pre_gmdid_step()
1603 drm_warn(display->drm, "Unknown revision 0x%02x\n", revision); in get_pre_gmdid_step()
1617 drm_dbg_kms(display->drm, "Using display stepping for revision 0x%02x\n", in get_pre_gmdid_step()
1621 drm_dbg_kms(display->drm, "Using future display stepping\n"); in get_pre_gmdid_step()
1626 drm_WARN_ON(display->drm, step == STEP_NONE); in get_pre_gmdid_step()
1652 struct intel_display *display; in intel_display_device_probe() local
1659 display = kzalloc(sizeof(*display), GFP_KERNEL); in intel_display_device_probe()
1660 if (!display) in intel_display_device_probe()
1664 display->drm = pci_get_drvdata(pdev); in intel_display_device_probe()
1666 intel_display_params_copy(&display->params); in intel_display_device_probe()
1669 drm_dbg_kms(display->drm, "Device doesn't have display\n"); in intel_display_device_probe()
1675 drm_dbg_kms(display->drm, in intel_display_device_probe()
1676 "Unknown device ID %04x; disabling display.\n", in intel_display_device_probe()
1683 info = probe_gmdid_display(display, &ip_ver); in intel_display_device_probe()
1687 DISPLAY_INFO(display) = info; in intel_display_device_probe()
1689 memcpy(DISPLAY_RUNTIME_INFO(display), in intel_display_device_probe()
1690 &DISPLAY_INFO(display)->__runtime_defaults, in intel_display_device_probe()
1691 sizeof(*DISPLAY_RUNTIME_INFO(display))); in intel_display_device_probe()
1693 drm_WARN_ON(display->drm, !desc->name || in intel_display_device_probe()
1696 display->platform = desc->platforms; in intel_display_device_probe()
1700 drm_WARN_ON(display->drm, !subdesc->name || in intel_display_device_probe()
1703 display_platforms_or(&display->platform, &subdesc->platforms); in intel_display_device_probe()
1706 drm_WARN_ON(display->drm, in intel_display_device_probe()
1707 display_platforms_weight(&display->platform) != in intel_display_device_probe()
1713 DISPLAY_RUNTIME_INFO(display)->ip = ip_ver; in intel_display_device_probe()
1716 drm_dbg_kms(display->drm, "Using future display stepping\n"); in intel_display_device_probe()
1720 step = get_pre_gmdid_step(display, &desc->step_info, in intel_display_device_probe()
1724 DISPLAY_RUNTIME_INFO(display)->step = step; in intel_display_device_probe()
1726 drm_info(display->drm, "Found %s%s%s (device ID %04x) %s display version %u.%02u stepping %s\n", in intel_display_device_probe()
1728 pdev->device, display->platform.dgfx ? "discrete" : "integrated", in intel_display_device_probe()
1729 DISPLAY_RUNTIME_INFO(display)->ip.ver, in intel_display_device_probe()
1730 DISPLAY_RUNTIME_INFO(display)->ip.rel, in intel_display_device_probe()
1733 return display; in intel_display_device_probe()
1736 DISPLAY_INFO(display) = &no_display; in intel_display_device_probe()
1738 return display; in intel_display_device_probe()
1741 void intel_display_device_remove(struct intel_display *display) in intel_display_device_remove() argument
1743 if (!display) in intel_display_device_remove()
1746 intel_display_params_free(&display->params); in intel_display_device_remove()
1747 kfree(display); in intel_display_device_remove()
1750 static void __intel_display_device_info_runtime_init(struct intel_display *display) in __intel_display_device_info_runtime_init() argument
1752 struct intel_display_runtime_info *display_runtime = DISPLAY_RUNTIME_INFO(display); in __intel_display_device_info_runtime_init()
1760 if (display->platform.haswell_ult || display->platform.broadwell_ult) in __intel_display_device_info_runtime_init()
1763 if (display->platform.icelake_port_f) in __intel_display_device_info_runtime_init()
1767 if (display->platform.alderlake_s && IS_DISPLAY_STEP(display, STEP_A0, STEP_A2)) in __intel_display_device_info_runtime_init()
1768 for_each_pipe(display, pipe) in __intel_display_device_info_runtime_init()
1770 else if (DISPLAY_VER(display) >= 11) { in __intel_display_device_info_runtime_init()
1771 for_each_pipe(display, pipe) in __intel_display_device_info_runtime_init()
1773 } else if (DISPLAY_VER(display) >= 9) { in __intel_display_device_info_runtime_init()
1779 if (DISPLAY_VER(display) >= 13 || HAS_D12_PLANE_MINIMIZATION(display)) in __intel_display_device_info_runtime_init()
1780 for_each_pipe(display, pipe) in __intel_display_device_info_runtime_init()
1782 else if (DISPLAY_VER(display) >= 11) in __intel_display_device_info_runtime_init()
1783 for_each_pipe(display, pipe) in __intel_display_device_info_runtime_init()
1785 else if (DISPLAY_VER(display) == 10) in __intel_display_device_info_runtime_init()
1786 for_each_pipe(display, pipe) in __intel_display_device_info_runtime_init()
1788 else if (display->platform.broxton) { in __intel_display_device_info_runtime_init()
1801 } else if (display->platform.valleyview || display->platform.cherryview) { in __intel_display_device_info_runtime_init()
1802 for_each_pipe(display, pipe) in __intel_display_device_info_runtime_init()
1804 } else if (DISPLAY_VER(display) >= 5 || display->platform.g4x) { in __intel_display_device_info_runtime_init()
1805 for_each_pipe(display, pipe) in __intel_display_device_info_runtime_init()
1809 if ((display->platform.dgfx || DISPLAY_VER(display) >= 14) && in __intel_display_device_info_runtime_init()
1810 !(intel_de_read(display, GU_CNTL_PROTECTED) & DEPRESENT)) { in __intel_display_device_info_runtime_init()
1811 drm_info(display->drm, "Display not present, disabling\n"); in __intel_display_device_info_runtime_init()
1815 if (IS_DISPLAY_VER(display, 7, 8) && HAS_PCH_SPLIT(display)) { in __intel_display_device_info_runtime_init()
1816 u32 fuse_strap = intel_de_read(display, FUSE_STRAP); in __intel_display_device_info_runtime_init()
1817 u32 sfuse_strap = intel_de_read(display, SFUSE_STRAP); in __intel_display_device_info_runtime_init()
1820 * SFUSE_STRAP is supposed to have a bit signalling the display in __intel_display_device_info_runtime_init()
1822 * certain cases, fused off display means that PCH display in __intel_display_device_info_runtime_init()
1830 (HAS_PCH_CPT(display) && in __intel_display_device_info_runtime_init()
1832 drm_info(display->drm, in __intel_display_device_info_runtime_init()
1833 "Display fused off, disabling\n"); in __intel_display_device_info_runtime_init()
1836 drm_info(display->drm, "PipeC fused off\n"); in __intel_display_device_info_runtime_init()
1840 } else if (DISPLAY_VER(display) >= 9) { in __intel_display_device_info_runtime_init()
1841 u32 dfsm = intel_de_read(display, SKL_DFSM); in __intel_display_device_info_runtime_init()
1859 if (DISPLAY_VER(display) >= 12 && in __intel_display_device_info_runtime_init()
1872 if (display->platform.dg2 || DISPLAY_VER(display) < 13) { in __intel_display_device_info_runtime_init()
1877 if (DISPLAY_VER(display) >= 11 && (dfsm & ICL_DFSM_DMC_DISABLE)) in __intel_display_device_info_runtime_init()
1880 if (IS_DISPLAY_VER(display, 10, 12) && in __intel_display_device_info_runtime_init()
1884 if (DISPLAY_VER(display) >= 20 && in __intel_display_device_info_runtime_init()
1889 if (DISPLAY_VER(display) >= 20) { in __intel_display_device_info_runtime_init()
1890 u32 cap = intel_de_read(display, XE2LPD_DE_CAP); in __intel_display_device_info_runtime_init()
1898 for_each_pipe(display, pipe) in __intel_display_device_info_runtime_init()
1904 if (DISPLAY_VER(display) >= 30) in __intel_display_device_info_runtime_init()
1906 intel_de_read(display, PICA_PHY_CONFIG_CONTROL) & EDP_ON_TYPEC; in __intel_display_device_info_runtime_init()
1908 display_runtime->rawclk_freq = intel_read_rawclk(display); in __intel_display_device_info_runtime_init()
1909 drm_dbg_kms(display->drm, "rawclk rate: %d kHz\n", in __intel_display_device_info_runtime_init()
1918 void intel_display_device_info_runtime_init(struct intel_display *display) in intel_display_device_info_runtime_init() argument
1920 if (HAS_DISPLAY(display)) in intel_display_device_info_runtime_init()
1921 __intel_display_device_info_runtime_init(display); in intel_display_device_info_runtime_init()
1923 /* Display may have been disabled by runtime init */ in intel_display_device_info_runtime_init()
1924 if (!HAS_DISPLAY(display)) { in intel_display_device_info_runtime_init()
1925 display->drm->driver_features &= ~(DRIVER_MODESET | DRIVER_ATOMIC); in intel_display_device_info_runtime_init()
1926 display->info.__device_info = &no_display; in intel_display_device_info_runtime_init()
1930 if (!display->params.nuclear_pageflip && in intel_display_device_info_runtime_init()
1931 DISPLAY_VER(display) < 5 && !display->platform.g4x) in intel_display_device_info_runtime_init()
1932 display->drm->driver_features &= ~DRIVER_ATOMIC; in intel_display_device_info_runtime_init()
1940 drm_printf(p, "display version: %u.%02u\n", in intel_display_device_info_print()
1944 drm_printf(p, "display version: %u\n", in intel_display_device_info_print()
1947 drm_printf(p, "display stepping: %s\n", intel_step_name(runtime->step)); in intel_display_device_info_print()
1960 bool intel_display_device_present(struct intel_display *display) in intel_display_device_present() argument
1962 return display && HAS_DISPLAY(display); in intel_display_device_present()
1966 * Assuming the device has display hardware, should it be enabled?
1968 * It's an error to call this function if the device does not have display
1971 * Disabling display means taking over the display hardware, putting it to
1974 bool intel_display_device_enabled(struct intel_display *display) in intel_display_device_enabled() argument
1977 drm_WARN_ON(display->drm, !HAS_DISPLAY(display)); in intel_display_device_enabled()
1979 return !display->params.disable_display && in intel_display_device_enabled()
1980 !intel_opregion_headless_sku(display); in intel_display_device_enabled()