-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
502879e
commit 315fbe1
Showing
3 changed files
with
157 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,16 @@ | ||
# Maintainer: Bernhard Landauer <[email protected]> | ||
# Maintainer: Philip Müller <philm[at]manjaro[dot]org> | ||
|
||
# Arch credits: | ||
# Maintainer : Thomas Baechler <[email protected]> | ||
|
||
_linuxprefix=linux-xanmod | ||
_extramodules=$(find /usr/lib/modules -type d -iname 6.1.14*xanmod* | rev | cut -d "/" -f1 | rev) | ||
_extramodules=$(find /usr/lib/modules -type d -iname 6.2.1*xanmod* | rev | cut -d "/" -f1 | rev) | ||
|
||
pkgname=$_linuxprefix-nvidia-470xx | ||
pkgdesc="NVIDIA drivers for linux" | ||
pkgver=470.161.03 | ||
pkgrel=61141 | ||
pkgrel=6211 | ||
arch=('x86_64') | ||
url="http://www.nvidia.com/" | ||
license=('custom') | ||
|
@@ -20,20 +21,22 @@ provides=("nvidia=$pkgver" 'NVIDIA-MODULE') | |
options=(!strip) | ||
install=nvidia.install | ||
_durl="https://us.download.nvidia.com/XFree86/Linux-x86" | ||
source=("${_durl}_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}-no-compat32.run") | ||
sha256sums=('b318c15d519898fd60c64ef73fdd331045884a1d97d811a25fbced544b5be6ad') | ||
source=("${_durl}_64/${pkgver}/NVIDIA-Linux-x86_64-${pkgver}-no-compat32.run" | ||
'kernel-6.2.patch') | ||
sha256sums=('b318c15d519898fd60c64ef73fdd331045884a1d97d811a25fbced544b5be6ad' | ||
'3501f0bbd9603543da74873905448ff58f5095948a7375617bba74f122d575aa') | ||
|
||
_pkg="NVIDIA-Linux-x86_64-${pkgver}-no-compat32" | ||
|
||
prepare() { | ||
sh "${_pkg}.run" --extract-only | ||
|
||
cd "${_pkg}" | ||
# patches here | ||
cd "${_pkg}/kernel" | ||
patch -Np1 -i ${srcdir}/kernel-6.2.patch | ||
} | ||
|
||
build() { | ||
_kernver=$(find /usr/lib/modules -type d -iname 6.1.14*xanmod* | rev | cut -d "/" -f1 | rev) | ||
_kernver=$(find /usr/lib/modules -type d -iname 6.2.1*xanmod* | rev | cut -d "/" -f1 | rev) | ||
|
||
cd "${_pkg}" | ||
make -C kernel SYSSRC=/usr/lib/modules/"${_kernver}/build" module | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
From 5db7eb5a62003bbe04f3f07d089fcf5445b34a29 Mon Sep 17 00:00:00 2001 | ||
From: Joan Bruguera <[email protected]> | ||
Date: Sun, 25 Dec 2022 22:05:14 +0000 | ||
Subject: [PATCH] Tentative fix for NVIDIA 470.161.03 driver for Linux 6.2-rc1 | ||
|
||
--- | ||
nvidia-drm/nvidia-drm-connector.c | 22 ++++++++++++++++++++++ | ||
nvidia-drm/nvidia-drm-drv.c | 4 ++++ | ||
nvidia/nv-acpi.c | 19 ++++++++++++++++--- | ||
3 files changed, 42 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/nvidia-drm/nvidia-drm-connector.c b/nvidia-drm/nvidia-drm-connector.c | ||
index 6fbcd63..a5ab9e9 100644 | ||
--- a/nvidia-drm/nvidia-drm-connector.c | ||
+++ b/nvidia-drm/nvidia-drm-connector.c | ||
@@ -20,6 +20,8 @@ | ||
* DEALINGS IN THE SOFTWARE. | ||
*/ | ||
|
||
+#include <linux/version.h> | ||
+#include <drm/drm_edid.h> | ||
#include "nvidia-drm-conftest.h" /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ | ||
|
||
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) | ||
@@ -98,6 +100,7 @@ __nv_drm_detect_encoder(struct NvKmsKapiDynamicDisplayParams *pDetectParams, | ||
break; | ||
} | ||
|
||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0) | ||
if (connector->override_edid) { | ||
const struct drm_property_blob *edid = connector->edid_blob_ptr; | ||
|
||
@@ -110,6 +113,25 @@ __nv_drm_detect_encoder(struct NvKmsKapiDynamicDisplayParams *pDetectParams, | ||
sizeof(pDetectParams->edid.buffer)); | ||
} | ||
} | ||
+#else | ||
+ // Rel. commit "drm/edid: detach debugfs EDID override from EDID property update" (Jani Nikula, 24 Oct 2022) | ||
+ // NOTE: HUGE HACK! | ||
+ mutex_lock(&connector->edid_override_mutex); | ||
+ if (connector->edid_override) { | ||
+ const struct edid *edid = drm_edid_raw(connector->edid_override); | ||
+ size_t edid_length = EDID_LENGTH * (edid->extensions + 1); | ||
+ if (edid_length <= sizeof(pDetectParams->edid.buffer)) { | ||
+ memcpy(pDetectParams->edid.buffer, edid, edid_length); | ||
+ pDetectParams->edid.bufferSize = edid_length; | ||
+ pDetectParams->overrideEdid = NV_TRUE; | ||
+ } else { | ||
+ WARN_ON(edid_length > | ||
+ sizeof(pDetectParams->edid.buffer)); | ||
+ } | ||
+ } | ||
+ mutex_unlock(&connector->edid_override_mutex); | ||
+ | ||
+#endif | ||
|
||
if (!nvKms->getDynamicDisplayInfo(nv_dev->pDevice, pDetectParams)) { | ||
NV_DRM_DEV_LOG_ERR( | ||
diff --git a/nvidia-drm/nvidia-drm-drv.c b/nvidia-drm/nvidia-drm-drv.c | ||
index 6d007b1..d08ab4c 100644 | ||
--- a/nvidia-drm/nvidia-drm-drv.c | ||
+++ b/nvidia-drm/nvidia-drm-drv.c | ||
@@ -20,6 +20,7 @@ | ||
* DEALINGS IN THE SOFTWARE. | ||
*/ | ||
|
||
+#include <linux/version.h> | ||
#include "nvidia-drm-conftest.h" /* NV_DRM_AVAILABLE and NV_DRM_DRM_GEM_H_PRESENT */ | ||
|
||
#include "nvidia-drm-priv.h" | ||
@@ -240,9 +241,12 @@ nv_drm_init_mode_config(struct nv_drm_device *nv_dev, | ||
dev->mode_config.preferred_depth = 24; | ||
dev->mode_config.prefer_shadow = 1; | ||
|
||
+// Rel. commit "drm: Remove drm_mode_config::fb_base" (Zack Rusin, 18 Oct 2022) | ||
+#if defined(CONFIG_FB) && LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0) | ||
/* Currently unused. Update when needed. */ | ||
|
||
dev->mode_config.fb_base = 0; | ||
+#endif | ||
|
||
#if defined(NV_DRM_CRTC_STATE_HAS_ASYNC_FLIP) || \ | ||
defined(NV_DRM_CRTC_STATE_HAS_PAGEFLIP_FLAGS) | ||
diff --git a/nvidia/nv-acpi.c b/nvidia/nv-acpi.c | ||
index 07501eb..1fdf71c 100644 | ||
--- a/nvidia/nv-acpi.c | ||
+++ b/nvidia/nv-acpi.c | ||
@@ -8,6 +8,7 @@ | ||
* _NVRM_COPYRIGHT_END_ | ||
*/ | ||
|
||
+#include <linux/version.h> | ||
#define __NO_VERSION__ | ||
|
||
#include "os-interface.h" | ||
@@ -24,7 +25,10 @@ static NV_STATUS nv_acpi_extract_object (const union acpi_object *, void *, N | ||
|
||
static int nv_acpi_add (struct acpi_device *); | ||
|
||
-#if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) || (NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2) | ||
+// Rel. commit "ACPI: make remove callback of ACPI driver void" (Dawei Li, 14 Nov 2022) | ||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0)) | ||
+static void nv_acpi_remove_one_arg_void(struct acpi_device *device); | ||
+#elif !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) || (NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2) | ||
static int nv_acpi_remove_two_args(struct acpi_device *device, int type); | ||
#else | ||
static int nv_acpi_remove_one_arg(struct acpi_device *device); | ||
@@ -80,7 +84,10 @@ static const struct acpi_driver nv_acpi_driver_template = { | ||
.ids = nv_video_device_ids, | ||
.ops = { | ||
.add = nv_acpi_add, | ||
-#if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) || (NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2) | ||
+// Rel. commit "ACPI: make remove callback of ACPI driver void" (Dawei Li, 14 Nov 2022) | ||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0)) | ||
+ .remove = nv_acpi_remove_one_arg_void, | ||
+#elif !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) || (NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2) | ||
.remove = nv_acpi_remove_two_args, | ||
#else | ||
.remove = nv_acpi_remove_one_arg, | ||
@@ -342,7 +349,10 @@ static int nv_acpi_add(struct acpi_device *device) | ||
return 0; | ||
} | ||
|
||
-#if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) || (NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2) | ||
+// Rel. commit "ACPI: make remove callback of ACPI driver void" (Dawei Li, 14 Nov 2022) | ||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0)) | ||
+static void nv_acpi_remove_one_arg_void(struct acpi_device *device) | ||
+#elif !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT) || (NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT == 2) | ||
static int nv_acpi_remove_two_args(struct acpi_device *device, int type) | ||
#else | ||
static int nv_acpi_remove_one_arg(struct acpi_device *device) | ||
@@ -396,7 +406,10 @@ static int nv_acpi_remove_one_arg(struct acpi_device *device) | ||
device->driver_data = NULL; | ||
} | ||
|
||
+// Rel. commit "ACPI: make remove callback of ACPI driver void" (Dawei Li, 14 Nov 2022) | ||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0)) | ||
return status; | ||
+#endif | ||
} | ||
|
||
/* | ||
-- | ||
2.39.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters