init: Implement fine-grained initialization policy

Put initialization priorities as device driver Kconfig
parameter.

Initialization priority value for each platform is defined
in the platform Kconfig file.

Drivers and platform code use SYS_DEFINE_DEVICE to add
and initialization function.

Change-Id: I2f4f3c7370dac02408a1b50a0a1bade8b427a282
Signed-off-by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Dmitriy Korovkin 2015-10-26 15:56:02 -04:00 committed by Anas Nashif
commit 57f2741e4f
66 changed files with 447 additions and 115 deletions

View file

@ -34,6 +34,14 @@ config SHARED_IRQ_NUM_CLIENTS
instance of the shared interrupt driver. To conserve RAM set
this value to the lowest practical value.
config SHARED_IRQ_INIT_PRIORITY
int
depends on SHARED_IRQ
prompt "Shared IRQ init priority"
help
Shared IRQ are initialized on SECONDARY init level. They
have to be initialized before any device that uses them.
config SHARED_IRQ_0
bool "Shared interrupt instance 0"
depends on SHARED_IRQ

View file

@ -142,7 +142,8 @@ struct shared_irq_runtime shared_irq_0_runtime;
DECLARE_DEVICE_INIT_CONFIG(shared_irq_0, CONFIG_SHARED_IRQ_0_NAME,
shared_irq_initialize, &shared_irq_config_0);
pre_kernel_early_init(shared_irq_0, &shared_irq_0_runtime);
SYS_DEFINE_DEVICE(shared_irq_0, &shared_irq_0_runtime, SECONDARY,
CONFIG_SHARED_IRQ_INIT_PRIORITY);
IRQ_CONNECT_STATIC(shared_irq_0, CONFIG_SHARED_IRQ_0_IRQ,
CONFIG_SHARED_IRQ_0_PRI, shared_irq_isr_0, 0,
@ -175,7 +176,8 @@ struct shared_irq_runtime shared_irq_1_runtime;
DECLARE_DEVICE_INIT_CONFIG(shared_irq_1, CONFIG_SHARED_IRQ_1_NAME,
shared_irq_initialize, &shared_irq_config_1);
pre_kernel_early_init(shared_irq_1, &shared_irq_1_runtime);
SYS_DEFINE_DEVICE(shared_irq_1, &shared_irq_1_runtime, SECONDARY,
CONFIG_SHARED_IRQ_INIT_PRIORITY);
IRQ_CONNECT_STATIC(shared_irq_1, CONFIG_SHARED_IRQ_1_IRQ,
CONFIG_SHARED_IRQ_1_PRI, shared_irq_isr_1, 0,