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@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); };