<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>