|
|
1.1 ! root 1: \ ***************************************************************************** ! 2: \ * Copyright (c) 2004, 2008 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: 400 cp ! 14: ! 15: 0 value puid ! 16: ! 17: : >conf-rtas ( config-addr -- config-addr ) ! 18: puid f2000000 >= IF dup ffff > IF 1000000 + THEN THEN puid + ; ! 19: ! 20: : rtas-config-b@ ( config-addr -- value ) >conf-rtas rb@ ; ! 21: : rtas-config-b! ( value config-addr -- ) >conf-rtas rb! ; ! 22: : rtas-config-w@ ( config-addr -- value ) >conf-rtas rw@-le ; ! 23: : rtas-config-w! ( value config-addr -- ) >conf-rtas rw!-le ; ! 24: : rtas-config-l@ ( config-addr -- value ) >conf-rtas rl@-le ; ! 25: : rtas-config-l! ( value config-addr -- ) >conf-rtas rl!-le ; ! 26: ! 27: 440 cp ! 28: ! 29: #include "pci-scan.fs" ! 30: ! 31: 480 cp ! 32: ! 33: \ The root of the device tree and some of its kids. ! 34: ! 35: s" /" find-device ! 36: \ read model string from VPD ! 37: vpd-read-model ( straddr strlen ) ! 38: \ if it is a bimini, we replace the "IBM," in the model string with "TSS," ! 39: bimini? IF ! 40: 2dup drop 4 ( straddr strlen str 4 ) \ for string comparison: only first 4 bytes ("IBM,") ! 41: \ string comparison ! 42: s" IBM," str= IF ! 43: \ model starts with "IBM,", we replace it with "TSS," ! 44: 2dup drop s" TSS," ( straddr strlen straddr replacestr len ) ! 45: rot swap ( straddr strlen replacestr straddr len ) \ correct order for move: src dest len ! 46: move ( straddr strlen ) \ now we have TSS, at beginning of str... ! 47: THEN ! 48: THEN ! 49: \ store the model string ! 50: encode-string s" model" property ! 51: ! 52: 2 encode-int s" #address-cells" property ! 53: 2 encode-int s" #size-cells" property ! 54: ! 55: \ XXX: what requires this? Linux? ! 56: 0 encode-int f8040000 encode-int+ ! 57: 0 encode-int+ f8050000 encode-int+ s" platform-open-pic" property ! 58: ! 59: \ Yaboot is stupid. Without this, it can't/won't find /etc/yaboot.conf. ! 60: s" chrp SLOF based 970 blade" device-type ! 61: ! 62: \ add more information to the compatible property ! 63: js21? IF ! 64: bimini? IF ! 65: s" IBM,Bimini" ! 66: ELSE ! 67: s" IBM,JS21" ! 68: THEN ! 69: ELSE ! 70: s" IBM,JS20" ! 71: THEN encode-string ! 72: \ To get linux-2.6.10 and later to work out-of-the-box. ! 73: s" Momentum,Maple" encode-string encode+ s" compatible" property ! 74: ! 75: ! 76: \ See 3.6.5, and the PowerPC OF binding document. ! 77: new-device ! 78: s" mmu" 2dup device-name device-type ! 79: 0 0 s" translations" property ! 80: ! 81: : open true ; ! 82: : close ; ! 83: ! 84: finish-device ! 85: ! 86: new-device flash-addr set-unit-64 ! 87: s" flash" 2dup device-name device-type ! 88: 0 encode-int flash-addr encode-int+ ! 89: 0 encode-int+ get-flash-size encode-int+ s" reg" property ! 90: get-flash-size encode-int s" #bytes" property ! 91: 0 0 s" used-by-rtas" property ! 92: : open true ; ! 93: : close ; ! 94: finish-device ! 95: ! 96: 4a0 cp ! 97: ! 98: new-device nvram-base set-unit-64 ! 99: s" nvram" 2dup device-name device-type ! 100: nvram-size encode-int s" #bytes" property ! 101: 0 encode-int nvram-base encode-int+ ! 102: 0 encode-int+ nvram-size encode-int+ s" reg" property ! 103: get-node node>path s" nvram" 2swap set-alias ! 104: : open true ; ! 105: : close ; ! 106: finish-device ! 107: ! 108: 4c0 cp ! 109: ! 110: #include "memory.fs" ! 111: ! 112: 500 cp ! 113: ! 114: #include "mpic.fs" ! 115: ! 116: 580 cp ! 117: ! 118: #include "dart.fs" ! 119: ! 120: 5a0 cp ! 121: ! 122: #include "i2c.fs" ! 123: ! 124: 600 cp ! 125: get-node device-end ! 126: 620 cp ! 127: \ if it is js21/bimini the fbuffer code is included ! 128: u4? ?include fbuffer.fs ! 129: 640 cp ! 130: set-node ! 131: ! 132: 690 cp ! 133: ! 134: #include "ht.fs" ! 135: ! 136: 6a0 cp ! 137: get-node device-end ! 138: 6a8 cp ! 139: \ at this point the SAS controller has been detected and we know ! 140: \ if it is bimini or js21 ! 141: \ if it is bimini the fcode evaluator is included ! 142: bimini? ?include evaluator.fs ! 143: 6b0 cp ! 144: set-node ! 145: 6b8 cp ! 146: ! 147: u4? ?include attu.fs ! 148: 6c0 cp ! 149: ! 150: \ See the PowerPC OF binding document. ! 151: new-device ! 152: s" cpus" device-name ! 153: ! 154: 1 encode-int s" #address-cells" property ! 155: 0 encode-int s" #size-cells" property ! 156: ! 157: : decode-unit 1 hex-decode-unit ; ! 158: : encode-unit 1 hex-encode-unit ; ! 159: ! 160: cpu-mask @ 40 0 DO dup 1 and IF ! 161: i s" cpu.fs" INCLUDED THEN u2/ LOOP drop ! 162: ! 163: : open true ; ! 164: : close ; ! 165: ! 166: finish-device ! 167: ! 168: master-cpu s" /cpus/@" rot (u.) $cat open-dev encode-int s" cpu" set-chosen ! 169: s" /memory" open-dev encode-int s" memory" set-chosen ! 170: ! 171: 6e0 cp ! 172: ! 173: new-device ! 174: s" rtas" device-name ! 175: ! 176: rtas-size encode-int s" rtas-size" property ! 177: 00000001 encode-int s" ibm,flash-block-version" property ! 178: 00000001 encode-int s" rtas-event-scan-rate" property ! 179: rtas-create-token-properties ! 180: 00000001 encode-int s" rtas-version" property ! 181: ! 182: : open true ; ! 183: : close ; ! 184: ! 185: : instantiate-rtas instantiate-rtas ; ! 186: ! 187: finish-device ! 188: ! 189: 700 cp ! 190: ! 191: device-end ! 192: ! 193: \ Hack for AIX. ! 194: s" /options" find-device ! 195: \ s" 33554432" encode-string s" load-base" property ! 196: s" 16384" encode-string s" load-base" property ! 197: device-end ! 198: ! 199: \ See 3.5. ! 200: s" /openprom" find-device ! 201: s" SLOF," slof-build-id here swap rmove here slof-build-id nip $cat encode-string s" model" property ! 202: 0 0 s" relative-addressing" property ! 203: flashside? 1 = IF s" T" ELSE s" P" THEN ! 204: encode-string s" ibm,fw-bank" property ! 205: takeover? not IF ! 206: 0 set-flashside drop ! 207: read-version-and-date s" ibm,fw-perm-bank" property ! 208: 1 set-flashside drop ! 209: read-version-and-date s" ibm,fw-temp-bank" property ! 210: flashside? set-flashside drop ! 211: THEN ! 212: device-end ! 213: ! 214: s" /aliases" find-device ! 215: : open true ; ! 216: : close ; ! 217: device-end ! 218: ! 219: s" /mmu" open-dev encode-int s" mmu" set-chosen ! 220: ! 221: #include "available.fs" ! 222: ! 223: #include <term-io.fs> ! 224: ! 225: u3? IF s" /ht/isa/serial@3f8" io ! 226: ELSE s" /ht/isa/serial@2f8" io THEN ! 227:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.