summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--system/nvidia-legacy304-kernel/4.14_kernel.patch26
-rw-r--r--system/nvidia-legacy304-kernel/4.15_kernel.patch48
-rw-r--r--system/nvidia-legacy304-kernel/nvidia-legacy304-kernel.SlackBuild4
3 files changed, 78 insertions, 0 deletions
diff --git a/system/nvidia-legacy304-kernel/4.14_kernel.patch b/system/nvidia-legacy304-kernel/4.14_kernel.patch
new file mode 100644
index 0000000000..6642189009
--- /dev/null
+++ b/system/nvidia-legacy304-kernel/4.14_kernel.patch
@@ -0,0 +1,26 @@
+diff -ur a/kernel/nv-drm.c b/kernel/nv-drm.c
+--- a/kernel/nv-drm.c 2017-09-14 23:51:09.000000003 +0300
++++ b/kernel/nv-drm.c 2017-12-06 18:47:48.279729889 +0200
+@@ -121,7 +121,11 @@
+ {
+ int ret = 0;
+ #if defined(NV_DRM_AVAILABLE)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
+ ret = drm_pci_init(&nv_drm_driver, pci_driver);
++#else
++ ret = drm_legacy_pci_init(&nv_drm_driver, pci_driver);
++#endif
+ #endif
+ return ret;
+ }
+@@ -131,6 +135,10 @@
+ )
+ {
+ #if defined(NV_DRM_AVAILABLE)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
+ drm_pci_exit(&nv_drm_driver, pci_driver);
++#else
++ drm_legacy_pci_exit(&nv_drm_driver, pci_driver);
++#endif
+ #endif
+ }
diff --git a/system/nvidia-legacy304-kernel/4.15_kernel.patch b/system/nvidia-legacy304-kernel/4.15_kernel.patch
new file mode 100644
index 0000000000..fdac62fb24
--- /dev/null
+++ b/system/nvidia-legacy304-kernel/4.15_kernel.patch
@@ -0,0 +1,48 @@
+diff -ur a/kernel/nv.c b/kernel/nv.c
+--- a/kernel/nv.c 2017-09-14 23:51:09.000000000 +0300
++++ b/kernel/nv.c 2018-02-13 14:56:42.289490885 +0200
+@@ -301,7 +301,11 @@
+ #else
+ irqreturn_t nv_kern_isr(int, void *);
+ #endif
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
+ void nv_kern_rc_timer(unsigned long);
++#else
++void nv_kern_rc_timer(struct timer_list *t);
++#endif
+ #if defined(NV_PM_SUPPORT_OLD_STYLE_APM)
+ static int nv_kern_apm_event(struct pm_dev *, pm_request_t, void *);
+ #endif
+@@ -2075,10 +2079,18 @@
+ }
+
+ void nv_kern_rc_timer(
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
+ unsigned long data
++#else
++ struct timer_list *t
++#endif
+ )
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
+ nv_linux_state_t *nvl = (nv_linux_state_t *) data;
++#else
++ nv_linux_state_t *nvl = from_timer(nvl, t, rc_timer);
++#endif
+ nv_state_t *nv = NV_STATE_PTR(nvl);
+
+ NV_CHECK_PCI_CONFIG_SPACE(nvl->timer_sp, nv, TRUE, TRUE, FALSE);
+@@ -3029,9 +3041,13 @@
+ return -1;
+
+ nv_printf(NV_DBG_INFO, "NVRM: initializing rc timer\n");
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0)
+ init_timer(&nvl->rc_timer);
+ nvl->rc_timer.function = nv_kern_rc_timer;
+ nvl->rc_timer.data = (unsigned long) nv;
++#else
++ timer_setup(&nvl->rc_timer, nv_kern_rc_timer, 0);
++#endif
+ nv->rc_timer_enabled = 1;
+ mod_timer(&nvl->rc_timer, jiffies + HZ); /* set our timeout for 1 second */
+ nv_printf(NV_DBG_INFO, "NVRM: rc timer initialized\n");
diff --git a/system/nvidia-legacy304-kernel/nvidia-legacy304-kernel.SlackBuild b/system/nvidia-legacy304-kernel/nvidia-legacy304-kernel.SlackBuild
index c789ab3a6a..db6edc4a0d 100644
--- a/system/nvidia-legacy304-kernel/nvidia-legacy304-kernel.SlackBuild
+++ b/system/nvidia-legacy304-kernel/nvidia-legacy304-kernel.SlackBuild
@@ -75,6 +75,10 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+# https://pkgs.rpmfusion.org/cgit/nonfree/nvidia-304xx-kmod.git/log/
+patch -p1 < $CWD/4.14_kernel.patch
+patch -p1 < $CWD/4.15_kernel.patch
+
cd kernel || exit 1
make SYSSRC=$KERNELPATH module || exit 1