📄 ide_ctrl_cfg.h
字号:
/* * ide_ctrl_cfg.h * * LibChip library IDE controller header file - structures used for * configuration and plugin interface definition. * * 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_cfg.h,v 1.7 2004/11/20 04:03:21 ralf Exp $ */#ifndef __IDE_CTRL_CFG_H__#define __IDE_CTRL_CFG_H__#ifdef __cplusplusextern "C" {#endif#include <rtems/blkdev.h>/* * Avaible drivers for IDE controllers */typedef enum { IDE_STD, IDE_CUSTOM /* BSP specific driver */} ide_ctrl_devs_t;/* ATA modes: bit masks used in ctrl_config_io_speed call */#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/* * Each driver for a particular controller have to provide following * functions in such a structure. The only field which should not be NULL * is contInit. */typedef struct ide_ctrl_fns_s { boolean (*ctrl_probe)(int minor); /* probe routine */ void (*ctrl_initialize)(int minor); int (*ctrl_control)(int minor, uint32_t command, void *arg); /* * Functions which allow read/write registers of a particular controller. * (these functions may be used from ide_controller_read_register, * ide_controller_write_register) */ void (*ctrl_reg_read)(int minor, int regist, uint16_t *value); void (*ctrl_reg_write)(int minor, int regist, uint16_t value); /* * The function allows to escape overhead for read/write register * functions calls */ void (*ctrl_read_block)(int minor, uint16_t block_size, blkdev_sg_buffer *bufs, uint32_t *cbuf, uint32_t *pos); void (*ctrl_write_block)(int minor, uint16_t block_size, blkdev_sg_buffer *bufs, uint32_t *cbuf, uint32_t *pos); rtems_status_code (*ctrl_config_io_speed)(int minor, uint16_t modes_available);} ide_ctrl_fns_t;/* * IDE Controller configuration. Table of such configurations is provided * by BSP */typedef struct ide_controller_bsp_table_s { char *name; /* device name */ ide_ctrl_devs_t type; /* chip type */ ide_ctrl_fns_t *fns; /* pointer to the set of driver routines */ boolean (*probe)(int minor); /* general probe routine */ uint8_t status; /* initialized/non initialized. Should be set * to zero by static initialization */ uint32_t port1; /* port number for the port of the device */ rtems_boolean int_driven; /* interrupt/poll driven */ rtems_vector_number int_vec; /* the interrupt vector of the device */ void *params; /* contains either device specific data or a * pointer to s device specific information * table */} ide_controller_bsp_table_t;/* IDE controllers Table */extern ide_controller_bsp_table_t IDE_Controller_Table[];/* Number of rows in IDE_Controller_Table */extern unsigned long IDE_Controller_Count;#define IDE_CTRL_MAX_MINOR_NUMBER 4#define IDE_CTRL_NON_INITIALIZED 0#define IDE_CTRL_INITIALIZED 1#ifdef __cplusplus}#endif#endif /* __IDE_CTRL_CFG_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -