太子妃花事记 91:s3c2410_gpio_cfgpin()
来源:百度文库 编辑:偶看新闻 时间:2024/05/02 13:18:38
s3c2410_gpio_cfgpin()在gpio.c中
作用:配置相应GPIO口的功能,
如pin=S3C2410_GPB5 function=00 则:设置S3C2410_GPB5为输入口
如pin=S3C2410_GPB5 function=01 则:设置S3C2410_GPB5为输出口
如pin=S3C2410_GPB5 function=10 则:设置S3C2410_GPB5为多功能口
void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function)
{
void __iomem *base = S3C2410_GPIO_BASE(pin);
unsigned long mask;
unsigned long con;
unsigned long flags;
if (pin < S3C2410_GPIO_BANKB) {
mask = 1 << S3C2410_GPIO_OFFSET(pin);
} else {
mask = 3 << S3C2410_GPIO_OFFSET(pin)*2;
}
local_irq_save(flags);
con = __raw_readl(base + 0x00);
con &= ~mask;
con |= function;
__raw_writel(con, base + 0x00);
local_irq_restore(flags);
}
EXPORT_SYMBOL(s3c2410_gpio_cfgpin);
作用:配置相应GPIO口的功能,
如pin=S3C2410_GPB5 function=00 则:设置S3C2410_GPB5为输入口
如pin=S3C2410_GPB5 function=01 则:设置S3C2410_GPB5为输出口
如pin=S3C2410_GPB5 function=10 则:设置S3C2410_GPB5为多功能口
void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function)
{
void __iomem *base = S3C2410_GPIO_BASE(pin);
unsigned long mask;
unsigned long con;
unsigned long flags;
if (pin < S3C2410_GPIO_BANKB) {
mask = 1 << S3C2410_GPIO_OFFSET(pin);
} else {
mask = 3 << S3C2410_GPIO_OFFSET(pin)*2;
}
local_irq_save(flags);
con = __raw_readl(base + 0x00);
con &= ~mask;
con |= function;
__raw_writel(con, base + 0x00);
local_irq_restore(flags);
}
EXPORT_SYMBOL(s3c2410_gpio_cfgpin);