base: soc: Early register bus when needed
authorGeert Uytterhoeven <geert+renesas@glider.be>
Tue, 27 Sep 2016 15:10:29 +0000 (17:10 +0200)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Thu, 10 Nov 2016 09:10:25 +0000 (10:10 +0100)
commit1da1b3628df34a2a5e38b70c8551770aadce969d
treeba730b41516efc7d3d1d31bc8ccc9284da13838a
parent1001354ca34179f3db924eb66672442a173147dc
base: soc: Early register bus when needed

If soc_device_register() is called before soc_bus_register(), it crashes
with a NULL pointer dereference.

soc_bus_register() is already a core_initcall(), but drivers/base/ is
entered later than e.g. drivers/pinctrl/ and drivers/soc/. Hence there
are several subsystems that may need to know SoC revision information,
while it's not so easy to initialize the SoC bus even earlier using an
initcall.

To fix this, let soc_device_register() register the bus early if that
hasn't happened yet.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Arnd Bergmann <arnd@arndb.de>
drivers/base/soc.c