gpioled.c
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/ide.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/gpio.h>
#include <linux/cdev.h>
#include <linux/device.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <asm/mach/map.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <linux/of_gpio.h>
#define GPIOLED_CNT 1
#define GPIOLED_NAME "gpioled"
#define LEDON 1 /* LED开灯 */
#define LEDOFF 0 /* LED关灯 */
/* gpioled 设备结构体 */
struct gpioled_dev{
dev_t devid;
int major;
int minor;
struct cdev cdev;
struct class *class;
struct device *device;
struct device_node *nd;
int led1_gpio;
int led2_gpio;
int led3_gpio;
};
struct gpioled_dev gpioled;
static int led_open(struct inode *inode,struct file *filp)
{
filp->private_data = &gpioled;
return 0;
}
static int led_release(struct inode *inode,struct file *filp)
{
return 0;
}
static ssize_t led_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt)
{
int retvalue;
unsigned char databuf[1];
unsigned char led_value;
unsigned int led_place; /*led位*/
unsigned int led_state; /*led状态*/
struct gpioled_dev *de