📄 liid.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 + -