summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-01-21 18:08:32 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-01-21 18:08:32 +0000
commit4c18d8c3d22d14a38acbe458107a2534ef305ef0 (patch)
treec151b45307abda0099c596e2d7ee83f7d06c0638 /c
parent2009-01-21 Eric Norum <norume@aps.anl.gov> (diff)
downloadrtems-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')
-rw-r--r--c/src/ChangeLog6
-rw-r--r--c/src/libchip/i2c/spi-sd-card.c38
-rw-r--r--c/src/libchip/i2c/spi-sd-card.h2
3 files changed, 26 insertions, 20 deletions
diff --git a/c/src/ChangeLog b/c/src/ChangeLog
index 208647dc33..154b0e7648 100644
--- a/c/src/ChangeLog
+++ b/c/src/ChangeLog
@@ -1,3 +1,9 @@
+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.
+
2009-01-05 Joel Sherrill <joel.sherrill@oarcorp.com>
* libchip/serial/ns16550.c: Turn on ns16550_process() for
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];