|
@@ -22,6 +22,7 @@
|
|
|
#include <linux/timer.h>
|
|
|
#include <linux/init.h>
|
|
|
#include <linux/device.h>
|
|
|
+#include <linux/gpio.h>
|
|
|
#include <linux/io.h>
|
|
|
|
|
|
#include <asm/mach/arch.h>
|
|
@@ -30,7 +31,6 @@
|
|
|
|
|
|
#include <mach/bast-map.h>
|
|
|
#include <mach/bast-irq.h>
|
|
|
-#include <mach/regs-gpio.h>
|
|
|
|
|
|
#include <mach/hardware.h>
|
|
|
#include <asm/irq.h>
|
|
@@ -54,9 +54,9 @@ usb_simtec_powercontrol(int port, int to)
|
|
|
power_state[port] = to;
|
|
|
|
|
|
if (power_state[0] && power_state[1])
|
|
|
- s3c2410_gpio_setpin(S3C2410_GPB(4), 0);
|
|
|
+ gpio_set_value(S3C2410_GPB(4), 0);
|
|
|
else
|
|
|
- s3c2410_gpio_setpin(S3C2410_GPB(4), 1);
|
|
|
+ gpio_set_value(S3C2410_GPB(4), 1);
|
|
|
}
|
|
|
|
|
|
static irqreturn_t
|
|
@@ -64,7 +64,7 @@ usb_simtec_ocirq(int irq, void *pw)
|
|
|
{
|
|
|
struct s3c2410_hcd_info *info = pw;
|
|
|
|
|
|
- if (s3c2410_gpio_getpin(S3C2410_GPG(10)) == 0) {
|
|
|
+ if (gpio_get_value(S3C2410_GPG(10)) == 0) {
|
|
|
pr_debug("usb_simtec: over-current irq (oc detected)\n");
|
|
|
s3c2410_usb_report_oc(info, 3);
|
|
|
} else {
|
|
@@ -107,10 +107,27 @@ static struct s3c2410_hcd_info usb_simtec_info = {
|
|
|
|
|
|
int usb_simtec_init(void)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
printk("USB Power Control, (c) 2004 Simtec Electronics\n");
|
|
|
- s3c_device_usb.dev.platform_data = &usb_simtec_info;
|
|
|
|
|
|
- s3c2410_gpio_cfgpin(S3C2410_GPB(4), S3C2410_GPIO_OUTPUT);
|
|
|
- s3c2410_gpio_setpin(S3C2410_GPB(4), 1);
|
|
|
+ ret = gpio_request(S3C2410_GPB(4), "USB power control");
|
|
|
+ if (ret < 0) {
|
|
|
+ pr_err("%s: failed to get GPB4\n", __func__);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = gpio_request(S3C2410_GPG(10), "USB overcurrent");
|
|
|
+ if (ret < 0) {
|
|
|
+ pr_err("%s: failed to get GPG10\n", __func__);
|
|
|
+ gpio_free(S3C2410_GPB(4));
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* turn power on */
|
|
|
+ gpio_direction_output(S3C2410_GPB(4), 1);
|
|
|
+ gpio_direction_input(S3C2410_GPG(10));
|
|
|
+
|
|
|
+ s3c_device_usb.dev.platform_data = &usb_simtec_info;
|
|
|
return 0;
|
|
|
}
|