#ifndef RWI2C_C
#define RWI2C_C
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define RWI2C_DEVICE_NAME "rwi2c"
/* 打开设备方法 */
static int rwi2c_open(struct inode *inode, struct file *filp)
{
printk(KERN_ALERT"NY::rwi2c_open.\n");
return 0;
}
/* 设备文件释放时调用,空实现 */
static int rwi2c_release(struct inode *inode, struct file *filp)
{
printk(KERN_ALERT"NY::rwi2c_release.\n");
return 0;
}
/* 读取设备的寄存器val值 */
static ssize_t rwi2c_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
{
ssize_t err = 0;
printk(KERN_ALERT"NY::rwi2c_read.\n");
return err;
}
/* 写设备的寄存器val的值 */
static ssize_t rwi2c_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos)
{
ssize_t err = 0;
printk(KERN_ALERT"NY::rwi2c_write.\n");
return err;
}
/* 传统的设备文件操作方法表 */
static struct file_operations rwi2c_fops = {
.owner = THIS_MODULE,
.open = rwi2c_open,
.release = rwi2c_release,
.read = rwi2c_read,
.write = rwi2c_write,
};
static struct miscdevice rwi2c_misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = RWI2C_DEVICE_NAME,
.fops = &rwi2c_fops,
};
static int __init rwi2c_init(void)
{
int ret= 0;
printk(KERN_ALERT"Initializing rwi2c device.\n");
ret = misc_register(&rwi2c_misc);
printk(KERN_ALERT"Succedded to initialize rwi2c device.\n");
return ret;
}
module_init(rwi2c_init);
static void __exit rwi2c_exit(void)
{
misc_deregister(&rwi2c_misc);
}
module_exit(rwi2c_exit);
MODULE_AUTHOR("nova_niuyi@126.com>");
MODULE_DESCRIPTION("ROCKCHIP I2C DEV Driver");
MODULE_LICENSE("GPL");
MODULE_ALIAS("i2c:rwi2c");
原作者:niuyimail