- 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];
|
uint8 dummy[15];
|
||||||
|
|
||||||
uint16 panel_pwr_delay; // 44
|
uint16 panel_pwr_delay; // 44
|
||||||
|
uint16 ref_div; // 46
|
||||||
uint8 dummy2[18];
|
uint8 post_div; // 48
|
||||||
|
uint8 feedback_div; // 49
|
||||||
|
uint8 dummy2[14];
|
||||||
|
|
||||||
uint16 fpi_timing_ofs[20]; // 64
|
uint16 fpi_timing_ofs[20]; // 64
|
||||||
} __attribute__ ((packed)) FPI_BLOCK;
|
} __attribute__ ((packed)) FPI_BLOCK;
|
||||||
|
@ -114,7 +114,8 @@ typedef enum {
|
|||||||
rt_m10, // mobile Radeon 9600
|
rt_m10, // mobile Radeon 9600
|
||||||
rt_rv360, // Radeon 9600
|
rt_rv360, // Radeon 9600
|
||||||
rt_r350, // Radeon 9800
|
rt_r350, // Radeon 9800
|
||||||
rt_r360 // Radeon 9800
|
rt_r360, // Radeon 9800
|
||||||
|
rt_m11 // Radeon 9700 Mobility
|
||||||
} radeon_type;
|
} radeon_type;
|
||||||
|
|
||||||
|
|
||||||
@ -166,6 +167,10 @@ typedef struct {
|
|||||||
|
|
||||||
bool is_fp2; // true, if second flat panel
|
bool is_fp2; // true, if second flat panel
|
||||||
// display_type_e disp_type;
|
// 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 h_ratio; // current stretch ratio, needed for overlays
|
||||||
uint64 v_ratio; // (mode_res/native_res; 32.32)
|
uint64 v_ratio; // (mode_res/native_res; 32.32)
|
||||||
|
@ -205,6 +205,13 @@ void Radeon_SetMode(
|
|||||||
else
|
else
|
||||||
dividers = tv_params->crt_dividers;
|
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 );
|
Radeon_CalcPLLRegisters( mode, ÷rs, &pll_values );
|
||||||
|
|
||||||
// for first CRTC1, we need to setup RMX properly
|
// for first CRTC1, we need to setup RMX properly
|
||||||
|
@ -321,6 +321,7 @@ static bool Radeon_DetectTVCRT( accelerator_info *ai )
|
|||||||
case rt_rv360:
|
case rt_rv360:
|
||||||
case rt_r350:
|
case rt_r350:
|
||||||
case rt_r360:
|
case rt_r360:
|
||||||
|
case rt_m11:
|
||||||
return Radeon_DetectTVCRT_R300( ai );
|
return Radeon_DetectTVCRT_R300( ai );
|
||||||
|
|
||||||
case rt_r200:
|
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_rv350:
|
||||||
case rt_rv360:
|
case rt_rv360:
|
||||||
case rt_m10:
|
case rt_m10:
|
||||||
|
case rt_m11:
|
||||||
case rt_r350:
|
case rt_r350:
|
||||||
case rt_r360:
|
case rt_r360:
|
||||||
return Radeon_DetectTV_R300( ai );
|
return Radeon_DetectTV_R300( ai );
|
||||||
|
@ -61,6 +61,7 @@ void Radeon_ReadMonitorRoutingRegs(
|
|||||||
case rt_rv360:
|
case rt_rv360:
|
||||||
case rt_r350:
|
case rt_r350:
|
||||||
case rt_r360:
|
case rt_r360:
|
||||||
|
case rt_m11:
|
||||||
values->gpiopad_a = INREG( regs, RADEON_GPIOPAD_A );
|
values->gpiopad_a = INREG( regs, RADEON_GPIOPAD_A );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -155,6 +156,7 @@ void Radeon_CalcMonitorRouting(
|
|||||||
case rt_r300_4p:
|
case rt_r300_4p:
|
||||||
case rt_rv350:
|
case rt_rv350:
|
||||||
case rt_m10:
|
case rt_m10:
|
||||||
|
case rt_m11:
|
||||||
case rt_rv360:
|
case rt_rv360:
|
||||||
case rt_r350:
|
case rt_r350:
|
||||||
case rt_r360:
|
case rt_r360:
|
||||||
@ -207,6 +209,7 @@ void Radeon_CalcMonitorRouting(
|
|||||||
case rt_r300_4p:
|
case rt_r300_4p:
|
||||||
case rt_rv350:
|
case rt_rv350:
|
||||||
case rt_m10:
|
case rt_m10:
|
||||||
|
case rt_m11:
|
||||||
case rt_rv360:
|
case rt_rv360:
|
||||||
case rt_r350:
|
case rt_r350:
|
||||||
case rt_r360:
|
case rt_r360:
|
||||||
@ -243,6 +246,7 @@ void Radeon_CalcMonitorRouting(
|
|||||||
case rt_rv350:
|
case rt_rv350:
|
||||||
case rt_rv360:
|
case rt_rv360:
|
||||||
case rt_m10:
|
case rt_m10:
|
||||||
|
case rt_m11:
|
||||||
case rt_r350:
|
case rt_r350:
|
||||||
case rt_r360:
|
case rt_r360:
|
||||||
values->gpiopad_a &= ~1;
|
values->gpiopad_a &= ~1;
|
||||||
@ -353,6 +357,7 @@ void Radeon_CalcMonitorRouting(
|
|||||||
case rt_r300_4p:
|
case rt_r300_4p:
|
||||||
case rt_rv350:
|
case rt_rv350:
|
||||||
case rt_m10:
|
case rt_m10:
|
||||||
|
case rt_m11:
|
||||||
case rt_rv360:
|
case rt_rv360:
|
||||||
case rt_r350:
|
case rt_r350:
|
||||||
case rt_r360:
|
case rt_r360:
|
||||||
@ -486,6 +491,7 @@ void Radeon_ProgramMonitorRouting(
|
|||||||
case rt_r300_4p:
|
case rt_r300_4p:
|
||||||
case rt_rv350:
|
case rt_rv350:
|
||||||
case rt_m10:
|
case rt_m10:
|
||||||
|
case rt_m11:
|
||||||
case rt_rv360:
|
case rt_rv360:
|
||||||
case rt_r350:
|
case rt_r350:
|
||||||
case rt_r360:
|
case rt_r360:
|
||||||
|
@ -326,6 +326,7 @@ static void loadMicroEngineRAMData( device_info *di )
|
|||||||
case rt_r300_4p:
|
case rt_r300_4p:
|
||||||
case rt_rv350:
|
case rt_rv350:
|
||||||
case rt_rv360:
|
case rt_rv360:
|
||||||
|
case rt_m11:
|
||||||
case rt_r350:
|
case rt_r350:
|
||||||
case rt_r360:
|
case rt_r360:
|
||||||
microcode = r300_cp_microcode;
|
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 )
|
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.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;
|
// there might be multiple supported resolutions stored;
|
||||||
// we are looking for native resolution
|
// we are looking for native resolution
|
||||||
for( i = 0; i < 20; ++i ) {
|
for( i = 0; i < 20; ++i ) {
|
||||||
|
@ -79,6 +79,10 @@
|
|||||||
#define DEVICE_ID_RADEON_NF 0x4e46
|
#define DEVICE_ID_RADEON_NF 0x4e46
|
||||||
#define DEVICE_ID_RADEON_NG 0x4e47
|
#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
|
// r300-4P
|
||||||
#define DEVICE_ID_RADEON_AD 0x4144
|
#define DEVICE_ID_RADEON_AD 0x4144
|
||||||
#define DEVICE_ID_RADEON_AE 0x4145
|
#define DEVICE_ID_RADEON_AE 0x4145
|
||||||
@ -91,7 +95,7 @@
|
|||||||
#define DEVICE_ID_RADEON_AS 0x4153
|
#define DEVICE_ID_RADEON_AS 0x4153
|
||||||
|
|
||||||
// m10
|
// m10
|
||||||
#define DEVICE_ID_RADEON_NP 0x4e50
|
//#define DEVICE_ID_RADEON_NP 0x4e50
|
||||||
// Mobility Fire GL T2 - any idea about the chip?
|
// Mobility Fire GL T2 - any idea about the chip?
|
||||||
#define DEVICE_ID_RADEON_NT 0x4e54
|
#define DEVICE_ID_RADEON_NT 0x4e54
|
||||||
|
|
||||||
@ -198,7 +202,12 @@ RadeonDevice radeon_device_list[] = {
|
|||||||
{ DEVICE_ID_RADEON_AS, rt_rv350, "Radeon 9600 AS" },
|
{ DEVICE_ID_RADEON_AS, rt_rv350, "Radeon 9600 AS" },
|
||||||
|
|
||||||
// M10 (based on rv350)
|
// 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
|
// not sure about that: ROM signature is "RADEON" which means r100
|
||||||
{ DEVICE_ID_RADEON_NT, rt_m10, "Radeon Mobility FireGL T2" },
|
{ 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 },
|
{ "m10", tc_internal_rt2, true, true, false, true, false },
|
||||||
{ "rv360", tc_internal_rt2, true, false, true, true, false },
|
{ "rv360", tc_internal_rt2, true, false, true, true, false },
|
||||||
{ "r350", 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