ARM: s3c24xx: Switch to common GPIO controlled UDC pullup implementation
authorLars-Peter Clausen <lars@metafoo.de>
Mon, 7 Mar 2011 07:42:00 +0000 (08:42 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 7 Mar 2011 20:23:22 +0000 (12:23 -0800)
Currently all boards using the s3c2410_udc driver use a GPIO to control the
state of the pullup, as a result the same code is reimplemented in each board
This patch changes these boards to use the common implementation for GPIO
controlled pullup in the UDC driver.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/arm/mach-s3c2410/mach-h1940.c
arch/arm/mach-s3c2410/mach-n30.c
arch/arm/mach-s3c2412/mach-smdk2413.c
arch/arm/mach-s3c2440/mach-gta02.c
arch/arm/mach-s3c2440/mach-mini2440.c
arch/arm/mach-s3c2440/mach-rx1950.c

index 1a81fe12ccd77287efe159adbc52e03056a467eb..1e93f176c1de8ebe0d9bd9231f109630bc8cb70a 100644 (file)
@@ -162,29 +162,10 @@ struct gpio_chip h1940_latch_gpiochip = {
        .get                    = h1940_gpiolib_latch_get,
 };
 
-static void h1940_udc_pullup(enum s3c2410_udc_cmd_e cmd)
-{
-       printk(KERN_DEBUG "udc: pullup(%d)\n",cmd);
-
-       switch (cmd)
-       {
-               case S3C2410_UDC_P_ENABLE :
-                       gpio_set_value(H1940_LATCH_USB_DP, 1);
-                       break;
-               case S3C2410_UDC_P_DISABLE :
-                       gpio_set_value(H1940_LATCH_USB_DP, 0);
-                       break;
-               case S3C2410_UDC_P_RESET :
-                       break;
-               default:
-                       break;
-       }
-}
-
 static struct s3c2410_udc_mach_info h1940_udc_cfg __initdata = {
-       .udc_command            = h1940_udc_pullup,
        .vbus_pin               = S3C2410_GPG(5),
        .vbus_pin_inverted      = 1,
+       .pullup_pin             = H1940_LATCH_USB_DP,
 };
 
 static struct s3c2410_ts_mach_info h1940_ts_cfg __initdata = {
@@ -475,9 +456,6 @@ static void __init h1940_init(void)
        gpio_direction_output(H1940_LATCH_LCD_P4, 0);
        gpio_direction_output(H1940_LATCH_MAX1698_nSHUTDOWN, 0);
 
-       gpio_request(H1940_LATCH_USB_DP, "USB pullup");
-       gpio_direction_output(H1940_LATCH_USB_DP, 0);
-
        gpio_request(H1940_LATCH_SD_POWER, "SD power");
        gpio_direction_output(H1940_LATCH_SD_POWER, 0);
 
index 271b9aa6d40a35ecf971543790f5c44182d11f9d..66f44440d5d38f35e1b0ee677c7654a085f0e811 100644 (file)
@@ -84,26 +84,10 @@ static struct s3c2410_uartcfg n30_uartcfgs[] = {
        },
 };
 
-static void n30_udc_pullup(enum s3c2410_udc_cmd_e cmd)
-{
-       switch (cmd) {
-       case S3C2410_UDC_P_ENABLE :
-               gpio_set_value(S3C2410_GPB(3), 1);
-               break;
-       case S3C2410_UDC_P_DISABLE :
-               gpio_set_value(S3C2410_GPB(3), 0);
-               break;
-       case S3C2410_UDC_P_RESET :
-               break;
-       default:
-               break;
-       }
-}
-
 static struct s3c2410_udc_mach_info n30_udc_cfg __initdata = {
-       .udc_command            = n30_udc_pullup,
        .vbus_pin               = S3C2410_GPG(1),
        .vbus_pin_inverted      = 0,
+       .pullup_pin             = S3C2410_GPB(3),
 };
 
 static struct gpio_keys_button n30_buttons[] = {
@@ -596,9 +580,6 @@ static void __init n30_init(void)
 
                platform_add_devices(n35_devices, ARRAY_SIZE(n35_devices));
        }
-
-       WARN_ON(gpio_request(S3C2410_GPB(3), "udc pup"));
-       gpio_direction_output(S3C2410_GPB(3), 0);
 }
 
 MACHINE_START(N30, "Acer-N30")
index 8e5758bdd666ee18bc12a419a0240e738d296e13..834cfb61bcfe654b3da30468ee56f2f3c027ae33 100644 (file)
@@ -78,28 +78,9 @@ static struct s3c2410_uartcfg smdk2413_uartcfgs[] __initdata = {
        }
 };
 
-static void smdk2413_udc_pullup(enum s3c2410_udc_cmd_e cmd)
-{
-       printk(KERN_DEBUG "udc: pullup(%d)\n",cmd);
-
-       switch (cmd)
-       {
-               case S3C2410_UDC_P_ENABLE :
-                       gpio_set_value(S3C2410_GPF(2), 1);
-                       break;
-               case S3C2410_UDC_P_DISABLE :
-                       gpio_set_value(S3C2410_GPF(2), 0);
-                       break;
-               case S3C2410_UDC_P_RESET :
-                       break;
-               default:
-                       break;
-       }
-}
-
 
 static struct s3c2410_udc_mach_info smdk2413_udc_cfg __initdata = {
-       .udc_command            = smdk2413_udc_pullup,
+       .pullup_pin = S3C2410_GPF(2),
 };
 
 
@@ -133,9 +114,6 @@ static void __init smdk2413_machine_init(void)
 {      /* Turn off suspend on both USB ports, and switch the
         * selectable USB port to USB device mode. */
 
-       WARN_ON(gpio_request(S3C2410_GPF(2), "udc pull"));
-       gpio_direction_output(S3C2410_GPF(2), 0);
-
        s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST |
                              S3C2410_MISCCR_USBSUSPND0 |
                              S3C2410_MISCCR_USBSUSPND1, 0x0);
index 9f2c14ec71819f89b7f327f5c97bf70370211b92..37405d9abe322f262b1141fbffefbfec1df0e710 100644 (file)
@@ -455,28 +455,10 @@ static struct s3c2410_platform_nand __initdata gta02_nand_info = {
 };
 
 
-static void gta02_udc_command(enum s3c2410_udc_cmd_e cmd)
-{
-       switch (cmd) {
-       case S3C2410_UDC_P_ENABLE:
-               pr_debug("%s S3C2410_UDC_P_ENABLE\n", __func__);
-               gpio_direction_output(GTA02_GPIO_USB_PULLUP, 1);
-               break;
-       case S3C2410_UDC_P_DISABLE:
-               pr_debug("%s S3C2410_UDC_P_DISABLE\n", __func__);
-               gpio_direction_output(GTA02_GPIO_USB_PULLUP, 0);
-               break;
-       case S3C2410_UDC_P_RESET:
-               pr_debug("%s S3C2410_UDC_P_RESET\n", __func__);
-               /* FIXME: Do something here. */
-       }
-}
-
 /* Get PMU to set USB current limit accordingly. */
-static struct s3c2410_udc_mach_info gta02_udc_cfg = {
+static struct s3c2410_udc_mach_info gta02_udc_cfg __initdata = {
        .vbus_draw      = gta02_udc_vbus_draw,
-       .udc_command    = gta02_udc_command,
-
+       .pullup_pin = GTA02_GPIO_USB_PULLUP,
 };
 
 /* USB */
index f62bb4c793bdd6e226d6651d1e704b3b1459b94f..d80f129bca94bdec20618dc4d91603aeabc79cf8 100644 (file)
@@ -97,26 +97,8 @@ static struct s3c2410_uartcfg mini2440_uartcfgs[] __initdata = {
 
 /* USB device UDC support */
 
-static void mini2440_udc_pullup(enum s3c2410_udc_cmd_e cmd)
-{
-       pr_debug("udc: pullup(%d)\n", cmd);
-
-       switch (cmd) {
-               case S3C2410_UDC_P_ENABLE :
-                       gpio_set_value(S3C2410_GPC(5), 1);
-                       break;
-               case S3C2410_UDC_P_DISABLE :
-                       gpio_set_value(S3C2410_GPC(5), 0);
-                       break;
-               case S3C2410_UDC_P_RESET :
-                       break;
-               default:
-                       break;
-       }
-}
-
 static struct s3c2410_udc_mach_info mini2440_udc_cfg __initdata = {
-       .udc_command            = mini2440_udc_pullup,
+       .pullup_pin = S3C2410_GPC(5),
 };
 
 
@@ -644,10 +626,6 @@ static void __init mini2440_init(void)
        s3c2410_gpio_setpin(S3C2410_GPB(1), 0);
        s3c_gpio_cfgpin(S3C2410_GPB(1), S3C2410_GPIO_INPUT);
 
-       /* Make sure the D+ pullup pin is output */
-       WARN_ON(gpio_request(S3C2410_GPC(5), "udc pup"));
-       gpio_direction_output(S3C2410_GPC(5), 0);
-
        /* mark the key as input, without pullups (there is one on the board) */
        for (i = 0; i < ARRAY_SIZE(mini2440_buttons); i++) {
                s3c_gpio_setpull(mini2440_buttons[i].gpio, S3C_GPIO_PULL_UP);
index eab6ae50683c6b42da97e3e0a677b7d87560c60f..86bbc233b31c7dbc18ba62e8eb4334b204d1d9d9 100644 (file)
@@ -566,26 +566,10 @@ static struct s3c2410_platform_nand rx1950_nand_info = {
        .sets = rx1950_nand_sets,
 };
 
-static void rx1950_udc_pullup(enum s3c2410_udc_cmd_e cmd)
-{
-       switch (cmd) {
-       case S3C2410_UDC_P_ENABLE:
-               gpio_direction_output(S3C2410_GPJ(5), 1);
-               break;
-       case S3C2410_UDC_P_DISABLE:
-               gpio_direction_output(S3C2410_GPJ(5), 0);
-               break;
-       case S3C2410_UDC_P_RESET:
-               break;
-       default:
-               break;
-       }
-}
-
 static struct s3c2410_udc_mach_info rx1950_udc_cfg __initdata = {
-       .udc_command = rx1950_udc_pullup,
        .vbus_pin = S3C2410_GPG(5),
        .vbus_pin_inverted = 1,
+       .pullup_pin = S3C2410_GPJ(5),
 };
 
 static struct s3c2410_ts_mach_info rx1950_ts_cfg __initdata = {
@@ -750,9 +734,6 @@ static void __init rx1950_init_machine(void)
                                                S3C2410_MISCCR_USBSUSPND0 |
                                                S3C2410_MISCCR_USBSUSPND1, 0x0);
 
-       WARN_ON(gpio_request(S3C2410_GPJ(5), "UDC pullup"));
-       gpio_direction_output(S3C2410_GPJ(5), 0);
-
        /* mmc power is disabled by default */
        WARN_ON(gpio_request(S3C2410_GPJ(1), "MMC power"));
        gpio_direction_output(S3C2410_GPJ(1), 0);