Changeset 3013
- Timestamp:
- Jun 19, 2012 4:17:19 AM (12 months ago)
- Location:
- dev/usb2/hcd
- Files:
-
- 2 edited
-
device.fth (modified) (4 diffs)
-
ehci/probe.fth (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
dev/usb2/hcd/device.fth
r3011 r3013 392 392 \ Executed in root hub node context 393 393 : get-str-descriptors ( -- ) 394 language ( lang )395 dup d # 14 dev-desc@ v$-desc-buf get-string to /v$-desc-buf396 dup d # 15 dev-desc@ d$-desc-buf get-string to /d$-desc-buf397 d # 16 dev-desc@ s$-desc-buf get-string to /s$-desc-buf394 language ( lang ) 395 dup dev-desc-buf d# 14 + c@ v$-desc-buf get-string to /v$-desc-buf 396 dup dev-desc-buf d# 15 + c@ d$-desc-buf get-string to /d$-desc-buf 397 dev-desc-buf d# 16 + c@ s$-desc-buf get-string to /s$-desc-buf 398 398 ; 399 399 … … 401 401 : refresh-desc-bufs ( dev -- ) 402 402 set-target 403 dev-desc-buf d# 18 get-dev-desc to /dev-desc-buf\ Refresh dev-desc-buf404 cfg-desc-buf 0 get-cfg-desc to /cfg-desc-buf\ Refresh cfg-desc-buf403 dev-desc-buf 12 get-dev-desc to /dev-desc-buf \ Refresh dev-desc-buf 404 cfg-desc-buf 0 get-cfg-desc to /cfg-desc-buf \ Refresh cfg-desc-buf 405 405 get-str-descriptors 406 406 ; 407 407 408 408 \ Executed in root hub node context 409 : get-initial-descriptors ( -- ) 410 \ Re-read the full device descriptor to pick up the vendor info 411 dev-desc-buf d# 18 get-dev-desc drop ( ) 412 cfg-desc-buf 0 get-cfg-desc to /cfg-desc-buf ( ) 409 : get-initial-descriptors ( dev -- ) 410 dev-desc-buf /pipe0 get-dev-desc if ( dev ) 411 dev-desc-buf 7 + c@ 0 rot di-maxpayload! ( ) 412 else ( dev ) 413 drop ( ) 414 then ( ) 415 cfg-desc-buf 0 get-cfg-desc to /cfg-desc-buf ( ) 413 416 ; 414 417 415 418 \ Executed in hub node context (root hub or subordinate hub) - creates new child nodes via (make-device-node) 416 419 : make-device-node ( port dev -- ) 417 " get-initial-descriptors" my-self $call-method ( port dev )420 dup " get-initial-descriptors" my-self $call-method ( port dev ) 418 421 /cfg-desc-buf 0= if 2drop exit then ( port dev ) 419 422 asso-class? if 1 else cfg-desc-buf 4 + c@ then ( port dev #intf ) … … 441 444 ; 442 445 443 : get-initial-dev-desc ( dev -- )444 dev-desc-buf d# 18 erase ( dev )445 dev-desc-buf d# 64 get-dev-desc 0= if ( dev )446 dev-desc-buf /pipe0 get-dev-desc 0= if ( dev )447 drop exit448 then449 then450 7 dev-desc@ 0 rot di-maxpayload! ( )451 ;452 453 446 \ Executed in the root hub node context 454 447 : setup-new-node ( port speed hub-port hub-dev -- true | port dev xt false ) … … 461 454 462 455 0 set-target ( port dev ) \ Address it as device 0 463 464 \ Some devices (e.g. Lexar USB-to-SD and at least one USB FLASH drive) fail 465 \ on set-address unless you first read the device descriptor from address 0. 466 dup get-initial-dev-desc ( port dev ) 467 456 over reset-port ( port dev ) \ Some devices want to be reset here 468 457 dup set-address if ( port dev ) \ Assign it usb addr dev 469 458 ." Retrying with a delay" cr -
dev/usb2/hcd/ehci/probe.fth
r3011 r3013 8 8 9 9 : make-root-hub-node ( port -- ) 10 \ Some devices (e.g. Lexar USB-to-SD) fail unless you get the cfg desc from device 0 first 10 11 0 set-target \ First address it as device 0 ( port ) 11 12 port-speed 0 di-speed! \ Use high speed for getting the device descriptor 12 dup reset-port ( port ) 13 dev-desc-buf h# 40 get-cfg-desc drop ( port ) 14 13 15 port-speed ( port speed ) 14 16 … … 17 19 18 20 \ Execute setup-new-node in root context and make-device-node in hub node context 19 setup-new-node if execute then ( )21 setup-new-node if execute then ( ) 20 22 ; 21 23
Note: See TracChangeset
for help on using the changeset viewer.
