mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
Software nodes are currently initialized in a function registered as a postcore_initcall(). However, some devices may want to register software nodes earlier than that (or also in a postcore_initcall() where they're at the mercy of the link order). Move the initialization to driver_init() making swnode available much earlier as well as making their initialization time deterministic. Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://patch.msgid.link/20260402-nokia770-gpio-swnodes-v5-3-d730db3dd299@oss.qualcomm.com [ Fix typo in the commit message: "s/merci/mercy/". - Danilo ] Signed-off-by: Danilo Krummrich <dakr@kernel.org>
45 lines
916 B
C
45 lines
916 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (c) 2002-3 Patrick Mochel
|
|
* Copyright (c) 2002-3 Open Source Development Labs
|
|
*/
|
|
|
|
#include <linux/device.h>
|
|
#include <linux/init.h>
|
|
#include <linux/memory.h>
|
|
#include <linux/of.h>
|
|
#include <linux/backing-dev.h>
|
|
|
|
#include "base.h"
|
|
|
|
/**
|
|
* driver_init - initialize driver model.
|
|
*
|
|
* Call the driver model init functions to initialize their
|
|
* subsystems. Called early from init/main.c.
|
|
*/
|
|
void __init driver_init(void)
|
|
{
|
|
/* These are the core pieces */
|
|
bdi_init(&noop_backing_dev_info);
|
|
devtmpfs_init();
|
|
devices_init();
|
|
buses_init();
|
|
classes_init();
|
|
firmware_init();
|
|
hypervisor_init();
|
|
|
|
/* These are also core pieces, but must come after the
|
|
* core core pieces.
|
|
*/
|
|
faux_bus_init();
|
|
of_core_init();
|
|
software_node_init();
|
|
platform_bus_init();
|
|
auxiliary_bus_init();
|
|
memory_dev_init();
|
|
node_dev_init();
|
|
cpu_dev_init();
|
|
container_dev_init();
|
|
}
|