[coreboot-gerrit] Change in coreboot[master]: util/sconfig: Get rid of bus pointer in device structure

Furquan Shaikh (Code Review) gerrit at coreboot.org
Thu May 31 17:02:20 CEST 2018


Furquan Shaikh has uploaded this change for review. ( https://review.coreboot.org/26736


Change subject: util/sconfig: Get rid of bus pointer in device structure
......................................................................

util/sconfig: Get rid of bus pointer in device structure

The only reason bus pointer existed in device structure in sconfig was
to allow a node to point to the parent which could be a chip and bus
which is the true parent in device tree hierarchy. Now that chip is no
longer a device, there is no need for separate bus and parent
pointers. This change gets rid of the redundant bus pointer in struct
device in sconfig.

BUG=b:80081934
TEST=Verified that static.c generated for all boards built by abuild
is same with and without this change.

Change-Id: I21f8fe1545a9ed53d66d6d4462df4a5d63023844
Signed-off-by: Furquan Shaikh <furquan at google.com>
---
M util/sconfig/main.c
M util/sconfig/sconfig.h
M util/sconfig/sconfig.tab.c_shipped
M util/sconfig/sconfig.y
4 files changed, 20 insertions(+), 27 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/36/26736/1

diff --git a/util/sconfig/main.c b/util/sconfig/main.c
index 373eb87..41e850c 100644
--- a/util/sconfig/main.c
+++ b/util/sconfig/main.c
@@ -50,7 +50,6 @@
 	.path = " .type = DEVICE_PATH_ROOT ",
 	.ops = "&default_dev_ops_root",
 	.parent = &root,
-	.bus = &root,
 	.enabled = 1
 };
 
@@ -107,13 +106,12 @@
 	return c;
 }
 
-static struct device *new_dev(struct device *parent, struct device *bus)
+static struct device *new_dev(struct device *parent)
 {
 	struct device *dev = malloc(sizeof(struct device));
 	memset(dev, 0, sizeof(struct device));
 	dev->id = ++count;
 	dev->parent = parent;
-	dev->bus = bus;
 	dev->subsystem_vendor = -1;
 	dev->subsystem_device = -1;
 	head->next = dev;
@@ -123,7 +121,7 @@
 
 static int device_match(struct device *a, struct device *b)
 {
-	if ((a->bustype == b->bustype) && (a->bus == b->bus)
+	if ((a->bustype == b->bustype) && (a->parent == b->parent)
 	    && (a->path_a == b->path_a) && (a->path_b == b->path_b))
 		return 1;
 	return 0;
@@ -242,12 +240,12 @@
 	return new_chip;
 }
 
-struct device *new_device(struct device *parent, struct device *busdev,
-			  struct chip *chip, const int bus, const char *devnum,
+struct device *new_device(struct device *parent, struct chip *chip,
+			  const int bustype, const char *devnum,
 			  int enabled)
 {
-	struct device *new_d = new_dev(parent, busdev);
-	new_d->bustype = bus;
+	struct device *new_d = new_dev(parent);
+	new_d->bustype = bustype;
 
 	char *tmp;
 	new_d->path_a = strtol(devnum, &tmp, 16);
@@ -274,7 +272,7 @@
 	lastdev->nextdev = new_d;
 	lastdev = new_d;
 
-	switch (bus) {
+	switch (bustype) {
 	case PCI:
 		new_d->path = ".type=DEVICE_PATH_PCI,{.pci={ .devfn = PCI_DEVFN(0x%x,%d)}}";
 		break;
@@ -332,7 +330,7 @@
 	while (d) {
 		int link = 0;
 		struct device *cmp = d->next_sibling;
-		while (cmp && (cmp->bus == d->bus) && (cmp->path_a == d->path_a)
+		while (cmp && (cmp->parent == d->parent) && (cmp->path_a == d->path_a)
 		       && (cmp->path_b == d->path_b)) {
 			if (!cmp->used) {
 				if (device_match(d, cmp)) {
@@ -468,8 +466,8 @@
 		fprintf(fil, "#if !DEVTREE_EARLY\n");
 		fprintf(fil, "\t.ops = %s,\n", (ptr->ops) ? (ptr->ops) : "0");
 		fprintf(fil, "#endif\n");
-		fprintf(fil, "\t.bus = &%s_links[%d],\n", ptr->bus->name,
-			ptr->bus->link);
+		fprintf(fil, "\t.bus = &%s_links[%d],\n", ptr->parent->name,
+			ptr->parent->link);
 		fprintf(fil, "\t.path = {");
 		fprintf(fil, ptr->path, ptr->path_a, ptr->path_b);
 		fprintf(fil, "},\n");
diff --git a/util/sconfig/sconfig.h b/util/sconfig/sconfig.h
index b707448..49e22ad 100644
--- a/util/sconfig/sconfig.h
+++ b/util/sconfig/sconfig.h
@@ -85,7 +85,6 @@
 	struct pci_irq_info pci_irq_info[4];
 
 	struct device *parent;
-	struct device *bus;
 	struct device *next;
 	struct device *nextdev;
 	struct device *children;
@@ -110,8 +109,8 @@
 
 void postprocess_devtree(void);
 struct chip *new_chip(char *path);
-struct device *new_device(struct device *parent, struct device *busdev,
-			  struct chip *chip, const int bus, const char *devnum,
+struct device *new_device(struct device *parent, struct chip *chip,
+			  const int bustype, const char *devnum,
 			  int enabled);
 void alias_siblings(struct device *d);
 void add_resource(struct device *dev, int type, int index, int base);
diff --git a/util/sconfig/sconfig.tab.c_shipped b/util/sconfig/sconfig.tab.c_shipped
index e0d63d4..e001b31 100644
--- a/util/sconfig/sconfig.tab.c_shipped
+++ b/util/sconfig/sconfig.tab.c_shipped
@@ -85,7 +85,7 @@
 int yylex();
 void yyerror(const char *s);
 
-static struct device *cur_parent, *cur_bus;
+static struct device *cur_parent;
  static struct chip *cur_chip;
 
 
@@ -487,8 +487,8 @@
 static const yytype_uint8 yyrline[] =
 {
        0,    36,    36,    36,    38,    38,    38,    38,    40,    40,
-      40,    40,    40,    40,    42,    42,    51,    51,    63,    66,
-      69,    72,    75
+      40,    40,    40,    40,    42,    42,    51,    51,    61,    64,
+      67,    70,    73
 };
 #endif
 
@@ -1287,7 +1287,7 @@
     {
         case 2:
 
-    { cur_parent = cur_bus = head; }
+    { cur_parent = head; }
 
     break;
 
@@ -1318,9 +1318,8 @@
   case 16:
 
     {
-	(yyval.device) = new_device(cur_parent, cur_bus, cur_chip, (yyvsp[-2].number), (yyvsp[-1].string), (yyvsp[0].number));
+	(yyval.device) = new_device(cur_parent, cur_chip, (yyvsp[-2].number), (yyvsp[-1].string), (yyvsp[0].number));
 	cur_parent = (yyval.device);
-	cur_bus = (yyval.device);
 }
 
     break;
@@ -1329,7 +1328,6 @@
 
     {
 	cur_parent = (yyvsp[-2].device)->parent;
-	cur_bus = (yyvsp[-2].device)->bus;
 	fold_in((yyvsp[-2].device));
 	alias_siblings((yyvsp[-2].device)->children);
 }
diff --git a/util/sconfig/sconfig.y b/util/sconfig/sconfig.y
index e8d6fd3..67cc6d3 100755
--- a/util/sconfig/sconfig.y
+++ b/util/sconfig/sconfig.y
@@ -20,7 +20,7 @@
 int yylex();
 void yyerror(const char *s);
 
-static struct device *cur_parent, *cur_bus;
+static struct device *cur_parent;
  static struct chip *cur_chip;
 
 %}
@@ -33,7 +33,7 @@
 
 %token CHIP DEVICE REGISTER BOOL BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC CPU_CLUSTER CPU DOMAIN IRQ DRQ IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO
 %%
-devtree: { cur_parent = cur_bus = head; } chip { postprocess_devtree(); } ;
+devtree: { cur_parent = head; } chip { postprocess_devtree(); } ;
 
 chipchildren: chipchildren device | chipchildren chip | chipchildren registers | /* empty */ ;
 
@@ -49,13 +49,11 @@
 };
 
 device: DEVICE BUS NUMBER /* == devnum */ BOOL {
-	$<device>$ = new_device(cur_parent, cur_bus, cur_chip, $<number>2, $<string>3, $<number>4);
+	$<device>$ = new_device(cur_parent, cur_chip, $<number>2, $<string>3, $<number>4);
 	cur_parent = $<device>$;
-	cur_bus = $<device>$;
 }
 	devicechildren END {
 	cur_parent = $<device>5->parent;
-	cur_bus = $<device>5->bus;
 	fold_in($<device>5);
 	alias_siblings($<device>5->children);
 };

-- 
To view, visit https://review.coreboot.org/26736
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I21f8fe1545a9ed53d66d6d4462df4a5d63023844
Gerrit-Change-Number: 26736
Gerrit-PatchSet: 1
Gerrit-Owner: Furquan Shaikh <furquan at google.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180531/bc6080dc/attachment-0001.html>


More information about the coreboot-gerrit mailing list