Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RogueScholar/02624d2e8a6d9e286dbece73f48106db to your computer and use it in GitHub Desktop.
Save RogueScholar/02624d2e8a6d9e286dbece73f48106db to your computer and use it in GitHub Desktop.
Patch for intel_nuc_led on Linux kernel versions >= 5.6.0
--- a/Makefile
+++ b/Makefile
@@ -1,40 +1,46 @@
-obj-m := nuc_led.o
+#!/usr/bin/make -f
+# -*- mode: makefile-gmake; coding: utf-8-unix; tab-width: 4; -*-
-KVERSION := $(shell uname -r)
-KDIR := /lib/modules/$(KVERSION)/build
-PWD := $(shell pwd)
+KERNELRELEASE ?= $(shell uname -r)
+KDIR ?= /lib/modules/$(KERNELRELEASE)/build
+PWD ?= $(shell pwd)
-.PHONY: clean default dkms-add dkms-build dkms-deb dkms-install dkms-rpm dkms-uninstall install
+MOD_NAME ::= intel-nuc-led
+MOD_VERSION ::= 1.0
-clean:
- $(MAKE) -C $(KDIR) M=$(PWD) clean
+obj-m ::= nuc_led.o
-default:
+all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
+install: default
+ $(MAKE) -C $(KDIR) M=$(PWD) modules_install
+ @depmod -a $(KERNELRELEASE)
+
+clean:
+ $(MAKE) -C $(KDIR) M=$(PWD) clean
+
dkms-add:
dkms add --force $(PWD)
dkms-build: dkms-add
- dkms build -m intel-nuc-led -v 1.0
+ dkms build -m $(MOD_NAME) -v $(MOD_VERSION)
dkms-deb: dkms-add
- dkms mkdeb intel-nuc-led/1.0 --source-only
+ dkms mkdeb $(MOD_NAME)/$(MOD_VERSION) --source-only
dkms-install: dkms-build
- dkms install -m intel-nuc-led -v 1.0
- @depmod -a $(KVERSION)
+ dkms install -m $(MOD_NAME) -v $(MOD_VERSION)
+ @depmod -a $(KERNELRELEASE)
dkms-rpm: dkms-add
- dkms mkrpm intel-nuc-led/1.0 --source-only
+ dkms mkrpm $(MOD_NAME)/$(MOD_VERSION) --source-only
dkms-status:
- dkms status intel-nuc-led/1.0
+ dkms status $(MOD_NAME)/$(MOD_VERSION)
dkms-uninstall:
- dkms remove -m intel-nuc-led -v 1.0 --all
- rm -rf /usr/src/intel-nuc-led-1.0/
+ dkms remove -m $(MOD_NAME) -v $(MOD_VERSION) --all
+ @rm -Rfv /usr/src/$(MOD_NAME)-$(MOD_VERSION)
-install:
- $(MAKE) -C $(KDIR) M=$(PWD) modules_install
- @depmod -a $(KVERSION)
+.PHONY: all install clean dkms-add dkms-build dkms-deb dkms-install dkms-rpm dkms-uninstall
--- a/dkms.conf
+++ b/dkms.conf
@@ -1,5 +1,15 @@
+PACKAGE_NAME="intel-nuc-led"
+PACKAGE_VERSION="1.0"
+
+CLEAN="make KDIR=${kernel_source_dir} PWD=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build clean"
AUTOINSTALL="yes"
+REMAKE_INITRD="yes"
+
+MAKE[0]="make KDIR=${kernel_source_dir} PWD=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build all"
+STRIP[0]="yes"
+
BUILT_MODULE_NAME[0]="nuc_led"
-DEST_MODULE_LOCATION[0]="/extra"
-PACKAGE_NAME="intel-nuc-led"
-PACKAGE_VERSION=1.0
\ No newline at end of file
+BUILT_MODULE_LOCATION[0]=""
+DEST_MODULE_NAME[0]="gpio-nuc-led"
+DEST_MODULE_LOCATION[0]="/kernel/drivers/gpio"
+MODULES_CONF[0]="options ${DEST_MODULE_NAME[0]} nuc_led_perms=0664 nuc_led_gid=0 nuc_led_uid=0"
--- a/nuc_led.c
+++ b/nuc_led.c
@@ -37,6 +37,7 @@
#include <linux/acpi.h>
#include <linux/vmalloc.h>
#include <linux/uaccess.h>
+#include <linux/version.h>
MODULE_AUTHOR("Miles Peterson");
MODULE_DESCRIPTION("Intel NUC LED Control WMI Driver");
@@ -443,11 +444,18 @@ static ssize_t acpi_proc_read(struct file *filp, char __user *buff,
return ret;
}
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
+static struct proc_ops proc_acpi_operations = {
+ .proc_read = acpi_proc_read,
+ .proc_write = acpi_proc_write,
+};
+#else
static struct file_operations proc_acpi_operations = {
.owner = THIS_MODULE,
.read = acpi_proc_read,
.write = acpi_proc_write,
};
+#endif
/* Init & unload */
static int __init init_nuc_led(void)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment