mirror of
				https://github.com/tiagovignatti/intel-gpu-tools.git
				synced 2025-11-04 12:07:12 +00:00 
			
		
		
		
	tools: remove quick_dump
Remove quick_dump as it has been replaced by the intel_reg tool and move the register definition files to tools/registers. Signed-off-by: Thomas Wood <thomas.wood@intel.com> Acked-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
		
							parent
							
								
									2142a15d49
								
							
						
					
					
						commit
						af97918494
					
				
							
								
								
									
										13
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README
									
									
									
									
									
								
							@ -102,17 +102,6 @@ tools/
 | 
			
		||||
	These tools generally must be run as root, safe for the ones that just
 | 
			
		||||
	decode dumps.
 | 
			
		||||
 | 
			
		||||
tools/quick_dump
 | 
			
		||||
	Quick dumper is a python tool built with SWIG bindings to
 | 
			
		||||
	important libraries exported by the rest of the tool suite. The tool
 | 
			
		||||
	itself is quite straight forward, and should also be a useful example
 | 
			
		||||
	for others wishing to write python based i915 tools.
 | 
			
		||||
 | 
			
		||||
	Note to package maintainers: It is not recommended to package
 | 
			
		||||
	this directory, as the tool is not yet designed for wide usage. If the
 | 
			
		||||
	package is installed via "make install" the users will have to set
 | 
			
		||||
	their python library path appropriately. Use --disable-dumper
 | 
			
		||||
 | 
			
		||||
debugger/
 | 
			
		||||
	This tool is to be used to do shader debugging. It acts like a
 | 
			
		||||
	debug server accepting connections from debug clients such as
 | 
			
		||||
@ -148,9 +137,7 @@ everything (package names may vary):
 | 
			
		||||
	libcairo2-dev
 | 
			
		||||
	libdrm-dev
 | 
			
		||||
	libpciaccess-dev
 | 
			
		||||
	libpython3.3-dev
 | 
			
		||||
	libunwind-dev
 | 
			
		||||
	python-docutils
 | 
			
		||||
	swig2.0
 | 
			
		||||
	x11proto-dri2-dev
 | 
			
		||||
	xutils-dev
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								configure.ac
									
									
									
									
									
								
							@ -131,26 +131,6 @@ if test "x$NOUVEAU" = xyes; then
 | 
			
		||||
fi
 | 
			
		||||
AM_CONDITIONAL(HAVE_NOUVEAU, [test "x$NOUVEAU" = xyes])
 | 
			
		||||
 | 
			
		||||
#Configure options for the python quick-dumper
 | 
			
		||||
AC_ARG_ENABLE(dumper,
 | 
			
		||||
	      AS_HELP_STRING([--disable-dumper],
 | 
			
		||||
			     [Disable the python based register dumper (default: enabled)]),
 | 
			
		||||
			     [DUMPER=$enableval], [DUMPER=auto])
 | 
			
		||||
if test "x$DUMPER" = xauto; then
 | 
			
		||||
	# AX_PYTHON_DEVEL/AX_SWIG_PYTHON are not super friendly and don't
 | 
			
		||||
	# easily allow us to introspect the result of their checks. So if we
 | 
			
		||||
	# find SWING on the system, that's enough to try compiling the dumper.
 | 
			
		||||
	AX_PKG_SWIG(2.0.0, [DUMPER=yes], [DUMPER=no])
 | 
			
		||||
fi
 | 
			
		||||
if test "x$DUMPER" = xyes; then
 | 
			
		||||
	AC_DEFINE(HAVE_DUMPER, 1, [Have dumper support])
 | 
			
		||||
	# SWIG configuration
 | 
			
		||||
	AX_PKG_SWIG(2.0.0, [], [ AC_MSG_ERROR([SWIG 2.0.0 or higher is required to build..]) ])
 | 
			
		||||
	AX_PYTHON_DEVEL([>= '3.0'])
 | 
			
		||||
	AX_SWIG_PYTHON
 | 
			
		||||
fi
 | 
			
		||||
AM_CONDITIONAL(HAVE_DUMPER, [test "x$DUMPER" = xyes])
 | 
			
		||||
 | 
			
		||||
# Define a configure option for the shader debugger
 | 
			
		||||
AC_ARG_ENABLE(shader-debugger, AS_HELP_STRING([--enable-shader-debugger],
 | 
			
		||||
	      [Enable shader debugging support [autodetected]]),
 | 
			
		||||
@ -237,9 +217,9 @@ AC_DEFINE_UNQUOTED(TARGET_CPU_PLATFORM, ["$host_cpu"], [Target platform])
 | 
			
		||||
 | 
			
		||||
files="broadwell cherryview haswell ivybridge sandybridge valleyview skylake"
 | 
			
		||||
for file in $files; do
 | 
			
		||||
	QUICK_DUMP_EXTRA_DIST="$QUICK_DUMP_EXTRA_DIST $file `tr '\n' ' ' < $srcdir/tools/quick_dump/$file`"
 | 
			
		||||
	REGISTERS_EXTRA_DIST="$REGISTERS_EXTRA_DIST $file `tr '\n' ' ' < $srcdir/tools/registers/$file`"
 | 
			
		||||
done
 | 
			
		||||
AC_SUBST(QUICK_DUMP_EXTRA_DIST)
 | 
			
		||||
AC_SUBST(REGISTERS_EXTRA_DIST)
 | 
			
		||||
 | 
			
		||||
AC_CONFIG_FILES([
 | 
			
		||||
		 Makefile
 | 
			
		||||
@ -255,8 +235,8 @@ AC_CONFIG_FILES([
 | 
			
		||||
		 scripts/Makefile
 | 
			
		||||
		 tests/Makefile
 | 
			
		||||
		 tools/Makefile
 | 
			
		||||
		 tools/quick_dump/Makefile
 | 
			
		||||
		 tools/null_state_gen/Makefile
 | 
			
		||||
		 tools/registers/Makefile
 | 
			
		||||
		 debugger/Makefile
 | 
			
		||||
		 debugger/system_routine/Makefile
 | 
			
		||||
		 assembler/Makefile
 | 
			
		||||
@ -284,7 +264,6 @@ echo ""
 | 
			
		||||
echo " • Tools:"
 | 
			
		||||
echo "       Assembler          : ${enable_assembler}"
 | 
			
		||||
echo "       Debugger           : ${enable_debugger}"
 | 
			
		||||
echo "       Python dumper      : ${DUMPER}"
 | 
			
		||||
echo "       Overlay            : X: ${enable_overlay_xlib}, Xv: ${enable_overlay_xvlib}"
 | 
			
		||||
echo ""
 | 
			
		||||
echo " • API-Documentation      : ${enable_gtk_doc}"
 | 
			
		||||
 | 
			
		||||
@ -197,8 +197,7 @@ variable, the directory is scanned for a spec file in this order:
 | 
			
		||||
Register Spec File Format
 | 
			
		||||
-------------------------
 | 
			
		||||
 | 
			
		||||
The register spec format is compatible with the quick_dump.py format, briefly
 | 
			
		||||
described below:
 | 
			
		||||
The register spec format is briefly described below:
 | 
			
		||||
 | 
			
		||||
* Empty lines and lines beginning with "#", ";", or "//" are ignored.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,6 @@
 | 
			
		||||
include Makefile.sources
 | 
			
		||||
 | 
			
		||||
SUBDIRS = null_state_gen
 | 
			
		||||
 | 
			
		||||
if HAVE_DUMPER
 | 
			
		||||
SUBDIRS += quick_dump
 | 
			
		||||
endif
 | 
			
		||||
SUBDIRS = null_state_gen registers
 | 
			
		||||
 | 
			
		||||
AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/lib
 | 
			
		||||
AM_CFLAGS = $(DEBUG_CFLAGS) $(DRM_CFLAGS) $(PCIACCESS_CFLAGS) $(CWARNFLAGS) $(CAIRO_CFLAGS) $(LIBUNWIND_CFLAGS)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								tools/quick_dump/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								tools/quick_dump/.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,2 +0,0 @@
 | 
			
		||||
chipset_wrap_python.c
 | 
			
		||||
chipset.py
 | 
			
		||||
@ -1,34 +0,0 @@
 | 
			
		||||
AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_builddir)/lib $(PYTHON_CPPFLAGS) $(DRM_CFLAGS) $(CAIRO_CFLAGS) -I$(top_srcdir)
 | 
			
		||||
 | 
			
		||||
dist_bin_SCRIPTS = quick_dump.py reg_access.py
 | 
			
		||||
bin_SCRIPTS = chipset.py
 | 
			
		||||
 | 
			
		||||
lib_LTLIBRARIES = I915ChipsetPython.la
 | 
			
		||||
I915ChipsetPython_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS) \
 | 
			
		||||
	-Wl,--no-undefined
 | 
			
		||||
I915ChipsetPython_la_SOURCES = chipset_macro_wrap.c
 | 
			
		||||
nodist_I915ChipsetPython_la_SOURCES = chipset_wrap_python.c
 | 
			
		||||
I915ChipsetPython_la_LIBADD =			\
 | 
			
		||||
	$(top_builddir)/lib/libintel_tools.la	\
 | 
			
		||||
	$(PCIACCESS_LIBS)			\
 | 
			
		||||
	$(DRM_LIBS)				\
 | 
			
		||||
	$(CAIRO_LIBS)				\
 | 
			
		||||
	$(LIBUNWIND_LIBS)			\
 | 
			
		||||
	-lrt					\
 | 
			
		||||
	-lm					\
 | 
			
		||||
	$(NULL)
 | 
			
		||||
 | 
			
		||||
chipset.py: chipset_wrap_python.c
 | 
			
		||||
 | 
			
		||||
chipset_wrap_python.c: chipset.i
 | 
			
		||||
	$(AM_V_GEN)$(SWIG) $(AX_SWIG_PYTHON_OPT) -I/usr/include -I$(top_srcdir)/lib -o $@ $<
 | 
			
		||||
 | 
			
		||||
all-local: I915ChipsetPython.la
 | 
			
		||||
	$(LN_S) -f .libs/I915ChipsetPython.so _chipset.so
 | 
			
		||||
 | 
			
		||||
CLEANFILES = chipset_wrap_python.c chipset.py _chipset.so
 | 
			
		||||
EXTRA_DIST = $(QUICK_DUMP_EXTRA_DIST) \
 | 
			
		||||
	      base_interrupt.txt base_other.txt base_power.txt base_rings.txt \
 | 
			
		||||
	      quick_dump.py \
 | 
			
		||||
	      reg_access.py \
 | 
			
		||||
	      chipset.i
 | 
			
		||||
@ -1,41 +0,0 @@
 | 
			
		||||
%module chipset
 | 
			
		||||
%include "stdint.i"
 | 
			
		||||
%{
 | 
			
		||||
#include <pciaccess.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include "intel_chipset.h"
 | 
			
		||||
#include "intel_io.h"
 | 
			
		||||
extern int is_sandybridge(unsigned short pciid);
 | 
			
		||||
extern int is_ivybridge(unsigned short pciid);
 | 
			
		||||
extern int is_valleyview(unsigned short pciid);
 | 
			
		||||
extern int is_cherryview(unsigned short pciid);
 | 
			
		||||
extern int is_haswell(unsigned short pciid);
 | 
			
		||||
extern int is_broadwell(unsigned short pciid);
 | 
			
		||||
extern int is_skylake(unsigned short pciid);
 | 
			
		||||
extern struct pci_device *intel_get_pci_device();
 | 
			
		||||
extern int intel_register_access_init(struct pci_device *pci_dev, int safe);
 | 
			
		||||
extern uint32_t intel_register_read(uint32_t reg);
 | 
			
		||||
extern void intel_register_write(uint32_t reg, uint32_t val);
 | 
			
		||||
extern void intel_register_access_fini();
 | 
			
		||||
extern int intel_register_access_needs_fakewake();
 | 
			
		||||
extern unsigned short pcidev_to_devid(struct pci_device *pci_dev);
 | 
			
		||||
extern uint32_t intel_dpio_reg_read(uint32_t reg, int phy);
 | 
			
		||||
extern uint32_t intel_flisdsi_reg_read(uint32_t reg);
 | 
			
		||||
%}
 | 
			
		||||
 | 
			
		||||
extern int is_sandybridge(unsigned short pciid);
 | 
			
		||||
extern int is_ivybridge(unsigned short pciid);
 | 
			
		||||
extern int is_valleyview(unsigned short pciid);
 | 
			
		||||
extern int is_cherryview(unsigned short pciid);
 | 
			
		||||
extern int is_haswell(unsigned short pciid);
 | 
			
		||||
extern int is_broadwell(unsigned short pciid);
 | 
			
		||||
extern int is_skylake(unsigned short pciid);
 | 
			
		||||
extern struct pci_device *intel_get_pci_device();
 | 
			
		||||
extern int intel_register_access_init(struct pci_device *pci_dev, int safe);
 | 
			
		||||
extern uint32_t intel_register_read(uint32_t reg);
 | 
			
		||||
extern void intel_register_write(uint32_t reg, uint32_t val);
 | 
			
		||||
extern void intel_register_access_fini();
 | 
			
		||||
extern int intel_register_access_needs_fakewake();
 | 
			
		||||
extern unsigned short pcidev_to_devid(struct pci_device *pci_dev);
 | 
			
		||||
extern uint32_t intel_dpio_reg_read(uint32_t reg, int phy);
 | 
			
		||||
extern uint32_t intel_flisdsi_reg_read(uint32_t reg);
 | 
			
		||||
@ -1,68 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright © 2014 Intel Corporation
 | 
			
		||||
 *
 | 
			
		||||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
 * copy of this software and associated documentation files (the "Software"),
 | 
			
		||||
 * to deal in the Software without restriction, including without limitation
 | 
			
		||||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
			
		||||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 * Software is furnished to do so, subject to the following conditions:
 | 
			
		||||
 *
 | 
			
		||||
 * The above copyright notice and this permission notice (including the next
 | 
			
		||||
 * paragraph) shall be included in all copies or substantial portions of the
 | 
			
		||||
 * Software.
 | 
			
		||||
 *
 | 
			
		||||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 | 
			
		||||
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
			
		||||
 * DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <pciaccess.h>
 | 
			
		||||
#include "intel_chipset.h"
 | 
			
		||||
 | 
			
		||||
int is_sandybridge(unsigned short pciid)
 | 
			
		||||
{
 | 
			
		||||
	return IS_GEN6(pciid);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int is_ivybridge(unsigned short pciid)
 | 
			
		||||
{
 | 
			
		||||
	return IS_IVYBRIDGE(pciid);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int is_valleyview(unsigned short pciid)
 | 
			
		||||
{
 | 
			
		||||
	return IS_VALLEYVIEW(pciid);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int is_cherryview(unsigned short pciid)
 | 
			
		||||
{
 | 
			
		||||
	return IS_CHERRYVIEW(pciid);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int is_haswell(unsigned short pciid)
 | 
			
		||||
{
 | 
			
		||||
	return IS_HASWELL(pciid);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int is_broadwell(unsigned short pciid)
 | 
			
		||||
{
 | 
			
		||||
	return IS_BROADWELL(pciid);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int is_skylake(unsigned short pciid)
 | 
			
		||||
{
 | 
			
		||||
	return IS_SKYLAKE(pciid);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Simple helper because I couldn't make this work in the script */
 | 
			
		||||
unsigned short pcidev_to_devid(struct pci_device *pdev)
 | 
			
		||||
{
 | 
			
		||||
	return pdev->device_id;
 | 
			
		||||
}
 | 
			
		||||
@ -1,117 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
 | 
			
		||||
# register definition format:
 | 
			
		||||
# ('register name', 'register offset', 'register type')
 | 
			
		||||
#
 | 
			
		||||
# register types:
 | 
			
		||||
#  '' - normal register
 | 
			
		||||
#  'DPIO' - DPIO register
 | 
			
		||||
#
 | 
			
		||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
 | 
			
		||||
 | 
			
		||||
import argparse
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
import ast
 | 
			
		||||
import subprocess
 | 
			
		||||
import chipset
 | 
			
		||||
import reg_access as reg
 | 
			
		||||
 | 
			
		||||
# Ignore lines which are considered comments
 | 
			
		||||
def ignore_line(line):
 | 
			
		||||
    if not line.strip():
 | 
			
		||||
        return True
 | 
			
		||||
    if len(line) > 1:
 | 
			
		||||
        if line[1] == '/' and line[0] == '/':
 | 
			
		||||
            return True
 | 
			
		||||
    if len(line) > 0:
 | 
			
		||||
        if line[0] == '#' or line[0] == ';':
 | 
			
		||||
            return True
 | 
			
		||||
    return False
 | 
			
		||||
 | 
			
		||||
def parse_file(file):
 | 
			
		||||
    print('{0:^10s} | {1:^33s} | {2:^10s}'. format('offset', file.name, 'value'))
 | 
			
		||||
    print('-' * 59)
 | 
			
		||||
    for line in file:
 | 
			
		||||
        if ignore_line(line):
 | 
			
		||||
            continue
 | 
			
		||||
        register = ast.literal_eval(line)
 | 
			
		||||
        intreg = int(register[1], 16)
 | 
			
		||||
        if register[2] == 'FLISDSI':
 | 
			
		||||
            val = reg.flisdsi_read(intreg)
 | 
			
		||||
        elif register[2] == 'DPIO':
 | 
			
		||||
            val = reg.dpio_read(intreg, 0)
 | 
			
		||||
        elif register[2] == 'DPIO2':
 | 
			
		||||
            val = reg.dpio_read(intreg, 1)
 | 
			
		||||
        else:
 | 
			
		||||
            if register[2] != '':
 | 
			
		||||
                intreg = intreg + int(register[2], 16)
 | 
			
		||||
            val = reg.read(intreg)
 | 
			
		||||
        print('{0:#010x} | {1:<33} | {2:#010x}'.format(intreg, register[0], val))
 | 
			
		||||
    print('')
 | 
			
		||||
 | 
			
		||||
def walk_base_files():
 | 
			
		||||
    for root, dirs, files in os.walk('.'):
 | 
			
		||||
        for name in files:
 | 
			
		||||
            if name.startswith(("base_")):
 | 
			
		||||
                file = open(name.rstrip(), 'r')
 | 
			
		||||
                parse_file(file)
 | 
			
		||||
 | 
			
		||||
def autodetect_chipset():
 | 
			
		||||
    pci_dev = chipset.intel_get_pci_device()
 | 
			
		||||
    devid = chipset.pcidev_to_devid(pci_dev)
 | 
			
		||||
    if chipset.is_sandybridge(devid):
 | 
			
		||||
        return open('sandybridge', 'r')
 | 
			
		||||
    elif chipset.is_ivybridge(devid):
 | 
			
		||||
        return open('ivybridge', 'r')
 | 
			
		||||
    elif chipset.is_cherryview(devid):
 | 
			
		||||
        return open('cherryview', 'r')
 | 
			
		||||
    elif chipset.is_valleyview(devid):
 | 
			
		||||
        return open('valleyview', 'r')
 | 
			
		||||
    elif chipset.is_haswell(devid):
 | 
			
		||||
        return open('haswell', 'r')
 | 
			
		||||
    elif chipset.is_broadwell(devid):
 | 
			
		||||
        return open('broadwell', 'r')
 | 
			
		||||
    elif chipset.is_skylake(devid):
 | 
			
		||||
        return open('skylake', 'r')
 | 
			
		||||
    else:
 | 
			
		||||
        print("Autodetect of devid " + hex(devid) + " failed")
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    parser = argparse.ArgumentParser(description='Dumb register dumper.')
 | 
			
		||||
    parser.add_argument('-b', '--baseless',
 | 
			
		||||
            action='store_true', default=False,
 | 
			
		||||
            help='baseless mode, ignore files starting with base_')
 | 
			
		||||
    parser.add_argument('-f', '--file',
 | 
			
		||||
            type=argparse.FileType('r'), default=None)
 | 
			
		||||
    parser.add_argument('profile', nargs='?',
 | 
			
		||||
            type=argparse.FileType('r'), default=None)
 | 
			
		||||
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    if reg.init() == False:
 | 
			
		||||
        print("Register initialization failed")
 | 
			
		||||
        sys.exit()
 | 
			
		||||
 | 
			
		||||
    # Put us where the script is
 | 
			
		||||
    os.chdir(os.path.dirname(sys.argv[0]))
 | 
			
		||||
 | 
			
		||||
    # specifying a file trumps all other things
 | 
			
		||||
    if args.file != None:
 | 
			
		||||
        parse_file(args.file)
 | 
			
		||||
        sys.exit()
 | 
			
		||||
 | 
			
		||||
    #parse anything named base_ these are assumed to apply for all gens.
 | 
			
		||||
    if args.baseless == False:
 | 
			
		||||
        walk_base_files()
 | 
			
		||||
 | 
			
		||||
    if args.profile == None:
 | 
			
		||||
        args.profile = autodetect_chipset()
 | 
			
		||||
 | 
			
		||||
    if args.profile == None:
 | 
			
		||||
        sys.exit()
 | 
			
		||||
 | 
			
		||||
    for extra in args.profile:
 | 
			
		||||
        extra_file = open(extra.rstrip(), 'r')
 | 
			
		||||
        parse_file(extra_file)
 | 
			
		||||
@ -1,62 +0,0 @@
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
 | 
			
		||||
import chipset
 | 
			
		||||
 | 
			
		||||
def read(reg):
 | 
			
		||||
    val = chipset.intel_register_read(reg)
 | 
			
		||||
    return val
 | 
			
		||||
 | 
			
		||||
def write(reg, val):
 | 
			
		||||
    chipset.intel_register_write(reg, val)
 | 
			
		||||
 | 
			
		||||
def gen6_forcewake_get():
 | 
			
		||||
    write(0xa18c, 0x1)
 | 
			
		||||
    read(0xa180)
 | 
			
		||||
 | 
			
		||||
def mt_forcewake_get():
 | 
			
		||||
    write(0xa188, 0x10001)
 | 
			
		||||
    read(0xa180)
 | 
			
		||||
 | 
			
		||||
def vlv_forcewake_get():
 | 
			
		||||
    write(0x1300b0, 0x10001)
 | 
			
		||||
    read(0x1300b4)
 | 
			
		||||
 | 
			
		||||
# don't be clever, just try all possibilities
 | 
			
		||||
def get_wake():
 | 
			
		||||
    gen6_forcewake_get()
 | 
			
		||||
    mt_forcewake_get()
 | 
			
		||||
    vlv_forcewake_get()
 | 
			
		||||
 | 
			
		||||
def dpio_read(reg, phy):
 | 
			
		||||
    phy = int(phy)
 | 
			
		||||
 | 
			
		||||
    val = chipset.intel_dpio_reg_read(reg, phy)
 | 
			
		||||
    return val
 | 
			
		||||
 | 
			
		||||
def flisdsi_read(reg):
 | 
			
		||||
    val = chipset.intel_flisdsi_reg_read(reg)
 | 
			
		||||
    return val
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def init():
 | 
			
		||||
    pci_dev = chipset.intel_get_pci_device()
 | 
			
		||||
    ret = chipset.intel_register_access_init(pci_dev, 0)
 | 
			
		||||
    if ret != 0:
 | 
			
		||||
        print("Register access init failed");
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
    if chipset.intel_register_access_needs_fakewake():
 | 
			
		||||
        print("Forcing forcewake. Don't expect your system to work after this.")
 | 
			
		||||
        get_wake()
 | 
			
		||||
 | 
			
		||||
    return True
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    import sys
 | 
			
		||||
 | 
			
		||||
    if init() == False:
 | 
			
		||||
        sys.exit()
 | 
			
		||||
 | 
			
		||||
    reg = sys.argv[1]
 | 
			
		||||
    print(hex(read(int(reg,16))))
 | 
			
		||||
    chipset.intel_register_access_fini()
 | 
			
		||||
							
								
								
									
										1
									
								
								tools/registers/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tools/registers/Makefile.am
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
EXTRA_DIST = ${REGISTERS_EXTRA_DIST}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user