Intel i915GM with SDVO CH7021A support?

Eric Anholt eric at anholt.net
Wed Jan 3 10:17:35 PST 2007


On Tue, 2007-01-02 at 23:19 +0000, Will . wrote:
> >Hey, good work.
> 
> Thanks for the encouragement, much appreciated.
> 
> >Yes, please post the code. If you have a chance, I think you'll find the
> >modesetting branch a lot easier to work in for this kind of thing, it
> >has SDVO communication code all set up.
> 
> I think that's good advice (which I know I should have taken). Hopefully if 
> there is time available to add support for this I'll pull the latest 
> modesetting branch and try to put my changes in the correct places. I assume 
> you'll want to minimize conditional branching etc as much as possible so if 
> someone has the time to talk to me about whats required I'll do my best to 
> contribute as appropriate.

Yeah, doing it in the modesetting branch should be much more satisfying.

Also, in the future, diff -u is greatly preferred to traditional context
diffs.

> =======================================================
> 
> //output connection (DAC select ?)
> 
> * memset(s->sdvo_regs, 0, 9);
> * s->sdvo_regs[SDVO_I2C_ARG_0] = 0x4;
> * s->sdvo_regs[SDVO_I2C_ARG_4] = 0x4;
> * s->sdvo_regs[SDVO_I2C_OPCODE] = 0x5; //SDVO_CMD_SET_ACTIVE_OUTPUTS
> 
> //Composite= 0x4 DACB
> //Component = 0x10; DACA
> //Scart  = 0x20; DACC
> 
> The ports bellow were found using an incremental scan of the first 256 op 
> codes (I used an xv hack and a shell script - probably not the best solution 
> but it worked). Perhaps a better/alternative tactic may have been to look 
> for opcodes that responded as it seems set/get pairs may travel in similar 
> or adjoining locations.
> 
> The op codes listed may alter their range and function depending on the 
> output type that is selected and possibly the tv format e.g. 
> interlace/progressive. Most seem to support clock values. I've listed my 
> notes with approximate defaults that relate to my setup, most of the notes 
> relate to the component output I was using at the time.
> 
> 93 (CONTRAST)
> 
> approx 60 is def
> 
> 96 - 0x60 (BRIGHTNESS)
> 
> approx 60 is def
> 
> 99- 0x63 (WIDTH) Height is done with input timing
> 
> approx 28 is def
> 
> 105 (HORZ POSITION)
> 
> 500 is def
> 520 is better
> 
> 507 is correct for my display using scart
> 
> 108 (VERT POSITION)
> 
> 199 is correct for my display using scart (the default)
> 
> 81 (SHARPNESS/FILTER??)
> 
> 111 (FILTER??)
> 
> 87 (COLOUR - AMOUNT)
> 
> approx 60 is def 0=BW 100=SATURATED
> 
> 90 (HUE)
> 
> approx 60 is def
> 
> 45 (UNKNOWN - Causes display to blank and sync loss)
> 
> 59 (UNKNOWN - Causes display to flash)
> 
> =======================================================
> 
> A corresponding modeline is required for the TV output to work, I think this 
> can be generated using create preferred input timings (does this take note 
> of the selected tv format). There is a relationship between input timing and 
> output timings related to the tv format selected. I didn't notice much 
> difference when playing with the sdvo output timings for this device, 
> presumably output timings are fixed by the tv format.
> 
> Modeline "720x576_SDVO"   0.96 720 763 795 864  576 585 587 630 +vsync
> 
> #original from BIOS trace
> #Modeline "720x576_SDVO"   0.96 720 756 788 864  576 616 618 700 +vsync
> 
> I made a corresponding adjustment to the 630 above in the input timings to 
> get the overscan working as desired. There were some discrepancies between 
> the original mode line from the bios trace (PAL 720x576 using 915resolution 
> and vbetool) and the dtd that was created by create input timings, not sure 
> if this is because I miss interpreted the data or due to some other reason. 
> The only discrepancy was vsync offset which seemed way off.
> 
> When adjusting the overscan I reduced m in the PLL timings to gain a sync 
> lock. I don't have the correct fixups for the PLL registers so I just used 
> guess work, there is undoubtedly a proper way to calculate this but the full 
> PLL routines may be required for them to be of any use.
> 
> e.g. I noticed the following not sure if its of any use though
> 
> 3000/96/2=15.625 (Horizontal timing for PAL)
> 
> 3000=clock value from create preferred input timings (ok  not exactly but 
> 2999+1)
> 96=the modeline clock from the BIOS trace
> 2=because its interlaced???
> 
> By adjusting the sync offset of the modeline horizontal/vertical position is 
> adjustable in the normal way, I didn't adjust the input timing for this, 
> there are sdvo op codes available for horiz/vert position anyway.
> 
> I've left sync disabled in ADPA, I think the sync is taken from 7021A's PLL 
> anyway. I seem to remembed that if sync in ADPA is enabled that the CRT 
> output will also be enabled, presumably with the TV timings from the 7021A. 
> Perhaps this could be used to get exact tv timing for DVI if that isn't 
> already possible
> 
> That's all I can remember for the moment hope this helps!

-- 
Eric Anholt                             anholt at FreeBSD.org
eric at anholt.net                         eric.anholt at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 187 bytes
Desc: This is a digitally signed message part
URL: <http://lists.x.org/archives/xorg/attachments/20070103/f481843b/attachment.pgp>


More information about the xorg mailing list