Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc:
mmc: Fix re-probing with PM_POST_RESTORE notification
mmc: atmel-mci: fix multiblock SDIO transfers
mmc: at91_mci: fix multiblock SDIO transfers

+24 -10
+2
arch/arm/mach-at91/include/mach/at91_mci.h
··· 74 #define AT91_MCI_TRTYP_BLOCK (0 << 19) 75 #define AT91_MCI_TRTYP_MULTIPLE (1 << 19) 76 #define AT91_MCI_TRTYP_STREAM (2 << 19) 77 78 #define AT91_MCI_BLKR 0x18 /* Block Register */ 79 #define AT91_MCI_BLKR_BCNT(n) ((0xffff & (n)) << 0) /* Block count */
··· 74 #define AT91_MCI_TRTYP_BLOCK (0 << 19) 75 #define AT91_MCI_TRTYP_MULTIPLE (1 << 19) 76 #define AT91_MCI_TRTYP_STREAM (2 << 19) 77 + #define AT91_MCI_TRTYP_SDIO_BYTE (4 << 19) 78 + #define AT91_MCI_TRTYP_SDIO_BLOCK (5 << 19) 79 80 #define AT91_MCI_BLKR 0x18 /* Block Register */ 81 #define AT91_MCI_BLKR_BCNT(n) ((0xffff & (n)) << 0) /* Block count */
+1
drivers/mmc/core/core.c
··· 1773 1774 case PM_POST_SUSPEND: 1775 case PM_POST_HIBERNATION: 1776 1777 spin_lock_irqsave(&host->lock, flags); 1778 host->rescan_disable = 0;
··· 1773 1774 case PM_POST_SUSPEND: 1775 case PM_POST_HIBERNATION: 1776 + case PM_POST_RESTORE: 1777 1778 spin_lock_irqsave(&host->lock, flags); 1779 host->rescan_disable = 0;
+9 -4
drivers/mmc/host/at91_mci.c
··· 69 #include <linux/highmem.h> 70 71 #include <linux/mmc/host.h> 72 73 #include <asm/io.h> 74 #include <asm/irq.h> ··· 494 else if (data->flags & MMC_DATA_WRITE) 495 cmdr |= AT91_MCI_TRCMD_START; 496 497 - if (data->flags & MMC_DATA_STREAM) 498 - cmdr |= AT91_MCI_TRTYP_STREAM; 499 - if (data->blocks > 1) 500 - cmdr |= AT91_MCI_TRTYP_MULTIPLE; 501 } 502 else { 503 block_length = 0;
··· 69 #include <linux/highmem.h> 70 71 #include <linux/mmc/host.h> 72 + #include <linux/mmc/sdio.h> 73 74 #include <asm/io.h> 75 #include <asm/irq.h> ··· 493 else if (data->flags & MMC_DATA_WRITE) 494 cmdr |= AT91_MCI_TRCMD_START; 495 496 + if (cmd->opcode == SD_IO_RW_EXTENDED) { 497 + cmdr |= AT91_MCI_TRTYP_SDIO_BLOCK; 498 + } else { 499 + if (data->flags & MMC_DATA_STREAM) 500 + cmdr |= AT91_MCI_TRTYP_STREAM; 501 + if (data->blocks > 1) 502 + cmdr |= AT91_MCI_TRTYP_MULTIPLE; 503 + } 504 } 505 else { 506 block_length = 0;
+12 -6
drivers/mmc/host/atmel-mci.c
··· 26 #include <linux/stat.h> 27 28 #include <linux/mmc/host.h> 29 30 #include <mach/atmel-mci.h> 31 #include <linux/atmel-mci.h> ··· 533 data = cmd->data; 534 if (data) { 535 cmdr |= MCI_CMDR_START_XFER; 536 - if (data->flags & MMC_DATA_STREAM) 537 - cmdr |= MCI_CMDR_STREAM; 538 - else if (data->blocks > 1) 539 - cmdr |= MCI_CMDR_MULTI_BLOCK; 540 - else 541 - cmdr |= MCI_CMDR_BLOCK; 542 543 if (data->flags & MMC_DATA_READ) 544 cmdr |= MCI_CMDR_TRDIR_READ;
··· 26 #include <linux/stat.h> 27 28 #include <linux/mmc/host.h> 29 + #include <linux/mmc/sdio.h> 30 31 #include <mach/atmel-mci.h> 32 #include <linux/atmel-mci.h> ··· 532 data = cmd->data; 533 if (data) { 534 cmdr |= MCI_CMDR_START_XFER; 535 + 536 + if (cmd->opcode == SD_IO_RW_EXTENDED) { 537 + cmdr |= MCI_CMDR_SDIO_BLOCK; 538 + } else { 539 + if (data->flags & MMC_DATA_STREAM) 540 + cmdr |= MCI_CMDR_STREAM; 541 + else if (data->blocks > 1) 542 + cmdr |= MCI_CMDR_MULTI_BLOCK; 543 + else 544 + cmdr |= MCI_CMDR_BLOCK; 545 + } 546 547 if (data->flags & MMC_DATA_READ) 548 cmdr |= MCI_CMDR_TRDIR_READ;