Committed patch by Euan Kirkhope to improve routing problems with Radeon cards;
this should fix bug #1293. I've tested it here on two machines, one works better now, the other stayed the same (Radeon 9250, and a laptop FireGL (id 4c66) version). This apparently also fixed bug #1394. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21930 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
# define RADEON_FP2_PANEL_FORMAT (1 << 3)
|
||||
# define RADEON_FP2_SOURCE_SEL_MASK (3 << 10)
|
||||
# define RADEON_FP2_SOURCE_SEL_CRTC2 (1 << 10)
|
||||
# define RADEON_FP2_SOURCE_SEL_RMX (2 << 10)
|
||||
# define RADEON_FP2_SRC_SEL_MASK (3 << 13)
|
||||
# define RADEON_FP2_SRC_SEL_CRTC2 (1 << 13)
|
||||
# define RADEON_FP2_FP_POL (1 << 16)
|
||||
@@ -68,6 +69,12 @@
|
||||
# define RADEON_VERT_STRETCH_BLEND (1 << 26)
|
||||
# define RADEON_VERT_AUTO_RATIO_EN (1 << 27)
|
||||
# define RADEON_VERT_STRETCH_RESERVED 0xf1000000
|
||||
|
||||
#define RADEON_TMDS_PLL_CNTL 0x02a8
|
||||
#define RADEON_TMDS_TRANSMITTER_CNTL 0x02a4
|
||||
# define RADEON_TMDS_TRANSMITTER_PLLEN 1
|
||||
# define RADEON_TMDS_TRANSMITTER_PLLRST 2
|
||||
|
||||
#define RADEON_FP_H_SYNC_STRT_WID 0x02c4
|
||||
#define RADEON_FP_V_SYNC_STRT_WID 0x02c8
|
||||
|
||||
@@ -80,6 +87,9 @@
|
||||
# define RADEON_LVDS_DIGON (1 << 18)
|
||||
# define RADEON_LVDS_BLON (1 << 19)
|
||||
# define RADEON_LVDS_SEL_CRTC2 (1 << 23)
|
||||
#define RADEON_LVDS_PLL_CNTL 0x02d4
|
||||
# define RADEON_HSYNC_DELAY_SHIFT 28
|
||||
# define RADEON_HSYNC_DELAY_MASK (0xf << 28)
|
||||
|
||||
#define RADEON_FP_CRTC2_H_TOTAL_DISP 0x0350
|
||||
#define RADEON_FP_CRTC2_V_TOTAL_DISP 0x0354
|
||||
|
||||
@@ -348,6 +348,11 @@ typedef struct {
|
||||
uint32 best_vco; // preferred VCO frequency (0 for don't care)
|
||||
} pll_info;
|
||||
|
||||
// info for ext tmds pll
|
||||
typedef struct {
|
||||
uint32 freq;
|
||||
uint32 value;
|
||||
} tmds_pll_info;
|
||||
|
||||
// one overlay buffer
|
||||
typedef struct overlay_buffer_node {
|
||||
@@ -520,24 +525,24 @@ typedef struct {
|
||||
uint16 device_id; // PCI device id
|
||||
uint8 revision; // PCI device revision
|
||||
|
||||
//bool has_crtc2; // has second CRTC
|
||||
radeon_type asic; // ASIC version
|
||||
bool is_mobility; // mobility version
|
||||
bool is_igp; // might need to know if it's an integrated chip
|
||||
bool is_mobility; // mobility version
|
||||
bool is_igp; // might need to know if it's an integrated chip
|
||||
bool is_atombios;
|
||||
tv_chip_type tv_chip; // type of TV-Out encoder
|
||||
|
||||
tv_chip_type tv_chip; // type of TV-Out encoder
|
||||
bool new_pll; // r300 style PLL
|
||||
bool has_no_i2c; // I2C is broken
|
||||
uint16 panel_pwr_delay;// delay for LCD backlight to stabilise
|
||||
uint8 theatre_channel;// VIP channel of Rage Theatre (if applicable)
|
||||
bool has_no_i2c; // I2C is broken
|
||||
uint16 panel_pwr_delay; // delay for LCD backlight to stabilise
|
||||
uint8 theatre_channel; // VIP channel of Rage Theatre (if applicable)
|
||||
|
||||
general_pll_info pll;
|
||||
|
||||
tmds_pll_info tmds_pll[4];
|
||||
|
||||
area_id regs_area; // area of memory mapped registers
|
||||
area_id ROM_area; // area of ROM
|
||||
//area_id fb_area; // area of frame buffer
|
||||
void *framebuffer_pci; // physical address of frame buffer (aka local memory)
|
||||
// this is a hack needed by BeOS
|
||||
// this is a hack needed by BeOS
|
||||
|
||||
crtc_info crtc[2]; // info about each crtc
|
||||
uint8 num_crtc; // number of physical heads
|
||||
@@ -557,6 +562,8 @@ typedef struct {
|
||||
uint32 active_vc; // currently selected virtual card in terms of 2D acceleration
|
||||
|
||||
uint32 dac_cntl2; // content of dac_cntl2 register
|
||||
uint32 tmds_pll_cntl; // undocumented here be dragons
|
||||
uint32 tmds_transmitter_cntl; // undocumented here be dragons
|
||||
|
||||
overlay_info pending_overlay; // overlay to be shown
|
||||
overlay_info active_overlay; // overlay shown
|
||||
|
||||
Reference in New Issue
Block a user