dm6441的gpio驅動
平臺:Ti
GPIO是嵌入式系統(tǒng)最簡單、最常用的資源了,比如點亮LED,控制蜂鳴器,輸出高低電平,檢測按鍵,等等。
由于硬件資源的原因,DM6441并不是GPIO管腳就是純粹的GPIO腳,GPIO管腳和其他一些標準接口復用相同的引腳,
比如SPI和GPIO復用,I2C和GPIO復用等,到底是使用GPIO還是其他接口,在初始化的時候,都需要對PINMUX0和PINMUX1
兩個寄存器進行設置(見DM6441的芯片p72),而軟件設置則在Montavista linux-2.6.18_pro500/arch/arm/mach-davinci
目錄下mux_cfg.c和對應的include/asm/arch-davinci/mux.h里。由數(shù)據(jù)手冊知道gpio5,6,7默認是gpio功能。
對mux_cfg.c的分析
對MUX_CFG()的參數(shù)解釋
#include
#include
#include
#include
#include
#ifdef CONFIG_DAVINCI_MUX
struct pin_config __initdata_or_module davinci_dm644x_pins[] = {
MUX_CFG("HDIREN",
MUX_CFG("ATAEN",
MUX_CFG("MSTK",
MUX_CFG("I2C",
MUX_CFG("MCBSP",
MUX_CFG("PWM0",
MUX_CFG("PWM1",
MUX_CFG("PWM2",
MUX_CFG("VLINQEN",
MUX_CFG("VLINQWD",
MUX_CFG("EMACEN",
MUX_CFG("GPIO3V",
MUX_CFG("GPIO0",
MUX_CFG("GPIO3",
MUX_CFG("GPIO43_44",
MUX_CFG("GPIO46_47",
MUX_CFG("RGB666",
MUX_CFG("LOEEN",
MUX_CFG("LFLDEN",
};
內核里提供的接口在linux-2.6.18_pro500/arch/arm/mach-davinci目錄下的gpio.c,這個是寄存器級的驅動。對這個文件的相關操作
見http://blog.csdn.net/langxing0508/archive/2008/12/25/3604043.aspx
說得不錯,這里表示感謝。
下面是我的gpio驅動程序
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include
#define DEVICE_NAME "dm644x_gpios"
#define GPIO_MAJOR 199
#define ZX_GPIO5
#define ZX_GPIO6
#define ZX_GPIO7
static int davinci_dm644x_gpio_open(struct inode *inode, struct file *file)
{
//
//
//
//
}
static int gpio_release(struct inode *inode,struct file *filp)
{
}
評論