if (brq->data.blocks > card->host->max_blk_count)
                brq->data.blocks = card->host->max_blk_count;
 
-       /*
-        * After a read error, we redo the request one sector at a time
-        * in order to accurately determine which sectors can be read
-        * successfully.
-        */
-       if (disable_multi && brq->data.blocks > 1)
-               brq->data.blocks = 1;
+       if (brq->data.blocks > 1) {
+               /*
+                * After a read error, we redo the request one sector
+                * at a time in order to accurately determine which
+                * sectors can be read successfully.
+                */
+               if (disable_multi)
+                       brq->data.blocks = 1;
+
+               /* Some controllers can't do multiblock reads due to hw bugs */
+               if (card->host->caps2 & MMC_CAP2_NO_MULTI_READ &&
+                   rq_data_dir(req) == READ)
+                       brq->data.blocks = 1;
+       }
 
        if (brq->data.blocks > 1 || do_rel_wr) {
                /* SPI multiblock writes terminate using a special
 
 #define MMC_CAP2_BOOTPART_NOACC        (1 << 0)        /* Boot partition no access */
 #define MMC_CAP2_CACHE_CTRL    (1 << 1)        /* Allow cache control */
 #define MMC_CAP2_POWEROFF_NOTIFY (1 << 2)      /* Notify poweroff supported */
+#define MMC_CAP2_NO_MULTI_READ (1 << 3)        /* Multiblock reads don't work */
 
        mmc_pm_flag_t           pm_caps;        /* supported pm features */
        unsigned int        power_notify_type;