Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp470237imm; Wed, 18 Jul 2018 05:30:52 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfZDOZoEJyP+aVJYpY2COtqgfxJgRz6bAwK9rSKiq4Rb8r9BB88YUni4pxvmWEUANhitwDW X-Received: by 2002:a17:902:9681:: with SMTP id n1-v6mr5927901plp.244.1531917052200; Wed, 18 Jul 2018 05:30:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531917052; cv=none; d=google.com; s=arc-20160816; b=EwhBOjukJdGRhTBb9rl2i5z46dPSXoVEtxA0DQFc0sRxVfSB2YM9l2XDcsmrzKbKzc g1biROY7Dk/oh4iXKZmxIHtPHUbKGoUH3prclvT9Cb92hLnig6+1AxIouM55SLNgzkrg 4pEOig6hoPW60Qji2WIBt5qvXdxzQQDU2Xb6CrYxIkwZ2sp1mUExKGeJCKlRL277rM8+ +JLCnlMpmcIL/GD5l56dnp+0iNgvp28fPfOsjX3+agZ/VvqxrB0c0ZtsbiGa3NqEmWpN I13870+hK5/R3kCC5pCinr4HAYXNsiLfcf3I8jlMiBCZWN3epfJhtHI+qMjaTsm2Ewh4 yhgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:message-id:in-reply-to:subject:cc:to :from:dkim-signature:arc-authentication-results; bh=BFnTZsNqDIKgM3dlXsiu2Br71pmkOstQ2EnEiy+j3KE=; b=gjQ8JCQPuv9GgZ1bXqNWlMruwQkB5ZCAHPTtujvsWXH9vbWIG2b38oqPYayZ3gR9F3 mWlApkQs+ayYMI6EAvHBCby3e7Wx0CMNYlQGQ4N7EKr17Q0qHk3AQrLZgGfgcdc3go65 DLuLnv6tNnwOZU13Rp2U/MAKXjdBp/ncTnh4s/Nz3Py3EHG07lzy179bsHy0QCHtjPK/ Nv6iH0SIx4BSjPliziMqnsM72dp2x1poaEKV8kosUf93W/zR4inMP4d0gXzVPB0iIzCG PkmMxOHq6+2S0ZFXIABMXv1b68fe0tbBhmKirM6SZNt4sBtMWXBBilWrKfin7fhwDwt/ oMWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=nLJ91NaZ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w188-v6si3317753pfw.307.2018.07.18.05.30.36; Wed, 18 Jul 2018 05:30:52 -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; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=nLJ91NaZ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731481AbeGRNHg (ORCPT + 99 others); Wed, 18 Jul 2018 09:07:36 -0400 Received: from heliosphere.sirena.org.uk ([172.104.155.198]:50808 "EHLO heliosphere.sirena.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730451AbeGRNHf (ORCPT ); Wed, 18 Jul 2018 09:07:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sirena.org.uk; s=20170815-heliosphere; h=Date:Message-Id:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References: List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner: List-Archive; bh=BFnTZsNqDIKgM3dlXsiu2Br71pmkOstQ2EnEiy+j3KE=; b=nLJ91NaZ4byG fQVU5oQ6icSk3zT3r4MApnzyWAaT5LtCA+m5QptRKkdsjy+LN9XB3+Jb4bKEdiaqYK5B0gsMlCgAb QwVL3lmslO2zi7x1eluxkzKq/3bIB6oUntSqYyrihsJD8jv3o3nGASq43cEQ1Cr5GKKwtev2BbLQR b66Y0=; Received: from debutante.sirena.org.uk ([2001:470:1f1d:6b5::3] helo=debutante) by heliosphere.sirena.org.uk with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1fflaR-0003WT-V2; Wed, 18 Jul 2018 12:29:44 +0000 Received: from broonie by debutante with local (Exim 4.91) (envelope-from ) id 1fflaR-0007Uu-G7; Wed, 18 Jul 2018 13:29:43 +0100 From: Mark Brown To: Geert Uytterhoeven Cc: Mark Brown , Marek Vasut , Liam Girdwood , Mark Brown , "Rafael J . Wysocki" , Pavel Machek , Len Brown , linux-pm@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Applied "regulator: bd9571mwv: Use "backup_mode" sysfs file instead of "wake_up"" to the regulator tree In-Reply-To: <20180716153052.1830-2-geert+renesas@glider.be> Message-Id: Date: Wed, 18 Jul 2018 13:29:43 +0100 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The patch regulator: bd9571mwv: Use "backup_mode" sysfs file instead of "wake_up" has been applied to the regulator tree at https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark From 02b3a073c12edc8cbc18e07e8880a32e78c1aee0 Mon Sep 17 00:00:00 2001 From: Geert Uytterhoeven Date: Mon, 16 Jul 2018 17:30:50 +0200 Subject: [PATCH] regulator: bd9571mwv: Use "backup_mode" sysfs file instead of "wake_up" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently the BD9571MWV PMIC driver uses the standard "wake_up" sysfs file to control enablement of DDR Backup Mode. However, configuring DDR Backup Mode is not really equivalent to configuring the PMIC as a wake-up source. To avoid confusion, use a custom "backup_mode" attribute file in sysfs instead. Signed-off-by: Geert Uytterhoeven Reviewed-by: Niklas Söderlund Signed-off-by: Mark Brown --- drivers/regulator/bd9571mwv-regulator.c | 52 ++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/drivers/regulator/bd9571mwv-regulator.c b/drivers/regulator/bd9571mwv-regulator.c index be574eb444eb..1da36a6590c8 100644 --- a/drivers/regulator/bd9571mwv-regulator.c +++ b/drivers/regulator/bd9571mwv-regulator.c @@ -30,6 +30,7 @@ struct bd9571mwv_reg { /* DDR Backup Power */ u8 bkup_mode_cnt_keepon; /* from "rohm,ddr-backup-power" */ u8 bkup_mode_cnt_saved; + bool bkup_mode_enabled; /* Power switch type */ bool rstbmode_level; @@ -171,13 +172,40 @@ static int bd9571mwv_bkup_mode_write(struct bd9571mwv *bd, unsigned int mode) return 0; } +static ssize_t backup_mode_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct bd9571mwv_reg *bdreg = dev_get_drvdata(dev); + + return sprintf(buf, "%s\n", bdreg->bkup_mode_enabled ? "on" : "off"); +} + +static ssize_t backup_mode_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct bd9571mwv_reg *bdreg = dev_get_drvdata(dev); + int ret; + + if (!count) + return 0; + + ret = kstrtobool(buf, &bdreg->bkup_mode_enabled); + if (ret) + return ret; + + return count; +} + +DEVICE_ATTR_RW(backup_mode); + static int bd9571mwv_suspend(struct device *dev) { struct bd9571mwv_reg *bdreg = dev_get_drvdata(dev); unsigned int mode; int ret; - if (!device_may_wakeup(dev)) + if (!bdreg->bkup_mode_enabled) return 0; /* Save DDR Backup Mode */ @@ -204,7 +232,7 @@ static int bd9571mwv_resume(struct device *dev) { struct bd9571mwv_reg *bdreg = dev_get_drvdata(dev); - if (!device_may_wakeup(dev)) + if (!bdreg->bkup_mode_enabled) return 0; /* Restore DDR Backup Mode */ @@ -215,9 +243,15 @@ static const struct dev_pm_ops bd9571mwv_pm = { SET_SYSTEM_SLEEP_PM_OPS(bd9571mwv_suspend, bd9571mwv_resume) }; +static int bd9571mwv_regulator_remove(struct platform_device *pdev) +{ + device_remove_file(&pdev->dev, &dev_attr_backup_mode); + return 0; +} #define DEV_PM_OPS &bd9571mwv_pm #else #define DEV_PM_OPS NULL +#define bd9571mwv_regulator_remove NULL #endif /* CONFIG_PM_SLEEP */ static int bd9571mwv_regulator_probe(struct platform_device *pdev) @@ -270,14 +304,21 @@ static int bd9571mwv_regulator_probe(struct platform_device *pdev) return -EINVAL; } +#ifdef CONFIG_PM_SLEEP if (bdreg->bkup_mode_cnt_keepon) { - device_set_wakeup_capable(&pdev->dev, true); + int ret; + /* - * Wakeup is enabled by default in pulse mode, but needs + * Backup mode is enabled by default in pulse mode, but needs * explicit user setup in level mode. */ - device_set_wakeup_enable(&pdev->dev, bdreg->rstbmode_pulse); + bdreg->bkup_mode_enabled = bdreg->rstbmode_pulse; + + ret = device_create_file(&pdev->dev, &dev_attr_backup_mode); + if (ret) + return ret; } +#endif /* CONFIG_PM_SLEEP */ return 0; } @@ -294,6 +335,7 @@ static struct platform_driver bd9571mwv_regulator_driver = { .pm = DEV_PM_OPS, }, .probe = bd9571mwv_regulator_probe, + .remove = bd9571mwv_regulator_remove, .id_table = bd9571mwv_regulator_id_table, }; module_platform_driver(bd9571mwv_regulator_driver); -- 2.18.0