intc: gic: convert SYS_INIT to DEVICE_DT_INST_DEFINE
Convert SYS_INIT to DEVICE_DT_INST_DEFINE, this allows the build system to track the device dependencies and ensure that the interrupt controller is initialized before other devices using it. Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
This commit is contained in:
parent
1539ca906e
commit
17ae9a7680
2 changed files with 18 additions and 8 deletions
|
@ -10,7 +10,7 @@
|
|||
* NOTE: This driver implements the GICv1 and GICv2 interfaces.
|
||||
*/
|
||||
|
||||
#include <zephyr/init.h>
|
||||
#include <zephyr/device.h>
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <zephyr/devicetree.h>
|
||||
#include <zephyr/sw_isr_table.h>
|
||||
|
@ -18,6 +18,14 @@
|
|||
#include <zephyr/drivers/interrupt_controller/gic.h>
|
||||
#include <zephyr/sys/barrier.h>
|
||||
|
||||
#if defined(CONFIG_GIC_V1)
|
||||
#define DT_DRV_COMPAT arm_gic_v1
|
||||
#elif defined(CONFIG_GIC_V2)
|
||||
#define DT_DRV_COMPAT arm_gic_v2
|
||||
#else
|
||||
#error "Unknown GIC controller compatible for this configuration"
|
||||
#endif
|
||||
|
||||
static const uint64_t cpu_mpid_list[] = {
|
||||
DT_FOREACH_CHILD_STATUS_OKAY_SEP(DT_PATH(cpus), DT_REG_ADDR, (,))
|
||||
};
|
||||
|
@ -253,9 +261,8 @@ static void gic_cpu_init(void)
|
|||
/**
|
||||
* @brief Initialize the GIC device driver
|
||||
*/
|
||||
int arm_gic_init(void)
|
||||
int arm_gic_init(const struct device *dev)
|
||||
{
|
||||
|
||||
/* Init of Distributor interface registers */
|
||||
gic_dist_init();
|
||||
|
||||
|
@ -265,7 +272,8 @@ int arm_gic_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
SYS_INIT(arm_gic_init, PRE_KERNEL_1, CONFIG_INTC_INIT_PRIORITY);
|
||||
DEVICE_DT_INST_DEFINE(0, arm_gic_init, NULL, NULL, NULL,
|
||||
PRE_KERNEL_1, CONFIG_INTC_INIT_PRIORITY, NULL);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
void arm_gic_secondary_init(void)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr/init.h>
|
||||
#include <zephyr/device.h>
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <zephyr/sys/__assert.h>
|
||||
|
@ -17,6 +17,8 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
#define DT_DRV_COMPAT arm_gic_v3
|
||||
|
||||
/* Redistributor base addresses for each core */
|
||||
mem_addr_t gic_rdists[CONFIG_MP_MAX_NUM_CPUS];
|
||||
|
||||
|
@ -596,16 +598,16 @@ static void __arm_gic_init(void)
|
|||
gicv3_cpuif_init();
|
||||
}
|
||||
|
||||
int arm_gic_init(void)
|
||||
int arm_gic_init(const struct device *dev)
|
||||
{
|
||||
|
||||
gicv3_dist_init();
|
||||
|
||||
__arm_gic_init();
|
||||
|
||||
return 0;
|
||||
}
|
||||
SYS_INIT(arm_gic_init, PRE_KERNEL_1, CONFIG_INTC_INIT_PRIORITY);
|
||||
DEVICE_DT_INST_DEFINE(0, arm_gic_init, NULL, NULL, NULL,
|
||||
PRE_KERNEL_1, CONFIG_INTC_INIT_PRIORITY, NULL);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
void arm_gic_secondary_init(void)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue