|
|
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: #ifndef _IOKIT_GENERICINTERRUPTCONTROLLER_H
30: #define _IOKIT_GENERICINTERRUPTCONTROLLER_H
31:
32: #include <IOKit/IOInterrupts.h>
33: #include <IOKit/IOInterruptController.h>
34:
35: class GenericInterruptController : public IOInterruptController
36: {
37: IODeclareDefaultStructors(GenericInterruptController);
38:
39: public:
40: // There should be a method to start or init the controller.
41: // Its nature is up to you.
42: virtual bool start(IOService *provider);
43:
44: // Returns the type of a vector: level or edge. This will probably get
45: // replaced but a default method and a new method getVectorType.
46: virtual IOReturn getInterruptType(IOService *nub, int source,
47: int *interruptType);
48:
49: // Returns a function pointer for the interrupt handler.
50: // Sadly, egcs prevents this from being done by the base class.
51: virtual IOInterruptAction getInterruptHandlerAddress(void);
52:
53: // The actual interrupt handler.
54: virtual IOReturn handleInterrupt(void *refCon,
55: IOService *nub, int source);
56:
57:
58: // Should return true if this vector can be shared.
59: // The base class return false, so this method only need to be implemented
60: // if the controller needs to support shared interrupts.
61: // No other work is required to support shared interrupts.
62: virtual bool vectorCanBeShared(long vectorNumber, IOInterruptVector *vector);
63:
64: // Do any hardware initalization for this vector. Leave the vector
65: // hard disabled.
66: virtual void initVector(long vectorNumber, IOInterruptVector *vector);
67:
68: // Disable this vector at the hardware.
69: virtual void disableVectorHard(long vectorNumber, IOInterruptVector *vector);
70:
71: // Enable this vector at the hardware.
72: virtual void enableVector(long vectorNumber, IOInterruptVector *vector);
73:
74: // Cause an interrupt on this vector.
75: virtual void causeVector(long vectorNumber, IOInterruptVector *vector);
76: };
77:
78: #endif /* ! _IOKIT_GENERICINTERRUPTCONTROLLER_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.