DM355上按键程序(三)

2014-11-24 08:20:26 · 作者: · 浏览: 10
rr) {
printk("Error : Error in Adding Davinci buttons");
unregister_chrdev_region(dev, BUTTON_NR_DEVS);
return -err;
}
af_class = class_simple_create(THIS_MODULE, DEVICE_NAME);


if (!af_class) {
printk("Error : Error in creating device class");
unregister_chrdev_region(dev, BUTTON_NR_DEVS);
class_simple_device_remove(dev);
class_simple_destroy(af_class);
cdev_del(&c_dev);
return -EIO;
}


result =devfs_mk_cdev(dev, S_IFCHR | S_IRUSR | S_IWUSR,DEVICE_NAME);
if (result < 0) {
printk("Error : Error in devfs_mk_cdev");
unregister_chrdev_region(dev, BUTTON_NR_DEVS);
class_simple_device_remove(dev);
class_simple_destroy(af_class);
cdev_del(&c_dev);
return result;
}


/* register simple device class */
class_simple_device_add(af_class, dev, NULL, DEVICE_NAME);


printk("Button register Successfully\n");
return 0;
}


/*
*
*/
static void __exit davinci_buttons_exit(void)
{
/* 卸载驱动程序 */
unregister_chrdev_region(dev, BUTTON_NR_DEVS);
/* remove simple class device */
class_simple_device_remove(dev);

devfs_remove(DEVICE_NAME);


/* destroy simple class */
class_simple_destroy(af_class);

cdev_del(&c_dev);
printk("Button register release\n");
}


/* 这两行指定驱动程序的初始化函数和卸载函数 */
module_init(davinci_buttons_init);
module_exit(davinci_buttons_exit);


/* 描述驱动程序的一些信息,不是必须的 */
MODULE_AUTHOR("jiaxinxu"); // 驱动程序的作者
MODULE_DESCRIPTION("JC_IR BUTTON Driver"); // 一些描述信息
MODULE_LICENSE("GPL"); // 遵循的协议


insmod驱动后


输入cat /dev/buttons 显示按键的输出