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