Annotation of XNU/iokit/Families/IOGraphics/IOBootFramebuffer.cpp, revision 1.1.1.1

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:  * Boot video dumb frambuffer shim
                     24:  */
                     25: 
                     26: #include "IOBootFramebuffer.h"
                     27: 
                     28: enum { kTheDisplayMode = 10 };
                     29: 
                     30: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                     31: 
                     32: #undef super
                     33: #define super IOFramebuffer
                     34: 
                     35: OSDefineMetaClassAndStructors(IOBootFramebuffer, IOFramebuffer)
                     36: 
                     37: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                     38: 
                     39: IOService * IOBootFramebuffer::probe(  IOService *     provider,
                     40:                                         SInt32 *       score )
                     41: {
                     42:     PE_Video           bootDisplay;
                     43:     IOService *                ret = 0;
                     44:     IOReturn           err;
                     45: 
                     46:     do {
                     47: 
                     48:         if( !provider->getProperty("AAPL,boot-display"))
                     49:            continue;
                     50: 
                     51:         err = getPlatform()->getConsoleInfo( &bootDisplay );
                     52:        if( err || (bootDisplay.v_baseAddr == 0))
                     53:            continue;
                     54: 
                     55:        if (false == super::probe( provider, score ))
                     56:            continue;
                     57: 
                     58:        *score          = 0;
                     59:        ret = this;                     // Success
                     60: 
                     61:     } while( false);
                     62: 
                     63:     return( ret);
                     64: }
                     65: 
                     66: 
                     67: const char * IOBootFramebuffer::getPixelFormats( void )
                     68: {
                     69:     const char *       ret;
                     70:     PE_Video           bootDisplay;
                     71: 
                     72:     getPlatform()->getConsoleInfo( &bootDisplay);
                     73: 
                     74:     switch( bootDisplay.v_depth) {
                     75:       case 8:
                     76:       default:
                     77:        ret = IO8BitIndexedPixels;
                     78:        break;
                     79:       case 15:
                     80:       case 16:
                     81:        ret = IO16BitDirectPixels;
                     82:        break;
                     83:       case 24:
                     84:       case 32:
                     85:        ret = IO32BitDirectPixels;
                     86:        break;
                     87:     }
                     88: 
                     89:     return( ret);
                     90: }
                     91: 
                     92: IOItemCount IOBootFramebuffer::getDisplayModeCount( void )
                     93: {
                     94:     return( 1);
                     95: }
                     96: 
                     97: IOReturn IOBootFramebuffer::getDisplayModes(
                     98:                        IODisplayModeID * allDisplayModes )
                     99: {
                    100: 
                    101:     *allDisplayModes = kTheDisplayMode;
                    102:     return( kIOReturnSuccess);
                    103: }
                    104: 
                    105: IOReturn IOBootFramebuffer::getInformationForDisplayMode(
                    106:                IODisplayModeID /* displayMode */,
                    107:                IODisplayModeInformation * info )
                    108: {
                    109:     PE_Video   bootDisplay;
                    110: 
                    111:     getPlatform()->getConsoleInfo( &bootDisplay);
                    112: 
                    113:     bzero( info, sizeof( *info));
                    114: 
                    115:     info->maxDepthIndex        = 0;
                    116:     info->nominalWidth = bootDisplay.v_width;
                    117:     info->nominalHeight        = bootDisplay.v_height;
                    118:     info->refreshRate  = 75 << 16;
                    119: 
                    120:     return( kIOReturnSuccess);
                    121: }
                    122: 
                    123: UInt64 IOBootFramebuffer::getPixelFormatsForDisplayMode( 
                    124:                IODisplayModeID /* displayMode */, IOIndex /* depth */ )
                    125: {
                    126:     return( 1);
                    127: }
                    128: 
                    129: IOReturn IOBootFramebuffer::getPixelInformation(
                    130:        IODisplayModeID displayMode, IOIndex depth,
                    131:        IOPixelAperture aperture, IOPixelInformation * info )
                    132: {
                    133:     PE_Video   bootDisplay;
                    134: 
                    135:     if( aperture || depth || (displayMode != kTheDisplayMode) )
                    136:         return( kIOReturnUnsupportedMode);
                    137: 
                    138:     getPlatform()->getConsoleInfo( &bootDisplay);
                    139: 
                    140:     bzero( info, sizeof( *info));
                    141: 
                    142:     info->activeWidth          = bootDisplay.v_width;
                    143:     info->activeHeight         = bootDisplay.v_height;
                    144:     info->bytesPerRow           = bootDisplay.v_rowBytes & 0x7fff;
                    145:     info->bytesPerPlane                = 0;
                    146: 
                    147:     switch( bootDisplay.v_depth ) {
                    148:       case 8:
                    149:       default:
                    150:         strcpy(info->pixelFormat, IO8BitIndexedPixels );
                    151:     info->pixelType            = kIOCLUTPixels;
                    152:     info->componentMasks[0]    = 0xff;
                    153:     info->bitsPerPixel                 = 8;
                    154:     info->componentCount       = 1;
                    155:     info->bitsPerComponent     = 8;
                    156:        break;
                    157:       case 15:
                    158:       case 16:
                    159:         strcpy(info->pixelFormat, IO16BitDirectPixels );
                    160:         info->pixelType        = kIORGBDirectPixels;
                    161:         info->componentMasks[0] = 0x7c00;
                    162:         info->componentMasks[1] = 0x03e0;
                    163:         info->componentMasks[2] = 0x001f;
                    164:         info->bitsPerPixel     = 16;
                    165:         info->componentCount   = 3;
                    166:         info->bitsPerComponent = 5;
                    167:        break;
                    168:       case 24:
                    169:       case 32:
                    170:         strcpy(info->pixelFormat, IO32BitDirectPixels );
                    171:         info->pixelType        = kIORGBDirectPixels;
                    172:         info->componentMasks[0] = 0x00ff0000;
                    173:         info->componentMasks[1] = 0x0000ff00;
                    174:         info->componentMasks[2] = 0x000000ff;
                    175:         info->bitsPerPixel     = 32;
                    176:         info->componentCount   = 3;
                    177:         info->bitsPerComponent = 8;
                    178:        break;
                    179:     }
                    180: 
                    181:     return( kIOReturnSuccess);
                    182: }
                    183: 
                    184: IOReturn IOBootFramebuffer::getCurrentDisplayMode( 
                    185:                IODisplayModeID * displayMode, IOIndex * depth )
                    186: {
                    187:     if( displayMode)
                    188:        *displayMode = kTheDisplayMode;
                    189:     if( depth)
                    190:        *depth = 0;
                    191: 
                    192:     return( kIOReturnSuccess);
                    193: }
                    194: 
                    195: IODeviceMemory * IOBootFramebuffer::getApertureRange( IOPixelAperture aper )
                    196: {
                    197:     IOReturn                   err;
                    198:     IOPixelInformation         info;
                    199:     IOByteCount                        bytes;
                    200:     PE_Video                   bootDisplay;
                    201: 
                    202:     getPlatform()->getConsoleInfo( &bootDisplay);
                    203: 
                    204:     err = getPixelInformation( kTheDisplayMode, 0, aper,
                    205:                                 &info );
                    206:     if( err)
                    207:        return( 0 );
                    208: 
                    209:     bytes = (info.bytesPerRow * info.activeHeight) + 128;
                    210: 
                    211:     return( IODeviceMemory::withRange( bootDisplay.v_baseAddr, bytes ));
                    212: }
                    213: 
                    214: bool IOBootFramebuffer::isConsoleDevice( void )
                    215: {
                    216:     return( (0 != getProvider()->getProperty("AAPL,boot-display")) );
                    217: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.