From: seantywork Date: Fri, 14 Nov 2025 05:13:19 +0000 (+0900) Subject: dev gpio X-Git-Url: https://git.feebdaed.xyz/?a=commitdiff_plain;h=25c983fb2aab5a4afe936e6a702014de48b81885;p=linuxyz.git dev gpio --- diff --git a/kdev-gpio/Makefile b/kdev-gpio/Makefile new file mode 100644 index 0000000..ccc97aa --- /dev/null +++ b/kdev-gpio/Makefile @@ -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 index 0000000..30d7514 --- /dev/null +++ b/kdev-gpio/kdev_gpio.c @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#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