summaryrefslogtreecommitdiff
path: root/util/sconfig
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2012-10-07 15:08:32 +0200
committerPatrick Georgi <patrick@georgi-clan.de>2012-10-08 13:24:31 +0200
commitaada2e127b43a81483064281cadc4d5fafcc3272 (patch)
tree0e2d03b02196d957307e2c5b419e54e70ff5dfac /util/sconfig
parent9c9eb8cbc9deadf2b342236f71d1c9da59a97644 (diff)
downloadcoreboot-aada2e127b43a81483064281cadc4d5fafcc3272.tar.xz
Every chip must have chip_operations
Forcing this rule, chip_ops can be added in the static devicetree regardless of the existence of the chip.h files. Change-Id: Iec1c23484e85cab3f80a34f2b082088f38ac4de9 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Signed-off-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-on: http://review.coreboot.org/1472 Tested-by: build bot (Jenkins)
Diffstat (limited to 'util/sconfig')
-rw-r--r--util/sconfig/main.c53
-rw-r--r--util/sconfig/sconfig.h1
2 files changed, 26 insertions, 28 deletions
diff --git a/util/sconfig/main.c b/util/sconfig/main.c
index fe4c3b8e12..f066d7bad2 100644
--- a/util/sconfig/main.c
+++ b/util/sconfig/main.c
@@ -179,25 +179,24 @@ struct device *new_chip(struct device *parent, struct device *bus, char *path) {
}
void add_header(struct device *dev) {
- if ((dev->chiph_exists) || (scan_mode == KCONFIG_MODE)){
- int include_exists = 0;
- struct header *h = &headers;
- while (h->next) {
- int result = strcmp(dev->name, h->next->name);
- if (result == 0) {
- include_exists = 1;
- break;
- }
- if (result < 0) break;
- h = h->next;
- }
- if (!include_exists) {
- struct header *tmp = h->next;
- h->next = malloc(sizeof(struct header));
- memset(h->next, 0, sizeof(struct header));
- h->next->name = dev->name;
- h->next->next = tmp;
+ int include_exists = 0;
+ struct header *h = &headers;
+ while (h->next) {
+ int result = strcmp(dev->name, h->next->name);
+ if (result == 0) {
+ include_exists = 1;
+ break;
}
+ if (result < 0) break;
+ h = h->next;
+ }
+ if (!include_exists) {
+ struct header *tmp = h->next;
+ h->next = malloc(sizeof(struct header));
+ memset(h->next, 0, sizeof(struct header));
+ h->next->chiph_exists = dev->chiph_exists;
+ h->next->name = dev->name;
+ h->next->next = tmp;
}
}
@@ -418,16 +417,11 @@ static void pass1(FILE *fil, struct device *ptr)
fprintf(fil, "\t.link_list = NULL,\n");
if (ptr->sibling)
fprintf(fil, "\t.sibling = &%s,\n", ptr->sibling->name);
- if (ptr->chip->chiph_exists) {
- fprintf(fil, "#ifndef __PRE_RAM__\n");
- fprintf(fil, "\t.chip_ops = &%s_ops,\n", ptr->chip->name_underscore);
- fprintf(fil, "#endif\n");
+ fprintf(fil, "#ifndef __PRE_RAM__\n");
+ fprintf(fil, "\t.chip_ops = &%s_ops,\n", ptr->chip->name_underscore);
+ fprintf(fil, "#endif\n");
+ if (ptr->chip->chiph_exists)
fprintf(fil, "\t.chip_info = &%s_info_%d,\n", ptr->chip->name_underscore, ptr->chip->id);
- } else if (ptr->chip->chip == &mainboard) {
- fprintf(fil, "#ifndef __PRE_RAM__\n");
- fprintf(fil, "\t.chip_ops = &%s_ops,\n", ptr->chip->name_underscore);
- fprintf(fil, "#endif\n");
- }
if (ptr->nextdev)
fprintf(fil, "\t.next=&%s\n", ptr->nextdev->name);
fprintf(fil, "};\n");
@@ -622,8 +616,10 @@ int main(int argc, char** argv) {
h = &headers;
while (h->next) {
h = h->next;
- fprintf(autogen, "#include \"%s/chip.h\"\n", h->name);
+ if (h->chiph_exists)
+ fprintf(autogen, "#include \"%s/chip.h\"\n", h->name);
}
+ fprintf(autogen, "\n#ifndef __PRE_RAM__\n");
h = &headers;
while (h->next) {
h = h->next;
@@ -632,6 +628,7 @@ int main(int argc, char** argv) {
fprintf(autogen, "extern struct chip_operations %s_ops;\n", name_underscore);
free(name_underscore);
}
+ fprintf(autogen, "#endif\n");
walk_device_tree(autogen, &root, inherit_subsystem_ids, NULL);
fprintf(autogen, "\n/* pass 0 */\n");
diff --git a/util/sconfig/sconfig.h b/util/sconfig/sconfig.h
index 15766006a7..b8a231a1c2 100644
--- a/util/sconfig/sconfig.h
+++ b/util/sconfig/sconfig.h
@@ -86,6 +86,7 @@ struct device *head;
struct header;
struct header {
char *name;
+ int chiph_exists;
struct header *next;
};