Subversion Repositories freemyipod

Rev

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

Rev 240 Rev 265
Line 68... Line 68...
68
    }
68
    }
69
    DIEPCTL0 = 0x8800;  /* EP0 IN ACTIVE NEXT=1 */
69
    DIEPCTL0 = 0x8800;  /* EP0 IN ACTIVE NEXT=1 */
70
    DOEPCTL0 = 0x8000;  /* EP0 OUT ACTIVE */
70
    DOEPCTL0 = 0x8000;  /* EP0 OUT ACTIVE */
71
    DOEPTSIZ0 = 0x20080040;  /* EP0 OUT Transfer Size:
71
    DOEPTSIZ0 = 0x20080040;  /* EP0 OUT Transfer Size:
72
                                64 Bytes, 1 Packet, 1 Setup Packet */
72
                                64 Bytes, 1 Packet, 1 Setup Packet */
73
    DOEPDMA0 = (uint32_t)&ctrlreq;
73
    DOEPDMA0 = &ctrlreq;
74
    DOEPCTL0 |= 0x84000000;  /* EP0 OUT ENABLE CLEARNAK */
74
    DOEPCTL0 |= 0x84000000;  /* EP0 OUT ENABLE CLEARNAK */
75
    if (reinit)
75
    if (reinit)
76
    {
76
    {
77
        /* The size is getting set to zero, because we don't know
77
        /* The size is getting set to zero, because we don't know
78
           whether we are Full Speed or High Speed at this stage */
78
           whether we are Full Speed or High Speed at this stage */
Line 245... Line 245...
245
                }
245
                }
246
                /* Make sure EP0 OUT is set up to accept the next request */
246
                /* Make sure EP0 OUT is set up to accept the next request */
247
                if (!i)
247
                if (!i)
248
                {
248
                {
249
                    DOEPTSIZ0 = 0x20080040;
249
                    DOEPTSIZ0 = 0x20080040;
250
                    DOEPDMA0 = (uint32_t)&ctrlreq;
250
                    DOEPDMA0 = &ctrlreq;
251
                    DOEPCTL0 |= 0x84000000;
251
                    DOEPCTL0 |= 0x84000000;
252
                }
252
                }
253
                DOEPINT(i) = epints;
253
                DOEPINT(i) = epints;
254
            }
254
            }
255
 
255
 
Line 269... Line 269...
269
    int blocksize = usb_drv_port_speed() ? 512 : 64;
269
    int blocksize = usb_drv_port_speed() ? 512 : 64;
270
    int packets = (length + blocksize - 1) / blocksize;
270
    int packets = (length + blocksize - 1) / blocksize;
271
    if (!length)
271
    if (!length)
272
    {
272
    {
273
        DIEPTSIZ(ep) = 1 << 19;  /* one empty packet */
273
        DIEPTSIZ(ep) = 1 << 19;  /* one empty packet */
274
        DIEPDMA(ep) = 0x10000000;  /* dummy address */
274
        DIEPDMA(ep) = NULL;  /* dummy address */
275
    }
275
    }
276
    else
276
    else
277
    {
277
    {
278
        DIEPTSIZ(ep) = length | (packets << 19);
278
        DIEPTSIZ(ep) = length | (packets << 19);
279
        DIEPDMA(ep) = (uint32_t)ptr;
279
        DIEPDMA(ep) = ptr;
280
    }
280
    }
281
    clean_dcache();
281
    clean_dcache();
282
    DIEPCTL(ep) |= 0x84000000;  /* EPx OUT ENABLE CLEARNAK */
282
    DIEPCTL(ep) |= 0x84000000;  /* EPx OUT ENABLE CLEARNAK */
283
}
283
}
284
 
284
 
Line 291... Line 291...
291
    int blocksize = usb_drv_port_speed() ? 512 : 64;
291
    int blocksize = usb_drv_port_speed() ? 512 : 64;
292
    int packets = (length + blocksize - 1) / blocksize;
292
    int packets = (length + blocksize - 1) / blocksize;
293
    if (!length)
293
    if (!length)
294
    {
294
    {
295
        DOEPTSIZ(ep) = 1 << 19;  /* one empty packet */
295
        DOEPTSIZ(ep) = 1 << 19;  /* one empty packet */
296
        DOEPDMA(ep) = 0x10000000;  /* dummy address */
296
        DOEPDMA(ep) = NULL;  /* dummy address */
297
    }
297
    }
298
    else
298
    else
299
    {
299
    {
300
        DOEPTSIZ(ep) = length | (packets << 19);
300
        DOEPTSIZ(ep) = length | (packets << 19);
301
        DOEPDMA(ep) = (uint32_t)ptr;
301
        DOEPDMA(ep) = ptr;
302
    }
302
    }
303
    clean_dcache();
303
    clean_dcache();
304
    DOEPCTL(ep) |= 0x84000000;  /* EPx OUT ENABLE CLEARNAK */
304
    DOEPCTL(ep) |= 0x84000000;  /* EPx OUT ENABLE CLEARNAK */
305
}
305
}
306
 
306