所谓GPIO设备虚拟文件结点,就是方便用户在应用程序直接操纵GPIO的值。
1.首先必须了解static DEVICE_ATTR(GPS_nRST, 0644, gps_reset_show, gps_reset_store); 这个函数的意思。
“GPS_nRST“是要操纵的引脚,“0644”创建文件结点的权限,“gps_reset_show”结点的读状态,“gps_reset_store”结点的写状态。
通过这个函数既是填充文件结点。
2.最终注册是通过 device_create_file(&pdev->dev, &dev_attr_GPS_nRST); 注册上的。注意参数pdev->dev必须是在板载信息里要初始化的。
参数&dev_attr_GPS_nRST即是引脚GPS_nRST,只不过前面加一个dev_attr_是格式上的要求。
下面贴上自己写的代码以供参考。
#include <linux/module.h>
#include <linux/mman.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/spinlock.h>
#include <linux/delay.h>
#include <linux/sysdev.h>
#include <linux/errno.h>
#include <linux/io.h>
#include <linux/device.h>
#include <mach/gpio.h>
#include <linux/platform_device.h>
#include "gpio_gps.h"
#include <asm/uaccess.h>
#include <mach/hardware.h>
#include <linux/device.h>
#define nRST 85
#define PWON 87
static ssize_t gps_standby_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
int len = 0;
struct gps_gpio_platform_data *pdata = dev->platform_data;
len += sprintf(buf + len, "%u\n", pdata->standby_state);
printk("=====&#