From 54d7def6c254058f9458a0e26205b3c93a48bb42 Mon Sep 17 00:00:00 2001 From: Anup Patel Date: Thu, 20 May 2021 21:16:25 +0530 Subject: [PATCH] lib: utils: Try other FDT drivers when we see SBI_ENODEV We should try other FDT drivers when we see SBI_ENODEV returned by cold_init() of FDT driver. Signed-off-by: Anup Patel Reviewed-by: Atish Patra Reviewed-by: Xiang W --- lib/utils/ipi/fdt_ipi.c | 3 +++ lib/utils/irqchip/fdt_irqchip.c | 3 +++ lib/utils/reset/fdt_reset.c | 3 +++ lib/utils/serial/fdt_serial.c | 5 +++++ lib/utils/timer/fdt_timer.c | 3 +++ 5 files changed, 17 insertions(+) diff --git a/lib/utils/ipi/fdt_ipi.c b/lib/utils/ipi/fdt_ipi.c index efca37e6..3932f509 100644 --- a/lib/utils/ipi/fdt_ipi.c +++ b/lib/utils/ipi/fdt_ipi.c @@ -7,6 +7,7 @@ * Anup Patel */ +#include #include #include #include @@ -54,6 +55,8 @@ static int fdt_ipi_cold_init(void) drv->match_table, &match)) >= 0) { if (drv->cold_init) { rc = drv->cold_init(fdt, noff, match); + if (rc == SBI_ENODEV) + continue; if (rc) return rc; } diff --git a/lib/utils/irqchip/fdt_irqchip.c b/lib/utils/irqchip/fdt_irqchip.c index 3630be65..1306d508 100644 --- a/lib/utils/irqchip/fdt_irqchip.c +++ b/lib/utils/irqchip/fdt_irqchip.c @@ -7,6 +7,7 @@ * Anup Patel */ +#include #include #include #include @@ -47,6 +48,8 @@ static int fdt_irqchip_cold_init(void) drv->match_table, &match)) >= 0) { if (drv->cold_init) { rc = drv->cold_init(fdt, noff, match); + if (rc == SBI_ENODEV) + continue; if (rc) return rc; } diff --git a/lib/utils/reset/fdt_reset.c b/lib/utils/reset/fdt_reset.c index b01b0d11..1d687dcb 100644 --- a/lib/utils/reset/fdt_reset.c +++ b/lib/utils/reset/fdt_reset.c @@ -7,6 +7,7 @@ * Anup Patel */ +#include #include #include #include @@ -39,6 +40,8 @@ int fdt_reset_init(void) if (drv->init) { rc = drv->init(fdt, noff, match); + if (rc == SBI_ENODEV) + continue; if (rc) return rc; } diff --git a/lib/utils/serial/fdt_serial.c b/lib/utils/serial/fdt_serial.c index bad33871..25982ec3 100644 --- a/lib/utils/serial/fdt_serial.c +++ b/lib/utils/serial/fdt_serial.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include @@ -59,6 +60,8 @@ int fdt_serial_init(void) if (drv->init) { rc = drv->init(fdt, noff, match); + if (rc == SBI_ENODEV) + continue; if (rc) return rc; } @@ -80,6 +83,8 @@ int fdt_serial_init(void) if (drv->init) { rc = drv->init(fdt, noff, match); + if (rc == SBI_ENODEV) + continue; if (rc) return rc; } diff --git a/lib/utils/timer/fdt_timer.c b/lib/utils/timer/fdt_timer.c index 92198cd5..1fad42c2 100644 --- a/lib/utils/timer/fdt_timer.c +++ b/lib/utils/timer/fdt_timer.c @@ -7,6 +7,7 @@ * Anup Patel */ +#include #include #include #include @@ -54,6 +55,8 @@ static int fdt_timer_cold_init(void) drv->match_table, &match)) >= 0) { if (drv->cold_init) { rc = drv->cold_init(fdt, noff, match); + if (rc == SBI_ENODEV) + continue; if (rc) return rc; }