Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp2902806pxb; Tue, 24 Aug 2021 10:13:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwxlCaivIJ0BsAdHnQkOW2vJH8uEbAyruCASsM3GWOEkNSO/06HqPp1bVeRx8JvTy1Iivsz X-Received: by 2002:a02:c61a:: with SMTP id i26mr36252713jan.108.1629825229751; Tue, 24 Aug 2021 10:13:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629825229; cv=none; d=google.com; s=arc-20160816; b=SAWQplrEYJx/oseueKAqUvhWi2L6mJZNAuld60Fw0EFAYx6fu7riX0bGEJvRZskt/t bUwPsNUAb8t9Pg2milwscZRfZ/ZCPPGODceW0k5Y+V0qbkwetPTKY60OcWllCXy//fUj K5Mt76RHf8h/6YtGXGJGis9ABjAMTYKUMdphbpQMXzmqNHN146uPWf0joQDDpeZl5eMd xDuuT4AUDHQ5UAFriH7+pL1KPri4uXddPErl+RFfznX5OKRLDn6Ozgusxi6onSo0e2hm 9zxJI4PTa5+ooxu6Nj4isSZ9h1BDeeI1jlSxQhQuH/6fwek6KUIJoIxqdWMxmM0P1NJU ygCQ== 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=nchvE4RJN8AB77tW2GJAGNMQyZEmYwdyvmTC+n5leg0=; b=cMZTUzZIeb4rGwHQCan+786ACzfSpXu3dlSu79tc8+F0WLc1jkoGWPfOAqPzLc2EY0 kk3o6MH8oKVX8Nz/GnP2jM4bFeITd+Zzau10sbUW9XgXOqBhayMpEvuEVrSNr873vcxl yvuToohZ9FpMING1cdb58xfhWNp7zVEYxnLnZ9XWu2ihCvo24fPdHq6Edrr23I0PsHkR RKd7gsKcidH8XIU3mq3ahN0+jMUT2Vxek0TB/c3tI+pwesfZenSENlO4C/dsa6IQTCuX +WvzD5GTy8OD0vws+O3RL+dCRVoJcP1wUuhf6Lowe7SUAR9qv+o2mcKvdMolISNqkyUu rzkQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Q7EXujPj; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b24si17794336jal.12.2021.08.24.10.13.37; Tue, 24 Aug 2021 10:13:49 -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=@kernel.org header.s=k20201202 header.b=Q7EXujPj; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239295AbhHXRNi (ORCPT + 99 others); Tue, 24 Aug 2021 13:13:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:52014 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240185AbhHXRKN (ORCPT ); Tue, 24 Aug 2021 13:10:13 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5A08861A04; Tue, 24 Aug 2021 17:00:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1629824435; bh=nK5MH3n4nmvDkjpNZ4AgOhZtHVbWau0UkJU48ygO+K8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q7EXujPjiX/2y2XQ0ZXtLfceoA6YIc/dAK8sJt9MvK2EsCqI47ZsS5F3b2h/F8TAG moWRYebqIDdoygMAbrodPXH4uuyJRjbulhZPGycLqzRZxUKxlu6sdGAM2Acq16PRK3 6ZeISeSvjhatQEXc2nhbIO3rOXZuO/aHtInhFRRfAsUdmW1ennXV5LFPi+WugRpKXU BkeMNoTE6st/DkZuJr/XDUYI7zbdv3f9UhGXEeWviZgx6aV1MVN3q8AW+UXYxl2rxN EAdauafBvHvkghv8U9aLompc/9O48yBWAa73fFWicMk1kG+ys9vj+xPz8p7c1fTM5t w2tBFJfEB1nmQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Nicolas Saenz Julienne , Stefan Wahren , Ulf Hansson , Sasha Levin Subject: [PATCH 5.10 86/98] mmc: sdhci-iproc: Cap min clock frequency on BCM2711 Date: Tue, 24 Aug 2021 12:58:56 -0400 Message-Id: <20210824165908.709932-87-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210824165908.709932-1-sashal@kernel.org> References: <20210824165908.709932-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.61-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-5.10.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 5.10.61-rc1 X-KernelTest-Deadline: 2021-08-26T16:58+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Nicolas Saenz Julienne [ Upstream commit c9107dd0b851777d7e134420baf13a5c5343bc16 ] There is a known bug on BCM2711's SDHCI core integration where the controller will hang when the difference between the core clock and the bus clock is too great. Specifically this can be reproduced under the following conditions: - No SD card plugged in, polling thread is running, probing cards at 100 kHz. - BCM2711's core clock configured at 500MHz or more. So set 200 kHz as the minimum clock frequency available for that board. For more information on the issue see this: https://lore.kernel.org/linux-mmc/20210322185816.27582-1-nsaenz@kernel.org/T/#m11f2783a09b581da6b8a15f302625b43a6ecdeca Fixes: f84e411c85be ("mmc: sdhci-iproc: Add support for emmc2 of the BCM2711") Signed-off-by: Nicolas Saenz Julienne Signed-off-by: Stefan Wahren Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/1628334401-6577-5-git-send-email-stefan.wahren@i2se.com Signed-off-by: Ulf Hansson Signed-off-by: Sasha Levin --- drivers/mmc/host/sdhci-iproc.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c index ddeaf8e1f72f..b9eb2ec61a83 100644 --- a/drivers/mmc/host/sdhci-iproc.c +++ b/drivers/mmc/host/sdhci-iproc.c @@ -173,6 +173,23 @@ static unsigned int sdhci_iproc_get_max_clock(struct sdhci_host *host) return pltfm_host->clock; } +/* + * There is a known bug on BCM2711's SDHCI core integration where the + * controller will hang when the difference between the core clock and the bus + * clock is too great. Specifically this can be reproduced under the following + * conditions: + * + * - No SD card plugged in, polling thread is running, probing cards at + * 100 kHz. + * - BCM2711's core clock configured at 500MHz or more + * + * So we set 200kHz as the minimum clock frequency available for that SoC. + */ +static unsigned int sdhci_iproc_bcm2711_get_min_clock(struct sdhci_host *host) +{ + return 200000; +} + static const struct sdhci_ops sdhci_iproc_ops = { .set_clock = sdhci_set_clock, .get_max_clock = sdhci_iproc_get_max_clock, @@ -271,6 +288,7 @@ static const struct sdhci_ops sdhci_iproc_bcm2711_ops = { .set_clock = sdhci_set_clock, .set_power = sdhci_set_power_and_bus_voltage, .get_max_clock = sdhci_iproc_get_max_clock, + .get_min_clock = sdhci_iproc_bcm2711_get_min_clock, .set_bus_width = sdhci_set_bus_width, .reset = sdhci_reset, .set_uhs_signaling = sdhci_set_uhs_signaling, -- 2.30.2