Name Last modified Size Description
Parent Directory -
MCIMX31RM.pdf 08-Mar-2013 08:43 14M
lang_fix.patch 08-Mar-2013 08:43 2.0K
linked_list.patch 08-Mar-2013 08:43 11K
old/ 08-Mar-2013 08:43 -
soc002.jpg 08-Mar-2013 08:43 170K
used_regs_from_origi..> 08-Mar-2013 08:43 5.7K
using_usec_timer_usb..> 08-Mar-2013 08:43 75K
At the moment the basic stack design is done and the first driver is being developed. The operations a device controller will "export" to the attached device driver is only a basic and fast design. It will be done "right" when tx works.
TX Problem
How does/should sending work?
A device driver calls queue/send rountine with an usb_request and an endpoint as arguments. The arcotg dcd has no a big buffer in IRAM, where we copy the data to send. Keep in mind that dcd controller can only access data IRAM. Then a so called Transfer Descriptor is setup and gets connected to the used Queue Head.
Now we tell the controller that we want to PRIME an endpoint and the data should be send now. For some reason this does not take place :(
Register Dump before PRIMING
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F200F00
PORTSC1 0x28000205
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x00003D6F
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
Register Dump before PRIMING
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F200F00
PORTSC1 0x28000605
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x00002720
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
LOGF output
arcotg_dcd: stop
suspend_int
irq_src [0x00000100]
stalling ep0
result from driver: -95
usb serial: request
pass it to driver...
-> r: set address
-> t: standard
-b 0x0
-b 0x0
-b 0x61
-b 0x5
-b 0x0
-usb request-
setup_int
irq_src [0x00000001]
arcotg: Controller reset
reset_int
port_change_int
irq_src [0x00000044]
stalling ep0
result from driver: -95
usb serial: request
pass it to driver...
-> r: set address
-> t: standard
-b 0x0
-b 0x0
-b 0x60
-b 0x5
-b 0x0
-usb request-
setup_int
irq_src [0x00000001]
arcotg: Controller reset
reset_int
port_change_int
irq_src [0x00000044]
arcotg: Controller reset
reset_int
port_change_int
irq_src [0x00000044]
stalling ep0
result from driver: -116
usb_arcotg_queue: TIMEOUT
bla: 128
-end dump-
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F202F00
PORTSC1 0x28000205
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x00003B92
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
-reg dump-
priming...
-end dump-
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F200F00
PORTSC1 0x28000205
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x000011E0
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
-reg dump-
try tp send 18 byte
queuing response
usb serial: request
pass it to driver...
-> e: get device descriptor
-> r: get descriptor
-> t: standard
-b 0x40
-b 0x0
-b 0x100
-b 0x6
-b 0x80
-usb request-
setup_int
irq_src [0x00000001]
arcotg: Controller reset
reset_int
port_change_int
irq_src [0x00000044]
stalling ep0
result from driver: -116
usb_arcotg_queue: TIMEOUT
bla: 128
-end dump-
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F200F00
PORTSC1 0x28000605
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x00000B21
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
-reg dump-
priming...
-end dump-
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F200F00
PORTSC1 0x28000205
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x00002170
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
-reg dump-
try tp send 18 byte
queuing response
usb serial: request
pass it to driver...
-> e: get device descriptor
-> r: get descriptor
-> t: standard
-b 0x40
-b 0x0
-b 0x100
-b 0x6
-b 0x80
-usb request-
setup_int
irq_src [0x00000001]
arcotg: Controller reset
reset_int
port_change_int
irq_src [0x00000044]
arcotg: Controller reset
reset_int
port_change_int
irq_src [0x00000044]
stalling ep0
result from driver: -116
usb_arcotg_queue: TIMEOUT
bla: 128
-end dump-
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F200F00
PORTSC1 0x28000205
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x00001791
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
-reg dump-
priming...
-end dump-
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F200F00
PORTSC1 0x28000205
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x00002DDF
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
-reg dump-
try tp send 18 byte
queuing response
usb serial: request
pass it to driver...
-> e: get device descriptor
-> r: get descriptor
-> t: standard
-b 0x40
-b 0x0
-b 0x100
-b 0x6
-b 0x80
-usb request-
setup_int
irq_src [0x00000001]
arcotg: Controller reset
reset_int
port_change_int
irq_src [0x00000044]
stalling ep0
result from driver: -116
usb_arcotg_queue: TIMEOUT
bla: 128
-end dump-
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F200F00
PORTSC1 0x28000605
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x00002720
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
-reg dump-
priming...
-end dump-
ENDPTCTRL0 0x00800080
ENDPTCOMPLETE 0x00000000
ENDPTPRIME 0x00000000
ENDPTSETUPSTAT 0x00000001
USBMODE 0x00000002
OTGSC 0x5F200F00
PORTSC1 0x28000205
ASYNCTTSTS 0x00000000
ENDPOINTLISTADDR 0x40002000
DEVICEADDR 0x00000000
FRINDEX 0x00003D6F
USBINTR 0x00000157
USBSTS 0x00000080
USBCMD 0x00080001
-reg dump-
try tp send 18 byte
queuing response
usb serial: request
pass it to driver...
-> e: get device descriptor
-> r: get descriptor
-> t: standard
-b 0x40
-b 0x0
-b 0x100
-b 0x6
-b 0x80
-usb request-
setup_int
irq_src [0x00000001]
arcotg: Controller reset
reset_int
port_change_int
irq_src [0x00000044]
USB: TagCache
pcm_rec_dma_stop
pcm_close_recording
suspend_int
irq_src [0x00000100]
usb serial: bind
looking for driver
arcotg_dcd: start
qhaddr: 40002000
arcotg_dcd: init
-> type: 1
usb_controller_select
automatic mode