diff options
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/epautoconf.c | 8 | ||||
-rw-r--r-- | drivers/usb/gadget/s3c_udc_otg.c | 10 | ||||
-rw-r--r-- | drivers/usb/ulpi/ulpi-viewport.c | 4 | ||||
-rw-r--r-- | drivers/usb/ulpi/ulpi.c | 30 |
4 files changed, 28 insertions, 24 deletions
diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c index 18964894215..5b8776e0b70 100644 --- a/drivers/usb/gadget/epautoconf.c +++ b/drivers/usb/gadget/epautoconf.c @@ -25,6 +25,7 @@ #include <linux/usb/ch9.h> #include <asm/errno.h> #include <linux/usb/gadget.h> +#include <asm/unaligned.h> #include "gadget_chips.h" #define isdigit(c) ('0' <= (c) && (c) <= '9') @@ -127,7 +128,7 @@ static int ep_matches( * where it's an output parameter representing the full speed limit. * the usb spec fixes high speed bulk maxpacket at 512 bytes. */ - max = 0x7ff & le16_to_cpu(desc->wMaxPacketSize); + max = 0x7ff & le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)); switch (type) { case USB_ENDPOINT_XFER_INT: /* INT: limit 64 bytes full speed, 1024 high speed */ @@ -143,7 +144,8 @@ static int ep_matches( return 0; /* BOTH: "high bandwidth" works only at high speed */ - if ((desc->wMaxPacketSize & __constant_cpu_to_le16(3<<11))) { + if ((get_unaligned(&desc->wMaxPacketSize) & + __constant_cpu_to_le16(3<<11))) { if (!gadget->is_dualspeed) return 0; /* configure your hardware with enough buffering!! */ @@ -176,7 +178,7 @@ static int ep_matches( /* min() doesn't work on bitfields with gcc-3.5 */ if (size > 64) size = 64; - desc->wMaxPacketSize = cpu_to_le16(size); + put_unaligned(cpu_to_le16(size), &desc->wMaxPacketSize); } return 1; } diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 5a3ac78ff26..901fac982a4 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -40,6 +40,7 @@ #include <linux/usb/gadget.h> #include <asm/byteorder.h> +#include <asm/unaligned.h> #include <asm/io.h> #include <asm/mach-types.h> @@ -586,7 +587,8 @@ static int s3c_ep_enable(struct usb_ep *_ep, if (!_ep || !desc || ep->desc || _ep->name == ep0name || desc->bDescriptorType != USB_DT_ENDPOINT || ep->bEndpointAddress != desc->bEndpointAddress - || ep_maxpacket(ep) < le16_to_cpu(desc->wMaxPacketSize)) { + || ep_maxpacket(ep) < + le16_to_cpu(get_unaligned(&desc->wMaxPacketSize))) { DEBUG("%s: bad ep or descriptor\n", __func__); return -EINVAL; @@ -603,8 +605,8 @@ static int s3c_ep_enable(struct usb_ep *_ep, /* hardware _could_ do smaller, but driver doesn't */ if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK - && le16_to_cpu(desc->wMaxPacketSize) != ep_maxpacket(ep)) - || !desc->wMaxPacketSize) { + && le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) != + ep_maxpacket(ep)) || !get_unaligned(&desc->wMaxPacketSize)) { DEBUG("%s: bad %s maxpacket\n", __func__, _ep->name); return -ERANGE; @@ -620,7 +622,7 @@ static int s3c_ep_enable(struct usb_ep *_ep, ep->stopped = 0; ep->desc = desc; ep->pio_irqs = 0; - ep->ep.maxpacket = le16_to_cpu(desc->wMaxPacketSize); + ep->ep.maxpacket = le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)); /* Reset halt state */ s3c_udc_set_nak(ep); diff --git a/drivers/usb/ulpi/ulpi-viewport.c b/drivers/usb/ulpi/ulpi-viewport.c index fa2e004a6c9..490fb0e25d8 100644 --- a/drivers/usb/ulpi/ulpi-viewport.c +++ b/drivers/usb/ulpi/ulpi-viewport.c @@ -98,7 +98,7 @@ static int ulpi_request(u32 ulpi_viewport, u32 value) return err; } -u32 ulpi_write(u32 ulpi_viewport, u8 *reg, u32 value) +int ulpi_write(u32 ulpi_viewport, u8 *reg, u32 value) { u32 val = ULPI_RWRUN | ULPI_RWCTRL | ((u32)reg << 16) | (value & 0xff); @@ -107,7 +107,7 @@ u32 ulpi_write(u32 ulpi_viewport, u8 *reg, u32 value) u32 ulpi_read(u32 ulpi_viewport, u8 *reg) { - u32 err; + int err; u32 val = ULPI_RWRUN | ((u32)reg << 16); err = ulpi_request(ulpi_viewport, val); diff --git a/drivers/usb/ulpi/ulpi.c b/drivers/usb/ulpi/ulpi.c index 805e29d76c4..62022279922 100644 --- a/drivers/usb/ulpi/ulpi.c +++ b/drivers/usb/ulpi/ulpi.c @@ -39,8 +39,8 @@ static struct ulpi_regs *ulpi = (struct ulpi_regs *)0; static int ulpi_integrity_check(u32 ulpi_viewport) { - u32 err, val, tval = ULPI_TEST_VALUE; - int i; + u32 val, tval = ULPI_TEST_VALUE; + int err, i; /* Use the 'special' test value to check all bits */ for (i = 0; i < 2; i++, tval <<= 1) { @@ -79,9 +79,9 @@ int ulpi_init(u32 ulpi_viewport) return ulpi_integrity_check(ulpi_viewport); } -int ulpi_select_transceiver(u32 ulpi_viewport, u8 speed) +int ulpi_select_transceiver(u32 ulpi_viewport, unsigned speed) { - u8 tspeed = ULPI_FC_FULL_SPEED; + u32 tspeed = ULPI_FC_FULL_SPEED; u32 val; switch (speed) { @@ -92,8 +92,8 @@ int ulpi_select_transceiver(u32 ulpi_viewport, u8 speed) tspeed = speed; break; default: - printf("ULPI: %s: wrong transceiver speed specified, " - "falling back to full speed\n", __func__); + printf("ULPI: %s: wrong transceiver speed specified: %u, " + "falling back to full speed\n", __func__, speed); } val = ulpi_read(ulpi_viewport, &ulpi->function_ctrl); @@ -127,9 +127,9 @@ int ulpi_set_pd(u32 ulpi_viewport, int enable) return ulpi_write(ulpi_viewport, reg, val); } -int ulpi_opmode_sel(u32 ulpi_viewport, u8 opmode) +int ulpi_opmode_sel(u32 ulpi_viewport, unsigned opmode) { - u8 topmode = ULPI_FC_OPMODE_NORMAL; + u32 topmode = ULPI_FC_OPMODE_NORMAL; u32 val; switch (opmode) { @@ -140,8 +140,8 @@ int ulpi_opmode_sel(u32 ulpi_viewport, u8 opmode) topmode = opmode; break; default: - printf("ULPI: %s: wrong OpMode specified, " - "falling back to OpMode Normal\n", __func__); + printf("ULPI: %s: wrong OpMode specified: %u, " + "falling back to OpMode Normal\n", __func__, opmode); } val = ulpi_read(ulpi_viewport, &ulpi->function_ctrl); @@ -154,15 +154,15 @@ int ulpi_opmode_sel(u32 ulpi_viewport, u8 opmode) return ulpi_write(ulpi_viewport, &ulpi->function_ctrl, val); } -int ulpi_serial_mode_enable(u32 ulpi_viewport, u8 smode) +int ulpi_serial_mode_enable(u32 ulpi_viewport, unsigned smode) { switch (smode) { case ULPI_IFACE_6_PIN_SERIAL_MODE: case ULPI_IFACE_3_PIN_SERIAL_MODE: break; default: - printf("ULPI: %s: unrecognized Serial Mode specified\n", - __func__); + printf("ULPI: %s: unrecognized Serial Mode specified: %u\n", + __func__, smode); return ULPI_ERROR; } @@ -171,7 +171,7 @@ int ulpi_serial_mode_enable(u32 ulpi_viewport, u8 smode) int ulpi_suspend(u32 ulpi_viewport) { - u32 err; + int err; err = ulpi_write(ulpi_viewport, &ulpi->function_ctrl_clear, ULPI_FC_SUSPENDM); @@ -214,7 +214,7 @@ int ulpi_reset_wait(u32) __attribute__((weak, alias("__ulpi_reset_wait"))); int ulpi_reset(u32 ulpi_viewport) { - u32 err; + int err; err = ulpi_write(ulpi_viewport, &ulpi->function_ctrl_set, ULPI_FC_RESET); |