diff --git a/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/conftest.sh b/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/conftest.sh index 292d7da..5f254e1 100755 --- a/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/conftest.sh +++ b/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/conftest.sh @@ -2123,6 +2123,7 @@ compile_test() { #endif #include #include + #include #if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE) #error DRM not enabled #endif @@ -2146,8 +2147,12 @@ compile_test() { /* 2014-12-18 88a48e297b3a3bac6022c03babfb038f1a886cea */ i = DRIVER_ATOMIC; + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) /* 2015-04-10 df63b9994eaf942afcdb946d27a28661d7dfbf2a */ for_each_crtc_in_state(s, c, cs, i) { } + #else + for_each_new_crtc_in_state(s, c, cs, i) {} + #endif /* 2015-05-18 036ef5733ba433760a3512bb5f7a155946e2df05 */ a = offsetof(struct drm_mode_config_funcs, atomic_state_alloc); diff --git a/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-connector.c b/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-connector.c index cf16b6f..a66ae5a 100644 --- a/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-connector.c +++ b/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-connector.c @@ -33,6 +33,7 @@ #include #include +#include static void nv_drm_connector_destroy(struct drm_connector *connector) { @@ -87,7 +88,11 @@ static enum drm_connector_status __nv_drm_connector_detect_internal( break; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) encoder = drm_encoder_find(dev, connector->encoder_ids[i]); +#else + encoder = drm_encoder_find(dev, NULL, connector->encoder_ids[i]); +#endif if (encoder == NULL) { BUG_ON(encoder != NULL); diff --git a/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-crtc.c b/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-crtc.c index b54128a..d820dc2 100644 --- a/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-crtc.c +++ b/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-crtc.c @@ -37,6 +37,7 @@ #include #include +#include static const u32 nv_default_supported_plane_drm_formats[] = { DRM_FORMAT_ARGB1555, @@ -141,7 +142,11 @@ static int nv_drm_plane_atomic_check(struct drm_plane *plane, goto done; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) for_each_crtc_in_state(plane_state->state, crtc, crtc_state, i) { +#else + for_each_new_crtc_in_state(plane_state->state, crtc, crtc_state, i) { +#endif struct nv_drm_crtc_state *nv_crtc_state = to_nv_crtc_state(crtc_state); struct NvKmsKapiHeadRequestedConfig *head_req_config = &nv_crtc_state->req_config; @@ -365,7 +370,11 @@ static int nv_drm_crtc_atomic_check(struct drm_crtc *crtc, req_config->flags.displaysChanged = NV_TRUE; +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) for_each_connector_in_state(crtc_state->state, +#else + for_each_new_connector_in_state(crtc_state->state, +#endif connector, connector_state, j) { if (connector_state->crtc != crtc) { continue; @@ -613,7 +622,11 @@ int nv_drm_get_crtc_crc32_ioctl(struct drm_device *dev, goto done; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) crtc = drm_crtc_find(dev, params->crtc_id); +#else + crtc = drm_crtc_find(dev, NULL, params->crtc_id); +#endif if (!crtc) { ret = -ENOENT; goto done; diff --git a/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-modeset.c b/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-modeset.c index da15d89..91f64ea 100644 --- a/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-modeset.c +++ b/NVIDIA-Linux-x86_64-390.25-no-compat32/kernel/nvidia-drm/nvidia-drm-modeset.c @@ -33,6 +33,7 @@ #include #include #include +#include struct nv_drm_atomic_state { struct NvKmsKapiRequestedModeSetConfig config; @@ -110,7 +111,11 @@ nv_drm_atomic_apply_modeset_config(struct drm_device *dev, memset(requested_config, 0, sizeof(*requested_config)); /* Loop over affected crtcs and construct NvKmsKapiRequestedModeSetConfig */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) for_each_crtc_in_state(state, crtc, crtc_state, i) { +#else + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { +#endif /* * When commiting a state, the new state is already stored in * crtc->state. When checking a proposed state, the proposed state is @@ -178,7 +183,11 @@ void nv_drm_atomic_helper_commit_tail(struct drm_atomic_state *state) nv_drm_write_combine_flush(); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) for_each_crtc_in_state(state, crtc, crtc_state, i) { +#else + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { +#endif struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc); struct nv_drm_crtc_state *nv_crtc_state = to_nv_crtc_state(crtc->state); struct nv_drm_flip *nv_flip = nv_crtc_state->nv_flip; @@ -282,7 +291,11 @@ static void nv_drm_atomic_commit_task_callback(struct work_struct *work) ret); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) for_each_crtc_in_state(state, crtc, crtc_state, i) { +#else + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { +#endif struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc); if (wait_event_timeout( @@ -351,7 +364,11 @@ static int nv_drm_atomic_commit_internal( * condition between two/more nvKms->applyModeSetConfig() on single * crtc and generate flip events in correct order. */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) for_each_crtc_in_state(state, crtc, crtc_state, i) { +#else + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { +#endif struct nv_drm_device *nv_dev = to_nv_device(dev); struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc); @@ -372,7 +389,11 @@ static int nv_drm_atomic_commit_internal( } } } else { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) for_each_crtc_in_state(state, crtc, crtc_state, i) { +#else + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { +#endif struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc); if (atomic_read(&nv_crtc->has_pending_commit) || @@ -388,7 +409,11 @@ static int nv_drm_atomic_commit_internal( * flip events. */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) for_each_crtc_in_state(state, crtc, crtc_state, i) { +#else + for_each_new_crtc_in_state(state, crtc, crtc_state, i) { +#endif struct nv_drm_crtc *nv_crtc = to_nv_crtc(crtc); atomic_set(&nv_crtc->has_pending_commit, true);