From acd7d952514485dbc41fa04b0d16be4002e31019 Mon Sep 17 00:00:00 2001 From: Nico Huber Date: Wed, 25 Jul 2012 10:33:05 +0200 Subject: Add initialization hook for chips MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an init() function to the chip_operations which will be called before bus enumeration. This allows to disable unused devices before they get enumerated. Change-Id: I63dd9cbfc7b5995ccafb7bf7a81dc71fc67906a0 Signed-off-by: Nico Huber Reviewed-on: http://review.coreboot.org/1623 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki Reviewed-by: Marc Jones Reviewed-by: Patrick Georgi --- src/devices/device.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/devices') diff --git a/src/devices/device.c b/src/devices/device.c index f021c9b3a3..03e7ea7c63 100644 --- a/src/devices/device.c +++ b/src/devices/device.c @@ -52,6 +52,26 @@ extern struct device *last_dev; /** Linked list of free resources */ struct resource *free_resources = NULL; +/** + * Initialize all chips of statically known devices. + * + * Will be called before bus enumeration to initialize chips stated in the + * device tree. + */ +void dev_initialize_chips(void) +{ + struct device *dev; + + for (dev = all_devices; dev; dev = dev->next) { + /* Initialize chip if we haven't yet. */ + if (dev->chip_ops && dev->chip_ops->init && + !dev->chip_ops->initialized) { + dev->chip_ops->init(dev->chip_info); + dev->chip_ops->initialized = 1; + } + } +} + DECLARE_SPIN_LOCK(dev_lock) #if CONFIG_GFXUMA -- cgit v1.2.3