From patchwork Fri Nov 13 15:21:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Claudiu Beznea X-Patchwork-Id: 11903943 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4BA80C55ABD for ; Fri, 13 Nov 2020 15:22:56 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C3AE922249 for ; Fri, 13 Nov 2020 15:22:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="QhrRyI/6"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="MEwbNptm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C3AE922249 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=bEqRQAaudutLEI0TOi8rQhTWuAS+Mw0EiRjgedCiOPA=; b=QhrRyI/6K5dIROe3TGQeigIfU EuK1GTHMsSGNujIqukHhcPRw8/ECQJlE10KgWWUvRNpuxn+Yfv/xEIM0A9ljls0qADTZBouGztmps HXAqxV3XHSj3ilVQTbXS7UtdCQH9oy+RkatY/PeYQsrlN8snL44YpZtJfzIq6IpQ6izsGnr2TWB/M WID5KsRU1vdcPT3lGqVEHxndFaT7NxwNSxbp/WeSJ4414g8pCVdBL5rmPbFN8avm6mnsmJRO7Tb0X F7n5hALWBGqaRYNjUJtJD74O2ZQyMDE15SnC7tclTyNi4zGe+CaAY30/ApJD9PAvLSAyLuAUgG44u 4YM6PCJVg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdatK-0001Sa-KU; Fri, 13 Nov 2020 15:21:35 +0000 Received: from esa5.microchip.iphmx.com ([216.71.150.166]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdat9-0001P1-Em for linux-arm-kernel@lists.infradead.org; Fri, 13 Nov 2020 15:21:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1605280884; x=1636816884; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=b/5OjSM9VK1XMAdLydktZ7tDE6fgDTRGJoBG4hNXffM=; b=MEwbNptmHBb7/pPqKFjQb9TihHzoLKEuHMagQ9dB91bs6HluFvFSM8UB QkfcjSh4R6mkQyHxAUN4JuX0l+r6dUyU7Dz2Pq8eRZpUJ0xTH1KRHgNC/ Hi4HTXHEN8LnKadYJKW6/1cabWvKuhmjX3VPGsod+g+UDYiWtSPV9unUZ 2ygRcl6TyVZ8XZ1FAfmxkP88Phn6V23MgSeAnavVwlhxj44bpAaK9Zm5Q GUs4qnHtAtDXj8/H830URgfUVXymfGZGv09Vtgry+nkLBsofYTlVejjcf hq1h1ua5OgqpESgjaQ4qh/5lLMPHb08tuE3NyjCWE0KN/jVbN1WImPxDi A==; IronPort-SDR: IwrEie/D51TUBqmvPqmLaMpbC6si7Uke5nKRz1buYHsojR8qFLQzUV8kDMhssuoqt23/VaYHFV x5Rv425AoOcCQhLGFr8RcOC1ed05TB04xxmKgTa2Fbl+hyPEdnOipcnnPm8NBvz4iA9w6ReX5v dod1ll6wRkx1HD6M7HCumP521I6xBx4ou2J8XwL8JMgmcKWZ/qa7biDCSbW8dAeUj5n4Bn8GIl qVHfrfVgKIrls2dmqzsrvV/zBAJEaMSXwAoLfa4hahckg+/calOIZ8n5OwNteMzrvxoy+cZgx8 tuc= X-IronPort-AV: E=Sophos;i="5.77,475,1596524400"; d="scan'208";a="98340440" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 13 Nov 2020 08:21:23 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Fri, 13 Nov 2020 08:21:22 -0700 Received: from m18063-ThinkPad-T460p.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Fri, 13 Nov 2020 08:21:18 -0700 From: Claudiu Beznea To: , Subject: [PATCH v3 1/6] regulator: core: validate selector against linear_min_sel Date: Fri, 13 Nov 2020 17:21:05 +0200 Message-ID: <1605280870-32432-2-git-send-email-claudiu.beznea@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> References: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201113_102123_716626_0C070483 X-CRM114-Status: GOOD ( 13.79 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: axel.lin@ingics.com, s.hauer@pengutronix.de, linux-kernel@vger.kernel.org, Claudiu Beznea , ttynkkynen@nvidia.com, linus.walleij@linaro.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org There are regulators who's min selector is not zero. Selectors loops (looping b/w zero and regulator::desc::n_voltages) might throw errors because invalid selectors are used (lower than regulator::desc::linear_min_sel). For this situations validate selectors against regulator::desc::linear_min_sel. Fixes: 3a40cfc36bb3d ("regulator: core: create unlocked version of regulator_list_voltage") Fixes: 04eca28cde52c ("regulator: Add helpers for low-level register access") Fixes: 88cd222b259d6 ("regulator: provide consumer interface for fall/rise time") Fixes: d295f7670127e ("regulator: core: Move list_voltage_{linear,linear_range,table} to helpers.c") Signed-off-by: Claudiu Beznea --- drivers/regulator/core.c | 9 +++++++-- drivers/regulator/helpers.c | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 2e1ea18221ef..1d0d35f14f37 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -2958,7 +2958,8 @@ static int _regulator_list_voltage(struct regulator_dev *rdev, return rdev->desc->fixed_uV; if (ops->list_voltage) { - if (selector >= rdev->desc->n_voltages) + if (selector >= rdev->desc->n_voltages || + selector < rdev->desc->linear_min_sel) return -EINVAL; if (lock) regulator_lock(rdev); @@ -3109,7 +3110,8 @@ int regulator_list_hardware_vsel(struct regulator *regulator, struct regulator_dev *rdev = regulator->rdev; const struct regulator_ops *ops = rdev->desc->ops; - if (selector >= rdev->desc->n_voltages) + if (selector >= rdev->desc->n_voltages || + selector < rdev->desc->linear_min_sel) return -EINVAL; if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap) return -EOPNOTSUPP; @@ -4032,6 +4034,9 @@ int regulator_set_voltage_time(struct regulator *regulator, for (i = 0; i < rdev->desc->n_voltages; i++) { /* We only look for exact voltage matches here */ + if (i < rdev->desc->linear_min_sel) + continue; + voltage = regulator_list_voltage(regulator, i); if (voltage < 0) return -EINVAL; diff --git a/drivers/regulator/helpers.c b/drivers/regulator/helpers.c index e4bb09bbd3fa..974f1a63993d 100644 --- a/drivers/regulator/helpers.c +++ b/drivers/regulator/helpers.c @@ -647,7 +647,8 @@ int regulator_list_voltage_table(struct regulator_dev *rdev, return -EINVAL; } - if (selector >= rdev->desc->n_voltages) + if (selector >= rdev->desc->n_voltages || + selector < rdev->desc->linear_min_sel) return -EINVAL; return rdev->desc->volt_table[selector]; From patchwork Fri Nov 13 15:21:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Claudiu Beznea X-Patchwork-Id: 11903933 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 14D4FC55ABD for ; Fri, 13 Nov 2020 15:22:13 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 97F2921D7F for ; Fri, 13 Nov 2020 15:22:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="GNm8iPWq"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="TkjknRPn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 97F2921D7F Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=IseH0eIhvo2nLDp2EAjZbcySI+h6N5RxHJ8bsMSgkiQ=; b=GNm8iPWqFKHQfYb8rwBLHhI3n g5AbtELJUVmr5iMicNGwoEPJ6+OGUf1rIYhYxOyQHDdzlbLh0IskLgkgUmdxAvY38KEOhquaY7TBp jQ8dqrtol/Yq9M6yS3HLCWLk/n5F3yBas0DdFyuyW6PgU3/JsjuGJlr3hCdE0CIHAqgXQCwLto37g WVoReUzajiMKO0xqTpHNLIYkywvChsDCIcjEgx9PDqUYvxQYUcuBJ2CaGtxAd+0pIt0w2eoswgOwQ bKMrapkYJXrgXJosJomGJ1JxjfA386LbdD413ZM+BkvcRqrGyw+b6NKzp/M97jqOxb4Krs5jn3wpY 9RyLUe5vg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdatV-0001Y5-0g; Fri, 13 Nov 2020 15:21:45 +0000 Received: from esa5.microchip.iphmx.com ([216.71.150.166]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdatD-0001P1-Lk for linux-arm-kernel@lists.infradead.org; Fri, 13 Nov 2020 15:21:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1605280888; x=1636816888; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=qi4ydAI8o4oJpJGd7zvYmGVBebnhYeEm03dyN/oO0L4=; b=TkjknRPnEPZMkNTSDkloq2IcVMqJ7IM9D6MuEMclZogl76RPVDl4gHqy HS+d1RUxIgrneZPiGhNGUFKoM+cJu7xXR1k0Yqgd/aAmBPgqACO3CeF7B TkIxXPGNW3kZ7D+1Lajz6h8B9qccSSamMgrc9rgE4MxWMJoXOspbCfTyy 1bKYTAtEIYEdvoQcRgabTuOPidLdSBG1ZhjpC12i6cVfGHvXWXJdWP6av KBT4zN85SnAsJP7MkbbmBg8obt2jKKrUk9Koc7Jz7Fm1dgiKagtimhEj1 A0ymS7UiaRlYci2SYoFS7iY996y9CpTUNemz5is6aFvQIj+k+SVTatHI7 g==; IronPort-SDR: VML+9dKlH/GH/6LP1kBWoT7nnsc2ZvvbqZEPi7gs6QQf+q7ff11+BSeaFXkmhXZCAprqlVpCcT raC5PY3Ynr1cU1m6T2bYouPi+J/7+f1D0PA5QTB7ExR5KLnQZjdIHPSqG4c4q3IS9oFWcSzok7 zY7Lbp70vTD0qoXCdu3StobCGgvqnTKcFie4KNuc9jtvSRe+vRHZgi4vRWge/7y72lWBtBjkVa g47i4Q+IeqJtXr189IldXvlYFVGjQfBejkEPQcYFcB+WvQNqr26+JePiFNkabASUyoYGBSfosm 3dc= X-IronPort-AV: E=Sophos;i="5.77,475,1596524400"; d="scan'208";a="98340454" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 13 Nov 2020 08:21:28 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Fri, 13 Nov 2020 08:21:26 -0700 Received: from m18063-ThinkPad-T460p.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Fri, 13 Nov 2020 08:21:22 -0700 From: Claudiu Beznea To: , Subject: [PATCH v3 2/6] regulator: core: do not continue if selector match Date: Fri, 13 Nov 2020 17:21:06 +0200 Message-ID: <1605280870-32432-3-git-send-email-claudiu.beznea@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> References: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201113_102128_404129_E14EBD66 X-CRM114-Status: GOOD ( 10.47 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: axel.lin@ingics.com, s.hauer@pengutronix.de, linux-kernel@vger.kernel.org, Claudiu Beznea , ttynkkynen@nvidia.com, linus.walleij@linaro.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Do not continue if selector has already been located. Signed-off-by: Claudiu Beznea --- drivers/regulator/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 1d0d35f14f37..6724324d372c 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -4037,6 +4037,9 @@ int regulator_set_voltage_time(struct regulator *regulator, if (i < rdev->desc->linear_min_sel) continue; + if (old_sel >= 0 && new_sel >= 0) + break; + voltage = regulator_list_voltage(regulator, i); if (voltage < 0) return -EINVAL; From patchwork Fri Nov 13 15:21:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Claudiu Beznea X-Patchwork-Id: 11903939 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3C546C388F7 for ; Fri, 13 Nov 2020 15:23:23 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0831822249 for ; Fri, 13 Nov 2020 15:23:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="hxkgOJmQ"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="Zy/KmYrz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0831822249 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=+kwv0bC+5FqOWMvcS3+wLN6YkHlS1RMuyeKx2Ug5h2o=; b=hxkgOJmQ0MCAKNEHnCGiU046N QpAGRv6rspkPRnQHci4Jx/SdKxXZnJ3MAsAyNsl0aeS2hBxYZtZguKXUcqv9EB0KPzRdIwKkaX/Ob tabf6f3jVONIdnc6QYXkJACZeQIYIFRijBl5tLvov5y7jwM08VD5rCGo4NViogdESEYn0eBMwQieo +v1tBh9D7dxsWlVH5rAQHPZdEuggPrlFU8nRAWwNk+AdjzY2ljOKmc+3h8D/p+7Orcy9QSgddMxt6 6uPVNgFigglD3n4kjM3oitIARMQso4N3g0nxhHjkg3pqI5o4ZKbwm4Ka0jKtpG2tWf1V36eVBM/Z1 0fUuZDbQw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdate-0001bj-Se; Fri, 13 Nov 2020 15:21:54 +0000 Received: from esa5.microchip.iphmx.com ([216.71.150.166]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdatI-0001P1-8C for linux-arm-kernel@lists.infradead.org; Fri, 13 Nov 2020 15:21:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1605280893; x=1636816893; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=2XK5086b4/MoCuZ+5zlGoPQBBXPieOKx5f8lfuzIdtM=; b=Zy/KmYrzLcgX5ftW0RzlJz81vleMHfXCA1SSydofHnnamKwJtwNAl4pv cKuGpg+Ytu7RWh0lWqc6WCPj4LcgP5KK4VFAPaopK0UBf5v32+EJ7Yr8C zQC6RmXtqNRNAerwOlKpwjD9pHPOMXwEL0KS4IL0sH5tI1Y1aFIE7o7Kp bt2m61ctLAb6avxT4azzIofYhAX9VDtIxEsbJ1eX3aJBT4gNh7xqT5uCi GdHsJerThH/k9dvJW4TYqH8uwnIm1qH29Y/kZuU1/i2jVVQ8BoQsctY8y LlOrelOAe+3laagu3aEYJLwxEPEWufb8NW+EM64uDTjaBBvQfyoT6MA4Y A==; IronPort-SDR: i+Ow6Ye+6KtA6WDXjbnpdWfjmv1xz9AU/D0Q96KTy4uK10t68iNn/0SjH56itQ/f7lYOmG71vL wmlYdNZ7CE2PTkjwhfSu3CO4kkL/G01rrFklzWjgom22lRIMB/v1VsFafsf+4SYCe1zNp2qH0l 539zZaaGKJDgdoq0a37co5tQyNhpoIt2OPBucAWSMkBnHAVQAf7S6JvdIbdy4LRoORb5uWJDCk W3BH9DLQCXfzB2KjPgn+wSW4652xwUkZiu1QF3CkDQE5UO0GVgsqXWwbmGxZxu7wldz6/2TzrC /Q4= X-IronPort-AV: E=Sophos;i="5.77,475,1596524400"; d="scan'208";a="98340472" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 13 Nov 2020 08:21:32 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Fri, 13 Nov 2020 08:21:31 -0700 Received: from m18063-ThinkPad-T460p.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Fri, 13 Nov 2020 08:21:27 -0700 From: Claudiu Beznea To: , Subject: [PATCH v3 3/6] regulator: mcp16502: add linear_min_sel Date: Fri, 13 Nov 2020 17:21:07 +0200 Message-ID: <1605280870-32432-4-git-send-email-claudiu.beznea@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> References: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201113_102132_479752_48E367E3 X-CRM114-Status: GOOD ( 11.64 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: axel.lin@ingics.com, s.hauer@pengutronix.de, linux-kernel@vger.kernel.org, Claudiu Beznea , ttynkkynen@nvidia.com, linus.walleij@linaro.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Selectors b/w zero and VDD_LOW_SEL are not valid. Use linear_min_sel. Fixes: 919261c03e7ca ("regulator: mcp16502: add regulator driver for MCP16502") Signed-off-by: Claudiu Beznea --- drivers/regulator/mcp16502.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/regulator/mcp16502.c b/drivers/regulator/mcp16502.c index 6d0ad74935b3..ab78f831f5bf 100644 --- a/drivers/regulator/mcp16502.c +++ b/drivers/regulator/mcp16502.c @@ -93,6 +93,7 @@ static unsigned int mcp16502_of_map_mode(unsigned int mode) .owner = THIS_MODULE, \ .n_voltages = MCP16502_VSEL + 1, \ .linear_ranges = _ranges, \ + .linear_min_sel = VDD_LOW_SEL, \ .n_linear_ranges = ARRAY_SIZE(_ranges), \ .of_match = of_match_ptr(_name), \ .of_map_mode = mcp16502_of_map_mode, \ From patchwork Fri Nov 13 15:21:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Claudiu Beznea X-Patchwork-Id: 11903935 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2ECD7C388F7 for ; Fri, 13 Nov 2020 15:22:33 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4493022249 for ; Fri, 13 Nov 2020 15:22:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="d6r5233E"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="K4uI6UW0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4493022249 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=z7PGBeYo4TtcH8zl1CoeHYX/hlds4a/a19gB9REiDno=; b=d6r5233EAaT1pJNvjp2mZ3xZW e41vLfF6alL+0TzEM1YEd4JDPwJVn4SoMKvAzpVnnBp49hYNciXpXLxYTuq/cchXnD3lCWAdFfgJM BBXPAH8njmKzK1zJq8rwRTRVUQplOZVvbDf0xin1UV5gyRYWBxsZgI3MK6gCiZHywQZSbTnd4+82u MsQzLy1RBlIszAqwk45+Bx9hkw/qJ3JnEkRm1iB9TgvL/lTFaXB6DlfUoOCP+hW8X2tRS3Mh3Q86H +sBoMrCn17bWqVTNdRE74y24GGyamey2U4wEw1xroBNdQsXzAHMXcis5ItaemhR/CmLhaHuP3SEz3 sZbyq7mLw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdatp-0001er-Ji; Fri, 13 Nov 2020 15:22:05 +0000 Received: from esa4.microchip.iphmx.com ([68.232.154.123]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdatN-0001Us-D4 for linux-arm-kernel@lists.infradead.org; Fri, 13 Nov 2020 15:21:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1605280897; x=1636816897; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=n+2kDWPFZI5Ji0zVR0elRY7r1xjxPZHctLTadiVY/zQ=; b=K4uI6UW0N0061ymi7MOZxuzVIt5E/smjuIBYDfMyTtoGisPGfla4xXmr WQWLa9nMkBLJX1qZv8rgxTRgo4GQFciNrR1ycEEniYkm42Q636MRKlq/o sJKBgb32JcLv3uiaD/AQn9xne9gtc7rDBa05txhDXmpKYsUlyyvg6BW1w tFbLrlF8XjuhAz87wyXFRbjr53koi7ydDZTpOiVvpkXszt3nDmqCpEvPx zcmUfTTHbNFEmITBtqLFmE3IbFiK8YNSYalawo1xM3qtQhrIyrhxAnPfV Z7JpmPqoL6f0C4nXLsenCiKJp7A5w9hOHbaf8ZAE5eE9Ouu+BN6vebtSo w==; IronPort-SDR: uBwrt2a72qwOWA5p6DoPq1jBB/iwK7tXUKUnTsXPIgylWfwyQyzJJb71L1M3tcrpnErOeCp1v7 kCQtDRSCEw+xuwiftvG5k6ehHauBDPN25ErCoo+ovzqTfRf2f6lKand0pDLTfGDMAzgF01WLKt aZLpQ8s5RWVAMyJoPTVzgZxF8Q0uBIXP+bVLNX6zpr8jI9CmFkEJaW63JQpfLsLc3PHtRBzapv 3d6JJy5ia0h3cODlwdyWmS8AUugcWG8z6IVs474pBZQg9z7BF3ntkGrV6k/PUI9NOiQ9UkqTqg YtI= X-IronPort-AV: E=Sophos;i="5.77,475,1596524400"; d="scan'208";a="93552136" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 13 Nov 2020 08:21:36 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Fri, 13 Nov 2020 08:21:35 -0700 Received: from m18063-ThinkPad-T460p.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Fri, 13 Nov 2020 08:21:32 -0700 From: Claudiu Beznea To: , Subject: [PATCH v3 4/6] regulator: mcp16502: adapt for get/set on other registers Date: Fri, 13 Nov 2020 17:21:08 +0200 Message-ID: <1605280870-32432-5-git-send-email-claudiu.beznea@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> References: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201113_102137_649297_75179D66 X-CRM114-Status: GOOD ( 13.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: axel.lin@ingics.com, s.hauer@pengutronix.de, linux-kernel@vger.kernel.org, Claudiu Beznea , ttynkkynen@nvidia.com, linus.walleij@linaro.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org MCP16502 have multiple registers for each regulator (as described in enum mcp16502_reg). Adapt the code to be able to get/set all these registers. This is necessary for the following commits. Signed-off-by: Claudiu Beznea --- drivers/regulator/mcp16502.c | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/drivers/regulator/mcp16502.c b/drivers/regulator/mcp16502.c index ab78f831f5bf..48eb64bc4018 100644 --- a/drivers/regulator/mcp16502.c +++ b/drivers/regulator/mcp16502.c @@ -54,13 +54,9 @@ * This function is useful for iterating over all regulators and accessing their * registers in a generic way or accessing a regulator device by its id. */ -#define MCP16502_BASE(i) (((i) + 1) << 4) +#define MCP16502_REG_BASE(i, r) ((((i) + 1) << 4) + MCP16502_REG_##r) #define MCP16502_STAT_BASE(i) ((i) + 5) -#define MCP16502_OFFSET_MODE_A 0 -#define MCP16502_OFFSET_MODE_LPM 1 -#define MCP16502_OFFSET_MODE_HIB 2 - #define MCP16502_OPMODE_ACTIVE REGULATOR_MODE_NORMAL #define MCP16502_OPMODE_LPM REGULATOR_MODE_IDLE #define MCP16502_OPMODE_HIB REGULATOR_MODE_STANDBY @@ -75,6 +71,23 @@ #define MCP16502_MIN_REG 0x0 #define MCP16502_MAX_REG 0x65 +/** + * enum mcp16502_reg - MCP16502 regulators's registers + * @MCP16502_REG_A: active state register + * @MCP16502_REG_LPM: low power mode state register + * @MCP16502_REG_HIB: hibernate state register + * @MCP16502_REG_SEQ: startup sequence register + * @MCP16502_REG_CFG: configuration register + */ +enum mcp16502_reg { + MCP16502_REG_A, + MCP16502_REG_LPM, + MCP16502_REG_HIB, + MCP16502_REG_HPM, + MCP16502_REG_SEQ, + MCP16502_REG_CFG, +}; + static unsigned int mcp16502_of_map_mode(unsigned int mode) { if (mode == REGULATOR_MODE_NORMAL || mode == REGULATOR_MODE_IDLE) @@ -144,22 +157,20 @@ static void mcp16502_gpio_set_mode(struct mcp16502 *mcp, int mode) } /* - * mcp16502_get_reg() - get the PMIC's configuration register for opmode + * mcp16502_get_reg() - get the PMIC's state configuration register for opmode * * @rdev: the regulator whose register we are searching * @opmode: the PMIC's operating mode ACTIVE, Low-power, Hibernate */ -static int mcp16502_get_reg(struct regulator_dev *rdev, int opmode) +static int mcp16502_get_state_reg(struct regulator_dev *rdev, int opmode) { - int reg = MCP16502_BASE(rdev_get_id(rdev)); - switch (opmode) { case MCP16502_OPMODE_ACTIVE: - return reg + MCP16502_OFFSET_MODE_A; + return MCP16502_REG_BASE(rdev_get_id(rdev), A); case MCP16502_OPMODE_LPM: - return reg + MCP16502_OFFSET_MODE_LPM; + return MCP16502_REG_BASE(rdev_get_id(rdev), LPM); case MCP16502_OPMODE_HIB: - return reg + MCP16502_OFFSET_MODE_HIB; + return MCP16502_REG_BASE(rdev_get_id(rdev), HIB); default: return -EINVAL; } @@ -179,7 +190,7 @@ static unsigned int mcp16502_get_mode(struct regulator_dev *rdev) unsigned int val; int ret, reg; - reg = mcp16502_get_reg(rdev, MCP16502_OPMODE_ACTIVE); + reg = mcp16502_get_state_reg(rdev, MCP16502_OPMODE_ACTIVE); if (reg < 0) return reg; @@ -210,7 +221,7 @@ static int _mcp16502_set_mode(struct regulator_dev *rdev, unsigned int mode, int val; int reg; - reg = mcp16502_get_reg(rdev, op_mode); + reg = mcp16502_get_state_reg(rdev, op_mode); if (reg < 0) return reg; @@ -269,10 +280,10 @@ static int mcp16502_suspend_get_target_reg(struct regulator_dev *rdev) { switch (pm_suspend_target_state) { case PM_SUSPEND_STANDBY: - return mcp16502_get_reg(rdev, MCP16502_OPMODE_LPM); + return mcp16502_get_state_reg(rdev, MCP16502_OPMODE_LPM); case PM_SUSPEND_ON: case PM_SUSPEND_MEM: - return mcp16502_get_reg(rdev, MCP16502_OPMODE_HIB); + return mcp16502_get_state_reg(rdev, MCP16502_OPMODE_HIB); default: dev_err(&rdev->dev, "invalid suspend target: %d\n", pm_suspend_target_state); From patchwork Fri Nov 13 15:21:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Claudiu Beznea X-Patchwork-Id: 11903941 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5FCCC388F7 for ; Fri, 13 Nov 2020 15:23:28 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E3D3422261 for ; Fri, 13 Nov 2020 15:23:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="KhFbME4R"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="Fhx0679B" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E3D3422261 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=HjcJx6EU92XFGmb50DNXkJoxrUNRV+/zqwWl36RAPJg=; b=KhFbME4RZKDPkAT1MklyciR9K QjFCYoy0D4U9Id+bQsSSACqkmNyrXjyCe411uL4fjqb8S4I2idu3Xc1UpJK4SFcfapSwpNyaiEWbN ch8FBLMMWl9zvnBLEgFRCMIIUuUYyJQETzn1w9l4jBPw2W6lzIZ1b12fG1rw+R6opfUzcyHETbhKH CzjehGI9lbI8no6WT3cGnwWzcHaEO446AXpTv8O4G9OJrj8qAhULQZYvBhdiGkY0MolbwNyKwaah9 Nduj8HvNAtMkTnhLS7F+6SMK6wjkwguHD5d0Mw7KJ3w3ZCrDGEsL7AObk3nX3ofy+87cuQrPOzL75 LVKQWk1Zw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdats-0001ho-Pt; Fri, 13 Nov 2020 15:22:08 +0000 Received: from esa2.microchip.iphmx.com ([68.232.149.84]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdatQ-0001Wa-Tm for linux-arm-kernel@lists.infradead.org; Fri, 13 Nov 2020 15:21:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1605280900; x=1636816900; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=gHTGJxT/Hd2GGsGVFZ5ukn7Hbstro+OxdfGBisfdTfE=; b=Fhx0679BTt/qrT5RjsHCGaboDg3ngslkjR3eXM7ELcBjICFW2CDhLpd2 CjSQI5Re+V/y5+YATB0wpe3+5oJ/wPCcFXywVMCiINipZq3qqhY6dSjrw 4HB4z4ts2dk5K52g49wvQcDOTlulsdSVFj4D3/CM8MZsdufTNQ9+uergy IL3Al/Zr/2HLa7LXYCH/sE95NKQ+HstnsNMB0RXDyVScRHn9+yJAceykF +7kqgw1g7e8LFf/r1Xz7S8AtvbrNDYdRLXCmkaQpixB7rhVEN68zTNiLl 6Xx8nXCMyjWy3rz7WR4GD+WaTSrUqRtTXIez6AEY4jU+z9j5r0EcCe7NO w==; IronPort-SDR: EYR8ww1Ov49NKPhNdDAJL9wVCiATrWf7A0W5ylrD1lzSGq+CrZDlQ8q54awtK9gU27/ZV49tV2 +GyCl4wSA4tEdamuMWDYTzLs25qRNM6TBf9FE/3CmYShYL5rvSIURfMVd9LaxQWWdtBKC0mArf GWROxY/H4ADBkjTfDKbR/6yTIAbBUHowGerqX+2DbEKAUmN9Y8jxgmekcGdYjmTXCTRVuvbmm7 0iYGlujn2pqStRcagaxzrKqiowPvgCXDEh1IuVpetAt8z4DCPysMBJ8zb/YX2OOngUI1cMyT3B KhQ= X-IronPort-AV: E=Sophos;i="5.77,475,1596524400"; d="scan'208";a="96238169" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 13 Nov 2020 08:21:39 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Fri, 13 Nov 2020 08:21:39 -0700 Received: from m18063-ThinkPad-T460p.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Fri, 13 Nov 2020 08:21:35 -0700 From: Claudiu Beznea To: , Subject: [PATCH v3 5/6] regulator: mcp16502: add support for ramp delay Date: Fri, 13 Nov 2020 17:21:09 +0200 Message-ID: <1605280870-32432-6-git-send-email-claudiu.beznea@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> References: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201113_102141_203476_D685B1DF X-CRM114-Status: GOOD ( 17.74 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: axel.lin@ingics.com, s.hauer@pengutronix.de, linux-kernel@vger.kernel.org, Claudiu Beznea , ttynkkynen@nvidia.com, linus.walleij@linaro.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org MCP16502 have configurable ramp delay support (via DVSR bits in regulators' CFG register). Signed-off-by: Claudiu Beznea --- drivers/regulator/mcp16502.c | 89 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/drivers/regulator/mcp16502.c b/drivers/regulator/mcp16502.c index 48eb64bc4018..f81afeeddb19 100644 --- a/drivers/regulator/mcp16502.c +++ b/drivers/regulator/mcp16502.c @@ -22,8 +22,9 @@ #define VDD_LOW_SEL 0x0D #define VDD_HIGH_SEL 0x3F -#define MCP16502_FLT BIT(7) -#define MCP16502_ENS BIT(0) +#define MCP16502_FLT BIT(7) +#define MCP16502_DVSR GENMASK(3, 2) +#define MCP16502_ENS BIT(0) /* * The PMIC has four sets of registers corresponding to four power modes: @@ -88,6 +89,12 @@ enum mcp16502_reg { MCP16502_REG_CFG, }; +/* Ramp delay (uV/us) for buck1, ldo1, ldo2. */ +static const int mcp16502_ramp_b1l12[] = { 6250, 3125, 2083, 1563 }; + +/* Ramp delay (uV/us) for buck2, buck3, buck4. */ +static const int mcp16502_ramp_b234[] = { 3125, 1563, 1042, 781 }; + static unsigned int mcp16502_of_map_mode(unsigned int mode) { if (mode == REGULATOR_MODE_NORMAL || mode == REGULATOR_MODE_IDLE) @@ -271,6 +278,80 @@ static int mcp16502_get_status(struct regulator_dev *rdev) return REGULATOR_STATUS_UNDEFINED; } +static int mcp16502_set_voltage_time_sel(struct regulator_dev *rdev, + unsigned int old_sel, + unsigned int new_sel) +{ + static const u8 us_ramp[] = { 8, 16, 24, 32 }; + int id = rdev_get_id(rdev); + unsigned int uV_delta, val; + int ret; + + ret = regmap_read(rdev->regmap, MCP16502_REG_BASE(id, CFG), &val); + if (ret) + return ret; + + val = (val & MCP16502_DVSR) >> 2; + uV_delta = abs(new_sel * rdev->desc->linear_ranges->step - + old_sel * rdev->desc->linear_ranges->step); + switch (id) { + case BUCK1: + case LDO1: + case LDO2: + ret = DIV_ROUND_CLOSEST(uV_delta * us_ramp[val], + mcp16502_ramp_b1l12[val]); + break; + + case BUCK2: + case BUCK3: + case BUCK4: + ret = DIV_ROUND_CLOSEST(uV_delta * us_ramp[val], + mcp16502_ramp_b234[val]); + break; + + default: + return -EINVAL; + } + + return ret; +} + +static int mcp16502_set_ramp_delay(struct regulator_dev *rdev, int ramp_delay) +{ + const int *ramp; + int id = rdev_get_id(rdev); + unsigned int i, size; + + switch (id) { + case BUCK1: + case LDO1: + case LDO2: + ramp = mcp16502_ramp_b1l12; + size = ARRAY_SIZE(mcp16502_ramp_b1l12); + break; + + case BUCK2: + case BUCK3: + case BUCK4: + ramp = mcp16502_ramp_b234; + size = ARRAY_SIZE(mcp16502_ramp_b234); + break; + + default: + return -EINVAL; + } + + for (i = 0; i < size; i++) { + if (ramp[i] == ramp_delay) + break; + } + if (i == size) + return -EINVAL; + + return regmap_update_bits(rdev->regmap, MCP16502_REG_BASE(id, CFG), + MCP16502_DVSR, (i << 2)); +} + #ifdef CONFIG_SUSPEND /* * mcp16502_suspend_get_target_reg() - get the reg of the target suspend PMIC @@ -365,6 +446,8 @@ static const struct regulator_ops mcp16502_buck_ops = { .disable = regulator_disable_regmap, .is_enabled = regulator_is_enabled_regmap, .get_status = mcp16502_get_status, + .set_voltage_time_sel = mcp16502_set_voltage_time_sel, + .set_ramp_delay = mcp16502_set_ramp_delay, .set_mode = mcp16502_set_mode, .get_mode = mcp16502_get_mode, @@ -389,6 +472,8 @@ static const struct regulator_ops mcp16502_ldo_ops = { .disable = regulator_disable_regmap, .is_enabled = regulator_is_enabled_regmap, .get_status = mcp16502_get_status, + .set_voltage_time_sel = mcp16502_set_voltage_time_sel, + .set_ramp_delay = mcp16502_set_ramp_delay, #ifdef CONFIG_SUSPEND .set_suspend_voltage = mcp16502_set_suspend_voltage, From patchwork Fri Nov 13 15:21:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Claudiu Beznea X-Patchwork-Id: 11903937 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4F16CC388F7 for ; Fri, 13 Nov 2020 15:22:38 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 08B8C22249 for ; Fri, 13 Nov 2020 15:22:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="blxvCmKw"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="ZlR8Hyxi" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 08B8C22249 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=JvaicMIAGW5paaKeQUVjM8MIhKMIchrZJ9Cf3QNH2xU=; b=blxvCmKwbAI9/7Z1V0DRasm2H pnpjqD3JyYCUmTiavnJBOvwiDmgRZo33p0SGJjmANSPtVwvbJW349dBNqJ0B6Yub2l35+h4iVRhtE cdy9m6efoNHpoq4GTEjQm3mh2e0DVRt6bGeTEYjyqKbebq+2GwWaTfGDFj8+kRFt5+fs//uIKjk5e dNfjPTj9zJ3v0D1ZLf3aIOk8+9dPr1UYrSL7h7Gg38SY/X04jXw/LEu5eBXbM+piseNG9ZXXl6aaQ ZqgjKuuFNdh0rXLC1EXDc5q91UBD455g1x47r4t8eUt8kFP1AT3OSTUYtI8iOZMxR3NdT9z4C70Su DSs7/XJDg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdaty-0001kX-Gk; Fri, 13 Nov 2020 15:22:14 +0000 Received: from esa4.microchip.iphmx.com ([68.232.154.123]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kdatV-0001YY-9H for linux-arm-kernel@lists.infradead.org; Fri, 13 Nov 2020 15:21:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1605280905; x=1636816905; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=1NQQGaJt2PCWmF7RL3nHYGDUbhmMDmkT+F9bi77B4mM=; b=ZlR8HyxiH3RZorSEPoNE0436JCZ9u6smx5aK5Sw1oRg9DOUoL9VULMz6 wkZPA3Enwxh3FXvkZL+P5rckpjd+XI96e4IMh3TsIda+4JAhLNQZMBPuW uZ+vzzufIYAylwlcyoGHJ7Yq/7WhiG9f3iZjw6L6paV3fQjCyA2TdmrTc C1WVuQH1LH40M0ag1G4At77p3oOzEbBXCIf4+np4ZPikFKp8NTgrstZdf 0cHe0jOBq0cPR/nkaXUl0UEXfH+kOUjA/HEbl67Qda0OiEHiXDQL8+TDH yCPonCHET4IlC2FkTckVBYN+LhnXCMpjknfdQtGaNALdYIUj9ph6s5ema w==; IronPort-SDR: vtWst5nzQZfqRnW//XgMxw5WxPI9/ObxgzDBAULLNPhdk9K79X9QJ8yJXfM9HWC152j13JM/WJ vl10EZQjQuOT8kEPkS1LCMPdxTDSHaz9guQQag3F51EvUzN6NRn42sVEyYuUqJmm87HSW4duOd AgZnwFdTlzGXiJ84fAsSWhQDipcpqFNsfE1LpdYu8oDsk+HR4ZSv5GDS476jEfn8pHBeoX4ato bK70pNIh+ab9PMR8e6lSochmvZ85F8LiXN2AhojjP5UQUV1sG9sfu0QW0FT8gWrL7R5bxeBkGW GDA= X-IronPort-AV: E=Sophos;i="5.77,475,1596524400"; d="scan'208";a="93552156" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 13 Nov 2020 08:21:44 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Fri, 13 Nov 2020 08:21:44 -0700 Received: from m18063-ThinkPad-T460p.microchip.com (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Fri, 13 Nov 2020 08:21:39 -0700 From: Claudiu Beznea To: , Subject: [PATCH v3 6/6] regulator: mcp16502: remove void documentation of struct mcp16502 Date: Fri, 13 Nov 2020 17:21:10 +0200 Message-ID: <1605280870-32432-7-git-send-email-claudiu.beznea@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> References: <1605280870-32432-1-git-send-email-claudiu.beznea@microchip.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201113_102145_556654_D6A5E98A X-CRM114-Status: UNSURE ( 9.86 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: axel.lin@ingics.com, s.hauer@pengutronix.de, linux-kernel@vger.kernel.org, Claudiu Beznea , ttynkkynen@nvidia.com, linus.walleij@linaro.org, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org struct mcp16502 has no members called rdev or rmap. Remove the documentation. Signed-off-by: Claudiu Beznea --- drivers/regulator/mcp16502.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/regulator/mcp16502.c b/drivers/regulator/mcp16502.c index f81afeeddb19..74ad92dc664a 100644 --- a/drivers/regulator/mcp16502.c +++ b/drivers/regulator/mcp16502.c @@ -135,8 +135,6 @@ enum { /* * struct mcp16502 - PMIC representation - * @rdev: the regulators belonging to this chip - * @rmap: regmap to be used for I2C communication * @lpm: LPM GPIO descriptor */ struct mcp16502 {