util/sconfig: Declare the repeated devicetree storage

With DEVTREE_EARLY we could create incomplete device
objects with topology links removed to reduce footprint
for bootblock.

Declare everything with 'static __unused DEVTREE_CONST'
to avoid compiler errors and to not expose unusable
device object names to global scope.

Change-Id: Ie4cb9e75f179f44edf4f8256ad8320bc2d4ae71a
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/31931
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Kyösti Mälkki 2019-03-15 10:04:11 +02:00 committed by Patrick Georgi
parent 975a7e3ba3
commit 5ccce7cdc7
1 changed files with 14 additions and 10 deletions

View File

@ -696,17 +696,17 @@ static int dev_has_children(struct device *dev)
static void pass0(FILE *fil, struct device *ptr, struct device *next) static void pass0(FILE *fil, struct device *ptr, struct device *next)
{ {
if (ptr == &base_root_dev) { if (ptr == &base_root_dev) {
fprintf(fil, "DEVTREE_CONST struct bus %s_links[];\n", fprintf(fil, "STORAGE struct bus %s_links[];\n",
ptr->name); ptr->name);
return; return;
} }
fprintf(fil, "static DEVTREE_CONST struct device %s;\n", ptr->name); fprintf(fil, "STORAGE struct device %s;\n", ptr->name);
if (ptr->res) if (ptr->res)
fprintf(fil, "DEVTREE_CONST struct resource %s_res[];\n", fprintf(fil, "STORAGE struct resource %s_res[];\n",
ptr->name); ptr->name);
if (dev_has_children(ptr)) if (dev_has_children(ptr))
fprintf(fil, "DEVTREE_CONST struct bus %s_links[];\n", fprintf(fil, "STORAGE struct bus %s_links[];\n",
ptr->name); ptr->name);
if (next) if (next)
@ -723,7 +723,7 @@ static void emit_resources(FILE *fil, struct device *ptr)
return; return;
int i = 1; int i = 1;
fprintf(fil, "DEVTREE_CONST struct resource %s_res[] = {\n", ptr->name); fprintf(fil, "STORAGE struct resource %s_res[] = {\n", ptr->name);
struct resource *r = ptr->res; struct resource *r = ptr->res;
while (r) { while (r) {
fprintf(fil, fprintf(fil,
@ -765,7 +765,7 @@ static void emit_bus(FILE *fil, struct bus *bus)
static void emit_dev_links(FILE *fil, struct device *ptr) static void emit_dev_links(FILE *fil, struct device *ptr)
{ {
fprintf(fil, "DEVTREE_CONST struct bus %s_links[] = {\n", fprintf(fil, "STORAGE struct bus %s_links[] = {\n",
ptr->name); ptr->name);
struct bus *bus = ptr->bus; struct bus *bus = ptr->bus;
@ -784,9 +784,11 @@ static void pass1(FILE *fil, struct device *ptr, struct device *next)
struct chip_instance *chip_ins = ptr->chip_instance; struct chip_instance *chip_ins = ptr->chip_instance;
int has_children = dev_has_children(ptr); int has_children = dev_has_children(ptr);
if (ptr != &base_root_dev) if (ptr == &base_root_dev)
fprintf(fil, "static "); fprintf(fil, "DEVTREE_CONST struct device %s = {\n", ptr->name);
fprintf(fil, "DEVTREE_CONST struct device %s = {\n", ptr->name); else
fprintf(fil, "STORAGE struct device %s = {\n", ptr->name);
fprintf(fil, "#if !DEVTREE_EARLY\n"); fprintf(fil, "#if !DEVTREE_EARLY\n");
/* /*
@ -942,7 +944,7 @@ static void emit_chip_headers(FILE *fil, struct chip *chip)
static void emit_chip_instance(FILE *fil, struct chip_instance *instance) static void emit_chip_instance(FILE *fil, struct chip_instance *instance)
{ {
fprintf(fil, "DEVTREE_CONST struct %s_config %s_info_%d = {", fprintf(fil, "STORAGE struct %s_config %s_info_%d = {",
instance->chip->name_underscore, instance->chip->name_underscore,
instance->chip->name_underscore, instance->chip->name_underscore,
instance->id); instance->id);
@ -965,6 +967,8 @@ static void emit_chips(FILE *fil)
emit_chip_headers(fil, chip); emit_chip_headers(fil, chip);
fprintf(fil, "\n#define STORAGE static __unused DEVTREE_CONST\n\n");
for (; chip; chip = chip->next) { for (; chip; chip = chip->next) {
if (!chip->chiph_exists) if (!chip->chiph_exists)
continue; continue;