From 8bdf1d6ac29f3126b98e9b519b627d91cc35d082 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 27 Mar 2003 15:20:19 +0000 Subject: 2003-03-27 Joel Sherrill * ChangeLog, Makefile.am: ATA code depends upon libchip/ide which is not allowed in the cpukit source code since it must be buildable independent of any BSP. These files were moved to libchip/ide. * include/rtems/ata.h, include/rtems/ata_internal.h: Removed. --- cpukit/libblock/ChangeLog | 7 + cpukit/libblock/Makefile.am | 3 +- cpukit/libblock/include/rtems/ata.h | 55 ----- cpukit/libblock/include/rtems/ata_internal.h | 328 --------------------------- 4 files changed, 8 insertions(+), 385 deletions(-) delete mode 100644 cpukit/libblock/include/rtems/ata.h delete mode 100644 cpukit/libblock/include/rtems/ata_internal.h (limited to 'cpukit/libblock') diff --git a/cpukit/libblock/ChangeLog b/cpukit/libblock/ChangeLog index 3eeb2daefb..49022b034a 100644 --- a/cpukit/libblock/ChangeLog +++ b/cpukit/libblock/ChangeLog @@ -1,3 +1,10 @@ +2003-03-27 Joel Sherrill + + * Makefile.am: ATA code depends upon libchip/ide which is not allowed + in the cpukit source code since it must be buildable independent of + any BSP. These files were moved to libchip/ide. + * include/rtems/ata.h, include/rtems/ata_internal.h, src/ata.c: Removed. + 2003-03-25 Thomas Doerfler PR 367/filesystem diff --git a/cpukit/libblock/Makefile.am b/cpukit/libblock/Makefile.am index c8f5e949d4..411f1b2561 100644 --- a/cpukit/libblock/Makefile.am +++ b/cpukit/libblock/Makefile.am @@ -19,7 +19,6 @@ $(PROJECT_INCLUDE)/rtems: include_rtems_HEADERS = \ include/rtems/bdbuf.h include/rtems/blkdev.h \ include/rtems/diskdevs.h include/rtems/ramdisk.h \ - include/rtems/ata.h include/rtems/ata_internal.h \ include/rtems/ide_part_table.h PREINSTALL_FILES = $(PROJECT_INCLUDE)/rtems \ @@ -28,7 +27,7 @@ PREINSTALL_FILES = $(PROJECT_INCLUDE)/rtems \ LIB = ${ARCH}/libblock.a C_FILES = src/bdbuf.c src/blkdev.c src/diskdevs.c src/ramdisk.c\ - src/ata.c src/ide_part_table.c + src/ide_part_table.c OBJS = $(C_FILES:src/%.c=${ARCH}/%.$(OBJEXT)) diff --git a/cpukit/libblock/include/rtems/ata.h b/cpukit/libblock/include/rtems/ata.h deleted file mode 100644 index d77a96a7e3..0000000000 --- a/cpukit/libblock/include/rtems/ata.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * ata.h - * - * ATA RTEMS driver header file. This file should be included from an - * application. - * - * Copyright (C) 2002 OKTET Ltd., St.-Petersburg, Russia - * Author: Eugeny S. Mints - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ -#ifndef __ATA_H__ -#define __ATA_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#include - -rtems_device_driver ata_initialize( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *args); - -#define ATA_DRIVER_TABLE_ENTRY \ - {ata_initialize, GENERIC_BLOCK_DEVICE_DRIVER_ENTRIES} - -/* ATA IOCTL request codes */ -#define ATAIO_SET_MULTIPLE_MODE _IO('A', 1) - -/* - * ATA driver configuration parameters - * FIXME: should be configured more easy... - */ -#define ATA_DRIVER_MESSAGE_QUEUE_SIZE 50 -#define ATA_DRIVER_TASK_PRIORITY 140 -#define ATA_DRIVER_TASK_STACK_SIZE 16*1024 - -#ifdef __cplusplus -} -#endif - - -#endif /* __ATA_H__ */ - - - diff --git a/cpukit/libblock/include/rtems/ata_internal.h b/cpukit/libblock/include/rtems/ata_internal.h deleted file mode 100644 index 0b17703ede..0000000000 --- a/cpukit/libblock/include/rtems/ata_internal.h +++ /dev/null @@ -1,328 +0,0 @@ -/* - * ata_internal.h - * - * ATA RTEMS driver internal header file - * - * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia - * Authors: Eugeny S. Mints - * Alexandra Kossovsky - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - * - */ -#ifndef __ATA_INTERNAL_H__ -#define __ATA_INTERNAL_H__ - -#include -#include -#include -#include - -#include -#include - -/* - * Conversion from and to little-endian byte order. (no-op on i386/i486) - * - * Naming: Ca_b_c, where a: F = from, T = to, b: LE = little-endian, - * BE = big-endian, c: W = word (16 bits), L = longword (32 bits) - */ -#if (CPU_BIG_ENDIAN == TRUE) -# define CF_LE_W(v) CPU_swap_u16(v) -# define CF_LE_L(v) CPU_swap_u32(v) -# define CT_LE_W(v) CPU_swap_u16(v) -# define CT_LE_L(v) CPU_swap_u32(v) -#else -# define CF_LE_W(v) (v) -# define CF_LE_L(v) (v) -# define CT_LE_W(v) (v) -# define CT_LE_L(v) (v) -#endif - -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#define ATA_UNDEFINED_VALUE (-1) - -/* Sector size for all ATA devices */ -#define ATA_SECTOR_SIZE 512 - - -#define ATA_MAX_CMD_REG_OFFSET 8 - -/* ATA modes */ -#define ATA_MODES_PIO3 0x001 -#define ATA_MODES_PIO4 0x002 - -#define ATA_MODES_PIO 0x003 - -#define ATA_MODES_DMA0 0x004 -#define ATA_MODES_DMA1 0x008 -#define ATA_MODES_DMA2 0x010 - -#define ATA_MODES_UDMA0 0x020 -#define ATA_MODES_UDMA1 0x040 -#define ATA_MODES_UDMA2 0x080 -#define ATA_MODES_UDMA3 0x100 -#define ATA_MODES_UDMA4 0x200 -#define ATA_MODES_UDMA5 0x400 - -#define ATA_MODES_UDMA 0x7e0 -#define ATA_MODES_DMA 0x7fc - - -/* ATA Commands */ - -/* Types of ATA commands */ -#define ATA_COMMAND_TYPE_NON_DATA 0 -#define ATA_COMMAND_TYPE_PIO_IN 1 -#define ATA_COMMAND_TYPE_PIO_OUT 2 -#define ATA_COMMAND_TYPE_DMA 3 - -/* ATA commands opcodes */ -/* - * Commands present in both ATA-2 and ATA-4 specs. - * Some commands have two values in ATA-2, - * in such case value from ATA-4 used. - * Some commands have slightly different names in these specifications, - * so names from ATA-4 are used. - */ -#define ATA_COMMAND_NOP 0x00 -#define ATA_COMMAND_READ_SECTORS 0x20 -#define ATA_COMMAND_WRITE_SECTORS 0x30 -#define ATA_COMMAND_READ_VERIFY_SECTORS 0x40 -#define ATA_COMMAND_SEEK 0x70 /* or 0x7. */ -#define ATA_COMMAND_EXECUTE_DEVICE_DIAGNOSTIC 0x90 -#define ATA_COMMAND_INITIALIZE_DEVICE_PARAMETERS 0x91 -#define ATA_COMMAND_DOWNLOAD_MICROCODE 0x92 -#define ATA_COMMAND_READ_MULTIPLE 0xc4 -#define ATA_COMMAND_WRITE_MULTIPLE 0xc5 -#define ATA_COMMAND_SET_MULTIPLE_MODE 0xc6 -#define ATA_COMMAND_READ_DMA 0xc8 -#define ATA_COMMAND_WRITE_DMA 0xca -#define ATA_COMMAND_STANDBY_IMMEDIATE 0xe0 /* or 0x94 */ -#define ATA_COMMAND_IDLE_IMMEDIATE 0xe1 /* or 0x95 */ -#define ATA_COMMAND_STANDBY 0xe2 /* or 0x96 */ -#define ATA_COMMAND_IDLE 0xe3 /* or 0x97 */ -#define ATA_COMMAND_READ_BUFFER 0xe4 -#define ATA_COMMAND_CHECK_POWER_MODE 0xe5 /* or 0x98 in ATA-2 */ -#define ATA_COMMAND_SLEEP 0xe6 /* or 0x99 */ -#define ATA_COMMAND_WRITE_BUFFER 0xe8 -#define ATA_COMMAND_IDENTIFY_DEVICE 0xec -#define ATA_COMMAND_SET_FEATURES 0xef - -/* Commands present in both ATA-2 and ATA-4 specs: removable media */ -#define ATA_COMMAND_MEDIA_LOCK 0xde -#define ATA_COMMAND_MEDIA_UNLOCK 0xdf -#define ATA_COMMAND_MEDIA_EJECT 0xed - - -/* Commands present in ATA-2, but not in ATA-4 (not used) */ -#define ATA_COMMAND_RECALIBRATE 0x10 /* or 0x1. */ -#define ATA_COMMAND_READ_SECTOR_NON_RETRY 0x21 -#define ATA_COMMAND_READ_LONG_RETRY 0x22 -#define ATA_COMMAND_READ_LONG_NON_RETRY 0x23 -#define ATA_COMMAND_WRITE_SECTOR_NON_RETRY 0x31 -#define ATA_COMMAND_WRITE_LONG_RETRY 0x32 -#define ATA_COMMAND_WRITE_LONG_NON_RETRY 0x33 -#define ATA_COMMAND_WRITE_VERIFY 0x3c -#define ATA_COMMAND_READ_VERIFY_SECTOR_NON_RETRY 0x41 -#define ATA_COMMAND_FORMAT_TRACK 0x50 -#define ATA_COMMAND_READ_DMA_NON_RETRY 0xc9 -#define ATA_COMMAND_WRITE_DMA_NON_RETRY 0xcb -#define ATA_COMMAND_ACKNOWLEGE_MEDIA_CHANGE 0xdb -#define ATA_COMMAND_BOOT_POST_BOOT 0xdc -#define ATA_COMMAND_BOOT_PRE_BOOT 0xdd -#define ATA_COMMAND_WRITE_SAME 0xe9 - -/* Commands from ATA-4 specification: CFA feature set */ -#define ATA_COMMAND_CFA_REQUEST_EXTENDED_ERROR_CODE 0x03 -#define ATA_COMMAND_CFA_WRITE_SECTORS_WITHOUT_ERASE 0x38 -#define ATA_COMMAND_CFA_TRANSLATE_SECTOR 0x87 -#define ATA_COMMAND_CFA_ERASE_SECTORS 0xc0 -#define ATA_COMMAND_CFA_WRITE_MULTIPLE_WITHOUT_ERASE 0xcd - -/* Commands from ATA-4 specification: commands to use with PACKET command */ -#define ATA_COMMAND_DEVICE_RESET 0x08 -#define ATA_COMMAND_PACKET 0xa0 -#define ATA_COMMAND_IDENTIFY_PACKET_DEVICE 0xa1 -#define ATA_COMMAND_SERVICE 0xa2 - -/* Commands from ATA-4 specification: SECURITY commands */ -#define ATA_COMMAND_SECURITY_SET_PASSWORD 0xf1 -#define ATA_COMMAND_SECURITY_UNLOCK 0xf2 -#define ATA_COMMAND_SECURITY_ERASE_PREPARE 0xf3 -#define ATA_COMMAND_SECURITY_ERASE_UNIT 0xf4 -#define ATA_COMMAND_SECURITY_FREEZE_LOCK 0xf5 -#define ATA_COMMAND_SECURITY_DISABLE_PASSWORD 0xf6 - -/* Commands from ATA-4 specification: other commands */ -#define ATA_COMMAND_SMART 0xb0 -#define ATA_COMMAND_READ_DMA_QUEUED 0xc7 -#define ATA_COMMAND_WRITE_DMA_QUEUED 0xcc -#define ATA_COMMAND_GET_MEDIA_STATUS 0xda -#define ATA_COMMAND_FLUSH_CACHE 0xe7 -#define ATA_COMMAND_READ_NATIVE_MAX_ADDRESS 0xf8 -#define ATA_COMMAND_SET_MAX_ADDRESS 0xf9 - -#define ATA_REGISTERS_VALUE(reg) (1 << (reg)) - -/* ATA IDENTIFY DEVICE command words and bits */ -#define ATA_IDENT_WORD_RW_MULT 47 -#define ATA_IDENT_WORD_CAPABILITIES 49 -#define ATA_IDENT_WORD_FIELD_VALIDITY 53 -#define ATA_IDENT_WORD_NUM_OF_CURR_LOG_CLNDS 54 -#define ATA_IDENT_WORD_NUM_OF_CURR_LOG_HEADS 55 -#define ATA_IDENT_WORD_NUM_OF_CURR_LOG_SECS 56 -#define ATA_IDENT_WORD_MULT_SECS 59 -#define ATA_IDENT_WORD_NUM_OF_USR_SECS0 60 -#define ATA_IDENT_WORD_NUM_OF_USR_SECS1 61 -#define ATA_IDENT_WORD_PIO_SPPRTD 64 - -#define ATA_IDENT_BIT_VALID 0x02 - -/* - * It is OR for all ATA_REGISTERS_VALUE(reg), where reg is neccessary - * for setting block position - */ -#define ATA_REGISTERS_POSITION 0xfc - -#define ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE 64 - -#define ATA_MAX_RTEMS_INT_VEC_NUMBER 255 - -#define ATA_MAX_NAME_LENGTH 10 - -/* diagnostic codes */ -#define ATA_DEV0_PASSED_DEV1_PASSED_OR_NOT_PRSNT 0x01 -#define ATA_DEV0_PASSED_DEV1_FAILED 0x81 -#define ATA_DEV1_PASSED_DEV0_FAILED 0x80 - -/* - * Obtain ata device parameters by controller minor number and device number - */ -#define ATA_DEV_INFO(controller_minor, dev) \ - ata_ide_ctrls[controller_minor].device[dev] - -/* ATA RTEMS driver internal data stuctures */ - -/* Command block registers */ -typedef struct ata_registers_s { - unsigned16 regs[8]; /* command block registers */ - unsigned16 to_read; /* mask: which ata registers should be read */ - unsigned16 to_write; /* mask: which ata registers should be written */ -} ata_registers_t; - -/* ATA request */ -typedef struct ata_req_s { - Chain_Node link; /* link in requests chain */ - char type; /* request type */ - ata_registers_t regs; /* ATA command */ - rtems_unsigned32 cnt; /* Number of sectors to be exchanged */ - rtems_unsigned32 cbuf; /* number of current buffer from breq in use */ - rtems_unsigned32 pos; /* current position in 'cbuf' */ - blkdev_request *breq; /* blkdev_request which corresponds to the - * ata request - */ - rtems_id sema; /* semaphore which is used if synchronous - * processing of the ata request is required - */ - rtems_status_code status; /* status of ata request processing */ - int error; /* device error code */ -} ata_req_t; - -/* call callback provided by block device request if it is defined */ -#define ATA_EXEC_CALLBACK(areq, status, error) \ - do {\ - if (((areq)->breq != NULL) && ((areq)->breq->req_done != NULL)) \ - (areq)->breq->req_done((areq)->breq->done_arg, status, error); \ - } while (0) - -/* ATA RTEMS driver events types */ -typedef enum ata_msg_type_s { - ATA_MSG_GEN_EVT = 1, /* general event */ - ATA_MSG_SUCCESS_EVT, /* success event */ - ATA_MSG_ERROR_EVT, /* error event */ - ATA_MSG_PROCESS_NEXT_EVT /* process next request event */ -} ata_msg_type_t; - -/* ATA RTEMS driver message */ -typedef struct ata_queue_msg_s { - ata_msg_type_t type; /* message type */ - rtems_device_minor_number ctrl_minor; /* IDE controller minor number */ - int error; /* error code */ -} ata_queue_msg_t; - -/* macros for messages processing */ -#define ATA_FILL_MSG(msg, evt_type, ctrl, err)\ - do {\ - msg.type = evt_type;\ - msg.ctrl_minor = ctrl;\ - msg.error = err;\ - } while (0) - -#define ATA_SEND_EVT(msg, type, ctrl, err)\ - do {\ - rtems_status_code rc;\ - ATA_FILL_MSG(msg, type, ctrl, err);\ - rc = rtems_message_queue_send(ata_queue_id, &msg,\ - sizeof(ata_queue_msg_t));\ - if (rc != RTEMS_SUCCESSFUL)\ - rtems_fatal_error_occurred(RTEMS_INTERNAL_ERROR);\ - } while (0) - -/* - * Array of such structures is indexed by interrupt vecotrs and used for - * mapping of IDE controllers and interrupt vectors - */ -typedef struct ata_int_st_s { - Chain_Node link; - rtems_device_minor_number ctrl_minor; -} ata_int_st_t; - -/* - * Mapping of rtems ATA devices to the following pairs: - * (IDE controller number served the device, device number on the controller) - */ -typedef struct ata_ide_dev_s { - int ctrl_minor;/* minor number of IDE controller served rtems ATA device */ - int device; /* device number on IDE controller (0 or 1) */ -} ata_ide_dev_t; - -/* - * ATA device description - */ -typedef struct ata_dev_s { - signed8 present; /* 1 -- present, 0 -- not present, */ - /* -1 -- non-initialized */ - unsigned16 cylinders; - unsigned16 heads; - unsigned16 sectors; - unsigned32 lba_sectors; /* for small disk */ - /* == cylinders * heads * sectors */ - - unsigned8 lba_avaible; /* 0 - CHS mode, 1 - LBA mode */ - - unsigned8 max_multiple; /* 0 if READ/WRITE MULTIPLE is unsupported */ - unsigned8 current_multiple; - - unsigned8 modes_avaible; /* OR of values for this modes */ - unsigned8 mode_active; -} ata_dev_t; - -/* - * This structure describes controller state, devices configuration on the - * controller and chain of ATA requests to the controller. Array of such - * structures is indexed by controller minor number - */ -typedef struct ata_ide_ctrl_s { - rtems_boolean present; /* controller state */ - ata_dev_t device[2]; /* ata diveces description */ - Chain_Control reqs; /* requests chain */ -} ata_ide_ctrl_t; - -#endif /* __ATA_INTERNAL_H__ */ - - \ No newline at end of file -- cgit v1.2.3