Changeset bf71e25e in rtems
- Timestamp:
- Mar 25, 2003, 5:02:01 PM (18 years ago)
- Children:
- 086e708
- Parents:
- 01c5b9d7
- Location:
- cpukit/libblock
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/libblock/Makefile.am
r01c5b9d7 rbf71e25e 19 19 include_rtems_HEADERS = \ 20 20 include/rtems/bdbuf.h include/rtems/blkdev.h \ 21 include/rtems/diskdevs.h include/rtems/ramdisk.h 21 include/rtems/diskdevs.h include/rtems/ramdisk.h \ 22 include/rtems/ata.h include/rtems/ata_internal.h \ 23 include/rtems/ide_part_table.h 22 24 23 25 PREINSTALL_FILES = $(PROJECT_INCLUDE)/rtems \ … … 26 28 LIB = ${ARCH}/libblock.a 27 29 28 C_FILES = src/bdbuf.c src/blkdev.c src/diskdevs.c src/ramdisk.c 30 C_FILES = src/bdbuf.c src/blkdev.c src/diskdevs.c src/ramdisk.c\ 31 src/ata.c src/ide_part_table.c 32 29 33 OBJS = $(C_FILES:src/%.c=${ARCH}/%.$(OBJEXT)) 30 34 -
cpukit/libblock/include/rtems/ide_part_table.h
r01c5b9d7 rbf71e25e 87 87 /* 88 88 * Enum partition types 89 * see list at http://ata-atapi.com/hiwtab.htm 89 90 */ 90 91 enum { 91 EMPTY_PARTITION = 0, 92 EXTENDED_PARTITION = 5, 92 EMPTY_PARTITION = 0x00, 93 DOS_FAT12_PARTITION = 0x01, 94 DOS_FAT16_PARTITION = 0x04, 95 EXTENDED_PARTITION = 0x05, 96 DOS_P32MB_PARTITION = 0x06, 97 FAT32_PARTITION = 0x0B, 98 FAT32_LBA_PARTITION = 0x0C, 99 FAT16_LBA_PARTITION = 0x0E, 93 100 DM6_PARTITION = 0x54, 94 101 EZD_PARTITION = 0x55, -
cpukit/libblock/src/ata.c
r01c5b9d7 rbf71e25e 19 19 #include <chain.h> 20 20 #include <assert.h> 21 #include <string.h> /* for "memset" declaration */ 21 22 22 23 #include <rtems/diskdevs.h> … … 1153 1154 0; 1154 1155 1155 #ifndef ATA_DEV_IS_FLASH_DISK1156 1156 if ((CF_LE_W(buffer[ATA_IDENT_WORD_FIELD_VALIDITY]) & 1157 ATA_IDENT_BIT_VALID) == 0) 1157 ATA_IDENT_BIT_VALID) == 0) { 1158 /* no "supported modes" info -> use default */ 1159 ATA_DEV_INFO(ctrl_minor, dev).mode_active = ATA_MODES_PIO3; 1160 } 1161 else { 1162 ATA_DEV_INFO(ctrl_minor, dev).modes_avaible = 1163 ((CF_LE_W(buffer[64]) & 0x1) ? ATA_MODES_PIO3 : 0) | 1164 ((CF_LE_W(buffer[64]) & 0x2) ? ATA_MODES_PIO4 : 0) | 1165 ((CF_LE_W(buffer[63]) & 0x1) ? ATA_MODES_DMA0 : 0) | 1166 ((CF_LE_W(buffer[63]) & 0x2) ? 1167 ATA_MODES_DMA0 | ATA_MODES_DMA1 : 0) | 1168 ((CF_LE_W(buffer[63]) & 0x4) ? 1169 ATA_MODES_DMA0 | ATA_MODES_DMA1 | ATA_MODES_DMA2 : 0); 1170 if (ATA_DEV_INFO(ctrl_minor, dev).modes_avaible == 0) 1158 1171 continue; 1159 #endif 1160 ATA_DEV_INFO(ctrl_minor, dev).modes_avaible = 1161 ((CF_LE_W(buffer[64]) & 0x1) ? ATA_MODES_PIO3 : 0) | 1162 ((CF_LE_W(buffer[64]) & 0x2) ? ATA_MODES_PIO4 : 0) | 1163 ((CF_LE_W(buffer[63]) & 0x1) ? ATA_MODES_DMA0 : 0) | 1164 ((CF_LE_W(buffer[63]) & 0x2) ? 1165 ATA_MODES_DMA0 | ATA_MODES_DMA1 : 0) | 1166 ((CF_LE_W(buffer[63]) & 0x4) ? 1167 ATA_MODES_DMA0 | ATA_MODES_DMA1 | ATA_MODES_DMA2 : 0); 1168 1169 if (ATA_DEV_INFO(ctrl_minor, dev).modes_avaible == 0) 1170 continue; 1171 1172 /* 1173 * choose most appropriate ATA device data I/O speed supported by 1174 * the controller 1175 */ 1176 status = ide_controller_config_io_speed( 1172 /* 1173 * choose most appropriate ATA device data I/O speed supported 1174 * by the controller 1175 */ 1176 status = ide_controller_config_io_speed( 1177 1177 ctrl_minor, 1178 1178 ATA_DEV_INFO(ctrl_minor, dev).modes_avaible); 1179 1179 if (status != RTEMS_SUCCESSFUL) 1180 1180 continue; 1181 1182 #ifdef ATA_DEV_IS_FLASH_DISK 1183 ATA_DEV_INFO(ctrl_minor, dev).mode_active = ATA_MODES_PIO3; 1184 #endif 1181 } 1185 1182 /* 1186 1183 * Ok, let register new ATA device in the system -
cpukit/libblock/src/ide_part_table.c
r01c5b9d7 rbf71e25e 20 20 21 21 #include <rtems/ide_part_table.h> 22 22 #include <string.h> 23 23 24 24 /* … … 113 113 } 114 114 115 /* 116 * is_fat_partition -- 117 * checks if the partition type is defined for FAT 118 * 119 * PARAMETERS: 120 * type - type of partition to check 121 * 122 * RETURNS: 123 * TRUE if partition type is extended, FALSE otherwise 124 */ 125 static rtems_boolean 126 is_fat_partition(unsigned8 type) 127 { 128 static const unsigned8 fat_part_types[] = { 129 DOS_FAT12_PARTITION,DOS_FAT16_PARTITION, 130 DOS_P32MB_PARTITION, 131 FAT32_PARTITION ,FAT32_LBA_PARTITION, 132 FAT16_LBA_PARTITION 133 }; 134 135 return (NULL != memchr(fat_part_types,type,sizeof(fat_part_types))); 136 } 137 115 138 116 139 /* … … 158 181 part_desc->size = LE_TO_CPU_U32(temp); 159 182 160 if ((part_desc->sys_type == EMPTY_PARTITION) || 161 ((part_desc->size == 0) && (!is_extended(part_desc->sys_type)))) 162 { 163 /* empty partition */ 164 free(part_desc); 165 return RTEMS_SUCCESSFUL; 166 } 167 168 *new_part_desc = part_desc; 169 183 /* 184 * use partitions that are 185 * - extended 186 * or 187 * - FAT type and non-zero 188 */ 189 if (is_extended(part_desc->sys_type) || 190 (is_fat_partition(part_desc->sys_type)) && (part_desc->size != 0)) { 191 *new_part_desc = part_desc; 192 } 193 else { 194 /* empty partition */ 195 free(part_desc); 196 } 170 197 return RTEMS_SUCCESSFUL; 171 198 }
Note: See TracChangeset
for help on using the changeset viewer.