2013年8月24日

Linux下GPIO驱动(五) ----misc_register();

摘要: //struct miscdevice { int minor; const char *name; const struct file_operations *fops; struct list_head list; struct device *parent; struct device *this_device; const char *nodename; mode_t mode;}; int misc_register(struct miscdevice * misc);//注册为杂项设备 int misc_deregister(str... 阅读全文

posted @ 2013-08-24 16:23 熊猫酒仙是也 阅读(2035) 评论(0) 推荐(0) 编辑

Linux下GPIO驱动(四) ----gpio_request();gpio_free();

摘要: //gpio_request申请gpio口int gpio_request(unsigned gpio, const char *label){ struct gpio_desc *desc; struct gpio_chip *chip; int status = -EINVAL; unsigned long flags; spin_lock_irqsave(&gpio_lock, flags); // gpio_lock是自旋锁,上锁,保存FLAG在flags变量 if (!gpio_is_valid(gp... 阅读全文

posted @ 2013-08-24 15:57 熊猫酒仙是也 阅读(16233) 评论(0) 推荐(0) 编辑

Linux下GPIO驱动(三) ----gpio_desc()的分析

摘要: 上篇最后提出的疑问是结构体gpio_chip中的成员函数set等是怎么实现的,在回答之前先介绍下gpio_desc这个结构体。 如上图所示,右上方部分为GPIO驱动对其它驱动提供的GPIO操作接口,其对应的右下方部分为GPIO硬件操作接口,也就是说对外提供的接口最终会一一对应的对硬件GPIO进行操作。再来看左边部分,左上方部分为一全局数组,记录各个GPIO的描述符,即对应左下方的gpio_desc结构体,其中gpio_chip指向硬件层的GPIO,flags为一标志位,用来指示当前GPIO是否已经占用,当用gpio_request申请GPIO资源时,flags位就会置位,当调用gpio_fre 阅读全文

posted @ 2013-08-24 15:46 熊猫酒仙是也 阅读(12430) 评论(0) 推荐(1) 编辑

Linux下GPIO驱动(二) ----s3c_gpio_cfgpin();gpio_set_value();

摘要: 首先来看s3c_gpio_cfgpin();int s3c_gpio_cfgpin(unsigned int pin, unsigned int config){ struct s3c_gpio_chip *chip = s3c_gpiolib_getchip(pin);//得到对应GPIO结构体首指针,里面包含了该GPIO的各种参数 unsigned long flags; int offset; int ret; if (!chip) return -EINVAL; offset = pin - chip->chip.base; s3... 阅读全文

posted @ 2013-08-24 14:55 熊猫酒仙是也 阅读(6876) 评论(0) 推荐(0) 编辑

Linux下GPIO驱动(一) ----一个简单的LED驱动

摘要: /******************************* * *杂项设备驱动:miscdevice *majior=10; * * *****************************/#include #include #include #include #include //#include //#include //kcalloc,kzalloc等内存分配函数//---------ioctl------------#include //---------misc_register----#include //----------cdev--------------#incl 阅读全文

posted @ 2013-08-24 13:52 熊猫酒仙是也 阅读(7440) 评论(0) 推荐(0) 编辑

导航