From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH 09/10] quick_dump: Connect libpciaccess and other utils Date: Sun, 3 Feb 2013 10:15:58 -0800 Message-ID: <20130203181557.GB22639@lundgren.kumite> References: <1359850082-14793-1-git-send-email-ben@bwidawsk.net> <1359850082-14793-10-git-send-email-ben@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from shiva.chad-versace.us (209-20-75-48.static.cloud-ips.com [209.20.75.48]) by gabe.freedesktop.org (Postfix) with ESMTP id BF114E5CDE for ; Sun, 3 Feb 2013 10:14:30 -0800 (PST) Content-Disposition: inline In-Reply-To: <1359850082-14793-10-git-send-email-ben@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org Cc: vincent.beng.keat.cheah@intel.com, alan.previn.teres.alexis@intel.com List-Id: intel-gfx@lists.freedesktop.org On Sat, Feb 02, 2013 at 04:08:01PM -0800, Ben Widawsky wrote: > Make a register access library with sample to do register reads > > Signed-off-by: Ben Widawsky > --- > tools/quick_dump/Makefile.am | 14 +++++++++----- > tools/quick_dump/chipset.i | 16 ++++++++++++++-- > tools/quick_dump/intel_chipset.c | 7 +++++++ > tools/quick_dump/quick_dump.py | 5 ++--- > tools/quick_dump/reg_access.py | 25 +++++++++++++++++++++++++ > 5 files changed, 57 insertions(+), 10 deletions(-) > create mode 100755 tools/quick_dump/reg_access.py > > diff --git a/tools/quick_dump/Makefile.am b/tools/quick_dump/Makefile.am > index 6c04dd5..4711830 100644 > --- a/tools/quick_dump/Makefile.am > +++ b/tools/quick_dump/Makefile.am > @@ -1,14 +1,18 @@ > BUILT_SOURCES = chipset_wrap_python.c > > -bin_SCRIPTS = quick_dump.py chipset.py > +bin_SCRIPTS = quick_dump.py chipset.py reg_access.py > > lib_LTLIBRARIES = I915ChipsetPython.la > -I915ChipsetPython_la_CFLAGS = -I$(top_srcdir)/lib $(PYTHON_CPPFLAGS) > -I915ChipsetPython_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS) > -I915ChipsetPython_la_SOURCES = chipset_wrap_python.c intel_chipset.c > +I915ChipsetPython_la_CFLAGS = -I$(top_srcdir)/lib $(PYTHON_CPPFLAGS) $(CFLAGS) -I/usr/include/libdrm/ > +I915ChipsetPython_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS) -lpciaccess > +I915ChipsetPython_la_SOURCES = chipset_wrap_python.c intel_chipset.c \ > + ../../lib/intel_drm.c \ > + ../../lib/intel_pci.c \ > + ../../lib/intel_reg_map.c \ > + ../../lib/intel_mmio.c I should probably $(top_srcdir)/lib these sources. Fixed locally. > > chipset_wrap_python.c: chipset.i > - $(SWIG) $(AX_SWIG_PYTHON_OPT) -I$(top_srcdir)/lib -o $@ $< > + $(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 > diff --git a/tools/quick_dump/chipset.i b/tools/quick_dump/chipset.i > index 16c4932..2f4f5ef 100644 > --- a/tools/quick_dump/chipset.i > +++ b/tools/quick_dump/chipset.i > @@ -1,12 +1,24 @@ > -%module chipset > +%module chipset > +%include "stdint.i" > %{ > +#include > +#include > #include "intel_chipset.h" > extern int is_sandybridge(unsigned short pciid); > extern int is_ivybridge(unsigned short pciid); > extern int is_valleyview(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_access_fini(); > +extern unsigned short pcidev_to_devid(struct pci_device *pci_dev); > %} > > -%include "intel_chipset.h" > extern int is_sandybridge(unsigned short pciid); > extern int is_ivybridge(unsigned short pciid); > extern int is_valleyview(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_access_fini(); > +extern unsigned short pcidev_to_devid(struct pci_device *pci_dev); > diff --git a/tools/quick_dump/intel_chipset.c b/tools/quick_dump/intel_chipset.c > index b242ffc..d6e7f91 100644 > --- a/tools/quick_dump/intel_chipset.c > +++ b/tools/quick_dump/intel_chipset.c > @@ -1,3 +1,4 @@ > +#include > #include "intel_chipset.h" > > int is_sandybridge(unsigned short pciid) > @@ -14,3 +15,9 @@ int is_valleyview(unsigned short pciid) > { > return IS_VALLEYVIEW(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; > +} > diff --git a/tools/quick_dump/quick_dump.py b/tools/quick_dump/quick_dump.py > index 59cae1f..44aa2ba 100755 > --- a/tools/quick_dump/quick_dump.py > +++ b/tools/quick_dump/quick_dump.py > @@ -32,9 +32,8 @@ if args.baseless == False: > parse_file(file) > > if args.autodetect: > - sysfs_file = open('/sys/class/drm/card0/device/device', 'r') > - devid_str = sysfs_file.read() > - devid = int(devid_str, 16) > + pci_dev = chipset.intel_get_pci_device() > + devid = chipset.pcidev_to_devid(pci_dev) > if chipset.is_sandybridge(devid): > args.profile = open('sandybridge', 'r') > elif chipset.is_ivybridge(devid): > diff --git a/tools/quick_dump/reg_access.py b/tools/quick_dump/reg_access.py > new file mode 100755 > index 0000000..0f63424 > --- /dev/null > +++ b/tools/quick_dump/reg_access.py > @@ -0,0 +1,25 @@ > +#!/usr/bin/env python3 > +import chipset > + > +def read(reg): > + reg = int(reg, 16) > + val = chipset.intel_register_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 > + return True > + > +if __name__ == "__main__": > + import sys > + > + if init() == False: > + sys.exit() > + > + reg = sys.argv[1] > + print(hex(read(reg))) > + chipset.intel_register_access_fini() > -- > 1.8.1.2 > -- Ben Widawsky, Intel Open Source Technology Center