| \ ***************************************************************************** |
| \ * Copyright (c) 2013 IBM Corporation |
| \ * All rights reserved. |
| \ * This program and the accompanying materials |
| \ * are made available under the terms of the BSD License |
| \ * which accompanies this distribution, and is available at |
| \ * http://www.opensource.org/licenses/bsd-license.php |
| \ * |
| \ * Contributors: |
| \ * IBM Corporation - initial implementation |
| \ ****************************************************************************/ |
| |
| \ Handle e1000 device |
| |
| s" network" device-type |
| |
| INSTANCE VARIABLE obp-tftp-package |
| get-node CONSTANT my-phandle |
| 10 config-l@ translate-my-address 3 not AND CONSTANT baseaddr |
| |
| 0 VALUE e1k-priv |
| 0 VALUE open-count |
| |
| : open ( -- okay? ) |
| open-count 0= IF |
| open IF |
| baseaddr |
| e1k-open dup not IF ." e1k-open failed" EXIT THEN |
| drop TO e1k-priv |
| true |
| ELSE |
| false |
| THEN |
| ELSE |
| true |
| THEN |
| my-args s" obp-tftp" $open-package obp-tftp-package ! |
| open-count 1 + to open-count |
| ; |
| |
| |
| : close ( -- ) |
| my-phandle set-node |
| open-count 0> IF |
| open-count 1 - dup to open-count |
| 0= IF |
| e1k-priv e1k-close |
| close |
| THEN |
| THEN |
| s" close" obp-tftp-package @ $call-method |
| ; |
| |
| : read ( buf len -- actual ) |
| dup IF |
| e1k-read |
| ELSE |
| nip |
| THEN |
| ; |
| |
| : write ( buf len -- actual ) |
| dup IF |
| e1k-write |
| ELSE |
| nip |
| THEN |
| ; |
| |
| : load ( addr -- len ) |
| s" load" obp-tftp-package @ $call-method |
| ; |
| |
| : ping ( -- ) |
| s" ping" obp-tftp-package @ $call-method |
| ; |
| |
| 6 BUFFER: local-mac |
| : setup-mac ( -- ) |
| pci-mem-enable |
| " vendor-id" get-node get-property IF EXIT THEN |
| decode-int nip nip |
| " device-id" get-node get-property IF EXIT THEN |
| decode-int nip nip |
| baseaddr |
| local-mac e1k-mac-setup IF |
| encode-bytes " local-mac-address" property |
| THEN |
| ; |
| |
| setup-mac |
| |
| : setup-alias ( -- ) |
| " net" get-next-alias ?dup IF |
| get-node node>path set-alias |
| THEN |
| ; |
| setup-alias |