Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp4260971imb; Wed, 6 Mar 2019 09:04:15 -0800 (PST) X-Google-Smtp-Source: APXvYqxtrFj/QmriOxWQE1vteNg9c7d3JkM8iBz7QX/giTTOcc9Ur8sZ7pJJ2CguAxJvKwGRC70R X-Received: by 2002:a65:4244:: with SMTP id d4mr7221080pgq.419.1551891855709; Wed, 06 Mar 2019 09:04:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551891855; cv=none; d=google.com; s=arc-20160816; b=uzpvgFXnsGlMSKUnHYLs4DgFlI+KXY1OT5yNp2DVqfbfuU26XoXF3JdV7YC/PKNJtF +W4ynB0CJK8qRAIRfuDS2enQx3fbispFE6PljpI25wCA3C5DaChGk0BNHMjiYj8iiORQ 0Y/blrhT6XZRKUcuFg8XpvPgPVqV5q0jLDtKwHmc+QVxhdB9dm9bDUicWDdlf90px61y VngUsRsDHpH/mIUL3WBZA1ORyplVkg2d5TOD2vgE4nZI8tTSK5oh4399pV6iYC5qVrt0 PJhH89l19BJ7uXoEUG4mxhNThyn05OxpO697bUa3yvrKO7QRdTPQ6ePUOlQrXstJ44Et Pykw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=bqeJmwiVJ3THo/zk+FitT7vSw+iu9lg/E46M2S5sS38=; b=T9hFbMka9jICGyd/wjAXU2lYyxzX/TJamZtbTr0TsSpc5trhVAPhPe76om3D0uz/Xi 6dHqZhE8dRG3WE8UaP1hjmHSiDE4gjiYe2xGBQj6dLnEHXG723buI8JVgzRnbZq5SZPO I9GO0ZoNbzw/g2MlItGpuIYDuRrwcHLRLVkyFxi+Sh/i1K2tWk/HA1/aBU4tyZvl8foD 4v2PzHYEUDLhymKaoGwE6UCbT1ovX5qOhX9Xvdsy+zpEIkPom7D2OFSt67lKQ/CF7Cc+ Kb/FsNvChBktz4iCSGvZ+xVkxHW6MyuUL6tMvCmt9GLAH1sN8Fu2jvXbPRLKvgVY/XNJ 1jGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=p8CFtX9P; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i21si1796238pgh.123.2019.03.06.09.04.00; Wed, 06 Mar 2019 09:04:15 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=p8CFtX9P; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727044AbfCFNc3 (ORCPT + 99 others); Wed, 6 Mar 2019 08:32:29 -0500 Received: from mail-vs1-f65.google.com ([209.85.217.65]:44046 "EHLO mail-vs1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726753AbfCFNc3 (ORCPT ); Wed, 6 Mar 2019 08:32:29 -0500 Received: by mail-vs1-f65.google.com with SMTP id r201so2188893vsc.11 for ; Wed, 06 Mar 2019 05:32:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=bqeJmwiVJ3THo/zk+FitT7vSw+iu9lg/E46M2S5sS38=; b=p8CFtX9P7DoqMlFOXApz/Lj6Tm6Tt/WGn7mQ8UgOTUG+sS/jX+ttU+qVURFI7KdZ6E z9mCDYyBAjIZrIIhXOEjXkCqG9eRHA0NcLfEnMSBUydsmpGBEwU5xBfZmAf0tY+v75bw 2BEx4LIQkWtsncLjtXpi4DzYhQJOlsorQiOz5PVuOKED07UpT8/LtJpDBY3RtlNgK5Ka 5Q7jHW69k4irEhGfVeBwziacgxdgOdQzSvwHofOMR2waBiUem2GojIq1QsfcWMhThW0h 0gZkXwocssYlZjPCevY8gmwaZW78lq5rrbq9U3zoOvVzj/UWriWtpoPjn3FBHURbiY52 uCSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=bqeJmwiVJ3THo/zk+FitT7vSw+iu9lg/E46M2S5sS38=; b=kGZgCmBz/IYwXi86qLdxdhZ3Hgn6N+1Ud3g/mKfMN+dvBzKg8ZopggsAoF8h3sdabD lQvwa37OslOgigYpSugTkv/xz9l7WvG+Tr0MekoB7EQtMGt6d7ZppOS0LMrCi9zRa9sR 0K0c3+BwQaT3kgp3Pd33g/OMD2KPsBh8KQfi6YwU3lhX17uvK242IlyjyoAGtMAn/F58 fBxybXtq3hQTFpV9jmY/n/yFOsfqsOfdSEjM42tcN6UguGRoRoZPP6Y1VGhivvXzHNx5 iHjJfpuzNIF6pvCLFnoh4L851QO1avv4HdLApjh6M4yVFZGIeSWCUJwTcXnMuZcAuUVt LKVw== X-Gm-Message-State: APjAAAVzwfOJ8X+itgPN0O6u2ihwPbLrMSMgValpvBlnb4qh5gJCua9P AWGXe15CHWLhluuFCscGkN7xc8EKMTbXZZfIR5Om+Q== X-Received: by 2002:a67:7e84:: with SMTP id z126mr3826766vsc.165.1551879148263; Wed, 06 Mar 2019 05:32:28 -0800 (PST) MIME-Version: 1.0 References: <1551694625-6414-1-git-send-email-ludovic.Barre@st.com> <1551694625-6414-5-git-send-email-ludovic.Barre@st.com> In-Reply-To: <1551694625-6414-5-git-send-email-ludovic.Barre@st.com> From: Ulf Hansson Date: Wed, 6 Mar 2019 14:31:52 +0100 Message-ID: Subject: Re: [PATCH 4/5] mmc: mmci: stm32: define get_dctrl_cfg To: Ludovic Barre Cc: Rob Herring , Srinivas Kandagatla , Maxime Coquelin , Alexandre Torgue , Linux ARM , Linux Kernel Mailing List , DTML , "linux-mmc@vger.kernel.org" , linux-stm32@st-md-mailman.stormreply.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 4 Mar 2019 at 11:17, Ludovic Barre wrote: > > From: Ludovic Barre > > This patch defines get_dctrl_cfg callback for sdmmc variant. > sdmmc variant has specific stm32 transfer modes. > sdmmc data transfer mode selection could be: > -Block data transfer ending on block count. > -SDIO multibyte data transfer. > -MMC Stream data transfer (not used). > -Block data transfer ending with STOP_TRANSMISSION command. > > Signed-off-by: Ludovic Barre > --- > drivers/mmc/host/mmci.h | 5 +++++ > drivers/mmc/host/mmci_stm32_sdmmc.c | 21 +++++++++++++++++++++ > 2 files changed, 26 insertions(+) > > diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h > index 6f28f71..eb5d99af 100644 > --- a/drivers/mmc/host/mmci.h > +++ b/drivers/mmc/host/mmci.h > @@ -131,6 +131,11 @@ > /* Control register extensions in the Qualcomm versions */ > #define MCI_DPSM_QCOM_DATA_PEND BIT(17) > #define MCI_DPSM_QCOM_RX_DATA_PEND BIT(20) > +/* Control register extensions in STM32 versions */ > +#define MCI_DPSM_STM32_MODE_BLOCK (0 << 2) > +#define MCI_DPSM_STM32_MODE_SDIO (1 << 2) > +#define MCI_DPSM_STM32_MODE_STREAM (2 << 2) > +#define MCI_DPSM_STM32_MODE_BLOCK_STOP (3 << 2) > > #define MMCIDATACNT 0x030 > #define MMCISTATUS 0x034 > diff --git a/drivers/mmc/host/mmci_stm32_sdmmc.c b/drivers/mmc/host/mmci_stm32_sdmmc.c > index cfbfc6f..e7bf744 100644 > --- a/drivers/mmc/host/mmci_stm32_sdmmc.c > +++ b/drivers/mmc/host/mmci_stm32_sdmmc.c > @@ -265,10 +265,31 @@ static void mmci_sdmmc_set_pwrreg(struct mmci_host *host, unsigned int pwr) > } > } > > +u32 sdmmc_get_dctrl_cfg(struct mmci_host *host) > +{ > + struct variant_data *variant = host->variant; > + int blksz_bits; > + u32 datactrl; > + > + blksz_bits = ffs(host->data->blksz) - 1; > + datactrl = variant->datactrl_dpsm_enable | blksz_bits << 4; > + > + if (host->mmc->card && mmc_card_sdio(host->mmc->card) && > + host->data->blocks == 1) These settings are not limited to deal with the block size bits. Don't get me wrong, it seems reasonable to include them, but the generic code in mmci_start_data() also have code to cope with SDIO. I think we should start by splitting that up into a couple of helper/library functions, and make the legacy variant to use them. This should probably be done as a preparation to your series, so you can build on top of that. Does it make sense? If not, please tell and I can try to provide some patch to show you what I mean. > + datactrl |= MCI_DPSM_STM32_MODE_SDIO; > + else if (host->data->stop && !host->mrq->sbc) > + datactrl |= MCI_DPSM_STM32_MODE_BLOCK_STOP; > + else > + datactrl |= MCI_DPSM_STM32_MODE_BLOCK; > + > + return datactrl; > +} > + > static struct mmci_host_ops sdmmc_variant_ops = { > .validate_data = sdmmc_idma_validate_data, > .prep_data = sdmmc_idma_prep_data, > .unprep_data = sdmmc_idma_unprep_data, > + .get_datactrl_cfg = sdmmc_get_dctrl_cfg, > .dma_setup = sdmmc_idma_setup, > .dma_start = sdmmc_idma_start, > .dma_finalize = sdmmc_idma_finalize, > -- > 2.7.4 > Kind regards Uffe