util/sconfig: Re-factor device structure in parse tree
commit931982600d3ac3dfb9d66e013604ecc0573a1744
authorFurquan Shaikh <furquan@google.com>
Sun, 3 Jun 2018 11:22:17 +0000 (3 04:22 -0700)
committerFurquan Shaikh <furquan@google.com>
Fri, 8 Jun 2018 23:36:02 +0000 (8 23:36 +0000)
treef4ceeaa3bf1e4a0c24e89587ce86d54ff8ea808a
parent7398deda2b12f2ba3ab6c14009ff8da003ef2b0c
util/sconfig: Re-factor device structure in parse tree

This change re-factors the device structure in parse tree to be able
to support multidev devices just like non-multidev devices.

With this change, every device has a bus under it which is the parent
of all devices that fall on the bus. If there are duplicate entries in
the devicetree, then there will be multiple buses under the device and
each bus will have its own set of children.

The tree starts out with a root device which has a root bus under
it. This is a special device which is created statically and its
parent is its own root bus. When parsing the device tree file, devices
get added under the root bus as children.

Since this change re-organizes the way devicetree is represented, it
gets rid of latestchild and next_sibling pointers from struct
device. Also, the tree traversal to generate static.c is changed to
breadth-first walk instead of using the next_sibling.

BUG=b:80081934
TEST=Verified using abuild that all boards compile successfully.

Change-Id: Ic8c8a73a247e8e992ab6b1b2cc3131e06fa2e5a1
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/26800
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
util/sconfig/main.c
util/sconfig/sconfig.h
util/sconfig/sconfig.tab.c_shipped
util/sconfig/sconfig.tab.h_shipped
util/sconfig/sconfig.y