Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / board-qemu / slof / e1k.fs
1 \ *****************************************************************************
2 \ * Copyright (c) 2013 IBM Corporation
3 \ * All rights reserved.
4 \ * This program and the accompanying materials
5 \ * are made available under the terms of the BSD License
6 \ * which accompanies this distribution, and is available at
7 \ * http://www.opensource.org/licenses/bsd-license.php
8 \ *
9 \ * Contributors:
10 \ *     IBM Corporation - initial implementation
11 \ ****************************************************************************/
12
13 \ Handle e1000 device
14
15 s" network" device-type
16
17 INSTANCE VARIABLE obp-tftp-package
18 get-node CONSTANT my-phandle
19 10 config-l@ translate-my-address 3 not AND CONSTANT baseaddr
20
21 0 VALUE e1k-priv
22 0 VALUE open-count
23
24 : open  ( -- okay? )
25    open-count 0= IF
26        open IF
27          baseaddr
28          e1k-open dup not IF ." e1k-open failed" EXIT THEN
29          drop TO e1k-priv
30          true
31       ELSE
32          false
33       THEN
34    ELSE
35       true
36    THEN
37    my-args s" obp-tftp" $open-package obp-tftp-package !
38    open-count 1 + to open-count
39 ;
40
41
42 : close  ( -- )
43    my-phandle set-node
44    open-count 0> IF
45       open-count 1 - dup to open-count
46       0= IF
47          e1k-priv e1k-close
48          close
49       THEN
50    THEN
51    s" close" obp-tftp-package @ $call-method
52 ;
53
54 : read ( buf len -- actual )
55    dup IF
56       e1k-read
57    ELSE  
58       nip
59    THEN
60 ;
61
62 : write ( buf len -- actual )
63    dup IF
64       e1k-write
65    ELSE
66       nip
67    THEN
68 ;
69
70 : load  ( addr -- len )
71    s" load" obp-tftp-package @ $call-method
72 ;
73
74 : ping  ( -- )
75    s" ping" obp-tftp-package @ $call-method
76 ;
77
78 6 BUFFER: local-mac
79 : setup-mac ( -- )
80    pci-mem-enable
81    " vendor-id" get-node get-property IF EXIT THEN
82    decode-int nip nip
83    " device-id" get-node get-property IF EXIT THEN
84    decode-int nip nip
85    baseaddr
86    local-mac e1k-mac-setup IF
87       encode-bytes  " local-mac-address"  property
88    THEN
89 ;
90
91 setup-mac
92
93 : setup-alias  ( -- )
94    " net" get-next-alias ?dup IF
95       get-node node>path set-alias
96    THEN
97 ;
98 setup-alias