static int nand_dev_ready(struct omap_nand_platform_data *data)
 {
-       return omap_get_gpio_datain(P2_NAND_RB_GPIO_PIN);
+       return gpio_get_value(P2_NAND_RB_GPIO_PIN);
 }
 
 static struct omap_uart_config fsample_uart_config __initdata = {
 
 #if defined(CONFIG_OMAP_IR) || defined(CONFIG_OMAP_IR_MODULE)
 static int h2_transceiver_mode(struct device *dev, int state)
 {
-       if (state & IR_SIRMODE)
-               omap_set_gpio_dataout(H2_IRDA_FIRSEL_GPIO_PIN, 0);
-       else    /* MIR/FIR */
-               omap_set_gpio_dataout(H2_IRDA_FIRSEL_GPIO_PIN, 1);
-
+       /* SIR when low, else MIR/FIR when HIGH */
+       gpio_set_value(H2_IRDA_FIRSEL_GPIO_PIN, !(state & IR_SIRMODE));
        return 0;
 }
 #endif
 
 static int h2_nand_dev_ready(struct omap_nand_platform_data *data)
 {
-       return omap_get_gpio_datain(H2_NAND_RB_GPIO_PIN);
+       return gpio_get_value(H2_NAND_RB_GPIO_PIN);
 }
 
 static void __init h2_init(void)
 
 
 static int nand_dev_ready(struct omap_nand_platform_data *data)
 {
-       return omap_get_gpio_datain(H3_NAND_RB_GPIO_PIN);
+       return gpio_get_value(H3_NAND_RB_GPIO_PIN);
 }
 
 static void __init h3_init(void)
 
 {
        if (pdata->nreset_gpio != -1) {
                printk(KERN_INFO "shutdown LCD\n");
-               omap_set_gpio_dataout(pdata->nreset_gpio, 0);
+               gpio_set_value(pdata->nreset_gpio, 0);
                msleep(120);
        }
 }
 
 static int ads7846_get_pendown_state(void)
 {
-       return !omap_get_gpio_datain(ADS7846_PENDOWN_GPIO);
+       return !gpio_get_value(ADS7846_PENDOWN_GPIO);
 }
 
 static struct ads7846_platform_data nokia770_ads7846_platform_data __initdata = {
        /* Turn on codec */
        aic23_power_up();
 
-       if (omap_get_gpio_datain(HEADPHONE_GPIO))
+       if (gpio_get_value(HEADPHONE_GPIO))
                /* HP not connected, turn on amplifier */
-               omap_set_gpio_dataout(AMPLIFIER_CTRL_GPIO, 1);
+               gpio_set_value(AMPLIFIER_CTRL_GPIO, 1);
        else
                /* HP connected, do not turn on amplifier */
                printk("HP connected\n");
 static void nokia770_audio_pwr_down(void)
 {
        /* Turn off amplifier */
-       omap_set_gpio_dataout(AMPLIFIER_CTRL_GPIO, 0);
+       gpio_set_value(AMPLIFIER_CTRL_GPIO, 0);
 
        /* Turn off codec: schedule delayed work */
        schedule_delayed_work(&codec_power_down_work, HZ / 20); /* 50ms */
 
 {
        int charging, batt, hi, lo, mid;
 
-       charging = !omap_get_gpio_datain(PALMTE_DC_GPIO);
+       charging = !gpio_get_value(PALMTE_DC_GPIO);
        batt = battery[0];
        if (charging)
                batt -= 60;
 {
        if (state) {
                /* Headphones connected, disable speaker */
-               omap_set_gpio_dataout(PALMTE_SPEAKER_GPIO, 0);
+               gpio_set_value(PALMTE_SPEAKER_GPIO, 0);
                printk(KERN_INFO "PM: speaker off\n");
        } else {
                /* Headphones unplugged, re-enable speaker */
-               omap_set_gpio_dataout(PALMTE_SPEAKER_GPIO, 1);
+               gpio_set_value(PALMTE_SPEAKER_GPIO, 1);
                printk(KERN_INFO "PM: speaker on\n");
        }
 }
 
 
 static int palmtt_get_pendown_state(void)
 {
-       return !omap_get_gpio_datain(6);
+       return !gpio_get_value(6);
 }
 
 static const struct ads7846_platform_data palmtt_ts_info = {
 
 static int
 palmz71_get_pendown_state(void)
 {
-       return !omap_get_gpio_datain(PALMZ71_PENIRQ_GPIO);
+       return !gpio_get_value(PALMZ71_PENIRQ_GPIO);
 }
 
 static const struct ads7846_platform_data palmz71_ts_info = {
 static irqreturn_t
 palmz71_powercable(int irq, void *dev_id)
 {
-       if (omap_get_gpio_datain(PALMZ71_USBDETECT_GPIO)) {
+       if (gpio_get_value(PALMZ71_USBDETECT_GPIO)) {
                printk(KERN_INFO "PM: Power cable connected\n");
                set_irq_type(OMAP_GPIO_IRQ(PALMZ71_USBDETECT_GPIO),
                                IRQ_TYPE_EDGE_FALLING);
 {
        if (early) {
                /* Only set GPIO1 so we have a working serial */
-               omap_set_gpio_dataout(1, 1);
+               gpio_set_value(1, 1);
                omap_set_gpio_direction(1, 0);
        } else {
                /* Set MMC/SD host WP pin as input */
 
 
 static int nand_dev_ready(struct omap_nand_platform_data *data)
 {
-       return omap_get_gpio_datain(P2_NAND_RB_GPIO_PIN);
+       return gpio_get_value(P2_NAND_RB_GPIO_PIN);
 }
 
 static struct omap_uart_config perseus2_uart_config __initdata = {
 
        omap_set_gpio_direction(11, 0);/* gpio11 -> output */
        omap_set_gpio_direction(15, 0);/* gpio15 -> output */
        /* set GPIO data */
-       omap_set_gpio_dataout(1, 1);/*A_IRDA_OFF = 1 */
-       omap_set_gpio_dataout(11, 0);/*A_SWITCH = 0 */
-       omap_set_gpio_dataout(15, 0);/*A_USB_ON = 0 */
+       gpio_set_value(1, 1);/*A_IRDA_OFF = 1 */
+       gpio_set_value(11, 0);/*A_SWITCH = 0 */
+       gpio_set_value(15, 0);/*A_USB_ON = 0 */
 
 }
 /*----------------------------------------*/
 
        /* smc91x reset */
        omap_request_gpio(7);
        omap_set_gpio_direction(7, 0);
-       omap_set_gpio_dataout(7, 1);
+       gpio_set_value(7, 1);
        udelay(2);      /* wait at least 100ns */
-       omap_set_gpio_dataout(7, 0);
+       gpio_set_value(7, 0);
        mdelay(50);     /* 50ms until PHY ready */
        /* smc91x interrupt pin */
        omap_request_gpio(8);
        /* 16C554 reset*/
        omap_request_gpio(6);
        omap_set_gpio_direction(6, 0);
-       omap_set_gpio_dataout(6, 0);
+       gpio_set_value(6, 0);
        /* 16C554 interrupt pins */
        omap_request_gpio(12);
        omap_request_gpio(13);
 void voiceblue_wdt_enable(void)
 {
        omap_set_gpio_direction(0, 0);
-       omap_set_gpio_dataout(0, 0);
-       omap_set_gpio_dataout(0, 1);
-       omap_set_gpio_dataout(0, 0);
+       gpio_set_value(0, 0);
+       gpio_set_value(0, 1);
+       gpio_set_value(0, 0);
        wdt_gpio_state = 0;
 }
 
 void voiceblue_wdt_disable(void)
 {
-       omap_set_gpio_dataout(0, 0);
-       omap_set_gpio_dataout(0, 1);
-       omap_set_gpio_dataout(0, 0);
+       gpio_set_value(0, 0);
+       gpio_set_value(0, 1);
+       gpio_set_value(0, 0);
        omap_set_gpio_direction(0, 1);
 }
 
                return;
 
        wdt_gpio_state = !wdt_gpio_state;
-       omap_set_gpio_dataout(0, wdt_gpio_state);
+       gpio_set_value(0, wdt_gpio_state);
 }
 
 void voiceblue_reset(void)
 
                /* all leds off during suspend or shutdown */
 
                if (! machine_is_omap_perseus2()) {
-                       omap_set_gpio_dataout(GPIO_TIMER, 0);
-                       omap_set_gpio_dataout(GPIO_IDLE, 0);
+                       gpio_set_value(GPIO_TIMER, 0);
+                       gpio_set_value(GPIO_IDLE, 0);
                }
 
                __raw_writew(~0, &fpga->leds);
                if (machine_is_omap_perseus2())
                        hw_led_state ^= H2P2_DBG_FPGA_P2_LED_TIMER;
                else {
-                       omap_set_gpio_dataout(GPIO_TIMER, led_state & LED_TIMER_ON);
+                       gpio_set_value(GPIO_TIMER, led_state & LED_TIMER_ON);
                        goto done;
                }
 
                if (machine_is_omap_perseus2())
                        hw_led_state |= H2P2_DBG_FPGA_P2_LED_IDLE;
                else {
-                       omap_set_gpio_dataout(GPIO_IDLE, 1);
+                       gpio_set_value(GPIO_IDLE, 1);
                        goto done;
                }
 
                if (machine_is_omap_perseus2())
                        hw_led_state &= ~H2P2_DBG_FPGA_P2_LED_IDLE;
                else {
-                       omap_set_gpio_dataout(GPIO_IDLE, 0);
+                       gpio_set_value(GPIO_IDLE, 0);
                        goto done;
                }
 
 
                green = 1;
        /* else both sides are disabled */
 
-       omap_set_gpio_dataout(GPIO_LED_GREEN, green);
-       omap_set_gpio_dataout(GPIO_LED_RED, red);
+       gpio_set_value(GPIO_LED_GREEN, green);
+       gpio_set_value(GPIO_LED_RED, red);
 }
 
 #endif
 
        omap_cfg_reg(P21_242X_GPIO12);
        omap_request_gpio(12);
        omap_set_gpio_direction(12, 0);         /* OUT */
-       omap_set_gpio_dataout(12, 0);
+       gpio_set_value(12, 0);
 }
 
 static void __init omap_apollon_init(void)
 
                /* all leds off during suspend or shutdown */
 
                if (!(machine_is_omap_perseus2() || machine_is_omap_h4())) {
-                       omap_set_gpio_dataout(GPIO_TIMER, 0);
-                       omap_set_gpio_dataout(GPIO_IDLE, 0);
+                       gpio_set_value(GPIO_TIMER, 0);
+                       gpio_set_value(GPIO_IDLE, 0);
                }
 
                __raw_writew(~0, &fpga->leds);
                if (machine_is_omap_perseus2() || machine_is_omap_h4())
                        hw_led_state ^= H2P2_DBG_FPGA_P2_LED_TIMER;
                else {
-                       omap_set_gpio_dataout(GPIO_TIMER,
+                       gpio_set_value(GPIO_TIMER,
                                        led_state & LED_TIMER_ON);
                        goto done;
                }
                if (machine_is_omap_perseus2() || machine_is_omap_h4())
                        hw_led_state &= ~H2P2_DBG_FPGA_P2_LED_IDLE;
                else {
-                       omap_set_gpio_dataout(GPIO_IDLE, 1);
+                       gpio_set_value(GPIO_IDLE, 1);
                        goto done;
                }
 
                if (machine_is_omap_perseus2() || machine_is_omap_h4())
                        hw_led_state |= H2P2_DBG_FPGA_P2_LED_IDLE;
                else {
-                       omap_set_gpio_dataout(GPIO_IDLE, 0);
+                       gpio_set_value(GPIO_IDLE, 0);
                        goto done;
                }
 
 
        __raw_writel(l, reg);
 }
 
-void omap_set_gpio_dataout(int gpio, int enable)
-{
-       struct gpio_bank *bank;
-       unsigned long flags;
-
-       if (check_gpio(gpio) < 0)
-               return;
-       bank = get_gpio_bank(gpio);
-       spin_lock_irqsave(&bank->lock, flags);
-       _set_gpio_dataout(bank, get_gpio_index(gpio), enable);
-       spin_unlock_irqrestore(&bank->lock, flags);
-}
-
-int omap_get_gpio_datain(int gpio)
+static int __omap_get_gpio_datain(int gpio)
 {
        struct gpio_bank *bank;
        void __iomem *reg;
 
 static int gpio_get(struct gpio_chip *chip, unsigned offset)
 {
-       return omap_get_gpio_datain(chip->base + offset);
+       return __omap_get_gpio_datain(chip->base + offset);
 }
 
 static int gpio_output(struct gpio_chip *chip, unsigned offset, int value)
 EXPORT_SYMBOL(omap_request_gpio);
 EXPORT_SYMBOL(omap_free_gpio);
 EXPORT_SYMBOL(omap_set_gpio_direction);
-EXPORT_SYMBOL(omap_set_gpio_dataout);
-EXPORT_SYMBOL(omap_get_gpio_datain);
 
 arch_initcall(omap_gpio_sysinit);
 
                                continue;
 
                        irq = bank->virtual_irq_start + j;
-                       value = omap_get_gpio_datain(gpio);
+                       value = gpio_get_value(gpio);
                        is_in = gpio_is_input(bank, mask);
 
                        if (bank_is_mpuio(bank))
 
 extern int omap_request_gpio(int gpio);
 extern void omap_free_gpio(int gpio);
 extern void omap_set_gpio_direction(int gpio, int is_input);
-extern void omap_set_gpio_dataout(int gpio, int enable);
-extern int omap_get_gpio_datain(int gpio);
 extern void omap2_gpio_prepare_for_retention(void);
 extern void omap2_gpio_resume_after_retention(void);
 extern void omap_set_gpio_debounce(int gpio, int enable);
 
 
                INIT_COMPLETION(c->irq_done);
                if (c->gpio_irq) {
-                       result = omap_get_gpio_datain(c->gpio_irq);
+                       result = gpio_get_value(c->gpio_irq);
                        if (result == -1) {
                                ctrl = read_reg(c, ONENAND_REG_CTRL_STATUS);
                                intr = read_reg(c, ONENAND_REG_INTERRUPT);