From patchwork Fri Dec 10 18:14:32 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Ferre X-Patchwork-Id: 399012 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oBAH61O5024720 for ; Fri, 10 Dec 2010 17:06:01 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754508Ab0LJRGA (ORCPT ); Fri, 10 Dec 2010 12:06:00 -0500 Received: from mail.atmel.fr ([81.80.104.162]:54483 "EHLO atmel-es2.atmel.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754472Ab0LJRGA (ORCPT ); Fri, 10 Dec 2010 12:06:00 -0500 Received: from meyreuil.atmel.fr (meyreuil [10.159.254.132]) by atmel-es2.atmel.fr (8.11.7p1+Sun/8.11.6) with ESMTP id oBAH5cZ17235; Fri, 10 Dec 2010 18:05:45 +0100 (MET) Received: from bendor.rfo.atmel.com ([10.159.245.201]) by meyreuil.atmel.fr (8.11.7p1+Sun/8.11.7) with ESMTP id oBAH5dj00113; Fri, 10 Dec 2010 18:05:39 +0100 (MET) From: Nicolas Ferre To: cjb@laptop.org, linux-mmc@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, yauhen.kharuzhy@promwad.com, Nicolas Ferre Subject: [PATCH] MMC: Fix multiblock SDIO transfers in ATMEL MCI Date: Fri, 10 Dec 2010 19:14:32 +0100 Message-Id: <1292004872-5122-1-git-send-email-nicolas.ferre@atmel.com> X-Mailer: git-send-email 1.7.3 In-Reply-To: <20101210162351.GA11798@void.printf.net> References: <20101210162351.GA11798@void.printf.net> Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Fri, 10 Dec 2010 17:06:01 +0000 (UTC) diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c index 301351a..ad2a7a0 100644 --- a/drivers/mmc/host/atmel-mci.c +++ b/drivers/mmc/host/atmel-mci.c @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -532,12 +533,17 @@ static u32 atmci_prepare_command(struct mmc_host *mmc, data = cmd->data; if (data) { cmdr |= MCI_CMDR_START_XFER; - if (data->flags & MMC_DATA_STREAM) - cmdr |= MCI_CMDR_STREAM; - else if (data->blocks > 1) - cmdr |= MCI_CMDR_MULTI_BLOCK; - else - cmdr |= MCI_CMDR_BLOCK; + + if (cmd->opcode == SD_IO_RW_EXTENDED) { + cmdr |= MCI_CMDR_SDIO_BLOCK; + } else { + if (data->flags & MMC_DATA_STREAM) + cmdr |= MCI_CMDR_STREAM; + else if (data->blocks > 1) + cmdr |= MCI_CMDR_MULTI_BLOCK; + else + cmdr |= MCI_CMDR_BLOCK; + } if (data->flags & MMC_DATA_READ) cmdr |= MCI_CMDR_TRDIR_READ;