Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1867629pxb; Fri, 5 Feb 2021 03:34:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJzJGCPwmqCCOIB2DInqWOSkxfLpBBISDJzPfM4LbW06dKEw9Ad5nCMDTTU4uCvJOBteuOBp X-Received: by 2002:a17:906:b2c6:: with SMTP id cf6mr3370080ejb.99.1612524851056; Fri, 05 Feb 2021 03:34:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612524851; cv=none; d=google.com; s=arc-20160816; b=UUN8gyv7c4AfVCas8jWMkUNzX4GSeIAiG26oLFhvIovhLAv8ZMkOsDwxLZ9ygwQD4k r0dNqpMDZyo+zp+tLRH08bi9s4aVyFtNn9cw9rVTaJAFGw/FGj3MfTdgtWfJ0ccTpwA3 9ngX70R9LNVLqsXVZ0Uduy4awgUDwd74w98WpmCtQHsYoFN0QqLNk6bU8Ge3NN75r8zL LeU2EHxSV7vOZ3T7Nvt7Byg7AWsOsEr3JhWtTB2kO7gRVt9SZkCfwxRgjauD041VQoD4 Z9E9J2HiD/GoH5kpgA961sQkUOXUxuoMEzW6aVFt+Hdd3wt2xU1iYxGI1qbDKLKFtUHa 9Zyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=8wHvwFr5gztYe0f+dkr3QhCJJJB1HW2z5bVx+5WyLGg=; b=WbNe4ezattdrRmz1irsP1qjnlGJsAT7UcNkKwMOdvVUbkuHqsx/Hlf6/DXTbxs2orp ZIPa3S11FtuL67aMp/zRoN7Qfhi6tsipA96Y0HcRq+VA/aGUP1c5cNHmaxB2+hJqGabv atKBB3wEruo8RES0MTB/hNgdGyNQ3K2rdUqF7dJvQaWP3W5+vbgoJClV8ZdJ6uCviWyL E4+AawSwgRS7kMdrJ4O1w1tEYWLfePQI8HAd29h6++lLF5f1sX0MHRnK9BL6lBbdcw91 oKNjSDgDJI1nIc6yEmV9jQXCJMX8R1AXG9z10Th5BQ9IR9Kv6Lfb00yBEOWnrq4z/rTL xRcA== ARC-Authentication-Results: i=1; mx.google.com; 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 g5si4927730ejw.275.2021.02.05.03.33.46; Fri, 05 Feb 2021 03:34:11 -0800 (PST) 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; 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 S231983AbhBELdA (ORCPT + 99 others); Fri, 5 Feb 2021 06:33:00 -0500 Received: from alexa-out.qualcomm.com ([129.46.98.28]:31757 "EHLO alexa-out.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231357AbhBELaJ (ORCPT ); Fri, 5 Feb 2021 06:30:09 -0500 Received: from ironmsg-lv-alpha.qualcomm.com ([10.47.202.13]) by alexa-out.qualcomm.com with ESMTP; 05 Feb 2021 03:29:18 -0800 X-QCInternal: smtphost Received: from ironmsg01-blr.qualcomm.com ([10.86.208.130]) by ironmsg-lv-alpha.qualcomm.com with ESMTP/TLS/AES256-SHA; 05 Feb 2021 03:29:16 -0800 X-QCInternal: smtphost Received: from c-rbokka-linux.qualcomm.com ([10.206.24.149]) by ironmsg01-blr.qualcomm.com with ESMTP; 05 Feb 2021 16:58:58 +0530 Received: by c-rbokka-linux.qualcomm.com (Postfix, from userid 203305) id 1AEAC3416; Fri, 5 Feb 2021 16:58:57 +0530 (IST) From: Ravi Kumar Bokka To: Srinivas Kandagatla , Douglas Anderson Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, rnayak@codeaurora.org, saiprakash.ranjan@codeaurora.org, dhavalp@codeaurora.org, mturney@codeaurora.org, Ravi Kumar Bokka Subject: [PATCH] drivers: nvmem: Fix voltage settings for QTI qfprom-efuse Date: Fri, 5 Feb 2021 16:58:52 +0530 Message-Id: <1612524533-3970-1-git-send-email-rbokka@codeaurora.org> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QFPROM controller hardware requires 1.8V min for fuse blowing. So, this change sets the voltage to 1.8V, required to blow the fuse for qfprom-efuse controller. To disable fuse blowing, we set the voltage to 0V since this may be a shared rail and may be able to run at a lower rate when we're not blowing fuses. Fixes: 93b4e49f8c86 ("nvmem: qfprom: Add fuse blowing support") Reported-by: Douglas Anderson Suggested-by: Douglas Anderson Signed-off-by: Ravi Kumar Bokka --- drivers/nvmem/qfprom.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/nvmem/qfprom.c b/drivers/nvmem/qfprom.c index 6cace24..100d69d 100644 --- a/drivers/nvmem/qfprom.c +++ b/drivers/nvmem/qfprom.c @@ -127,6 +127,16 @@ static void qfprom_disable_fuse_blowing(const struct qfprom_priv *priv, { int ret; + /* + * This may be a shared rail and may be able to run at a lower rate + * when we're not blowing fuses. At the moment, the regulator framework + * applies voltage constraints even on disabled rails, so remove our + * constraints and allow the rail to be adjusted by other users. + */ + ret = regulator_set_voltage(priv->vcc, 0, INT_MAX); + if (ret) + dev_warn(priv->dev, "Failed to set 0 voltage (ignoring)\n"); + ret = regulator_disable(priv->vcc); if (ret) dev_warn(priv->dev, "Failed to disable regulator (ignoring)\n"); @@ -172,6 +182,17 @@ static int qfprom_enable_fuse_blowing(const struct qfprom_priv *priv, goto err_clk_prepared; } + /* + * Hardware requires 1.8V min for fuse blowing; this may be + * a rail shared do don't specify a max--regulator constraints + * will handle. + */ + ret = regulator_set_voltage(priv->vcc, 1800000, INT_MAX); + if (ret) { + dev_err(priv->dev, "Failed to set 1.8 voltage\n"); + goto err_clk_rate_set; + } + ret = regulator_enable(priv->vcc); if (ret) { dev_err(priv->dev, "Failed to enable regulator\n"); -- Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by the Linux Foundation.