1fa225cbcSrjs/* 2fa225cbcSrjs * Copyright © 2007 Intel Corporation 3fa225cbcSrjs * 4fa225cbcSrjs * Permission is hereby granted, free of charge, to any person obtaining a 5fa225cbcSrjs * copy of this software and associated documentation files (the "Software"), 6fa225cbcSrjs * to deal in the Software without restriction, including without limitation 7fa225cbcSrjs * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8fa225cbcSrjs * and/or sell copies of the Software, and to permit persons to whom the 9fa225cbcSrjs * Software is furnished to do so, subject to the following conditions: 10fa225cbcSrjs * 11fa225cbcSrjs * The above copyright notice and this permission notice (including the next 12fa225cbcSrjs * paragraph) shall be included in all copies or substantial portions of the 13fa225cbcSrjs * Software. 14fa225cbcSrjs * 15fa225cbcSrjs * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16fa225cbcSrjs * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17fa225cbcSrjs * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18fa225cbcSrjs * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19fa225cbcSrjs * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20fa225cbcSrjs * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21fa225cbcSrjs * DEALINGS IN THE SOFTWARE. 22fa225cbcSrjs * 23fa225cbcSrjs * Authors: 24fa225cbcSrjs * Eric Anholt <eric@anholt.net> 25fa225cbcSrjs * 26fa225cbcSrjs */ 27fa225cbcSrjs 28fa225cbcSrjs#include <stdio.h> 29fa225cbcSrjs#include <stdlib.h> 30fa225cbcSrjs#include <string.h> 31fa225cbcSrjs#include <stdarg.h> 32fa225cbcSrjs#include <err.h> 33fa225cbcSrjs 34fa225cbcSrjs#include "reg_dumper.h" 35fa225cbcSrjs 36fa225cbcSrjsint main(int argc, char **argv) 37fa225cbcSrjs{ 38fa225cbcSrjs struct pci_device *dev; 39fa225cbcSrjs I830Rec i830; 40fa225cbcSrjs ScrnInfoRec scrn; 41fa225cbcSrjs int err, mmio_bar; 42fa225cbcSrjs void *mmio; 43fa225cbcSrjs 44fa225cbcSrjs err = pci_system_init(); 45fa225cbcSrjs if (err != 0) { 46fa225cbcSrjs fprintf(stderr, "Couldn't initialize PCI system: %s\n", strerror(err)); 47fa225cbcSrjs exit(1); 48fa225cbcSrjs } 49fa225cbcSrjs 50fa225cbcSrjs /* Grab the graphics card */ 51fa225cbcSrjs dev = pci_device_find_by_slot(0, 0, 2, 0); 52fa225cbcSrjs if (dev == NULL) 53fa225cbcSrjs errx(1, "Couldn't find graphics card"); 54fa225cbcSrjs 55fa225cbcSrjs err = pci_device_probe(dev); 56fa225cbcSrjs if (err != 0) { 57fa225cbcSrjs fprintf(stderr, "Couldn't probe graphics card: %s\n", strerror(err)); 58fa225cbcSrjs exit(1); 59fa225cbcSrjs } 60fa225cbcSrjs 61fa225cbcSrjs if (dev->vendor_id != 0x8086) 62fa225cbcSrjs errx(1, "Graphics card is non-intel"); 63fa225cbcSrjs 64fa225cbcSrjs i830.PciInfo = dev; 65fa225cbcSrjs 66fa225cbcSrjs mmio_bar = IS_I9XX((&i830)) ? 0 : 1; 67fa225cbcSrjs 68fa225cbcSrjs err = pci_device_map_range (dev, 69fa225cbcSrjs dev->regions[mmio_bar].base_addr, 70fa225cbcSrjs dev->regions[mmio_bar].size, 71fa225cbcSrjs PCI_DEV_MAP_FLAG_WRITABLE, 72fa225cbcSrjs &mmio); 73fa225cbcSrjs 74fa225cbcSrjs if (err != 0) { 75fa225cbcSrjs fprintf(stderr, "Couldn't map MMIO region: %s\n", strerror(err)); 76fa225cbcSrjs exit(1); 77fa225cbcSrjs } 78fa225cbcSrjs i830.mmio = mmio; 79fa225cbcSrjs 80fa225cbcSrjs scrn.scrnIndex = 0; 81fa225cbcSrjs scrn.pI830 = &i830; 82fa225cbcSrjs 83fa225cbcSrjs i830DumpRegs(&scrn); 84fa225cbcSrjs 85fa225cbcSrjs return 0; 86fa225cbcSrjs} 87fa225cbcSrjs 88fa225cbcSrjsvoid xf86DrvMsg(int scrnIndex, int severity, const char *format, ...) 89fa225cbcSrjs{ 90fa225cbcSrjs va_list va; 91fa225cbcSrjs 92fa225cbcSrjs switch (severity) { 93fa225cbcSrjs case X_INFO: 94fa225cbcSrjs printf("(II): "); 95fa225cbcSrjs break; 96fa225cbcSrjs case X_WARNING: 97fa225cbcSrjs printf("(WW): "); 98fa225cbcSrjs break; 99fa225cbcSrjs case X_ERROR: 100fa225cbcSrjs printf("(EE): "); 101fa225cbcSrjs break; 102fa225cbcSrjs } 103fa225cbcSrjs 104fa225cbcSrjs va_start(va, format); 105fa225cbcSrjs vprintf(format, va); 106fa225cbcSrjs va_end(va); 107fa225cbcSrjs} 108