fix nvidia-390xx with kernel 4.19 patch [skip-ci]

This commit is contained in:
AlmAck 2018-11-29 22:47:40 +01:00
parent 5ae173916a
commit de50fe8b29
2 changed files with 68 additions and 2 deletions

View File

@ -13,10 +13,12 @@ source=("https://code.chakralinux.org/tools/chakra-hardware-detection/raw/master
_pkg="NVIDIA-Linux-x86_64-${pkgver}"
_extramodules=extramodules-CHAKRA
source+=("http://us.download.nvidia.com/XFree86/Linux-x86_64/${pkgver}/${_pkg}.run"
kernel-4.16.patch)
kernel-4.16.patch
kernel-4.19.patch)
sha256sums=('94db1b11de33b0299da021fee8c21e4442656fe76452ac582b556e3f96365d5d'
'38290a0b19e86037112f22397e02be9cdd6bcd677dd926b2977bbd49119e611e'
'622ac792ec200b2239cb663c0010392118b78c9904973d82cd261165c16d6385')
'622ac792ec200b2239cb663c0010392118b78c9904973d82cd261165c16d6385'
'e425320bd3712cc789035d5936412724b0b410f50463980c0a48715fd3f8c431')
prepare() {
sh "${_pkg}.run" --extract-only
@ -25,6 +27,7 @@ prepare() {
# Restore phys_to_dma support (still needed for 396.18)
# https://bugs.archlinux.org/task/58074
patch -Np1 -i ../kernel-4.16.patch
patch -Np1 -i ../kernel-4.19.patch
cp -a kernel kernel-dkms
cd kernel-dkms

View File

@ -0,0 +1,63 @@
diff -u -r a/kernel/conftest.sh b/kernel/conftest.sh
--- a/kernel/conftest.sh 2018-11-01 11:00:14.429126159 +0000
+++ b/kernel/conftest.sh 2018-11-01 11:03:08.199579458 +0000
@@ -2372,8 +2372,13 @@
#
CODE="
#include <drm/drmP.h>
+ #include <linux/version.h>
void conftest_drm_mode_connector_list_update_has_merge_type_bits_arg(void) {
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0)
drm_mode_connector_list_update(
+ #else
+ drm_connector_list_update(
+ #endif
NULL, /* struct drm_connector *connector */
true); /* bool merge_type_bits */
}"
diff -u -r a/kernel/nvidia-drm/nvidia-drm-connector.c b/kernel/nvidia-drm/nvidia-drm-connector.c
--- a/kernel/nvidia-drm/nvidia-drm-connector.c 2018-08-22 00:55:29.000000000 +0000
+++ b/kernel/nvidia-drm/nvidia-drm-connector.c 2018-11-01 11:08:14.643715031 +0000
@@ -34,6 +34,7 @@
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
+#include <linux/version.h>
static void nv_drm_connector_destroy(struct drm_connector *connector)
{
@@ -226,7 +227,11 @@
if (nv_connector->edid != NULL) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0)
drm_mode_connector_update_edid_property(
+#else
+ drm_connector_update_edid_property(
+#endif
connector, nv_connector->edid);
}
diff -u -r a/kernel/nvidia-drm/nvidia-drm-encoder.c b/kernel/nvidia-drm/nvidia-drm-encoder.c
--- a/kernel/nvidia-drm/nvidia-drm-encoder.c 2018-08-22 00:55:29.000000000 +0000
+++ b/kernel/nvidia-drm/nvidia-drm-encoder.c 2018-11-01 11:08:32.210427737 +0000
@@ -34,6 +34,7 @@
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
+#include <linux/version.h>
static void nv_drm_encoder_destroy(struct drm_encoder *encoder)
{
@@ -216,7 +217,11 @@
/* Attach encoder and connector */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0)
ret = drm_mode_connector_attach_encoder(connector, encoder);
+#else
+ ret = drm_connector_attach_encoder(connector, encoder);
+#endif
if (ret != 0) {
NV_DRM_DEV_LOG_ERR(