diff options
author | Thomas Hommel <Thomas.Hommel@gefanuc.com> | 2008-12-18 04:31:40 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-07 13:00:09 -0500 |
commit | 42c65396d4f10f25bdab13f8e2f33fe63fa94418 (patch) | |
tree | 93f80a6dbeff07c8b6b3de1a608108f5eeac1e22 | |
parent | 281b064f237205053ef1874ffc77b9211265af4c (diff) |
USB: isp1760: don't auto disable Port1 on ISP1761
There is no need to disable port 1 on ISP1761. That port could
be used as an OTG port which would require a different init
sequence. However we don't have OTG support (yet) so we can use
it as a normal USB port.
This patch allows port 1 to be used a normal Port on the ISP1761.
Signed-off-by: Thomas Hommel <Thomas.Hommel@gefanuc.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/usb/host/isp1760-hcd.c | 13 | ||||
-rw-r--r-- | drivers/usb/host/isp1760-hcd.h | 1 | ||||
-rw-r--r-- | drivers/usb/host/isp1760-if.c | 3 |
3 files changed, 6 insertions, 11 deletions
diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c index 8017f1cf78e2..b899f1a59c26 100644 --- a/drivers/usb/host/isp1760-hcd.c +++ b/drivers/usb/host/isp1760-hcd.c | |||
@@ -435,14 +435,13 @@ static int isp1760_hc_setup(struct usb_hcd *hcd) | |||
435 | 435 | ||
436 | /* | 436 | /* |
437 | * PORT 1 Control register of the ISP1760 is the OTG control | 437 | * PORT 1 Control register of the ISP1760 is the OTG control |
438 | * register on ISP1761. | 438 | * register on ISP1761. Since there is no OTG or device controller |
439 | * support in this driver, we use port 1 as a "normal" USB host port on | ||
440 | * both chips. | ||
439 | */ | 441 | */ |
440 | if (!(priv->devflags & ISP1760_FLAG_ISP1761) && | 442 | isp1760_writel(PORT1_POWER | PORT1_INIT2, |
441 | !(priv->devflags & ISP1760_FLAG_PORT1_DIS)) { | 443 | hcd->regs + HC_PORT1_CTRL); |
442 | isp1760_writel(PORT1_POWER | PORT1_INIT2, | 444 | mdelay(10); |
443 | hcd->regs + HC_PORT1_CTRL); | ||
444 | mdelay(10); | ||
445 | } | ||
446 | 445 | ||
447 | priv->hcs_params = isp1760_readl(hcd->regs + HC_HCSPARAMS); | 446 | priv->hcs_params = isp1760_readl(hcd->regs + HC_HCSPARAMS); |
448 | 447 | ||
diff --git a/drivers/usb/host/isp1760-hcd.h b/drivers/usb/host/isp1760-hcd.h index 4377277667d9..a9daea587962 100644 --- a/drivers/usb/host/isp1760-hcd.h +++ b/drivers/usb/host/isp1760-hcd.h | |||
@@ -135,7 +135,6 @@ typedef void (packet_enqueue)(struct usb_hcd *hcd, struct isp1760_qh *qh, | |||
135 | * indicate the most "atypical" case, so that a devflags of 0 is | 135 | * indicate the most "atypical" case, so that a devflags of 0 is |
136 | * a sane default configuration. | 136 | * a sane default configuration. |
137 | */ | 137 | */ |
138 | #define ISP1760_FLAG_PORT1_DIS 0x00000001 /* Port 1 disabled */ | ||
139 | #define ISP1760_FLAG_BUS_WIDTH_16 0x00000002 /* 16-bit data bus width */ | 138 | #define ISP1760_FLAG_BUS_WIDTH_16 0x00000002 /* 16-bit data bus width */ |
140 | #define ISP1760_FLAG_OTG_EN 0x00000004 /* Port 1 supports OTG */ | 139 | #define ISP1760_FLAG_OTG_EN 0x00000004 /* Port 1 supports OTG */ |
141 | #define ISP1760_FLAG_ANALOG_OC 0x00000008 /* Analog overcurrent */ | 140 | #define ISP1760_FLAG_ANALOG_OC 0x00000008 /* Analog overcurrent */ |
diff --git a/drivers/usb/host/isp1760-if.c b/drivers/usb/host/isp1760-if.c index 25453066fda5..4cf7ca428b33 100644 --- a/drivers/usb/host/isp1760-if.c +++ b/drivers/usb/host/isp1760-if.c | |||
@@ -60,9 +60,6 @@ static int of_isp1760_probe(struct of_device *dev, | |||
60 | if (of_device_is_compatible(dp, "nxp,usb-isp1761")) | 60 | if (of_device_is_compatible(dp, "nxp,usb-isp1761")) |
61 | devflags |= ISP1760_FLAG_ISP1761; | 61 | devflags |= ISP1760_FLAG_ISP1761; |
62 | 62 | ||
63 | if (of_get_property(dp, "port1-disable", NULL) != NULL) | ||
64 | devflags |= ISP1760_FLAG_PORT1_DIS; | ||
65 | |||
66 | /* Some systems wire up only 16 of the 32 data lines */ | 63 | /* Some systems wire up only 16 of the 32 data lines */ |
67 | prop = of_get_property(dp, "bus-width", NULL); | 64 | prop = of_get_property(dp, "bus-width", NULL); |
68 | if (prop && *prop == 16) | 65 | if (prop && *prop == 16) |