微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > IO端口映射和IO内存映射(详解S3C24XX_GPIO驱动)

IO端口映射和IO内存映射(详解S3C24XX_GPIO驱动)

时间:11-09 来源:互联网 点击:

register_chrdev(LED_MAJOR, DEVICE_NAME, &s3c24xx_leds_fops);248 if (ret < 0) {249 printk(DEVICE_NAME " cant register major number\n");250 return ret;251 }252 leds_class = class_create(THIS_MODULE, "leds");253 if (IS_ERR(leds_class))254 return PTR_ERR(leds_class);255 256 leds_class_devs[0] = class_device_create(leds_class, NULL, MKDEV(LED_MAJOR, 0), NULL, "leds");257 258 for (minor = 1; minor < 4; minor++)259 {260 leds_class_devs[minor] = class_device_create(leds_class, NULL, MKDEV(LED_MAJOR, minor), NULL, "led%d", minor);261 if (unlikely(IS_ERR(leds_class_devs[minor])))262 return PTR_ERR(leds_class_devs[minor]);263 }264 265 printk(DEVICE_NAME " initialized\n");266 return 0;267 }268 269 /*270 * 执行rmmod命令时就会调用这个函数 271 */272 static void __exit s3c24xx_leds_exit(void)273 {274 int minor;275 /* 卸载驱动程序 */276 unregister_chrdev(LED_MAJOR, DEVICE_NAME);277 278 for (minor = 0; minor < 4; minor++)279 {280 class_device_unregister(leds_class_devs[minor]);281 }282 class_destroy(leds_class);283 //释放IO端口284 iounmap(gpio_va);285 }286 287 /* 这两行指定驱动程序的初始化函数和卸载函数 */288 module_init(s3c24xx_leds_init);289 module_exit(s3c24xx_leds_exit);290 291 /* 描述驱动程序的一些信息,不是必须的 */292 MODULE_LICENSE("GPL");

View Code


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top