Re: Resolution problems with i810 driver, Intel 915GM 855resolution

2005-04-15 Thread Christian Zietz
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

2005-04-14 Thread Michael Jastram
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

2005-04-14 Thread Christian Zietz
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

2005-04-14 Thread Michael Jastram
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

2005-04-13 Thread Michael Jastram
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

2005-04-13 Thread Mark Lehrer
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