Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp22264279ybl; Mon, 6 Jan 2020 22:35:40 -0800 (PST) X-Google-Smtp-Source: APXvYqyDHpTNbxSe4FUeYcWLSlmMd5RWaFfC0Sh7U5+jWi0xxDUwf1Oe963NcU9DaeMmDzTMMvQW X-Received: by 2002:a9d:4e92:: with SMTP id v18mr100706673otk.47.1578378940101; Mon, 06 Jan 2020 22:35:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578378940; cv=none; d=google.com; s=arc-20160816; b=kA/UuREaINY4xfCxgVaK5PEeVcltDWDa6XRNMs8sfVuHaHLsshKbG1pIxh8P7DPYHQ hNdFCDQJQY221krdZyXX5w5V8XXy2W6WQsjsRuvbzEFr9NLAFt/fyNg89hjx3kxS5cWF wvdt1beN/6xtF0Al7/fs+zFI2wkxsFNDnV9cg2tvefG0UUoJZfBxpRrTOsxYSk1yptjd Ayi5VDLe8FEq+cLZsrRiXQ0FqkrTzuDmwxzUf7fZlUFfivkMss632MwBILgz+LQ33JpF NKZAbAt5dRfK+LtnAszcwmx0Vt2ulqHqbBOFhWMQEuyjfPN8lgb8zjeC7R4EIjsxLS5W 97gg== 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=hIJgplRJ76RhyxgWHzYQXLkzuycqS5KcOYNXCryb3pU=; b=vqzl92eW1+6hPVl9orFrW7yBywIwptJAYUIDN4xCHOdyDsyBP35JA0Itr6mAxM2rG7 UvB4xQD9eQ+MMX6+72F5bwitORVy3G4dN+2B3WiQ77EXqitf3tBM+Of76K7paEOMl/98 I1iGvg7ght1DTTqlyAncUbQ8vACP7Gth73F3nnWJh3ZyRHNnvClDX4jgRpWJEhHmCH+8 H1kk+EUZBuAn4Vb2Hik3sCSWMXZeqlmX75Gcr9E7NnxPHKb7uWhe0Mz/8H9qoe31U9XN /KhCnyytcdpaUO7muoOeIrTIwsf1aF3lSCrkYPcEQhw7zRtXYdkqvsmSMUlCsZEoAslA 06Hw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=vf3JV4zo; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u12si37022141otq.51.2020.01.06.22.35.27; Mon, 06 Jan 2020 22:35:40 -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=@gmail.com header.s=20161025 header.b=vf3JV4zo; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727229AbgAGGer (ORCPT + 99 others); Tue, 7 Jan 2020 01:34:47 -0500 Received: from mail-qk1-f193.google.com ([209.85.222.193]:40901 "EHLO mail-qk1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725781AbgAGGer (ORCPT ); Tue, 7 Jan 2020 01:34:47 -0500 Received: by mail-qk1-f193.google.com with SMTP id c17so41758246qkg.7; Mon, 06 Jan 2020 22:34:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=hIJgplRJ76RhyxgWHzYQXLkzuycqS5KcOYNXCryb3pU=; b=vf3JV4zocywSj93VGGe3LGCCRzY+Y4RmfNIF1doHnmWFKtBWXgaGTaKLn5Fl2ixRs+ L1cgw38VniG7VxFQIjgUavPesskrlETKwJ+d7l9PZb5rh6c6aV2FsOwvEfmaM8pxyEk1 wrgVfiP09rOgWbs+Oo7CoHelt6wHYEm8ggkyhlf0OAo4+6ArSWt73MfjMQovNbItl5X6 e3m8AVu8KMTOUm3nW44fDODiDJXQw3y2dD3Ol0z/8sSQOB5GcwuJiKTmvSJ1IO/mRdRu B4swPnqTHnoOvSmP+9UH+x8Yz3Qrg4RpdoHpCwmZlEvT/YwY9jWlqaa2vjcNCWKNO2WJ BUPg== 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=hIJgplRJ76RhyxgWHzYQXLkzuycqS5KcOYNXCryb3pU=; b=UIR7DgvJ0DqfTDndxwFehCR83Gh0+kA9Fwk9v8WJp7gNUrXVikbQltz9fOzhRZnHlm 7dk5855gcGgpGZq8Tx7hf29Ar1etwAZ0Dvy9Ie34y5G5XYnpARvl30FZTEiOtslep9N6 cV/M8PWPcbUSZx6xCmE5gFgXHIramfy4AjBTJBm3hAA0BISzxuaTGGLWQKIdIL9jUHEc uxCeibSu9qtL0PUY6YR5EQgEsoPSOLRFfo5oryrU+ki0br0gEjSIOb9FEyoGJcjF3xws N9+fQgJz0nw0SKCjMrLb9Pmo49t/oUms4QSWZjgPCJYMEz+uuJg38RB949NIWqiYOZo3 LzgQ== X-Gm-Message-State: APjAAAVdijiZXaLHEqRqHNbNwpiazGLWDnPzRV4oS5hYSzp3qKL2IJJF Rnlu1DjHsjLHPMm+d9KypEI7rGOW/fE1cm+k5Wo= X-Received: by 2002:a37:b601:: with SMTP id g1mr84298304qkf.114.1578378885720; Mon, 06 Jan 2020 22:34:45 -0800 (PST) MIME-Version: 1.0 References: <20200106110133.13791-1-faiz_abbas@ti.com> <20200106110133.13791-3-faiz_abbas@ti.com> In-Reply-To: <20200106110133.13791-3-faiz_abbas@ti.com> From: Baolin Wang Date: Tue, 7 Jan 2020 14:34:34 +0800 Message-ID: Subject: Re: [PATCH v4 02/11] mmc: sdhci: Factor out some operations set to their own functions To: Faiz Abbas Cc: linux-omap@vger.kernel.org, LKML , devicetree@vger.kernel.org, linux-mmc , kishon@ti.com, Adrian Hunter , mark.rutland@arm.com, robh+dt@kernel.org, Ulf Hansson , tony@atomide.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 Hi Faiz, On Mon, Jan 6, 2020 at 7:01 PM Faiz Abbas wrote: > > In preparation for adding external dma support, factor out data initialization, > block info and mrq_done to their own functions. > > Signed-off-by: Faiz Abbas > --- > drivers/mmc/host/sdhci.c | 96 +++++++++++++++++++++++----------------- > 1 file changed, 55 insertions(+), 41 deletions(-) > > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c > index 1b1c26da3fe0..f6999054abcf 100644 > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c > @@ -1025,18 +1025,9 @@ static void sdhci_set_timeout(struct sdhci_host *host, struct mmc_command *cmd) > } > } > > -static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) > +static void sdhci_initialize_data(struct sdhci_host *host, > + struct mmc_data *data) > { > - struct mmc_data *data = cmd->data; > - > - host->data_timeout = 0; > - > - if (sdhci_data_line_cmd(cmd)) > - sdhci_set_timeout(host, cmd); > - > - if (!data) > - return; > - > WARN_ON(host->data); > > /* Sanity checks */ > @@ -1048,6 +1039,36 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) > host->data_early = 0; > host->data->bytes_xfered = 0; > Can you remove above redundant blank line? > +} > + > +static inline void sdhci_set_block_info(struct sdhci_host *host, > + struct mmc_data *data) > +{ > + Ditto. Otherwise, please add my tested tag if feel free. Tested-by: Baolin Wang > + /* Set the DMA boundary value and block size */ > + sdhci_writew(host, > + SDHCI_MAKE_BLKSZ(host->sdma_boundary, host->data->blksz), > + SDHCI_BLOCK_SIZE); > + /* > + * For Version 4.10 onwards, if v4 mode is enabled, 32-bit Block Count > + * can be supported, in that case 16-bit block count register must be 0. > + */ > + if (host->version >= SDHCI_SPEC_410 && host->v4_mode && > + (host->quirks2 & SDHCI_QUIRK2_USE_32BIT_BLK_CNT)) { > + if (sdhci_readw(host, SDHCI_BLOCK_COUNT)) > + sdhci_writew(host, 0, SDHCI_BLOCK_COUNT); > + sdhci_writew(host, host->data->blocks, SDHCI_32BIT_BLK_CNT); > + } else { > + sdhci_writew(host, host->data->blocks, SDHCI_BLOCK_COUNT); > + } > +} > + > +static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) > +{ > + struct mmc_data *data = cmd->data; > + > + sdhci_initialize_data(host, data); > + > if (host->flags & (SDHCI_USE_SDMA | SDHCI_USE_ADMA)) { > struct scatterlist *sg; > unsigned int length_mask, offset_mask; > @@ -1133,22 +1154,7 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) > > sdhci_set_transfer_irqs(host); > > - /* Set the DMA boundary value and block size */ > - sdhci_writew(host, SDHCI_MAKE_BLKSZ(host->sdma_boundary, data->blksz), > - SDHCI_BLOCK_SIZE); > - > - /* > - * For Version 4.10 onwards, if v4 mode is enabled, 32-bit Block Count > - * can be supported, in that case 16-bit block count register must be 0. > - */ > - if (host->version >= SDHCI_SPEC_410 && host->v4_mode && > - (host->quirks2 & SDHCI_QUIRK2_USE_32BIT_BLK_CNT)) { > - if (sdhci_readw(host, SDHCI_BLOCK_COUNT)) > - sdhci_writew(host, 0, SDHCI_BLOCK_COUNT); > - sdhci_writew(host, data->blocks, SDHCI_32BIT_BLK_CNT); > - } else { > - sdhci_writew(host, data->blocks, SDHCI_BLOCK_COUNT); > - } > + sdhci_set_block_info(host, data); > } > > static inline bool sdhci_auto_cmd12(struct sdhci_host *host, > @@ -1245,22 +1251,10 @@ static bool sdhci_needs_reset(struct sdhci_host *host, struct mmc_request *mrq) > (host->quirks & SDHCI_QUIRK_RESET_AFTER_REQUEST))); > } > > -static void __sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) > +static void sdhci_set_mrq_done(struct sdhci_host *host, struct mmc_request *mrq) > { > int i; > > - if (host->cmd && host->cmd->mrq == mrq) > - host->cmd = NULL; > - > - if (host->data_cmd && host->data_cmd->mrq == mrq) > - host->data_cmd = NULL; > - > - if (host->data && host->data->mrq == mrq) > - host->data = NULL; > - > - if (sdhci_needs_reset(host, mrq)) > - host->pending_reset = true; > - > for (i = 0; i < SDHCI_MAX_MRQS; i++) { > if (host->mrqs_done[i] == mrq) { > WARN_ON(1); > @@ -1276,6 +1270,23 @@ static void __sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) > } > > WARN_ON(i >= SDHCI_MAX_MRQS); > +} > + > +static void __sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) > +{ > + if (host->cmd && host->cmd->mrq == mrq) > + host->cmd = NULL; > + > + if (host->data_cmd && host->data_cmd->mrq == mrq) > + host->data_cmd = NULL; > + > + if (host->data && host->data->mrq == mrq) > + host->data = NULL; > + > + if (sdhci_needs_reset(host, mrq)) > + host->pending_reset = true; > + > + sdhci_set_mrq_done(host, mrq); > > sdhci_del_timer(host, mrq); > > @@ -1390,12 +1401,15 @@ void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd) > } > > host->cmd = cmd; > + host->data_timeout = 0; > if (sdhci_data_line_cmd(cmd)) { > WARN_ON(host->data_cmd); > host->data_cmd = cmd; > + sdhci_set_timeout(host, cmd); > } > > - sdhci_prepare_data(host, cmd); > + if (cmd->data) > + sdhci_prepare_data(host, cmd); > > sdhci_writel(host, cmd->arg, SDHCI_ARGUMENT); > > -- > 2.19.2 >