太子妃花事记 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);