Radeon 9600 (Mobile) with second DVI.

Alex Deucher alexdeucher at gmail.com
Mon Dec 13 08:23:07 PST 2004


On Mon, 13 Dec 2004 10:49:17 -0500, John Muir <john at jmuir.com> wrote:
> Alex Deucher wrote:
> 
> 
> 
> > It kind of depends how Dell wired it up. Are they using the internal
> > TMDS transmitter or an external one to control the the DVI port? As
> > it is now the driver assumes the second crtc will always use external
> > TMDS. Internal TMDS is always tied to crtc1. At some point we really
> > out to separate the controller handling from the output controls since
> > theoretically either controller can drive any output. Anyway, if it's
> > using external TMDS, it should work with monitorlayout "LVDS, TMDS"
> > (which it looks like you've tried); if it's using internal TMDS,
> > you'll need to rework the driver to use crtc2 with internal TMDS.
> 
> OK. If the Windows setup stuff is any indication, it treats both the
> Dock's DVI port and the laptop screen as one display. Also, this implies
> that I could have a monitor connected to the VGA port at the same time
> (although i could not physically fit because the Dock is in the way).
> 

Theoretically they may both be driven by the same crtc by default. 
Also there are only two crtcs so you can really on drive two displays
at a time (although I suppose theoretically, one crtc could drive
multiple outputs).  If you are just looking for a cloned desktop, you
could force mergedfb off (option "mergedfb" "off"), then potentially
crtc1 will be driving all the outputs (may depend on bios settings,
check your bios).  If you want dualhead or mergedfb  with DVI you'll
need to fix the crtc to output mapping.

> Thus, I would guess that it's using the internal TMDS transmitter to
> drive the external DVI port. The VGA port is still there, and listed by
> the BIOS in radeon_bios.c.

Sounds like it from what you've said.

> 
> I will try the latest CVS, and then work on getting the internal TMDS to
> drive the external DVI.
> 
> For this would I start looking at radeon_driver.c? (Pointers are welcome).
> 

yes.
RADEONRestoreCrtc2Registers() - handles crtc2 and FP2
RADEONRestoreFPRegisters()  - handles LVDS and FP
RADEONSaveCrtc2Registers() 
RADEONSaveFPRegisters()
RADEONInitCrtc2Registers()
RADEONInitFPRegisters()
RADEONInit()
RADEONDisplayPowerManagementSet()

if you want to mess with the DACs you'll need to also look at the
RADEON*Crtc*() and RADEON*Crtc2*() fuctions.

radeon_reg.h should give you a good idea of what the various regs/bitsfields do.

My suggestion would be to separate the FP (internal TMDS), FP2
(external TMDS), LVDS, (and potentially DAC/DAC2/ExternalDAC) handling
and setup from the crtc setup.  then depending on how you want to to
route the crtcs, make sure you set all your output source select bits
properly (perhaps a separate function to set source bits).  If I ever
get to time to re-work this, I would probably either add a new option
to map controllers to outputs or re-work the monitorlayout option to
do the mapping.

Hope this helps.

Alex


> ..John
> 
>



More information about the xorg mailing list