代码借鉴了firefly驱动,完整代码如下:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/err.h>
#include <linux/gpio.h>
#include <linux/io.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
static int firefly_gpio_probe(struct platform_device *pdev)
{
int gpio;
int level;
enum of_gpio_flags flag;
struct device_node *firefly_gpio_node = pdev->dev.of_node;
printk(KERN_ERR "driver is matched\n");
gpio = of_get_named_gpio_flags(firefly_gpio_node, "gpios", 0, &flag);
if (!gpio_is_valid(gpio))
{
printk("firefly-gpio: %d is invalid\n", gpio);
return -ENODEV;
}
if (gpio_request(gpio, "firefly-gpio"))
{
prin