Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp587839ybt; Fri, 19 Jun 2020 08:47:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxCH6SRE9RTdrsMr7Jf2IkY+dpCipeQGvA5Dx9ml3Rpr8PMXpsKRg82KbpMlla00tSnjT8+ X-Received: by 2002:a17:906:35cf:: with SMTP id p15mr4279813ejb.520.1592581666478; Fri, 19 Jun 2020 08:47:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592581666; cv=none; d=google.com; s=arc-20160816; b=iBZYwoCdk4PG198Sg6k/TNz9f6jamgkYnWAwWLFTLfdCZaKf11l7bzIiqyQXckxd6R ZgkxlRfRePSYDEkkUz0maqT8piLgk60thXmJSxOo2iPt0S88MWI9YJpQKJ5rKOHDEpUc /GUkBMMWkCQ+yfwt+9KSViIN6gcpMVzR2zrjk0NqH0r+TBkMyeRlvqZEPBfyFal70DuQ TBXTS9zUmt+m4yNyZbkb3uRRMSUTnSu01UAaHs7Fb/IOAtjCSZ2BuLdGrD0eXWEAEzmX 3pU9UMCmLMjWBXigzSMV4rQNCXjYDW2lR7nMxn4fYyhqgm23wXoVVrdvMhiH0bur6tHc azDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=YhUQC3iWlMsLjDAdvdJIslBtQAVWEpmrqPI+tOGg0Q4=; b=zV7ym3/V9adERCL4oXGTQET9SV9LYb2vBpvy4hPHBOkaB7a7W9hp7kTyPJ7Y75bNwO TvQJ+6smkRWc8LcBedMkuyAvhBBeAzhosVf6dvGvwyOLVEKvYu5+KFqgnNFCR0EHaC4x 8+anJvRuK55lk0tDITnr+t19P77jVJPzzJLDcdNuD891GGJdQqXgTPqU7B4faKP3NaCA BpJsyvFgER71163dgx0aNbkac6Xaj5ac4l2O719utq1HXMp3i/DXVcaUSRYb2OYrkLmM rriXA3giHkmPT5gCAeXn4nmwZP4jq681Gvz7FU53gYlgrpnYhgjwnrLBBrdn/lU2i3eP DjMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=SUNd6rYs; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s12si4075320edw.181.2020.06.19.08.47.23; Fri, 19 Jun 2020 08:47:46 -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=default header.b=SUNd6rYs; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2393574AbgFSP1h (ORCPT + 99 others); Fri, 19 Jun 2020 11:27:37 -0400 Received: from mail.kernel.org ([198.145.29.99]:58070 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2393479AbgFSP0W (ORCPT ); Fri, 19 Jun 2020 11:26:22 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B889121582; Fri, 19 Jun 2020 15:26:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592580381; bh=8ytuBy4b62zsfobpy3ImeP8JbnWVrWV3o5vABkvCtmw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SUNd6rYsEtJLCh/3NjmQH/uP5Kz+4SdmcRn7sUcDRMDDNcjYVzb+d645xRWVqP/zu 6bGnB7aEHPyBrA5lf2bI8O2qlCOZuQGBvdHBqVU1xS20pETkFoCgnOBTm4ylvJHmUb R8wTPkMBFanWQorcKkHk1mYz8gYJn9rvvg9Dojqw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Marek Vasut , Ulf Hansson , Sasha Levin Subject: [PATCH 5.7 228/376] mmc: mmci: Switch to mmc_regulator_set_vqmmc() Date: Fri, 19 Jun 2020 16:32:26 +0200 Message-Id: <20200619141721.113322798@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141710.350494719@linuxfoundation.org> References: <20200619141710.350494719@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Marek Vasut [ Upstream commit 3e09a81e166c0a5544832459be17561a6b231ac7 ] Instead of reimplementing the logic in mmc_regulator_set_vqmmc(), use the mmc code function directly. This also allows us to fix a related issue on STM32MP1, when a voltage switch of 1.8V is done for the eMMC, but the current level is already set to 1.8V. More precisely, in this scenario the call to the ->post_sig_volt_switch() hangs, indefinitely waiting for the voltage switch to complete. Fix this problem by checking if mmc_regulator_set_vqmmc() returned 1 and then skip invoking the callback. Signed-off-by: Marek Vasut Link: https://lore.kernel.org/r/20200416163649.336967-3-marex@denx.de [Ulf: Updated the commit message] Signed-off-by: Ulf Hansson Signed-off-by: Sasha Levin --- drivers/mmc/host/mmci.c | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c index 647567def612..a69d6a0c2e15 100644 --- a/drivers/mmc/host/mmci.c +++ b/drivers/mmc/host/mmci.c @@ -1861,31 +1861,17 @@ static int mmci_get_cd(struct mmc_host *mmc) static int mmci_sig_volt_switch(struct mmc_host *mmc, struct mmc_ios *ios) { struct mmci_host *host = mmc_priv(mmc); - int ret = 0; - - if (!IS_ERR(mmc->supply.vqmmc)) { + int ret; - switch (ios->signal_voltage) { - case MMC_SIGNAL_VOLTAGE_330: - ret = regulator_set_voltage(mmc->supply.vqmmc, - 2700000, 3600000); - break; - case MMC_SIGNAL_VOLTAGE_180: - ret = regulator_set_voltage(mmc->supply.vqmmc, - 1700000, 1950000); - break; - case MMC_SIGNAL_VOLTAGE_120: - ret = regulator_set_voltage(mmc->supply.vqmmc, - 1100000, 1300000); - break; - } + ret = mmc_regulator_set_vqmmc(mmc, ios); - if (!ret && host->ops && host->ops->post_sig_volt_switch) - ret = host->ops->post_sig_volt_switch(host, ios); + if (!ret && host->ops && host->ops->post_sig_volt_switch) + ret = host->ops->post_sig_volt_switch(host, ios); + else if (ret) + ret = 0; - if (ret) - dev_warn(mmc_dev(mmc), "Voltage switch failed\n"); - } + if (ret < 0) + dev_warn(mmc_dev(mmc), "Voltage switch failed\n"); return ret; } -- 2.25.1