util/sconfig: Drop id from struct device maintained by sconfig

This change drops the id field from struct device as used by
sconfig. It was primarily used for generating unique device names. This
was maintained within device structure so that the order in which the
device tree entries were parsed is clear. Since the ids are assigned
in parsing order, it is problematic when a device is moved from base
devicetree to override tree. The entire parsing order changes which
makes it really difficult to compare what really changed in static.c
file.

By moving the dev name assignment to happen later when doing pass0 of
static.c generation, the difference in static.c file is minimized when
adding support for override trees.

BUG=b:155549176

Change-Id: I31870ace5a2fd7d5f95ab5e30d794c3bc959ed46
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41005
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Furquan Shaikh 2020-05-02 15:34:42 -07:00
parent 40454b7b00
commit 4ebe953090
2 changed files with 7 additions and 14 deletions

View File

@ -98,7 +98,6 @@ static struct bus base_root_bus = {
static struct device base_root_dev = {
.name = "dev_root",
.id = 0,
.chip_instance = &mainboard_instance,
.path = " .type = DEVICE_PATH_ROOT ",
.parent = &base_root_bus,
@ -113,7 +112,6 @@ static struct bus override_root_bus = {
static struct device override_root_dev = {
.name = "override_root",
.id = 0,
/*
* Override tree root device points to the same mainboard chip instance
* as the base tree root device. It should not cause any side-effects
@ -429,7 +427,6 @@ static struct device *alloc_dev(struct bus *parent)
{
struct device *dev = S_ALLOC(sizeof(*dev));
dev->id = ++count;
dev->parent = parent;
dev->subsystem_vendor = -1;
dev->subsystem_device = -1;
@ -510,10 +507,6 @@ struct device *new_device(struct bus *parent,
new_d->path_a = path_a;
new_d->path_b = path_b;
char *name = S_ALLOC(10);
sprintf(name, "_dev%d", new_d->id);
new_d->name = name;
new_d->enabled = status & 0x01;
new_d->hidden = (status >> 1) & 0x01;
new_d->mandatory = (status >> 2) & 0x01;
@ -699,12 +692,18 @@ static int dev_has_children(struct device *dev)
static void pass0(FILE *fil, FILE *head, struct device *ptr, struct device *next)
{
static int dev_id;
if (ptr == &base_root_dev) {
fprintf(fil, "STORAGE struct bus %s_links[];\n",
ptr->name);
return;
}
char *name = S_ALLOC(10);
sprintf(name, "_dev%d", dev_id++);
ptr->name = name;
fprintf(fil, "STORAGE struct device %s;\n", ptr->name);
if (ptr->res)
fprintf(fil, "STORAGE struct resource %s_res[];\n",

View File

@ -43,10 +43,7 @@ struct pci_irq_info {
struct chip;
struct chip_instance {
/*
* Monotonically increasing ID for each newly allocated
* node(chip/device).
*/
/* Monotonically increasing ID for each chip instance. */
int id;
/* Pointer to registers for this chip. */
@ -98,9 +95,6 @@ struct bus {
};
struct device {
/* Monotonically increasing ID for the device. */
int id;
/* Indicates device status (enabled / hidden or not). */
int enabled;
int hidden;