⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ide_ctrl_io.h

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 H
字号:
/* * ide_ctrl_io.h * * LibChip library IDE controller header file - IO operations defined for  * IDE controllers.  * * Copyright (C) 2002 OKTET Ltd., St.-Petersburg, Russia * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru> * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. * * $Id: ide_ctrl_io.h,v 1.1.2.1 2003/09/04 18:46:04 joel Exp $ */#ifndef __IDE_CTRL_IO_H__#define __IDE_CTRL_IO_H__#ifdef __cplusplusextern "C" {#endif#include <rtems/blkdev.h>/* Command Block Registers */#define IDE_REGISTER_DATA               0#define IDE_REGISTER_ERROR              1#define IDE_REGISTER_FEATURES           IDE_REGISTER_ERROR#define IDE_REGISTER_SECTOR_COUNT       2#define IDE_REGISTER_SECTOR_NUMBER      3#define IDE_REGISTER_LBA0               IDE_REGISTER_SECTOR_NUMBER #define IDE_REGISTER_CYLINDER_LOW       4#define IDE_REGISTER_LBA1               IDE_REGISTER_CYLINDER_LOW#define IDE_REGISTER_CYLINDER_HIGH      5#define IDE_REGISTER_LBA2               IDE_REGISTER_CYLINDER_HIGH#define IDE_REGISTER_DEVICE_HEAD        6#define IDE_REGISTER_LBA3               IDE_REGISTER_DEVICE_HEAD#define IDE_REGISTER_STATUS             7#define IDE_REGISTER_COMMAND            IDE_REGISTER_STATUS/*  Control Block Registers */#define IDE_REGISTER_ALTERNATE_STATUS   6#define IDE_REGISTER_DEVICE_CONTROL     IDE_REGISTER_ALTERNATE_STATUS/* offsets used to access  registers */ #define IDE_REGISTER_DEVICE_CONTROL_OFFSET   8#define IDE_REGISTER_ALTERNATE_STATUS_OFFSET IDE_REGISTER_DEVICE_CONTROL_OFFSET#define IDE_REGISTER_DATA_BYTE               9#define IDE_REGISTER_DATA_WORD               10/* * Registers bits */#define IDE_REGISTER_STATUS_BSY          0x80  /* Busy bit */#define IDE_REGISTER_STATUS_DRDY         0x40  /* Device ready */#define IDE_REGISTER_STATUS_DF           0x20  /* Device fault */#define IDE_REGISTER_STATUS_DSC          0x10  /* Device seek complete-- */                                               /* obsolete */#define IDE_REGISTER_STATUS_DRQ          0x08  /* Data request */#define IDE_REGISTER_STATUS_CORR         0x04  /* Corrected data-- */                                               /* vendor specific--obsolete */#define IDE_REGISTER_STATUS_IDX          0x02  /* Index-- */                                                /* vendor specific--obsolete */#define IDE_REGISTER_STATUS_ERR          0x01  /* Error */#define IDE_REGISTER_DEVICE_CONTROL_SRST 0x04  /* Host software reset bit */#define IDE_REGISTER_DEVICE_CONTROL_nIEN 0x02  /* Negated interrupt enable */#define IDE_REGISTER_DEVICE_HEAD_L       0x40  /* LBA mode bit */#define IDE_REGISTER_DEVICE_HEAD_DEV     0x10  /* Device0/Device1 bit */#define IDE_REGISTER_DEVICE_HEAD_DEV_POS 4     /* Dev0/Dev1 bit position */#define IDE_REGISTER_DEVICE_HEAD_HS      0x0f  /* Head/LBA24_27 bits */#define IDE_REGISTER_LBA3_L              0x40#define IDE_REGISTER_LBA3_DEV            0x10#define IDE_REGISTER_LBA3_LBA            0x0f#define IDE_REGISTER_ERROR_ICRC          0x80  /* Interface CRC error on */                                               /* UDMA data transfer */#define IDE_REGISTER_ERROR_UNC           0x40  /* Uncorrectable data error */#define IDE_REGISTER_ERROR_WP            0x40  /* Write protect */#define IDE_REGISTER_ERROR_MC            0x20  /* Media changed */#define IDE_REGISTER_ERROR_IDNF          0x10  /* Sector ID not found */#define IDE_REGISTER_ERROR_MCR           0x08  /* Media change requested */#define IDE_REGISTER_ERROR_ABRT          0x04  /* Aborted command */#define IDE_REGISTER_ERROR_NM            0x02  /* No media */#define IDE_REGISTER_ERROR_AMNF          0x01  /* Address mark not found */                                               /* --obsolette in ATA-4 */#define IDE_REGISTER_ERROR_MED           0x01  /* Media error is detected *//* * ide_controller_read_data_block -- *     Read data block via controller's data register * * PARAMETERS: *     minor      - minor number of controller *     block_size - number of bytes to read *     bufs       - set of buffers to store data *     cbuf       - number of current buffer from the set *     pos        - position inside current buffer 'cbuf' * * RETURNS: *     NONE */voidide_controller_read_data_block(rtems_device_minor_number  minor,                               unsigned16                 block_size,                               blkdev_sg_buffer          *bufs,                               rtems_unsigned32          *cbuf,                               rtems_unsigned32          *pos);/* * ide_controller_write_data_block -- *     Write data block via controller's data register * * PARAMETERS: *     minor      - minor number of controller *     block_size - number of bytes to write *     bufs       - set of buffers which store data *     cbuf       - number of current buffer from the set *     pos        - position inside current buffer 'cbuf' * * RETURNS: *     NONE */voidide_controller_write_data_block(rtems_device_minor_number  minor,                                unsigned16                 block_size,                                blkdev_sg_buffer          *bufs,                               rtems_unsigned32           *cbuf,                               rtems_unsigned32           *pos);/* * ide_controller_read_register -- *     Read controller's register * * PARAMETERS: *     minor - minor number of controller *     reg   - register to read *     value - placeholder for result * * RETURNS *     NONE */voidide_controller_read_register(rtems_device_minor_number  minor,                             int                        reg,                              unsigned16                *value);/* * ide_controller_write_register -- *     Write controller's register * * PARAMETERS: *     minor - minor number of controller *     reg   - register to write *     value - value to write * * RETURNS: *     NONE */voidide_controller_write_register(rtems_device_minor_number minor,                              int reg, unsigned16 value);/* * ide_controller_config_io_speed -- *     Set controller's speed of IO operations * * PARAMETERS: *     minor         - minor number of controller *     modes_avaible - speeds available * * RETURNS: *     RTEMS_SUCCESSFUL on success, or error code if *     error occured */rtems_status_code ide_controller_config_io_speed(int minor, unsigned8 modes_avaible);#ifdef __cplusplus}#endif#endif /* __IDE_CTRL_IO_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -