mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 21:21:09 -04:00
Commit5590f3196b("drivers/core/of: Add symlink to device-tree from devices with an OF node") adds the symlink `of_node` for each device pointing to it's device tree node while creating/initialising it. However the devicetree sysfs is created and setup in of_init which is executed at core_initcall level. For all the devices created before of_init, the following error is thrown: "Error -2(-ENOENT) creating of_node link" Like many other components in driver model, initialize the sysfs support for OF/devicetree from driver_init so that it's ready before any devices are created. Fixes:5590f3196b("drivers/core/of: Add symlink to device-tree from devices with an OF node") Suggested-by: Rob Herring <[email protected]> Cc: Grant Likely <[email protected]> Cc: Pawel Moll <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Signed-off-by: Sudeep Holla <[email protected]> Tested-by: Robert Schwebel <[email protected]> Acked-by: Rob Herring <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
40 lines
776 B
C
40 lines
776 B
C
/*
|
|
* Copyright (c) 2002-3 Patrick Mochel
|
|
* Copyright (c) 2002-3 Open Source Development Labs
|
|
*
|
|
* This file is released under the GPLv2
|
|
*/
|
|
|
|
#include <linux/device.h>
|
|
#include <linux/init.h>
|
|
#include <linux/memory.h>
|
|
#include <linux/of.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 */
|
|
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.
|
|
*/
|
|
platform_bus_init();
|
|
cpu_dev_init();
|
|
memory_dev_init();
|
|
container_dev_init();
|
|
of_core_init();
|
|
}
|