]> git.feebdaed.xyz Git - linuxyz.git/commitdiff
dev gpio
authorseantywork <seantywork@gmail.com>
Fri, 14 Nov 2025 05:13:19 +0000 (14:13 +0900)
committerseantywork <seantywork@gmail.com>
Fri, 14 Nov 2025 05:13:19 +0000 (14:13 +0900)
kdev-gpio/Makefile [new file with mode: 0644]
kdev-gpio/kdev_gpio.c [new file with mode: 0644]

diff --git a/kdev-gpio/Makefile b/kdev-gpio/Makefile
new file mode 100644 (file)
index 0000000..ccc97aa
--- /dev/null
@@ -0,0 +1,6 @@
+obj-m := kdev_gpio.o
+
+all:
+       make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
+clean:
+       make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean
\ No newline at end of file
diff --git a/kdev-gpio/kdev_gpio.c b/kdev-gpio/kdev_gpio.c
new file mode 100644 (file)
index 0000000..30d7514
--- /dev/null
@@ -0,0 +1,66 @@
+#include <linux/kernel.h>
+#include <linux/init.h> 
+#include <linux/module.h>
+#include <linux/gpio.h>
+
+#include <linux/slab.h> 
+#include <linux/errno.h>  
+#include <linux/types.h> 
+#include <linux/interrupt.h> 
+
+#include <linux/in.h>
+#include <linux/string.h>
+#include <linux/version.h> 
+
+#include <linux/of.h>
+#include <linux/of_gpio.h>
+#include <linux/device.h>
+#include <linux/container_of.h>
+
+#define TARGET_NAME    "GPIO17"
+
+static int __init kdev_gpio_init(void){
+    int gpio_target = 0;
+    struct device_node* dn = NULL;
+    struct device* d = NULL;
+    dn = of_find_node_by_name(NULL, TARGET_NAME);
+    if(dn == NULL){
+        printk("failed to find device node: %s\n", TARGET_NAME);
+        return -1;
+    }
+    gpio_target = of_get_named_gpio(dn, TARGET_NAME, 0);
+    if(gpio_target == -EPROBE_DEFER){
+        printk("EPROBE DEFER\n");
+        return -1;
+    }
+    if(gpio_is_valid(gpio_target)){
+        d = container_of(&dn, struct device, of_node);
+        if(d == NULL){
+            printk("failed to get device from node\n");
+            return -1;
+        }
+        // deprecated
+        //gpio_target = devm_gpio_request(d, gpio_target, TARGET_NAME);
+        if(gpio_target){
+            printk("SUCESS: gpio_target: %d\n", gpio_target);
+        } else {
+            printk("failed to request gpio target\n");
+            return -1;
+        }
+    } else {
+        printk("gpio is not valid\n");
+        return -1;
+    }
+    
+
+    return 0;
+}
+
+static void __exit kdev_gpio_exit(void){
+    printk("bye\n");
+}
+
+module_init(kdev_gpio_init);
+module_exit(kdev_gpio_exit);
+
+MODULE_LICENSE("GPL");
\ No newline at end of file