Changeset d290bbb in rtems


Ignore:
Timestamp:
Jun 24, 2010, 7:54:15 AM (9 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, master
Children:
eb8c45d
Parents:
da9b538
Message:

2010-06-24 Arnout Vandecappelle <arnout@…>

PR 1586/misc

  • libchip/i2c/spi-sd-card.h, libchip/i2c/spi-sd-card.c: Add retries to SD card accesses.
Location:
c/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • c/src/ChangeLog

    rda9b538 rd290bbb  
     12010-06-24      Arnout Vandecappelle <arnout@mind.be>
     2
     3        PR 1586/misc
     4        * libchip/i2c/spi-sd-card.h, libchip/i2c/spi-sd-card.c: Add retries to
     5        SD card accesses.
     6
    172010-06-22      Arnout Vandecappelle <arnout@mind.be>
    28
  • c/src/libchip/i2c/spi-sd-card.c

    rda9b538 rd290bbb  
    12371237                sd_card_driver_entry *e = &sd_card_driver_table [minor];
    12381238                rtems_blkdev_request *r = (rtems_blkdev_request *) arg;
     1239                int (*f)( sd_card_driver_entry *, rtems_blkdev_request *);
     1240                uint32_t retries = e->retries;
     1241                int result;
     1242
    12391243                switch (r->req) {
    12401244                        case RTEMS_BLKDEV_REQ_READ:
    1241                                 return sd_card_disk_block_read( e, r);
     1245                                f = sd_card_disk_block_read;
     1246                                break;
    12421247                        case RTEMS_BLKDEV_REQ_WRITE:
    1243                                 return sd_card_disk_block_write( e, r);
     1248                                f = sd_card_disk_block_write;
     1249                                break;
    12441250                        default:
    12451251                                errno = EINVAL;
    12461252                                return -1;
    12471253                }
     1254                do {
     1255                        result = f( e, r);
     1256                } while (retries-- > 0 && result != 0);
     1257                return result;
     1258
    12481259        } else if (req == RTEMS_BLKIO_CAPABILITIES) {
    12491260                *(uint32_t *) arg = RTEMS_BLKDEV_CAP_MULTISECTOR_CONT;
     
    12661277                sd_card_driver_entry *e = &sd_card_driver_table [minor];
    12671278                dev_t dev = rtems_filesystem_make_dev_t( major, minor);
     1279                uint32_t retries = e->retries;
    12681280
    12691281                /* Initialize SD Card */
    1270                 sc = sd_card_init( e);
     1282                do {
     1283                        sc = sd_card_init( e);
     1284                } while (retries-- > 0 && sc != RTEMS_SUCCESSFUL);
    12711285                RTEMS_CHECK_SC( sc, "Initialize SD Card");
    12721286
  • c/src/libchip/i2c/spi-sd-card.h

    rda9b538 rd290bbb  
    7070        bool verbose;
    7171        bool schedule_if_busy;
     72        uint32_t retries;
    7273} sd_card_driver_entry;
    7374
Note: See TracChangeset for help on using the changeset viewer.