diff --git a/kernel-open/conftest.sh b/kernel-open/conftest.sh index 1226cea2b..4398e435f 100755 --- a/kernel-open/conftest.sh +++ b/kernel-open/conftest.sh @@ -6610,6 +6610,25 @@ compile_test() { compile_check_conftest "$CODE" "NV_DRM_FBDEV_GENERIC_SETUP_PRESENT" "" "functions" ;; + drm_fbdev_ttm_setup) + # + # Determine whether drm_fbdev_ttm_setup is present. + # + # Added by commit 9060d7f49376 ("drm/fb-helper: Finish the + # generic fbdev emulation") in v4.19. + # + CODE=" + #include + #if defined(NV_DRM_DRM_FBDEV_TTM_H_PRESENT) + #include + #endif + void conftest_drm_fbdev_ttm_setup(void) { + drm_fbdev_ttm_setup(); + }" + + compile_check_conftest "$CODE" "NV_DRM_FBDEV_TTM_SETUP_PRESENT" "" "functions" + ;; + drm_aperture_remove_conflicting_pci_framebuffers) # # Determine whether drm_aperture_remove_conflicting_pci_framebuffers is present. diff --git a/kernel-open/header-presence-tests.mk b/kernel-open/header-presence-tests.mk index e8d2e02b3..40204ae48 100644 --- a/kernel-open/header-presence-tests.mk +++ b/kernel-open/header-presence-tests.mk @@ -15,6 +15,7 @@ NV_HEADER_PRESENCE_TESTS = \ drm/drm_atomic_uapi.h \ drm/drm_drv.h \ drm/drm_fbdev_generic.h \ + drm/drm_fbdev_ttm.h \ drm/drm_framebuffer.h \ drm/drm_connector.h \ drm/drm_probe_helper.h \ diff --git a/kernel-open/nvidia-drm/nvidia-drm-drv.c b/kernel-open/nvidia-drm/nvidia-drm-drv.c index 359ff0c47..c80d2d76c 100644 --- a/kernel-open/nvidia-drm/nvidia-drm-drv.c +++ b/kernel-open/nvidia-drm/nvidia-drm-drv.c @@ -73,6 +73,10 @@ #include #endif +#if defined(NV_DRM_DRM_FBDEV_TTM_H_PRESENT) +#include +#endif + #include #include @@ -1851,7 +1855,11 @@ void nv_drm_register_drm_device(const nv_gpu_info_t *gpu_info) drm_aperture_remove_conflicting_pci_framebuffers(pdev, nv_drm_driver.name); #endif } +#if defined(NV_DRM_FBDEV_TTM_AVAILABLE) + drm_fbdev_ttm_setup(dev, 32); +#else drm_fbdev_generic_setup(dev, 32); +#endif } #endif /* defined(NV_DRM_FBDEV_GENERIC_AVAILABLE) */ diff --git a/kernel-open/nvidia-drm/nvidia-drm-os-interface.h b/kernel-open/nvidia-drm/nvidia-drm-os-interface.h index 6f8cfea91..55ea8a2f9 100644 --- a/kernel-open/nvidia-drm/nvidia-drm-os-interface.h +++ b/kernel-open/nvidia-drm/nvidia-drm-os-interface.h @@ -58,8 +58,11 @@ typedef struct nv_timer nv_drm_timer; #error "Need to define kernel timer callback primitives for this OS" #endif -#if defined(NV_DRM_FBDEV_GENERIC_SETUP_PRESENT) && defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT) +#if defined(NV_DRM_FBDEV_GENERIC_SETUP_PRESENT) || defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT) && defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT) #define NV_DRM_FBDEV_GENERIC_AVAILABLE +#if defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT) +#define NV_DRM_FBDEV_TTM_AVAILABLE +#endif #endif struct page; diff --git a/kernel-open/nvidia-drm/nvidia-drm-sources.mk b/kernel-open/nvidia-drm/nvidia-drm-sources.mk index 7ef0c5b8f..247096b70 100644 --- a/kernel-open/nvidia-drm/nvidia-drm-sources.mk +++ b/kernel-open/nvidia-drm/nvidia-drm-sources.mk @@ -67,6 +67,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += fence_set_error NV_CONFTEST_FUNCTION_COMPILE_TESTS += sync_file_get_fence NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_aperture_remove_conflicting_pci_framebuffers NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fbdev_generic_setup +NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fbdev_ttm_setup NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_connector_attach_hdr_output_metadata_property NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_helper_crtc_enable_color_mgmt NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_crtc_enable_color_mgmt