shithub: patch

Download patch

ref: b8872443b04fce8c75879699501bb42263bc6f99
parent: 8bb135cdcb5ce7490ee88512f6f7e65c9e184250
author: qwx <qwx@sciops.net>
date: Mon Nov 3 04:15:07 EST 2025

add igfx-pineview: pineview fixes (thanks mkf?)

unknown status at this point

--- /dev/null
+++ b/igfx-pineview
@@ -1,0 +1,70 @@
+diff 2a6e03968b9227e91b2df181fe8461d719395359 uncommitted
+--- a//sys/src/cmd/aux/vga/igfx.c
++++ b//sys/src/cmd/aux/vga/igfx.c
+@@ -176,6 +176,7 @@
+ 
+ 	/* G45 */
+ 	Reg	gmbus[6];	/* GMBUSx */
++	int ispnv;
+ 
+ 	Reg	sdvoc;
+ 	Reg	sdvob;
+@@ -389,7 +390,10 @@
+ 	case 0x0102:	/* Dell Optiplex 790 */
+ 	case 0x0126:	/* Thinkpad X220 */
+ 		return TypeSNB;
++	case 0xa001:    /* PineView Graphics */
+ 	case 0xa011:    /* PineView Graphics */
++		igfx->ispnv = 1;
++		/* wet floor */
+ 	case 0x27ae:	/* Intel 945GME */
+ 	case 0x27a2:	/* GM945/82940GML - ThinkPad X60 Tablet */
+ 	case 0x29a2:	/* 82P965/G965 HECI desktop */
+@@ -733,17 +737,21 @@
+ 
+ 	best = -1;
+ 	for(N=3; N<=8; N++)
+-	for(M2=5; M2<=9; M2++)
++	//for(M2=5; M2<=9; M2++)
++	for(M2=0; M2<=254; M2++)
+ //	for(M1=10; M1<=20; M1++){
+-	for(M1=12; M1<=22; M1++){
++	//for(M1=12; M1<=22; M1++){
++	for(M1=0; M1<=0; M1++){
+ 		M = 5*(M1+2) + (M2+2);
+-		if(M < 79 || M > 127)
++		//if(M < 79 || M > 127)
+ //		if(M < 70 || M > 120)
++		if(M < 2 || M > 256)
+ 			continue;
+ 		for(P1=1; P1<=8; P1++){
+ 			P = P1 * P2;
+-			if(P < 5 || P > 98)
++			//if(P < 5 || P > 98)
+ //			if(P < 4 || P > 98)
++			if(P < 7 || P > 112)
+ 				continue;
+ 			a = cref;
+ 			a *= M;
+@@ -871,8 +879,10 @@
+ 		 * preconfigured by the BIOS.
+ 		 */
+ 		if(freq > 112*MHz || (igfx->lvds.v>>4 & 3) == 3){
+-			p2 >>= 1;
+-			dpll->ctrl.v |= (1<<24);
++			if(!igfx->ispnv){	// FIXME: check DPLLB_LVDS_P2_CLOCK_DIV_7
++				p2 >>= 1;
++				dpll->ctrl.v |= (1<<24);
++			}
+ 		}
+ 		if(genpll(freq, cref, p2, &m1, &m2, &n, &p1) < 0)
+ 			return -1;
+@@ -917,7 +927,7 @@
+ 	/* FP1 P1 Post divisor */
+ 	if(igfx->pci->did != 0x27a2 && igfx->pci->did != 0x2592){
+ 		dpll->ctrl.v &= ~0xFF;
+-		dpll->ctrl.v |=  0x01<<(p1-1);
++		dpll->ctrl.v |=  0x01<<(p1-1);	// FIXME: post_div different for pnv?
+ 		dpll->fp1.v = dpll->fp0.v;
+ 	}
+ 
--