Module Name:    src
Committed By:   macallan
Date:           Sun Dec 30 09:45:05 UTC 2012

Modified Files:
        src/sys/dev/pci: radeonfb.c radeonfbreg.h

Log Message:
Add support for R3xx.
Whi


To generate a diff of this commit:
cvs rdiff -u -r1.68 -r1.69 src/sys/dev/pci/radeonfb.c
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/pci/radeonfbreg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/radeonfb.c
diff -u src/sys/dev/pci/radeonfb.c:1.68 src/sys/dev/pci/radeonfb.c:1.69
--- src/sys/dev/pci/radeonfb.c:1.68	Thu Dec 20 03:08:39 2012
+++ src/sys/dev/pci/radeonfb.c	Sun Dec 30 09:45:05 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: radeonfb.c,v 1.68 2012/12/20 03:08:39 macallan Exp $ */
+/*	$NetBSD: radeonfb.c,v 1.69 2012/12/30 09:45:05 macallan Exp $ */
 
 /*-
  * Copyright (c) 2006 Itronix Inc.
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: radeonfb.c,v 1.68 2012/12/20 03:08:39 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: radeonfb.c,v 1.69 2012/12/30 09:45:05 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -380,13 +380,14 @@ static struct {
 	int divider;
 	int mask;
 } radeonfb_dividers[] = {
-	{  1, 0 },
-	{  2, 1 },
-	{  3, 4 },
-	{  4, 2 },
-	{  6, 6 },
-	{  8, 3 },
+	{ 16, 5 },
 	{ 12, 7 },
+	{  8, 3 },
+	{  6, 6 },
+	{  4, 2 },
+	{  3, 4 },
+	{  2, 1 },
+	{  1, 0 },
 	{  0, 0 }
 };
 
@@ -561,6 +562,8 @@ radeonfb_attach(device_t parent, device_
 	PRINTREG(RADEON_CRTC2_GEN_CNTL);
 	PRINTREG(RADEON_DISP_OUTPUT_CNTL);
 	PRINTREG(RADEON_DAC_CNTL2);
+	PRINTREG(RADEON_FP_GEN_CNTL);
+	PRINTREG(RADEON_FP2_GEN_CNTL);
 
 	PRINTREG(RADEON_BIOS_4_SCRATCH);
 	PRINTREG(RADEON_FP_GEN_CNTL);
@@ -573,13 +576,22 @@ radeonfb_attach(device_t parent, device_
 	PRINTREG(RADEON_FP_HORZ_STRETCH);
 	PRINTREG(RADEON_FP_VERT_STRETCH);
 
-	/* XXX: RV100 specific */
-	PUT32(sc, RADEON_TMDS_PLL_CNTL, 0xa27);
-
-	PATCH32(sc, RADEON_TMDS_TRANSMITTER_CNTL,
-	    RADEON_TMDS_TRANSMITTER_PLLEN,
-	    RADEON_TMDS_TRANSMITTER_PLLEN | RADEON_TMDS_TRANSMITTER_PLLRST);
+	if (IS_RV100(sc))
+		PUT32(sc, RADEON_TMDS_PLL_CNTL, 0xa27);
 
+	/* XXX
+	 * according to xf86-video-radeon R3xx has this bit backwards
+	 */
+	if (IS_R300(sc)) {
+		PATCH32(sc, RADEON_TMDS_TRANSMITTER_CNTL,
+		    0,
+		    ~(RADEON_TMDS_TRANSMITTER_PLLEN | RADEON_TMDS_TRANSMITTER_PLLRST));
+	} else {
+		PATCH32(sc, RADEON_TMDS_TRANSMITTER_CNTL,
+		    RADEON_TMDS_TRANSMITTER_PLLEN,
+		    ~(RADEON_TMDS_TRANSMITTER_PLLEN | RADEON_TMDS_TRANSMITTER_PLLRST));
+	}
+	
 	radeonfb_i2c_init(sc);
 
 	radeonfb_loadbios(sc, pa);
@@ -655,8 +667,32 @@ radeonfb_attach(device_t parent, device_
 			PATCH32(sc, RADEON_DISP_HW_DEBUG,
 			    i ? 0 : RADEON_CRT2_DISP1_SEL,
 			    ~RADEON_CRT2_DISP1_SEL);
+			/* we're using CRTC2 for the 2nd port */
+			if (sc->sc_ports[i].rp_number == 99) {
+				PATCH32(sc, RADEON_DISP_OUTPUT_CNTL,
+				    RADEON_DISP_DAC2_SOURCE_CRTC2,
+				    ~RADEON_DISP_DAC2_SOURCE_MASK);
+			}
+			
 			break;
 		}
+		switch (sc->sc_ports[i].rp_tmds_type) {
+		case RADEON_TMDS_INT:
+			/* point FP0 at the CRTC this port uses */
+			if (IS_R300(sc)) {
+				PATCH32(sc, RADEON_FP_GEN_CNTL,
+				    sc->sc_ports[i].rp_number ?
+				      R200_FP_SOURCE_SEL_CRTC2 :
+				      R200_FP_SOURCE_SEL_CRTC1,
+				    ~R200_FP_SOURCE_SEL_MASK);
+			} else {
+				PATCH32(sc, RADEON_FP_GEN_CNTL,
+				    sc->sc_ports[i].rp_number ?
+				      RADEON_FP_SEL_CRTC2 :
+				      RADEON_FP_SEL_CRTC1,
+				    ~RADEON_FP_SEL_MASK);
+			}
+		}
 	}
 	PRINTREG(RADEON_DAC_CNTL2);
 	PRINTREG(RADEON_DISP_HW_DEBUG);
@@ -682,14 +718,15 @@ radeonfb_attach(device_t parent, device_
 	 * no idea why this is necessary - if I do not clear this bit on my
 	 * iBook G4 the screen remains black, even though it's already clear.
 	 * It needs to be set on my Sun XVR-100 for the DVI port to work
+	 * TODO:
+	 * see if this is still necessary now that CRTCs, DACs and outputs are
+	 * getting wired up in a halfway sane way
 	 */
 	if (sc->sc_fp_gen_cntl & RADEON_FP_SEL_CRTC2) {
 		SET32(sc, RADEON_FP_GEN_CNTL, RADEON_FP_SEL_CRTC2);
-	} else
+	} else {
 		CLR32(sc, RADEON_FP_GEN_CNTL, RADEON_FP_SEL_CRTC2);
-
-	if (HAS_CRTC2(sc))
-		SET32(sc, RADEON_FP2_GEN_CNTL, RADEON_FP2_SRC_SEL_CRTC2);
+	}
 
 	/*
 	 * we use bus_space_map instead of pci_mapreg, because we don't
@@ -750,17 +787,17 @@ radeonfb_attach(device_t parent, device_
 		if (HAS_CRTC2(sc) && (sc->sc_ndisplays == 1)) {
 			DPRINTF(("dual crtcs!\n"));
 			dp->rd_ncrtcs = 2;
-			dp->rd_crtcs[0].rc_number = 0;
-			dp->rd_crtcs[1].rc_number = 1;
+			dp->rd_crtcs[0].rc_port =
+			    &sc->sc_ports[0];
+			dp->rd_crtcs[0].rc_number = sc->sc_ports[0].rp_number;
+			dp->rd_crtcs[1].rc_port =
+			    &sc->sc_ports[1];
+			dp->rd_crtcs[1].rc_number = sc->sc_ports[1].rp_number;
 		} else {
 			dp->rd_ncrtcs = 1;
-			dp->rd_crtcs[0].rc_number = i;
-		}
-
-		/* set up port pointer */
-		for (j = 0; j < dp->rd_ncrtcs; j++) {
-			dp->rd_crtcs[j].rc_port =
-			    &sc->sc_ports[dp->rd_crtcs[j].rc_number];
+			dp->rd_crtcs[0].rc_port =
+			    &sc->sc_ports[i];
+			dp->rd_crtcs[0].rc_number = sc->sc_ports[i].rp_number;
 		}
 
 		dp->rd_softc = sc;
@@ -946,7 +983,8 @@ radeonfb_attach(device_t parent, device_
 		radeonfb_init_palette(sc, 1);
 		CLR32(sc, RADEON_CRTC2_GEN_CNTL, RADEON_CRTC2_DISP_DIS);
 	}
-	                                
+	CLR32(sc, RADEON_CRTC_EXT_CNTL, RADEON_CRTC_DISPLAY_DIS);
+	SET32(sc, RADEON_FP_GEN_CNTL, RADEON_FP_FPON);
 	pmf_event_register(dev, PMFE_DISPLAY_BRIGHTNESS_UP,
 	    radeonfb_brightness_up, TRUE);
 	pmf_event_register(dev, PMFE_DISPLAY_BRIGHTNESS_DOWN,
@@ -959,6 +997,8 @@ radeonfb_attach(device_t parent, device_
 	PRINTREG(RADEON_CRTC2_GEN_CNTL);
 	PRINTREG(RADEON_DISP_OUTPUT_CNTL);
 	PRINTREG(RADEON_DAC_CNTL2);
+	PRINTREG(RADEON_FP_GEN_CNTL);
+	PRINTREG(RADEON_FP2_GEN_CNTL);
 
 	return;
 
@@ -1358,7 +1398,7 @@ radeonfb_getpll(struct radeonfb_softc *s
 	uint32_t	val;
 
 	s = splhigh();
-	radeonfb_put32(sc, RADEON_CLOCK_CNTL_INDEX, idx & 0x3f);
+	radeonfb_put32(sc, RADEON_CLOCK_CNTL_INDEX, (idx & 0x3f));
 	val = radeonfb_get32(sc, RADEON_CLOCK_CNTL_DATA);
 	if (HAS_R300CG(sc))
 		radeonfb_r300cg_workaround(sc);
@@ -1439,6 +1479,15 @@ radeonfb_getclocks(struct radeonfb_softc
 	minpll = radeonfb_getprop_num(sc, "minpll", 0) & 0xffffffffU;
 	maxpll = radeonfb_getprop_num(sc, "maxpll", 0) & 0xffffffffU;
 
+	PRINTPLL(RADEON_PPLL_REF_DIV);
+	PRINTPLL(RADEON_PPLL_DIV_0);
+	PRINTPLL(RADEON_PPLL_DIV_1);
+	PRINTPLL(RADEON_PPLL_DIV_2);
+	PRINTPLL(RADEON_PPLL_DIV_3);
+	PRINTREG(RADEON_CLOCK_CNTL_INDEX);
+	PRINTPLL(RADEON_P2PLL_REF_DIV);
+	PRINTPLL(RADEON_P2PLL_DIV_0);
+
 	if (refclk && refdiv && minpll && maxpll)
 		goto dontprobe;
 
@@ -1452,7 +1501,13 @@ radeonfb_getclocks(struct radeonfb_softc
 			refclk = refclk ? refclk : 2700;
 		refdiv = refdiv ? refdiv : 12;
 		minpll = minpll ? minpll : 12500;
-		maxpll = maxpll ? maxpll : 35000;
+		/* XXX
+		 * Need to check if the firmware or something programmed a
+		 * higher value than this, and if so, bump it.
+		 * The RV280 in my iBook is unhappy if the PLL input is less
+		 * than 360MHz
+		 */
+		maxpll = maxpll ? maxpll : 40000/*35000*/;
 	} else if (IS_ATOM(sc)) {
 		/* ATOM BIOS */
 		ptr = GETBIOS16(sc, 0x48);
@@ -1476,9 +1531,18 @@ radeonfb_getclocks(struct radeonfb_softc
 			refdiv = 12;
 		
 	} else {
+		uint32_t tmp = GETPLL(sc, RADEON_PPLL_REF_DIV);
 		/* Legacy BIOS */
 		ptr = GETBIOS16(sc, 0x48);
 		ptr = GETBIOS16(sc, ptr + 0x30);
+		if (IS_R300(sc)) {
+			refdiv = refdiv ? refdiv :
+			    (tmp & R300_PPLL_REF_DIV_ACC_MASK) >>
+			    R300_PPLL_REF_DIV_ACC_SHIFT;
+		} else {
+			refdiv = refdiv ? refdiv :
+			    tmp & RADEON_PPLL_REF_DIV_MASK;
+		}
 		refclk = refclk ? refclk : GETBIOS16(sc, ptr + 0x0E);
 		refdiv = refdiv ? refdiv : GETBIOS16(sc, ptr + 0x10);
 		minpll = minpll ? minpll : GETBIOS32(sc, ptr + 0x12);
@@ -1653,6 +1717,7 @@ radeonfb_getconnectors(struct radeonfb_s
 			    (tmds == RADEON_TMDS_INT))
 				sc->sc_ports[port].rp_tmds_type =
 				    RADEON_TMDS_UNKNOWN;
+			sc->sc_ports[port].rp_number = i - 1;
 
 			found += (port + 1);
 		}
@@ -1661,18 +1726,37 @@ radeonfb_getconnectors(struct radeonfb_s
 nobios:
 	if (!found) {
 		DPRINTF(("No connector info in BIOS!\n"));
-		/* default, port 0 = internal TMDS, port 1 = CRT */
-		sc->sc_ports[0].rp_mon_type = RADEON_MT_UNKNOWN;
-		sc->sc_ports[0].rp_ddc_type = RADEON_DDC_DVI;
-		sc->sc_ports[0].rp_dac_type = RADEON_DAC_TVDAC;
-		sc->sc_ports[0].rp_conn_type = RADEON_CONN_DVI_D;
-		sc->sc_ports[0].rp_tmds_type = RADEON_TMDS_INT;
-
-		sc->sc_ports[1].rp_mon_type = RADEON_MT_UNKNOWN;
-		sc->sc_ports[1].rp_ddc_type = RADEON_DDC_VGA;
-		sc->sc_ports[1].rp_dac_type = RADEON_DAC_PRIMARY;
-		sc->sc_ports[1].rp_conn_type = RADEON_CONN_CRT;
-		sc->sc_ports[1].rp_tmds_type = RADEON_TMDS_EXT;
+		if IS_MOBILITY(sc) {
+			/* default, port 0 = internal TMDS, port 1 = CRT */
+			sc->sc_ports[0].rp_mon_type = RADEON_MT_UNKNOWN;
+			sc->sc_ports[0].rp_ddc_type = RADEON_DDC_DVI;
+			sc->sc_ports[0].rp_dac_type = RADEON_DAC_TVDAC;
+			sc->sc_ports[0].rp_conn_type = RADEON_CONN_DVI_D;
+			sc->sc_ports[0].rp_tmds_type = RADEON_TMDS_INT;
+			sc->sc_ports[0].rp_number = 0;
+
+			sc->sc_ports[1].rp_mon_type = RADEON_MT_UNKNOWN;
+			sc->sc_ports[1].rp_ddc_type = RADEON_DDC_VGA;
+			sc->sc_ports[1].rp_dac_type = RADEON_DAC_PRIMARY;
+			sc->sc_ports[1].rp_conn_type = RADEON_CONN_CRT;
+			sc->sc_ports[1].rp_tmds_type = RADEON_TMDS_EXT;
+			sc->sc_ports[1].rp_number = 1;
+		} else {
+			/* default, port 0 = DVI, port 1 = CRT */
+			sc->sc_ports[0].rp_mon_type = RADEON_MT_UNKNOWN;
+			sc->sc_ports[0].rp_ddc_type = RADEON_DDC_DVI;
+			sc->sc_ports[0].rp_dac_type = RADEON_DAC_TVDAC;
+			sc->sc_ports[0].rp_conn_type = RADEON_CONN_DVI_D;
+			sc->sc_ports[0].rp_tmds_type = RADEON_TMDS_INT;
+			sc->sc_ports[0].rp_number = 1;
+
+			sc->sc_ports[1].rp_mon_type = RADEON_MT_UNKNOWN;
+			sc->sc_ports[1].rp_ddc_type = RADEON_DDC_VGA;
+			sc->sc_ports[1].rp_dac_type = RADEON_DAC_PRIMARY;
+			sc->sc_ports[1].rp_conn_type = RADEON_CONN_CRT;
+			sc->sc_ports[1].rp_tmds_type = RADEON_TMDS_EXT;
+			sc->sc_ports[1].rp_number = 0;
+		}
 	}
 
 	/*
@@ -1698,17 +1782,18 @@ nobios:
 		prop_data_t edid_data;
 
 		DPRINTF(("Port #%d:\n", i));
-		DPRINTF(("    conn = %d\n", sc->sc_ports[i].rp_conn_type));
+		DPRINTF(("   conn = %d\n", sc->sc_ports[i].rp_conn_type));
 		DPRINTF(("    ddc = %d\n", sc->sc_ports[i].rp_ddc_type));
 		DPRINTF(("    dac = %d\n", sc->sc_ports[i].rp_dac_type));
-		DPRINTF(("    tmds = %d\n", sc->sc_ports[i].rp_tmds_type));
+		DPRINTF(("   tmds = %d\n", sc->sc_ports[i].rp_tmds_type));
+		DPRINTF(("   crtc = %d\n", sc->sc_ports[i].rp_number));
 
 		sc->sc_ports[i].rp_edid_valid = 0;
 		/* first look for static EDID data */
 		if ((edid_data = prop_dictionary_get(device_properties(
 		    sc->sc_dev), "EDID")) != NULL) {
 
-			aprint_normal_dev(sc->sc_dev, "using static EDID\n");
+			aprint_debug_dev(sc->sc_dev, "using static EDID\n");
 			memcpy(edid, prop_data_data_nocopy(edid_data), 128);
 			if (edid_parse(edid, eip) == 0) {
 
@@ -1843,18 +1928,39 @@ radeonfb_program_vclk(struct radeonfb_so
 {
 	uint32_t	pbit = 0;
 	uint32_t	feed = 0;
-	uint32_t	data;
-#if 1
-	int		i;
-#endif
+	uint32_t	data, refdiv, div0;
 
 	radeonfb_calc_dividers(sc, dotclock, &pbit, &feed);
 
 	if (crtc == 0) {
 
-		/* XXXX: mobility workaround missing */
-		/* XXXX: R300 stuff missing */
+		refdiv = GETPLL(sc, RADEON_PPLL_REF_DIV);
+		if (IS_R300(sc)) {
+			refdiv = (refdiv & ~R300_PPLL_REF_DIV_ACC_MASK) |
+			    (sc->sc_refdiv << R300_PPLL_REF_DIV_ACC_SHIFT);
+		} else {
+			refdiv = (refdiv & ~RADEON_PPLL_REF_DIV_MASK) |
+			    sc->sc_refdiv;
+		}
+		div0 = GETPLL(sc, RADEON_PPLL_DIV_0);
+		div0 &= ~(RADEON_PPLL_FB3_DIV_MASK |
+		    RADEON_PPLL_POST3_DIV_MASK);
+		div0 |= pbit;
+		div0 |= (feed & RADEON_PPLL_FB3_DIV_MASK);
+
+		if ((refdiv == GETPLL(sc, RADEON_PPLL_REF_DIV)) &&
+		    (div0 == GETPLL(sc, RADEON_PPLL_DIV_0))) {
+			/* 
+			 * nothing to do here, the PLL is already where we
+			 * want it
+			 */
+			PATCH32(sc, RADEON_CLOCK_CNTL_INDEX, 0,
+			    ~RADEON_PLL_DIV_SEL);
+			aprint_debug_dev(sc->sc_dev, "no need to touch the PLL\n");
+			return;
+		}
 
+		/* alright, we do need to reprogram stuff */	 
 		PATCHPLL(sc, RADEON_VCLK_ECP_CNTL,
 		    RADEON_VCLK_SRC_SEL_CPUCLK,
 		    ~RADEON_VCLK_SRC_SEL_MASK);
@@ -1867,33 +1973,15 @@ radeonfb_program_vclk(struct radeonfb_so
 		    RADEON_PPLL_ATOMIC_UPDATE_EN |
 		    RADEON_PPLL_VGA_ATOMIC_UPDATE_EN);
 
-		/* select clock 3 */
-#if 0
-		PATCH32(sc, RADEON_CLOCK_CNTL_INDEX, RADEON_PLL_DIV_SEL,
-		    ~RADEON_PLL_DIV_SEL);
-#else
+		/* select clock 0 */
 		PATCH32(sc, RADEON_CLOCK_CNTL_INDEX, 0,
 		    ~RADEON_PLL_DIV_SEL);
-#endif
 		
-		/* XXX: R300 family -- program divider differently? */
+		PUTPLL(sc, RADEON_PPLL_REF_DIV, refdiv);
 
-		/* program reference divider */
-		PATCHPLL(sc, RADEON_PPLL_REF_DIV, sc->sc_refdiv,
-		    ~RADEON_PPLL_REF_DIV_MASK);
-		PRINTPLL(RADEON_PPLL_REF_DIV);
-
-#if 0
-		data = GETPLL(sc, RADEON_PPLL_DIV_3);
-		data &= ~(RADEON_PPLL_FB3_DIV_MASK |
-		    RADEON_PPLL_POST3_DIV_MASK);
-		data |= pbit;
-		data |= (feed & RADEON_PPLL_FB3_DIV_MASK);
-		PUTPLL(sc, RADEON_PPLL_DIV_3, data);
-#else
-		for (i = 0; i < 4; i++) {
-		}
-#endif
+		/* xf86-video-radeon does this, not sure why */
+		PUTPLL(sc, RADEON_PPLL_DIV_0, div0);
+		PUTPLL(sc, RADEON_PPLL_DIV_0, div0);
 
 		/* use the atomic update */
 		radeonfb_pllwriteupdate(sc, crtc);
@@ -1911,6 +1999,8 @@ radeonfb_program_vclk(struct radeonfb_so
 		    RADEON_PPLL_VGA_ATOMIC_UPDATE_EN);
 
 		PRINTPLL(RADEON_PPLL_CNTL);
+		PRINTPLL(RADEON_PPLL_REF_DIV);
+		PRINTPLL(RADEON_PPLL_DIV_3);
 
 		/* give clock time to lock */
 		delay(50000);
@@ -1931,8 +2021,6 @@ radeonfb_program_vclk(struct radeonfb_so
 		    RADEON_P2PLL_ATOMIC_UPDATE_EN |
 		    RADEON_P2PLL_VGA_ATOMIC_UPDATE_EN);
 
-		/* XXX: R300 family -- program divider differently? */
-
 		/* program reference divider */
 		PATCHPLL(sc, RADEON_P2PLL_REF_DIV, sc->sc_refdiv,
 		    ~RADEON_P2PLL_REF_DIV_MASK);
@@ -1944,6 +2032,10 @@ radeonfb_program_vclk(struct radeonfb_so
 		data |= pbit;
 		data |= (feed & RADEON_P2PLL_FB0_DIV_MASK);
 		PUTPLL(sc, RADEON_P2PLL_DIV_0, data);
+		PUTPLL(sc, RADEON_P2PLL_DIV_0, data);
+
+		PRINTPLL(RADEON_P2PLL_REF_DIV);
+		PRINTPLL(RADEON_P2PLL_DIV_0);
 
 		/* use the atomic update */
 		radeonfb_pllwriteupdate(sc, crtc);
@@ -2341,7 +2433,8 @@ radeonfb_set_fbloc(struct radeonfb_softc
 	uint32_t	agploc, aperbase, apersize, mcfbloc;
 
 	gen = GET32(sc, RADEON_CRTC_GEN_CNTL);
-	ext = GET32(sc, RADEON_CRTC_EXT_CNTL);
+	/* XXX */
+	ext = GET32(sc, RADEON_CRTC_EXT_CNTL) & ~RADEON_CRTC_DISPLAY_DIS;
 	agploc = GET32(sc, RADEON_MC_AGP_LOCATION);
 	aperbase = GET32(sc, RADEON_CONFIG_APER_0_BASE);
 	apersize = GET32(sc, RADEON_CONFIG_APER_SIZE);
@@ -3247,6 +3340,7 @@ radeonfb_engine_reset(struct radeonfb_so
 		PUT32(sc, RADEON_RBBM_SOFT_RESET, rbbm);
 
 	PUT32(sc, RADEON_CLOCK_CNTL_INDEX, clkindex);
+	PRINTREG(RADEON_CLOCK_CNTL_INDEX);
 	PUTPLL(sc, RADEON_MCLK_CNTL, mclkcntl);
 
 	if (HAS_R300CG(sc))

Index: src/sys/dev/pci/radeonfbreg.h
diff -u src/sys/dev/pci/radeonfbreg.h:1.4 src/sys/dev/pci/radeonfbreg.h:1.5
--- src/sys/dev/pci/radeonfbreg.h:1.4	Fri Dec 30 20:11:23 2011
+++ src/sys/dev/pci/radeonfbreg.h	Sun Dec 30 09:45:05 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: radeonfbreg.h,v 1.4 2011/12/30 20:11:23 macallan Exp $	*/
+/*	$NetBSD: radeonfbreg.h,v 1.5 2012/12/30 09:45:05 macallan Exp $	*/
 
 /* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h,v 1.31 2003/11/10 18:41:23 tsi Exp $ */
 /*
@@ -684,6 +684,7 @@
 #       define R200_FP_SOURCE_SEL_TRANS        (3 <<  10)
 #       define RADEON_FP_SEL_CRTC1             (0 << 13)
 #       define RADEON_FP_SEL_CRTC2             (1 << 13)
+#       define RADEON_FP_SEL_MASK              (1 << 13)
 #       define RADEON_FP_CRTC_DONT_SHADOW_HPAR (1 << 15)
 #       define RADEON_FP_CRTC_DONT_SHADOW_VPAR (1 << 16)
 #       define RADEON_FP_CRTC_DONT_SHADOW_HEND (1 << 17)

Reply via email to