From patchwork Tue Jan 22 01:47:22 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Otavio Salvador X-Patchwork-Id: 214304 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 961E92C007B for ; Tue, 22 Jan 2013 12:44:01 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 46DB84A0F2; Tue, 22 Jan 2013 02:43:55 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id orNPT-Sei7na; Tue, 22 Jan 2013 02:43:55 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 6149A4A0F9; Tue, 22 Jan 2013 02:43:47 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 7AA6C4A0AD for ; Tue, 22 Jan 2013 02:43:45 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id J7mnODOmoIBV for ; Tue, 22 Jan 2013 02:43:44 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-ye0-f171.google.com (mail-ye0-f171.google.com [209.85.213.171]) by theia.denx.de (Postfix) with ESMTPS id 66E1A4A099 for ; Tue, 22 Jan 2013 02:43:36 +0100 (CET) Received: by mail-ye0-f171.google.com with SMTP id m8so1026520yen.16 for ; Mon, 21 Jan 2013 17:43:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:sender:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references; bh=JDle25OH+qEjD2f3q+ApZBPFCb2VfNnhJfqKlO29+6c=; b=PTX1OcV1W5ZzmN8i61opvbe0yWdGoY+hr5x6zUE/1unBoVQXkmI/d9pHvoWcBoB++y EZKBF2Tx49/FSvOut1rWBUWhO3UGWU28/i+C8IPOf1o/Ved0zmgbXKU4jUAi5LBGd2Bl Qh1KWZK9+xnCKIf/LoeenMpEL5x0usI+0Bvh5rr73sDZlvwWyBZf3xGY+wEYLHwvEyek 9Ms3nqxDW9xt+tSL5dzYC5VvyGbRlN3TH+emHV2yKB3Tf4RSHsdqq/oghTRiRO8HA1FH hGvsyQ87x64tNqSvSjsBpXIgxYMtWQq4iepUnOXrUhPkVYlIj+DuFc5Q2HWDD2ne5whw F+Sg== X-Received: by 10.236.128.2 with SMTP id e2mr22235050yhi.67.1358819015286; Mon, 21 Jan 2013 17:43:35 -0800 (PST) Received: from nano.lab.ossystems.com.br ([177.35.66.48]) by mx.google.com with ESMTPS id s70sm5363563yhb.14.2013.01.21.17.43.32 (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 21 Jan 2013 17:43:34 -0800 (PST) From: Otavio Salvador To: u-boot@lists.denx.de Date: Mon, 21 Jan 2013 23:47:22 -0200 Message-Id: <1358819250-31625-3-git-send-email-otavio@ossystems.com.br> X-Mailer: git-send-email 1.8.1 In-Reply-To: <1358819250-31625-1-git-send-email-otavio@ossystems.com.br> References: <1358819250-31625-1-git-send-email-otavio@ossystems.com.br> Cc: marex@denx.de, fabio.estevam@freescale.com, Otavio Salvador Subject: [U-Boot] [PATCH 2/9] mx23: Use XFER_COUNT field in HW_SSP_CTRL0 register in MMC PIO mode X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de From: Marek Vasut Signed-off-by: Marek Vasut Signed-off-by: Otavio Salvador --- drivers/mmc/mxsmmc.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/drivers/mmc/mxsmmc.c b/drivers/mmc/mxsmmc.c index 0c4cd54..4b178be 100644 --- a/drivers/mmc/mxsmmc.c +++ b/drivers/mmc/mxsmmc.c @@ -211,14 +211,32 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) } ctrl0 |= SSP_CTRL0_DATA_XFER; + + reg = data->blocksize * data->blocks; +#if defined(CONFIG_MX23) + if (reg & ~SSP_CTRL0_XFER_COUNT_MASK) { + printf("MMC%d: Transfer too large (%i bytes)!\n", + mmc->block_dev.dev, reg); + return -EINVAL; + } + + ctrl0 |= reg & SSP_CTRL0_XFER_COUNT_MASK; + + reg = readl(&ssp_regs->hw_ssp_cmd0); + reg &= ~0xfff00; + reg |= (data->blocks - 1) << 8; + reg |= (ffs(data->blocksize) - 1) << 16; + + writel(reg, &ssp_regs->hw_ssp_cmd0); +#elif defined(CONFIG_MX28) + writel(reg, &ssp_regs->hw_ssp_xfer_size); + reg = ((data->blocks - 1) << SSP_BLOCK_SIZE_BLOCK_COUNT_OFFSET) | ((ffs(data->blocksize) - 1) << SSP_BLOCK_SIZE_BLOCK_SIZE_OFFSET); writel(reg, &ssp_regs->hw_ssp_block_size); - - reg = data->blocksize * data->blocks; - writel(reg, &ssp_regs->hw_ssp_xfer_size); +#endif } /* Kick off the command */