1# SPDX-License-Identifier: GPL-2.0 2 3# Makefile for the drm device driver. This driver provides support for the 4# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. 5 6CFLAGS-$(CONFIG_DRM_USE_DYNAMIC_DEBUG) += -DDYNAMIC_DEBUG_MODULE 7 8# Unconditionally enable W=1 warnings locally 9# --- begin copy-paste W=1 warnings from scripts/Makefile.extrawarn 10subdir-ccflags-y += -Wextra -Wunused -Wno-unused-parameter 11subdir-ccflags-y += $(call cc-option, -Wrestrict) 12subdir-ccflags-y += -Wmissing-format-attribute 13subdir-ccflags-y += -Wold-style-definition 14subdir-ccflags-y += -Wmissing-include-dirs 15subdir-ccflags-y += $(call cc-option, -Wunused-but-set-variable) 16subdir-ccflags-y += $(call cc-option, -Wunused-const-variable) 17subdir-ccflags-y += $(call cc-option, -Wpacked-not-aligned) 18subdir-ccflags-y += $(call cc-option, -Wformat-overflow) 19# FIXME: fix -Wformat-truncation warnings and uncomment 20#subdir-ccflags-y += $(call cc-option, -Wformat-truncation) 21subdir-ccflags-y += $(call cc-option, -Wstringop-truncation) 22# The following turn off the warnings enabled by -Wextra 23ifeq ($(findstring 2, $(KBUILD_EXTRA_WARN)),) 24subdir-ccflags-y += -Wno-missing-field-initializers 25subdir-ccflags-y += -Wno-type-limits 26subdir-ccflags-y += -Wno-shift-negative-value 27endif 28ifeq ($(findstring 3, $(KBUILD_EXTRA_WARN)),) 29subdir-ccflags-y += -Wno-sign-compare 30endif 31# --- end copy-paste 32 33# Enable -Werror in CI and development 34subdir-ccflags-$(CONFIG_DRM_WERROR) += -Werror 35 36drm-y := \ 37 drm_atomic.o \ 38 drm_atomic_uapi.o \ 39 drm_auth.o \ 40 drm_blend.o \ 41 drm_bridge.o \ 42 drm_cache.o \ 43 drm_color_mgmt.o \ 44 drm_connector.o \ 45 drm_crtc.o \ 46 drm_displayid.o \ 47 drm_drv.o \ 48 drm_dumb_buffers.o \ 49 drm_edid.o \ 50 drm_eld.o \ 51 drm_encoder.o \ 52 drm_file.o \ 53 drm_fourcc.o \ 54 drm_framebuffer.o \ 55 drm_gem.o \ 56 drm_ioctl.o \ 57 drm_lease.o \ 58 drm_managed.o \ 59 drm_mm.o \ 60 drm_mode_config.o \ 61 drm_mode_object.o \ 62 drm_modes.o \ 63 drm_modeset_lock.o \ 64 drm_plane.o \ 65 drm_prime.o \ 66 drm_print.o \ 67 drm_property.o \ 68 drm_rect.o \ 69 drm_syncobj.o \ 70 drm_sysfs.o \ 71 drm_trace_points.o \ 72 drm_vblank.o \ 73 drm_vblank_work.o \ 74 drm_vma_manager.o \ 75 drm_writeback.o 76drm-$(CONFIG_DRM_CLIENT) += \ 77 drm_client.o \ 78 drm_client_event.o \ 79 drm_client_modeset.o \ 80 drm_client_sysrq.o 81drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o 82drm-$(CONFIG_COMPAT) += drm_ioc32.o 83drm-$(CONFIG_DRM_PANEL) += drm_panel.o 84drm-$(CONFIG_OF) += drm_of.o 85drm-$(CONFIG_PCI) += drm_pci.o 86drm-$(CONFIG_DEBUG_FS) += \ 87 drm_debugfs.o \ 88 drm_debugfs_crc.o 89drm-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o 90drm-$(CONFIG_DRM_PRIVACY_SCREEN) += \ 91 drm_privacy_screen.o \ 92 drm_privacy_screen_x86.o 93drm-$(CONFIG_DRM_ACCEL) += ../../accel/drm_accel.o 94drm-$(CONFIG_DRM_PANIC) += drm_panic.o 95drm-$(CONFIG_DRM_DRAW) += drm_draw.o 96drm-$(CONFIG_DRM_PANIC_SCREEN_QR_CODE) += drm_panic_qr.o 97obj-$(CONFIG_DRM) += drm.o 98 99obj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o 100obj-$(CONFIG_DRM_PANEL_BACKLIGHT_QUIRKS) += drm_panel_backlight_quirks.o 101 102# 103# Memory-management helpers 104# 105# 106obj-$(CONFIG_DRM_EXEC) += drm_exec.o 107obj-$(CONFIG_DRM_GPUVM) += drm_gpuvm.o 108 109drm_gpusvm_helper-y := \ 110 drm_gpusvm.o\ 111 drm_pagemap.o 112obj-$(CONFIG_DRM_GPUSVM) += drm_gpusvm_helper.o 113 114obj-$(CONFIG_DRM_BUDDY) += drm_buddy.o 115 116drm_dma_helper-y := drm_gem_dma_helper.o 117drm_dma_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_dma.o 118drm_dma_helper-$(CONFIG_DRM_KMS_HELPER) += drm_fb_dma_helper.o 119obj-$(CONFIG_DRM_GEM_DMA_HELPER) += drm_dma_helper.o 120 121drm_shmem_helper-y := drm_gem_shmem_helper.o 122drm_shmem_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_shmem.o 123obj-$(CONFIG_DRM_GEM_SHMEM_HELPER) += drm_shmem_helper.o 124 125drm_suballoc_helper-y := drm_suballoc.o 126obj-$(CONFIG_DRM_SUBALLOC_HELPER) += drm_suballoc_helper.o 127 128drm_vram_helper-y := drm_gem_vram_helper.o 129obj-$(CONFIG_DRM_VRAM_HELPER) += drm_vram_helper.o 130 131drm_ttm_helper-y := drm_gem_ttm_helper.o 132drm_ttm_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_ttm.o 133obj-$(CONFIG_DRM_TTM_HELPER) += drm_ttm_helper.o 134 135# 136# Modesetting helpers 137# 138 139drm_kms_helper-y := \ 140 drm_atomic_helper.o \ 141 drm_atomic_state_helper.o \ 142 drm_bridge_helper.o \ 143 drm_crtc_helper.o \ 144 drm_damage_helper.o \ 145 drm_flip_work.o \ 146 drm_format_helper.o \ 147 drm_gem_atomic_helper.o \ 148 drm_gem_framebuffer_helper.o \ 149 drm_kms_helper_common.o \ 150 drm_modeset_helper.o \ 151 drm_plane_helper.o \ 152 drm_probe_helper.o \ 153 drm_self_refresh_helper.o \ 154 drm_simple_kms_helper.o \ 155 drm_vblank_helper.o 156drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o 157drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o 158obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o 159 160# 161# Drivers and the rest 162# 163 164obj-y += tests/ 165 166obj-$(CONFIG_DRM_MIPI_DBI) += drm_mipi_dbi.o 167obj-$(CONFIG_DRM_MIPI_DSI) += drm_mipi_dsi.o 168obj-y += arm/ 169obj-y += clients/ 170obj-y += display/ 171obj-$(CONFIG_DRM_TTM) += ttm/ 172obj-$(CONFIG_DRM_SCHED) += scheduler/ 173obj-$(CONFIG_DRM_RADEON)+= radeon/ 174obj-$(CONFIG_DRM_AMDGPU)+= amd/amdgpu/ 175obj-$(CONFIG_DRM_AMDGPU)+= amd/amdxcp/ 176obj-$(CONFIG_DRM_I915) += i915/ 177obj-$(CONFIG_DRM_XE) += xe/ 178obj-$(CONFIG_DRM_KMB_DISPLAY) += kmb/ 179obj-$(CONFIG_DRM_MGAG200) += mgag200/ 180obj-$(CONFIG_DRM_V3D) += v3d/ 181obj-$(CONFIG_DRM_VC4) += vc4/ 182obj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/ 183obj-$(CONFIG_DRM_VGEM) += vgem/ 184obj-$(CONFIG_DRM_VKMS) += vkms/ 185obj-$(CONFIG_DRM_NOUVEAU) +=nouveau/ 186obj-$(CONFIG_DRM_NOVA) += nova/ 187obj-$(CONFIG_DRM_EXYNOS) +=exynos/ 188obj-$(CONFIG_DRM_ROCKCHIP) +=rockchip/ 189obj-$(CONFIG_DRM_GMA500) += gma500/ 190obj-$(CONFIG_DRM_UDL) += udl/ 191obj-$(CONFIG_DRM_AST) += ast/ 192obj-$(CONFIG_DRM_ARMADA) += armada/ 193obj-$(CONFIG_DRM_ATMEL_HLCDC) += atmel-hlcdc/ 194obj-y += renesas/ 195obj-y += omapdrm/ 196obj-$(CONFIG_DRM_SUN4I) += sun4i/ 197obj-y += tilcdc/ 198obj-$(CONFIG_DRM_QXL) += qxl/ 199obj-$(CONFIG_DRM_VIRTIO_GPU) += virtio/ 200obj-$(CONFIG_DRM_MSM) += msm/ 201obj-$(CONFIG_DRM_TEGRA) += tegra/ 202obj-$(CONFIG_DRM_STM) += stm/ 203obj-$(CONFIG_DRM_STI) += sti/ 204obj-y += imx/ 205obj-$(CONFIG_DRM_INGENIC) += ingenic/ 206obj-$(CONFIG_DRM_LOGICVC) += logicvc/ 207obj-$(CONFIG_DRM_MEDIATEK) += mediatek/ 208obj-$(CONFIG_DRM_MESON) += meson/ 209obj-y += panel/ 210obj-y += bridge/ 211obj-$(CONFIG_DRM_FSL_DCU) += fsl-dcu/ 212obj-$(CONFIG_DRM_ETNAVIV) += etnaviv/ 213obj-y += hisilicon/ 214obj-y += mxsfb/ 215obj-y += sysfb/ 216obj-y += tiny/ 217obj-$(CONFIG_DRM_PL111) += pl111/ 218obj-$(CONFIG_DRM_TVE200) += tve200/ 219obj-$(CONFIG_DRM_ADP) += adp/ 220obj-$(CONFIG_DRM_XEN) += xen/ 221obj-$(CONFIG_DRM_VBOXVIDEO) += vboxvideo/ 222obj-$(CONFIG_DRM_LIMA) += lima/ 223obj-$(CONFIG_DRM_PANFROST) += panfrost/ 224obj-$(CONFIG_DRM_PANTHOR) += panthor/ 225obj-$(CONFIG_DRM_TYR) += tyr/ 226obj-$(CONFIG_DRM_ASPEED_GFX) += aspeed/ 227obj-$(CONFIG_DRM_MCDE) += mcde/ 228obj-$(CONFIG_DRM_TIDSS) += tidss/ 229obj-y += xlnx/ 230obj-y += gud/ 231obj-$(CONFIG_DRM_HYPERV) += hyperv/ 232obj-y += sitronix/ 233obj-y += solomon/ 234obj-$(CONFIG_DRM_SPRD) += sprd/ 235obj-$(CONFIG_DRM_LOONGSON) += loongson/ 236obj-$(CONFIG_DRM_POWERVR) += imagination/ 237 238# Ensure drm headers are self-contained and pass kernel-doc 239hdrtest-files := \ 240 $(shell cd $(src) && find . -maxdepth 1 -name 'drm_*.h') \ 241 $(shell cd $(src) && find display lib -name '*.h') 242 243always-$(CONFIG_DRM_HEADER_TEST) += \ 244 $(patsubst %.h,%.hdrtest, $(hdrtest-files)) 245 246# Include the header twice to detect missing include guard. 247quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@) 248 cmd_hdrtest = \ 249 $(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \ 250 PYTHONDONTWRITEBYTECODE=1 $(KERNELDOC) -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \ 251 touch $@ 252 253$(obj)/%.hdrtest: $(src)/%.h FORCE 254 $(call if_changed_dep,hdrtest) 255