<p>Furquan Shaikh has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26736">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">util/sconfig: Get rid of bus pointer in device structure<br><br>The only reason bus pointer existed in device structure in sconfig was<br>to allow a node to point to the parent which could be a chip and bus<br>which is the true parent in device tree hierarchy. Now that chip is no<br>longer a device, there is no need for separate bus and parent<br>pointers. This change gets rid of the redundant bus pointer in struct<br>device in sconfig.<br><br>BUG=b:80081934<br>TEST=Verified that static.c generated for all boards built by abuild<br>is same with and without this change.<br><br>Change-Id: I21f8fe1545a9ed53d66d6d4462df4a5d63023844<br>Signed-off-by: Furquan Shaikh <furquan@google.com><br>---<br>M util/sconfig/main.c<br>M util/sconfig/sconfig.h<br>M util/sconfig/sconfig.tab.c_shipped<br>M util/sconfig/sconfig.y<br>4 files changed, 20 insertions(+), 27 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/36/26736/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/util/sconfig/main.c b/util/sconfig/main.c</span><br><span>index 373eb87..41e850c 100644</span><br><span>--- a/util/sconfig/main.c</span><br><span>+++ b/util/sconfig/main.c</span><br><span>@@ -50,7 +50,6 @@</span><br><span> .path = " .type = DEVICE_PATH_ROOT ",</span><br><span> .ops = "&default_dev_ops_root",</span><br><span> .parent = &root,</span><br><span style="color: hsl(0, 100%, 40%);">- .bus = &root,</span><br><span> .enabled = 1</span><br><span> };</span><br><span> </span><br><span>@@ -107,13 +106,12 @@</span><br><span> return c;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static struct device *new_dev(struct device *parent, struct device *bus)</span><br><span style="color: hsl(120, 100%, 40%);">+static struct device *new_dev(struct device *parent)</span><br><span> {</span><br><span> struct device *dev = malloc(sizeof(struct device));</span><br><span> memset(dev, 0, sizeof(struct device));</span><br><span> dev->id = ++count;</span><br><span> dev->parent = parent;</span><br><span style="color: hsl(0, 100%, 40%);">- dev->bus = bus;</span><br><span> dev->subsystem_vendor = -1;</span><br><span> dev->subsystem_device = -1;</span><br><span> head->next = dev;</span><br><span>@@ -123,7 +121,7 @@</span><br><span> </span><br><span> static int device_match(struct device *a, struct device *b)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- if ((a->bustype == b->bustype) && (a->bus == b->bus)</span><br><span style="color: hsl(120, 100%, 40%);">+ if ((a->bustype == b->bustype) && (a->parent == b->parent)</span><br><span> && (a->path_a == b->path_a) && (a->path_b == b->path_b))</span><br><span> return 1;</span><br><span> return 0;</span><br><span>@@ -242,12 +240,12 @@</span><br><span> return new_chip;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct device *new_device(struct device *parent, struct device *busdev,</span><br><span style="color: hsl(0, 100%, 40%);">- struct chip *chip, const int bus, const char *devnum,</span><br><span style="color: hsl(120, 100%, 40%);">+struct device *new_device(struct device *parent, struct chip *chip,</span><br><span style="color: hsl(120, 100%, 40%);">+ const int bustype, const char *devnum,</span><br><span> int enabled)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct device *new_d = new_dev(parent, busdev);</span><br><span style="color: hsl(0, 100%, 40%);">- new_d->bustype = bus;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct device *new_d = new_dev(parent);</span><br><span style="color: hsl(120, 100%, 40%);">+ new_d->bustype = bustype;</span><br><span> </span><br><span> char *tmp;</span><br><span> new_d->path_a = strtol(devnum, &tmp, 16);</span><br><span>@@ -274,7 +272,7 @@</span><br><span> lastdev->nextdev = new_d;</span><br><span> lastdev = new_d;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- switch (bus) {</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (bustype) {</span><br><span> case PCI:</span><br><span> new_d->path = ".type=DEVICE_PATH_PCI,{.pci={ .devfn = PCI_DEVFN(0x%x,%d)}}";</span><br><span> break;</span><br><span>@@ -332,7 +330,7 @@</span><br><span> while (d) {</span><br><span> int link = 0;</span><br><span> struct device *cmp = d->next_sibling;</span><br><span style="color: hsl(0, 100%, 40%);">- while (cmp && (cmp->bus == d->bus) && (cmp->path_a == d->path_a)</span><br><span style="color: hsl(120, 100%, 40%);">+ while (cmp && (cmp->parent == d->parent) && (cmp->path_a == d->path_a)</span><br><span> && (cmp->path_b == d->path_b)) {</span><br><span> if (!cmp->used) {</span><br><span> if (device_match(d, cmp)) {</span><br><span>@@ -468,8 +466,8 @@</span><br><span> fprintf(fil, "#if !DEVTREE_EARLY\n");</span><br><span> fprintf(fil, "\t.ops = %s,\n", (ptr->ops) ? (ptr->ops) : "0");</span><br><span> fprintf(fil, "#endif\n");</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(fil, "\t.bus = &%s_links[%d],\n", ptr->bus->name,</span><br><span style="color: hsl(0, 100%, 40%);">- ptr->bus->link);</span><br><span style="color: hsl(120, 100%, 40%);">+ fprintf(fil, "\t.bus = &%s_links[%d],\n", ptr->parent->name,</span><br><span style="color: hsl(120, 100%, 40%);">+ ptr->parent->link);</span><br><span> fprintf(fil, "\t.path = {");</span><br><span> fprintf(fil, ptr->path, ptr->path_a, ptr->path_b);</span><br><span> fprintf(fil, "},\n");</span><br><span>diff --git a/util/sconfig/sconfig.h b/util/sconfig/sconfig.h</span><br><span>index b707448..49e22ad 100644</span><br><span>--- a/util/sconfig/sconfig.h</span><br><span>+++ b/util/sconfig/sconfig.h</span><br><span>@@ -85,7 +85,6 @@</span><br><span> struct pci_irq_info pci_irq_info[4];</span><br><span> </span><br><span> struct device *parent;</span><br><span style="color: hsl(0, 100%, 40%);">- struct device *bus;</span><br><span> struct device *next;</span><br><span> struct device *nextdev;</span><br><span> struct device *children;</span><br><span>@@ -110,8 +109,8 @@</span><br><span> </span><br><span> void postprocess_devtree(void);</span><br><span> struct chip *new_chip(char *path);</span><br><span style="color: hsl(0, 100%, 40%);">-struct device *new_device(struct device *parent, struct device *busdev,</span><br><span style="color: hsl(0, 100%, 40%);">- struct chip *chip, const int bus, const char *devnum,</span><br><span style="color: hsl(120, 100%, 40%);">+struct device *new_device(struct device *parent, struct chip *chip,</span><br><span style="color: hsl(120, 100%, 40%);">+ const int bustype, const char *devnum,</span><br><span> int enabled);</span><br><span> void alias_siblings(struct device *d);</span><br><span> void add_resource(struct device *dev, int type, int index, int base);</span><br><span>diff --git a/util/sconfig/sconfig.tab.c_shipped b/util/sconfig/sconfig.tab.c_shipped</span><br><span>index e0d63d4..e001b31 100644</span><br><span>--- a/util/sconfig/sconfig.tab.c_shipped</span><br><span>+++ b/util/sconfig/sconfig.tab.c_shipped</span><br><span>@@ -85,7 +85,7 @@</span><br><span> int yylex();</span><br><span> void yyerror(const char *s);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static struct device *cur_parent, *cur_bus;</span><br><span style="color: hsl(120, 100%, 40%);">+static struct device *cur_parent;</span><br><span> static struct chip *cur_chip;</span><br><span> </span><br><span> </span><br><span>@@ -487,8 +487,8 @@</span><br><span> static const yytype_uint8 yyrline[] =</span><br><span> {</span><br><span> 0, 36, 36, 36, 38, 38, 38, 38, 40, 40,</span><br><span style="color: hsl(0, 100%, 40%);">- 40, 40, 40, 40, 42, 42, 51, 51, 63, 66,</span><br><span style="color: hsl(0, 100%, 40%);">- 69, 72, 75</span><br><span style="color: hsl(120, 100%, 40%);">+ 40, 40, 40, 40, 42, 42, 51, 51, 61, 64,</span><br><span style="color: hsl(120, 100%, 40%);">+ 67, 70, 73</span><br><span> };</span><br><span> #endif</span><br><span> </span><br><span>@@ -1287,7 +1287,7 @@</span><br><span> {</span><br><span> case 2:</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- { cur_parent = cur_bus = head; }</span><br><span style="color: hsl(120, 100%, 40%);">+ { cur_parent = head; }</span><br><span> </span><br><span> break;</span><br><span> </span><br><span>@@ -1318,9 +1318,8 @@</span><br><span> case 16:</span><br><span> </span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- (yyval.device) = new_device(cur_parent, cur_bus, cur_chip, (yyvsp[-2].number), (yyvsp[-1].string), (yyvsp[0].number));</span><br><span style="color: hsl(120, 100%, 40%);">+ (yyval.device) = new_device(cur_parent, cur_chip, (yyvsp[-2].number), (yyvsp[-1].string), (yyvsp[0].number));</span><br><span> cur_parent = (yyval.device);</span><br><span style="color: hsl(0, 100%, 40%);">- cur_bus = (yyval.device);</span><br><span> }</span><br><span> </span><br><span> break;</span><br><span>@@ -1329,7 +1328,6 @@</span><br><span> </span><br><span> {</span><br><span> cur_parent = (yyvsp[-2].device)->parent;</span><br><span style="color: hsl(0, 100%, 40%);">- cur_bus = (yyvsp[-2].device)->bus;</span><br><span> fold_in((yyvsp[-2].device));</span><br><span> alias_siblings((yyvsp[-2].device)->children);</span><br><span> }</span><br><span>diff --git a/util/sconfig/sconfig.y b/util/sconfig/sconfig.y</span><br><span>index e8d6fd3..67cc6d3 100755</span><br><span>--- a/util/sconfig/sconfig.y</span><br><span>+++ b/util/sconfig/sconfig.y</span><br><span>@@ -20,7 +20,7 @@</span><br><span> int yylex();</span><br><span> void yyerror(const char *s);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static struct device *cur_parent, *cur_bus;</span><br><span style="color: hsl(120, 100%, 40%);">+static struct device *cur_parent;</span><br><span> static struct chip *cur_chip;</span><br><span> </span><br><span> %}</span><br><span>@@ -33,7 +33,7 @@</span><br><span> </span><br><span> %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</span><br><span> %%</span><br><span style="color: hsl(0, 100%, 40%);">-devtree: { cur_parent = cur_bus = head; } chip { postprocess_devtree(); } ;</span><br><span style="color: hsl(120, 100%, 40%);">+devtree: { cur_parent = head; } chip { postprocess_devtree(); } ;</span><br><span> </span><br><span> chipchildren: chipchildren device | chipchildren chip | chipchildren registers | /* empty */ ;</span><br><span> </span><br><span>@@ -49,13 +49,11 @@</span><br><span> };</span><br><span> </span><br><span> device: DEVICE BUS NUMBER /* == devnum */ BOOL {</span><br><span style="color: hsl(0, 100%, 40%);">- $<device>$ = new_device(cur_parent, cur_bus, cur_chip, $<number>2, $<string>3, $<number>4);</span><br><span style="color: hsl(120, 100%, 40%);">+ $<device>$ = new_device(cur_parent, cur_chip, $<number>2, $<string>3, $<number>4);</span><br><span> cur_parent = $<device>$;</span><br><span style="color: hsl(0, 100%, 40%);">- cur_bus = $<device>$;</span><br><span> }</span><br><span> devicechildren END {</span><br><span> cur_parent = $<device>5->parent;</span><br><span style="color: hsl(0, 100%, 40%);">- cur_bus = $<device>5->bus;</span><br><span> fold_in($<device>5);</span><br><span> alias_siblings($<device>5->children);</span><br><span> };</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26736">change 26736</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/26736"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I21f8fe1545a9ed53d66d6d4462df4a5d63023844 </div>
<div style="display:none"> Gerrit-Change-Number: 26736 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Furquan Shaikh <furquan@google.com> </div>