Re: Resolution problems with i810 driver, Intel 915GM 855resolution
Michael Jastram schrieb: Next, Writing is enabled by setting bits 0, 1, 4 and 5, as documented in section 4.8.17 (page 70). In fact, this enables two, not just one PAM register for R/W. But which ones? I don't understand where 0xcfe comes from! CONFIG_DATA starts at 0xcfc (4.6.2., page 57); which of the 14 PAM Registers are we writing to? Addressing these registers works as follows: The lower eight bits of the data written to 0xcf8 form the register, the lowest two bits are ignored (assumed 0), though. Then four consecutive registers appear at ports 0xcfc to 0xcff. For example: If you write 0x805a to 0xcf8 the registers 0x58 to 0x5b can be accessed. (Ignoring the two least significant bits of 0x5a gives 0x58.) So writing to 0xcfe affects register 0x5a which is responsible for the memory range from 0xc to 0xc where the video BIOS resides. But I just received an email from Steve Tomljenovic: He already ported 855resolution to the i915. You can find his 915resolution at: http://www.geocities.com/stomljen/ Christian -- Christian Zietz - CHZ-Soft - [EMAIL PROTECTED] WWW: http://www.chzsoft.com.ar/ PGP-Key-ID: 0x6DA025CA ___ Devel mailing list Devel@XFree86.Org http://XFree86.Org/mailman/listinfo/devel
Re: Resolution problems with i810 driver, Intel 915GM 855resolution
Hi Mark, I used to play around with 855resolution, trying to get 1280x720 for HDTV on my i865. I took the time to look at the 855resolution code, and you're right, it's not that complicated. IIRC there was a routine that enabled write mode in the BIOS, then another routine to make it read-only again Yup, found it: static void unlock_bios(void) { outl(0x805a, 0xcf8); outb(0x33, 0xcfe); } static void relock_bios(void) { outl(0x805a, 0xcf8); outb(0x11, 0xcfe); } let me know if you have any trouble and I can probably generate a diff. That would be really cool - because I have no idea where the magic numbers come from, and which ones would be appropriate for the 915GM. I looked at the outl/outb documentation, but obviously the values are hardware specific. Can you, or anybody on the list, give me some pointers? Thanks! - Michael ___ Devel mailing list Devel@XFree86.Org http://XFree86.Org/mailman/listinfo/devel
Re: Resolution problems with i810 driver, Intel 915GM 855resolution
Michael Jastram schrieb: That would be really cool - because I have no idea where the magic numbers come from, and which ones would be appropriate for the 915GM. I looked at the outl/outb documentation, but obviously the values are hardware specific. Can you, or anybody on the list, give me some pointers? The registers to change are documented in the datasheet of the specific chipset by Intel. You'll have to look for the PAM registers (at least that's what they're called for i8xx-chipsets). CU Christian -- Christian Zietz - CHZ-Soft - [EMAIL PROTECTED] WWW: http://www.chzsoft.com.ar/ PGP-Key-ID: 0x6DA025CA ___ Devel mailing list Devel@XFree86.Org http://XFree86.Org/mailman/listinfo/devel
Re: Resolution problems with i810 driver, Intel 915GM 855resolution
Christian, The registers to change are documented in the datasheet of the specific chipset by Intel. You'll have to look for the PAM registers (at least that's what they're called for i8xx-chipsets). That was really helpful. I was surprised to find the datasheets readily available for download from Intel. I downloaded the one for the 915GM and also 855GM, so I could understand the existing 855resolution code better. 915GM: http://www.intel.com/design/mobile/datashts/305264.htm 855GM: http://www.intel.com/design/chipsets/datashts/252615.htm I still don't understand the following code completely (original code for 855GM): // Tell the card which register to write: outl(0x805a, 0xcf8); // Send the data: outb(0x33, 0xcfe); Now, the first statement makes sense, kind of. The format is specified in section 4.6.1 (page 56) of the 855GM spec. Writing four bytes to 0xcf8 populates CONFIG_ADDRESS. The value 0x805a means: - Enable [31] - Bus 0 [23:16] - Device 0 [15:11] - Function Number 0 [10:8] - Register 0x16 [7:2] Next, Writing is enabled by setting bits 0, 1, 4 and 5, as documented in section 4.8.17 (page 70). In fact, this enables two, not just one PAM register for R/W. But which ones? I don't understand where 0xcfe comes from! CONFIG_DATA starts at 0xcfc (4.6.2., page 57); which of the 14 PAM Registers are we writing to? Table 26 (page 71) lists offsets for the PAMs, but they don't make sense to me. Section 5.4.5 (page 132) seems to cover this, but I don't get it. Also, where does Register 0x16 come from? And last, once I am ready to modify this for 915GM: Which bus and device does my machine use? According to the X log files, it's PCI 00:02:0 - so do I use bus 0, device 2, function number 0? Many questions... I am grateful for any help or other pointers. - Michael -- Michael Jastram - [EMAIL PROTECTED] - http://jastram.de/ PGP: 9301 1A1A 58C6 2433 4EA0A040 A5AE 4122 12C1 EB80 ___ Devel mailing list Devel@XFree86.Org http://XFree86.Org/mailman/listinfo/devel
Resolution problems with i810 driver, Intel 915GM 855resolution
Hello, I am banging my head against the wall to get X to take advantage of the native resolution of my laptop, 1400x1050. It's an IBM ThinkPad R52 with an Intel 915GM video card. After reading up on the problem, I learned about Alain Poirier's 855resolution tool, which seems to be the last puzzle piece to get my system to work. Except that it doesn't change my bios. Here is what I get: # 855resolution -l 855resolution version 0.3, by Alain Poirier Chipset: Unknown (0x25908086) VBIOS type: 2 VBIOS Version: 3412 Mode 30 : 640x480, 8 bits/pixel Mode 32 : 800x600, 8 bits/pixel Mode 34 : 1024x768, 8 bits/pixel Mode 38 : 1280x1024, 8 bits/pixel Mode 3a : 1600x1200, 8 bits/pixel Mode 3c : 1920x1440, 8 bits/pixel Mode 41 : 640x480, 16 bits/pixel Mode 43 : 800x600, 16 bits/pixel Mode 45 : 1024x768, 16 bits/pixel Mode 49 : 1280x1024, 16 bits/pixel Mode 4b : 1600x1200, 16 bits/pixel Mode 4d : 1920x1440, 16 bits/pixel Mode 50 : 640x480, 32 bits/pixel Mode 52 : 800x600, 32 bits/pixel Mode 54 : 1024x768, 32 bits/pixel Mode 58 : 1280x1024, 32 bits/pixel Mode 5a : 1600x1200, 32 bits/pixel Mode 5c : 1920x1440, 32 bits/pixel Next, I run # 855resolution 3c 1400 1050 855resolution version 0.3, by Alain Poirier Chipset: Unknown (0x25908086) VBIOS type: 2 VBIOS Version: 3412 ** Patch mode 3c to resolution 1400x1050 complete However, running 855resolution -l again shows the wrong resolution for Mode 3c. The X log file doesn't contain any errors whatsoever (EE). But it contains a few interesting pieces of information: It correctly identifies the card: (II) I810: Driver for Intel Integrated Graphics Chipsets: i810, i810-dc100, i810e, i815, i830M, 845G, 852GM/855GM, 865G, 915G, 915GM (II) Primary Device is: PCI 00:02:0 (--) Assigning device section with no busID to primary device (WW) I810: No matching Device section for instance (BusID PCI:0:2:1) found (--) Chipset 915GM found It uses the VESA Bios, but complains about the checksum: (II) I810(0): initializing int10 (WW) I810(0): Bad V_BIOS checksum (II) I810(0): Primary V_BIOS segment is: 0xc000 (II) I810(0): VESA BIOS detected (II) I810(0): VESA VBE Version 3.0 (II) I810(0): VESA VBE Total Mem: 7872 kB (II) I810(0): VESA VBE OEM: Intel(r)915GM/910ML/915MS Graphics Chip Accelerated VGA BIOS (II) I810(0): VESA VBE OEM Software Rev: 1.0 (II) I810(0): VESA VBE OEM Vendor: Intel Corporation (II) I810(0): VESA VBE OEM Product: Intel(r)915GM/910ML/915MS Graphics Controller (II) I810(0): VESA VBE OEM Product Rev: Hardware Version 0.0 (II) I810(0): Integrated Graphics Chipset: Intel(R) 915GM (--) I810(0): Chipset: 915GM It correctly detects the LCD Panel Resolution: (II) I810(0): Display Info: LFP (local flat panel): attached: TRUE, present: TRUE, size: (1400,1050) ... (II) I810(0): PanelID returned panel resolution : 1400x1050 Next, it lists all the modes. Here things get funky - a number of modes return a 0x0 resolution, and it lists modes that are not listed by 855resolution -l. The list is 1600 lines long, so I'll post it at the end of the message. Mode: 30 (640x480) ModeAttributes: 0x9b WinAAttributes: 0x7 ... Mode: 3a (0x0) ModeAttributes: 0x0 WinAAttributes: 0x0 WinBAttributes: 0x0 WinGranularity: 0 WinSize: 0 WinASegment: 0x0 WinBSegment: 0x0 WinFuncPtr: 0x0 BytesPerScanline: 0 XResolution: 0 YResolution: 0 XCharSize: 0 YCharSize: 0 NumberOfPlanes: 0 BitsPerPixel: 0 NumberOfBanks: 0 MemoryModel: 0 BankSize: 0 NumberOfImages: 0 RedMaskSize: 0 RedFieldPosition: 0 GreenMaskSize: 0 GreenFieldPosition: 0 BlueMaskSize: 0 BlueFieldPosition: 0 RsvdMaskSize: 0 RsvdFieldPosition: 0 DirectColorModeInfo: 0 PhysBasePtr: 0x0 LinBytesPerScanLine: 0 BnkNumberOfImagePages: 0 LinNumberOfImagePages: 0 LinRedMaskSize: 0 LinRedFieldPosition: 0 LinGreenMaskSize: 0 LinGreenFieldPosition: 0 LinBlueMaskSize: 0 LinBlueFieldPosition: 0 LinRsvdMaskSize: 0 LinRsvdFieldPosition: 0 MaxPixelClock: 0 Mode: 3c (0x0) ModeAttributes: 0x0 WinAAttributes: 0x0 ... After the modes, X decides not to use 1400x1050, because there is no mode of this name: (II) I810(0): Monitor[0]: Using hsync range of 30.00-90.00 kHz (II) I810(0): Monitor[0]: Using vrefresh range of 40.00-60.00 Hz (II) I810(0): Not using mode 1400x1050 (no mode of this name) (II) I810(0): Increasing the scanline pitch to allow tiling mode (1280 - 2048). Later on, I also get some strange DMI messages. Are they related? drmOpenDevice: node name is /dev/dri/card0 drmOpenDevice: open result is -1, (Unknown error 999) drmOpenDevice: open result is -1, (Unknown error 999) drmOpenDevice: Open failed drmOpenDevice: node name is /dev/dri/card0 drmOpenDevice:
Re: Resolution problems with i810 driver, Intel 915GM 855resolution
On Wed, Apr 13, 2005 at 03:46:13PM -0400, Michael Jastram wrote: I am banging my head against the wall to get X to take advantage of the native resolution of my laptop, 1400x1050. It's an IBM ThinkPad R52 with an Intel 915GM video card. After reading up on the problem, I learned about Alain Poirier's 855resolution tool, which seems to be I used to play around with 855resolution, trying to get 1280x720 for HDTV on my i865. IIRC there was a routine that enabled write mode in the BIOS, then another routine to make it read-only again; the i855 version didn't work on my 865. I had to modify plugin2.c a little to get it to take the modeline; let me know if you have any trouble and I can probably generate a diff. However, it the modeline I put in looked OK but failed to work correctly once and I gave up. It would be fun to try it again one of these days (especially if XVideo would work properly at 1920x1080). If you find a real i8xx expert, let me know. Mark ___ Devel mailing list Devel@XFree86.Org http://XFree86.Org/mailman/listinfo/devel