- Added support for Radeon Mobility 9600/9700 (0x4e50).
- Corrected wrong ID association (0x4e50 is M11-based, not M10-based). - Implemented fixed dividers support for laptop panel refresh rate. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19209 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
73d0124dbb
commit
707e075a41
@ -44,8 +44,10 @@ typedef struct {
|
||||
uint8 dummy[15];
|
||||
|
||||
uint16 panel_pwr_delay; // 44
|
||||
|
||||
uint8 dummy2[18];
|
||||
uint16 ref_div; // 46
|
||||
uint8 post_div; // 48
|
||||
uint8 feedback_div; // 49
|
||||
uint8 dummy2[14];
|
||||
|
||||
uint16 fpi_timing_ofs[20]; // 64
|
||||
} __attribute__ ((packed)) FPI_BLOCK;
|
||||
|
@ -114,7 +114,8 @@ typedef enum {
|
||||
rt_m10, // mobile Radeon 9600
|
||||
rt_rv360, // Radeon 9600
|
||||
rt_r350, // Radeon 9800
|
||||
rt_r360 // Radeon 9800
|
||||
rt_r360, // Radeon 9800
|
||||
rt_m11 // Radeon 9700 Mobility
|
||||
} radeon_type;
|
||||
|
||||
|
||||
@ -166,6 +167,10 @@ typedef struct {
|
||||
|
||||
bool is_fp2; // true, if second flat panel
|
||||
// display_type_e disp_type;
|
||||
uint16 ref_div;
|
||||
uint8 post_div;
|
||||
uint8 feedback_div;
|
||||
bool fixed_dividers;
|
||||
|
||||
uint64 h_ratio; // current stretch ratio, needed for overlays
|
||||
uint64 v_ratio; // (mode_res/native_res; 32.32)
|
||||
|
@ -204,6 +204,13 @@ void Radeon_SetMode(
|
||||
Radeon_CalcCRTPLLDividers( &si->pll, mode, ÷rs );
|
||||
else
|
||||
dividers = tv_params->crt_dividers;
|
||||
|
||||
if( (disp_devices & dd_lvds) != 0 && si->flatpanels[0].fixed_dividers ) {
|
||||
SHOW_FLOW0( 0, "Using fixed dividers for laptop panel" );
|
||||
dividers.feedback = si->flatpanels[0].feedback_div;
|
||||
dividers.post_code = si->flatpanels[0].post_div;
|
||||
dividers.ref = si->flatpanels[0].ref_div;
|
||||
}
|
||||
|
||||
Radeon_CalcPLLRegisters( mode, ÷rs, &pll_values );
|
||||
|
||||
|
@ -321,6 +321,7 @@ static bool Radeon_DetectTVCRT( accelerator_info *ai )
|
||||
case rt_rv360:
|
||||
case rt_r350:
|
||||
case rt_r360:
|
||||
case rt_m11:
|
||||
return Radeon_DetectTVCRT_R300( ai );
|
||||
|
||||
case rt_r200:
|
||||
@ -679,6 +680,7 @@ static display_device_e Radeon_DetectTV( accelerator_info *ai, bool tv_crt_found
|
||||
case rt_rv350:
|
||||
case rt_rv360:
|
||||
case rt_m10:
|
||||
case rt_m11:
|
||||
case rt_r350:
|
||||
case rt_r360:
|
||||
return Radeon_DetectTV_R300( ai );
|
||||
|
@ -61,6 +61,7 @@ void Radeon_ReadMonitorRoutingRegs(
|
||||
case rt_rv360:
|
||||
case rt_r350:
|
||||
case rt_r360:
|
||||
case rt_m11:
|
||||
values->gpiopad_a = INREG( regs, RADEON_GPIOPAD_A );
|
||||
break;
|
||||
|
||||
@ -155,6 +156,7 @@ void Radeon_CalcMonitorRouting(
|
||||
case rt_r300_4p:
|
||||
case rt_rv350:
|
||||
case rt_m10:
|
||||
case rt_m11:
|
||||
case rt_rv360:
|
||||
case rt_r350:
|
||||
case rt_r360:
|
||||
@ -207,6 +209,7 @@ void Radeon_CalcMonitorRouting(
|
||||
case rt_r300_4p:
|
||||
case rt_rv350:
|
||||
case rt_m10:
|
||||
case rt_m11:
|
||||
case rt_rv360:
|
||||
case rt_r350:
|
||||
case rt_r360:
|
||||
@ -243,6 +246,7 @@ void Radeon_CalcMonitorRouting(
|
||||
case rt_rv350:
|
||||
case rt_rv360:
|
||||
case rt_m10:
|
||||
case rt_m11:
|
||||
case rt_r350:
|
||||
case rt_r360:
|
||||
values->gpiopad_a &= ~1;
|
||||
@ -353,6 +357,7 @@ void Radeon_CalcMonitorRouting(
|
||||
case rt_r300_4p:
|
||||
case rt_rv350:
|
||||
case rt_m10:
|
||||
case rt_m11:
|
||||
case rt_rv360:
|
||||
case rt_r350:
|
||||
case rt_r360:
|
||||
@ -486,6 +491,7 @@ void Radeon_ProgramMonitorRouting(
|
||||
case rt_r300_4p:
|
||||
case rt_rv350:
|
||||
case rt_m10:
|
||||
case rt_m11:
|
||||
case rt_rv360:
|
||||
case rt_r350:
|
||||
case rt_r360:
|
||||
|
@ -326,6 +326,7 @@ static void loadMicroEngineRAMData( device_info *di )
|
||||
case rt_r300_4p:
|
||||
case rt_rv350:
|
||||
case rt_rv360:
|
||||
case rt_m11:
|
||||
case rt_r350:
|
||||
case rt_r360:
|
||||
microcode = r300_cp_microcode;
|
||||
|
@ -278,6 +278,14 @@ static bool Radeon_GetBIOSDFPInfo( device_info *di )
|
||||
if( di->fp_info.panel_pwr_delay > 2000 || di->fp_info.panel_pwr_delay < 0 )
|
||||
di->fp_info.panel_pwr_delay = 2000;
|
||||
|
||||
di->fp_info.ref_div = fpi.ref_div;
|
||||
di->fp_info.post_div = fpi.post_div;
|
||||
di->fp_info.feedback_div = fpi.feedback_div;
|
||||
|
||||
di->fp_info.fixed_dividers =
|
||||
di->fp_info.ref_div != 0 && di->fp_info.feedback_div > 3;
|
||||
|
||||
|
||||
// there might be multiple supported resolutions stored;
|
||||
// we are looking for native resolution
|
||||
for( i = 0; i < 20; ++i ) {
|
||||
|
@ -79,6 +79,10 @@
|
||||
#define DEVICE_ID_RADEON_NF 0x4e46
|
||||
#define DEVICE_ID_RADEON_NG 0x4e47
|
||||
|
||||
// m11
|
||||
#define DEVICE_ID_RADEON_NP 0x4e50 // Mobility 9700
|
||||
#define DEVICE_ID_RADEON_SE 0x4e52 // Mobility 9700 SE
|
||||
|
||||
// r300-4P
|
||||
#define DEVICE_ID_RADEON_AD 0x4144
|
||||
#define DEVICE_ID_RADEON_AE 0x4145
|
||||
@ -91,7 +95,7 @@
|
||||
#define DEVICE_ID_RADEON_AS 0x4153
|
||||
|
||||
// m10
|
||||
#define DEVICE_ID_RADEON_NP 0x4e50
|
||||
//#define DEVICE_ID_RADEON_NP 0x4e50
|
||||
// Mobility Fire GL T2 - any idea about the chip?
|
||||
#define DEVICE_ID_RADEON_NT 0x4e54
|
||||
|
||||
@ -198,7 +202,12 @@ RadeonDevice radeon_device_list[] = {
|
||||
{ DEVICE_ID_RADEON_AS, rt_rv350, "Radeon 9600 AS" },
|
||||
|
||||
// M10 (based on rv350)
|
||||
{ DEVICE_ID_RADEON_NP, rt_m10, "Radeon Mobility 9600 NP" },
|
||||
// { DEVICE_ID_RADEON_NP, rt_m10, "Radeon Mobility 9600 NP" },
|
||||
|
||||
// M11 (based on rv360)
|
||||
{ DEVICE_ID_RADEON_NP, rt_m11, "Radeon 9700 Mobility" },
|
||||
{ DEVICE_ID_RADEON_SE, rt_m11, "Radeon 9700 Mobility SE" },
|
||||
|
||||
// not sure about that: ROM signature is "RADEON" which means r100
|
||||
{ DEVICE_ID_RADEON_NT, rt_m10, "Radeon Mobility FireGL T2" },
|
||||
|
||||
@ -308,7 +317,8 @@ static struct {
|
||||
{ "m10", tc_internal_rt2, true, true, false, true, false },
|
||||
{ "rv360", tc_internal_rt2, true, false, true, true, false },
|
||||
{ "r350", tc_internal_rt2, true, false, true, true, false },
|
||||
{ "r360", tc_internal_rt2, true, false, true, true, false }
|
||||
{ "r360", tc_internal_rt2, true, false, true, true, false },
|
||||
{ "m11", tc_internal_rt2, true, true, false, true, false }
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user