diff --git a/src/add-ons/accelerants/nvidia/engine/nv_crtc.c b/src/add-ons/accelerants/nvidia/engine/nv_crtc.c index 45405b8144..f731aba4e4 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_crtc.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_crtc.c @@ -447,6 +447,10 @@ status_t nv_crtc_dpms(bool display, bool h, bool v) { /* powerup both LVDS (laptop panellink) and TMDS (DVI panellink) * internal transmitters... */ + /* note: + * the powerbits in this register are hardwired to the DVI connectors, + * instead of to the DACs! (confirmed NV34) */ + //fixme... DACW(FP_DEBUG0, (DACR(FP_DEBUG0) & 0xcfffffff)); /* ... and powerup external TMDS transmitter if it exists */ /* (confirmed OK on NV28 and NV34) */ @@ -463,6 +467,10 @@ status_t nv_crtc_dpms(bool display, bool h, bool v) { /* powerdown both LVDS (laptop panellink) and TMDS (DVI panellink) * internal transmitters... */ + /* note: + * the powerbits in this register are hardwired to the DVI connectors, + * instead of to the DACs! (confirmed NV34) */ + //fixme... DACW(FP_DEBUG0, (DACR(FP_DEBUG0) | 0x30000000)); /* ... and powerdown external TMDS transmitter if it exists */ /* (confirmed OK on NV28 and NV34) */ diff --git a/src/add-ons/accelerants/nvidia/engine/nv_crtc2.c b/src/add-ons/accelerants/nvidia/engine/nv_crtc2.c index b9c31cd526..845eef8e59 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_crtc2.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_crtc2.c @@ -430,6 +430,10 @@ status_t nv_crtc2_dpms(bool display, bool h, bool v) { /* powerup both LVDS (laptop panellink) and TMDS (DVI panellink) * internal transmitters... */ + /* note: + * the powerbits in this register are hardwired to the DVI connectors, + * instead of to the DACs! (confirmed NV34) */ + //fixme... DAC2W(FP_DEBUG0, (DAC2R(FP_DEBUG0) & 0xcfffffff)); /* ... and powerup external TMDS transmitter if it exists */ /* (confirmed OK on NV28 and NV34) */ @@ -446,6 +450,10 @@ status_t nv_crtc2_dpms(bool display, bool h, bool v) { /* powerdown both LVDS (laptop panellink) and TMDS (DVI panellink) * internal transmitters... */ + /* note: + * the powerbits in this register are hardwired to the DVI connectors, + * instead of to the DACs! (confirmed NV34) */ + //fixme... DAC2W(FP_DEBUG0, (DAC2R(FP_DEBUG0) | 0x30000000)); /* ... and powerdown external TMDS transmitter if it exists */ /* (confirmed OK on NV28 and NV34) */ diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c index 6a5c819e87..bcb75f1593 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -1028,9 +1028,12 @@ static status_t nv_general_bios_to_powergraphics() if (si->ps.secondary_head) { /* switch overlay engine to CRTC1 */ - /* bit 12: overlay engine, - * bit 8: TVout chip (fixme: or bit 4?), - * bit 4: DDC channel (fixme: or bit 8?) */ + /* bit 17: GPU FP port #2 (confirmed NV25, NV28, confirmed not on NV34), + * bit 16: GPU FP port #1 (confirmed NV25, NV28, confirmed not on NV34), + * bit 12: overlay engine (all cards), + * bit 9: TVout chip #2 (confirmed on NV18, NV25, NV28), + * bit 8: TVout chip #1 (all cards), + * bit 4: DDC channel (all cards) */ NV_REG32(NV32_2FUNCSEL) &= ~0x00001000; NV_REG32(NV32_FUNCSEL) |= 0x00001000; } diff --git a/src/add-ons/accelerants/nvidia/engine/nv_info.c b/src/add-ons/accelerants/nvidia/engine/nv_info.c index b783786edf..f40d474574 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_info.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_info.c @@ -278,8 +278,18 @@ static void detect_panels() CRTCW(VSYNCE ,(CRTCR(VSYNCE) & 0x7f)); LOG(2,("INFO: Dumping flatpanel related CRTC registers:\n")); + /* info LCD register: + * b7: 1 = stereo view (shutter glasses use) (all cards), + * b5: 1 = power ext. TMDS (or something)/0 = TVout use (?) (confirmed NV28), + * b4: 1 = power ext. TMDS (or something)/0 = TVout use (?) (confirmed NV34), + * b3: 1 = ??? (confirmed NV34), + * b0: 1 = panel enabled/0 = TVout enabled (all cards). */ LOG(2,("CRTC1: LCD register: $%02x\n", CRTCR(LCD))); + /* info 0x59 register: + * b0: 1 = enable ext. TMDS clock (DPMS) (confirmed NV28, NV34). */ LOG(2,("CRTC1: register $59: $%02x\n", CRTCR(0x59))); + /* info 0x9f register: + * b4: 0 = TVout use (?). */ LOG(2,("CRTC1: register $9f: $%02x\n", CRTCR(0x9f))); /* detect active slave device (if any) */