www.pudn.com > EXT.rar > simpleD.c


/* 
 * Copyright (C) 2004 Gexin TECH  
 *                      
 * 
	 This file just for GX-ARM9-2410EP   
 
   Sat Feb 7 2004 Zhen-feng Zhao  
 * 
 * This file is subject to the terms and conditions of the GNU General Public 
 * License.  See the file COPYING in the main directory of this archive 
 * for more details. 
 */ 
 
#include  
#include  
#include  
#include  
#include 	/* for in_interrupt */ 
#include  
#include  
#include 	/* for udelay */ 
#include  
 
#include  
#include  
#include  
#include  
 
 
 
#define SimpleD_MAJOR	96 
 
 
devfs_handle_t  dev_handle;     /* register handle to store device fs */ 
int SimpleD_temp_count=0; 
 
 
ssize_t SimpleD_read (struct file * file ,char * buf, size_t count, loff_t * f_ops) 
{ 
 
	printk("s3c2410: device file-read operation!\n");	 
 
	return count; 
}	 
 
/*=========== SimpleD  Write =======================*/ 
ssize_t SimpleD_write (struct file * file ,const char * buf, size_t count, loff_t * f_ops) 
{ 
 
	printk("s3c2410: device file-write operation!\n");	 
	 
	return count; 
}	 
 
 
 
/*=========== SimpleD Ioctl =======================*/ 
ssize_t SimpleD_ioctl (struct inode * inode ,struct file * file, 
	       	   unsigned int cmd, long data) 
{ 
	printk("s3c2410: device ioctl operation!\n");	 
	 
} 
 
/*============ SimpleD device open ==============*/  
ssize_t SimpleD_open (struct inode * inode ,struct file * file) 
{ 
	return 0; 
}	 
 
/*============ SimpleD device close =============*/ 
ssize_t SimpleD_release (struct inode  * inode ,struct file * file) 
{ 
        devfs_unregister_chrdev( SimpleD_MAJOR, "SimpleD" ); 
        devfs_unregister( dev_handle ); 
 
	return 0; 
} 
 
struct file_operations SimpleD_ops ={ 
	 
	open:		SimpleD_open, 
	 
	read:		SimpleD_read, 
	 
	write:		SimpleD_write, 
	 
	ioctl:		SimpleD_ioctl, 
	 
	release:	SimpleD_release, 
}; 
 
 
static int __init HW_SimpleD_init(void) 
{ 
    int ret = -ENODEV; 
    int delay ; 
	 
	ret = devfs_register_chrdev(SimpleD_MAJOR, "SimpleD", &SimpleD_ops);  		 
 
	if( ret < 0 ){ 
		printk (" s3c2410: init_module failed with %d\n", ret);	 
		return ret; 
	} 
	else 
		{ 
		printk(KERN_INFO" S3c2410 SimpleD register success!!!\n"); 
		; 
		} 
 
	dev_handle = devfs_register( NULL, "SimpleD", DEVFS_FL_DEFAULT, 
                        96, 0, S_IFCHR, &SimpleD_ops, NULL); 
 
	//!!!!!!!!!!!!!! 
      
 
    return ret; 
} 
 
 
int __init s3c2410_SimpleD_init(void) { 
    int  ret = -ENODEV; 
 
    ret = HW_SimpleD_init(); 
    if (ret) 
      return ret; 
    return 0; 
} 
int init_module() 
{ 
	s3c2410_SimpleD_init(); 
} 
void cleanup_module() 
{ 
 
}