我是靠谱客的博主 忐忑金鱼,最近开发中收集的这篇文章主要介绍GPIO子系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用SC20平台,MSM8909
实现功能,控制风扇开启关闭
(一)
设备树文件
kernelarcharmbootdtsqcommsm8909-mtp.dtsi
说明文档
kernelDocumentationdevicetreebindingsgpiogpio-msm.txt

&gpio_1{
	myfan{ 
		compatible = "my,myfan";
		qcom,myfan-gpio = <&msm_gpio 65 0>; 
	};
}

在某个地方(忘记哪里了2333)看到必须要有&msm_gpio标记
compatible – 标识符,驱动中最优先匹配
qcom,myfan-gpio
第一个参数65是GPIO引脚号
第二个参数0是指定可选参数(未使用)

(二)
驱动
注册驱动

static struct of_device_id myfan_of_match[] = {
	{.compatible = "my,myfan"},
};
static struct platform_driver myfan_drv = {
	.driver	= {
		.name	= "myfan",
		.owner	= THIS_MODULE,
		.of_match_table = myfan_of_match,
	},
	.probe		= myfan_probe,
	.remove		= myfan_remove,
};	
module_platform_driver(myfan_drv);

最优先配对compatible,其次使用name配对,配对成功后调用prob探测函数

prob探测函数

static int myfan_probe(struct platform_device *dev)
{
	int ret;
	printk("myfan probe start!n");
	//获取名为 "qcom,myfan-gpio"的gpio信息
	fan_gpio = of_get_named_gpio(dev->dev.of_node,"qcom,myfan-gpio", 0);
	//检测gpio有效性
	ret = gpio_is_valid(fan_gpio);
	if(ret)
		printk("myfan: fan_gpio %d is validn",fan_gpio);
	else
		printk("myfan: fan_gpio %d is invalidn",fan_gpio);	
		
	//申请gpio
	ret = gpio_request(fan_gpio;,"myfan_gpio");
	//设置gpio方向,同时设置输出电平
	ret = gpio_direction_output(fan_gpio, 0);
	//导出gpio端口到用户空间,设置方向是否可以改变
	gpio_export(fan_gpio, 1);
	ret = misc_register(&misc);
	if(ret)
		printk("myfan: misc register error;n");
	else
		printk("myfan: misc register success ;n");
	return 0;
}

注册设备

static struct file_operations myfan_fops = {
	.open			= myfan_open,
	.release		= myfan_release,
	.write			= myfan_write,
	.read			= myfan_read,
};

static struct miscdevice misc = {  
    .minor = MISC_DYNAMIC_MINOR,  
    .name = "myfan", 
    .fops = &myfan_fops,  
};  

接口函数中都是空的,没有贴出

(三)
使用

gpio_set_value();

导出到用户空间后可以在/sys/class/gpio/gpioN直接对其中文件进行操作,不需要open设备
echo 1 > /sys/class/gpio/gpioN/value
echo 0 > /sys/class/gpio/gpioN/value
引脚号和gpio号不同,一一对应,网上有gpio的计算方法

最后

以上就是忐忑金鱼为你收集整理的GPIO子系统的全部内容,希望文章能够帮你解决GPIO子系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部