Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp2470509imm; Mon, 16 Jul 2018 08:32:38 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdI7LqpcsFfnaNys+KfSMchwzGpnL5fbLp3NuiFHmRwkAlmWQTInn/gGcA6CdzrCj1VaHRa X-Received: by 2002:a63:1c13:: with SMTP id c19-v6mr15952677pgc.332.1531755158406; Mon, 16 Jul 2018 08:32:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531755158; cv=none; d=google.com; s=arc-20160816; b=XKQAEvY3Ygbk9KctUUyG9L/AsUg+y/nWYI/R8KZHaINgB934lKZLmSZUIiMfqeZHfK mw0zhJAecB8Sy8vtBXkDOZpQqBL1wXHAJE7hk0iqzULG/lJSflypeiOM3vSQpTnEBn6S YpMdrjkxK58XihsQVruY6iKIdarMrKL2FqPTwgbIqkIn1C3ahlNA8HdJNunhcL99rSOK 6K+Zcm6H2m7cEOFKo+jzPTAWA4Hh0oB55s7cnp3jMSNP/BM1+wsyBk16zOSPNuiunojx LgbiQTNQXQ1awUCZ6T7I+FzUPAgS2v97QwcwnwBnTBn3VxfYWUNEuMfFC6VHAzqHvhpZ C6rg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=m7mg5k+lMvNNPCgX+cWFhk4LhB9fBkihdsARbey2RcI=; b=hjRXY5OzzhvPjOLVkaBr80zpox6tKeOWL1/lJvD8WsdsV3S38XqkWcMK2uaGqkHUYd 7Coayb7gKD7crfrYT5GjWGvpp96a2LXogdeO6ZbrNu/1gwmAnbm1M3GCSDdHkawc2IjW WAZBF9rLNa/r88VGf96oR2N0IrJPksFAqIQkXfBgNRucFVEmxvRBlWw2lqjm7P8h45Ug hrK8xQqywQQS2LJMj6jUTgMOR9WFki5NwbBK9JkQRMqZyGTZcJpPqLm1Fqp1/WzTBvKp ZMabA9+nFJz4Jl+6NKFWUb7LPb193lyoNWepZtbHoo5MFJ6sxhYz8rbbTy2GdlCFWUKT 2eLA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s7-v6si21402215pfb.16.2018.07.16.08.32.22; Mon, 16 Jul 2018 08:32:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730897AbeGPP7F (ORCPT + 99 others); Mon, 16 Jul 2018 11:59:05 -0400 Received: from albert.telenet-ops.be ([195.130.137.90]:57694 "EHLO albert.telenet-ops.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728417AbeGPP6w (ORCPT ); Mon, 16 Jul 2018 11:58:52 -0400 Received: from ramsan.of.borg ([84.194.111.163]) by albert.telenet-ops.be with bizsmtp id BTWu1y0063XaVaC06TWu0C; Mon, 16 Jul 2018 17:30:54 +0200 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.86_2) (envelope-from ) id 1ff5Sg-0007Mt-3X; Mon, 16 Jul 2018 17:30:54 +0200 Received: from geert by rox.of.borg with local (Exim 4.90_1) (envelope-from ) id 1ff5Sg-0000UM-2K; Mon, 16 Jul 2018 17:30:54 +0200 From: Geert Uytterhoeven To: Marek Vasut , Liam Girdwood , Mark Brown Cc: "Rafael J . Wysocki" , Pavel Machek , Len Brown , linux-pm@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH v4 2/3] regulator: bd9571mwv: Add support for toggle power switches Date: Mon, 16 Jul 2018 17:30:51 +0200 Message-Id: <20180716153052.1830-3-geert+renesas@glider.be> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180716153052.1830-1-geert+renesas@glider.be> References: <20180716153052.1830-1-geert+renesas@glider.be> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Extend the existing support for backup mode to toggle power switches. With a toggle power switch (or level signal), the following steps must be followed exactly: 1. Configure PMIC for backup mode, to change the role of the accessory power switch from a power switch to a wake-up switch, 2. Switch accessory power switch off, to prepare for system suspend, which is a manual step not controlled by software, 3. Suspend system, 4. Switch accessory power switch on, to resume the system. Hence the PMIC is configured for backup mode when "on" or "1" is written to the PMIC's "backup_mode" virtual file in sysfs. Conversely, writing "off" or "0" reverts the role of the accessory switch to a power switch. Unlike with momentary switches, backup mode is not enabled by default, as enabling it prevents the board from being powered off using the power switch, which may confuse the user. Signed-off-by: Geert Uytterhoeven --- v4: - Improve patch description and comment, v3: - Replace use of "wake_up" sysfs file and extra callback for wake-up change notification by custom "backup_mode" sysfs file, v2: - Improve patch description, - Drop "return;" at end of function. --- drivers/regulator/bd9571mwv-regulator.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/regulator/bd9571mwv-regulator.c b/drivers/regulator/bd9571mwv-regulator.c index 1da36a6590c84ba4..c44613b9423baf07 100644 --- a/drivers/regulator/bd9571mwv-regulator.c +++ b/drivers/regulator/bd9571mwv-regulator.c @@ -185,6 +185,7 @@ static ssize_t backup_mode_store(struct device *dev, const char *buf, size_t count) { struct bd9571mwv_reg *bdreg = dev_get_drvdata(dev); + unsigned int mode; int ret; if (!count) @@ -194,6 +195,25 @@ static ssize_t backup_mode_store(struct device *dev, if (ret) return ret; + if (!bdreg->rstbmode_level) + return count; + + /* + * Configure DDR Backup Mode, to change the role of the accessory power + * switch from a power switch to a wake-up switch, or vice versa + */ + ret = bd9571mwv_bkup_mode_read(bdreg->bd, &mode); + if (ret) + return ret; + + mode &= ~BD9571MWV_BKUP_MODE_CNT_KEEPON_MASK; + if (bdreg->bkup_mode_enabled) + mode |= bdreg->bkup_mode_cnt_keepon; + + ret = bd9571mwv_bkup_mode_write(bdreg->bd, mode); + if (ret) + return ret; + return count; } -- 2.17.1