diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-01-21 18:08:32 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-01-21 18:08:32 +0000 |
commit | 4c18d8c3d22d14a38acbe458107a2534ef305ef0 (patch) | |
tree | c151b45307abda0099c596e2d7ee83f7d06c0638 /c/src/libchip | |
parent | 2009-01-21 Eric Norum <norume@aps.anl.gov> (diff) | |
download | rtems-4c18d8c3d22d14a38acbe458107a2534ef305ef0.tar.bz2 |
2009-01-21 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libchip/i2c/spi-sd-card.h, libchip/i2c/spi-sd-card.c: Fixed
RTEMS_BLKDEV_CAPABILITIES ioctl which caused invalid multiple block
writes. Fixed integer type in device structure.
Diffstat (limited to 'c/src/libchip')
-rw-r--r-- | c/src/libchip/i2c/spi-sd-card.c | 38 | ||||
-rw-r--r-- | c/src/libchip/i2c/spi-sd-card.h | 2 |
2 files changed, 20 insertions, 20 deletions
diff --git a/c/src/libchip/i2c/spi-sd-card.c b/c/src/libchip/i2c/spi-sd-card.c index bf2cf25b09..e632d78acb 100644 --- a/c/src/libchip/i2c/spi-sd-card.c +++ b/c/src/libchip/i2c/spi-sd-card.c @@ -887,26 +887,26 @@ sd_card_disk_block_write_cleanup: static int sd_card_disk_ioctl( dev_t dev, uint32_t req, void *arg) { RTEMS_DEBUG_PRINT( "dev = %u, req = %u, arg = 0x08%x\n", dev, req, arg); - if (req == RTEMS_BLKIO_REQUEST) { - rtems_device_minor_number minor = rtems_filesystem_dev_minor_t( dev); + if (req == RTEMS_BLKIO_REQUEST) { + rtems_device_minor_number minor = rtems_filesystem_dev_minor_t( dev); sd_card_driver_entry *e = &sd_card_driver_table [minor]; - rtems_blkdev_request *r = (rtems_blkdev_request *) arg; - switch (r->req) { - case RTEMS_BLKDEV_REQ_READ: - return sd_card_disk_block_read( e, r); - case RTEMS_BLKDEV_REQ_WRITE: - return sd_card_disk_block_write( e, r); - case RTEMS_BLKDEV_CAPABILITIES: - *((uint32_t*) arg) = RTEMS_BLKDEV_CAP_MULTISECTOR_CONT; - return 0; - default: - errno = EBADRQC; - return -1; - } - } else { - errno = EBADRQC; - return -1; - } + rtems_blkdev_request *r = (rtems_blkdev_request *) arg; + switch (r->req) { + case RTEMS_BLKDEV_REQ_READ: + return sd_card_disk_block_read( e, r); + case RTEMS_BLKDEV_REQ_WRITE: + return sd_card_disk_block_write( e, r); + default: + errno = EBADRQC; + return -1; + } + } else if (req == RTEMS_BLKDEV_CAPABILITIES) { + *(uint32_t*) arg = RTEMS_BLKDEV_CAP_MULTISECTOR_CONT; + return 0; + } else { + errno = EBADRQC; + return -1; + } } static rtems_status_code sd_card_disk_init( rtems_device_major_number major, rtems_device_minor_number minor, void *arg) diff --git a/c/src/libchip/i2c/spi-sd-card.h b/c/src/libchip/i2c/spi-sd-card.h index 97a7918c70..50662ff1dc 100644 --- a/c/src/libchip/i2c/spi-sd-card.h +++ b/c/src/libchip/i2c/spi-sd-card.h @@ -56,7 +56,7 @@ extern "C" { typedef struct { const char *device_name; - int bus; + rtems_device_minor_number bus; rtems_libi2c_tfr_mode_t transfer_mode; uint8_t command [SD_CARD_COMMAND_SIZE]; uint8_t response [SD_CARD_COMMAND_SIZE]; |