File backlight.patch of Package nvidia-gfxG06

diff -u -r -p NVIDIA-Linux-x86_64-515.43.04/kernel.orig/conftest.sh NVIDIA-Linux-x86_64-515.43.04/kernel/conftest.sh
--- NVIDIA-Linux-x86_64-515.43.04/kernel.orig/conftest.sh	2022-05-12 21:20:24.836186984 +0200
+++ NVIDIA-Linux-x86_64-515.43.04/kernel/conftest.sh	2022-05-12 21:23:18.595692105 +0200
@@ -2964,6 +2964,56 @@ compile_test() {
             compile_check_conftest "$CODE" "NV_DRM_ATOMIC_HELPER_CONNECTOR_DPMS_PRESENT" "" "functions"
         ;;
 
+        backlight_device_register)
+            #
+            # Determine if the backlight_device_register() function is present
+            # and how many arguments it takes.
+            #
+            # Don't try to support the 4-argument form of backlight_device_register().
+            # The fifth argument was added by commit a19a6ee6cad2
+            # ("backlight: Allow properties to be passed at registration") in
+            # v2.6.34
+            #
+            echo "$CONFTEST_PREAMBLE
+            #include <linux/backlight.h>
+            #if !defined(CONFIG_BACKLIGHT_CLASS_DEVICE)
+            #error Backlight class device not enabled
+            #endif
+            void conftest_backlight_device_register(void) {
+                backlight_device_register(NULL, NULL, NULL, NULL, NULL);
+            }" > conftest$$.c
+
+            $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
+            rm -f conftest$$.c
+
+            if [ -f conftest$$.o ]; then
+                rm -f conftest$$.o
+                echo "#define NV_BACKLIGHT_DEVICE_REGISTER_PRESENT" | append_conftest "functions"
+                return
+            else
+                echo "#undef NV_BACKLIGHT_DEVICE_REGISTER_PRESENT" | append_conftest "functions"
+                return
+            fi
+        ;;
+
+        backlight_properties_type)
+            #
+            # Determine if the backlight_properties structure has a 'type' field
+            # and whether BACKLIGHT_RAW is defined.
+            #
+            # 'type' field and BACKLIGHT_RAW added by commit bb7ca747f8d6
+            # ("backlight: add backlight type") in v2.6.39
+            #
+            CODE="
+            #include <linux/backlight.h>
+            void conftest_backlight_props_type(void) {
+                struct backlight_properties tmp;
+                tmp.type = BACKLIGHT_RAW;
+            }"
+
+            compile_check_conftest "$CODE" "NV_BACKLIGHT_PROPERTIES_TYPE_PRESENT" "" "types"
+        ;;
+
         get_backlight_device_by_name)
             #
             # Determine if the get_backlight_device_by_name() function is present
diff -u -r -p NVIDIA-Linux-x86_64-515.43.04/kernel.orig/nvidia/nvidia.Kbuild NVIDIA-Linux-x86_64-515.43.04/kernel/nvidia/nvidia.Kbuild
--- NVIDIA-Linux-x86_64-515.43.04/kernel.orig/nvidia/nvidia.Kbuild	2022-05-12 21:20:24.836186984 +0200
+++ NVIDIA-Linux-x86_64-515.43.04/kernel/nvidia/nvidia.Kbuild	2022-05-12 21:40:25.540413903 +0200
@@ -144,6 +144,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += pc
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += register_cpu_notifier
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += cpuhp_setup_state
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_map_resource
+NV_CONFTEST_FUNCTION_COMPILE_TESTS += backlight_device_register
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += get_backlight_device_by_name
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += timer_setup
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_enable_msix_range
@@ -226,6 +227,7 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += dma_op
 NV_CONFTEST_TYPE_COMPILE_TESTS += swiotlb_dma_ops
 NV_CONFTEST_TYPE_COMPILE_TESTS += noncoherent_swiotlb_dma_ops
 NV_CONFTEST_TYPE_COMPILE_TESTS += vm_fault_has_address
+NV_CONFTEST_TYPE_COMPILE_TESTS += backlight_properties_type
 NV_CONFTEST_TYPE_COMPILE_TESTS += vm_insert_pfn_prot
 NV_CONFTEST_TYPE_COMPILE_TESTS += vmf_insert_pfn_prot
 NV_CONFTEST_TYPE_COMPILE_TESTS += address_space_init_once
diff -u -r -p NVIDIA-Linux-x86_64-515.43.04/kernel.orig/nvidia-modeset/nvidia-modeset-linux.c NVIDIA-Linux-x86_64-515.43.04/kernel/nvidia-modeset/nvidia-modeset-linux.c
--- NVIDIA-Linux-x86_64-515.43.04/kernel.orig/nvidia-modeset/nvidia-modeset-linux.c	2022-05-12 21:20:24.816186583 +0200
+++ NVIDIA-Linux-x86_64-515.43.04/kernel/nvidia-modeset/nvidia-modeset-linux.c	2022-05-12 21:38:23.529950824 +0200
@@ -1009,6 +1009,8 @@ static int nvkms_update_backlight_status
     return status ? 0 : -EINVAL;
 }
 
+#if defined(NV_BACKLIGHT_DEVICE_REGISTER_PRESENT)
+
 static int nvkms_get_backlight_brightness(struct backlight_device *bd)
 {
     struct nvkms_backlight_device *nvkms_bd = bl_get_data(bd);
@@ -1034,16 +1036,20 @@ static const struct backlight_ops nvkms_
     .update_status = nvkms_update_backlight_status,
     .get_brightness = nvkms_get_backlight_brightness,
 };
+#endif
 
 struct nvkms_backlight_device*
 nvkms_register_backlight(NvU32 gpu_id, NvU32 display_id, void *drv_priv,
                          NvU32 current_brightness)
 {
+#if defined(NV_BACKLIGHT_DEVICE_REGISTER_PRESENT)
     char name[18];
     struct backlight_properties props = {
         .brightness = current_brightness,
         .max_brightness = 100,
+# if defined(NV_BACKLIGHT_PROPERTIES_TYPE_PRESENT)
         .type = BACKLIGHT_RAW,
+# endif
     };
     nv_gpu_info_t *gpu_info = NULL;
     NvU32 gpu_count = 0;
@@ -1093,15 +1099,20 @@ done:
     nvkms_free(gpu_info, NV_MAX_GPUS * sizeof(*gpu_info));
 
     return nvkms_bd;
+#else
+    return NULL;
+#endif
 }
 
 void nvkms_unregister_backlight(struct nvkms_backlight_device *nvkms_bd)
 {
+#if defined(NV_BACKLIGHT_DEVICE_REGISTER_PRESENT)
     if (nvkms_bd->dev) {
         backlight_device_unregister(nvkms_bd->dev);
     }
 
     nvkms_free(nvkms_bd, sizeof(*nvkms_bd));
+#endif
 }
 
 /*************************************************************************
diff -u -r -p NVIDIA-Linux-x86_64-515.43.04/kernel.orig/nvidia-modeset/nvidia-modeset.Kbuild NVIDIA-Linux-x86_64-515.43.04/kernel/nvidia-modeset/nvidia-modeset.Kbuild
--- NVIDIA-Linux-x86_64-515.43.04/kernel.orig/nvidia-modeset/nvidia-modeset.Kbuild	2022-05-12 21:20:24.812186503 +0200
+++ NVIDIA-Linux-x86_64-515.43.04/kernel/nvidia-modeset/nvidia-modeset.Kbuild	2022-05-12 21:31:04.813099910 +0200
@@ -89,6 +89,7 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += file_o
 NV_CONFTEST_TYPE_COMPILE_TESTS += node_states_n_memory
 NV_CONFTEST_TYPE_COMPILE_TESTS += timespec64
 NV_CONFTEST_TYPE_COMPILE_TESTS += proc_ops
+NV_CONFTEST_TYPE_COMPILE_TESTS += backlight_properties_type
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += pde_data
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += proc_remove
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += timer_setup
@@ -96,4 +97,5 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += kt
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += list_is_first
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += ktime_get_real_ts64
 NV_CONFTEST_FUNCTION_COMPILE_TESTS += ktime_get_raw_ts64
+NV_CONFTEST_FUNCTION_COMPILE_TESTS += backlight_device_register
 NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_kthread_create_on_node
openSUSE Build Service is sponsored by