aboutsummaryrefslogtreecommitdiff
path: root/util/sconfig/main.c
diff options
context:
space:
mode:
authorPatrick Georgi <patrick.georgi@coresystems.de>2010-05-05 12:05:25 +0000
committerPatrick Georgi <patrick.georgi@coresystems.de>2010-05-05 12:05:25 +0000
commit68befd5d34ce22b03ea78028dc362eec0440f83c (patch)
treec5b67ed5900c396cb0d9a57a7ed6ce994bd56b3f /util/sconfig/main.c
parent114e7b2990cd2b64956ddb271638646ef5108d54 (diff)
sconfig: Make cur_bus and cur_parent local to the parser.
Instead of accessing them globally, pass them as arguments where necessary. Signed-off-by: Patrick Georgi <patrick.georgi@coresystems.de> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5524 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util/sconfig/main.c')
-rwxr-xr-xutil/sconfig/main.c60
1 files changed, 30 insertions, 30 deletions
diff --git a/util/sconfig/main.c b/util/sconfig/main.c
index 00d0e5a5b2..9c7938617b 100755
--- a/util/sconfig/main.c
+++ b/util/sconfig/main.c
@@ -51,12 +51,12 @@ static struct device root = {
.enabled = 1
};
-static struct device *new_dev() {
+static struct device *new_dev(struct device *parent, struct device *bus) {
struct device *dev = malloc(sizeof(struct device));
memset(dev, 0, sizeof(struct device));
dev->id = ++devcount;
- dev->parent = cur_parent;
- dev->bus = cur_bus;
+ dev->parent = parent;
+ dev->bus = bus;
head->next = dev;
head = dev;
return dev;
@@ -110,8 +110,8 @@ void postprocess_devtree(void) {
}
}
-struct device *new_chip(char *path) {
- struct device *new_chip = new_dev();
+struct device *new_chip(struct device *parent, struct device *bus, char *path) {
+ struct device *new_chip = new_dev(parent, bus);
new_chip->chiph_exists = 1;
new_chip->name = path;
new_chip->name_underscore = strdup(new_chip->name);
@@ -129,13 +129,13 @@ struct device *new_chip(char *path) {
if ((stat(chip_h, &st) == -1) && (errno == ENOENT))
new_chip->chiph_exists = 0;
- if (cur_parent->latestchild) {
- cur_parent->latestchild->next_sibling = new_chip;
- cur_parent->latestchild->sibling = new_chip;
+ if (parent->latestchild) {
+ parent->latestchild->next_sibling = new_chip;
+ parent->latestchild->sibling = new_chip;
}
- cur_parent->latestchild = new_chip;
- if (!cur_parent->children)
- cur_parent->children = new_chip;
+ parent->latestchild = new_chip;
+ if (!parent->children)
+ parent->children = new_chip;
return new_chip;
}
@@ -162,8 +162,8 @@ void add_header(struct device *dev) {
}
}
-struct device *new_device(const int bus, const char *devnum, int enabled) {
- struct device *new_d = new_dev();
+struct device *new_device(struct device *parent, struct device *busdev, const int bus, const char *devnum, int enabled) {
+ struct device *new_d = new_dev(parent, busdev);
new_d->bustype = bus;
char *tmp;
@@ -181,13 +181,13 @@ struct device *new_device(const int bus, const char *devnum, int enabled) {
new_d->enabled = enabled;
new_d->chip = new_d->parent->chip;
- if (cur_parent->latestchild) {
- cur_parent->latestchild->next_sibling = new_d;
- cur_parent->latestchild->sibling = new_d;
+ if (parent->latestchild) {
+ parent->latestchild->next_sibling = new_d;
+ parent->latestchild->sibling = new_d;
}
- cur_parent->latestchild = new_d;
- if (!cur_parent->children)
- cur_parent->children = new_d;
+ parent->latestchild = new_d;
+ if (!parent->children)
+ parent->children = new_d;
lastdev->nextdev = new_d;
lastdev = new_d;
@@ -235,29 +235,29 @@ void alias_siblings(struct device *d) {
}
}
-void add_resource(int type, int index, int base) {
+void add_resource(struct device *dev, int type, int index, int base) {
struct resource *r = malloc(sizeof(struct resource));
memset (r, 0, sizeof(struct resource));
r->type = type;
r->index = index;
r->base = base;
- if (cur_parent->res) {
- struct resource *head = cur_parent->res;
+ if (dev->res) {
+ struct resource *head = dev->res;
while (head->next) head = head->next;
head->next = r;
} else {
- cur_parent->res = r;
+ dev->res = r;
}
- cur_parent->rescnt++;
+ dev->rescnt++;
}
-void add_register(char *name, char *val) {
+void add_register(struct device *dev, char *name, char *val) {
struct reg *r = malloc(sizeof(struct reg));
memset (r, 0, sizeof(struct reg));
r->key = name;
r->value = val;
- if (cur_parent->reg) {
- struct reg *head = cur_parent->reg;
+ if (dev->reg) {
+ struct reg *head = dev->reg;
// sorting to be equal to sconfig's behaviour
int sort = strcmp(r->key, head->key);
if (sort == 0) {
@@ -266,14 +266,14 @@ void add_register(char *name, char *val) {
}
if (sort<0) {
r->next = head;
- cur_parent->reg = r;
+ dev->reg = r;
} else {
while ((head->next) && (strcmp(head->next->key, r->key)<0)) head = head->next;
r->next = head->next;
head->next = r;
}
} else {
- cur_parent->reg = r;
+ dev->reg = r;
}
}
@@ -390,7 +390,7 @@ int main(int argc, char** argv) {
FILE *staticc = fopen(outputc, "w");
- cur_bus = cur_parent = lastdev = head = &root;
+ lastdev = head = &root;
yyparse();
fclose(filec);