diff options
Diffstat (limited to 'drivers/usb/host/sl811-hcd.c')
-rw-r--r-- | drivers/usb/host/sl811-hcd.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c index 5b22a4d1c9e4..3b867a8af7b2 100644 --- a/drivers/usb/host/sl811-hcd.c +++ b/drivers/usb/host/sl811-hcd.c | |||
@@ -51,6 +51,7 @@ | |||
51 | #include <asm/irq.h> | 51 | #include <asm/irq.h> |
52 | #include <asm/system.h> | 52 | #include <asm/system.h> |
53 | #include <asm/byteorder.h> | 53 | #include <asm/byteorder.h> |
54 | #include <asm/unaligned.h> | ||
54 | 55 | ||
55 | #include "../core/hcd.h" | 56 | #include "../core/hcd.h" |
56 | #include "sl811.h" | 57 | #include "sl811.h" |
@@ -719,10 +720,10 @@ retry: | |||
719 | /* port status seems weird until after reset, so | 720 | /* port status seems weird until after reset, so |
720 | * force the reset and make khubd clean up later. | 721 | * force the reset and make khubd clean up later. |
721 | */ | 722 | */ |
722 | if (sl811->stat_insrmv & 1) | 723 | if (irqstat & SL11H_INTMASK_RD) |
723 | sl811->port1 |= 1 << USB_PORT_FEAT_CONNECTION; | ||
724 | else | ||
725 | sl811->port1 &= ~(1 << USB_PORT_FEAT_CONNECTION); | 724 | sl811->port1 &= ~(1 << USB_PORT_FEAT_CONNECTION); |
725 | else | ||
726 | sl811->port1 |= 1 << USB_PORT_FEAT_CONNECTION; | ||
726 | 727 | ||
727 | sl811->port1 |= 1 << USB_PORT_FEAT_C_CONNECTION; | 728 | sl811->port1 |= 1 << USB_PORT_FEAT_C_CONNECTION; |
728 | 729 | ||
@@ -1272,12 +1273,12 @@ sl811h_hub_control( | |||
1272 | sl811h_hub_descriptor(sl811, (struct usb_hub_descriptor *) buf); | 1273 | sl811h_hub_descriptor(sl811, (struct usb_hub_descriptor *) buf); |
1273 | break; | 1274 | break; |
1274 | case GetHubStatus: | 1275 | case GetHubStatus: |
1275 | *(__le32 *) buf = cpu_to_le32(0); | 1276 | put_unaligned_le32(0, buf); |
1276 | break; | 1277 | break; |
1277 | case GetPortStatus: | 1278 | case GetPortStatus: |
1278 | if (wIndex != 1) | 1279 | if (wIndex != 1) |
1279 | goto error; | 1280 | goto error; |
1280 | *(__le32 *) buf = cpu_to_le32(sl811->port1); | 1281 | put_unaligned_le32(sl811->port1, buf); |
1281 | 1282 | ||
1282 | #ifndef VERBOSE | 1283 | #ifndef VERBOSE |
1283 | if (*(u16*)(buf+2)) /* only if wPortChange is interesting */ | 1284 | if (*(u16*)(buf+2)) /* only if wPortChange is interesting */ |