diff options
author | Anup Patel <anup.patel@wdc.com> | 2021-05-20 21:16:25 +0530 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2021-05-24 15:49:21 +0530 |
commit | 54d7def6c254058f9458a0e26205b3c93a48bb42 (patch) | |
tree | b925e5ae2ad99804a49d8170653ef21b9cd1dfc7 /lib/utils | |
parent | b2dbbc0577e326b6dc1babaa53fb46605c996a72 (diff) |
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 <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
Reviewed-by: Xiang W <wxjstz@126.com>
Diffstat (limited to 'lib/utils')
-rw-r--r-- | lib/utils/ipi/fdt_ipi.c | 3 | ||||
-rw-r--r-- | lib/utils/irqchip/fdt_irqchip.c | 3 | ||||
-rw-r--r-- | lib/utils/reset/fdt_reset.c | 3 | ||||
-rw-r--r-- | lib/utils/serial/fdt_serial.c | 5 | ||||
-rw-r--r-- | lib/utils/timer/fdt_timer.c | 3 |
5 files changed, 17 insertions, 0 deletions
diff --git a/lib/utils/ipi/fdt_ipi.c b/lib/utils/ipi/fdt_ipi.c index efca37e..3932f50 100644 --- a/lib/utils/ipi/fdt_ipi.c +++ b/lib/utils/ipi/fdt_ipi.c @@ -7,6 +7,7 @@ * Anup Patel <anup.patel@wdc.com> */ +#include <sbi/sbi_error.h> #include <sbi/sbi_scratch.h> #include <sbi_utils/fdt/fdt_helper.h> #include <sbi_utils/ipi/fdt_ipi.h> @@ -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 3630be6..1306d50 100644 --- a/lib/utils/irqchip/fdt_irqchip.c +++ b/lib/utils/irqchip/fdt_irqchip.c @@ -7,6 +7,7 @@ * Anup Patel <anup.patel@wdc.com> */ +#include <sbi/sbi_error.h> #include <sbi/sbi_scratch.h> #include <sbi_utils/fdt/fdt_helper.h> #include <sbi_utils/irqchip/fdt_irqchip.h> @@ -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 b01b0d1..1d687dc 100644 --- a/lib/utils/reset/fdt_reset.c +++ b/lib/utils/reset/fdt_reset.c @@ -7,6 +7,7 @@ * Anup Patel <anup.patel@wdc.com> */ +#include <sbi/sbi_error.h> #include <sbi/sbi_scratch.h> #include <sbi_utils/fdt/fdt_helper.h> #include <sbi_utils/reset/fdt_reset.h> @@ -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 bad3387..25982ec 100644 --- a/lib/utils/serial/fdt_serial.c +++ b/lib/utils/serial/fdt_serial.c @@ -8,6 +8,7 @@ */ #include <libfdt.h> +#include <sbi/sbi_error.h> #include <sbi/sbi_scratch.h> #include <sbi_utils/fdt/fdt_helper.h> #include <sbi_utils/serial/fdt_serial.h> @@ -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 92198cd..1fad42c 100644 --- a/lib/utils/timer/fdt_timer.c +++ b/lib/utils/timer/fdt_timer.c @@ -7,6 +7,7 @@ * Anup Patel <anup.patel@wdc.com> */ +#include <sbi/sbi_error.h> #include <sbi/sbi_scratch.h> #include <sbi_utils/fdt/fdt_helper.h> #include <sbi_utils/timer/fdt_timer.h> @@ -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; } |