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

📄 liid.c

📁 linux2.6驱动模块
💻 C
字号:
/* * dream  */#ifndef MODULE#define MODULE#endif#ifndef __KERNEL__#define __KERNEL__#endif#include <linux/module.h>#include <linux/init.h>#include <linux/fs.h>#include <linux/slab.h>#include <linux/mm.h>#include <asm/io.h>#include <linux/interrupt.h>#include <asm/arch-s3c2410/irqs.h>#include "../inc/inc.h"MODULE_LICENSE("Dual BSD/GPL");static int Liid_major = 0;MANAGER *Mg_p;extern void Liid_timer_init(unsigned long data);extern int Liid_init_irq(void *vptr, void *arg);extern int Liid_rm_irq(void *vptr, void *arg);extern int Liid_keys_read(void *vptr, void *arg);extern int Liid_init_led(void *vptr, void *arg);static int Liid_open(struct inode *, struct file *);static int Liid_release(struct inode *, struct file *);static int Liid_ioctl(struct inode *, struct file *, unsigned int, unsigned long);static struct file_operations Liid_fops = {    .ioctl = Liid_ioctl,    .open = Liid_open,    .release =Liid_release,    .owner = THIS_MODULE,};static int Liid_open(struct inode *inode, struct file *filp) {    return 0;}static int Liid_release(struct inode *inode, struct file *filp){    return 0;}static int Liid_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg){    return 0;}static int Liid_module_init(void){    int result;        int count;    unsigned long tmp_add, tmp_val;    result = register_chrdev(Liid_major, "dream", &Liid_fops);    if (result < 0) {	printk("Liid: Can't get device major %d\r\n", Liid_major);	return result;    }else{        printk("Get device major %d\r\n", result);//kdb();    }           Mg_p = kmalloc(sizeof(MANAGER), GFP_KERNEL);    memset(Mg_p, 0, sizeof(MANAGER));    for(count = 0; count < 8; count ++){        Mg_p->key_irqs[count] = &key[count];    }    Mg_p->video.base_addr = (unsigned long)ioremap(0x10000000, 1*1024*1024);    tmp_add = (unsigned long )ioremap(0x48000000, 0xf);    tmp_val = readl(tmp_add);    printk("the val of banks:%#x \r\n", readl(tmp_add));    tmp_val &= ~(0xf <<8);    //tmp_val = 0;    writel(0x2211d020, tmp_add);    printk("the val of banks:%#x \r\n", readl(tmp_add));    printk(":%#x \r\n", readl(tmp_add + 0xc));    //iounmap(tmp_add);    Liid_init_irq(0, 0);    Liid_timer_init(0);    Liid_init_led(0, 0);    for(count = 0; count < 40; count ++){        //Mg_p->mem[count] = kmalloc(1024*1024, GFP_KERNEL);    }       if (!Liid_major) Liid_major = result;        return 0;}static void Liid_module_cleanup(void){   Liid_rm_irq(0, 0);    unregister_chrdev(Liid_major, "dream") ;    kfree(Mg_p);    }module_init(Liid_module_init);module_exit(Liid_module_cleanup);

⌨️ 快捷键说明

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