From patchwork Tue Nov 8 01:24:58 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Nie X-Patchwork-Id: 81220 Delivered-To: patch@linaro.org Received: by 10.140.97.165 with SMTP id m34csp1306684qge; Mon, 7 Nov 2016 17:26:04 -0800 (PST) X-Received: by 10.98.83.70 with SMTP id h67mr18544675pfb.107.1478568364462; Mon, 07 Nov 2016 17:26:04 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id kq13si28272902pab.36.2016.11.07.17.26.04; Mon, 07 Nov 2016 17:26:04 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-mmc-owner@vger.kernel.org; dmarc=fail (p=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752636AbcKHB0D (ORCPT + 3 others); Mon, 7 Nov 2016 20:26:03 -0500 Received: from mail-pf0-f176.google.com ([209.85.192.176]:34097 "EHLO mail-pf0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752595AbcKHB0C (ORCPT ); Mon, 7 Nov 2016 20:26:02 -0500 Received: by mail-pf0-f176.google.com with SMTP id n85so98509810pfi.1 for ; Mon, 07 Nov 2016 17:26:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=T0dq0Wf9Yb6Puyo8jEujF+YG1JTo2PNYwQn1vxDumtU=; b=PVjcdNU7eaoVeHioSmUqUufnAshBxgFKZhcBvdqKHmH5qhesKC9f+T2/e/4skKu4r4 zoCvoubW2xTVq4NfafB8zS4pf0gVd4bAYh0mE36r6C0KR/6vdHw/AXb2w/ycN0qVmGKK YZswXdWmsQKSXjjtlv5mBI/1qIGbR6/7odEsc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=T0dq0Wf9Yb6Puyo8jEujF+YG1JTo2PNYwQn1vxDumtU=; b=PeIFiftrA8BO/b8ouv/3qlqj9ZS8Nze/Imo4kGdtGN94QAQgGRaJT7JiazDfHDSAXz c8DDUpjf2fh6QDYETDonFAiir9P5UCRU48dPLu9vV2sSSXKkqMYmviszbPJD8h0XtAHO +DBYPQkiAMSpPjD9xsa20jVG0DofeVJAaidZR06y0Dzc5h8PbVEOsFpw+gzgRnzXue9g 3BYaoJG98bakLtcUcZSCDPHeINdxpjuAoeECyMoNwOfpgUpk43zNy1IsYVTrreK5xOhA gTmFq8LXgrUvHzrRrlEzXBT5SkqUOsGpwqJsxVoIAqfnFr4Y6gltlBTrlmUzVrxwO1Bu b+QQ== X-Gm-Message-State: ABUngvd4xSJOiywKcstiAnh/+mjMiU45L78GBqC0+N8Yu1rP7BN2qs5sfrqq0vLCBpyskBhI X-Received: by 10.99.147.68 with SMTP id w4mr2844147pgm.158.1478568357032; Mon, 07 Nov 2016 17:25:57 -0800 (PST) Received: from localhost.localdomain ([188.42.255.211]) by smtp.gmail.com with ESMTPSA id a22sm43360056pfg.7.2016.11.07.17.25.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 07 Nov 2016 17:25:56 -0800 (PST) From: Jun Nie To: shawn.guo@linaro.org, xie.baoyou@zte.com.cn Cc: ulf.hansson@linaro.org, jh80.chung@samsung.com, jason.liu@linaro.org, linux-mmc@vger.kernel.org, Jun Nie Subject: [PATCH v5 5/5] mmc: dw: Add fifo watermark alignment property Date: Tue, 8 Nov 2016 09:24:58 +0800 Message-Id: <1478568298-18380-6-git-send-email-jun.nie@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1478568298-18380-1-git-send-email-jun.nie@linaro.org> References: <1478568298-18380-1-git-send-email-jun.nie@linaro.org> Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org Data done irq is expected if data length is less than watermark in PIO mode. But fifo watermark is requested to be aligned with data length in some SoC so that TX/RX irq can be generated with data done irq. Add the watermark alignment to mark this requirement and force fifo watermark setting accordingly. Signed-off-by: Jun Nie --- drivers/mmc/host/dw_mmc.c | 11 +++++++++-- include/linux/mmc/dw_mmc.h | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Reviewed-by: Shawn Lin diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 696b5e6..6d85ca6 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -1111,11 +1111,15 @@ static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data) mci_writel(host, CTRL, temp); /* - * Use the initial fifoth_val for PIO mode. + * Use the initial fifoth_val for PIO mode. If wm_algined + * is set, we set watermark same as data size. * If next issued data may be transfered by DMA mode, * prev_blksz should be invalidated. */ - mci_writel(host, FIFOTH, host->fifoth_val); + if (host->wm_aligned) + dw_mci_adjust_fifoth(host, data); + else + mci_writel(host, FIFOTH, host->fifoth_val); host->prev_blksz = 0; } else { /* @@ -2957,6 +2961,9 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host) of_property_read_u32(np, "data-addr", &host->data_addr_override); + if (of_get_property(np, "fifo-watermark-aligned", NULL)) + host->wm_aligned = true; + if (!of_property_read_u32(np, "clock-frequency", &clock_frequency)) pdata->bus_hz = clock_frequency; diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h index 17cb95a..ee4bb30 100644 --- a/include/linux/mmc/dw_mmc.h +++ b/include/linux/mmc/dw_mmc.h @@ -108,6 +108,8 @@ struct dw_mci_dma_slave { * @slot: Slots sharing this MMC controller. * @fifo_depth: depth of FIFO. * @data_addr_override: override fifo reg offset with this value. + * @wm_aligned: force fifo watermark equal with data length in PIO mode. + * Set as true if alignment is needed. * @data_shift: log2 of FIFO item size. * @part_buf_start: Start index in part_buf. * @part_buf_count: Bytes of partial data in part_buf. @@ -156,6 +158,7 @@ struct dw_mci { void __iomem *regs; void __iomem *fifo_reg; u32 data_addr_override; + bool wm_aligned; struct scatterlist *sg; struct sg_mapping_iter sg_miter;