Changeset 3591


Ignore:
Timestamp:
Mar 6, 2013, 7:42:03 PM (2 years ago)
Author:
wmb
Message:

OLPC - WLAN driver - fixed build problem on XO-1 introduced by recent
changes to support Bluetooth.

Location:
dev
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • dev/libertas.fth

    r3569 r3591  
    4848
    4949: init-buf  ( -- )
    50    outbuf 0=  if  /outbuf " alloc-buffer" $call-parent to outbuf  then
     50   outbuf 0=  if  /outbuf alloc-buffer to outbuf  then
    5151;
    5252: free-buf  ( -- )
    53    outbuf  if  outbuf /outbuf " free-buffer" $call-parent  0 to outbuf  then
     53   outbuf  if  outbuf /outbuf free-buffer  0 to outbuf  then
    5454;
    5555
     
    176176
    177177: outbuf-out  ( -- error? )
    178    outbuf  dup >fw-len le-w@ " cmd-out" $call-parent
     178   outbuf  dup >fw-len le-w@ cmd-out
    179179;
    180180
     
    609609
    610610: check-for-rx  ( -- )
    611    " got-packet?" $call-parent  if      ( error | buf len type 0 )
     611   got-packet?  if      ( error | buf len type 0 )
    612612      0= if  process-rx  then   ( )
    613       " recycle-packet" $call-parent            ( )
     613      recycle-packet            ( )
    614614   then                         ( )
    615615;
     
    698698
    699699: reset-wlan  ( -- )
     700\   XXX wlan-reset evaluate
     701
    700702   driver-is-not-ready
    701    " reset-host-bus" $call-parent
     703   reset-host-bus
    702704;
    703705: sleep  ( -- )  reset-wlan  ;
     
    713715;
    714716
     717\ Sometimes get-hw-spec fails the first time after
     718\ the driver is reopened with the firmware still active.
     719\ This has been seen with the 8388 USB version.
     720: retry-get-hw-spec  ( -- true | adr false )
     721   get-hw-spec  dup if  drop get-hw-spec  then
     722;
     723
    715724: set-fw-params  ( -- )
    716    get-hw-spec  0=  if   ( adr )
     725   retry-get-hw-spec  0=  if   ( adr )
    717726
    718727      \ is 802.11n capable?
     
    12321241   repeat                       ( adr len scan-adr scan-len err? r: chan )
    12331242   r> drop                      ( adr len scan-adr scan-len err? )
    1234    if  4drop false exit  then   ( adr len scan-adr scan-len )
     1243   if  2drop 2drop false exit  then   ( adr len scan-adr scan-len )
    12351244   rot min >r                   ( adr scan-adr r: actual )
    12361245   swap r@ move                 ( r: actual )
     
    18001809   h# 0002  0 +pkt-data  le-w!  \ Reason code: auth no longer valid
    18011810   packet-buf  /802.11-header 2 +   wrap-802.11    ( adr len )
    1802    " data-out" $call-parent
     1811   data-out
    18031812   r> set-tx-ctrl
    18041813;
     
    21282137;
    21292138
    2130 \ Maybe handle this in parent's close method
    2131 : release-bus-resources  ( -- )  " release-bus-resources" $call-parent  ;
    2132 
    21332139: open  ( -- ok? )
    21342140   my-args parse-args
     2141   set-parent-channel
    21352142   " " set-ssid  \ Instance buffers aren't necessarily initially 0
    2136    my-space " set-address" $call-parent \ Set SDIO function number if necessary
    21372143   opencount @ 0=  if
    21382144      init-buf
     2145      setup-transport  if  free-buf false exit  then
    21392146      ds-ready to driver-state
    2140       " multifunction?" $call-parent  if  init-function  then
     2147      multifunction?  if  init-function  then
    21412148      ?make-mac-address-property  if  release-bus-resources free-buf false exit  then
    21422149      set-fw-params
     
    21702177      mac-off
    21712178      supplicant-ih ?dup  if  close-package 0 to supplicant-ih  then
    2172       " multifunction?" $call-parent  if  shutdown-function  then
     2179      multifunction?  if  shutdown-function  then
    21732180      release-bus-resources
    21742181      driver-is-not-ready
     
    21812188   tuck                                 ( actual adr len )
    21822189   wrap-ethernet                        ( actual adr' len' )
    2183    " data-out" $call-parent             ( actual )
     2190   data-out                             ( actual )
    21842191;
    21852192
    21862193: read-force  ( adr len -- actual )
    2187    " got-packet?" $call-parent  0=  if  ( adr len )
     2194   got-packet? 0=  if                   ( adr len )
    21882195      2drop  -2  exit
    21892196   then                                 ( adr len [ error | buf actual type 0 ] )
    21902197
    21912198   if   \ receive error                 ( adr len )
    2192       " recycle-packet" $call-parent    ( adr len )
     2199      recycle-packet                    ( adr len )
    21932200      2drop  -1  exit
    21942201   then                                 ( adr len buf actual type )
     
    22032210   then                                 ( actual )
    22042211
    2205    " recycle-packet" $call-parent       ( actual )
     2212   recycle-packet                       ( actual )
    22062213;
    22072214
     
    22362243   tuck   6 +pkt-data  swap  move                          ( tags-size )
    22372244   packet-buf  swap /802.11-header +  6 +   wrap-802.11    ( adr len )
    2238    " data-out" $call-parent
     2245   data-out
    22392246;
    22402247
     
    22462253   
    22472254   packet-buf  /802.11-header 6 +   wrap-802.11    ( adr len )
    2248    " data-out" $call-parent
     2255   data-out
    22492256;
    22502257
     
    22932300   begin  backlog 8 >=  while  process-mgmt-frame  repeat
    22942301   backlog 1+ to backlog
    2295    " data-out" " $call-parent                           ( len )
     2302   data-out                                             ( len )
    22962303   throttle
    22972304;
  • dev/mmc/sdhci/mv8686/loadpkg.fth

    r3569 r3591  
    14141 to my-space
    1515my-space 1 reg
     16fload ${BP}/dev/mmc/sdhci/mv8686/libertas-interface.fth         \ Marvell "Libertas" common code
    1617fload ${BP}/dev/libertas.fth                    \ Marvell "Libertas" common code
    1718finish-device
  • dev/usb2/device/wlan/fw8388.fth

    r3569 r3591  
    8585: wait-cmd-fw-dl-ack  ( -- acked? )
    8686   d# 100 0  do                 ( )
    87       got-packet?  if           ( error | buf len type 0 )
     87      bulk-in-ready?  if        ( error | buf len type 0 )
    8888         if                     ( )
    8989            false               ( acked? )
    90          else                   ( buf len type )
    91             drop cmd-fw-dl-ok?  ( acked? )
     90         else                   ( buf len )
     91            cmd-fw-dl-ok?       ( acked? )
    9292         then                   ( acked? )
    9393         recycle-packet         ( acked? )
     
    100100
    101101: download-fw-init  ( -- )
    102    fw-buf /boot-cmd erase
    103    boot-magic fw-buf >boot-magic le-l!
    104    cmd-fw-dl  fw-buf >boot-cmd   c!
     102   outbuf /boot-cmd erase
     103   boot-magic outbuf >boot-magic le-l!
     104   cmd-fw-dl  outbuf >boot-cmd   c!
    105105
    106106   5 0  do
    107       fw-buf /boot-cmd packet-out drop
     107      outbuf /boot-cmd packet-out drop
    108108      wait-cmd-fw-dl-ack  if  leave  then
    109109   loop
     
    119119: wait-fw-dl-ack  ( -- )
    120120   d# 500 0  do                         ( )
    121       got-packet?  if                   ( error | buf len tupe 0 )
    122          0= if  drop process-dl-resp  then      ( )
     121      bulk-in-ready?  if                ( error | buf len 0 )
     122         0= if  process-dl-resp  then   ( )
    123123         recycle-packet                 ( )
    124124         leave
     
    131131   bounds  begin                ( end start )
    132132      dl-seq++                          \ Increment sequence number
    133       dup fw-buf /dl-header move        \ Move header to outbuf
    134       dl-seq fw-buf >dl-seq le-l!       \ Add sequence number to outbuf
    135       dup /dl-header + fw-buf >dl-data 2 pick >dl-len le-l@ dup >r move
    136                                         \ Move payload to fw-buf
    137       fw-buf r@ /dl-header + 4 + packet-out drop
     133      dup outbuf /dl-header move        \ Move header to outbuf
     134      dl-seq outbuf >dl-seq le-l!       \ Add sequence number to outbuf
     135      dup /dl-header + outbuf >dl-data 2 pick >dl-len le-l@ dup >r move
     136                                        \ Move payload to outbuf
     137      outbuf r@ /dl-header + 4 + packet-out drop
    138138                                        \ Send command
    139139      wait-fw-dl-ack                    \ Wait for ACK
     
    181181
    182182: load-all-fw  ( -- error? )
    183    d# 2048 dma-alloc to fw-buf   
     183   fw-loaded?  if  false exit  then
    184184   wlan-fw find-fw  ( adr len )
    185    dup  if  download-fw  else  2drop true  then
    186    fw-buf d# 2048 dma-free
    187 ;
     185   dup  if  download-fw  else  2drop true  then  ( error? )
     186   dup 0=  to fw-loaded?                         ( error? )
     187;
     188: (setup-transport)  ( -- error? )
     189   setup-bus-io  ?dup  if  exit  then
     190   load-all-fw  dup  if  release-bus-resources  then  ( error? )
     191;
     192' (setup-transport) to setup-transport
    188193
    189194\ LICENSE_BEGIN
  • dev/usb2/device/wlan/usb8388.bth

    r3569 r3591  
    1414fload ${BP}/dev/usb2/device/wlan/common.fth     \ Ethernet common variables and routines
    1515fload ${BP}/dev/usb2/device/wlan/usb8388.fth    \ USB I/O interface for Marvell 8388
     16fload ${BP}/dev/libertas.fth                    \ Marvell "Libertas" common code
    1617fload ${BP}/dev/usb2/device/wlan/fw8388.fth     \ Marvell firmware download for USB
    17 fload ${BP}/dev/libertas.fth                    \ Marvell "Libertas" common code
    1818\ fload ${BP}/dev/usb2/device/wlan/wlan.fth     \ External interface methods
    1919
  • dev/usb2/device/wlan/usb8388.fth

    r3569 r3591  
    7171         decode-header  0       ( dadr dlen type 0 )
    7272      then                      ( error | buf len 0 )
     73      true
    7374   else                         ( )
    7475      false                     ( false )
     
    9697: release-bus-resources  ( -- )  end-bulk-in end-out-ring  ;
    9798
    98 : reset-host-bus  ( -- )  " wlan-reset" evaluate  ;
     99false value fw-loaded?
     100: reset-host-bus  ( -- )  " wlan-reset" evaluate  false to fw-loaded?  ;
    99101
    1001020 value vid
     
    109111
    110112init
    111 XXX need open and close methods and open needs to call setup-bus-io
    112 XXX need alloc-buffer and free-buffer method
     113
     114: open  ( -- okay? )  setup-bus-io 0=  ;
     115: close  ( -- )  ;
     116: alloc-buffer  ( len -- adr )  /fw-transport +  dma-alloc  /fw-transport +  ;
     117: free-buffer  ( adr len -- )  /fw-transport negate /string  dma-free  ;
     118
     119defer setup-transport  ( -- error? )  ' true to setup-transport
    113120
    114121\ LICENSE_BEGIN
Note: See TracChangeset for help on using the changeset viewer.