libblock API update

This commit is contained in:
Thomas Doerfler
2010-01-19 09:10:03 +00:00
parent 64734fc14b
commit 5c587596f0
11 changed files with 406 additions and 405 deletions

View File

@@ -1005,7 +1005,7 @@ static int sd_card_disk_block_read( sd_card_driver_entry *e, rtems_blkdev_reques
RTEMS_CHECK_SC_RV( sc, "Stop");
/* Done */
r->req_done( r->done_arg, RTEMS_SUCCESSFUL, 0);
r->req_done( r->done_arg, RTEMS_SUCCESSFUL);
return 0;
@@ -1020,7 +1020,7 @@ sd_card_disk_block_read_cleanup:
sd_card_stop( e);
/* Done */
r->req_done( r->done_arg, RTEMS_IO_ERROR, 0);
r->req_done( r->done_arg, RTEMS_IO_ERROR);
return rv;
}
@@ -1094,7 +1094,7 @@ static int sd_card_disk_block_write( sd_card_driver_entry *e, rtems_blkdev_reque
RTEMS_CHECK_SC_RV( sc, "Stop");
/* Done */
r->req_done( r->done_arg, RTEMS_SUCCESSFUL, 0);
r->req_done( r->done_arg, RTEMS_SUCCESSFUL);
return 0;
@@ -1113,7 +1113,7 @@ sd_card_disk_block_write_cleanup:
sd_card_stop( e);
/* Done */
r->req_done( r->done_arg, RTEMS_IO_ERROR, 0);
r->req_done( r->done_arg, RTEMS_IO_ERROR);
return rv;
}

View File

@@ -546,7 +546,7 @@ ata_process_request(rtems_device_minor_number ctrl_minor)
*/
static inline void
ata_request_done(ata_req_t *areq, rtems_device_minor_number ctrl_minor,
rtems_status_code status, int error)
rtems_status_code status)
{
assert(areq);
@@ -554,7 +554,7 @@ ata_request_done(ata_req_t *areq, rtems_device_minor_number ctrl_minor,
ata_printf("ata_request_done: entry\n");
#endif
ATA_EXEC_CALLBACK(areq, status, error);
ATA_EXEC_CALLBACK(areq, status);
rtems_chain_extract(&areq->link);
if (!rtems_chain_is_empty(&ata_ide_ctrls[ctrl_minor].reqs))
@@ -586,14 +586,14 @@ ata_request_done(ata_req_t *areq, rtems_device_minor_number ctrl_minor,
static inline void
ata_non_data_request_done(ata_req_t *areq,
rtems_device_minor_number ctrl_minor,
rtems_status_code status, int error)
rtems_status_code status, int info)
{
#if ATA_DEBUG
ata_printf("ata_non_data_request_done: entry\n");
#endif
areq->status = status;
areq->error = error;
areq->info = info;
rtems_semaphore_release(areq->sema);
}
@@ -784,7 +784,7 @@ ata_pio_in_protocol(rtems_device_minor_number ctrl_minor, ata_req_t *areq)
if (areq->cnt == 0)
{
ata_request_done(areq, ctrl_minor, RTEMS_SUCCESSFUL, RTEMS_SUCCESSFUL);
ata_request_done(areq, ctrl_minor, RTEMS_SUCCESSFUL);
}
else if (IDE_Controller_Table[ctrl_minor].int_driven == false)
{
@@ -822,7 +822,7 @@ ata_pio_out_protocol(rtems_device_minor_number ctrl_minor, ata_req_t *areq)
if (areq->cnt == 0)
{
ata_request_done(areq, ctrl_minor, RTEMS_SUCCESSFUL, RTEMS_SUCCESSFUL);
ata_request_done(areq, ctrl_minor, RTEMS_SUCCESSFUL);
}
else
{
@@ -909,8 +909,7 @@ ata_queue_task(rtems_task_argument arg)
* status and start processing of the next request in the
* controller queue
*/
ata_request_done(areq, ctrl_minor, RTEMS_SUCCESSFUL,
msg.error);
ata_request_done(areq, ctrl_minor, RTEMS_SUCCESSFUL);
break;
case ATA_MSG_ERROR_EVT:
@@ -919,8 +918,7 @@ ata_queue_task(rtems_task_argument arg)
* status and start processing of the next request in the
* controller queue
*/
ata_request_done(areq, ctrl_minor, RTEMS_UNSATISFIED,
msg.error);
ata_request_done(areq, ctrl_minor, RTEMS_IO_ERROR);
break;
case ATA_MSG_GEN_EVT:
@@ -948,8 +946,7 @@ ata_queue_task(rtems_task_argument arg)
RTEMS_UNSATISFIED,
RTEMS_IO_ERROR);
else
ata_request_done(areq, ctrl_minor, RTEMS_UNSATISFIED,
RTEMS_IO_ERROR);
ata_request_done(areq, ctrl_minor, RTEMS_IO_ERROR);
break;
}
}
@@ -977,9 +974,7 @@ ata_queue_task(rtems_task_argument arg)
#if ATA_DEBUG
ata_printf("ata_queue_task: non-supported command type\n");
#endif
ata_request_done(areq, ctrl_minor,
RTEMS_UNSATISFIED,
RTEMS_NOT_IMPLEMENTED);
ata_request_done(areq, ctrl_minor, RTEMS_IO_ERROR);
break;
}
break;
@@ -1315,19 +1310,19 @@ rtems_ata_initialize(rtems_device_major_number major,
if (breq.req.status == RTEMS_SUCCESSFUL)
{
/* disassemble returned diagnostic codes */
if (breq.req.error == ATA_DEV0_PASSED_DEV1_PASSED_OR_NOT_PRSNT)
if (areq.info == ATA_DEV0_PASSED_DEV1_PASSED_OR_NOT_PRSNT)
{
printk("ATA: ctrl:%d: primary, secondary\n", ctrl_minor);
ATA_DEV_INFO(ctrl_minor,0).present = true;
ATA_DEV_INFO(ctrl_minor,1).present = true;
}
else if (breq.req.error == ATA_DEV0_PASSED_DEV1_FAILED)
else if (areq.info == ATA_DEV0_PASSED_DEV1_FAILED)
{
printk("ATA: ctrl:%d: primary\n", ctrl_minor);
ATA_DEV_INFO(ctrl_minor,0).present = true;
ATA_DEV_INFO(ctrl_minor,1).present = false;
}
else if (breq.req.error < ATA_DEV1_PASSED_DEV0_FAILED)
else if (areq.info < ATA_DEV1_PASSED_DEV0_FAILED)
{
printk("ATA: ctrl:%d: secondary\n", ctrl_minor);
ATA_DEV_INFO(ctrl_minor,0).present = false;
@@ -1521,7 +1516,6 @@ ata_process_request_on_init_phase(rtems_device_minor_number ctrl_minor,
if ( 10000 == retries ) {
/* probably no drive connected */
areq->breq->status = RTEMS_UNSATISFIED;
areq->breq->error = RTEMS_IO_ERROR;
return;
}
}
@@ -1545,8 +1539,7 @@ ata_process_request_on_init_phase(rtems_device_minor_number ctrl_minor,
if (val & IDE_REGISTER_STATUS_ERR)
{
areq->breq->status = RTEMS_UNSATISFIED;
areq->breq->error = RTEMS_IO_ERROR;
areq->breq->status = RTEMS_IO_ERROR;
return;
}
@@ -1579,15 +1572,14 @@ ata_process_request_on_init_phase(rtems_device_minor_number ctrl_minor,
case ATA_COMMAND_TYPE_NON_DATA:
areq->breq->status = RTEMS_SUCCESSFUL;
areq->breq->error = val1;
areq->info = val1;
break;
default:
#if ATA_DEBUG
ata_printf("ata_queue_task: non-supported command type\n");
#endif
areq->breq->status = RTEMS_UNSATISFIED;
areq->breq->error = RTEMS_NOT_IMPLEMENTED;
areq->breq->status = RTEMS_IO_ERROR;
break;
}
}

View File

@@ -210,14 +210,14 @@ typedef struct ata_req_s {
* processing of the ata request is required
*/
rtems_status_code status; /* status of ata request processing */
int error; /* device error code */
int info; /* device info code */
} ata_req_t;
/* call callback provided by block device request if it is defined */
#define ATA_EXEC_CALLBACK(areq, status, error) \
#define ATA_EXEC_CALLBACK(areq, status) \
do {\
if (((areq)->breq != NULL) && ((areq)->breq->req_done != NULL)) \
(areq)->breq->req_done((areq)->breq->done_arg, status, error); \
(areq)->breq->req_done((areq)->breq->done_arg, status); \
} while (0)
/* ATA RTEMS driver events types */

View File

@@ -25,6 +25,7 @@ if HAS_NETWORKING
SRCS += ../libchip/libnetchip.a
endif
SRCS += ../libchip/libi2cio.a
SRCS += ../libchip/libdisplay.a
if HAS_MP
SRCS += ../libchip/shmdr.rel