Index of /soc

README.html

Rockbox USB-Stack

 

 

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