mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-08-29 06:06:31 +08:00
2004-11-20 Thomas Doerfler <Thomas.Doerfler@imd-systems.de>:
PR 703/filesystem
* libchip/ide/ata_internal.h, libchip/ide/ide_ctrl_cfg.h,
libchip/ide/ide_ctrl_io.h, libchip/ide/ata.c,
libchip/ide/ide_controller.c:
Move definitions for ATA modes into ide_ctrl_cfg.h, to make them
available for BSPS/device drivers.
Extend the "modes_available" and "mode_active" parameters to
uint16_t for UDMA support.
This commit is contained in:
@@ -1,3 +1,14 @@
|
||||
2004-11-20 Thomas Doerfler <Thomas.Doerfler@imd-systems.de>:
|
||||
|
||||
PR 703/filesystem
|
||||
* libchip/ide/ata_internal.h, libchip/ide/ide_ctrl_cfg.h,
|
||||
libchip/ide/ide_ctrl_io.h, libchip/ide/ata.c,
|
||||
libchip/ide/ide_controller.c:
|
||||
Move definitions for ATA modes into ide_ctrl_cfg.h, to make them
|
||||
available for BSPS/device drivers.
|
||||
Extend the "modes_available" and "mode_active" parameters to
|
||||
uint16_t for UDMA support.
|
||||
|
||||
2004-11-10 Richard Campbell <richard.campbell@oarcorp.com>
|
||||
|
||||
* libchip/network/dec21140.c: Cleanup a bit and remove message about
|
||||
|
||||
@@ -1159,7 +1159,7 @@ ata_initialize(rtems_device_major_number major,
|
||||
ATA_DEV_INFO(ctrl_minor, dev).mode_active = ATA_MODES_PIO3;
|
||||
}
|
||||
else {
|
||||
ATA_DEV_INFO(ctrl_minor, dev).modes_avaible =
|
||||
ATA_DEV_INFO(ctrl_minor, dev).modes_available =
|
||||
((CF_LE_W(buffer[64]) & 0x1) ? ATA_MODES_PIO3 : 0) |
|
||||
((CF_LE_W(buffer[64]) & 0x2) ? ATA_MODES_PIO4 : 0) |
|
||||
((CF_LE_W(buffer[63]) & 0x1) ? ATA_MODES_DMA0 : 0) |
|
||||
@@ -1167,7 +1167,7 @@ ata_initialize(rtems_device_major_number major,
|
||||
ATA_MODES_DMA0 | ATA_MODES_DMA1 : 0) |
|
||||
((CF_LE_W(buffer[63]) & 0x4) ?
|
||||
ATA_MODES_DMA0 | ATA_MODES_DMA1 | ATA_MODES_DMA2 : 0);
|
||||
if (ATA_DEV_INFO(ctrl_minor, dev).modes_avaible == 0)
|
||||
if (ATA_DEV_INFO(ctrl_minor, dev).modes_available == 0)
|
||||
continue;
|
||||
/*
|
||||
* choose most appropriate ATA device data I/O speed supported
|
||||
@@ -1175,7 +1175,7 @@ ata_initialize(rtems_device_major_number major,
|
||||
*/
|
||||
status = ide_controller_config_io_speed(
|
||||
ctrl_minor,
|
||||
ATA_DEV_INFO(ctrl_minor, dev).modes_avaible);
|
||||
ATA_DEV_INFO(ctrl_minor, dev).modes_available);
|
||||
if (status != RTEMS_SUCCESSFUL)
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -52,26 +52,6 @@
|
||||
|
||||
#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 */
|
||||
|
||||
@@ -308,8 +288,8 @@ typedef struct ata_dev_s {
|
||||
uint8_t max_multiple; /* 0 if READ/WRITE MULTIPLE is unsupported */
|
||||
uint8_t current_multiple;
|
||||
|
||||
uint8_t modes_avaible; /* OR of values for this modes */
|
||||
uint8_t mode_active;
|
||||
uint16_t modes_available; /* OR of values for this modes */
|
||||
uint16_t mode_active;
|
||||
} ata_dev_t;
|
||||
|
||||
/*
|
||||
|
||||
@@ -163,17 +163,17 @@ ide_controller_write_register(rtems_device_minor_number minor, int reg,
|
||||
* Set controller's speed of IO operations
|
||||
*
|
||||
* PARAMETERS:
|
||||
* minor - minor number of controller
|
||||
* modes_avaible - speeds available
|
||||
* minor - minor number of controller
|
||||
* modes_available - speeds available
|
||||
*
|
||||
* RETURNS:
|
||||
* RTEMS_SUCCESSFUL on success, or error code if
|
||||
* error occured
|
||||
*/
|
||||
rtems_status_code
|
||||
ide_controller_config_io_speed(int minor, uint8_t modes_avaible)
|
||||
ide_controller_config_io_speed(int minor, uint16_t modes_available)
|
||||
{
|
||||
return IDE_Controller_Table[minor].fns->ctrl_config_io_speed(
|
||||
minor,
|
||||
modes_avaible);
|
||||
modes_available);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* ide_ctrl_cfg.h
|
||||
*
|
||||
* LibChip library IDE controller header file - structuers used for
|
||||
* LibChip library IDE controller header file - structures used for
|
||||
* configuration and plugin interface definition.
|
||||
*
|
||||
* Copyright (C) 2002 OKTET Ltd., St.-Petersburg, Russia
|
||||
@@ -30,6 +30,27 @@ typedef enum {
|
||||
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
|
||||
@@ -60,7 +81,7 @@ typedef struct ide_ctrl_fns_s {
|
||||
uint32_t *pos);
|
||||
|
||||
rtems_status_code (*ctrl_config_io_speed)(int minor,
|
||||
uint8_t modes_available);
|
||||
uint16_t modes_available);
|
||||
} ide_ctrl_fns_t;
|
||||
|
||||
/*
|
||||
|
||||
@@ -167,15 +167,15 @@ ide_controller_write_register(rtems_device_minor_number minor,
|
||||
* Set controller's speed of IO operations
|
||||
*
|
||||
* PARAMETERS:
|
||||
* minor - minor number of controller
|
||||
* modes_avaible - speeds available
|
||||
* minor - minor number of controller
|
||||
* modes_available - speeds available
|
||||
*
|
||||
* RETURNS:
|
||||
* RTEMS_SUCCESSFUL on success, or error code if
|
||||
* error occured
|
||||
*/
|
||||
rtems_status_code
|
||||
ide_controller_config_io_speed(int minor, uint8_t modes_avaible);
|
||||
ide_controller_config_io_speed(int minor, uint16_t modes_available);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user