Subversion Repositories freemyipod

Rev

Rev 891 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 891 Rev 923
Line 362... Line 362...
362
                        }
362
                        }
363
                    }
363
                    }
364
                }
364
                }
365
                union usb_endpoint_number epnum = { .direction = USB_ENDPOINT_DIRECTION_IN, .number = ep };
365
                union usb_endpoint_number epnum = { .direction = USB_ENDPOINT_DIRECTION_IN, .number = ep };
366
                int bytesleft = data->core->inep_regs[ep].dieptsiz.b.xfersize;
366
                int bytesleft = data->core->inep_regs[ep].dieptsiz.b.xfersize;
-
 
367
                data->core->inep_regs[ep].diepint = epints;
367
                if (epints.b.timeout) usb_handle_timeout(instance, epnum, bytesleft);
368
                if (epints.b.timeout) usb_handle_timeout(instance, epnum, bytesleft);
368
                if (epints.b.xfercompl) usb_handle_xfer_complete(instance, epnum, bytesleft);
369
                if (epints.b.xfercompl) usb_handle_xfer_complete(instance, epnum, bytesleft);
369
                data->core->inep_regs[ep].diepint = epints;
-
 
370
            }
370
            }
371
    }
371
    }
372
 
372
 
373
    if (gintsts.b.outepintr)
373
    if (gintsts.b.outepintr)
374
    {
374
    {
Line 376... Line 376...
376
        int ep;
376
        int ep;
377
        for (ep = 0; ep < 16; ep++)
377
        for (ep = 0; ep < 16; ep++)
378
            if (daint.ep.out & (1 << ep))
378
            if (daint.ep.out & (1 << ep))
379
            {
379
            {
380
                union synopsysotg_doepintn epints = data->core->outep_regs[ep].doepint;
380
                union synopsysotg_doepintn epints = data->core->outep_regs[ep].doepint;
-
 
381
                data->core->outep_regs[ep].doepint = epints;
381
                union usb_endpoint_number epnum = { .direction = USB_ENDPOINT_DIRECTION_OUT, .number = ep };
382
                union usb_endpoint_number epnum = { .direction = USB_ENDPOINT_DIRECTION_OUT, .number = ep };
382
                if (epints.b.setup)
383
                if (epints.b.setup)
383
                {
384
                {
384
                    if (data->use_dma) invalidate_dcache(instance->buffer, sizeof(instance->buffer));
385
                    if (data->use_dma) invalidate_dcache(instance->buffer, sizeof(instance->buffer));
385
                    synopsysotg_flush_in_endpoint(instance, ep);
386
                    synopsysotg_flush_in_endpoint(instance, ep);
Line 388... Line 389...
388
                else if (epints.b.xfercompl)
389
                else if (epints.b.xfercompl)
389
                {
390
                {
390
                    int bytesleft = data->core->inep_regs[ep].dieptsiz.b.xfersize;
391
                    int bytesleft = data->core->inep_regs[ep].dieptsiz.b.xfersize;
391
                    usb_handle_xfer_complete(instance, epnum, bytesleft);
392
                    usb_handle_xfer_complete(instance, epnum, bytesleft);
392
                }
393
                }
393
                data->core->outep_regs[ep].doepint = epints;
-
 
394
            }
394
            }
395
    }
395
    }
396
 
396
 
397
    data->core->gregs.gintsts = gintsts;
397
    data->core->gregs.gintsts = gintsts;
398
}
398
}