First of a set of patches by Euan Kirkhope:

* Headers updated
 * PLL errata workarounds
 * Radeon asic type overhaul (consolidated)
 * Device IDs Updated.
 * support for X-series devices with legacy bios type
 * minor tidy ups / compiler warnings (casts)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20271 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2007-03-01 09:00:49 +00:00
parent 3bf72bcb7c
commit 8841d8bcd1
32 changed files with 695 additions and 367 deletions
@@ -17,7 +17,7 @@
#include <OS.h>
#include "video_overlay.h"
#include "benaphore.h"
#include "ddc.h"
// magic code for ioctls
#define RADEON_PRIVATE_DATA_MAGIC 'TKRA'
@@ -94,31 +94,46 @@ typedef enum {
// type of ASIC
typedef enum {
rt_r100, // original Radeon
rt_ve, // original VE version
rt_m6, // original mobile Radeon
rt_rv100, // original VE version
rt_rs100, // IGP 320M
rt_rv200, // Radeon 7500
rt_m7, // mobile Radeon 7500
rt_rs200, // IGP 330M/340M/350M
rt_r200, // Radeon 8500/9100
rt_rv250, // Radeon 9000
rt_m9, // mobile Radeon 9000
rt_rv280, // Radeon 9200
rt_m9plus, // mobile Radeon 9200
// from here on, r300 and up must be located as ATI modified the PLL
// with r300 and the code only tests for >= rt_r300
rt_rs300, // IGP rs300
rt_rv280, // Radeon 9200
// from here on, r300 and up must be located as ATI modified the
// PLL design and the PLL code only tests for >= rt_r300
rt_r300, // Radeon 9700
rt_r300_4p, // Radeon 9500
rt_rv350, // Radeon 9600
rt_m10, // mobile Radeon 9600
rt_rv360, // Radeon 9600
rt_r350, // Radeon 9800
rt_r360, // Radeon 9800
rt_m11 // Radeon 9700 Mobility
rt_rv350, // Radeon 9600
rt_rv380, // X600
rt_r420 // X800
} radeon_type;
#define IS_RV100_VARIANT ( \
(ai->si->asic == rt_rv100) || \
(ai->si->asic == rt_rv200) || \
(ai->si->asic == rt_rs100) || \
(ai->si->asic == rt_rs200) || \
(ai->si->asic == rt_rv250) || \
(ai->si->asic == rt_rv280) || \
(ai->si->asic == rt_rs300))
#define IS_DI_R300_VARIANT ( \
(di->asic == rt_r300) || \
(di->asic == rt_r350) || \
(di->asic == rt_rv350) || \
(di->asic == rt_rv380) || \
(di->asic == rt_r420))
#define IS_R300_VARIANT ( \
(ai->si->asic == rt_r300) || \
(ai->si->asic == rt_r350) || \
(ai->si->asic == rt_rv350) || \
(ai->si->asic == rt_rv380) || \
(ai->si->asic == rt_r420))
// TV standard
typedef enum {
ts_off,
@@ -390,22 +405,25 @@ typedef struct {
benaphore lock; // engine lock
} engine;
uint16 vendor_id; // PCI vendor id
uint16 device_id; // PCI device id
uint8 revision; // PCI device revision
uint16 vendor_id; // PCI vendor id
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
tv_chip_type tv_chip; // type of TV-Out encoder
bool new_pll; // r300 style PLL
uint8 theatre_channel; // VIP channel of Rage Theatre (if applicable)
//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_atombios;
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)
general_pll_info pll;
area_id regs_area; // area of memory mapped registers
area_id ROM_area; // area of ROM
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