Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:42

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /**
0004  * @file
0005  *
0006  * @ingroup RTEMSBSPsSharedFatal
0007  *
0008  * @brief This header file provides fatal codes for ::RTEMS_FATAL_SOURCE_BSP.
0009  */
0010 
0011 /*
0012  * Copyright (C) 2012, 2022 embedded brains GmbH & Co. KG
0013  *
0014  * Redistribution and use in source and binary forms, with or without
0015  * modification, are permitted provided that the following conditions
0016  * are met:
0017  * 1. Redistributions of source code must retain the above copyright
0018  *    notice, this list of conditions and the following disclaimer.
0019  * 2. Redistributions in binary form must reproduce the above copyright
0020  *    notice, this list of conditions and the following disclaimer in the
0021  *    documentation and/or other materials provided with the distribution.
0022  *
0023  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0024  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0025  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0026  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0027  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0028  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0029  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0030  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0031  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0032  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0033  * POSSIBILITY OF SUCH DAMAGE.
0034  */
0035 
0036 #ifndef LIBBSP_SHARED_BSP_FATAL_H
0037 #define LIBBSP_SHARED_BSP_FATAL_H
0038 
0039 #include <rtems.h>
0040 
0041 #ifdef __cplusplus
0042 extern "C" {
0043 #endif /* __cplusplus */
0044 
0045 /**
0046  * @defgroup RTEMSBSPsSharedFatal BSP-Specific Fatal Codes
0047  *
0048  * @ingroup RTEMSBSPsShared
0049  *
0050  * @brief This group contains fatal codes for ::RTEMS_FATAL_SOURCE_BSP.
0051  *
0052  * @{
0053  */
0054 
0055 #define BSP_FATAL_CODE_BLOCK(idx) ((unsigned long) (idx) * 256UL)
0056 
0057 /**
0058  * @brief BSP fatal error codes.
0059  */
0060 typedef enum {
0061   /* Generic BSP fatal codes */
0062   BSP_FATAL_INTERRUPT_INITIALIZATION = BSP_FATAL_CODE_BLOCK(0),
0063   BSP_FATAL_SPURIOUS_INTERRUPT,
0064   BSP_FATAL_CONSOLE_MULTI_INIT,
0065   BSP_FATAL_CONSOLE_NO_MEMORY_0,
0066   BSP_FATAL_CONSOLE_NO_MEMORY_1,
0067   BSP_FATAL_CONSOLE_NO_MEMORY_2,
0068   BSP_FATAL_CONSOLE_NO_MEMORY_3,
0069   BSP_FATAL_CONSOLE_REGISTER_DEV_0,
0070   BSP_FATAL_CONSOLE_REGISTER_DEV_1,
0071   BSP_FATAL_CONSOLE_NO_DEV,
0072   BSP_FATAL_CONSOLE_INSTALL_0,
0073   BSP_FATAL_CONSOLE_INSTALL_1,
0074   BSP_FATAL_CONSOLE_REGISTER_DEV_2,
0075   BSP_FATAL_HEAP_EXTEND_ERROR,
0076   BSP_FATAL_MEMORY_ECC_ERROR,
0077 
0078   /* ARM fatal codes */
0079   BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(1),
0080   BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_REMOVE,
0081   BSP_ARM_PL111_FATAL_REGISTER_DEV,
0082   BSP_ARM_PL111_FATAL_SEM_CREATE,
0083   BSP_ARM_PL111_FATAL_SEM_RELEASE,
0084   BSP_ARM_A9MPCORE_FATAL_CLOCK_SMP_INIT,
0085   BSP_ARM_ARMV7M_CPU_COUNTER_INIT,
0086   BSP_ARM_FATAL_GENERIC_TIMER_CLOCK_IRQ_INSTALL,
0087 
0088   /* LEON3 fatal codes */
0089   LEON3_FATAL_NO_IRQMP_CONTROLLER = BSP_FATAL_CODE_BLOCK(2),
0090   LEON3_FATAL_CONSOLE_REGISTER_DEV,
0091   LEON3_FATAL_CLOCK_INITIALIZATION,
0092   LEON3_FATAL_INVALID_CACHE_CONFIG_BOOT_PROCESSOR,
0093   LEON3_FATAL_INVALID_CACHE_CONFIG_SECONDARY_PROCESSOR,
0094 
0095   /* LPC24XX fatal codes */
0096   LPC24XX_FATAL_PL111_SET_UP = BSP_FATAL_CODE_BLOCK(3),
0097   LPC24XX_FATAL_PL111_PINS_SET_UP,
0098   LPC24XX_FATAL_PL111_PINS_TEAR_DOWN,
0099   LPC24XX_FATAL_PL111_TEAR_DOWN,
0100 
0101   /* MPC5200 fatal codes */
0102   MPC5200_FATAL_PCF8563_INVALID_YEAR = BSP_FATAL_CODE_BLOCK(4),
0103   MPC5200_FATAL_SLICETIMER_0_IRQ_INSTALL,
0104   MPC5200_FATAL_SLICETIMER_1_IRQ_INSTALL,
0105   MPC5200_FATAL_TM27_IRQ_INSTALL,
0106   MPC5200_FATAL_MSCAN_A_INIT,
0107   MPC5200_FATAL_MSCAN_B_INIT,
0108   MPC5200_FATAL_MSCAN_A_SET_MODE,
0109   MPC5200_FATAL_MSCAN_B_SET_MODE,
0110   MPC5200_FATAL_ATA_DISK_IO_INIT,
0111   MPC5200_FATAL_ATA_DISK_CREATE,
0112   MPC5200_FATAL_ATA_DMA_SINGLE_IRQ_INSTALL,
0113   MPC5200_FATAL_ATA_LOCK_CREATE,
0114   MPC5200_FATAL_ATA_LOCK_DESTROY,
0115 
0116   /* MPC55XX fatal codes */
0117   MPC55XX_FATAL_FMPLL_LOCK = BSP_FATAL_CODE_BLOCK(5),
0118   MPC55XX_FATAL_CLOCK_EMIOS_IRQ_INSTALL,
0119   MPC55XX_FATAL_CLOCK_EMIOS_PRESCALER,
0120   MPC55XX_FATAL_CLOCK_EMIOS_INTERVAL,
0121   MPC55XX_FATAL_CLOCK_PIT_IRQ_INSTALL,
0122   MPC55XX_FATAL_CONSOLE_GENERIC_COUNT,
0123   MPC55XX_FATAL_CONSOLE_GENERIC_REGISTER,
0124   MPC55XX_FATAL_CONSOLE_GENERIC_REGISTER_CONSOLE,
0125   MPC55XX_FATAL_CONSOLE_ESCI_BAUD,
0126   MPC55XX_FATAL_CONSOLE_ESCI_ATTRIBUTES,
0127   MPC55XX_FATAL_CONSOLE_ESCI_IRQ_INSTALL,
0128   MPC55XX_FATAL_CONSOLE_LINFLEX_BAUD,
0129   MPC55XX_FATAL_CONSOLE_LINFLEX_ATTRIBUTES,
0130   MPC55XX_FATAL_CONSOLE_LINFLEX_RX_IRQ_INSTALL,
0131   MPC55XX_FATAL_CONSOLE_LINFLEX_TX_IRQ_INSTALL,
0132   MPC55XX_FATAL_CONSOLE_LINFLEX_ERR_IRQ_INSTALL,
0133   MPC55XX_FATAL_CONSOLE_LINFLEX_RX_IRQ_REMOVE,
0134   MPC55XX_FATAL_CONSOLE_LINFLEX_TX_IRQ_REMOVE,
0135   MPC55XX_FATAL_CONSOLE_LINFLEX_ERR_IRQ_REMOVE,
0136   MPC55XX_FATAL_EDMA_IRQ_INSTALL,
0137   MPC55XX_FATAL_EDMA_IRQ_REMOVE,
0138 
0139   /* MRM332 fatal codes */
0140   MRM332_FATAL_SPURIOUS_INTERRUPT = BSP_FATAL_CODE_BLOCK(6),
0141 
0142   /* PowerPC fatal codes */
0143   PPC_FATAL_EXCEPTION_INITIALIZATION = BSP_FATAL_CODE_BLOCK(7),
0144 
0145   /* Libchip fatal codes */
0146   DWMAC_FATAL_TOO_MANY_RBUFS_CONFIGURED = BSP_FATAL_CODE_BLOCK(8),
0147 
0148   /* ARM fatal codes */
0149   ARM_FATAL_L2C_310_UNEXPECTED_ID = BSP_FATAL_CODE_BLOCK(9),
0150   ARM_FATAL_L2C_310_UNEXPECTED_NUM_WAYS,
0151   ARM_FATAL_L2C_310_EXCLUSIVE_CONFIG,
0152 
0153   /* QorIQ fatal codes */
0154   QORIQ_FATAL_SMP_IPI_HANDLER_INSTALL = BSP_FATAL_CODE_BLOCK(10),
0155   QORIQ_FATAL_FDT_NO_BUS_FREQUENCY,
0156   QORIQ_FATAL_FDT_NO_CLOCK_FREQUENCY,
0157   QORIQ_FATAL_FDT_NO_TIMEBASE_FREQUENCY,
0158   QORIQ_FATAL_RESTART_FAILED,
0159   QORIQ_FATAL_RESTART_INSTALL_INTERRUPT,
0160   QORIQ_FATAL_RESTART_INTERRUPT_FAILED,
0161   QORIQ_FATAL_CLOCK_INTERRUPT_INSTALL,
0162   QORIQ_FATAL_CLOCK_INTERRUPT_SET_PRIORITY,
0163 
0164   /* ATSAM fatal codes */
0165   ATSAM_FATAL_XDMA_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(11),
0166   ATSAM_FATAL_PIO_IRQ_A,
0167   ATSAM_FATAL_PIO_IRQ_B,
0168   ATSAM_FATAL_PIO_IRQ_C,
0169   ATSAM_FATAL_PIO_IRQ_D,
0170   ATSAM_FATAL_PIO_IRQ_E,
0171   ATSAM_FATAL_PIO_CONFIGURE_IT,
0172 
0173   /* i.MX fatal codes */
0174   IMX_FATAL_GENERIC_TIMER_FREQUENCY = BSP_FATAL_CODE_BLOCK(12),
0175   IMX_FATAL_GPIO_UNEXPECTED_FDT,
0176 
0177   /* RISC-V fatal codes */
0178   RISCV_FATAL_NO_TIMEBASE_FREQUENCY_IN_DEVICE_TREE = BSP_FATAL_CODE_BLOCK(13),
0179   RISCV_FATAL_NO_NS16550_REG_IN_DEVICE_TREE,
0180   RISCV_FATAL_NO_NS16550_CLOCK_FREQUENCY_IN_DEVICE_TREE,
0181   RISCV_FATAL_UNEXPECTED_INTERRUPT_EXCEPTION,
0182   RISCV_FATAL_CLOCK_IRQ_INSTALL,
0183   RISCV_FATAL_NO_CLINT_REG_IN_DEVICE_TREE,
0184   RISCV_FATAL_INVALID_HART_REG_IN_DEVICE_TREE,
0185   RISCV_FATAL_INVALID_CLINT_IRQS_EXTENDED_IN_DEVICE_TREE,
0186   RISCV_FATAL_NO_PLIC_REG_IN_DEVICE_TREE,
0187   RISCV_FATAL_INVALID_PLIC_NDEV_IN_DEVICE_TREE,
0188   RISCV_FATAL_TOO_LARGE_PLIC_NDEV_IN_DEVICE_TREE,
0189   RISCV_FATAL_UNUSED_0,
0190   RISCV_FATAL_NO_NS16550_INTERRUPTS_IN_DEVICE_TREE,
0191   RISCV_FATAL_NO_TLCLOCK_FREQUENCY_IN_DEVICE_TREE,
0192   RISCV_FATAL_CLOCK_SMP_INIT,
0193   RISCV_FATAL_NO_APBUART_REG_IN_DEVICE_TREE,
0194   RISCV_FATAL_NO_APBUART_INTERRUPTS_IN_DEVICE_TREE,
0195   RISCV_FATAL_NO_APBUART_CLOCK_FREQUENCY_IN_DEVICE_TREE,
0196 
0197   /* GRLIB fatal codes */
0198   GRLIB_FATAL_CLOCK_NO_IRQMP_TIMESTAMP_SUPPORT = BSP_FATAL_CODE_BLOCK(14),
0199 
0200   /* i.MXRT fatal codes */
0201   IMXRT_FATAL_NO_CONSOLE = BSP_FATAL_CODE_BLOCK(15),
0202   IMXRT_FATAL_LPUART_INVALID_FDT,
0203   IMXRT_FATAL_LPUART_ALLOC_FAILED,
0204   IMXRT_FATAL_LPUART_INSTALL_FAILED,
0205   IMXRT_FATAL_LPSPI_INVALID_FDT,
0206   IMXRT_FATAL_LPSPI_ALLOC_FAILED,
0207   IMXRT_FATAL_LPSPI_HW_INIT_FAILED,
0208   IMXRT_FATAL_LPSPI_REGISTER_FAILED,
0209   IMXRT_FATAL_LPI2C_INVALID_FDT,
0210   IMXRT_FATAL_LPI2C_ALLOC_FAILED,
0211   IMXRT_FATAL_LPI2C_HW_INIT_FAILED,
0212   IMXRT_FATAL_LPI2C_REGISTER_FAILED,
0213   IMXRT_FATAL_LPI2C_UNSUPPORTED_HARDWARE,
0214 
0215   /* MicroBlaze fatal codes */
0216   MICROBLAZE_FATAL_CLOCK_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(16),
0217 
0218   /* Xilinx fatal codes */
0219   XIL_FATAL_TTC_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(17),
0220 
0221   /* TMS570 fatal codes */
0222   TMS570_FATAL_RTI_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(18),
0223 
0224   /* AArch64 fatal codes */
0225   AARCH64_FATAL_MMU_CANNOT_MAP_BLOCK = BSP_FATAL_CODE_BLOCK(19),
0226 
0227   /* STM32H7 fatal codes */
0228   STM32H7_FATAL_MMU_CANNOT_REGISTER_SPI = BSP_FATAL_CODE_BLOCK(20),
0229 } bsp_fatal_code;
0230 
0231 RTEMS_NO_RETURN static inline void
0232 bsp_fatal( bsp_fatal_code code )
0233 {
0234   rtems_fatal( RTEMS_FATAL_SOURCE_BSP, (rtems_fatal_code) code );
0235 }
0236 
0237 /** @} */
0238 
0239 #ifdef __cplusplus
0240 }
0241 #endif /* __cplusplus */
0242 
0243 #endif /* LIBBSP_SHARED_BSP_FATAL_H */