Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp3756206pxy; Tue, 4 May 2021 09:14:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzkWU1NL+gJr4+v7OTfnNiFIpuja+8E2SdbMNCCU+vI4eyRp7hSrpS7qILInJOF3LbAf/Pq X-Received: by 2002:a05:6402:100d:: with SMTP id c13mr26316850edu.195.1620144863701; Tue, 04 May 2021 09:14:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620144863; cv=none; d=google.com; s=arc-20160816; b=GQ4M8B9kjp6N4uilkGP5IUaj6f3FllwLx8hzOV0k/ho/qXS9xLupMVL978WvDlk09I ySZOiTCGMVIgWHQzrPIVsDSeiNIsaV8iXB8Qu+KoNDaDw7Q6W7OiU4MicY85//TuZOqT yTNwYaBls6+CLkQSdGhYLEqzpMJPl87sBXZwruTCbohZPfnvXvgP/vTX9Fct+7pgQJna RpS2lwJ4k5MXqAA/MzkFKdkezyuww4vSJRmJv93NgHVEAG3+2QjvSrsrCKa7+bkrpWKI PwR2GO/cc8mDnAk2tb2rhgq1JgD3O6lG+NOGU5jvEw6DjnVPRs4ZeFfmtExDSw91okxp 6ljg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0EaNyrJPx800SxJDWlIRfuBN901wRckS9/iskflhAQE=; b=ZhQ8NzzUpPICgKoS7lGaGdqF4hK4EAKC4zjgV6c+IbOPyeZoW4OLhBe95/YzGQYFUp HqKkf53t7wWFGc0RVkC20t/3StaJ78js4JmonspL71MVD00qAIXX00/PXvk/LKvx2jlZ NzUb1cQrCCKAH80a17WFbAnmlDlLkyqnMeN/GCclQb3/zKJA7//zGMZQFqvR8S19rcRI 4FTAjsg3FfTRvRKAle55ZpX2KnY9wRYjz0lksgLLgRtmW1KwJjSkWEYZCX4l3nHPOa6r d87dFA0sZbdoSR2zsJSMqPci4VwCn6yxfKboOHaThbviIs0DIjM8Ix97239QIBuhD1xC Hxzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rLqzdYDt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id w3si336030edd.433.2021.05.04.09.13.59; Tue, 04 May 2021 09:14:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rLqzdYDt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S231760AbhEDQNg (ORCPT + 99 others); Tue, 4 May 2021 12:13:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53070 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231737AbhEDQNe (ORCPT ); Tue, 4 May 2021 12:13:34 -0400 Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 43DE1C061763 for ; Tue, 4 May 2021 09:12:38 -0700 (PDT) Received: by mail-lf1-x136.google.com with SMTP id n138so14139931lfa.3 for ; Tue, 04 May 2021 09:12:38 -0700 (PDT) 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 :mime-version:content-transfer-encoding; bh=0EaNyrJPx800SxJDWlIRfuBN901wRckS9/iskflhAQE=; b=rLqzdYDt2bR1nt+32bTw5Wj2OBKwKaY9mrTO+TeMNsCSJDdsSHogYHXYq5aVUojavE 3LCmWXYW2vY3UAjcjB/f3iKc/sj6kaqqMUPm4/EO9RaJa6D6V5mAWSivkj7fGhnKWuAV UrvtBimlKBhnhYKItjnUr1wwzR9g4K7+MjnfkHv9MyLN6ZNtmBhyFXD1gUiCVeObhn8R 9rT7bJ6X7D4bzJG7yDkJ6XVoqMPt1cZICN+UiFYlAIS0c8ftRV2e172076Fxst9vrAo7 VralKmATjvw3d4BaT3+vwxzZPv4NA3r48RUgGFmcu+i085fi3Cdgy0POR82KLLN+201j 36hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0EaNyrJPx800SxJDWlIRfuBN901wRckS9/iskflhAQE=; b=Ad4VXf1fUNTvVrwATvkW/KnZWjm/9ulKuowBCdekfyLL2Dg5NN6JQL02lN48+7g1rR Qklwohz9Oyc5uZ/cwNuj7L/J6uoiK28z6oeWkE+/1KNHhkjoPSTizD+kx6gZcOisp025 E9hPJ57kr1A2ishtzCQnkgBSVg7hZlsSURPWLJbu9H64UBSSHBkAYdOM2N7RMrr0P6Q2 L6nC/fTJQfeUx/jfdGZISn7SJCEIs2Hg5n0cnymTrbjw6fH3HdaYnQH3igDGO7WTtlCS 7rTTyk0nSVGdy8rUEwk4y5NjlGvtWwwBsnzWIH7MKSUMYIoi30JO1ZykxL9oli1PdGwP jf3w== X-Gm-Message-State: AOAM533JKczIubdQCxiFKY4+bPb5j6UVII96BMbs1ZWuCemySflLxASO f6z2L6Y8pueOGe0rBYtOd+rwKA== X-Received: by 2002:ac2:5fcb:: with SMTP id q11mr17218402lfg.248.1620144756714; Tue, 04 May 2021 09:12:36 -0700 (PDT) Received: from localhost.localdomain (h-98-128-180-197.NA.cust.bahnhof.se. [98.128.180.197]) by smtp.gmail.com with ESMTPSA id s20sm164193ljs.116.2021.05.04.09.12.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 May 2021 09:12:35 -0700 (PDT) From: Ulf Hansson To: linux-mmc@vger.kernel.org, Ulf Hansson , Adrian Hunter Cc: Linus Walleij , Wolfram Sang , Shawn Lin , Avri Altman , Masami Hiramatsu , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 02/11] mmc: core: Take into account MMC_CAP_NEED_RSP_BUSY for eMMC HPI commands Date: Tue, 4 May 2021 18:12:13 +0200 Message-Id: <20210504161222.101536-3-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210504161222.101536-1-ulf.hansson@linaro.org> References: <20210504161222.101536-1-ulf.hansson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In mmc_send_hpi_cmd() the host->max_busy_timeout is being validated towards the timeout for the eMMC HPI command, as to decide whether an R1 or R1B response should be used. Although, it has turned out the some host can't cope with that conversion, but needs R1B, which means MMC_CAP_NEED_RSP_BUSY is set for them. Let's take this into account, via using the common mmc_prepare_busy_cmd() when doing the validation, which also avoids some open coding. Signed-off-by: Ulf Hansson --- drivers/mmc/core/mmc_ops.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c index 025a4134d5c7..66ae699a410f 100644 --- a/drivers/mmc/core/mmc_ops.c +++ b/drivers/mmc/core/mmc_ops.c @@ -817,28 +817,17 @@ static int mmc_send_hpi_cmd(struct mmc_card *card) { unsigned int busy_timeout_ms = card->ext_csd.out_of_int_time; struct mmc_host *host = card->host; - bool use_r1b_resp = true; + bool use_r1b_resp = false; struct mmc_command cmd = {}; int err; cmd.opcode = card->ext_csd.hpi_cmd; cmd.arg = card->rca << 16 | 1; + cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; - /* - * Make sure the host's max_busy_timeout fit the needed timeout for HPI. - * In case it doesn't, let's instruct the host to avoid HW busy - * detection, by using a R1 response instead of R1B. - */ - if (host->max_busy_timeout && busy_timeout_ms > host->max_busy_timeout) - use_r1b_resp = false; - - if (cmd.opcode == MMC_STOP_TRANSMISSION && use_r1b_resp) { - cmd.flags = MMC_RSP_R1B | MMC_CMD_AC; - cmd.busy_timeout = busy_timeout_ms; - } else { - cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; - use_r1b_resp = false; - } + if (cmd.opcode == MMC_STOP_TRANSMISSION) + use_r1b_resp = mmc_prepare_busy_cmd(host, &cmd, + busy_timeout_ms); err = mmc_wait_for_cmd(host, &cmd, 0); if (err) { -- 2.25.1