设备树 下面截取gpio0的设备树,复制自:linux_5.10/arch/riscv/boot/dts/cvitek/cv180x_base.dtsi
gpio0: gpio@03020000 { compatible = snps,dw-apb-gpio; reg = ; #address-cells = ; #size-cells = ; porta: gpio-controller@0 { compatible = snps,dw-apb-gpio-port; bank-name = porta; gpio-controller; #gpio-cells = ; snps,nr-gpios = ; reg = ; };}; 以下是复制自:linux_5.10/arch/riscv/boot/dts/cvitek/cv180x_base_riscv.dtsi
gpio0: gpio@03020000 { porta: gpio-controller@0 { interrupt-controller; interrupts = ; interrupt-parent = ; }; }; 驱动 cv180x的gpio控制器用到是dw-apb-gpio控制器驱动,驱动代码位于:linux_5.10/drivers/gpio/gpio-dwapb.c
#define dwapb_driver_name gpio-dwapb// 省略其他代码static struct platform_driver dwapb_gpio_driver = { .driver = { .name = dwapb_driver_name, .pm = &dwapb_gpio_pm_ops, .of_match_table = dwapb_of_match, .acpi_match_table = dwapb_acpi_match, }, .probe = dwapb_gpio_probe,};module_platform_driver(dwapb_gpio_driver); 关键函数是probe函数
// drivers/gpio/gpio-dwapb.cdwapb_gpio_probe: dwapb_gpio_get_pdata(dev) device_for_each_child_node(dev, fwnode) { //遍历设备树节点 fwnode_property_read_u32(fwnode, snps,nr-gpios, &pp- >ngpio) fwnode_property_read_u32(fwnode, reg, &pp- >idx) } dwapb_gpio_add_port devm_gpiochip_add_data devm_gpiochip_add_data_with_key gpiochip_add_data_with_key //注册到gpiolib的gpio_devices中 gpio子系统// drivers/gpio/gpiolib.cstruct gpio_desc *gpio_to_desc(unsigned gpio) //从gpio_devices获取gpio_desc// include/asm-generic/gpio.h// drivers/gpio/gpiolib-sysfs.cgpio_export: gpiod_export(gpio_to_desc(gpio), direction_may_change) device_create_with_groups device_create_groups_vargs device_add kobject_add //添加到相关的设备模型子系统 device_create_file //创建/sys下的设备属性文件 ... //其他相关设置 小结 通过上面的3块,就实现了/sys/class/gpio/export导出gpio的过程即对gpio的操作。
关于gpio的相关操作函数就在gpiolib.c里面。
HBM静电测试机尾波的危害
基于TRIAC的调光器改善LED照明闪烁问题
半导体封装测试设备具体包括哪些
在线演讲答疑:5G O-RAN标准、关键技术和一致性测试方法
胆机输出变压器制作图解,output transformer DIY process
Milk-V Duo开发板免费体验 GPIO分析
小米将推出一款无刘海并搭载骁龙855处理器的红米新机
工业机器人将引领智能化发展的道路
特朗普表示只有美元才是真正的货币
优化现有移动设备中天线的性能来推出下一代移动技术:物联网和 5G
允许式方向高频保护工作原理
发动机ECU改装常见问题与解决方法
MEMS加速度计工作原理介绍
分布式系统及大数据分析系统成功用于临沂城市管理局指挥中心
上海恒屹新能源倒闭 获千亿融资依然无法量产
业界首个基于2.1GHz和3.5GHz的时频双聚合方案验证在成都完成
华为p10超好用的10个功能你知道吗?华为p10不得不说的秘密
三星崔亨进将担任6G愿景工作组主席
你会选择刷脸支付吗
电磁辐射防护规定标准