Support for HP's IPF ZX1 systems (Alex Williamson).
This commit is contained in:
		
							parent
							
								
									231c00e8fb
								
							
						
					
					
						commit
						7eb6b69ebd
					
				| 
						 | 
					@ -503,6 +503,9 @@
 | 
				
			||||||
#define PCI_CHIP_ZX1_IOC		0x122A
 | 
					#define PCI_CHIP_ZX1_IOC		0x122A
 | 
				
			||||||
#define PCI_CHIP_ZX1_LBA		0x122E	/* a.k.a. Mercury */
 | 
					#define PCI_CHIP_ZX1_LBA		0x122E	/* a.k.a. Mercury */
 | 
				
			||||||
#define PCI_CHIP_ZX1_AGP8		0x12B4	/* a.k.a. QuickSilver */
 | 
					#define PCI_CHIP_ZX1_AGP8		0x12B4	/* a.k.a. QuickSilver */
 | 
				
			||||||
 | 
					#define PCI_CHIP_ZX2_LBA		0x12EE
 | 
				
			||||||
 | 
					#define PCI_CHIP_ZX2_SBA		0x4030
 | 
				
			||||||
 | 
					#define PCI_CHIP_ZX2_IOC		0x4031
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* SGS */
 | 
					/* SGS */
 | 
				
			||||||
#define PCI_CHIP_STG2000		0x0008
 | 
					#define PCI_CHIP_STG2000		0x0008
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -487,11 +487,15 @@ xf86PreScanZX1(void)
 | 
				
			||||||
    if (!(pZX1mio = xf86MapVidMem(-1, VIDMEM_MMIO, MIO_BASE, mapSize)))
 | 
					    if (!(pZX1mio = xf86MapVidMem(-1, VIDMEM_MMIO, MIO_BASE, mapSize)))
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Look for ZX1's SBA and IOC */	/* XXX What about Dino? */
 | 
					    /* Look for ZX1's SBA and IOC */
 | 
				
			||||||
    if ((MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) !=
 | 
					    if (((MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) !=
 | 
				
			||||||
	 DEVID(VENDOR_HP, CHIP_ZX1_SBA)) ||
 | 
						  DEVID(VENDOR_HP, CHIP_ZX1_SBA)) ||
 | 
				
			||||||
	(MIO_LONG(MIO_FUNCTION1 + PCI_ID_REG) !=
 | 
						 (MIO_LONG(MIO_FUNCTION1 + PCI_ID_REG) !=
 | 
				
			||||||
	 DEVID(VENDOR_HP, CHIP_ZX1_IOC))) {
 | 
						  DEVID(VENDOR_HP, CHIP_ZX1_IOC))) &&
 | 
				
			||||||
 | 
						 ((MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) !=
 | 
				
			||||||
 | 
						   DEVID(VENDOR_HP, CHIP_ZX2_SBA)) ||
 | 
				
			||||||
 | 
						  (MIO_LONG(MIO_FUNCTION1 + PCI_ID_REG) !=
 | 
				
			||||||
 | 
						   DEVID(VENDOR_HP, CHIP_ZX2_IOC)))) {
 | 
				
			||||||
	xf86UnMapVidMem(-1, pZX1mio, mapSize);
 | 
						xf86UnMapVidMem(-1, pZX1mio, mapSize);
 | 
				
			||||||
	pZX1mio = NULL;
 | 
						pZX1mio = NULL;
 | 
				
			||||||
	return;
 | 
						return;
 | 
				
			||||||
| 
						 | 
					@ -536,10 +540,22 @@ xf86PreScanZX1(void)
 | 
				
			||||||
    if (tmp & ROPE_Q4)
 | 
					    if (tmp & ROPE_Q4)
 | 
				
			||||||
	zx1_ropemap[5] = zx1_ropemap[6] = zx1_ropemap[7] = 4;
 | 
						zx1_ropemap[5] = zx1_ropemap[6] = zx1_ropemap[7] = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tmp = MIO_QUAD(ROPE_PAGE_CONTROL);
 | 
					    /*
 | 
				
			||||||
    for (i = 0;  i < 8;  i++, tmp >>= 8)
 | 
					     * zx2 should allow better probing support via hard-fails, so no need to
 | 
				
			||||||
	if (!(CARD8)tmp)
 | 
					     * use the ROPE_PAGE_CONTROL register.  Also, zx2 always has ropes 3 & 7
 | 
				
			||||||
	    zx1_ropemap[i] = -1;
 | 
					     * active regardless of bundling.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    if (MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) !=
 | 
				
			||||||
 | 
					        DEVID(VENDOR_HP, CHIP_ZX2_SBA)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tmp = MIO_QUAD(ROPE_PAGE_CONTROL);
 | 
				
			||||||
 | 
						for (i = 0;  i < 8;  i++, tmp >>= 8)
 | 
				
			||||||
 | 
						    if (!(CARD8)tmp)
 | 
				
			||||||
 | 
							zx1_ropemap[i] = -1;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
						zx1_ropemap[3] = 3;
 | 
				
			||||||
 | 
						zx1_ropemap[7] = 7;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0;  i < 8;  ) {
 | 
					    for (i = 0;  i < 8;  ) {
 | 
				
			||||||
	if (zx1_ropemap[i] == i) {
 | 
						if (zx1_ropemap[i] == i) {
 | 
				
			||||||
| 
						 | 
					@ -557,6 +573,7 @@ xf86PreScanZX1(void)
 | 
				
			||||||
	    case DEVID(VENDOR_HP, CHIP_ELROY):
 | 
						    case DEVID(VENDOR_HP, CHIP_ELROY):
 | 
				
			||||||
	    case DEVID(VENDOR_HP, CHIP_ZX1_LBA):	/* Mercury */
 | 
						    case DEVID(VENDOR_HP, CHIP_ZX1_LBA):	/* Mercury */
 | 
				
			||||||
	    case DEVID(VENDOR_HP, CHIP_ZX1_AGP8):	/* QuickSilver */
 | 
						    case DEVID(VENDOR_HP, CHIP_ZX1_AGP8):	/* QuickSilver */
 | 
				
			||||||
 | 
						    case DEVID(VENDOR_HP, CHIP_ZX2_LBA):
 | 
				
			||||||
		/* Expected vendor/device IDs */
 | 
							/* Expected vendor/device IDs */
 | 
				
			||||||
		zx1_busno[i] =
 | 
							zx1_busno[i] =
 | 
				
			||||||
		    (unsigned int)IOA_BYTE(i, IOA_SECONDARY_BUS);
 | 
							    (unsigned int)IOA_BYTE(i, IOA_SECONDARY_BUS);
 | 
				
			||||||
| 
						 | 
					@ -951,6 +968,9 @@ xf86PostScanZX1(void)
 | 
				
			||||||
	case DEVID(VENDOR_HP, CHIP_ZX1_IOC):	/* Pluto function 1 */
 | 
						case DEVID(VENDOR_HP, CHIP_ZX1_IOC):	/* Pluto function 1 */
 | 
				
			||||||
	case DEVID(VENDOR_HP, CHIP_ZX1_LBA):	/* Mercury */
 | 
						case DEVID(VENDOR_HP, CHIP_ZX1_LBA):	/* Mercury */
 | 
				
			||||||
	case DEVID(VENDOR_HP, CHIP_ZX1_AGP8):	/* QuickSilver */
 | 
						case DEVID(VENDOR_HP, CHIP_ZX1_AGP8):	/* QuickSilver */
 | 
				
			||||||
 | 
						case DEVID(VENDOR_HP, CHIP_ZX2_SBA):
 | 
				
			||||||
 | 
						case DEVID(VENDOR_HP, CHIP_ZX2_IOC):
 | 
				
			||||||
 | 
						case DEVID(VENDOR_HP, CHIP_ZX2_LBA):
 | 
				
			||||||
	    xfree(pPCI);		/* Remove it */
 | 
						    xfree(pPCI);		/* Remove it */
 | 
				
			||||||
	    continue;
 | 
						    continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue