}
 
 #if (defined(UD) && defined(LBR))
-       if (gpio_request(UD, KBUILD_MODNAME)) {
+       if (gpio_request_one(UD, GPIOF_OUT_INIT_LOW, KBUILD_MODNAME)) {
                pr_err("requesting GPIO %d failed\n", UD);
                return -EBUSY;
        }
 
-       if (gpio_request(LBR, KBUILD_MODNAME)) {
+       if (gpio_request_one(LBR, GPIOF_OUT_INIT_HIGH, KBUILD_MODNAME)) {
                pr_err("requesting GPIO %d failed\n", LBR);
                gpio_free(UD);
                return -EBUSY;
        }
-
-       gpio_direction_output(UD, 0);
-       gpio_direction_output(LBR, 1);
-
 #endif
 
-       if (gpio_request(MOD, KBUILD_MODNAME)) {
+       if (gpio_request_one(MOD, GPIOF_OUT_INIT_HIGH, KBUILD_MODNAME)) {
                pr_err("requesting GPIO %d failed\n", MOD);
 #if (defined(UD) && defined(LBR))
                gpio_free(LBR);
                return -EBUSY;
        }
 
-       gpio_direction_output(MOD, 1);
-
        SSYNC();
        return 0;
 }
 
        u16 eppi_req_18[] = EPPI0_18;
        u16 disp = fbi->mach_info->disp;
 
-       if (gpio_request(disp, DRIVER_NAME)) {
+       if (gpio_request_one(disp, GPIOF_OUT_INIT_HIGH, DRIVER_NAME)) {
                printk(KERN_ERR "Requesting GPIO %d failed\n", disp);
                return -EFAULT;
        }
                }
        }
 
-       gpio_direction_output(disp, 1);
-
        return 0;
 }
 
 
         * Drive PPI_FS3 Low
         */
        if (ANOMALY_05000400) {
-               int ret = gpio_request(P_IDENT(P_PPI0_FS3), "PPI_FS3");
+               int ret = gpio_request_one(P_IDENT(P_PPI0_FS3),
+                                       GPIOF_OUT_INIT_LOW, "PPI_FS3");
                if (ret)
                        return ret;
-               gpio_direction_output(P_IDENT(P_PPI0_FS3), 0);
        }
 
        if (ppi16)
        }
 
        if (info->disp_info->use_bl) {
-               ret = gpio_request(info->disp_info->gpio_bl, "LQ035 Backlight");
+               ret = gpio_request_one(info->disp_info->gpio_bl,
+                                       GPIOF_OUT_INIT_LOW, "LQ035 Backlight");
 
                if (ret) {
                        dev_err(&pdev->dev, "failed to request GPIO %d\n",
                                info->disp_info->gpio_bl);
                        goto out9;
                }
-               gpio_direction_output(info->disp_info->gpio_bl, 0);
        }
 
        ret = register_framebuffer(fbinfo);
 
 
        /* Workaround "PPI Does Not Start Properly In Specific Mode" */
        if (ANOMALY_05000400) {
-               if (gpio_request(P_IDENT(P_PPI0_FS3), "PPI0_FS3")) {
+               ret = gpio_request_one(P_IDENT(P_PPI0_FS3), GPIOF_OUT_INIT_LOW,
+                                       "PPI0_FS3")
+               if (ret) {
                        dev_err(&client->dev, "PPI0_FS3 GPIO request failed\n");
                        ret = -EBUSY;
                        goto out_8;
                }
-               gpio_direction_output(P_IDENT(P_PPI0_FS3), 0);
        }
 
        if (peripheral_request_list(ppi_pins, DRIVER_NAME)) {
 
                ret = 0;
                goto uninit;
        }
-       ret = gpio_request(gpio, "vsync");
+       ret = gpio_request_one(gpio, GPIOF_IN, "vsync");
        if (ret)
                goto err_request_gpio_failed;
 
-       ret = gpio_direction_input(gpio);
-       if (ret)
-               goto err_gpio_direction_input_failed;
-
        ret = irq = gpio_to_irq(gpio);
        if (ret < 0)
                goto err_get_irq_num_failed;
        free_irq(gpio_to_irq(gpio), panel->client_data);
 err_request_irq_failed:
 err_get_irq_num_failed:
-err_gpio_direction_input_failed:
        gpio_free(gpio);
 err_request_gpio_failed:
        return ret;
 
                ret = 0;
                goto uninit;
        }
-       ret = gpio_request(gpio, "vsync");
+       ret = gpio_request_one(gpio, GPIOF_IN, "vsync");
        if (ret)
                goto err_request_gpio_failed;
 
-       ret = gpio_direction_input(gpio);
-       if (ret)
-               goto err_gpio_direction_input_failed;
-
        ret = irq = gpio_to_irq(gpio);
        if (ret < 0)
                goto err_get_irq_num_failed;
        free_irq(gpio_to_irq(gpio), panel);
 err_request_irq_failed:
 err_get_irq_num_failed:
-err_gpio_direction_input_failed:
        gpio_free(gpio);
 err_request_gpio_failed:
        return ret;
 
 #include <linux/module.h>
 #include <linux/platform_device.h>
 
-#include <asm/gpio.h>
+#include <linux/gpio.h>
 #include "omapfb.h"
 
 #define MODULE_NAME    "omapfb-lcd_h3"
 {
        int r = 0;
 
-       if (gpio_request(14, "lcd_en0")) {
+       /* configure GPIO(14, 15) as outputs */
+       if (gpio_request_one(14, GPIOF_OUT_INIT_LOW, "lcd_en0")) {
                pr_err(MODULE_NAME ": can't request GPIO 14\n");
                r = -1;
                goto exit;
        }
-       if (gpio_request(15, "lcd_en1")) {
+       if (gpio_request_one(15, GPIOF_OUT_INIT_LOW, "lcd_en1")) {
                pr_err(MODULE_NAME ": can't request GPIO 15\n");
                gpio_free(14);
                r = -1;
                goto exit;
        }
-       /* configure GPIO(14, 15) as outputs */
-       gpio_direction_output(14, 0);
-       gpio_direction_output(15, 0);
 exit:
        return r;
 }
 
        if (panel_data->use_ext_te) {
                int gpio = panel_data->ext_te_gpio;
 
-               r = gpio_request(gpio, "taal irq");
+               r = gpio_request_one(gpio, GPIOF_IN, "taal irq");
                if (r) {
                        dev_err(&dssdev->dev, "GPIO request failed\n");
                        goto err_gpio;
                }
 
-               gpio_direction_input(gpio);
-
                r = request_irq(gpio_to_irq(gpio), taal_te_isr,
                                IRQF_TRIGGER_RISING,
                                "taal vsync", dssdev);
 
        }
 
        if (gpio_is_valid(nreset_gpio)) {
-               ret = gpio_request(nreset_gpio, "lcd reset");
+               ret = gpio_request_one(nreset_gpio, GPIOF_OUT_INIT_LOW,
+                                       "lcd reset");
                if (ret < 0) {
                        dev_err(&dssdev->dev, "couldn't request reset GPIO\n");
                        goto fail_gpio_req;
                }
-
-               ret = gpio_direction_output(nreset_gpio, 0);
-               if (ret < 0) {
-                       dev_err(&dssdev->dev, "couldn't set GPIO direction\n");
-                       goto fail_gpio_direction;
-               }
        }
 
        ret = sysfs_create_group(&dssdev->dev.kobj, &tpo_td043_attr_group);
 
        return 0;
 
-fail_gpio_direction:
-       gpio_free(nreset_gpio);
 fail_gpio_req:
        regulator_put(tpo_td043->vcc_reg);
 fail_regulator: