aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s3c2410/usb-simtec.c
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2009-05-18 15:15:01 -0400
committerBen Dooks <ben-linux@fluff.org>2009-05-18 15:20:27 -0400
commit7a05a2cbd317cbd16e6d1689bb1e5e208eaaba6f (patch)
treea0de074b2864ec4d7c7fcb16fa532d730276b27d /arch/arm/mach-s3c2410/usb-simtec.c
parent5233c178d4cedad0acd0eb0f24b2e09f7fafaa1c (diff)
[ARM] S3C24XX: GPIO: Change usb-simtec.c to use gpiolib.
Make arch/arm/mach-s3c2410/usb-simtec.c use gpiolib to manage gpio access. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'arch/arm/mach-s3c2410/usb-simtec.c')
-rw-r--r--arch/arm/mach-s3c2410/usb-simtec.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/arch/arm/mach-s3c2410/usb-simtec.c b/arch/arm/mach-s3c2410/usb-simtec.c
index dd45eb4a6f0c..6cd9377ddb82 100644
--- a/arch/arm/mach-s3c2410/usb-simtec.c
+++ b/arch/arm/mach-s3c2410/usb-simtec.c
@@ -22,6 +22,7 @@
22#include <linux/timer.h> 22#include <linux/timer.h>
23#include <linux/init.h> 23#include <linux/init.h>
24#include <linux/device.h> 24#include <linux/device.h>
25#include <linux/gpio.h>
25#include <linux/io.h> 26#include <linux/io.h>
26 27
27#include <asm/mach/arch.h> 28#include <asm/mach/arch.h>
@@ -30,7 +31,6 @@
30 31
31#include <mach/bast-map.h> 32#include <mach/bast-map.h>
32#include <mach/bast-irq.h> 33#include <mach/bast-irq.h>
33#include <mach/regs-gpio.h>
34 34
35#include <mach/hardware.h> 35#include <mach/hardware.h>
36#include <asm/irq.h> 36#include <asm/irq.h>
@@ -54,9 +54,9 @@ usb_simtec_powercontrol(int port, int to)
54 power_state[port] = to; 54 power_state[port] = to;
55 55
56 if (power_state[0] && power_state[1]) 56 if (power_state[0] && power_state[1])
57 s3c2410_gpio_setpin(S3C2410_GPB(4), 0); 57 gpio_set_value(S3C2410_GPB(4), 0);
58 else 58 else
59 s3c2410_gpio_setpin(S3C2410_GPB(4), 1); 59 gpio_set_value(S3C2410_GPB(4), 1);
60} 60}
61 61
62static irqreturn_t 62static irqreturn_t
@@ -64,7 +64,7 @@ usb_simtec_ocirq(int irq, void *pw)
64{ 64{
65 struct s3c2410_hcd_info *info = pw; 65 struct s3c2410_hcd_info *info = pw;
66 66
67 if (s3c2410_gpio_getpin(S3C2410_GPG(10)) == 0) { 67 if (gpio_get_value(S3C2410_GPG(10)) == 0) {
68 pr_debug("usb_simtec: over-current irq (oc detected)\n"); 68 pr_debug("usb_simtec: over-current irq (oc detected)\n");
69 s3c2410_usb_report_oc(info, 3); 69 s3c2410_usb_report_oc(info, 3);
70 } else { 70 } else {
@@ -107,10 +107,27 @@ static struct s3c2410_hcd_info usb_simtec_info = {
107 107
108int usb_simtec_init(void) 108int usb_simtec_init(void)
109{ 109{
110 int ret;
111
110 printk("USB Power Control, (c) 2004 Simtec Electronics\n"); 112 printk("USB Power Control, (c) 2004 Simtec Electronics\n");
111 s3c_device_usb.dev.platform_data = &usb_simtec_info;
112 113
113 s3c2410_gpio_cfgpin(S3C2410_GPB(4), S3C2410_GPIO_OUTPUT); 114 ret = gpio_request(S3C2410_GPB(4), "USB power control");
114 s3c2410_gpio_setpin(S3C2410_GPB(4), 1); 115 if (ret < 0) {
116 pr_err("%s: failed to get GPB4\n", __func__);
117 return ret;
118 }
119
120 ret = gpio_request(S3C2410_GPG(10), "USB overcurrent");
121 if (ret < 0) {
122 pr_err("%s: failed to get GPG10\n", __func__);
123 gpio_free(S3C2410_GPB(4));
124 return ret;
125 }
126
127 /* turn power on */
128 gpio_direction_output(S3C2410_GPB(4), 1);
129 gpio_direction_input(S3C2410_GPG(10));
130
131 s3c_device_usb.dev.platform_data = &usb_simtec_info;
115 return 0; 132 return 0;
116} 133}