void s5p_gpio_set_drv(struct s5p_gpio_bank *bank, int gpio, int mode) { unsigned int value; value = readl(&bank->drv); value &= ~DRV_MASK(gpio); switch (mode) { case EXYNOS_GPIO_DRV_1X: case EXYNOS_GPIO_DRV_2X: case EXYNOS_GPIO_DRV_3X: case EXYNOS_GPIO_DRV_4X: value |= DRV_SET(gpio, mode); break; default: return; } writel(value, &bank->drv); }
void gpio_set_drv(int gpio, int mode) { unsigned int value; struct gpio_bank *bank = gpio_get_bank(gpio); value = read32(&bank->drv); value &= ~DRV_MASK(GPIO_BIT(gpio)); switch (mode) { case GPIO_DRV_1X: case GPIO_DRV_2X: case GPIO_DRV_3X: case GPIO_DRV_4X: value |= DRV_SET(GPIO_BIT(gpio), mode); break; default: return; } write32(&bank->drv, value); }