在本实验中,使用misc设备驱动的方式来编写蜂鸣器的驱动,用 platform 来实现总线、设备和驱动,misc 主要负责完成字符设备的创建。
1 修改设备树文件
设备树中的beep设备节点直接使用36.3.2中创建的beep设备节点即可。
2 编写驱动程序
本实验例程路径:i.MX6UL终结者光盘资料/06_Linux驱动例程/16_beep_misc
创建beep_misc.c文件,具体内容如下:
1 #include <linux/types.h>
2 #include <linux/kernel.h>
3 #include <linux/delay.h>
4 #include <linux/ide.h>
5 #include <linux/init.h>
6 #include <linux/module.h>
7 #include <linux/errno.h>
8 #include <linux/gpio.h>
9 #include <linux/cdev.h>
10 #include <linux/device.h>
11 #include <linux/of.h>
12 #include <linux/of_address.h>
13 #include <linux/of_gpio.h>
14 #include <linux/platform_device.h>
15 #include <linux/miscdevice.h>
16 #include <asm/mach/map.h>
17 #include <asm/uaccess.h>
18 #include <asm/io.h>
19
20 #define MISCBEEP_NAME "miscbeep" /* 名字 */
21 #define MISCBEEP_MINOR 144 /* 子设备号 */
22 #define BEEPOFF 0 /* 关蜂鸣器 */
23 #define BEEPON 1 /* 开蜂鸣器 */
24
25 /* miscbeep设备结构体 */
26 struct miscbeep_dev{
27 dev_t devid; /* 设备号*/
28 struct cdev cdev; /* cdev */
29 struct class *class; /* 类 */
30 struct device *device; /* 设备*/
31 struct device_node