Changeset 2233


Ignore:
Timestamp:
May 27, 2011, 2:16:25 AM (4 years ago)
Author:
wmb
Message:

OLPC trac #10887 - added selftest support for USB hubs.

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • cpu/arm/olpc/1.75/usb.fth

    r2075 r2233  
    1717   ' otg-set-host-mode to set-host-mode
    1818
     19   \ Port 1 on the hub (bit 0) is connected to unused pins on the
     20   \ WLAN connector, so testing it is confusing
     21   h# e  " hub-port-mask" integer-property
    1922end-package
    2023   
  • dev/usb2/device/hub/hub.fth

    r2152 r2233  
    5454   then
    5555;
     56: selftest  ( -- )
     57   ['] hub-id catch 0=  if
     58      hub-selftest-xt execute
     59   then
     60;
    5661
    5762probe-hub
  • dev/usb2/hcd/ehci/probe.fth

    r2209 r2233  
    6161;
    6262
     63: port-connected?  ( port# -- flag )  portsc@ h# 2001 and  ;
    6364: wait-connect  ( port# -- error? )
    6465   begin                            ( port# )
    65       dup portsc@ h# 2001 and  0=   ( port# unconnected? )
     66      dup port-connected?  0=       ( port# unconnected? )
    6667   while                            ( port# )
    6768      key?  if                      ( port# )
     
    157158
    158159   #testable-ports  0  ?do
    159       i portsc@ h# 2001 and  if         \ Port owned by usb 1.1 controller (2000) or device is present (1)
     160      i port-connected?  if             \ Port owned by usb 1.1 controller (2000) or device is present (1)
    160161         ." USB 2.0 port " i u. ."  in use" cr
    161162      else
    162163         diagnostic-mode?  if
    163             ." Please connect a device to USB port " i u. " !" cr
     164            ." Please connect a device to USB port " i u. cr
    164165            i wait-connect  if  true unloop exit  then
    165166         else
  • dev/usb2/hcd/ehci/qhtd.fth

    r1987 r2233  
    550550
    551551true value delay?
    552 : poll-delay  ( -- )  d# 100 " us" evaluate  ;
     552: poll-delay  ( -- )  d# 300 " us" evaluate  ;
    553553: done?  ( qh -- usberr )
    554554   delay?  if  poll-delay  then
  • dev/usb2/hcd/hcd-call.fth

    r2152 r2233  
    1414: set-target  ( device -- )
    1515   " set-target" $call-parent
    16  ;
     16;
    1717: probe-hub-xt  ( -- adr )
    18     " probe-hub-xt" $call-parent
     18   " probe-hub-xt" $call-parent
    1919;
    2020: reprobe-hub-xt  ( -- adr )
    21     " reprobe-hub-xt" $call-parent
     21   " reprobe-hub-xt" $call-parent
     22;
     23: hub-selftest-xt  ( -- adr )
     24   " hub-selftest-xt" $call-parent
    2225;
    2326: set-pipe-maxpayload  ( size len -- )
  • dev/usb2/hcd/probehub.fth

    r2209 r2233  
    1212: power-hub-port   ( port -- )  PORT_POWER  DR_PORT " set-feature" $call-parent drop  ;
    1313: reset-hub-port   ( port -- )  PORT_RESET  DR_PORT " set-feature" $call-parent drop  d# 20 ms  ;
     14\ Test modes: 1:J 2:K 3:SE0_NAK 4:Packet 5:ForceEnable
     15: test-hub-port    ( port test-mode -- )  wljoin  PORT_TEST   DR_PORT " set-feature" $call-parent drop  ;
     16: untest-hub-port  ( port -- )  PORT_TEST   DR_PORT " clear-feature" $call-parent drop  ;
    1417: clear-status-change  ( port -- )  C_PORT_CONNECTION  DR_PORT " clear-feature" $call-parent drop  ;
    1518: parent-set-target  ( dev -- )  " set-target" $call-parent  ;
     
    155158
    156159: reprobe-hub-xt  ( -- adr )  ['] do-reprobe-hub  ;
     160
     161: hub-port-connected?  ( port# -- flag )
     162   get-port-status  if  false exit  then
     163   hub-buf c@ 1 and  0<>
     164;
     1650 value hub-dev
     166: wait-hub-connect  ( port# -- error? )
     167   begin                            ( port# )
     168      dup hub-port-connected?  0=   ( port# unconnected? )
     169   while                            ( port# )
     170      key?  if                      ( port# )
     171         key h# 1b =  if            ( port# )   \ ESC aborts
     172            drop true exit          ( -- true )
     173         then                       ( port# )
     174      then                          ( port# )
     175   repeat                           ( port# )
     176   ." Device connected - probing ... "
     177   probe-setup                      ( port# )
     178   hub-dev swap ['] probe-hub-port  catch  if  ( x x  )
     179      2drop                         ( )
     180      ." Failed" cr                 ( )
     181      true                          ( true )
     182   else                             ( )
     183      ." Done" cr                   ( )
     184      false                         ( false )
     185   then                             ( error? )
     186   probe-teardown                   ( error? )
     187;
     188
     1890 value hub-test-mask
     190: hub-selftest  ( hub-dev -- error? )
     191   to hub-dev                               ( )
     192
     193   " hub-port-mask" get-inherited-property  if  ( )
     194      -1                                        ( mask )
     195   else                                         ( propval$ )
     196      get-encoded-int                           ( mask )
     197   then                                         ( mask )
     198   to hub-test-mask                             ( )
     199
     200   hub-#ports 1+  1  ?do                        ( )
     201      1  i 1-  lshift  hub-test-mask  and  if
     202         hub-dev parent-set-target              ( )
     203         i get-port-status  if                  ( )
     204            ." Get-port-status failed for hub port " i u. cr
     205         true unloop exit                       ( -- true )
     206         then                                   ( )
     207         hub-buf c@ 8 and  if   \ Connected     ( )
     208            ." Hub port " i u. ." in over current" cr
     209            true unloop exit                    ( -- true )
     210         then                                   ( )
     211         hub-buf c@ 1 and  if   \ Connected     ( )
     212            ." Hub port " i u. ." in use" cr    ( )
     213         else                                   ( )
     214            diagnostic-mode?  if                ( )
     215               ." Please connect a device to USB hub port " i u.  cr    ( )
     216               i wait-hub-connect  if  true unloop exit  then                   ( )
     217            else                                                        ( )
     218               ." Fisheye pattern out to USB hub port " i u. cr         ( )
     219               i 4 test-hub-port                                        ( )
     220               d# 2,000 ms                                              ( )
     221               i untest-hub-port                                        ( )
     222               i reset-hub-port  i power-hub-port                       ( )
     223            then                                                        ( )
     224         then                                                           ( )
     225      then                                                              ( )
     226   loop                                                                 ( )
     227   \ Mabye need to reset the entire hub here
     228   false                                                                ( false )
     229;
     230: hub-selftest-xt  ( -- xt )  ['] hub-selftest  ;
    157231
    158232headers
  • dev/usb2/pkt-data.fth

    r2152 r2233  
    737308 constant PORT_POWER
    747409 constant PORT_LOW_SPEED
    75 10 constant C_PORT_CONNECTION
    76 11 constant C_PORT_ENABLE
    77 12 constant C_PORT_SUSPEND
    78 13 constant C_PORT_OVER_CURRENT
    79 14 constant C_PORT_RESET
     75d# 16 constant C_PORT_CONNECTION
     76d# 17 constant C_PORT_ENABLE
     77d# 18 constant C_PORT_SUSPEND
     78d# 19 constant C_PORT_OVER_CURRENT
     79d# 20 constant C_PORT_RESET
     80d# 21 constant PORT_TEST
     81d# 22 constant PORT_INDICATOR
    8082
    8183\ Use tmp-l to make sure that le-l! and le-w! are atomic writes
Note: See TracChangeset for help on using the changeset viewer.