⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crtcrpro.c

📁 此代码为WCE5.0下显示器的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
            break;

        case  FAMILY_RAGE_XL:

            lpEnableData->lpAdapterName                      = "ATI 3D RAGE XL";
            lpEnableData->ulNumberOfControllers              = 1;

            lpEnableData->aControllerCaps[0]                 = DAL_CONTROLLER_CAPS_EXPANSION    |
                                                               DAL_CONTROLLER_CAPS_OVERLAY      |
                                                               DAL_CONTROLLER_CAPS_VGA          |
                                                               DAL_CONTROLLER_CAPS_HW_CURSOR    |
                                                               //DAL_CONTROLLER_CAPS_HW_ICON      |
                                                               DAL_CONTROLLER_CAPS_OVERLAY_GAMMA|
                                                               DAL_CONTROLLER_CAPS_CURSOR_BLINK |
                                                               DAL_CONTROLLER_CAPS_SHADOW_REGISTER_SET |
                                                               DAL_CONTROLLER_CAPS_AMC8BIT_PORT1 |
                                                               DAL_CONTROLLER_CAPS_AMC8BIT_PORT2 |
                                                               DAL_CONTROLLER_CAPS_AMC16BIT_PORT |
                                                               DAL_CONTROLLER_CAPS_BWCALCULATION ;
                                                               //DAL_CONTROLLER_CAPS_EXCLUSIVE_HW_CURSOR_ICON;

                                                               //any of the above features
            lpEnableData->ulFunctionHooks                   |= GCO_HOOK_TEXT_CURSOR_BLINKING_ADJUSTMENT |
                                                               GCO_HOOK_OVERLAY_GAMMA_ADJUSTMENT |
                                                               GCO_CALCULATE_MEMORY_BANDWIDTH |
                                                               GCO_CALCULATE_HORIZONTAL_TIME|
                                                               //GCO_HOOK_ADJUST_HORIZONTAL_TIME |
                                                               GCO_HOOK_GET_HARDWARE_INFO_TABLE |
                                                               GCO_HOOK_GET_MULTIMEDIA_TABLE |
                                                               GCO_HOOK_SET_DISPLAY_OFFSET |
                                                               GCO_HOOK_RATIOMETRIC_EXPANSION_ADJUSTMENT |
                                                               GCO_HOOK_DFP_SIZE;

            lpEnableData->pfnGetTextCursorBlinkingAdjustment = RageProGetTextCursorBlinkingAdjustment;
            lpEnableData->pfnGetOverlayGammaAdjustment       = RageProGetOverlayGammaAdjustment;
            lpEnableData->pfnSetTextCursorBlinkingAdjustment = RageProSetTextCursorBlinkingAdjustment;
            lpEnableData->pfnSetOverlayGammaAdjustment       = RageProSetOverlayGammaAdjustment;

            lpEnableData->pfnSetDisplayOffset                = RageProSetDisplayOffset;
            lpEnableData->pfnGetMultimediaTable              = RageProGetMultimediaTable;
            lpEnableData->pfnGetHardwareInfoTable            = RageProGetHardwareInfoTable;
            lpEnableData->pfnGetModeTiming                   = RageProGetModeTiming;

            //Bandwidth related functions
            lpEnableData->pfnGetTotalHTime                   = vMBW_GetTotalHTime;
            lpEnableData->pfnCalculateModeBandwidth          = vMBW_CalculateModeBandwidth;
            lpEnableData->pfnCalculateModeHorizontalTime     = vMBW_CalculateModeHTime;
            lpEnableData->pfnCalculateOverlayBandwidth       = vMBW_CalculateOverlayBandwidth;
            lpEnableData->pfnCalculateOverlayHorizontalTime  = vMBW_CalculateOverlayHTime;
            lpEnableData->pfnCalculateVideoBandwidth         = vMBW_CalculateVideoBandwidth;
            lpEnableData->pfnCalculateVideoHorizontalTime    = vMBW_CalculateVideoHTime;
            lpEnableData->pfnCalculateHTimeAdjustment        = vMBW_AdjustHTime;

            //This is currently being hooked for XL only
            lpEnableData->pfnSetDFPSize                      = RageProSetDFPSize;

            lpHwCrtc->ulDspConfig[0] = 0;
            lpHwCrtc->ulDspConfig[1] = 0;

            lpHwCrtc->ulDspOnOff[0] = 0;
            lpHwCrtc->ulDspOnOff[1] = 0;

            lpHwCrtc->ulCurrentDeviceMap[0] =0;
            lpHwCrtc->ulCurrentDeviceMap[1] =0;

            ulTemp  = MMREADULONG(lpHwCrtc->HwAsicId.lpMMR, CONFIG_STAT0);

            if ((ulTemp & CONFIG_STAT0_CfgMemType) > 0x05)
            {
              lpHwCrtc->ulMemoryInterface =  MEMORY_INTERFACE_32BIT;
              lpHwCrtc->ulRageProCrtcCaps |= RAGEPRO_CRTC_CAPS_SDRAM_21;
            }
            else
              lpHwCrtc->ulMemoryInterface = MEMORY_INTERFACE_64BIT;

            lpHwCrtc->ulGCOSupportedRegSet = RAGE_PRO_LCD_REGISTER_SET    |
                                             RAGE_PRO_CRT_REGISTER_SET    |
                                             RAGE_PRO_EXTERNAL_TVO        |
                                             EXT_MOBILITY_REGISTER_SET    |
                                             RAGE_LTPRO_REGISTER_SET;

            lpHwCrtc->ulBiosInfoTableSiganture = RAGEXL_BIOS_INFO_TABLE_SIGNATURE;

            lpHwCrtc->ulLCDIndexRegisterMask = MOBILITY_XL_XC_LCD_INDEX_MASK;

            lpHwCrtc->ulRageProCrtcCaps |= RAGEPRO_CRTC_CAPS_BANDWIDTH_FIX |  
                                           RAGEPRO_CRTC_CAPS_FIFOOFF_MINUS3;

            break;

            case  FAMILY_RAGE_XC:

            lpEnableData->lpAdapterName                      = "ATI 3D RAGE XC";
            lpEnableData->ulNumberOfControllers              = 1;

            lpEnableData->aControllerCaps[0]                 = DAL_CONTROLLER_CAPS_EXPANSION    |
                                                               DAL_CONTROLLER_CAPS_OVERLAY      |
                                                               DAL_CONTROLLER_CAPS_VGA          |
                                                               DAL_CONTROLLER_CAPS_HW_CURSOR    |
                                                               //DAL_CONTROLLER_CAPS_HW_ICON     |
                                                               DAL_CONTROLLER_CAPS_OVERLAY_GAMMA |
                                                               DAL_CONTROLLER_CAPS_CURSOR_BLINK  |
                                                               DAL_CONTROLLER_CAPS_AMC8BIT_PORT1 |
                                                               DAL_CONTROLLER_CAPS_AMC8BIT_PORT2 |
                                                               DAL_CONTROLLER_CAPS_AMC16BIT_PORT ;
                                                               //DAL_CONTROLLER_CAPS_EXCLUSIVE_HW_CURSOR_ICON;

                                                               //any of the above features
            lpEnableData->ulFunctionHooks                   |= GCO_HOOK_TEXT_CURSOR_BLINKING_ADJUSTMENT |
                                                               GCO_HOOK_OVERLAY_GAMMA_ADJUSTMENT |
                                                               GCO_CALCULATE_MEMORY_BANDWIDTH |
                                                               GCO_CALCULATE_HORIZONTAL_TIME|
                                                               GCO_HOOK_ADJUST_HORIZONTAL_TIME |
                                                               GCO_HOOK_GET_HARDWARE_INFO_TABLE |
                                                               GCO_HOOK_GET_MULTIMEDIA_TABLE |
                                                               GCO_HOOK_SET_DISPLAY_OFFSET;

            lpEnableData->pfnGetTextCursorBlinkingAdjustment = RageProGetTextCursorBlinkingAdjustment;
            lpEnableData->pfnGetOverlayGammaAdjustment       = RageProGetOverlayGammaAdjustment;
            lpEnableData->pfnSetTextCursorBlinkingAdjustment = RageProSetTextCursorBlinkingAdjustment;
            lpEnableData->pfnSetOverlayGammaAdjustment       = RageProSetOverlayGammaAdjustment;

            lpEnableData->pfnSetDisplayOffset                = RageProSetDisplayOffset;
            lpEnableData->pfnGetMultimediaTable              = RageProGetMultimediaTable;
            lpEnableData->pfnGetHardwareInfoTable            = RageProGetHardwareInfoTable;
            lpEnableData->pfnGetModeTiming                   = RageProGetModeTiming;

            //Bandwidth related functions
            lpEnableData->pfnGetTotalHTime                   = vMBW_GetTotalHTime;
            lpEnableData->pfnCalculateModeBandwidth          = vMBW_CalculateModeBandwidth;
            lpEnableData->pfnCalculateModeHorizontalTime     = vMBW_CalculateModeHTime;
            lpEnableData->pfnCalculateOverlayBandwidth       = vMBW_CalculateOverlayBandwidth;
            lpEnableData->pfnCalculateOverlayHorizontalTime  = vMBW_CalculateOverlayHTime;
            lpEnableData->pfnCalculateVideoBandwidth         = vMBW_CalculateVideoBandwidth;
            lpEnableData->pfnCalculateVideoHorizontalTime    = vMBW_CalculateVideoHTime;
            lpEnableData->pfnCalculateHTimeAdjustment        = vMBW_AdjustHTime;

            lpHwCrtc->ulDspConfig[0] = 0;
            lpHwCrtc->ulDspConfig[1] = 0;

            lpHwCrtc->ulDspOnOff[0] = 0;
            lpHwCrtc->ulDspOnOff[1] = 0;

            lpHwCrtc->ulCurrentDeviceMap[0] =0;
            lpHwCrtc->ulCurrentDeviceMap[1] =0;

            ulTemp  = MMREADULONG(lpHwCrtc->HwAsicId.lpMMR, CONFIG_STAT0);

            if ((ulTemp & CONFIG_STAT0_CfgMemType) > 0x05)
              lpHwCrtc->ulMemoryInterface = MEMORY_INTERFACE_32BIT;
            else
              lpHwCrtc->ulMemoryInterface = MEMORY_INTERFACE_64BIT;

            lpHwCrtc->ulGCOSupportedRegSet = RAGE_PRO_CRT_REGISTER_SET    |
                                             RAGE_PRO_EXTERNAL_TVO        |
                                             EXT_MOBILITY_REGISTER_SET    |
                                             RAGE_LTPRO_REGISTER_SET;

            lpHwCrtc->ulBiosInfoTableSiganture = RAGEXC_BIOS_INFO_TABLE_SIGNATURE;

            lpHwCrtc->ulLCDIndexRegisterMask = MOBILITY_XL_XC_LCD_INDEX_MASK;

            break;

        case FAMILY_GTB_IIC:
            lpEnableData->lpAdapterName          = "ATI 3D RAGE IIC";
            break;

        case FAMILY_GTB_PLUS:
            lpEnableData->lpAdapterName          = "ATI 3D RAGE II+";
            break;

        case FAMILY_GTB:
            lpEnableData->lpAdapterName          = "ATI 3D RAGE II";
            break;

        case FAMILY_LTG:
            lpEnableData->lpAdapterName          = "ATI 3D RAGE LT-G";
            break;

        case FAMILY_VTB_VT4:
            lpEnableData->lpAdapterName          = "ATI 264-VT4";
            break;

        case FAMILY_VTB:
        case FAMILY_VTB_PLUS:
            lpEnableData->lpAdapterName          = "ATI 264-VT3";
            break;
    }

    // Initialize the Bios info table to be used later
    InitializeBiosInfoStructure(hGCO);

    // EPR# 42399, task# 5613
    // Setting of ReferenceFrequency and initialize part of the Bios info table based on BIOS FrequencyTable. 
    if (lpHwAsicID->ulChipFamily == FAMILY_GTC)
    {
      vInitializeBiosInfoStructureGTC(hGCO);
	}

    // Initialize panel info registers.
    bGetPanelInformationTable(hGCO);

	//    Fix EPR# 34277
    vGetLCDGCORegFlag(hGCO);  // EPR 44349

    if (lpHwAsicID->ulChipFamily == FAMILY_RAGE_MOBILITY)
    {
      lpEnableData->ulNumberOfControllers = (lpHwCrtc->ulBiosSupportedFeatures & BIOS_SUPPORTS_SINGLE_CRTC) ? 1 : 2;

      if (lpHwCrtc->ulRegGCOOption & GCOREGOPTION_DISABLE_CRTC2)   // EPR44349:Disable CRTC2 for Mobility in Win2K
        lpEnableData->ulNumberOfControllers = 1; 

      if (lpEnableData->ulNumberOfControllers == 1)
      {
        lpEnableData->aControllerCaps[1] = 0;
        lpEnableData->bEnabledAtBoot[1]  = 0;

        if (lpHwCrtc->ulMemoryInterface  == MEMORY_INTERFACE_64BIT)
          lpHwCrtc->ulGCOSupportedRegSet |= MOBILE_ENHANCED_ONE_CONTROLLER;

        // EPR 049702 - Video corruption on CRT only with high resolution; Task twdal#7823
        // For Mobility L - 32 bit memory interface:  Filter mode table based on Bandwidth Calculation,
        // unhook AdjustHTime, set Caps for SDRAM 2:1 and Bandwidth Fix
        if (lpHwCrtc->ulMemoryInterface == MEMORY_INTERFACE_32BIT)
        {  
          lpEnableData->aControllerCaps[0] |= DAL_CONTROLLER_CAPS_BWCALCULATION;
          lpEnableData->ulFunctionHooks    &= ~GCO_HOOK_ADJUST_HORIZONTAL_TIME; 
          lpHwCrtc->ulRageProCrtcCaps      |= RAGEPRO_CRTC_CAPS_SDRAM_21;
          lpHwCrtc->ulRageProCrtcCaps      |= RAGEPRO_CRTC_CAPS_BANDWIDTH_FIX;  
        }
      }

      // If BIOS sets the cap bit to disable expansion GCO will not report
      // this capability to DAL.
      if(lpHwCrtc->ulBiosSupportedFeatures & BIOS_SUPPORTS_NO_EXPANSION) //Task #5232 requested by Sony. 
      {
        lpEnableData->aControllerCaps[0] &= ~DAL_CONTROLLER_CAPS_EXPANSION;
      }
    }

    // Get Bandwidth Total and initialize Bandwidth Available
    vMBW_GetTotalBandwidth(hGCO, &lpEnableData->sAvailBandwidth);

    // May need to store HDDL in the hco if required for function calls
    // to the device dependant layer.

    // Save Driver options
    lpHwCrtc->ulDriverOptions = DDLGetDriverOptions(hDDL);

    DALDEBUG((DALDBG_ENTRY_EXIT, "ATIRAGE RageProEnable: *** exit ***"));

    if ((lpHwCrtc->ulGCOSupportedRegSet & RAGE_LTPRO_REGISTER_SET) &&
        (lpHwCrtc->ulGCOSupportedRegSet & RAGE_PRO_LCD_REGISTER_SET) &&
        (lpHwCrtc->ulGCOSupportedRegSet & RAGE_PRO_CRTC2_REGISTER_SET))
    {
      ulTemp = MMREADULONG(lpHwCrtc->HwAsicId.lpMMR, LCD_INDEX);
      ulTemp &= lpHwCrtc->ulLCDIndexRegisterMask;
      MMWRITEULONG(lpHwCrtc->HwAsicId.lpMMR, LCD_INDEX, ( ulTemp | LCD_INDEX_ConfigPanelReg));

      ulTemp = MMREADULONG(lpHwCrtc->HwAsicId.lpMMR, LCD_DATA);
      ulTemp &= CONFIG_PANEL__PANEL_TYPE_MASK;

      if(ulTemp == CONFIG_PANEL__PANEL_TYPE_DSTN)
         lpHwCrtc->ucHFBOn = 1;
      else
         lpHwCrtc->ucHFBOn = 0;

    }

    return TRUE;
}   // RageProEnable()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -