summaryrefslogtreecommitdiffstats
path: root/c/src/libchip/ide
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--c/src/libchip/ide/ata.c614
-rw-r--r--c/src/libchip/ide/ata.h14
-rw-r--r--c/src/libchip/ide/ata_internal.h26
-rw-r--r--c/src/libchip/ide/ide_controller.c28
-rw-r--r--c/src/libchip/ide/ide_ctrl.h4
-rw-r--r--c/src/libchip/ide/ide_ctrl_cfg.h32
-rw-r--r--c/src/libchip/ide/ide_ctrl_io.h12
7 files changed, 365 insertions, 365 deletions
diff --git a/c/src/libchip/ide/ata.c b/c/src/libchip/ide/ata.c
index 7f88809a3c..d0161f4cb2 100644
--- a/c/src/libchip/ide/ata.c
+++ b/c/src/libchip/ide/ata.c
@@ -1,8 +1,8 @@
/*
* ata.c
*
- * ATA RTEMS driver. ATA driver is hardware independant implementation of
- * ATA-2 standart, working draft X3T10/0948D, revision 4c. ATA driver bases
+ * ATA RTEMS driver. ATA driver is hardware independant implementation of
+ * ATA-2 standart, working draft X3T10/0948D, revision 4c. ATA driver bases
* on RTEMS IDE controller driver.
*
* Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
@@ -11,9 +11,9 @@
* 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$
- *
+ *
*/
#include <errno.h>
#include <rtems/chain.h>
@@ -49,7 +49,7 @@ typedef rtems_mode preemption_key;
} while (0)
#else
-
+
typedef boolean preemption_key;
#define DISABLE_PREEMPTION(key) \
@@ -57,7 +57,7 @@ typedef boolean preemption_key;
(key) = _Thread_Executing->is_preemptible; \
_Thread_Executing->is_preemptible = 0; \
} while (0)
-
+
#define ENABLE_PREEMPTION(key) \
do { \
_Thread_Executing->is_preemptible = (key); \
@@ -81,7 +81,7 @@ typedef struct blkdev_request1 {
static ata_ide_ctrl_t ata_ide_ctrls[IDE_CTRL_MAX_MINOR_NUMBER];
/*
- * Mapping from ATA-minor numbers to
+ * Mapping from ATA-minor numbers to
* controller-minor and device on this controller.
*/
static ata_ide_dev_t ata_devs[2 * IDE_CTRL_MAX_MINOR_NUMBER];
@@ -96,7 +96,7 @@ static rtems_id ata_task_id;
static rtems_id ata_queue_id;
/* Mapping of interrupt vectors to devices */
-static Chain_Control ata_int_vec[ATA_MAX_RTEMS_INT_VEC_NUMBER + 1];
+static Chain_Control ata_int_vec[ATA_MAX_RTEMS_INT_VEC_NUMBER + 1];
static void
ata_process_request(rtems_device_minor_number ctrl_minor);
@@ -105,40 +105,40 @@ static void
ata_process_request_on_init_phase(rtems_device_minor_number ctrl_minor,
ata_req_t *areq);
-static void
-ata_add_to_controller_queue(rtems_device_minor_number ctrl_minor,
+static void
+ata_add_to_controller_queue(rtems_device_minor_number ctrl_minor,
ata_req_t *areq);
/*
- * read/write, open/close and ioctl are provided by general block device
+ * read/write, open/close and ioctl are provided by general block device
* driver. Only initialization and ata-specific ioctl are here.
*/
-/* ata_io_data_request --
- * Form read/write request for an ATA device and enqueue it to
- * IDE controller.
- *
+/* ata_io_data_request --
+ * Form read/write request for an ATA device and enqueue it to
+ * IDE controller.
+ *
* PARAMETERS:
* device - device identifier
* req - read/write request from block device driver
*
* RETURNS:
* RTEMS_SUCCESSFUL on success, or error code if
- * error occured
+ * error occured
*/
static rtems_status_code
ata_io_data_request(dev_t device, blkdev_request *req)
{
ata_req_t *areq; /* ATA request */
- rtems_device_minor_number rel_minor; /* relative minor which indexes
+ rtems_device_minor_number rel_minor; /* relative minor which indexes
* ata_devs array
*/
rtems_device_minor_number ctrl_minor;
uint8_t dev;
-
- rel_minor = (rtems_filesystem_dev_minor_t(device)) /
+
+ rel_minor = (rtems_filesystem_dev_minor_t(device)) /
ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE;
-
+
/* get controller which serves the ATA device */
ctrl_minor = ata_devs[rel_minor].ctrl_minor;
@@ -150,18 +150,18 @@ ata_io_data_request(dev_t device, blkdev_request *req)
{
return RTEMS_NO_MEMORY;
}
-
+
areq->breq = req;
areq->cnt = req->count;
areq->cbuf = 0;
areq->pos = 0;
-
- /* set up registers masks */
+
+ /* set up registers masks */
areq->regs.to_write = ATA_REGISTERS_POSITION;
areq->regs.to_read = ATA_REGISTERS_VALUE(IDE_REGISTER_STATUS);
-
+
/* choose device on the controller for which the command will be issued */
- areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] =
+ areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] =
(dev << IDE_REGISTER_DEVICE_HEAD_DEV_POS);
/* Find ATA command and its type */
@@ -171,43 +171,43 @@ ata_io_data_request(dev_t device, blkdev_request *req)
areq->type = ATA_COMMAND_TYPE_DMA;
if (req->req == BLKDEV_REQ_READ)
areq->regs.regs[IDE_REGISTER_COMMAND] = ATA_COMMAND_READ_DMA;
- else
+ else
areq->regs.regs[IDE_REGISTER_COMMAND] = ATA_COMMAND_WRITE_DMA;
}
- else
+ else
{
if (req->req == BLKDEV_REQ_READ)
{
areq->type = ATA_COMMAND_TYPE_PIO_IN;
-
- /*
- * choose command to issue: if the number of blocks to be
+
+ /*
+ * choose command to issue: if the number of blocks to be
* exchanged is greater then 1 and for ATA command READ MULTIPLE
* data block consists of more then 1 sector choose READ MULTIPLE
* otherwise READ SECTORS
*/
- areq->regs.regs[IDE_REGISTER_COMMAND] =
- ((ATA_DEV_INFO(ctrl_minor, dev).max_multiple) &&
- (req->count > 1) &&
- (ATA_DEV_INFO(ctrl_minor, dev).current_multiple > 1)) ?
- ATA_COMMAND_READ_MULTIPLE :
+ areq->regs.regs[IDE_REGISTER_COMMAND] =
+ ((ATA_DEV_INFO(ctrl_minor, dev).max_multiple) &&
+ (req->count > 1) &&
+ (ATA_DEV_INFO(ctrl_minor, dev).current_multiple > 1)) ?
+ ATA_COMMAND_READ_MULTIPLE :
ATA_COMMAND_READ_SECTORS;
}
else
{
areq->type = ATA_COMMAND_TYPE_PIO_OUT;
- /*
- * choose command to issue: if the number of blocks to be
+ /*
+ * choose command to issue: if the number of blocks to be
* exchanged is greater then 1 and for ATA command WRITE MULTIPLE
* data block consists of more then 1 sector choose WRITE MULTIPLE
* otherwise WRITE SECTORS
*/
- areq->regs.regs[IDE_REGISTER_COMMAND] =
+ areq->regs.regs[IDE_REGISTER_COMMAND] =
((ATA_DEV_INFO(ctrl_minor, dev).max_multiple) &&
(req->count > 1) &&
- (ATA_DEV_INFO(ctrl_minor, dev).current_multiple > 1)) ?
- ATA_COMMAND_WRITE_MULTIPLE :
+ (ATA_DEV_INFO(ctrl_minor, dev).current_multiple > 1)) ?
+ ATA_COMMAND_WRITE_MULTIPLE :
ATA_COMMAND_WRITE_SECTORS;
}
}
@@ -232,30 +232,30 @@ ata_io_data_request(dev_t device, blkdev_request *req)
/* now count = number of tracks: */
count /= ATA_DEV_INFO(ctrl_minor, dev).sectors;
- areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] |=
+ areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] |=
(count / ATA_DEV_INFO(ctrl_minor, dev).cylinders);
/* now count = number of cylinders */
count %= ATA_DEV_INFO(ctrl_minor, dev).cylinders;
areq->regs.regs[IDE_REGISTER_CYLINDER_LOW] = (uint8_t)count;
areq->regs.regs[IDE_REGISTER_CYLINDER_HIGH] = (uint8_t)(count >> 8);
- areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &=
+ areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &=
~IDE_REGISTER_DEVICE_HEAD_L;
}
/* fill sector count register */
areq->regs.regs[IDE_REGISTER_SECTOR_COUNT] = areq->breq->count;
-
+
/* add request to the queue of awaiting requests to the controller */
ata_add_to_controller_queue(ctrl_minor, areq);
-
+
return RTEMS_SUCCESSFUL;
}
-/* ata_non_data_request --
- * Form and serve request of NON DATA type for an ATA device.
+/* ata_non_data_request --
+ * Form and serve request of NON DATA type for an ATA device.
* Processing of NON DATA request is SYNChronous operation.
- *
+ *
* PARAMETERS:
* device - device identifier
* cmd - command
@@ -263,7 +263,7 @@ ata_io_data_request(dev_t device, blkdev_request *req)
*
* RETURNS:
* RTEMS_SUCCESSFUL on success, or error code if
- * error occured
+ * error occured
*/
static rtems_status_code
ata_non_data_request(dev_t device, int cmd, void *argp)
@@ -275,10 +275,10 @@ ata_non_data_request(dev_t device, int cmd, void *argp)
*/
rtems_device_minor_number ctrl_minor;
uint8_t dev;
- ata_queue_msg_t msg;
-
+ ata_queue_msg_t msg;
+
rel_minor = (rtems_filesystem_dev_minor_t(device)) /
- ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE;
+ ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE;
/* get controller which serves the ATA device */
ctrl_minor = ata_devs[rel_minor].ctrl_minor;
@@ -292,38 +292,38 @@ ata_non_data_request(dev_t device, int cmd, void *argp)
{
return RTEMS_NO_MEMORY;
}
- memset(areq, 0, sizeof(ata_req_t));
+ memset(areq, 0, sizeof(ata_req_t));
areq->type = ATA_COMMAND_TYPE_NON_DATA;
areq->regs.to_write = ATA_REGISTERS_VALUE(IDE_REGISTER_COMMAND);
- areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] |=
+ areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] |=
(dev << IDE_REGISTER_DEVICE_HEAD_DEV_POS);
areq->breq = NULL;
areq->regs.to_read = ATA_REGISTERS_VALUE(IDE_REGISTER_ERROR);
-
- /*
- * depending on command fill command register and additional registers
+
+ /*
+ * depending on command fill command register and additional registers
* which are needed for command execution
*/
switch(cmd)
- {
+ {
case ATAIO_SET_MULTIPLE_MODE:
- areq->regs.regs[IDE_REGISTER_COMMAND] =
+ areq->regs.regs[IDE_REGISTER_COMMAND] =
ATA_COMMAND_SET_MULTIPLE_MODE;
- areq->regs.to_write |=
+ areq->regs.to_write |=
ATA_REGISTERS_VALUE(IDE_REGISTER_SECTOR_COUNT);
areq->regs.regs[IDE_REGISTER_SECTOR_COUNT] = *(uint8_t*)argp;
break;
-
+
default:
free(areq);
return RTEMS_INVALID_NUMBER;
- break;
- }
+ break;
+ }
- rc = rtems_semaphore_create(rtems_build_name('I', 'D', 'E', 'S'),
- 0,
- RTEMS_FIFO | RTEMS_COUNTING_SEMAPHORE |
+ rc = rtems_semaphore_create(rtems_build_name('I', 'D', 'E', 'S'),
+ 0,
+ RTEMS_FIFO | RTEMS_COUNTING_SEMAPHORE |
RTEMS_NO_INHERIT_PRIORITY |
RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL,
0,
@@ -332,60 +332,60 @@ ata_non_data_request(dev_t device, int cmd, void *argp)
{
free(areq);
return rc;
- }
-
+ }
+
ata_add_to_controller_queue(ctrl_minor, areq);
-
+
/* wait for request processing... */
rc = rtems_semaphore_obtain(areq->sema, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
if (rc != RTEMS_SUCCESSFUL)
{
free(areq);
return rc;
- }
+ }
rtems_semaphore_delete(areq->sema);
-
- /*
- * if no error occurred and if necessary, update internal ata driver data
+
+ /*
+ * if no error occurred and if necessary, update internal ata driver data
* structures to reflect changes (in device configuration, for example)
- */
+ */
if (areq->status == RTEMS_SUCCESSFUL)
{
switch(cmd)
- {
+ {
case ATAIO_SET_MULTIPLE_MODE:
- ATA_DEV_INFO(ctrl_minor, dev).current_multiple =
+ ATA_DEV_INFO(ctrl_minor, dev).current_multiple =
*(uint8_t*)argp;
break;
-
+
default:
rc = RTEMS_INVALID_NUMBER;
- break;
- }
- }
- else
- {
- /* XXX: should be correct error processing: for ex, may be
+ break;
+ }
+ }
+ else
+ {
+ /* XXX: should be correct error processing: for ex, may be
* ABRT and then we should return RTEMS_NOT_IMPLEMENTED
*/
rc = RTEMS_IO_ERROR;
- }
-
+ }
+
/* tell ata driver that controller ready to serve next request */
ATA_SEND_EVT(msg, ATA_MSG_SUCCESS_EVT, ctrl_minor, 0);
-
+
return rc;
}
-/* ata_process_request --
- * Get first request from controller's queue and process it.
- *
+/* ata_process_request --
+ * Get first request from controller's queue and process it.
+ *
* PARAMETERS:
* ctrl_minor - controller identifier
*
* RETURNS:
- * NONE
+ * NONE
*/
static void
ata_process_request(rtems_device_minor_number ctrl_minor)
@@ -395,11 +395,11 @@ ata_process_request(rtems_device_minor_number ctrl_minor)
ata_queue_msg_t msg;
uint8_t i, dev;
uint16_t val;
- uint16_t data_bs; /* the number of 512-bytes sectors in one
- * data block
+ uint16_t data_bs; /* the number of 512-bytes sectors in one
+ * data block
*/
- ISR_Level level;
-
+ ISR_Level level;
+
/* if no requests to controller then do nothing */
if (Chain_Is_empty(&ata_ide_ctrls[ctrl_minor].reqs))
return;
@@ -408,22 +408,22 @@ ata_process_request(rtems_device_minor_number ctrl_minor)
_ISR_Disable(level);
areq = (ata_req_t *)(ata_ide_ctrls[ctrl_minor].reqs.first);
_ISR_Enable(level);
-
+
/* get ATA device identifier (0 or 1) */
- dev = areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &
+ dev = areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &
IDE_REGISTER_DEVICE_HEAD_DEV;
/* get data block size */
- data_bs = ATA_DEV_INFO(ctrl_minor, dev).current_multiple ?
- ATA_DEV_INFO(ctrl_minor, dev).current_multiple : 1;
-
+ data_bs = ATA_DEV_INFO(ctrl_minor, dev).current_multiple ?
+ ATA_DEV_INFO(ctrl_minor, dev).current_multiple : 1;
+
/* execute device select protocol */
- ide_controller_write_register(ctrl_minor, IDE_REGISTER_DEVICE_HEAD,
+ ide_controller_write_register(ctrl_minor, IDE_REGISTER_DEVICE_HEAD,
areq->regs.regs[IDE_REGISTER_DEVICE_HEAD]);
-
+
do {
ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS, &byte);
- } while ((byte & IDE_REGISTER_STATUS_BSY) ||
+ } while ((byte & IDE_REGISTER_STATUS_BSY) ||
(!(byte & IDE_REGISTER_STATUS_DRDY)));
/* fill in all necessary registers on the controller */
@@ -438,53 +438,53 @@ ata_process_request(rtems_device_minor_number ctrl_minor)
if (areq->type == ATA_COMMAND_TYPE_PIO_OUT)
{
do {
- ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
+ ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
&byte);
} while (byte & IDE_REGISTER_STATUS_BSY);
if (byte & IDE_REGISTER_STATUS_DRQ)
{
ide_controller_write_data_block(
- ctrl_minor,
+ ctrl_minor,
MIN(data_bs, areq->cnt) * ATA_SECTOR_SIZE,
areq->breq->bufs, &areq->cbuf,
&areq->pos);
areq->cnt -= MIN(data_bs, areq->cnt);
- }
+ }
else
- {
+ {
if (IDE_Controller_Table[ctrl_minor].int_driven == 0)
{
ide_controller_read_register(
- ctrl_minor,
+ ctrl_minor,
IDE_REGISTER_ALTERNATE_STATUS_OFFSET,
&val);
ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
&val);
- ATA_SEND_EVT(msg, ATA_MSG_ERROR_EVT, ctrl_minor,
+ ATA_SEND_EVT(msg, ATA_MSG_ERROR_EVT, ctrl_minor,
RTEMS_IO_ERROR);
}
- }
+ }
}
if (IDE_Controller_Table[ctrl_minor].int_driven == 0)
{
do {
- ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
+ ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
&byte);
} while (byte & IDE_REGISTER_STATUS_BSY);
-
+
ATA_SEND_EVT(msg, ATA_MSG_GEN_EVT, ctrl_minor, 0);
- }
+ }
}
-/* ata_request_done --
+/* ata_request_done --
* Extract request from controller queue, execute callback if necessary
* and process next request for the controller.
- *
+ *
* PARAMETERS:
- * areq - ATA request
+ * areq - ATA request
* ctrl_minor - controller identifier
* status - status with which request has been done
* error - error, if status != RTEMS_SUCCESSFUL
@@ -511,14 +511,14 @@ ata_request_done(ata_req_t *areq, rtems_device_minor_number ctrl_minor,
ata_process_request(ctrl_minor);
return;
}
- ENABLE_PREEMPTION(key);
+ ENABLE_PREEMPTION(key);
}
-/* ata_non_data_request_done --
+/* ata_non_data_request_done --
* Set up request status and release request's semaphore.
- *
+ *
* PARAMETERS:
- * areq - ATA request
+ * areq - ATA request
* ctrl_minor - controller identifier
* status - status with which request has been done
* error - error, if status != RTEMS_SUCCESSFUL
@@ -527,7 +527,7 @@ ata_request_done(ata_req_t *areq, rtems_device_minor_number ctrl_minor,
* NONE
*/
static inline void
-ata_non_data_request_done(ata_req_t *areq,
+ata_non_data_request_done(ata_req_t *areq,
rtems_device_minor_number ctrl_minor,
rtems_status_code status, int error)
{
@@ -537,18 +537,18 @@ ata_non_data_request_done(ata_req_t *areq,
}
-/* ata_add_to_controller_queue --
+/* ata_add_to_controller_queue --
* Add request to the controller's queue.
- *
+ *
* PARAMETERS:
* ctrl_minor - controller identifier
- * areq - ATA request
+ * areq - ATA request
*
* RETURNS:
* NONE
*/
static void
-ata_add_to_controller_queue(rtems_device_minor_number ctrl_minor,
+ata_add_to_controller_queue(rtems_device_minor_number ctrl_minor,
ata_req_t *areq)
{
Chain_Append(&ata_ide_ctrls[ctrl_minor].reqs, &areq->link);
@@ -558,28 +558,28 @@ ata_add_to_controller_queue(rtems_device_minor_number ctrl_minor,
ata_queue_msg_t msg;
#ifdef DEBUG
- /*
+ /*
* read IDE_REGISTER_ALTERNATE_STATUS instead IDE_REGISTER_STATUS
* to prevent clearing of pending interrupt
*/
- ide_controller_read_register(ctrl_minor,
- IDE_REGISTER_ALTERNATE_STATUS,
+ ide_controller_read_register(ctrl_minor,
+ IDE_REGISTER_ALTERNATE_STATUS,
&val);
if (val & IDE_REGISTER_STATUS_BSY)
return;
#endif
ATA_SEND_EVT(msg, ATA_MSG_PROCESS_NEXT_EVT, ctrl_minor, 0);
- }
-}
+ }
+}
-/* ata_interrupt_handler --
+/* ata_interrupt_handler --
* ATA driver interrrupt handler. If interrrupt happend it mapped it to
* controller (controllerS, if a number of controllers share one int line)
* and generates ATA event(s).
- *
+ *
* PARAMETERS:
- * vec - interrupt vector
+ * vec - interrupt vector
*
* RETURNS:
* NONE
@@ -590,7 +590,7 @@ ata_interrupt_handler(rtems_vector_number vec)
Chain_Node *the_node = ((Chain_Control *)(&ata_int_vec[vec]))->first;
ata_queue_msg_t msg;
uint16_t byte; /* emphasize that only 8 low bits is meaningful */
-
+
for ( ; !Chain_Is_tail(&ata_int_vec[vec], the_node) ; )
{
/* if (1) - is temporary hack - currently I don't know how to identify
@@ -600,20 +600,20 @@ ata_interrupt_handler(rtems_vector_number vec)
if (1)
{
msg.ctrl_minor = ((ata_int_st_t *)the_node)->ctrl_minor;
- ide_controller_read_register(msg.ctrl_minor, IDE_REGISTER_STATUS,
+ ide_controller_read_register(msg.ctrl_minor, IDE_REGISTER_STATUS,
&byte);
- ATA_SEND_EVT(msg, ATA_MSG_GEN_EVT, msg.ctrl_minor, 0);
+ ATA_SEND_EVT(msg, ATA_MSG_GEN_EVT, msg.ctrl_minor, 0);
}
the_node = the_node->next;
- }
+ }
}
-/* ata_pio_in_protocol --
+/* ata_pio_in_protocol --
* ATA PIO_IN protocol implementation, see specification
- *
+ *
* PARAMETERS:
* ctrl_minor - controller identifier
- * areq - ATA request
+ * areq - ATA request
*
* RETURNS:
* NONE
@@ -625,17 +625,17 @@ ata_pio_in_protocol(rtems_device_minor_number ctrl_minor, ata_req_t *areq)
uint8_t dev;
uint32_t min_val;
ata_queue_msg_t msg;
-
- dev = areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &
+
+ dev = areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &
IDE_REGISTER_DEVICE_HEAD_DEV;
- bs = ATA_DEV_INFO(ctrl_minor, dev).current_multiple ?
- ATA_DEV_INFO(ctrl_minor, dev).current_multiple : 1;
+ bs = ATA_DEV_INFO(ctrl_minor, dev).current_multiple ?
+ ATA_DEV_INFO(ctrl_minor, dev).current_multiple : 1;
min_val = MIN(bs, areq->cnt);
-
- ide_controller_read_data_block(ctrl_minor, min_val * ATA_SECTOR_SIZE,
+
+ ide_controller_read_data_block(ctrl_minor, min_val * ATA_SECTOR_SIZE,
areq->breq->bufs, &areq->cbuf, &areq->pos);
-
+
areq->cnt -= min_val;
if (areq->cnt == 0)
{
@@ -646,17 +646,17 @@ ata_pio_in_protocol(rtems_device_minor_number ctrl_minor, ata_req_t *areq)
do {
ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS, &val);
} while (val & IDE_REGISTER_STATUS_BSY);
-
+
ATA_SEND_EVT(msg, ATA_MSG_GEN_EVT, ctrl_minor, 0);
}
}
-/* ata_pio_out_protocol --
+/* ata_pio_out_protocol --
* ATA PIO_OUT protocol implementation, see specification
- *
+ *
* PARAMETERS:
* ctrl_minor - controller identifier
- * areq - ATA request
+ * areq - ATA request
*
* RETURNS:
* NONE
@@ -668,29 +668,29 @@ ata_pio_out_protocol(rtems_device_minor_number ctrl_minor, ata_req_t *areq)
uint8_t dev;
uint32_t min_val;
ata_queue_msg_t msg;
-
- dev = areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &
+
+ dev = areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &
IDE_REGISTER_DEVICE_HEAD_DEV;
- bs = ATA_DEV_INFO(ctrl_minor, dev).current_multiple ?
- ATA_DEV_INFO(ctrl_minor, dev).current_multiple : 1;
+ bs = ATA_DEV_INFO(ctrl_minor, dev).current_multiple ?
+ ATA_DEV_INFO(ctrl_minor, dev).current_multiple : 1;
- min_val = MIN(bs, areq->cnt);
+ min_val = MIN(bs, areq->cnt);
if (areq->cnt == 0)
{
ata_request_done(areq, ctrl_minor, RTEMS_SUCCESSFUL, RTEMS_SUCCESSFUL);
}
- else
+ else
{
ide_controller_write_data_block(ctrl_minor, min_val * ATA_SECTOR_SIZE,
- areq->breq->bufs, &areq->cbuf,
+ areq->breq->bufs, &areq->cbuf,
&areq->pos);
areq->cnt -= min_val;
if (IDE_Controller_Table[ctrl_minor].int_driven == 0)
{
do {
- ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
+ ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
&val);
} while (val & IDE_REGISTER_STATUS_BSY);
@@ -699,9 +699,9 @@ ata_pio_out_protocol(rtems_device_minor_number ctrl_minor, ata_req_t *areq)
}
}
-/* ata_queue_task --
+/* ata_queue_task --
* Task which manages ATA driver events queue.
- *
+ *
* PARAMETERS:
* arg - ignored
*
@@ -709,7 +709,7 @@ ata_pio_out_protocol(rtems_device_minor_number ctrl_minor, ata_req_t *areq)
* NONE
*
* NOTES:
- * should be non-preemptive
+ * should be non-preemptive
*/
static rtems_task
ata_queue_task(rtems_task_argument arg)
@@ -726,19 +726,19 @@ ata_queue_task(rtems_task_argument arg)
while (1)
{
/* get event which has happend */
- rc = rtems_message_queue_receive(ata_queue_id, &msg, &size, RTEMS_WAIT,
+ rc = rtems_message_queue_receive(ata_queue_id, &msg, &size, RTEMS_WAIT,
RTEMS_NO_TIMEOUT);
if (rc != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred(RTEMS_INTERNAL_ERROR);
-
+
/* get controller on which event has happend */
ctrl_minor = msg.ctrl_minor;
-
+
/* get current request to the controller */
- _ISR_Disable(level);
+ _ISR_Disable(level);
areq = (ata_req_t *)(ata_ide_ctrls[ctrl_minor].reqs.first);
_ISR_Enable(level);
-
+
switch(msg.type)
{
case ATA_MSG_PROCESS_NEXT_EVT:
@@ -747,47 +747,47 @@ ata_queue_task(rtems_task_argument arg)
break;
case ATA_MSG_SUCCESS_EVT:
- /*
- * finish processing of current request with successful
- * status and start processing of the next request in the
+ /*
+ * finish processing of current request with successful
+ * status and start processing of the next request in the
* controller queue
*/
- ata_request_done(areq, ctrl_minor, RTEMS_SUCCESSFUL,
+ ata_request_done(areq, ctrl_minor, RTEMS_SUCCESSFUL,
msg.error);
break;
-
+
case ATA_MSG_ERROR_EVT:
- /*
- * finish processing of current request with error
- * status and start processing of the next request in the
+ /*
+ * finish processing of current request with error
+ * status and start processing of the next request in the
* controller queue
*/
- ata_request_done(areq, ctrl_minor, RTEMS_UNSATISFIED,
+ ata_request_done(areq, ctrl_minor, RTEMS_UNSATISFIED,
msg.error);
break;
-
+
case ATA_MSG_GEN_EVT:
- /*
- * continue processing of the current request to the
- * controller according to current request state and
+ /*
+ * continue processing of the current request to the
+ * controller according to current request state and
* ATA protocol
*/
- ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
+ ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS,
&val);
/* process error case */
if (val & IDE_REGISTER_STATUS_ERR)
- {
- ide_controller_read_register(ctrl_minor,
- IDE_REGISTER_ERROR,
+ {
+ ide_controller_read_register(ctrl_minor,
+ IDE_REGISTER_ERROR,
&val);
if (areq->type == ATA_COMMAND_TYPE_NON_DATA)
- ata_non_data_request_done(areq, ctrl_minor,
- RTEMS_UNSATISFIED,
+ ata_non_data_request_done(areq, ctrl_minor,
+ RTEMS_UNSATISFIED,
RTEMS_IO_ERROR);
- else
- ata_request_done(areq, ctrl_minor, RTEMS_UNSATISFIED,
+ else
+ ata_request_done(areq, ctrl_minor, RTEMS_UNSATISFIED,
RTEMS_IO_ERROR);
- break;
+ break;
}
switch(areq->type)
@@ -795,28 +795,28 @@ ata_queue_task(rtems_task_argument arg)
case ATA_COMMAND_TYPE_PIO_IN:
ata_pio_in_protocol(ctrl_minor, areq);
break;
-
+
case ATA_COMMAND_TYPE_PIO_OUT:
ata_pio_out_protocol(ctrl_minor, areq);
break;
-
+
case ATA_COMMAND_TYPE_NON_DATA:
- ide_controller_read_register(ctrl_minor,
- IDE_REGISTER_ERROR,
+ ide_controller_read_register(ctrl_minor,
+ IDE_REGISTER_ERROR,
&val1);
ata_non_data_request_done(areq, ctrl_minor,
RTEMS_SUCCESSFUL,
val1);
break;
-
+
default:
printf("ata_queue_task: non-supported command type\n");
ata_request_done(areq, ctrl_minor,
RTEMS_UNSATISFIED,
RTEMS_NOT_IMPLEMENTED);
- break;
+ break;
}
- break;
+ break;
default:
rtems_fatal_error_occurred(RTEMS_INTERNAL_ERROR);
@@ -825,9 +825,9 @@ ata_queue_task(rtems_task_argument arg)
}
}
-/* ata_ioctl --
+/* ata_ioctl --
* ATA driver ioctl interface.
- *
+ *
* PARAMETERS:
* device - device identifier
* cmd - command
@@ -836,35 +836,35 @@ ata_queue_task(rtems_task_argument arg)
* RETURNS:
* depend on 'cmd'
*/
-int
+int
ata_ioctl(dev_t device, int cmd, void *argp)
{
rtems_status_code status;
rtems_device_minor_number rel_minor;
-
+
rel_minor = (rtems_filesystem_dev_minor_t(device)) /
ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE;
- /*
+ /*
* in most cases this means that device 'device' is not an registred ATA
* device
- */
+ */
if (ata_devs[rel_minor].device == ATA_UNDEFINED_VALUE)
{
errno = ENODEV;
return -1;
- }
+ }
- switch (cmd)
+ switch (cmd)
{
case BLKIO_REQUEST:
status = ata_io_data_request(device, (blkdev_request *)argp);
break;
-
+
case ATAIO_SET_MULTIPLE_MODE:
status = ata_non_data_request(device, cmd, argp);
break;
-
+
default:
errno = EBADRQC;
return -1;
@@ -874,7 +874,7 @@ ata_ioctl(dev_t device, int cmd, void *argp)
if (status != RTEMS_SUCCESSFUL)
{
errno = EIO;
- return -1;
+ return -1;
}
return 0;
}
@@ -882,7 +882,7 @@ ata_ioctl(dev_t device, int cmd, void *argp)
/*
* ata_initialize --
* Initializes all ATA devices found on initialized IDE controllers.
- *
+ *
* PARAMETERS:
* major - device major number
* minor - device minor number
@@ -890,17 +890,17 @@ ata_ioctl(dev_t device, int cmd, void *argp)
*
* RETURNS:
* RTEMS_SUCCESSFUL on success, or error code if
- * error occured
+ * error occured
*/
-rtems_device_driver
-ata_initialize(rtems_device_major_number major,
- rtems_device_minor_number minor_arg,
+rtems_device_driver
+ata_initialize(rtems_device_major_number major,
+ rtems_device_minor_number minor_arg,
void *args)
{
uint32_t ctrl_minor;
rtems_status_code status;
ata_req_t areq;
- blkdev_request1 breq;
+ blkdev_request1 breq;
uint8_t i, dev = 0;
uint16_t *buffer;
uint16_t ec;
@@ -911,12 +911,12 @@ ata_initialize(rtems_device_major_number major,
if (ata_initialized)
return RTEMS_SUCCESSFUL;
-
+
/* initialization of disk devices library */
status = rtems_disk_io_initialize();
if (status != RTEMS_SUCCESSFUL)
return status;
-
+
/* create queue for asynchronous requests handling */
status = rtems_message_queue_create(
rtems_build_name('A', 'T', 'A', 'Q'),
@@ -928,17 +928,17 @@ ata_initialize(rtems_device_major_number major,
{
rtems_disk_io_done();
return status;
- }
+ }
- /*
- * create ATA driver task, see comments for task implementation for
- * details
+ /*
+ * create ATA driver task, see comments for task implementation for
+ * details
*/
status = rtems_task_create(
rtems_build_name ('A', 'T', 'A', 'T'),
ATA_DRIVER_TASK_PRIORITY,
ATA_DRIVER_TASK_STACK_SIZE,
- RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_ASR |
+ RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_ASR |
RTEMS_INTERRUPT_LEVEL(0),
RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,
&ata_task_id);
@@ -947,21 +947,21 @@ ata_initialize(rtems_device_major_number major,
rtems_message_queue_delete(ata_queue_id);
rtems_disk_io_done();
return status;
- }
-
- /*
- * start ATA driver task. Actually the task will not start immediately -
+ }
+
+ /*
+ * start ATA driver task. Actually the task will not start immediately -
* it will start only after multitasking support will be started
- */
- status = rtems_task_start(ata_task_id, ata_queue_task, 0);
+ */
+ status = rtems_task_start(ata_task_id, ata_queue_task, 0);
if (status != RTEMS_SUCCESSFUL)
{
rtems_task_delete(ata_task_id);
rtems_message_queue_delete(ata_queue_id);
rtems_disk_io_done();
return status;
- }
-
+ }
+
buffer = (uint16_t*)malloc(ATA_SECTOR_SIZE);
if (buffer == NULL)
{
@@ -969,8 +969,8 @@ ata_initialize(rtems_device_major_number major,
rtems_message_queue_delete(ata_queue_id);
rtems_disk_io_done();
return RTEMS_NO_MEMORY;
- }
-
+ }
+
ata_devs_number = 0;
for (i = 0; i < (2 * IDE_CTRL_MAX_MINOR_NUMBER); i++)
@@ -980,10 +980,10 @@ ata_initialize(rtems_device_major_number major,
for (i = 0; i < ATA_MAX_RTEMS_INT_VEC_NUMBER; i++)
Chain_Initialize_empty(&ata_int_vec[i]);
- /*
- * during ATA driver initialization EXECUTE DEVICE DIAGNOSTIC and
- * IDENTIFY DEVICE ATA command should be issued; for these purposes ATA
- * requests should be formed; ATA requests contain block device request,
+ /*
+ * during ATA driver initialization EXECUTE DEVICE DIAGNOSTIC and
+ * IDENTIFY DEVICE ATA command should be issued; for these purposes ATA
+ * requests should be formed; ATA requests contain block device request,
* so form block device request first
*/
memset(&breq, 0, sizeof(blkdev_request1));
@@ -994,16 +994,16 @@ ata_initialize(rtems_device_major_number major,
breq.req.bufs[0].length = ATA_SECTOR_SIZE;
breq.req.bufs[0].buffer = buffer;
- /*
+ /*
* for each presented IDE controller execute EXECUTE DEVICE DIAGNOSTIC
- * ATA command; for each found device execute IDENTIFY DEVICE ATA
- * command
+ * ATA command; for each found device execute IDENTIFY DEVICE ATA
+ * command
*/
for (ctrl_minor = 0; ctrl_minor < IDE_Controller_Count; ctrl_minor++)
if (IDE_Controller_Table[ctrl_minor].status == IDE_CTRL_INITIALIZED)
{
Chain_Initialize_empty(&ata_ide_ctrls[ctrl_minor].reqs);
-
+
if (IDE_Controller_Table[ctrl_minor].int_driven == TRUE)
{
int_st = malloc(sizeof(ata_int_st_t));
@@ -1014,13 +1014,13 @@ ata_initialize(rtems_device_major_number major,
rtems_message_queue_delete(ata_queue_id);
rtems_disk_io_done();
return RTEMS_NO_MEMORY;
- }
+ }
int_st->ctrl_minor = ctrl_minor;
status = rtems_interrupt_catch(
- ata_interrupt_handler,
- IDE_Controller_Table[ctrl_minor].int_vec,
+ ata_interrupt_handler,
+ IDE_Controller_Table[ctrl_minor].int_vec,
&old_isr);
if (status != RTEMS_SUCCESSFUL)
{
@@ -1030,14 +1030,14 @@ ata_initialize(rtems_device_major_number major,
rtems_message_queue_delete(ata_queue_id);
rtems_disk_io_done();
return status;
- }
+ }
Chain_Append(
&ata_int_vec[IDE_Controller_Table[ctrl_minor].int_vec],
&int_st->link);
/* disable interrupts */
- ide_controller_write_register(ctrl_minor,
- IDE_REGISTER_DEVICE_CONTROL_OFFSET,
+ ide_controller_write_register(ctrl_minor,
+ IDE_REGISTER_DEVICE_CONTROL_OFFSET,
IDE_REGISTER_DEVICE_CONTROL_nIEN);
}
@@ -1048,15 +1048,15 @@ ata_initialize(rtems_device_major_number major,
memset(&areq, 0, sizeof(ata_req_t));
areq.type = ATA_COMMAND_TYPE_NON_DATA;
areq.regs.to_write = ATA_REGISTERS_VALUE(IDE_REGISTER_COMMAND);
- areq.regs.regs[IDE_REGISTER_COMMAND] =
+ areq.regs.regs[IDE_REGISTER_COMMAND] =
ATA_COMMAND_EXECUTE_DEVICE_DIAGNOSTIC;
areq.regs.to_read = ATA_REGISTERS_VALUE(IDE_REGISTER_ERROR);
areq.breq = (blkdev_request *)&breq;
- /*
- * Process the request. Special processing of requests on
- * initialization phase is needed because at this moment there
+ /*
+ * Process the request. Special processing of requests on
+ * initialization phase is needed because at this moment there
* is no multitasking enviroment
*/
ata_process_request_on_init_phase(ctrl_minor, &areq);
@@ -1066,12 +1066,12 @@ ata_initialize(rtems_device_major_number major,
*/
if (breq.req.status != RTEMS_SUCCESSFUL)
continue;
-
- /* disassemble returned diagnostic codes */
+
+ /* disassemble returned diagnostic codes */
if (breq.req.error == ATA_DEV0_PASSED_DEV1_PASSED_OR_NOT_PRSNT)
{
ATA_DEV_INFO(ctrl_minor, 0).present = 1;
- ATA_DEV_INFO(ctrl_minor,1).present = 1;
+ ATA_DEV_INFO(ctrl_minor,1).present = 1;
}
else if (breq.req.error == ATA_DEV0_PASSED_DEV1_FAILED)
{
@@ -1104,25 +1104,25 @@ ata_initialize(rtems_device_major_number major,
if (ATA_DEV_INFO(ctrl_minor, dev).present)
{
/*
- * Issue DEVICE IDENTIFY ATA command and get device
- * configuration
+ * Issue DEVICE IDENTIFY ATA command and get device
+ * configuration
*/
memset(&areq, 0, sizeof(ata_req_t));
areq.type = ATA_COMMAND_TYPE_PIO_IN;
areq.regs.to_write = ATA_REGISTERS_VALUE(IDE_REGISTER_COMMAND);
- areq.regs.regs[IDE_REGISTER_COMMAND] =
+ areq.regs.regs[IDE_REGISTER_COMMAND] =
ATA_COMMAND_IDENTIFY_DEVICE;
areq.regs.to_read = ATA_REGISTERS_VALUE(IDE_REGISTER_STATUS);
areq.breq = (blkdev_request *)&breq;
-
+
areq.cnt = breq.req.count;
areq.regs.regs[IDE_REGISTER_DEVICE_HEAD] |=
(dev << IDE_REGISTER_DEVICE_HEAD_DEV_POS);
- /*
- * Process the request. Special processing of requests on
- * initialization phase is needed because at this moment there
+ /*
+ * Process the request. Special processing of requests on
+ * initialization phase is needed because at this moment there
* is no multitasking enviroment
*/
ata_process_request_on_init_phase(ctrl_minor, &areq);
@@ -1132,28 +1132,28 @@ ata_initialize(rtems_device_major_number major,
continue;
/*
- * Parse returned device configuration and fill in ATA internal
+ * Parse returned device configuration and fill in ATA internal
* device info structure
*/
- ATA_DEV_INFO(ctrl_minor, dev).cylinders =
+ ATA_DEV_INFO(ctrl_minor, dev).cylinders =
CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_CURR_LOG_CLNDS]);
- ATA_DEV_INFO(ctrl_minor, dev).heads =
+ ATA_DEV_INFO(ctrl_minor, dev).heads =
CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_CURR_LOG_HEADS]);
- ATA_DEV_INFO(ctrl_minor, dev).sectors =
+ ATA_DEV_INFO(ctrl_minor, dev).sectors =
CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_CURR_LOG_SECS]);
- ATA_DEV_INFO(ctrl_minor, dev).lba_sectors =
- (CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_USR_SECS0]) << 16) +
+ ATA_DEV_INFO(ctrl_minor, dev).lba_sectors =
+ (CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_USR_SECS0]) << 16) +
CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_USR_SECS1]);
- ATA_DEV_INFO(ctrl_minor, dev).lba_avaible =
+ ATA_DEV_INFO(ctrl_minor, dev).lba_avaible =
(CF_LE_W(buffer[ATA_IDENT_WORD_CAPABILITIES]) >> 9) & 0x1;
- ATA_DEV_INFO(ctrl_minor, dev).max_multiple =
+ ATA_DEV_INFO(ctrl_minor, dev).max_multiple =
(uint8_t) (CF_LE_W(buffer[ATA_IDENT_WORD_RW_MULT]));
- ATA_DEV_INFO(ctrl_minor, dev).current_multiple =
- (CF_LE_W(buffer[ATA_IDENT_WORD_MULT_SECS]) & 0x100) ?
+ ATA_DEV_INFO(ctrl_minor, dev).current_multiple =
+ (CF_LE_W(buffer[ATA_IDENT_WORD_MULT_SECS]) & 0x100) ?
(uint8_t)(CF_LE_W(buffer[ATA_IDENT_WORD_MULT_SECS])) :
0;
- if ((CF_LE_W(buffer[ATA_IDENT_WORD_FIELD_VALIDITY]) &
+ if ((CF_LE_W(buffer[ATA_IDENT_WORD_FIELD_VALIDITY]) &
ATA_IDENT_BIT_VALID) == 0) {
/* no "supported modes" info -> use default */
ATA_DEV_INFO(ctrl_minor, dev).mode_active = ATA_MODES_PIO3;
@@ -1163,22 +1163,22 @@ ata_initialize(rtems_device_major_number major,
((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) |
- ((CF_LE_W(buffer[63]) & 0x2) ?
+ ((CF_LE_W(buffer[63]) & 0x2) ?
ATA_MODES_DMA0 | ATA_MODES_DMA1 : 0) |
- ((CF_LE_W(buffer[63]) & 0x4) ?
+ ((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)
continue;
- /*
+ /*
* choose most appropriate ATA device data I/O speed supported
* by the controller
*/
status = ide_controller_config_io_speed(
- ctrl_minor,
+ ctrl_minor,
ATA_DEV_INFO(ctrl_minor, dev).modes_avaible);
if (status != RTEMS_SUCCESSFUL)
continue;
- }
+ }
/*
* Ok, let register new ATA device in the system
*/
@@ -1190,13 +1190,13 @@ ata_initialize(rtems_device_major_number major,
name[7] = 'a' + 2 * ctrl_minor + dev;
device = rtems_filesystem_make_dev_t(
- major,
- (ata_devs_number *
+ major,
+ (ata_devs_number *
ATA_MINOR_NUM_RESERVED_PER_ATA_DEVICE));
- status = rtems_disk_create_phys(device, ATA_SECTOR_SIZE,
- ATA_DEV_INFO(ctrl_minor, dev).lba_avaible ?
- ATA_DEV_INFO(ctrl_minor, dev).lba_sectors :
+ status = rtems_disk_create_phys(device, ATA_SECTOR_SIZE,
+ ATA_DEV_INFO(ctrl_minor, dev).lba_avaible ?
+ ATA_DEV_INFO(ctrl_minor, dev).lba_sectors :
(ATA_DEV_INFO(ctrl_minor, dev).heads *
ATA_DEV_INFO(ctrl_minor, dev).cylinders *
ATA_DEV_INFO(ctrl_minor, dev).sectors),
@@ -1205,13 +1205,13 @@ ata_initialize(rtems_device_major_number major,
{
ata_devs[ata_devs_number].device = ATA_UNDEFINED_VALUE;
continue;
- }
+ }
ata_devs_number++;
}
if (IDE_Controller_Table[ctrl_minor].int_driven == TRUE)
- {
- ide_controller_write_register(ctrl_minor,
- IDE_REGISTER_DEVICE_CONTROL_OFFSET,
+ {
+ ide_controller_write_register(ctrl_minor,
+ IDE_REGISTER_DEVICE_CONTROL_OFFSET,
0x00);
}
}
@@ -1221,16 +1221,16 @@ ata_initialize(rtems_device_major_number major,
return RTEMS_SUCCESSFUL;
}
-/* ata_process_request_on_init_phase --
- * Process the ATA request during system initialization. Request
+/* ata_process_request_on_init_phase --
+ * Process the ATA request during system initialization. Request
* processing is syncronous and doesn't use multiprocessing enviroment.
- *
+ *
* PARAMETERS:
* ctrl_minor - controller identifier
* areq - ATA request
*
* RETURNS:
- * NONE
+ * NONE
*/
static void
ata_process_request_on_init_phase(rtems_device_minor_number ctrl_minor,
@@ -1239,30 +1239,30 @@ ata_process_request_on_init_phase(rtems_device_minor_number ctrl_minor,
uint16_t byte;/* emphasize that only 8 low bits is meaningful */
uint8_t i, dev;
uint16_t val, val1;
- uint16_t data_bs; /* the number of 512 bytes sectors into one
- * data block
+ uint16_t data_bs; /* the number of 512 bytes sectors into one
+ * data block
*/
assert(areq);
-
- dev = areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &
+
+ dev = areq->regs.regs[IDE_REGISTER_DEVICE_HEAD] &
IDE_REGISTER_DEVICE_HEAD_DEV;
- data_bs = ATA_DEV_INFO(ctrl_minor, dev).current_multiple ?
- ATA_DEV_INFO(ctrl_minor, dev).current_multiple : 1;
-
- ide_controller_write_register(ctrl_minor, IDE_REGISTER_DEVICE_HEAD,
+ data_bs = ATA_DEV_INFO(ctrl_minor, dev).current_multiple ?
+ ATA_DEV_INFO(ctrl_minor, dev).current_multiple : 1;
+
+ ide_controller_write_register(ctrl_minor, IDE_REGISTER_DEVICE_HEAD,
areq->regs.regs[IDE_REGISTER_DEVICE_HEAD]);
-
+
do {
ide_controller_read_register(ctrl_minor, IDE_REGISTER_STATUS, &byte);
- } while ((byte & IDE_REGISTER_STATUS_BSY) ||
+ } while ((byte & IDE_REGISTER_STATUS_BSY) ||
(!(byte & IDE_REGISTER_STATUS_DRDY)));
for (i=0; i< ATA_MAX_CMD_REG_OFFSET; i++)
{
uint32_t reg = (1 << i);
if (areq->regs.to_write & reg)
- ide_controller_write_register(ctrl_minor, i,
+ ide_controller_write_register(ctrl_minor, i,
areq->regs.regs[i]);
}
@@ -1279,40 +1279,40 @@ ata_process_request_on_init_phase(rtems_device_minor_number ctrl_minor,
areq->breq->error = RTEMS_IO_ERROR;
return;
}
-
+
switch(areq->type)
{
case ATA_COMMAND_TYPE_PIO_IN:
ide_controller_read_data_block(
- ctrl_minor,
+ ctrl_minor,
MIN(data_bs, areq->cnt) * ATA_SECTOR_SIZE,
areq->breq->bufs, &areq->cbuf,
&areq->pos);
-
+
areq->cnt -= MIN(data_bs, areq->cnt);
if (areq->cnt == 0)
{
areq->breq->status = RTEMS_SUCCESSFUL;
}
- else
+ else
{
- /*
- * this shouldn't happend on the initialization
- * phase!
+ /*
+ * this shouldn't happend on the initialization
+ * phase!
*/
- rtems_fatal_error_occurred(RTEMS_INTERNAL_ERROR);
+ rtems_fatal_error_occurred(RTEMS_INTERNAL_ERROR);
}
break;
-
+
case ATA_COMMAND_TYPE_NON_DATA:
areq->breq->status = RTEMS_SUCCESSFUL;
areq->breq->error = val1;
break;
-
+
default:
printf("ata_queue_task: non-supported command type\n");
areq->breq->status = RTEMS_UNSATISFIED;
areq->breq->error = RTEMS_NOT_IMPLEMENTED;
- break;
+ break;
}
}
diff --git a/c/src/libchip/ide/ata.h b/c/src/libchip/ide/ata.h
index e46accf6bb..0a79b48ccd 100644
--- a/c/src/libchip/ide/ata.h
+++ b/c/src/libchip/ide/ata.h
@@ -1,7 +1,7 @@
/*
* ata.h
*
- * ATA RTEMS driver header file. This file should be included from an
+ * ATA RTEMS driver header file. This file should be included from an
* application.
*
* Copyright (C) 2002 OKTET Ltd., St.-Petersburg, Russia
@@ -10,7 +10,7 @@
* 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$
*/
#ifndef __ATA_H__
@@ -29,20 +29,20 @@ 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
+/*
+ * 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
+#define ATA_DRIVER_TASK_STACK_SIZE 16*1024
#ifdef __cplusplus
}
diff --git a/c/src/libchip/ide/ata_internal.h b/c/src/libchip/ide/ata_internal.h
index 030820fa55..051ea49db6 100644
--- a/c/src/libchip/ide/ata_internal.h
+++ b/c/src/libchip/ide/ata_internal.h
@@ -1,7 +1,7 @@
/*
* ata_internal.h
*
- * ATA RTEMS driver internal header file
+ * ATA RTEMS driver internal header file
*
* Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
* Authors: Eugeny S. Mints <Eugeny.Mints@oktet.ru>
@@ -10,7 +10,7 @@
* 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$
*
*/
@@ -82,9 +82,9 @@
#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,
+/*
+ * 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.
@@ -223,11 +223,11 @@ typedef struct ata_req_s {
uint32_t cnt; /* Number of sectors to be exchanged */
uint32_t cbuf; /* number of current buffer from breq in use */
uint32_t pos; /* current position in 'cbuf' */
- blkdev_request *breq; /* blkdev_request which corresponds to the
+ 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_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 */
@@ -274,8 +274,8 @@ typedef struct ata_queue_msg_s {
} while (0)
/*
- * Array of such structures is indexed by interrupt vecotrs and used for
- * mapping of IDE controllers and interrupt vectors
+ * 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;
@@ -313,9 +313,9 @@ typedef struct ata_dev_s {
} 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
+ * 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 */
diff --git a/c/src/libchip/ide/ide_controller.c b/c/src/libchip/ide/ide_controller.c
index bf64b4bb4e..af4d56fe4c 100644
--- a/c/src/libchip/ide/ide_controller.c
+++ b/c/src/libchip/ide/ide_controller.c
@@ -1,6 +1,6 @@
/*
* ide_controller.c
- *
+ *
* This is generic rtems driver for IDE controllers.
*
* Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
@@ -10,7 +10,7 @@
* 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$
*
*/
@@ -23,7 +23,7 @@
/*
* ide_controller_initialize --
- * Initializes all configured IDE controllers. Controllers configuration
+ * Initializes all configured IDE controllers. Controllers configuration
* table is provided by BSP
*
* PARAMETERS:
@@ -35,7 +35,7 @@
* RTEMS_SUCCESSFUL on success, or error code if
* error occured
*/
-rtems_device_driver
+rtems_device_driver
ide_controller_initialize(rtems_device_major_number major,
rtems_device_minor_number minor_arg,
void *args)
@@ -46,22 +46,22 @@ ide_controller_initialize(rtems_device_major_number major,
/* FIXME: may be it should be done on compilation phase */
if (IDE_Controller_Count > IDE_CTRL_MAX_MINOR_NUMBER)
rtems_fatal_error_occurred(RTEMS_TOO_MANY);
-
+
for (minor=0; minor < IDE_Controller_Count; minor++)
{
IDE_Controller_Table[minor].status = IDE_CTRL_NON_INITIALIZED;
-
- if ((IDE_Controller_Table[minor].probe != NULL &&
+
+ if ((IDE_Controller_Table[minor].probe != NULL &&
IDE_Controller_Table[minor].probe(minor)) ||
IDE_Controller_Table[minor].fns->ctrl_probe(minor))
{
- status = rtems_io_register_name(IDE_Controller_Table[minor].name,
+ status = rtems_io_register_name(IDE_Controller_Table[minor].name,
major, minor);
- if (status != RTEMS_SUCCESSFUL)
+ if (status != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred(status);
IDE_Controller_Table[minor].fns->ctrl_initialize(minor);
-
+
IDE_Controller_Table[minor].status = IDE_CTRL_INITIALIZED;
}
}
@@ -133,7 +133,7 @@ ide_controller_write_data_block(rtems_device_minor_number minor,
*/
void
ide_controller_read_register(rtems_device_minor_number minor,
- int reg,
+ int reg,
uint16_t *value)
{
IDE_Controller_Table[minor].fns->ctrl_reg_read(minor, reg, value);
@@ -152,7 +152,7 @@ ide_controller_read_register(rtems_device_minor_number minor,
* NONE
*/
void
-ide_controller_write_register(rtems_device_minor_number minor, int reg,
+ide_controller_write_register(rtems_device_minor_number minor, int reg,
uint16_t value)
{
IDE_Controller_Table[minor].fns->ctrl_reg_write(minor, reg, value);
@@ -170,10 +170,10 @@ ide_controller_write_register(rtems_device_minor_number minor, int reg,
* RTEMS_SUCCESSFUL on success, or error code if
* error occured
*/
-rtems_status_code
+rtems_status_code
ide_controller_config_io_speed(int minor, uint8_t modes_avaible)
{
return IDE_Controller_Table[minor].fns->ctrl_config_io_speed(
- minor,
+ minor,
modes_avaible);
}
diff --git a/c/src/libchip/ide/ide_ctrl.h b/c/src/libchip/ide/ide_ctrl.h
index f28cc5c9a7..fc010f8536 100644
--- a/c/src/libchip/ide/ide_ctrl.h
+++ b/c/src/libchip/ide/ide_ctrl.h
@@ -23,11 +23,11 @@ rtems_device_driver ide_controller_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *args);
-
+
#define IDE_CONTROLLER_DRIVER_TABLE_ENTRY \
{ide_controller_initialize, NULL, NULL, NULL, NULL, NULL}
-
+
#ifdef __cplusplus
}
diff --git a/c/src/libchip/ide/ide_ctrl_cfg.h b/c/src/libchip/ide/ide_ctrl_cfg.h
index 9a888f75c1..61ab426309 100644
--- a/c/src/libchip/ide/ide_ctrl_cfg.h
+++ b/c/src/libchip/ide/ide_ctrl_cfg.h
@@ -1,7 +1,7 @@
/*
* ide_ctrl_cfg.h
*
- * LibChip library IDE controller header file - structuers used for
+ * LibChip library IDE controller header file - structuers used for
* configuration and plugin interface definition.
*
* Copyright (C) 2002 OKTET Ltd., St.-Petersburg, Russia
@@ -33,38 +33,38 @@ typedef enum {
/*
* 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.
+ * 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,
+ 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,
+ * (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
+
+ /*
+ * The function allows to escape overhead for read/write register
* functions calls
*/
- void (*ctrl_read_block)(int minor, uint16_t block_size,
+ 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,
+
+ rtems_status_code (*ctrl_config_io_speed)(int minor,
uint8_t modes_available);
} ide_ctrl_fns_t;
-/*
- * IDE Controller configuration. Table of such configurations is provided
+/*
+ * IDE Controller configuration. Table of such configurations is provided
* by BSP
*/
typedef struct ide_controller_bsp_table_s {
@@ -72,14 +72,14 @@ typedef struct ide_controller_bsp_table_s {
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
+ 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
+ void *params; /* contains either device specific data or a
+ * pointer to s device specific information
* table
*/
} ide_controller_bsp_table_t;
diff --git a/c/src/libchip/ide/ide_ctrl_io.h b/c/src/libchip/ide/ide_ctrl_io.h
index cf582b05d1..e69c02f0c3 100644
--- a/c/src/libchip/ide/ide_ctrl_io.h
+++ b/c/src/libchip/ide/ide_ctrl_io.h
@@ -1,8 +1,8 @@
/*
* ide_ctrl_io.h
*
- * LibChip library IDE controller header file - IO operations defined for
- * IDE controllers.
+ * 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>
@@ -28,7 +28,7 @@ extern "C" {
#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_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
@@ -42,7 +42,7 @@ extern "C" {
#define IDE_REGISTER_ALTERNATE_STATUS 6
#define IDE_REGISTER_DEVICE_CONTROL IDE_REGISTER_ALTERNATE_STATUS
-/* offsets used to access registers */
+/* 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
@@ -143,7 +143,7 @@ ide_controller_write_data_block(rtems_device_minor_number minor,
*/
void
ide_controller_read_register(rtems_device_minor_number minor,
- int reg,
+ int reg,
uint16_t *value);
/*
@@ -174,7 +174,7 @@ ide_controller_write_register(rtems_device_minor_number minor,
* RTEMS_SUCCESSFUL on success, or error code if
* error occured
*/
-rtems_status_code
+rtems_status_code
ide_controller_config_io_speed(int minor, uint8_t modes_avaible);
#ifdef __cplusplus