diff options
author | Felipe Balbi <balbi@ti.com> | 2011-09-30 03:58:51 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-10-04 13:25:56 -0400 |
commit | dc1c70a774b6fe3744b330d58bb9cf802f7eac89 (patch) | |
tree | e12ab3ac678d858968799c0f22d1b89283ce2982 /drivers/usb/dwc3/gadget.c | |
parent | aabb70752361a8b8ca44142a942a5bd133c4d304 (diff) |
usb: dwc3: convert structures into bitshifts
our parameter structures need to be written to
HW, so instead of assuming little endian, we
convert those into bit shifts.
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/dwc3/gadget.c')
-rw-r--r-- | drivers/usb/dwc3/gadget.c | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index fd1ac4dd560..fa824cfdd2e 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c | |||
@@ -158,12 +158,12 @@ int dwc3_send_gadget_ep_cmd(struct dwc3 *dwc, unsigned ep, | |||
158 | 158 | ||
159 | dev_vdbg(dwc->dev, "%s: cmd '%s' params %08x %08x %08x\n", | 159 | dev_vdbg(dwc->dev, "%s: cmd '%s' params %08x %08x %08x\n", |
160 | dep->name, | 160 | dep->name, |
161 | dwc3_gadget_ep_cmd_string(cmd), params->param0.raw, | 161 | dwc3_gadget_ep_cmd_string(cmd), params->param0, |
162 | params->param1.raw, params->param2.raw); | 162 | params->param1, params->param2); |
163 | 163 | ||
164 | dwc3_writel(dwc->regs, DWC3_DEPCMDPAR0(ep), params->param0.raw); | 164 | dwc3_writel(dwc->regs, DWC3_DEPCMDPAR0(ep), params->param0); |
165 | dwc3_writel(dwc->regs, DWC3_DEPCMDPAR1(ep), params->param1.raw); | 165 | dwc3_writel(dwc->regs, DWC3_DEPCMDPAR1(ep), params->param1); |
166 | dwc3_writel(dwc->regs, DWC3_DEPCMDPAR2(ep), params->param2.raw); | 166 | dwc3_writel(dwc->regs, DWC3_DEPCMDPAR2(ep), params->param2); |
167 | 167 | ||
168 | dwc3_writel(dwc->regs, DWC3_DEPCMD(ep), cmd | DWC3_DEPCMD_CMDACT); | 168 | dwc3_writel(dwc->regs, DWC3_DEPCMD(ep), cmd | DWC3_DEPCMD_CMDACT); |
169 | do { | 169 | do { |
@@ -257,21 +257,21 @@ static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep, | |||
257 | 257 | ||
258 | memset(¶ms, 0x00, sizeof(params)); | 258 | memset(¶ms, 0x00, sizeof(params)); |
259 | 259 | ||
260 | params.param0.depcfg.ep_type = usb_endpoint_type(desc); | 260 | params.param0 = DWC3_DEPCFG_EP_TYPE(usb_endpoint_type(desc)) |
261 | params.param0.depcfg.max_packet_size = usb_endpoint_maxp(desc); | 261 | | DWC3_DEPCFG_MAX_PACKET_SIZE(usb_endpoint_maxp(desc)) |
262 | params.param0.depcfg.burst_size = dep->endpoint.maxburst; | 262 | | DWC3_DEPCFG_BURST_SIZE(dep->endpoint.maxburst); |
263 | 263 | ||
264 | params.param1.depcfg.xfer_complete_enable = true; | 264 | params.param1 = DWC3_DEPCFG_XFER_COMPLETE_EN |
265 | params.param1.depcfg.xfer_not_ready_enable = true; | 265 | | DWC3_DEPCFG_XFER_NOT_READY_EN; |
266 | 266 | ||
267 | if (usb_endpoint_xfer_bulk(desc) && dep->endpoint.max_streams) { | 267 | if (usb_endpoint_xfer_bulk(desc) && dep->endpoint.max_streams) { |
268 | params.param1.depcfg.stream_capable = true; | 268 | params.param1 |= DWC3_DEPCFG_STREAM_CAPABLE |
269 | params.param1.depcfg.stream_event_enable = true; | 269 | | DWC3_DEPCFG_STREAM_EVENT_EN; |
270 | dep->stream_capable = true; | 270 | dep->stream_capable = true; |
271 | } | 271 | } |
272 | 272 | ||
273 | if (usb_endpoint_xfer_isoc(desc)) | 273 | if (usb_endpoint_xfer_isoc(desc)) |
274 | params.param1.depcfg.xfer_in_progress_enable = true; | 274 | params.param1 |= DWC3_DEPCFG_XFER_IN_PROGRESS_EN; |
275 | 275 | ||
276 | /* | 276 | /* |
277 | * We are doing 1:1 mapping for endpoints, meaning | 277 | * We are doing 1:1 mapping for endpoints, meaning |
@@ -279,17 +279,17 @@ static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep, | |||
279 | * so on. We consider the direction bit as part of the physical | 279 | * so on. We consider the direction bit as part of the physical |
280 | * endpoint number. So USB endpoint 0x81 is 0x03. | 280 | * endpoint number. So USB endpoint 0x81 is 0x03. |
281 | */ | 281 | */ |
282 | params.param1.depcfg.ep_number = dep->number; | 282 | params.param1 |= DWC3_DEPCFG_EP_NUMBER(dep->number); |
283 | 283 | ||
284 | /* | 284 | /* |
285 | * We must use the lower 16 TX FIFOs even though | 285 | * We must use the lower 16 TX FIFOs even though |
286 | * HW might have more | 286 | * HW might have more |
287 | */ | 287 | */ |
288 | if (dep->direction) | 288 | if (dep->direction) |
289 | params.param0.depcfg.fifo_number = dep->number >> 1; | 289 | params.param0 |= DWC3_DEPCFG_FIFO_NUMBER(dep->number >> 1); |
290 | 290 | ||
291 | if (desc->bInterval) { | 291 | if (desc->bInterval) { |
292 | params.param1.depcfg.binterval_m1 = desc->bInterval - 1; | 292 | params.param1 |= DWC3_DEPCFG_BINTERVAL_M1(desc->bInterval - 1); |
293 | dep->interval = 1 << (desc->bInterval - 1); | 293 | dep->interval = 1 << (desc->bInterval - 1); |
294 | } | 294 | } |
295 | 295 | ||
@@ -303,7 +303,7 @@ static int dwc3_gadget_set_xfer_resource(struct dwc3 *dwc, struct dwc3_ep *dep) | |||
303 | 303 | ||
304 | memset(¶ms, 0x00, sizeof(params)); | 304 | memset(¶ms, 0x00, sizeof(params)); |
305 | 305 | ||
306 | params.param0.depxfercfg.number_xfer_resources = 1; | 306 | params.param0 = DWC3_DEPXFERCFG_NUM_XFER_RES(1); |
307 | 307 | ||
308 | return dwc3_send_gadget_ep_cmd(dwc, dep->number, | 308 | return dwc3_send_gadget_ep_cmd(dwc, dep->number, |
309 | DWC3_DEPCMD_SETTRANSFRESOURCE, ¶ms); | 309 | DWC3_DEPCMD_SETTRANSFRESOURCE, ¶ms); |
@@ -719,10 +719,8 @@ static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep, u16 cmd_param, | |||
719 | } | 719 | } |
720 | 720 | ||
721 | memset(¶ms, 0, sizeof(params)); | 721 | memset(¶ms, 0, sizeof(params)); |
722 | params.param0.depstrtxfer.transfer_desc_addr_high = | 722 | params.param0 = upper_32_bits(req->trb_dma); |
723 | upper_32_bits(req->trb_dma); | 723 | params.param1 = lower_32_bits(req->trb_dma); |
724 | params.param1.depstrtxfer.transfer_desc_addr_low = | ||
725 | lower_32_bits(req->trb_dma); | ||
726 | 724 | ||
727 | if (start_new) | 725 | if (start_new) |
728 | cmd = DWC3_DEPCMD_STARTTRANSFER; | 726 | cmd = DWC3_DEPCMD_STARTTRANSFER; |