|
|
1.1 root 1: /*
2: * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
24: *
25: * DRI: Josh de Cesare
26: *
27: */
28:
29: #include <IOKit/IODeviceTreeSupport.h>
30:
31: #include "PowerStar.h"
32: #include "../drvAppleOHare/OHare.h"
33:
34: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
35:
36: #define super ApplePlatformExpert
37:
38: OSDefineMetaClassAndStructors(PowerStarPE, ApplePlatformExpert);
39:
40: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
41:
42: bool PowerStarPE::start(IOService *provider)
43: {
44: setFamily(1); // PowerStar...
45:
46: // See if it is a Hooper or Kanga.
47: if (IODTMatchNubWithKeys(provider, "('AAPL,3400/2400', 'AAPL,3500')")) {
48: configureEthernet(provider);
49: }
50:
51: return super::start(provider);
52: }
53:
54: bool PowerStarPE::platformAdjustService(IOService *service)
55: {
56: if (!strcmp(service->getName(), "chips65550")) {
57: service->setProperty("Ignore VBL", "", 0);
58: return true;
59: }
60:
61: return true;
62: }
63:
64: void PowerStarPE::configureEthernet(IOService *provider)
65: {
66: OSCollectionIterator *nodeList;
67: IORegistryEntry *node, *enet, *ohare;
68: OSArray *interruptNames, *interruptSources;
69: OSSymbol *interruptControllerName;
70: OSString *tmpString;
71: OSData *tempData;
72: long tempSource;
73:
74: enet = 0;
75: ohare = 0;
76:
77: // Find the node for DEC21041.
78: nodeList = IODTFindMatchingEntries(provider, kIODTRecursive,
79: "'pci1011,14'");
80: if (nodeList) {
81: while ((node = (IORegistryEntry *)nodeList->getNextObject())) {
82: enet = node;
83: }
84: nodeList->release();
85: }
86:
87: if (enet == 0) return;
88:
89: // Set the 'Network Connection' property to '10BaseT'.
90: tmpString = OSString::withCStringNoCopy("10BaseT");
91: enet->setProperty("Network Connection", tmpString);
92:
93: // Add a 'built-in' property so IONetworkStack will treat it as built in.
94: enet->setProperty("built-in", "", 0);
95:
96: // If it is there, find the node for the second ohare.
97: nodeList = IODTFindMatchingEntries(provider, kIODTRecursive,
98: "'pci106b,7'");
99: if (nodeList) {
100: while ((node = (IORegistryEntry *)nodeList->getNextObject())) {
101: ohare = node;
102: }
103: nodeList->release();
104: }
105:
106: if (ohare == 0) return;
107:
108: interruptNames = OSDynamicCast(OSArray,
109: enet->getProperty(gIOInterruptControllersKey));
110: interruptControllerName = (OSSymbol *)OSSymbol::withCStringNoCopy("SecondaryInterruptController");
111: interruptNames->setObject(0, interruptControllerName);
112: interruptControllerName->release();
113:
114: interruptSources = OSDynamicCast(OSArray,
115: enet->getProperty(gIOInterruptSpecifiersKey));
116: tempSource = 28;
117: tempData = OSData::withBytes(&tempSource, sizeof(tempSource));
118: interruptSources->setObject(0, tempData);
119: tempData->release();
120: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.