博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 内核设备驱动之GPIO驱动之GPIO GPIO字符设备初始化
阅读量:4153 次
发布时间:2019-05-25

本文共 1565 字,大约阅读时间需要 5 分钟。

 
 
 
static void gpiochip_setup_devs(void){ struct gpio_device *gdev; int err;  list_for_each_entry(gdev, &gpio_devices, list) {  err = gpiochip_setup_dev(gdev);  if (err)   pr_err("%s: Failed to initialize gpio device (%d)\n",          dev_name(&gdev->dev), err); }}
 
static const struct file_operations gpio_fileops = { .release = gpio_chrdev_release, .open = gpio_chrdev_open, .owner = THIS_MODULE, .llseek = noop_llseek, .unlocked_ioctl = gpio_ioctl,#ifdef CONFIG_COMPAT .compat_ioctl = gpio_ioctl_compat,#endif};
 
static int gpiochip_setup_dev(struct gpio_device *gdev){ int status;  cdev_init(&gdev->chrdev, &gpio_fileops); gdev->chrdev.owner = THIS_MODULE; gdev->chrdev.kobj.parent = &gdev->dev.kobj; gdev->dev.devt = MKDEV(MAJOR(gpio_devt), gdev->id); status = cdev_add(&gdev->chrdev, gdev->dev.devt, 1); if (status < 0)  chip_warn(gdev->chip, "failed to add char device %d:%d\n",     MAJOR(gpio_devt), gdev->id); else  chip_dbg(gdev->chip, "added GPIO chardev (%d:%d)\n",    MAJOR(gpio_devt), gdev->id); status = device_add(&gdev->dev); if (status)  goto err_remove_chardev;  status = gpiochip_sysfs_register(gdev); if (status)  goto err_remove_device;  /* From this point, the .release() function cleans up gpio_device */ gdev->dev.release = gpiodevice_release; pr_debug("%s: registered GPIOs %d to %d on device: %s (%s)\n",   __func__, gdev->base, gdev->base + gdev->ngpio - 1,   dev_name(&gdev->dev), gdev->chip->label ? : "generic");  return 0; err_remove_device: device_del(&gdev->dev);err_remove_chardev: cdev_del(&gdev->chrdev); return status;}
 

转载地址:http://tgqti.baihongyu.com/

你可能感兴趣的文章
C#入门
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
C++ 调用json
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
《达芬奇的人生密码》观后感
查看>>
基于“分形”编写的交互应用
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>