beep.c

来自「arm at91sam9261 蜂鸣器驱动程序」· C语言 代码 · 共 74 行

C
74
字号
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <asm/uaccess.h>
#include <asm/arch/io.h>
#include <asm/arch/gpio.h>
#define NAME "beep"
#define BEEP AT91_PIN_PC4 
static int major =232;
static int beep_driver_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg)
{
     // unsigned int regled1;
     // regled1=gpio_get_value(BEEP);
     // gpio_set_value(BEEP,0);
    switch(cmd)
    {
        case    0x00:	at91_set_gpio_value(BEEP,0);
    		break;     
        case    0x01:	at91_set_gpio_value(BEEP,1);
   		 break;
        default:
		break;   
    }
    return 1;
}
static int beep_driver_open(struct inode *inode,struct file *file)
{
    unsigned m =iminor(inode);
    if(m>63) return -EINVAL;
    printk("Beep driver opened!\n");
    return nonseekable_open(inode,file);
}
static int beep_driver_release(struct inode *inode,struct file *file)
{
    printk("Beep driver released!\n");
    return 0;
}
static struct file_operations beep_driver_fops = 
{
    .owner =THIS_MODULE,
    .ioctl =beep_driver_ioctl,
    .open =beep_driver_open,
    .release =beep_driver_release,
};

static int __init beep_driver_init(void) 
{
       int ret;   
       at91_set_gpio_output(BEEP,0);
       printk(KERN_ALERT "Beep modules is install\n");
       ret=register_chrdev(major,NAME,&beep_driver_fops);
        if(ret<0)
         {
              printk("unable to register beep driver!\n");
             return ret;
         }           
        return 0;
}

static void __exit beep_driver_exit(void)
{
       unregister_chrdev(major,NAME);
       printk(KERN_ALERT "Beep modules is uninstall\n");
}
module_init(beep_driver_init);
module_exit(beep_driver_exit);
MODULE_AUTHOR("arim-stone");
MODULE_DESCRIPTION("this module is used to test at91sam9261 beep");
MODULE_LICENSE("Dual BSD/GPL");  

⌨️ 快捷键说明

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