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:
Ralf Corsepius
2004-11-20 04:03:21 +00:00
parent a3f1b54b6d
commit bf4748809d
6 changed files with 46 additions and 34 deletions
+11
View File
@@ -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
+3 -3
View File
@@ -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;
}
+2 -22
View File
@@ -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;
/*
+4 -4
View File
@@ -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);
}
+23 -2
View File
@@ -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;
/*
+3 -3
View File
@@ -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
}