File indexing completed on 2025-05-11 08:24:12
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037 #ifndef _RTEMS_CONFDEFS_IODRIVERS_H
0038 #define _RTEMS_CONFDEFS_IODRIVERS_H
0039
0040 #ifndef __CONFIGURATION_TEMPLATE_h
0041 #error "Do not include this file directly, use <rtems/confdefs.h> instead"
0042 #endif
0043
0044 #ifdef CONFIGURE_INIT
0045
0046 #include <rtems/confdefs/bsp.h>
0047
0048 #if !defined(CONFIGURE_DISABLE_BSP_SETTINGS) && \
0049 defined(CONFIGURE_BSP_PREREQUISITE_DRIVERS)
0050 #define _CONFIGURE_BSP_PREREQUISITE_DRIVERS CONFIGURE_BSP_PREREQUISITE_DRIVERS
0051 #endif
0052
0053 #if defined(_CONFIGURE_BSP_PREREQUISITE_DRIVERS) || \
0054 defined(CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS) || \
0055 defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) || \
0056 defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) || \
0057 defined(CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER) || \
0058 defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER) || \
0059 defined(CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER) || \
0060 defined(CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER) || \
0061 defined(CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER) || \
0062 defined(CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER) || \
0063 defined(CONFIGURE_APPLICATION_EXTRA_DRIVERS)
0064 #define _CONFIGURE_HAS_IO_DRIVERS
0065 #endif
0066
0067 #if defined(_CONFIGURE_HAS_IO_DRIVERS) || \
0068 defined(CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER) || \
0069 CONFIGURE_MAXIMUM_DRIVERS > 0
0070
0071 #include <rtems/ioimpl.h>
0072 #include <rtems/sysinit.h>
0073
0074 #ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
0075 #if defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER) \
0076 || defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER)
0077 #error "CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER, CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER, and CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER are mutually exclusive"
0078 #endif
0079
0080 #include <rtems/console.h>
0081 #endif
0082
0083 #ifdef CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
0084 #include <rtems/rtc.h>
0085 #endif
0086
0087 #ifdef CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
0088 #include <rtems/watchdogdrv.h>
0089 #endif
0090
0091 #ifdef CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
0092 #include <rtems/framebuffer.h>
0093 #endif
0094
0095 #ifdef CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
0096 #include <rtems/devnull.h>
0097 #endif
0098
0099 #ifdef CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
0100 #include <rtems/devzero.h>
0101 #endif
0102
0103 #ifdef CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
0104 #ifndef CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
0105 #define CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
0106 #endif
0107
0108 #include <libchip/ide_ctrl.h>
0109 #endif
0110
0111 #ifdef CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
0112 #include <libchip/ata.h>
0113 #endif
0114
0115 #ifndef CONFIGURE_MAXIMUM_DRIVERS
0116 #define CONFIGURE_MAXIMUM_DRIVERS
0117 #endif
0118
0119 #define NULL_DRIVER_TABLE_ENTRY { NULL, NULL, NULL, NULL, NULL, NULL }
0120
0121 #ifdef __cplusplus
0122 extern "C" {
0123 #endif
0124
0125 rtems_driver_address_table
0126 _IO_Driver_address_table[ CONFIGURE_MAXIMUM_DRIVERS ] = {
0127 #ifdef _CONFIGURE_BSP_PREREQUISITE_DRIVERS
0128 _CONFIGURE_BSP_PREREQUISITE_DRIVERS,
0129 #endif
0130 #ifdef CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
0131 CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS,
0132 #endif
0133 #ifdef CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
0134 CONSOLE_DRIVER_TABLE_ENTRY,
0135 #endif
0136 #ifdef CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
0137 RTC_DRIVER_TABLE_ENTRY,
0138 #endif
0139 #ifdef CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
0140 WATCHDOG_DRIVER_TABLE_ENTRY,
0141 #endif
0142 #ifdef CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
0143 DEVNULL_DRIVER_TABLE_ENTRY,
0144 #endif
0145 #ifdef CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
0146 DEVZERO_DRIVER_TABLE_ENTRY,
0147 #endif
0148 #ifdef CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
0149 IDE_CONTROLLER_DRIVER_TABLE_ENTRY,
0150 #endif
0151 #ifdef CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
0152 ATA_DRIVER_TABLE_ENTRY,
0153 #endif
0154 #ifdef CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
0155 FRAME_BUFFER_DRIVER_TABLE_ENTRY,
0156 #endif
0157 #ifdef CONFIGURE_APPLICATION_EXTRA_DRIVERS
0158 CONFIGURE_APPLICATION_EXTRA_DRIVERS,
0159 #endif
0160 #if defined(CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER) || \
0161 !defined(_CONFIGURE_HAS_IO_DRIVERS)
0162 NULL_DRIVER_TABLE_ENTRY
0163 #endif
0164 };
0165
0166 const size_t _IO_Number_of_drivers =
0167 RTEMS_ARRAY_SIZE( _IO_Driver_address_table );
0168
0169 RTEMS_SYSINIT_ITEM(
0170 _IO_Initialize_all_drivers,
0171 RTEMS_SYSINIT_DEVICE_DRIVERS,
0172 RTEMS_SYSINIT_ORDER_MIDDLE
0173 );
0174
0175 #ifdef CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
0176 #ifndef CONFIGURE_ATA_DRIVER_TASK_PRIORITY
0177 #define CONFIGURE_ATA_DRIVER_TASK_PRIORITY ATA_DRIVER_TASK_DEFAULT_PRIORITY
0178 #endif
0179
0180 rtems_task_priority rtems_ata_driver_task_priority
0181 = CONFIGURE_ATA_DRIVER_TASK_PRIORITY;
0182 #endif
0183
0184 #ifdef __cplusplus
0185 }
0186 #endif
0187
0188 #endif
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200 #if defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) || \
0201 defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER) || \
0202 defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER)
0203
0204 #include <rtems/libio.h>
0205
0206 RTEMS_SYSINIT_ITEM(
0207 rtems_libio_post_driver,
0208 RTEMS_SYSINIT_STD_FILE_DESCRIPTORS,
0209 RTEMS_SYSINIT_ORDER_MIDDLE
0210 );
0211 #endif
0212
0213 #endif
0214
0215 #endif