⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.c

📁 基于ppc405eP平台的键盘驱动代码
💻 C
字号:
/** ************************************************************************* **  ** includes ** ************************************************************************* **/#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/config.h>#include <linux/slab.h>#include <linux/vmalloc.h>#include <linux/ioctl.h>#include <linux/major.h>#include <linux/delay.h>#include <asm/errno.h>#include <asm/irq.h>#include <asm/uaccess.h>#include <asm/io.h>#include <asm/delay.h>#include "led.h"#ifdef __KERNEL_2_6_X__#include <linux/proc_fs.h>#endifvolatile unsigned short * led_base;static int led_open(struct inode* inode, struct file* filp){#ifdef __KERNEL_2_4_X__	MOD_INC_USE_COUNT;#endif	
	printk("led driver is opened\n");	return 0;}static int led_release(struct inode* inode, struct file* filp){#ifdef __KERNEL_2_4_X__	MOD_DEC_USE_COUNT;#endif	
	printk("led driver is closed\n");	return 0;}static int led_ioctl (struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg){	
	printk("led driver ioctl\n");	return ret;}/* LED file operations */static struct file_operations led_fops = {	open:		led_open,	ioctl:		led_ioctl,	release:	led_release};int init_led(void){	volatile int ret;	printk("LED Driver Initialized...\n");   	led_base = (volatile unsigned short *)ioremap(LED_PHY_ADDR, LED_MAP_SIZE);	printk("init_led %p\n",led_base);	ret = register_chrdev(LED_MAJOR, "led", &led_fops);	if (ret < 0) {		printk("init_led: led register failed\n");		return ret;	}	return 0;}void exit_led(void){	volatile int ret;	ret = unregister_chrdev(LED_MAJOR, "led");	if (ret < 0) {		printk("exit_led: led unregister failed\n");		return;	}	iounmap((void *)led_base);   	return;}module_init(init_led)module_exit(exit_led)#ifdef __KERNEL_2_6_X__MODULE_LICENSE("Dual BSD/GPL");#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -