Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp5185820img; Wed, 27 Mar 2019 03:57:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqwKy+tM9gR1MUyEPdxzxb9Pg4NEfdFg4u0BYQqTABB7y/y5CaMb7PD0yYDMxE5mImbtC8Mb X-Received: by 2002:a17:902:848c:: with SMTP id c12mr36054235plo.207.1553684259445; Wed, 27 Mar 2019 03:57:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553684259; cv=none; d=google.com; s=arc-20160816; b=UNj//3bZYAgocnGw8iftOWb0V39YQFV6q4Ejz2iNkPCLyhZzTG1QdooJd5oU21hCaX qhStLhPt5+ta51V1UK1rqR7KFPnYwoefZ9WoSkgS+M/sFTAoLO5/sxGe/vSzJXWQGr5p gl8b95b4r6rXdwTdET05aexs0KHVqupJqyU/T8Bx8onUIjGrysNANGFEy5cOZbYWeWgX aIGrO2kXCySGq3Ht0ppm6VM+4VQlScwLrPx2RTadIERZOLVRIZ5OSe6sfccFsqF26MJy JIkjGkA9Lowe22GOhuCezOkvZQZLk59hni0eFG6zfY9vYDZITyqcBu8TswunKY9lgIQt gSyw== 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=8D93uEpQIWR9bU2gewfVnHMOexOYmOATDsj8KMhWmzs=; b=MGDAzZnzGiNanRqR4ch3OgPPinCm7HaNUypMYUFQdsc173cbEF51kMsd+Gt5PO6VQY ms83LccLyJzkcIUmUWBb5lQ5jJgcnetd5Yabl6seak/YXM/TPj5iymc9FdebiwXvcI9Q k12BgVlLYyIUfd6ja0B/XkztK7RAG932sK8ThAXfiHRmpW4Nt5GNjX1UWKLipgjo5s+x IP1r0gJNughqHU2Jb+OBSfeKH1UZGu45aTdcuoxV96yDzxSYdDe6FuumNPhxx8oDFzU4 m75c4yubaNuF/6sTSTTHcVMZB0peB5pfw9mh/XentRLkLfKaHacifQ2Wi4LThotVoZeH 0rFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=OJfLc2na; 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 d2si20562507pld.110.2019.03.27.03.57.23; Wed, 27 Mar 2019 03:57:39 -0700 (PDT) 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=OJfLc2na; 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 S1732922AbfC0Kz0 (ORCPT + 99 others); Wed, 27 Mar 2019 06:55:26 -0400 Received: from mail-vk1-f194.google.com ([209.85.221.194]:33853 "EHLO mail-vk1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732159AbfC0KzZ (ORCPT ); Wed, 27 Mar 2019 06:55:25 -0400 Received: by mail-vk1-f194.google.com with SMTP id k64so3536090vke.1 for ; Wed, 27 Mar 2019 03:55:24 -0700 (PDT) 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=8D93uEpQIWR9bU2gewfVnHMOexOYmOATDsj8KMhWmzs=; b=OJfLc2naHRECuIF3I6IPiVv3URfyr0S5zFIHOxztLXtFE+fNJpuKp5VeuFIcalhURz QO7/lX9t4W7YdD3Jar2htHmgTbycM8t3zsZFPlXY5I5CufqVunX0sahaEfNd5wewGFUH s34LQrwoNdoO29c1r6aTY1wyBRXZEpPFfAkoPiwmqBEeY6NKNZqD+gX1Qn+x+7zIZPYv 7ojUUCy4i60atzMpZGmgcUp99HmD0X6YXqUs+cppvi4G1E9miPUMA/dAsKYTUqBPWgFl wlLfYCpIpJkzgUKYvO+bECtRKkQR7v72C83vb2Lqqn4Nerdsr6ErVD/FxOILMTDBFcEH UGaQ== 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=8D93uEpQIWR9bU2gewfVnHMOexOYmOATDsj8KMhWmzs=; b=Cl0g4rVM7pvaF+D+Le/bkEjFZ2cd+r2Ysj8DiFt9ytpiYyrebwyCfGlmfFg/9J/fnz lWH2qsTsaedStKzK2K/0otlI9Oc48ukvBgTtdhOpTFzD0tkb0yk8T7mP/wsp+yASb9AW +TgYZFTei45m+lWTlglZ7r7ZiYQBY1PHFI0AbWRsuhGP285K7JADLU8UgCrLmyRBak2J 3Ql+VDPrQszsqPJOL2yJjhfGR3WfP23Ect2Ig33iJOwD8BKls7FxHZhErf/YWPvsxYhU EFOLjlv+vqo/Dyai2dyLHDDjKgvcVcGgrfXu1Cb6f3KBJmcy9dn72Gy8aSuGJYq3GTK7 bJhw== X-Gm-Message-State: APjAAAWF4vlB2cQ00woUDFf8PcCl7wU7z7pPUpM85AmP6mpEmqD3+M+j VjQ9S4P4KLxtWmengCgBc2cuDjAejA92mKwJqcBRtw== X-Received: by 2002:a1f:28d7:: with SMTP id o206mr3699484vko.36.1553684124211; Wed, 27 Mar 2019 03:55:24 -0700 (PDT) MIME-Version: 1.0 References: <1553677532-3539-1-git-send-email-ludovic.Barre@st.com> <1553677532-3539-5-git-send-email-ludovic.Barre@st.com> In-Reply-To: <1553677532-3539-5-git-send-email-ludovic.Barre@st.com> From: Ulf Hansson Date: Wed, 27 Mar 2019 11:54:45 +0100 Message-ID: Subject: Re: [PATCH V4 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 Wed, 27 Mar 2019 at 10:05, 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 | 18 ++++++++++++++++++ > 2 files changed, 23 insertions(+) > > diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h > index 35c91d0..82e9f94 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..8e83ae6 100644 > --- a/drivers/mmc/host/mmci_stm32_sdmmc.c > +++ b/drivers/mmc/host/mmci_stm32_sdmmc.c > @@ -265,10 +265,28 @@ static void mmci_sdmmc_set_pwrreg(struct mmci_host *host, unsigned int pwr) > } > } > > +static u32 sdmmc_get_dctrl_cfg(struct mmci_host *host) > +{ > + u32 datactrl; > + > + datactrl = mmci_dctrl_blksz(host); > + > + if (host->mmc->card && mmc_card_sdio(host->mmc->card) && > + host->data->blocks == 1) > + datactrl |= MCI_DPSM_STM32_MODE_SDIO; > + else if (host->data->stop && !host->mrq->sbc) > + datactrl |= MCI_DPSM_STM32_MODE_BLOCK_STOP; Just a question here. Does this mean that the controller sends the stop command automatically when a transfer has finished successfully? > + 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