From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752680AbbJENg6 (ORCPT ); Mon, 5 Oct 2015 09:36:58 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:60477 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751795AbbJENg4 (ORCPT ); Mon, 5 Oct 2015 09:36:56 -0400 X-AuditID: cbfee61a-f79a06d000005c6f-ea-56127cf637c1 From: Bartlomiej Zolnierkiewicz To: Krzysztof Kozlowski Cc: Sangbeom Kim , Lee Jones , linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, Marek Szyprowski Subject: Re: [PATCH 3/3] mfd: sec-core: Disable buck voltage reset on watchdog falling edge Date: Mon, 05 Oct 2015 15:35:54 +0200 Message-id: <2375080.1KPJ21Fk4I@amdc1976> User-Agent: KMail/4.13.3 (Linux/3.13.0-63-generic; KDE/4.13.3; x86_64; ; ) In-reply-to: <1443774351-28766-3-git-send-email-k.kozlowski@samsung.com> References: <1443774351-28766-1-git-send-email-k.kozlowski@samsung.com> <1443774351-28766-3-git-send-email-k.kozlowski@samsung.com> MIME-version: 1.0 Content-transfer-encoding: 7Bit Content-type: text/plain; charset=us-ascii X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMLMWRmVeSWpSXmKPExsVy+t9jQd1vNUJhBu+P8ljMP3KO1eL1C0OL +1+PMlpc3jWHzWLG+X1MFmuP3GW3uLjiC5MDu8eda3vYPPq2rGL0+LxJLoA5issmJTUnsyy1 SN8ugStjxf5/rAWTFSp+nrzO2MD4RbKLkZNDQsBEorvrBguELSZx4d56NhBbSGAWo8TCjSYQ 9ldGiSfz80BsNgEriYntqxhBbBEBQ4mDu7czdTFycTALXGOUaNi9GGyQsECsxNnmz0AJDg4W AVWJCTNLQMK8ApoS3fuXgs0XFfCSeP9zLjOIzSngIfF1/lKwOUICrYwSc9fPYIZoEJT4Mfke 2ExmAXmJffunskLYWhLrdx5nmsAIdCVC2SwkZbOQlC1gZF7FKJFakFxQnJSea5iXWq5XnJhb XJqXrpecn7uJERzUz6R2MB7c5X6IUYCDUYmH90C8YJgQa2JZcWXuIUYJDmYlEV5LV6EwId6U xMqq1KL8+KLSnNTiQ4zSHCxK4rw3DjGECQmkJ5akZqemFqQWwWSZODilGhhT5wdf7W3q01M+ 2ax+cm/V/YanFaWWfl8C1Z8v895t/CdYv2ApA6ctQ5ZM2veGbC0Xsfjnsf/UYiveXLWbLFXQ 5l9ZV/Hd1OSao+ykvJcnpC4KHfw9cfaZHzlq1obKQpaLj2xh0th8VX/mUfYSAWv++oshz18c NdnE1y9mXy17qfqu4Pd33EosxRmJhlrMRcWJAGAppXBmAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Friday, October 02, 2015 05:25:51 PM Krzysztof Kozlowski wrote: > The WRSTBI bit (disabled by default but enabled by bootloader), when > set, is responsible for resetting voltages to default values of > certain bucks on falling edge of Warm Reset Input pin from AP. > > However on some boards (with S2MPS13) the pin is pulled down so any > suspend will effectively trigger the reset of bucks supplying the power > to the little and big cores. In the same time when resuming, these bucks > must provide voltage greater or equal to voltage before suspend to match > the frequency chosen by cpufreq. If voltage (default value of voltage > after reset) is lower than one set by cpufreq before suspend, then > system will hang during resuming. > > Signed-off-by: Krzysztof Kozlowski I tested this (with some additional Exynos5433 patches) and it works like expected (suspend/resume issue is fixed). Tested-by: Bartlomiej Zolnierkiewicz You could also add: Reported-by: Bartlomiej Zolnierkiewicz (since the issue got narrowed down and reported to you by me :). Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics > --- > drivers/mfd/sec-core.c | 26 ++++++++++++++++++++++++++ > include/linux/mfd/samsung/core.h | 2 ++ > include/linux/mfd/samsung/s2mps13.h | 1 + > 3 files changed, 29 insertions(+) > > diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c > index 589e5efc2d7f..2626fc0b5b8c 100644 > --- a/drivers/mfd/sec-core.c > +++ b/drivers/mfd/sec-core.c > @@ -262,6 +262,29 @@ static void sec_pmic_dump_rev(struct sec_pmic_dev *sec_pmic) > dev_dbg(sec_pmic->dev, "Revision: 0x%x\n", val); > } > > +static void sec_pmic_configure(struct sec_pmic_dev *sec_pmic) > +{ > + int err; > + > + if (sec_pmic->device_type != S2MPS13X) > + return; > + > + if (sec_pmic->pdata->disable_wrstbi) { > + /* > + * If WRSTBI pin is pulled down this feature must be disabled > + * because each Suspend to RAM will trigger buck voltage reset > + * to default values. > + */ > + err = regmap_update_bits(sec_pmic->regmap_pmic, > + S2MPS13_REG_WRSTBI, > + S2MPS13_REG_WRSTBI_MASK, 0x0); > + if (err) > + dev_warn(sec_pmic->dev, > + "Cannot initialize WRSTBI config: %d\n", > + err); > + } > +} > + > #ifdef CONFIG_OF > /* > * Only the common platform data elements for s5m8767 are parsed here from the > @@ -289,6 +312,8 @@ static struct sec_platform_data *sec_pmic_i2c_parse_dt_pdata( > > pd->manual_poweroff = of_property_read_bool(dev->of_node, > "samsung,s2mps11-acokb-ground"); > + pd->disable_wrstbi = of_property_read_bool(dev->of_node, > + "samsung,s2mps11-wrstbi-ground"); > return pd; > } > #else > @@ -434,6 +459,7 @@ static int sec_pmic_probe(struct i2c_client *i2c, > goto err_mfd; > > device_init_wakeup(sec_pmic->dev, sec_pmic->wakeup); > + sec_pmic_configure(sec_pmic); > sec_pmic_dump_rev(sec_pmic); > > return ret; > diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h > index aa78957e092f..a06098639399 100644 > --- a/include/linux/mfd/samsung/core.h > +++ b/include/linux/mfd/samsung/core.h > @@ -134,6 +134,8 @@ struct sec_platform_data { > int buck4_init; > /* Whether or not manually set PWRHOLD to low during shutdown. */ > bool manual_poweroff; > + /* Disable the WRSTBI (buck voltage warm reset) when probing? */ > + bool disable_wrstbi; > }; > > /** > diff --git a/include/linux/mfd/samsung/s2mps13.h b/include/linux/mfd/samsung/s2mps13.h > index b1fd675fa36f..239e977ba45d 100644 > --- a/include/linux/mfd/samsung/s2mps13.h > +++ b/include/linux/mfd/samsung/s2mps13.h > @@ -184,5 +184,6 @@ enum s2mps13_regulators { > * Let's assume that default value will be set. > */ > #define S2MPS13_BUCK_RAMP_DELAY 12500 > +#define S2MPS13_REG_WRSTBI_MASK BIT(5) > > #endif /* __LINUX_MFD_S2MPS13_H */