1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 29026e0d1SMaxime Ripard 3c0e09200SDave Airlie# Makefile for the drm device driver. This driver provides support for the 4c0e09200SDave Airlie# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. 5c0e09200SDave Airlie 684ec6728SJim CromieCFLAGS-$(CONFIG_DRM_USE_DYNAMIC_DEBUG) += -DDYNAMIC_DEBUG_MODULE 784ec6728SJim Cromie 8a61ddb43SJani Nikula# Unconditionally enable W=1 warnings locally 9a61ddb43SJani Nikula# --- begin copy-paste W=1 warnings from scripts/Makefile.warn 10a61ddb43SJani Nikulasubdir-ccflags-y += -Wextra -Wunused -Wno-unused-parameter 11a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wrestrict) 12a61ddb43SJani Nikulasubdir-ccflags-y += -Wmissing-format-attribute 13a61ddb43SJani Nikulasubdir-ccflags-y += -Wold-style-definition 14a61ddb43SJani Nikulasubdir-ccflags-y += -Wmissing-include-dirs 15a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable) 16a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wunused-const-variable) 17a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wpacked-not-aligned) 18a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wformat-overflow) 19a61ddb43SJani Nikula# FIXME: fix -Wformat-truncation warnings and uncomment 20a61ddb43SJani Nikula#subdir-ccflags-y += $(call cc-option, -Wformat-truncation) 21a61ddb43SJani Nikulasubdir-ccflags-y += $(call cc-option, -Wstringop-truncation) 22a61ddb43SJani Nikula# The following turn off the warnings enabled by -Wextra 23a61ddb43SJani Nikulaifeq ($(findstring 2, $(KBUILD_EXTRA_WARN)),) 24a61ddb43SJani Nikulasubdir-ccflags-y += -Wno-missing-field-initializers 25a61ddb43SJani Nikulasubdir-ccflags-y += -Wno-type-limits 26a61ddb43SJani Nikulasubdir-ccflags-y += -Wno-shift-negative-value 27a61ddb43SJani Nikulaendif 28a61ddb43SJani Nikulaifeq ($(findstring 3, $(KBUILD_EXTRA_WARN)),) 29a61ddb43SJani Nikulasubdir-ccflags-y += -Wno-sign-compare 30a61ddb43SJani Nikulaendif 31a61ddb43SJani Nikula# --- end copy-paste 32a61ddb43SJani Nikula 33f89632a9SJani Nikula# Enable -Werror in CI and development 34f89632a9SJani Nikulasubdir-ccflags-$(CONFIG_DRM_WERROR) += -Werror 35f89632a9SJani Nikula 36ca002242SJani Nikuladrm-y := \ 37ca002242SJani Nikula drm_atomic.o \ 38ca002242SJani Nikula drm_atomic_uapi.o \ 39ca002242SJani Nikula drm_auth.o \ 40ca002242SJani Nikula drm_blend.o \ 41ca002242SJani Nikula drm_bridge.o \ 42ca002242SJani Nikula drm_cache.o \ 43ca002242SJani Nikula drm_color_mgmt.o \ 44*cfc27680SHarry Wentland drm_colorop.o \ 45ca002242SJani Nikula drm_connector.o \ 46ca002242SJani Nikula drm_crtc.o \ 47ca002242SJani Nikula drm_displayid.o \ 48413c6466SThomas Zimmermann drm_drv.o \ 49ca002242SJani Nikula drm_dumb_buffers.o \ 50ca002242SJani Nikula drm_edid.o \ 51f415a607SJani Nikula drm_eld.o \ 52ca002242SJani Nikula drm_encoder.o \ 53ca002242SJani Nikula drm_file.o \ 54ca002242SJani Nikula drm_fourcc.o \ 55ca002242SJani Nikula drm_framebuffer.o \ 56ca002242SJani Nikula drm_gem.o \ 57ca002242SJani Nikula drm_ioctl.o \ 58ca002242SJani Nikula drm_lease.o \ 59ca002242SJani Nikula drm_managed.o \ 60ca002242SJani Nikula drm_mm.o \ 61ca002242SJani Nikula drm_mode_config.o \ 62ca002242SJani Nikula drm_mode_object.o \ 63ca002242SJani Nikula drm_modes.o \ 64ca002242SJani Nikula drm_modeset_lock.o \ 65ca002242SJani Nikula drm_plane.o \ 66ca002242SJani Nikula drm_prime.o \ 67ca002242SJani Nikula drm_print.o \ 68ca002242SJani Nikula drm_property.o \ 69e0a8f8c6SThomas Zimmermann drm_rect.o \ 70ca002242SJani Nikula drm_syncobj.o \ 71ca002242SJani Nikula drm_sysfs.o \ 72ca002242SJani Nikula drm_trace_points.o \ 73ca002242SJani Nikula drm_vblank.o \ 74ca002242SJani Nikula drm_vblank_work.o \ 7572071beeSThomas Zimmermann drm_vma_manager.o \ 76ca002242SJani Nikula drm_writeback.o 771f828b4dSThomas Zimmermanndrm-$(CONFIG_DRM_CLIENT) += \ 781f828b4dSThomas Zimmermann drm_client.o \ 791f828b4dSThomas Zimmermann drm_client_event.o \ 806915190aSThomas Zimmermann drm_client_modeset.o \ 816915190aSThomas Zimmermann drm_client_sysrq.o 82a33d42ddSChris Wilsondrm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o 83c0e09200SDave Airliedrm-$(CONFIG_COMPAT) += drm_ioc32.o 84aead40eaSThierry Redingdrm-$(CONFIG_DRM_PANEL) += drm_panel.o 857e435aadSRussell Kingdrm-$(CONFIG_OF) += drm_of.o 865c7a0bb0SThomas Zimmermanndrm-$(CONFIG_PCI) += drm_pci.o 87ca002242SJani Nikuladrm-$(CONFIG_DEBUG_FS) += \ 88ca002242SJani Nikula drm_debugfs.o \ 89ca002242SJani Nikula drm_debugfs_crc.o 9053fd40a9SJani Nikuladrm-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o 91ca002242SJani Nikuladrm-$(CONFIG_DRM_PRIVACY_SCREEN) += \ 92ca002242SJani Nikula drm_privacy_screen.o \ 93ca002242SJani Nikula drm_privacy_screen_x86.o 948bf48897SOded Gabbaydrm-$(CONFIG_DRM_ACCEL) += ../../accel/drm_accel.o 95bf9fb17cSJocelyn Falempedrm-$(CONFIG_DRM_PANIC) += drm_panic.o 9631fa2c1cSJocelyn Falempedrm-$(CONFIG_DRM_DRAW) += drm_draw.o 97cb5164acSJocelyn Falempedrm-$(CONFIG_DRM_PANIC_SCREEN_QR_CODE) += drm_panic_qr.o 98c6eafc99SThomas Zimmermannobj-$(CONFIG_DRM) += drm.o 99c0e09200SDave Airlie 100c6eafc99SThomas Zimmermannobj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o 10122e5c7aeSThomas Weißschuhobj-$(CONFIG_DRM_PANEL_BACKLIGHT_QUIRKS) += drm_panel_backlight_quirks.o 102c6eafc99SThomas Zimmermann 103c6eafc99SThomas Zimmermann# 104c6eafc99SThomas Zimmermann# Memory-management helpers 105c6eafc99SThomas Zimmermann# 10609593216SChristian König# 10709593216SChristian Königobj-$(CONFIG_DRM_EXEC) += drm_exec.o 108fe7acaa7SDanilo Krummrichobj-$(CONFIG_DRM_GPUVM) += drm_gpuvm.o 109f86ad0edSMatthew Brost 110f86ad0edSMatthew Brostdrm_gpusvm_helper-y := \ 111f86ad0edSMatthew Brost drm_gpusvm.o\ 112f86ad0edSMatthew Brost drm_pagemap.o 113f86ad0edSMatthew Brostobj-$(CONFIG_DRM_GPUSVM) += drm_gpusvm_helper.o 114c6eafc99SThomas Zimmermann 115c6eafc99SThomas Zimmermannobj-$(CONFIG_DRM_BUDDY) += drm_buddy.o 1166a2d2ddfSJavier Martinez Canillas 1174a83c26aSDanilo Krummrichdrm_dma_helper-y := drm_gem_dma_helper.o 118b79fe9abSThomas Zimmermanndrm_dma_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_dma.o 1194a83c26aSDanilo Krummrichdrm_dma_helper-$(CONFIG_DRM_KMS_HELPER) += drm_fb_dma_helper.o 1204a83c26aSDanilo Krummrichobj-$(CONFIG_DRM_GEM_DMA_HELPER) += drm_dma_helper.o 1214b2b5e14SThomas Zimmermann 1224b2b5e14SThomas Zimmermanndrm_shmem_helper-y := drm_gem_shmem_helper.o 123150f431aSThomas Zimmermanndrm_shmem_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_shmem.o 1244b2b5e14SThomas Zimmermannobj-$(CONFIG_DRM_GEM_SHMEM_HELPER) += drm_shmem_helper.o 1254b2b5e14SThomas Zimmermann 126849ee8a2SMaarten Lankhorstdrm_suballoc_helper-y := drm_suballoc.o 127849ee8a2SMaarten Lankhorstobj-$(CONFIG_DRM_SUBALLOC_HELPER) += drm_suballoc_helper.o 128849ee8a2SMaarten Lankhorst 129b22b51a0SThomas Zimmermanndrm_vram_helper-y := drm_gem_vram_helper.o 13085438a8dSThomas Zimmermannobj-$(CONFIG_DRM_VRAM_HELPER) += drm_vram_helper.o 13185438a8dSThomas Zimmermann 132ff540b76SGerd Hoffmanndrm_ttm_helper-y := drm_gem_ttm_helper.o 133aae4682eSThomas Zimmermanndrm_ttm_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_ttm.o 134ff540b76SGerd Hoffmannobj-$(CONFIG_DRM_TTM_HELPER) += drm_ttm_helper.o 135ff540b76SGerd Hoffmann 136c6eafc99SThomas Zimmermann# 137c6eafc99SThomas Zimmermann# Modesetting helpers 138c6eafc99SThomas Zimmermann# 139c6eafc99SThomas Zimmermann 140ca002242SJani Nikuladrm_kms_helper-y := \ 141ca002242SJani Nikula drm_atomic_helper.o \ 142ca002242SJani Nikula drm_atomic_state_helper.o \ 14356ae6212SMaxime Ripard drm_bridge_helper.o \ 144ca002242SJani Nikula drm_crtc_helper.o \ 145ca002242SJani Nikula drm_damage_helper.o \ 146ca002242SJani Nikula drm_flip_work.o \ 147ca002242SJani Nikula drm_format_helper.o \ 148644edf52SThomas Zimmermann drm_gem_atomic_helper.o \ 1496dd7b6ceSThomas Zimmermann drm_gem_framebuffer_helper.o \ 150ca002242SJani Nikula drm_kms_helper_common.o \ 151ca002242SJani Nikula drm_modeset_helper.o \ 152ca002242SJani Nikula drm_plane_helper.o \ 153ca002242SJani Nikula drm_probe_helper.o \ 154ca002242SJani Nikula drm_self_refresh_helper.o \ 15574afeb81SThomas Zimmermann drm_simple_kms_helper.o \ 15674afeb81SThomas Zimmermann drm_vblank_helper.o 157123387d5SMaarten Lankhorstdrm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o 158dadd28d4SThomas Zimmermanndrm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o 1596fcefd56SDave Airlieobj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o 160c6eafc99SThomas Zimmermann 161c6eafc99SThomas Zimmermann# 162c6eafc99SThomas Zimmermann# Drivers and the rest 163c6eafc99SThomas Zimmermann# 164c6eafc99SThomas Zimmermann 165b85be042SMaxime Ripardobj-y += tests/ 16613a8195bSDave Airlie 167174102f4SNoralf Trønnesobj-$(CONFIG_DRM_MIPI_DBI) += drm_mipi_dbi.o 168068a0023SAndrzej Hajdaobj-$(CONFIG_DRM_MIPI_DSI) += drm_mipi_dsi.o 16937fc9bb0Sjames qian wang (Arm Technology China)obj-y += arm/ 170a49e7e81SThomas Zimmermannobj-y += clients/ 171da68386dSThomas Zimmermannobj-y += display/ 172176f613eSJerome Glisseobj-$(CONFIG_DRM_TTM) += ttm/ 17387440329SChristian Königobj-$(CONFIG_DRM_SCHED) += scheduler/ 174c0e09200SDave Airlieobj-$(CONFIG_DRM_RADEON)+= radeon/ 175d38ceaf9SAlex Deucherobj-$(CONFIG_DRM_AMDGPU)+= amd/amdgpu/ 1763b60b70dSJames Zhuobj-$(CONFIG_DRM_AMDGPU)+= amd/amdxcp/ 177c0e09200SDave Airlieobj-$(CONFIG_DRM_I915) += i915/ 178dd08ebf6SMatthew Brostobj-$(CONFIG_DRM_XE) += xe/ 179ed794057SAnitha Chrisanthusobj-$(CONFIG_DRM_KMB_DISPLAY) += kmb/ 180414c4531SDave Airlieobj-$(CONFIG_DRM_MGAG200) += mgag200/ 18157692c94SEric Anholtobj-$(CONFIG_DRM_V3D) += v3d/ 182c8b75bcaSEric Anholtobj-$(CONFIG_DRM_VC4) += vc4/ 183fb1d9738SJakob Bornecrantzobj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/ 184502e95c6SZach Reiznerobj-$(CONFIG_DRM_VGEM) += vgem/ 1851c7c5fd9SHaneen Mohammedobj-$(CONFIG_DRM_VKMS) += vkms/ 1866ee73861SBen Skeggsobj-$(CONFIG_DRM_NOUVEAU) +=nouveau/ 187cdeaeb9dSDanilo Krummrichobj-$(CONFIG_DRM_NOVA) += nova/ 1881c248b7dSInki Daeobj-$(CONFIG_DRM_EXYNOS) +=exynos/ 1892048e328SMark Yaoobj-$(CONFIG_DRM_ROCKCHIP) +=rockchip/ 19091c75492SAlan Coxobj-$(CONFIG_DRM_GMA500) += gma500/ 1915320918bSDave Airlieobj-$(CONFIG_DRM_UDL) += udl/ 192312fec14SDave Airlieobj-$(CONFIG_DRM_AST) += ast/ 19396f60e37SRussell Kingobj-$(CONFIG_DRM_ARMADA) += armada/ 1941a396789SBoris Brezillonobj-$(CONFIG_DRM_ATMEL_HLCDC) += atmel-hlcdc/ 19511696c5eSBiju Dasobj-y += renesas/ 1969960aa7cSTomi Valkeinenobj-y += omapdrm/ 1979026e0d1SMaxime Ripardobj-$(CONFIG_DRM_SUN4I) += sun4i/ 198c87d2453SJyri Sarhaobj-y += tilcdc/ 199f64122c1SDave Airlieobj-$(CONFIG_DRM_QXL) += qxl/ 200dc5698e8SDave Airlieobj-$(CONFIG_DRM_VIRTIO_GPU) += virtio/ 201c8afe684SRob Clarkobj-$(CONFIG_DRM_MSM) += msm/ 202dee8268fSThierry Redingobj-$(CONFIG_DRM_TEGRA) += tegra/ 203b759012cSYannick Fertreobj-$(CONFIG_DRM_STM) += stm/ 204f2cb3148SBenjamin Gaignardobj-$(CONFIG_DRM_STI) += sti/ 205ce625f45SLaurentiu Palcuobj-y += imx/ 20690b86fccSPaul Cercueilobj-$(CONFIG_DRM_INGENIC) += ingenic/ 207efeeaefeSPaul Kocialkowskiobj-$(CONFIG_DRM_LOGICVC) += logicvc/ 208119f5173SCK Huobj-$(CONFIG_DRM_MEDIATEK) += mediatek/ 209bbbe775eSNeil Armstrongobj-$(CONFIG_DRM_MESON) += meson/ 210280921deSThierry Redingobj-y += panel/ 211a9fe713dSSean Paulobj-y += bridge/ 212109eee2fSJianwei Wangobj-$(CONFIG_DRM_FSL_DCU) += fsl-dcu/ 213a8c21a54SThe etnaviv authorsobj-$(CONFIG_DRM_ETNAVIV) += etnaviv/ 21423e7b2abSXinliang Liuobj-y += hisilicon/ 2159db35bb3SMarek Vasutobj-y += mxsfb/ 216319251c5SThomas Zimmermannobj-y += sysfb/ 217043386a0SNoralf Trønnesobj-y += tiny/ 218bed41005STom Cookseyobj-$(CONFIG_DRM_PL111) += pl111/ 219179c02feSLinus Walleijobj-$(CONFIG_DRM_TVE200) += tve200/ 220332122ebSSasha Finkelsteinobj-$(CONFIG_DRM_ADP) += adp/ 221c575b7eeSOleksandr Andrushchenkoobj-$(CONFIG_DRM_XEN) += xen/ 222131abc56SHans de Goedeobj-$(CONFIG_DRM_VBOXVIDEO) += vboxvideo/ 223a1d2a633SQiang Yuobj-$(CONFIG_DRM_LIMA) += lima/ 224f3ba9122SRob Herringobj-$(CONFIG_DRM_PANFROST) += panfrost/ 225d72f0490SBoris Brezillonobj-$(CONFIG_DRM_PANTHOR) += panthor/ 226cf4fd52eSDaniel Almeidaobj-$(CONFIG_DRM_TYR) += tyr/ 2274f2a8f58SJoel Stanleyobj-$(CONFIG_DRM_ASPEED_GFX) += aspeed/ 2285fc537bfSLinus Walleijobj-$(CONFIG_DRM_MCDE) += mcde/ 22932a1795fSJyri Sarhaobj-$(CONFIG_DRM_TIDSS) += tidss/ 230d76271d2SHyun Kwonobj-y += xlnx/ 23140e1a70bSNoralf Trønnesobj-y += gud/ 23276c56a5aSDeepak Rawatobj-$(CONFIG_DRM_HYPERV) += hyperv/ 2339b8f3200SMarcus Folkessonobj-y += sitronix/ 234a61732e8SJavier Martinez Canillasobj-y += solomon/ 23543531eddSKevin Tangobj-$(CONFIG_DRM_SPRD) += sprd/ 236f39db26cSSui Jingfengobj-$(CONFIG_DRM_LOONGSON) += loongson/ 2374babef07SSarah Walkerobj-$(CONFIG_DRM_POWERVR) += imagination/ 23862ae4568SJani Nikula 23962ae4568SJani Nikula# Ensure drm headers are self-contained and pass kernel-doc 24062ae4568SJani Nikulahdrtest-files := \ 24162ae4568SJani Nikula $(shell cd $(src) && find . -maxdepth 1 -name 'drm_*.h') \ 24262ae4568SJani Nikula $(shell cd $(src) && find display lib -name '*.h') 24362ae4568SJani Nikula 24462ae4568SJani Nikulaalways-$(CONFIG_DRM_HEADER_TEST) += \ 24562ae4568SJani Nikula $(patsubst %.h,%.hdrtest, $(hdrtest-files)) 24662ae4568SJani Nikula 24762ae4568SJani Nikula# Include the header twice to detect missing include guard. 24862ae4568SJani Nikulaquiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@) 24962ae4568SJani Nikula cmd_hdrtest = \ 25062ae4568SJani Nikula $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \ 251002621a4SJean Delvare PYTHONDONTWRITEBYTECODE=1 $(PYTHON3) $(KERNELDOC) -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \ 25262ae4568SJani Nikula touch $@ 25362ae4568SJani Nikula 25462ae4568SJani Nikula$(obj)/%.hdrtest: $(src)/%.h FORCE 25562ae4568SJani Nikula $(call if_changed_dep,hdrtest) 256