From c78c197685f0464ca9d7c6c59f742cf833b0ba5a Mon Sep 17 00:00:00 2001
From: James De Vries <shadylives@gmail.com>
Date: Wed, 10 Oct 2012 09:19:33 +0200
Subject: [PATCH 01/26] output pci subsystem information (#611)
---
src/core/hw.cc | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++-
src/core/hw.h | 6 ++++++
src/core/pci.cc | 3 ++-
3 files changed, 59 insertions(+), 2 deletions(-)
diff --git a/src/core/hw.cc b/src/core/hw.cc
index e2559ff..44e2bd8 100644
--- a/src/core/hw.cc
+++ b/src/core/hw.cc
@@ -28,7 +28,7 @@ struct hwNode_i
{
hwClass deviceclass;
string id, vendor, product, version, date, serial, slot, handle, description,
- businfo, physid, dev, modalias;
+ businfo, physid, dev, modalias, subsysvendor, subsysproduct;
bool enabled;
bool claimed;
unsigned long long start;
@@ -396,6 +396,22 @@ void hwNode::setVendor(const string & vendor)
}
+string hwNode::getSubsysVendor() const
+{
+ if (This)
+ return This->subsysvendor;
+ else
+ return "";
+}
+
+
+void hwNode::setSubsysVendor(const string & subsysvendor)
+{
+ if (This)
+ This->subsysvendor = strip(subsysvendor);
+}
+
+
string hwNode::getProduct() const
{
if (This)
@@ -412,6 +428,22 @@ void hwNode::setProduct(const string & product)
}
+string hwNode::getSubsysProduct() const
+{
+ if (This)
+ return This->subsysproduct;
+ else
+ return "";
+}
+
+
+void hwNode::setSubsysProduct(const string & subsysproduct)
+{
+ if (This)
+ This->subsysproduct = strip(subsysproduct);
+}
+
+
string hwNode::getVersion() const
{
if (This)
@@ -1726,6 +1758,24 @@ string hwNode::asXML(unsigned level)
out << endl;
}
+ if (getSubsysProduct() != "")
+ {
+ out << spaces(2*level+1);
+ out << "<subsysproduct>";
+ out << escape(getSubsysProduct());
+ out << "</subsysproduct>";
+ out << endl;
+ }
+
+ if (getSubsysVendor() != "")
+ {
+ out << spaces(2*level+1);
+ out << "<subsysvendor>";
+ out << escape(getSubsysVendor());
+ out << "</subsysvendor>";
+ out << endl;
+ }
+
if (getBusInfo() != "")
{
out << spaces(2*level+1);
diff --git a/src/core/hw.h b/src/core/hw.h
index 4211a82..d61bb98 100644
--- a/src/core/hw.h
+++ b/src/core/hw.h
@@ -124,9 +124,15 @@ class hwNode
string getVendor() const;
void setVendor(const string & vendor);
+ string getSubsysVendor() const;
+ void setSubsysVendor(const string & subsysvendor);
+
string getProduct() const;
void setProduct(const string & product);
+ string getSubsysProduct() const;
+ void setSubsysProduct(const string & subsysproduct);
+
string getVersion() const;
void setVersion(const string & version);
diff --git a/src/core/pci.cc b/src/core/pci.cc
index 7e6b98d..85a5481 100644
--- a/src/core/pci.cc
+++ b/src/core/pci.cc
@@ -956,7 +956,8 @@ static hwNode *scan_pci_dev(struct pci_dev &d, hwNode & n)
device->setVendor(get_device_description(d.vendor_id)+(enabled("output:numeric")?" ["+tohex(d.vendor_id)+"]":""));
device->setVersion(revision);
device->setProduct(get_device_description(d.vendor_id, d.device_id)+(enabled("output:numeric")?" ["+tohex(d.vendor_id)+":"+tohex(d.device_id)+"]":""));
-
+ device->setSubsysVendor(get_device_description(subsys_v)+(enabled("output:numeric")?" ["+tohex(subsys_v)+"]":""));
+ device->setSubsysProduct(get_device_description(subsys_v, subsys_d)+(enabled("output:numeric")?" ["+tohex(subsys_v)+":"+tohex(subsys_d)+"]":""));
if (cmd & PCI_COMMAND_MASTER)
device->addCapability("bus master", "bus mastering");
if (cmd & PCI_COMMAND_VGA_PALETTE)
--
2.10.2