Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp680550rwd; Thu, 18 May 2023 02:19:59 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5utsvUxko3ZwkxMb1xUyVpGa3moWYYl3+3zjtgoqHMwramxvDHRP8WbfCfUynnBpdNlYFv X-Received: by 2002:a05:6a20:1589:b0:101:37b2:62f3 with SMTP id h9-20020a056a20158900b0010137b262f3mr1457590pzj.61.1684401599021; Thu, 18 May 2023 02:19:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684401599; cv=none; d=google.com; s=arc-20160816; b=yDjAL+EzU1Tlf1Dqtc3jzN5Dr2ECpnb9+H0g9o+1m0Db29QDiSSaeV4xBkadCeYTBe IDyA/sK4jTOWaDU9QAr+Wr9aZdGydslqymEk9Hv3lSpatD2i6RqXgXOTj2as8ZKOzHaS btGiBqC0IuO5JUxqNrZW1ly2t2Cw1KV78Tt/UwEP+yDuWjYRtn9V6j5rhErTA9zRTVIs G0JvJB5FWpaEioI6bKj3UOBp6HVJd34hxYcjvdqCLWNt7Hi80Ut+rEyqCvXkz6Pi7A3z a16r+cHakowUM+2RQ1GwCHdRv0fXcBQo9b24OSSIF2fokfzmmhqyO3oBOSPH34UbD7s7 eE3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=zoVZoesze3amaWX0xfs/f4s6bWxEh5hp0tbIuqdcZBY=; b=htpAWGI/y3nH+6Gfq/67KPgUhd93ziohsdCmcpRqXxpDffqaHyud4twXdqB+Bv2DoQ baW5ES7udb20PPrHQTcQ+GRhbr941NHXtj4BKOAKZmLGsecOnIOTNQPS8ZmoQSuHJ8Fn GYUX/mhknp6rjDFLMyX1GezE1pHnTrp82bpO5Z+uMnX0wTSElQRqvxR1lbJIVzsxfJYO iReMllxu9Luv295+ud/1FlGuozUJRitxhY89vLGtaAT0I1eZ/2xKRMbjDQ5TD+qAIqmL YCSt3/QEsp19VONX/o412pyNcPhE4xNS3mnOkAzKVAWtyZIbYigFevLH1t2BD2J7uTO6 2ubA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b="TkJkfi/T"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c6-20020a6566c6000000b0053071bc497dsi1048251pgw.90.2023.05.18.02.19.44; Thu, 18 May 2023 02:19:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b="TkJkfi/T"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230062AbjERJNb (ORCPT + 99 others); Thu, 18 May 2023 05:13:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229921AbjERJNa (ORCPT ); Thu, 18 May 2023 05:13:30 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F30A1FE6; Thu, 18 May 2023 02:13:28 -0700 (PDT) Received: from [IPV6:2001:b07:2ed:14ed:a962:cd4d:a84:1eab] (unknown [IPv6:2001:b07:2ed:14ed:a962:cd4d:a84:1eab]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id 7DD8B6605942; Thu, 18 May 2023 10:13:25 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1684401206; bh=8uYZao2Gz/azmiXJrOpzRQOcMD2LDe0Wm+O2Lm2g7iQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=TkJkfi/ThVubzoWNirgKKz5OWpZRClL0L32odQhqkK+CicD/6VpS1ppZbjUw9+d4A E2VK/TtBwzqtMbPaltZDLQQKAganjQWKb/4sXU6RVOajVOTAI/NjS5dXOsVKq/6TUn 0BH76JtPMHqUyFGuQSFxlh2Emrz1w54SN4mG5TGSGM+Crdfuyq11AjZroujKvFAeD5 Wli8zM/wssawdhRe0Zm3LSIGgJNHJTYuRdlmSG5+P53jYc90E3MXL6qXo+xGt4uGHg dhaLW3HwSfJTigc5+j7curd6xZV9fTMX+hcoBxu7HmVoMH10oxt+hyjmdffSpWe1ZU UesehU5oMYX2g== Message-ID: <0df3968e-da34-b36c-4cb4-92d66508a46a@collabora.com> Date: Thu, 18 May 2023 11:13:22 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Subject: Re: [PATCH v2] mmc: mtk-sd: reduce CIT for better performance To: Wenbin Mei , Ulf Hansson Cc: Chaotian Jing , Matthias Brugger , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org References: <20230510015851.11830-1-wenbin.mei@mediatek.com> Content-Language: en-US From: AngeloGioacchino Del Regno In-Reply-To: <20230510015851.11830-1-wenbin.mei@mediatek.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Il 10/05/23 03:58, Wenbin Mei ha scritto: > CQHCI_SSC1 indicates to CQE the polling period to use when using periodic > SEND_QUEUE_STATUS(CMD13) polling. > The default value 0x1000 that corresponds to 150us, let's decrease it to The default value 0x1000 (4096) corresponds to 4096 * 52.08uS = 231.33uS ...so the default is not 150uS. If I'm wrong, this means that the CQCAP field is not 0, which would mean that the expected 3uS would be wrong. Also, since the calculation can be done dynamically, this is what we should actually do in the driver, as this gives information to the next engineer checking this piece of code. Apart from this, by just writing 0x40 to the CQHCI_SSC1 register, you are assuming that the CQCAP value requirement is fullfilled, but you cannot assume that the bootloader has set the CQCAP's ITCFVAL and ITCFMUL fields as you expect on all platforms: this means that implementing this takes a little more effort. You have two ways to implement this: *** First *** 1. Read ITCFMUL and ITCFVAL, then: tclk_mul = itcfmul_to_mhz(ITCFMUL); /* pseudo function interprets reg value*/ tclk = ITCFVAL * tclk_mul; 2. Set SSC1 so that we get 3nS: #define CQHCI_SSC1_CIT GENMASK(15, 0) poll_time = cit_time_ns_to_regval(3); sscit = FIELD_PREP(CQHCI_SSC1_CIT, poll_time) cqhci_writel( ... ) *** Second ** 1. Pre-set ITCFMUL and ITCFVAL to ITCFVAL = 192 (decimal) ITCFMUL = 2 (where 2 == 0.1MHz) 2. Set SSC1 so that we get 3nS: #define CQHCI_SSC1_CIT GENMASK(15, 0) poll_time = cit_time_ns_to_regval(3); sscit = FIELD_PREP(CQHCI_SSC1_CIT, poll_time) cqhci_writel( ... ) I would implement the first way, as it paves the way to extend this to different tclk values if needed in the future. Regards, Angelo > 0x40 that corresponds to 3us, which can improve the performance of some > eMMC devices. > > Signed-off-by: Wenbin Mei > --- > drivers/mmc/host/mtk-sd.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c > index edade0e54a0c..ffeccddcd028 100644 > --- a/drivers/mmc/host/mtk-sd.c > +++ b/drivers/mmc/host/mtk-sd.c > @@ -2453,6 +2453,7 @@ static void msdc_hs400_enhanced_strobe(struct mmc_host *mmc, > static void msdc_cqe_enable(struct mmc_host *mmc) > { > struct msdc_host *host = mmc_priv(mmc); > + struct cqhci_host *cq_host = mmc->cqe_private; > > /* enable cmdq irq */ > writel(MSDC_INT_CMDQ, host->base + MSDC_INTEN); > @@ -2462,6 +2463,9 @@ static void msdc_cqe_enable(struct mmc_host *mmc) > msdc_set_busy_timeout(host, 20 * 1000000000ULL, 0); > /* default read data timeout 1s */ > msdc_set_timeout(host, 1000000000ULL, 0); > + > + /* decrease the send status command idle timer to 3us */ > + cqhci_writel(cq_host, 0x40, CQHCI_SSC1); > } > > static void msdc_cqe_disable(struct mmc_host *mmc, bool recovery)