[patch] [radeonfb] Radeon Mobility X700 (M26) and ATOM bios support
STALE7522d
From: Stuffed Crust <hidden>
Date: 2006-01-03 20:48:56
Signed-off-by: Solomon Peachy <redacted> Newer Radeon graphics cards use a different table layout in their BIOSes, known as 'ATOM'. I've attached a patch (against 2.6.15) which implements the PLL and LVDS parsing out of the ATOM BIOSes, using the current X.org sources as a reference. Notably absent is the code which detects the connectors and TDMS information, but it's of lesser importance at the moment. This code still has quirks, but I'm not sure if those are due to bugs in my patch or incomplete/buggy support for the RV410. So I'd appreciate it if people could try this out, especially if they have a newer ATOM BIOS in their radeon card, and let me know what happens. Finally, this patch also has PCI IDs added for my Radeon Mobility X700 (M26) adapter. Below is the dump of my system with this driver: radeonfb_pci_register BEGIN ACPI: PCI Interrupt 0000:01:00.0[A] -> GSI 18 (level, low) -> IRQ 217 radeonfb (0000:01:00.0): Found 131072k of DDR 128 bits wide videoram radeonfb (0000:01:00.0): mapped 16384k videoram ATOM BIOS detected radeonfb: Retreived PLL infos from BIOS radeonfb: Reference=27.00 MHz (RefDiv=12) Memory=330.00 Mhz, System=358.00 MHz radeonfb: PLL min 20000 max 50000 XXXX Write ATOM BIOS connector parse Starting monitor auto detection... radeonfb: I2C (port 1) ... not found radeonfb: I2C (port 2) ... not found radeonfb: I2C (port 3) ... not found radeonfb: I2C (port 4) ... not found radeonfb: I2C (port 2) ... not found radeonfb: I2C (port 4) ... not found Non-DDC laptop panel detected radeonfb: I2C (port 3) ... not found radeonfb: I2C (port 4) ... not found radeonfb: Monitor 1 type LCD found radeonfb: Monitor 2 type CRT found radeonfb: detected LVDS panel size from BIOS: 1680x1050 BIOS provided panel power delay: 15369 Setting up default mode based on panel info radeonfb: Dynamic Clock Power Management enabled hStart = 1728, hEnd = 1760, hTotal = 1840 vStart = 1053, vEnd = 1059, vTotal = 1080 h_total_disp = 0xd100e5 hsync_strt_wid = 0x406ba v_total_disp = 0x4190437 vsync_strt_wid = 0x6041c pixclock = 8387 freq = 11923 freq = 11923, PLL min = 20000, PLL max = 50000 ref_div = 12, ref_clk = 2700, output_freq = 23846 ref_div = 12, ref_clk = 2700, output_freq = 23846 post div = 0x1 fb_div = 0x6a ppll_div_3 = 0x1006a Console: switching to colour frame buffer device 210x65 radeonfb (0000:01:00.0): ATI Radeon VS radeonfb_pci_register END And at this point, I have yummy hires fbdev goodness. I also have a question about the panel_info.pwr_delay field --- Is this is supposed to be the time we wait for the LCD to settle after a power state change? X.org seems to use 200ms everywhere, but the default in radeonfb seems to be 2000ms, and my panel is reporting a whopping 15369ms. I'm also forced to use the default pll.ref_div of 12, and I've tweaked the code to make that default universal if the BIOS information is clearly bogus. - Solomon -- Solomon Peachy ICQ: 1318344 Melbourne, FL Quidquid latine dictum sit, altum viditur.
Attachments
- (unnamed) [application/pgp-signature] 189 bytes