+static int s3c_gpio_direction(unsigned gpio, uint8_t dir)
+{
+ uint32_t addr = s3c_gpio_get_bank_addr(gpio);
+ const uint32_t mask = 0x3 << ((gpio & 0xf) << 1);
+ const uint32_t dirm = dir << ((gpio & 0xf) << 1);
+
+ if (addr == 0xffffffff)
+ return -EINVAL;
+
+ clrsetbits_le32(addr | S3C_GPIO_CON, mask, dirm);
+ return 0;
+}
+