static int cistpl_vers_1(struct mmc_card *card, struct sdio_func *func,
                         const unsigned char *buf, unsigned size)
 {
+       u8 major_rev, minor_rev;
        unsigned i, nr_strings;
        char **buffer, *string;
 
        if (size < 2)
                return 0;
 
+       major_rev = buf[0];
+       minor_rev = buf[1];
+
        /* Find all null-terminated (including zero length) strings in
           the TPLLV1_INFO field. Trailing garbage is ignored. */
        buf += 2;
        }
 
        if (func) {
+               func->major_rev = major_rev;
+               func->minor_rev = minor_rev;
                func->num_info = nr_strings;
                func->info = (const char**)buffer;
        } else {
+               card->major_rev = major_rev;
+               card->minor_rev = minor_rev;
                card->num_info = nr_strings;
                card->info = (const char**)buffer;
        }
 
        struct sdio_cis         cis;            /* common tuple info */
        struct sdio_func        *sdio_func[SDIO_MAX_FUNCS]; /* SDIO functions (devices) */
        struct sdio_func        *sdio_single_irq; /* SDIO function when only one IRQ active */
+       u8                      major_rev;      /* major revision number */
+       u8                      minor_rev;      /* minor revision number */
        unsigned                num_info;       /* number of info strings */
        const char              **info;         /* info strings */
        struct sdio_func_tuple  *tuples;        /* unknown common tuples */
 
 
        u8                      *tmpbuf;        /* DMA:able scratch buffer */
 
+       u8                      major_rev;      /* major revision number */
+       u8                      minor_rev;      /* minor revision number */
        unsigned                num_info;       /* number of info strings */
        const char              **info;         /* info strings */